Verilog的按键消抖与松手检测如何做到,求给个思路

2020-02-23 10:38发布

1.按键消抖 我在网上查了一下,已经用了了一种采用较低的频率对按键进行采用来消除抖动,不知还有没有别的什么方法
2求教一种解决松手检测的方案思路
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
pianran
2020-02-23 14:26
module remove
(
    input rst_n,
    input clk,//64KHz
    input in,
    output reg out
);
    parameter CNT_WITDH = 8;
    parameter THRESHOLD = 192;

    reg [CNT_WITDH:0] cnt;
    reg state;
            
    always @( posedge clk or negedge rst_n )
        if ( !rst_n )
        begin
            state <= 1'b0;
            cnt <= 0;
        end
        else
            case(state)
            1'b0:begin
                      if(in==0)
                      begin
                          state <= 1'b1;
                          cnt <= 0;
                      end
                      else
                      begin
                          state <= 1'b0;
                          if(cnt<THRESHOLD)cnt <= cnt+1;
                      end
                 end
            1'b1:begin
                      if(in==0)
                      begin
                          state <= 1'b1;
                          if(cnt<THRESHOLD) cnt <= cnt+1;
                      end
                      else
                      begin
                          state <= 1'b0;
                          cnt <= 0;
                      end
                  end
            endcase           

   always @( posedge clk or negedge rst_n )
      if ( !rst_n )
         out <= 1;
      else if (cnt==THRESHOLD-1)
         out <= in;
endmodule

一周热门 更多>