流水灯设计

/*
代码中晶振的频率为50MHz,定义的间隔时间为0.5s
*/
module water_led (
    input           clk,
    input           rstn,
    output reg[3:0] led
);
    
    reg[27:0]   cnt; //用于计数
    reg[1:0]    led_on; //循环点亮流水灯

    parameter clk_all = 50000000; //总的晶振频率
    parameter clk_cnt = clk_all/2-1;//定义间隔时间为0.5s

    always @(posedge clk or negedge rstn) begin
        if (!rstn) begin
            cnt <= 28'd0;
            led_on <= 2'd0;
        end
        else begin
            cnt <= cnt + 1'b1; //开始计数
            if(cnt==clk_cnt) begin
                cnt<=28'd0;
                led_on <= led_on + 1'b1;
            end
        end
    end
    always @(led_on) begin //根据case语句,来达到循环点亮流水灯的效果
        case(led_on)
            0:led <= 4'b0001;
            1:led <= 4'b0010;
            2:led <= 4'b0100;
            3:led <= 4'b1000;
        endcase
    end
endmodule

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值