您当前的位置: 首页 > 

耐心的小黑

暂无认证

  • 1浏览

    0关注

    323博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

按键消抖的三种方案

耐心的小黑 发布时间:2020-09-24 11:32:57 ,浏览量:1

首先,做两个假定,以方便后面的描述:

  • 假定按键的默认状态为0,被按下后为1
  • 假定按键抖动时长小于20ms,也即使用20ms的消抖时间

方案1:在按键电平稳定的情况下,当第一次检测到键位电平变化,开始20ms计时,计时时间到后将按键电平更新为当前电平

方案2:在20ms计时的过程中,有任何的电平变化都立即复位计时

方案3:在有电平变化时立即改变按键输出电平,并开始20ms计时,忽略这其中抖动

1、方案1代码:

module debounce(
    input wire clk, nrst,
    input wire key_in,
    output reg key_out
    );

    // 20ms parameter
    // localparam TIME_20MS = 1_000_000;
    localparam TIME_20MS = 1_000; // just for test

    // variable
    reg [20:0] cnt;
    reg key_cnt;
    
    // debounce time passed, refresh key state
    always @(posedge clk or negedge nrst) begin
        if(nrst == 0)
            key_out             
关注
打赏
1640088279
查看更多评论
0.0769s