香菜跟葱都不要 2019-12-09 18:21 采纳率: 100%
浏览 1260
已结题

verilog用状态机实现循环彩灯控制器(含清零功能)

用状态机实现循环彩灯控制器(含清零功能)000→001→010→100→010→001→000→111→000→111→(循环)

  • 写回答

2条回答

  • zhaoyang_yt 2019-12-11 14:45
    关注

    module led
    (
    input clk,
    input rst_n,

    output led_000,
    output led_001,
    output led_010,
    output led_100,
    output led_111
    );

    parameter LED_000 = 5'b00001,
    LED_001 = 5'b00010,
    LED_010 = 5'b00100,
    LED_100 = 5'b01000,
    LED_111 = 5'b00010;

    reg [4:0] cnt;
    reg [4:0] cur_state;
    reg [4:0] nxt_state;

    always @(posedge clk or negedge rst_n)
    begin
    if(~rst_n)
    cur_state <= LED_000;
    else
    cur_state <= nxt_state;
    end

    always @(*)
    begin
    nxt_state = cur_state;
    case(cur_state)
    LED_000 : if(cnt==5'h1f)
    nxt_state = LED_001;
    LED_001 : if(cnt==5'h1f)
    nxt_state = LED_010;
    LED_010 : if(cnt==5'h1f)
    nxt_state = LED_100;
    LED_100 : if(cnt==5'h1f)
    nxt_state = LED_111;
    LED_111 : if(cnt==5'h1f)
    nxt_state = LED_000;
    endcase
    end

    always @(posedge clk or negedge rst_n)
    begin
    if(~rst_n)
    cnt <= 5'd0;
    else
    cnt <= cnt + 1'd1;
    end

    assign led_000=cur_state[0];
    assign led_001=cur_state[1];
    assign led_010=cur_state[2];
    assign led_100=cur_state[3];
    assign led_111=cur_state[4];

    endmodule

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 7月28日
  • 已采纳回答 7月28日

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作