FPGA的按键消抖和按键复用
来源:互联网 发布:苹果系统设计软件 编辑:程序博客网 时间:2024/04/29 23:54
机械按键在按下和弹起时会出现短时间抖动,抖动时间一般持续为15ms。
在按键吃紧的设计中,往往会进行按键的复用。常用的方法是根据键按下时间的长与短进行判断。因此按键复用经常是利用按键消抖后的下降沿(如果键按下是高电位的话)。
假设按键为key_in。
一、按键消抖的步骤:
1.设定两个采样寄存器key_in_Sam(1 downto 0)对按键key_in进行监控采样
2.判断key_in_Sam的值是否一致,不一致意味着可能有键的动作,将事件寄存到in_event_latch(1 downto 0)的低位,之后向高位移位以阻塞后续15ms内的抖动,同时启动15ms延时计数器,15ms之后清除in_event_latch寄存器,为下一次消抖做准备
3.15ms延时完毕,对key_in进行采样保存到key_in_latch(1 downto 0)的低位,此值是消抖后的键值,而前一次采样的消抖键值向高位移位
4.设定两个采样寄存器in_latch_Sam(1 downto 0),in_latch_Sam低位寄存刚消抖后的键值key_in_latch(0),之后向高位移动,根据in_latch_Sam的组合就可以判断出按键是上升沿还是下降沿
5.如果是按键上升沿,则启动0.3S延时计数器(根据实际情况设定)
6.按键释放后,电路重复执行1-4步骤
7.0.3S延时计数器到达0.15S时,短按指示short_press_latch置1,到达0.3S时,长按指示long_press_latch置1
8.如果是按键下降沿,则根据short_press_latch和long_press_latch的值,输出应该是短按还是长按,同时将short_press_latch和long_press_latch清除
9.在延迟按键下降沿将短按或长按清除,这样信号只有一个时钟周期有效
二、时序仿真
- FPGA的按键消抖和按键复用
- 关于FPGA的按键消抖问题
- FPGA按键消抖代码
- FPGA按键消抖模块
- FPGA 独立按键消抖
- FPGA Verilog按键消抖
- FPGA 按键去抖
- 一、SCM 按键消抖 vs FPGA 按键消抖
- 2014-3-12 FPGA学习-按键消抖
- FPGA 按键控制数码管
- FPGA按键检测
- 按键消抖的方法
- 按键原理和软硬件按键消抖动
- 串口输出和按键消抖
- 按键和LED复用扫描程序
- 5.按键消抖
- 按键消抖
- 按键消抖
- 使用 Antlr 开发领域语言
- android之Notification通知
- 一次推销活动经历及其它
- struts2提供的校验器列表
- 保护模式下,什么是一致性代码和非一致性代码段
- FPGA的按键消抖和按键复用
- 程序只能运行一个实例方法
- Hibernate插入和修改数据到数据库中时不修改存在默认值字段
- Integer 包装类型
- ORA-01654: unable to extend index 表空间不够报错
- 怎么了
- 求给定数组子数组中最接近0的和
- Tomcat6.0 连接池配置
- 转载_消息机制