1、如下声明:
a、按键状态:默认态低电平,按键按下为高电平
b、本文假设抖动时间恰好为20ms!
2、都知道按键按下存在抖动,且一般说要延时20ms,那么具体的,如何用软件在FPGA中实现呢?
答:
PART1:关键代码
/******************按键消抖**********************/
//时序电路,按键按下状态
always @ (posedge CLK_50M or negedge RST_N)
begin
if (!RST_N)
key_in <= 6'h0; //key_in 为按键变换前一时刻的状态
else
key_in <= KEY; //KEY对应按键输入,时刻反应按键状态变换
end
//按键是否按下,标志位判断,key_in 与KEY异或,判断按键状态是否变化
//包括每一次抖动变化以及最后一次变成稳定态的变化
assign press_state = key_in ^ KEY;
//组合电路,20ms判断
always @ (posedge CLK_50M or negedge RST_N)
begin
if (!RST_N)
clk_cnt <= 21'd0;