Fpga-流水灯代码详解

该模块实现了一个基于Verilog的LED流水灯控制器。它使用sys_clk50作为时钟输入,rst_n为复位信号。计数器cnt在复位后从0递增,当达到特定值(10000000b)时,led状态右移一位,形成流水灯效果。否则,led状态保持不变。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

module flowled(
input         sys_clk50,
input         rst_n,

output  reg[3:0] led


);

reg [23:0]cnt;


always @(posedge sys_clk50 or negedge rst_n)
begin
    if(!rst_n)
        cnt <=24'd0;
    else
        if(cnt<24'd10000000)
            cnt <= cnt + 1'b1;
        else 
            cnt <= 24'd0;
end


always @(posedge sys_clk50 or negedge rst_n)
begin
    if(!rst_n)
        led <=4'b0001;
    else
        if(cnt==24'd10000000)
            led <= {led[2:0],led[3]};       //led右移一位   花括号移位寄存器
        else
        led <= led;                      //led状态不变
end


endmodule


/*拼接运算符 { } ;赋值 <=; 数据的高低位 [ ];
大括号内的东西表示把所列数据拼接成一串新的数据
如果 led[10:1]=2'b 000 000 000 1
运算led<={led[9:1],led[10]}
结果是将led右数第10位数,拼接在led右数第一位数到第九位数的右边
即新的led[10:1]=2'b 000 000 001 0
*/

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值