按键的verilog问题

  • zhangdanni
  • LV0工程师
  • |      2013-04-30 14:58:00
  • 浏览量 845
  • 回复:4
module key(clk,key_in,key_out); input clk; inputkey_in;//按键输入 outputkey_out; regdout1,dout2,dout3; rega; reg i; //assign key_out=a; always@(posedge clk)//按键消抖 begin                dout1<=key_in;         dout2<=dout1;         dout3<=dout2;         a<=(dout1|dout2|dout3); end always@(posedge clk) begin                if(a==0) i=i+1;//按键按下,计一次数 end endmodule 怎么改,在每按一次键时,i只加1?
  • 0
  • 收藏
  • 举报
  • 分享
我来回复

登录后可评论,请 登录注册

所有回答 数量:4
gtrjolin1990 2013-05-03
先做一个计时10ms的计数器,消抖。
具体是:按键按下才计时,不按不计时。
再做一个单脉冲发生器。
其实就是两个D触发器,加个与门或者或门(看按键的电平而定),这个在网上找找就有啦,很简单的。就搜FPGA按键消抖电路。
0   回复
举报
发布
juhhui 2013-05-01
如果是按下低电平,检测按键下降沿,设置一个按键下降沿标志,标志有效时i加一
0   回复
举报
发布
11 2013-05-01
能不能具体一点,我是初学者,不怎么懂,,具体的代码怎么写?
0   回复
举报
发布
zhengxingli 2013-04-30
先用计数器,计时10ms,再用单脉冲发生器判断按键按下,这样就是按一下,只加1
0   回复
举报
发布
x
收藏成功!点击 我的收藏 查看收藏的全部帖子