• verilog 状态机键盘扫描


    module key (clk,rst,key_up,led);
    input clk,rst,key_up;
    output reg [3:0] led;
    parameter T10ms=31'd2_000_00;
    reg clk_state;
    reg [31:0] cnt;
    parameter state_init=2'b00,state_click=2'b01,state_check=2'b10;
    reg [1:0] current_state,next_state;
    reg [3:0] num_click,num_check,led_on;
    always @ (posedge clk or negedge rst)
    if(!rst)
     begin
      cnt<=0;
      clk_state<=0;
     end
          else if(cnt==T10ms)
           begin
            cnt<=0;
            clk_state<=~clk_state;
           end
               else
                cnt<=cnt+1'b1;
    always @ (posedge clk_state or negedge rst)
    if(!rst)
     current_state<=state_init;
            else 
             current_state<=next_state;
    always @ (posedge clk_state)
    begin
     case(current_state)
     state_init: if(key_up) next_state<=state_init;
         else begin next_state<=state_click; num_click<=0;end
     state_click: if(key_up) begin next_state<=state_init;num_click<=0; end
         else begin num_click<=num_click+1;
           if(num_click==10)
             if(key_up)
               begin
               num_click<=0;
               next_state<=state_init;
               end
               else begin next_state<=state_check; num_check<=0;end
               end 
     state_check: if(key_up) begin next_state<=state_init; num_check<=0;led_on<=0;end
                             else begin num_check<=num_check+1;
             if(num_check==10)
             begin
             if(key_up)
              begin
               next_state<=state_init;
               num_check<=0;
              end
              else
              begin
              next_state<=state_check;
              num_check<=0;
              led_on<=led_on+1;
              end
             end end
    endcase
    end
    always @ (current_state)
    begin
    led<=4'b1111;
    case (current_state)
    state_init: led<=4'b0101;
    state_click: led<=4'b0111;
    state_check: led<=led_on;
    endcase
    end
     
    endmodule

  • 相关阅读:
    System.Web.Http.Cors配置跨域访问的两种方式
    asp.net反向代理
    web.config SetAttributes
    remove name="ProxyModule“会导致重复执行
    去空格
    api签名
    C# HttpWebRequest获取COOKIES
    Request.Form接收不到post数据.
    webapi文档工具
    https://gogs.io/
  • 原文地址:https://www.cnblogs.com/luxiaolai/p/5255737.html
Copyright © 2020-2023  润新知