13.FPGA_Verilog 按键消抖之按下检测

描述: 按键抖动5ms之内,设10ms为抖动时间。cnt控制:key_in为高的时候cnt为0, key_in为高的时候cnt计数,cnt到10ms后保持,在10ms-1时flag拉高。flag信号即为按键消抖之后的信号。

时序图:
13.FPGA_Verilog 按键消抖之按下检测_第1张图片

module  key_disappears_shakes(

input       wire                sclk                ,
input       wire                rst_n               ,
input       wire                key                 ,

output      reg                 flag            

);


reg                 [18:0]      cnt                 ;


always@(posedge sclk or negedge rst_n)
if(!rst_n)
    cnt             <=          0                   ;
else if(key==1) 
    cnt             <=          0                   ;
else if(cnt>=499_999)
    cnt             <=      499_999                 ;
else if(key==0)
    cnt             <=      cnt+1'b1                ;

always@(posedge sclk or negedge rst_n)
if(!rst_n)
    flag            <=          0                   ;
else if(cnt==499_998)
    flag            <=          1                   ;
else    
    flag            <=          0                   ;

endmodule

你可能感兴趣的:(13.FPGA_Verilog 按键消抖之按下检测)