Advertisement

按键 debounce 电路实现

阅读量:

采用Verilog语言构建按键抖动消除电路,确保抖动时间低于15毫秒,输入时钟频率为12MHz

设计原理:
通过计数器对按键持续时间进行测量,当检测到按键保持时间超过15毫秒时,判定为有效信号;若持续时间短于该阈值,则判定为无效信号

12MHz时钟下,每个时钟周期为83纳秒,计算得出15毫秒对应的时钟周期数为180722,即十六进制表示为0x2C1F2

复制代码
    module rebounce(
    input clk,
    input rst_n,
    input key_in,
    output key_out
    );
    reg key_out;
    reg key_in_dly;
    reg [19:0] cnt;
    wire change;
    parameter jitter = 20'h2C1F2;
    // 检测key信号变化,使用原信号+dly
    always @(posedge clk or negedge rst_n)
    if(!rst_n) key_in_dly <= 0;
    else key_in_dly <= key_in;
    
    assign change = (key_in & !key_in_dly)|(!key_in & key_in_dly);

全部评论 (0)

还没有任何评论哟~