集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 3853|回复: 8

FPGA如何实现按键消抖

[复制链接]
meng454619501 发表于 2010-6-2 09:44:43 | 显示全部楼层 |阅读模式
本帖最后由 fpgaw 于 2010-12-31 14:33 编辑

大家好,我学FPGA没有几天,我现在想搞一个按键的VHDL程序,但是不知道怎么去实现消抖,希望高手赐教,先谢过了

相关帖子

CPLD 发表于 2010-6-2 10:09:02 | 显示全部楼层
FPGA开发中按键消抖与单脉冲发生
http://www.fpgaw.com/viewthread. ... hlight=%CF%FB%B6%B6
CPLD 发表于 2010-6-2 10:09:28 | 显示全部楼层
VHDL设计的消抖与滤波
在同一块电路板上,由于信号线的走线过长而产生的高频毛刺我们可以通过在接近输入端串联一个100欧左右的电阻来滤除。但是对于板外信号,或者板内其他干扰造成较大的抖动时只好采用积分电路来滤波,即串一个电阻还要并一个电容接地。

     同样在VHDL中我们可以采用类似的办法,对于小于触发器建立时间的毛刺可以用时钟打一下实现滤波。但对于开关或按键抖动等较大的干扰,我们可以采用延时比较法或积分法,或者二者并用。

    比较法:这个方法很好理解,就是若干个时钟周期读取的数据相同时我们认为收到了一个稳定的数据,否则认为是过渡态。即采用若干位的移位寄存器,当寄存器是全'1'或全'0'时才开始读数。这种方法的缺点是,当干扰脉冲较宽时我们必须等比地扩大移位寄存器的比特,消耗较大资源。

    积分法:用一个增减计数器,当输入信号为'1'时计数器递增计数直到计数器全'1'停止计数、否则计数器递减计数直到全'0'停止计数。那么计数器的 MSB即为
输入信号的去抖信号。你也可以用时钟再加上一个速度较慢的使能来对输入信号计数。显然计数器的位数要求与要去抖的抖动脉冲宽度的对数关系。当然也可以二者结合,前端用几个比特的移位寄存器实现比较,比较结果作为计数使能来控制接下来的增减计数器的计数。
 楼主| meng454619501 发表于 2010-6-7 15:10:24 | 显示全部楼层
多谢了,哈哈。。。
 楼主| meng454619501 发表于 2010-6-8 14:48:09 | 显示全部楼层
回复 3# CPLD


    可不可以给我一个流程呀,就是怎么去消抖
linst2008 发表于 2010-11-3 16:59:50 | 显示全部楼层
高手呀。。。。。。
haiyangzhixing4 发表于 2010-11-29 20:31:41 | 显示全部楼层
仰视阁下………………
寝室长 发表于 2010-12-31 13:25:10 | 显示全部楼层
采用延时消除抖动!
mikechang 发表于 2011-1-2 19:34:28 | 显示全部楼层
楼主真厉害。楼主的经验真让人受益匪浅,感谢楼主与大家分享这么宝贵的信息。我觉得eepeople网站上有好多适合楼主和大家的职位 ,比如销售工程师、地区市场经理、市场部高级产品经理等等,来自世界知名电子企业,有空大家可以去看看。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-12-28 09:14 , Processed in 0.113943 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表