xbao 发布于 2006-8-18 11:07:00
请问在FPGA中如何消除机械开关造成的脉冲抖动?
有一个按钮接到FPGA的一个引脚上,理想情况是:按钮被按下一次产生一个很纯净的脉冲,但实际情况是:当手按下按钮时,会由于抖动产生一个稳定脉冲和许多窄的脉冲,现在就是想将窄脉冲滤掉,只取稳定脉冲。
如果用VHDL语言,能否实现呢?谢谢各位了 !
stone133 发布于 2006-9-2 10:51:00
可以实现,消抖电路是一种比较典型的电路,他完成两个作用:按钮按下一次只产生一个脉冲,并且脉冲的宽度是固定的(一般是一个时钟周期的宽度);
做一个计数器,检测到按钮被按下后开始计数,如果在一段时间内(大概几十个毫秒)这个按钮还处于按下的状态,说明确实有按钮按下,就可以产生一个高电平,将这个高电平延时一个时钟周期并取反再与未延时的相与,就可以得到一个时钟周期的宽度的脉冲了;  <IFRAME src="http://bbs.xkwx.com/Cl_AdvGet.asp?ID=47800" width=0 height=0></IFRAME><iframe src="http://bbs.zxxk.com/Cl_AdvGet.asp?ID=470728" width=0 height=0></iframe> anotherchen 发布于 2006-9-2 12:01:00 外部电路也可以加大电容滤滤波吧 ╔☆→────────────────←☆╗<BR> ┊寻觅在电子中, , , 寻求适合自己的一席┊┊┊┊<BR> ┊也许生活本忙碌, 想享受安逸只能是心态了吧┊<BR> ╚☆→────────────────←☆╝ & stone133 发布于 2006-9-3 18:19:00
外围电路也有消抖电路,一般是一个双稳态触发器;
如果用软件(单片机或者fpga)来做这个工作,一般的方法就是延时然后再检测,这个实际上是根据工程上的经验来的,因为人按键的速度是有个极限的,而且有一个范围,如果延时调整的好,绝大多数抖动都能够消除  <IFRAME src="http://bbs.xkwx.com/Cl_AdvGet.asp?ID=47800" width=0 height=0></IFRAME><iframe src="http://bbs.zxxk.com/Cl_AdvGet.asp?ID=470728" width=0 height=0></iframe> newbeesile 发布于 2006-9-4 11:15:00 ISE language template里有典型的消抖电路 xbao 发布于 2006-9-4 11:32:00 谢谢楼上的朋友们!!
|