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如何定义?才能出现预期效果?
展开
 我来答
lishimin1972
推荐于2017-09-02 · TA获得超过741个赞
知道小有建树答主
回答量:391
采纳率:0%
帮助的人:449万
展开全部
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};
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式