使用Verilog写出一个简单的单击,双击,三击按键

        有些时候因为需要我们的开发板的按键会不够,但是我们又需要更多的按键来控制我们的程序运行来达到我们的目的,这个时候我们会考虑来给按键添加一个多击的功能,这样一个按键就可以当作更多的按键来使用。

        首先我们需要一个写出一个按键消抖,因为开发板上面的按键是物理按键,我们按下去的时候会有机械抖动,这个是不可避免的,如果我们不写按键消抖,那么你的一次按键按下,会有多次按键输出,上板的反应就是按键不灵敏,按了没效果

         我的按键消抖的思想就是给按键按下添加一个延时,我们等按键稳定之后就取它的值就好了,按键抖动的时间一般为5ms~10ms,那我们就可以等到20ms再取稳定的值。

         如下代码中,我们定义时间TIME20ms为20ms,输入时钟sysclk,输入复位信号rst_n,输入按键key,输出按键消抖后的信号key_flag。

        定义了一个计数器cnt,当按键按下,低电平有效,这个时候计数器开始计数,计数等于TIME20ms时保持这个状态,不让计数器清零,这个时候我们根据cnt的值来判断按键按下的状态,当cnt==TIME20ms,可以判断这个按键已经稳定了,可以输出我们key_flag有效的信号,这个时候key_flag就是我们消抖后的按键信号。

module key
#(
    parameter TI
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值