EDA弹跳消除电路

上传人:豆浆 文档编号:19519687 上传时间:2017-11-19 格式:DOC 页数:4 大小:282.50KB
返回 下载 相关 举报
EDA弹跳消除电路_第1页
第1页 / 共4页
EDA弹跳消除电路_第2页
第2页 / 共4页
EDA弹跳消除电路_第3页
第3页 / 共4页
EDA弹跳消除电路_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《EDA弹跳消除电路》由会员分享,可在线阅读,更多相关《EDA弹跳消除电路(4页珍藏版)》请在金锄头文库上搜索。

1、关键字: 按键抖动 计数器模值 LCD 模块化设计按键在数字电路设计中经常用到。按键的弹跳现象是数字系统设计中存在的客观问题。按键是机械触点,当接触点断开或闭合时会产生抖动。为使每一次按键只做一次响应,就必须去除抖动。本文对按键的抖动信号进行了分析,并通过计数器的方式完成了消除抖动电路模块的设计。把该模块应用到按键控制 LCD 显示的系统中,并在 Memec 代理的Virtex-4 MB 系统实验板上实现了该系统。消抖电路的效果良好,按键控制 LCD 显示结果正常。按键开关是电子设备人机交互的主要器件之一。按键大多是机械式开关结构,由于机械式开关的核心部件为弹性金属簧片,因而在开关切换的瞬间会

2、在接触点出现来回弹跳的现象。对于灵敏度比较高的电路,这种弹跳现象引起的信号抖动会造成误动作而影响到系统的正确性。因此,我们需要设计按键弹跳消除电路来去除抖动.。1弹跳消除电路的原理和功能按键开关的典型连线分为低电平有效和高电平有效,本文的是低电平有效。机械开关的抖动存在三种情况:按下时有抖动,松开时也有抖动;按下时有抖动,松开时无抖动;按下时无抖动,松开时有抖动。机械开关的抖动波形、抖动次数、抖动时间都是随机的,并不是每次都会产生抖动。不同开关的最长抖动时间也不同。抖动时间的长短和机械开关特性有关,一般为 5ms 到 10ms。但是,某些开关的抖动时间长达 20ms,甚至更长。所以,在具体设计

3、中要具体分析,根据实际情况来调整设计。弹跳现象以及弹跳消除如图 1 所示,虽然只是按下按键一次后放掉,结果在按键信号稳定先后竟出现了多个段脉冲,如果将这样的信号直接送到计数器之类的时序电路,结果将可能发生计数超过一次以上的误动作,从而误以为键盘按了多次。因此,必须加上弹跳消除电路,除去短脉冲,避免误操作的发生。2按键弹跳消除模块的实现为了使按键弹跳消除模块的更加简洁,并且移植性好,在此用计数器的方式实现消除按键抖动的功能。2.1 计数器模值 的计算计数器模值的确定是按键弹跳消除效果的关键问题,如果值过大,即采样时间过长,就会漏掉正确的信号;如果值过小,采样时间过短,则会将毛刺误认为是输入信号。

4、计数器的模值 n 根据抖动信号的脉冲宽度和采样信号 clk 的周期大小决定。根据一般人按键的速度小于 10Hz(每秒小于10 次 ),所以按键时间大于 100ms,按占空比 50%计算,按下的时间大于 50ms。按这种约定,我们认为按下的时间小于 50ms 的为抖动信号,按下的时间大于 50ms 的是按键信号。即 n=50ms/采样脉冲信号周期,这样就可以把按下的时间小于 50ms 的抖动信号滤掉。在此,根据实验板提供的系统时钟来确定实际需要的模值。实验板提供的系统时钟为 100mHz,通过分频后得到 25mHz 的时钟,50ms*25mHz 得到 count 的模值为 21h1312D0。采

5、用这个模值得到的消抖时间大约为 50ms,符合要求。2.2 程序设计设计一个高脉冲计数器 count1 和一个低脉冲计数器 conut0。引入一个采样脉冲信号 clk,对输入信号 button_in 进行采样,并对 clk 进行计数。若 button_in 为高电平,count1 做加法计数,直到 count1 各位全为 1,停止计数,归零,使消抖后的输出信号 button_out 输出 1。若 button_in 为低电平,count0 做加法计数,直到 count0 各位全为 1,停止计数归零,并使消抖后的输出信号 button_out 输出 0。部分程序如下:module filter(

6、clk,reset,button_in,button_out);input clk;input reset;input button_in;output button_out;wire buttong_out1;reg 20:0 count0;reg 20:0 count1;reg button_out1_reg;assign button_out=button_out1_reg;/对输入进行采样,计数always(posedge clk or negedge reset)beginif(!reset) count1=21h000000;else if(button_out1=1b1) cou

7、nt1=count1+1;/对高电平计数else count1=21h000000;endalways(posedge clk or negedge reset)beginif(!reset) count0=21h000000;else if(button_out1=1b0) count0=count0+1;/对低电平计数else count0=21h000000;end/输出always(posedge clk or negedge resetbeginif(!reset) button_out1_reg=1b1;else if(count0=21h1312D0) /判断低电平信号是否符合输

8、出条件button_out1_reg=1b0; /如果符合条件,则输出低电平else if(count1=21h1312D0) /判断低电平信号是否符合输出条件button_out1_reg=1b1; /如果符合条件,则输出高电平else button_out1_reg=button_out1_reg;endendmodule3 按键弹跳消除模块的实际应用利用 Memec virtex-4 开发板,通过开发板上的按钮输入 8 位的 01 控制代码,用开发板上的开关输入状态控制位,从而控制板上的 1602 C 型字符型液晶模块的显示模式和内容。LCD 控制信号生成模块:根据按钮输入,产生控制显示

9、模块的 8 位控制信号。对按钮送入该模块的 1 位(0/1)信号进行保存并进行转换,使每 8 次输入形成一个 8 位的信号。如果输入不满 8 位或需重新输入,则取消上次结果;如果确定输入结果正确,则将 8 位信号保存并输出。LCD 显示控制模块:完成 1602 C 型字符型液晶模块的初始化,并根据控制信号完成状态转换。总系统设计如图 4:结束语本文进行性模块化设计,实现了弹跳消除电路模块、LCD 控制信号生成模块和 LCD 显示控制模块组成的系统的具体功能,在 Memec 实验板上运行效果良好。并且在用 FPGA 进行电路调试的时候,可以将该系统嵌入其它电路中,增加需要的测试点和观察点,通过按钮控制显示,可以动态的对电路进行测试,找出问题,使调试更加直观,从而提高的 FPGA 的内部信号的可观察性,提高验证效率。作者:李婷,同济大学微电子中心, Email:参考文献

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号