按键是数字系统最基本的输入接口设备,本文主要介绍机械弹性按键的原理和编程方法。
0****1
按键原理
以ego1开放板按键为例,用户可用的板载按键主要包括s6(低有效按键),s0~s4(高有效按键)。
由原理图可以看到,按键s6在未按下时,fpga引脚通过电阻连接3.3v高电平;当按键按下,与地连通,引脚电平被拉低。s0~s4则相反,按键未按下时,引脚为低电平;按键按下时,接通3.3v电源,引脚电平由低变高。
因此,我们通过检测高低电平的变化,就可以检测按键是否被按下。
但是实际情况是,我们使用的是机械弹性按键,在按键按下和弹起过程中会存在抖动,如图(a)。
一般抖动会在5~10ms左右,按键持续时间在几百ms,而fpga时钟是ns级的,检测频率很高,如果仅仅通过高低电平的变化去判断按键是否被按下,则在一次按键按下时,就会被检测为多次有效按键,如图(b),从而造成误触发。
我们需要对按键信号进行消抖处理,得出图(c)的稳定的按键信号。
0****2
按键消抖方法
由于抖动大约5-10ms,可以使用一个15ms的计数器。
每当检测到输入有变化就复位计数器,然后进行15ms的延时,如果在15ms之内有抖动,计数器就会复位重新计数,直到能够连续计数15ms,说明按键键值在15ms内没有发生改变,按键进入稳定状态,此时,可以输出稳定的键值。
同样,当按键弹起时出现键值的改变,就复位计数器,只有当按键稳定,计数器能够连续计数15ms时,才输出稳定的键值。这样我们就得到一个稳定的没有抖动的采样键值。
03
按键消抖的verilog描述
遵循一个always描述一个信号的原则,下面分别对各个信号进行描述。
按键寄存器key_reg描述:
延时计数器delay_cnt描述:
键值key_value描述:
按键的标志信号key_p_flag和key_n_flag描述:
按键标志信号是一个指示按键有效的只持续1个时钟周期的标志信号,一般作为后级模块的控制信号。
当计数值为1并且键值为一是则为上升沿标志,当计数值为1,且键值为0,就输出下降沿标志信号。
仿真波形如下图。
服务市场规模300亿以上 我国无人机蓝海再扩容
Microchip推出15款全新8位PIC单片机
氢燃料电池的短板在哪
我国智慧医疗开始呈现爆发式增长,到2020年或将达到8万亿元以上
无人叉车的投入是否意味着高成本?
机械弹性按键的原理和编程方法介绍
小米6、三星S8最新消息:小米6和三星S8为何同时出现重启问题,原因是CPU!
arduino(1)--ESP8266配置
米尔MYC-YA15XC-T 核心板在LoRa智能网关的应用
汽车电动助力转向系统电控单元的研究
别克“吊打”宝马,相对与宝马3系来说,别克新君威魅力更大!
电子芯闻早报:三星处理器将支持全网通 国行华为Mate9今日发布
中国第一大比特币矿工的传奇故事,从破产到身价已近亿
紫光展锐新发布了“虎贲”与“春藤”两大产品线
虹科TYMTEK UD Box 5G上/下变频器解决方案
如何利用实验数据有效推估LED寿命?
LED江湖注定不平静,英美等国将掀起行业并购的高潮
8255并口扩展实验
快讯:欧普出资9000万入股江西欧亨智能
巨量转移设备实现50μm内芯片应用 海目星蓄力MLED攻势