verilog 控制四种流水灯 fpga
moduleledwater(clk,led,s)inputclk;input[1:0]s;output[7:0]led;always@(posedgeclk)begin...
module ledwater(clk,led,s)
input clk;
input[1:0]s;
output[7:0]led;
always@(posedge clk)
begin
if(led!=)
led<=led<<i; //这里改成i。
if(led_r == 8'd0)
led_r <= 8'b11111111;
end
always@(s)
begin
case(s)
2'b00:i=1;
2'b01:i=2;
2'b10:i=3;
2'b11:i=4;
endcase
end
endmodule
请问这里面的i如何定义?才能出现预期效果? 展开
input clk;
input[1:0]s;
output[7:0]led;
always@(posedge clk)
begin
if(led!=)
led<=led<<i; //这里改成i。
if(led_r == 8'd0)
led_r <= 8'b11111111;
end
always@(s)
begin
case(s)
2'b00:i=1;
2'b01:i=2;
2'b10:i=3;
2'b11:i=4;
endcase
end
endmodule
请问这里面的i如何定义?才能出现预期效果? 展开
1个回答
展开全部
module ledwater(clk,led,s)
input clk;
input[1:0]s;
output[7:0]led;
reg [7:0] led=0;
reg [1:0] olds=0;
always@(posedge clk) olds<=s;
always@(posedge clk)
if (olds^s)
case (s)
2'b00: led<=1; //*a
2'b01: led<=1;
2'b10: led<=8'b1010_1010;
2'b11: led<=8'b0000_0111;
endcase
else
case (s)
2'b00: led<={led[6:0],led[7]};//*b
2'b01: led<={led[0], led[7:1]};
2'b10: led<=~led;
2'b11: led<={led[6:0],led[7]};
endcase
endmodule
//第一种:一个灯亮,从右往左逐个移动,并循环
//第二种:一个灯亮,从左往右逐个移动,并循环
//第三种:一个间一个灯亮,并交替循环
//第四种:三个灯亮,从右往左逐个移动,并循环
//当然可以再多一些花样:
//如:灯从右往左逐步点亮
// *a改为: led<=1;
// *b改为: led<= (&led)? 1: {led[6:0],1'b1};
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询