"); //-->
测试按键功能,主要是去抖动问题。
软件一般按键抖动通过延时10~20ms判断,硬件一般用RS触发器电路。
实际应用中,按键功能比较复杂,比如长按、短按、多键等。
这里简化处理,测试去抖时间为100ms,因此如果在100ms内按下又弹起,就认为按键无效;按下超过100ms,就有效。最终应用可以修改成20ms。
同时按下多键也能识别。
视频:
http://v.qq.com/boke/page/i/2/c/i0105jszk2c.html
output[7:0] led; //led输出
reg[7:0] led;
reg key_down;
reg[7:0] key_reg;
reg[22:0] key_cnt;
always @(posedge clk or negedge rst)
begin
if(!rst)
begin
key_down <= 1'b1;
key_reg <= 8'hff;
key_cnt <= 23'd0;
end
else if(key != key_reg)
begin
key_reg <= key;
key_cnt <= 23'd0;
end
else
begin
if(key_cnt == 23'd5000000) //5000000*0.02us=100ms
key_down <= key_reg == 8'hff;
else
key_cnt <= key_cnt + 1'b1;
end
end
always @(negedge key_down)
begin
if(led == key_reg)
led <= 8'hff;
else
led <= key_reg;
end
endmodule
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。