FPGA设计——按键去抖

本文介绍了在FPGA设计中如何处理按键抖动问题,通过软件消抖的方法,利用延时来确保系统的稳定性。设计包含两个用户按键BTN0和BTN1,按键BTN1控制LED灯状态。时序设计中,通过检测按键状态并启动计数器进行10ms延时,判断按键的闭合和断开,从而设置按键按下和弹起标志。程序分析中,详细说明了计数器、状态机以及标志位的工作原理,确保在按键闭合到断开过程中实现LED灯的反转。
摘要由CSDN通过智能技术生成

按键的去抖,是指按键在闭合或者松开的瞬间伴随一连串的抖动,这样的抖动将直接影响设计系统的稳定性,降低相应的灵敏度。因此,必须对抖动进行处理,及消除抖动的影响。在实际工程中有很多消抖的方案,如RS触发器消抖,电容充放电消抖,软件消抖。本章利用FPGA内部来设计消抖,即采用软件消抖。

按键的机械特性,决定着按键的抖动时间,一般抖动时间在5ms~10ms。消抖,也意味着,每次在按键闭合或者松开期间,跳过这段抖动时间,在检测按键的状态。只要通过简单的延时就可以实现按键的消抖。

1.1硬件介绍

本设计有两个用户按键分别为BTN0和BTN1。BTN0用来复位,BTN1用来控制四个用户led。BTN1每按一次,对应的LED灯反转一次。即检测按键是否有闭合和断开的过程,如果有,第一次则LED灯点亮,第二次,则LED灯熄灭。

1.2 时序设计

由于按键固有的特性,在每次闭合和断开时,经过抖动-稳定-抖动-稳定的过程。因此,检测按键是否有按下的过程,则需要进行两次消抖处理。通过检测按键输入的值,当检测到BTN1为低电平时,启动计数器,做10ms延时,在检测一次,若BTN1依然为低,则说明,BTN1被按下,设置按键按下标志(low_flag)。在检测BTN1,若BTN1为高,做10ms延迟,第二次检测,若依然为高电平,则说明BTN1已断开,设置BTN1断开标志(high_flag)。通过这两个标志位,可以判断,BTN1已经完成了一次闭合到断开的过程,则led反转一次。

采用状态机实现上面的流程是非常的方便的。通过状态机的切换,按键每次由闭合到断开的过程中,分别产生low_flag和high_flag,当这两个标志同时为高时,led灯反转一次。

`timescale 1ns / 1ps
//
// Company: 
// Engineer: 
// 
// Create Date:
  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值