基于VHDL语言的按键消抖电路设计及仿真

出处:chunyang 发布于:2009-12-30 10:11:46

  按键开关电子设备实现人机对话的重要器件之一。由于大部分按键是机械触点,在触点闭合和断开时都会产生抖动。为避免抖动引起误动作造成系统的不稳定,就要求消除按键的抖动,确保按键每按只做响应。随着可编程逻辑器件的综合性能的不断提高,它已经象单片机一样。广泛应用在各种数字逻辑领域。用可编程逻辑器件直接获取键盘信息也得到广泛的应用。这里提出用VHDL语言编程的有限状态机的设计方法来实现按键的消抖,经仿真分析和实现,这种方法设计的消抖电路能够很好地实现电路功能,进行快速按键时都能保证每按做的响应,且性能稳定。

  1 按键抖动产生原因分析

  绝大多数按键都是机械式开关结构,由于机械式开关的部件为弹性金属簧片,因而在开关切换的瞬间会在接触点出现来回弹跳的现象。虽然只是进行了按键,结果在按键信号稳定的前后出现了多个脉冲,如图1所示。如果将这样的信号直接送给微处理器扫描采集的话,将可能把按键稳定前后出现的脉冲信号当作按键信号,这就出现人为的按键但微处理器以为多次按键现象。为了确保按键识别的准确性,在按键信号抖动的情况下不能进入状态输入,为此就必须对按键进行消抖处理,消除抖动时不稳定、随机的电压信号。机械式按键的抖动次数、抖动时间、抖动波形都是随机的。不同类型的按键其长抖动时间也有差别,抖动时间的长短和按键的机械特性有关,一般为5~10 ms,但是,有些按键的抖动时间可达到20 ms,甚至更长。所以,在具体设计中要具体分析,根据实际情况来调整设计。

  2 按键消抖电路的设计

  按键消抖一般采用硬件和软件消抖两种方法。硬件消抖是利用电路滤波的原理实现,软件消抖是通过按键延时来实现。在微机系统中一般都采用软件延时的消抖方法。在用可编程逻辑器件FPGA/CPLD设计数字系统中,也可以用VHDL语言设计相应的时序和逻辑电路,对按键信号进行处理,同样可以达到消抖目的。本文利用Altera公司的可编程逻辑器件CPLD和QuartusⅡ,设计性能可靠的按键消抖电路。

  2.1 按键消抖电路设计原理

  按键消抖的关键是提取稳定的低电平(或高电平)状态,滤除按键稳定前后的抖动脉冲。在用基于VHDL语言的时序逻辑电路设计按键消抖电路时,可以用一个时钟脉冲信号对按键状态进行取样,当次采样到低电平时,启动延时电路,延时结束后,再对按键信号进行连续三次取样,如果三次取样都为低电平,则可以认为按键已经处在稳定状态,这时输出一个低电平的按键确认信号,如果连续三次的取样中,至少有是高电平,则认为按键仍处在抖动状态,此时不进行按键确认,按键输出信号为高电平。

  2.2 按键消抖电路设计

  该控制电路采用VHDL语言的有限状态机的设计方法来描述和实现,其状态转换图如图2所示。

  电路的复位信号Reset有效时,电路进入复位状态S0,在S0状态下时钟信号CLK以一定的频率采样按键输入信号Key_in,如果采样到Key_in=‘1’则停留在S0状态,并继续采样按键输入信号的状态,一旦采样到输入信号是低电平,即Key_in=‘0’,则转入S1延时状态,进行消抖延时,当延时结束时Delay_end=‘1’,则转入在S2状态,在此状态下时钟信号CLK以一定频率采样按键输入Key_in的状态,如果采样到Key_in为高电平即Key_in=‘1’则转回状态S0,表示按键仍处在抖动状态,如果采样到Key_in=‘O’,则转入状态S3;状态S3,S4的转换过程和条件跟S2相同,在S4状态下,如果Key_in=‘0’则转入S5状态,当到达状态S5时.表示经过S2,S3,S4三个连续状态检测按键输入Key_in的状态都为‘0’,则认为按键处在稳定状态,并在S5输出按键确认信号Key_confirm=‘1’。同时在状态S5下时钟信号CLK检测按键输入状态,当检测到按键输入Key_in=‘0’,表示按键仍未释放,则停留在S5继续检测按键输入信号状态,如果检测到Key_in=‘1’,表示按键已经释放,则转回状态S0,等待下按键操作。

  3 按键消抖电路的仿真分析

  消抖电路的仿真图如图3所示。当复位信号Reset=‘0’时,状态机Key处在S0状态,同时以CLK的时钟频率采样按键输入信号Din的状态,当CLK次采样到Din为低电平时,此时可能发生了按键操作,随即状态机Key进入S1消抖延时状态,当延时结束时delay_end=‘1’(延时结束信号),跟接着状态机KEY的S2,S3,S4连续三个状态对按键输入信号Din进行采样,当三个状态下采样到Din信号都是低电平,则转入S5状态,并产生按键确认信号Key_confirm=‘1’,同时在S5状态下等待按键释放,在此状态下当CLK时钟信号检测到Din为高电平时转回状态S0。因按键释放瞬间也会发生抖动,所以由波形图可以看出,当按键释放瞬间由状态S5转回状态S0,在S0状态下,因按键抖动CLK时钟又检测到Din为低电平,随即转入S1进行消抖延时,经过S1的消抖延时后,按键已经稳定,Din为稳定的高电平,所以在状态S2检测到Din为高电平,则转入S0状态,到此时完成按键的操作,等待下按键操作,如果没有按键操作,即按键没按下,则一直保持在状态S0。

  4 结 语

  采用有限状态机方法设计按键消抖电路,再根据按键的特性设定合适的延时时间(一般10 ms)后,通过仿真分析及实验验证,能够起到很好的消抖效果,而且性能稳定,能确保每按键操作,产生按键确认,可广泛应用于可编程逻辑器件的键盘扫描设计中。


  

参考文献:

[1]. CPLD datasheet https://www.dzsc.com/datasheet/CPLD_1136600.html.


关键词:基于VHDL语言的按键消抖电路设计及仿真VHDL语言

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

广告
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:
技术客服:

0571-85317607

网站技术支持

13606545031

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!