按键消抖原理及VHDL代码实现

本文详细介绍了按键抖动的原理及其在FPGA中的消除方法,使用VHDL代码实现了一个按键消抖滤波器,通过状态机和计数器确保按键信号在20ms内稳定。实验要求是根据按键输入更新LED显示,通过仿真验证了设计的正确性。
摘要由CSDN通过智能技术生成

按键消抖原理及VHDL代码实现

(已通过板级验证)

按键抖动原理

按键抖动原理
如上图所示,当我们按下FPGA上的button键之后,我们理想的状态如黑线所示,但是实际的情况是如红线所示,会有几次的来回抖动,然后才会变得稳定。这个问题就会导致FPGA检测到数次1,这样可能就会运行数次操作,从而得到错误的结果。

按键消抖原理

按键消抖原理
因为按下FPGA的按键时,弹簧片最低震动频率不会低于50 HZ,所以,两次下降沿出现的时间差不会超过20ms, 也就是说,当我们检测到一次下降沿/上升沿之后,再在20ms内检测是否有下降沿/上升沿产生,如果有,则重新检测,如果没有,则说明按键稳定。(一般而言,按钮被释放比按钮被按下去的反弹要少很多)

实验要求

通过实验开发板按键输入key0和key1,当按下key0的时候,+1,当按下key1时,-1。按键结果显示在四个led灯中。
key_state为当前按键状态:按下为0,释放为1;
key_flag为一个单脉冲信号,当key_state翻转时产生,也就是按键输入稳定20ms的时候。
schematic

按键消抖key_filter的VHDL代码实现

  • 10
    点赞
  • 90
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值