实验原理
独立按键电路图如图1所示。作为机械开关的键盘,在按键操作时,机械触点的弹性及电压突跳等原因,在触点闭合或开启的瞬间会出现电压抖动的现象,如图2所示。在实际应用中如果不进行处理将会造成误触发。
图1 独立按键电路
图2 按键电平抖动示意图
按键去抖动关键在与提取稳定的低电平状态,滤除前沿、后沿抖动毛刺。对于一个按键信号,可以用一个脉冲对它进行取样,如果连续三次取样为低电平,可以认为信号已经处于键稳定状态。这时输出一个低电平按键信号。继续取样的过程中如果不能满足连续三次取样为低,则认为键稳定状态结束,这时输出变为高电平。一通的消抖电路原理图如图3所示。
图3 按键消抖硬件原理图
Verilog代码
/*
功能: 外部按键消除抖动模块
输入参数:扫描采样scan_clk,按键输入key_in
输出参数:按键消除抖动输出
内部参数:按键输入 KEY_WIDTH 可定义按键的多少
备注:
*/
module debounce(scan_clk,key_in,key_out); //按键消抖动模块
input scan_clk; //采样时钟
input[KEY_WIDTH-1:0] key_in; //按键输入
output[KEY_WIDTH-1:0] key_out; //按键消抖出
reg[KEY_WIDTH-1:0] dout1,dout2,dout3;
parameter KEY_WIDTH = 8;
assign key_out = (dout1 | dout2 | dout3); //按键消除抖动输出
always @(posedge scan_clk)
begin
dout1 <= key_in;
dout2 <= dout1;
dout3 <= dout2;
end
endmodule
应用指南
消抖电路的采样时钟是关键,采样时钟的选取直接关系到是否能够有效的去除干扰毛刺,在实际应用中,因为按键触发时间一般为几百毫秒,干扰毛刺脉宽一般为几百微秒到几毫秒。所以采样时钟的周期一般为几毫秒。
参考资料
[1] 周立功,SmartEDA多功能教学实验开发平台EDA实验教程(一),2006.10
文章评论(0条评论)
登录后参与讨论