集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 14026|回复: 27

fpga防抖程序的原理是什么?脉冲?时钟周期?

[复制链接]
CHA 发表于 2010-6-26 01:45:43 | 显示全部楼层 |阅读模式
fpga防抖程序的原理是什么?脉冲?时钟周期?

我仿真了一个仿真程序,发现无论输入的脉冲宽度多宽(外界按键按的时间),输出的都是一个时钟周期的宽度.哪这个时钟周期一般应该是多少啊.另外如果我程序中需要另一个快一点的脉冲.系统中可以用两个时钟吗?
CCIE 发表于 2010-6-26 03:45:22 | 显示全部楼层
可以用两个时钟<br>
防抖就是用一个时钟对外界的输入信号多次采样,如果多次 采样的值都有效的话才输出有效的值
CHANG 发表于 2010-6-26 04:54:17 | 显示全部楼层
这是一个防斗程序,可以详细解释下吗,我看不懂<br>
library ieee;<br>
use ieee.std_logic_1164.all;<br>
<br>
entity dou is<br>
port(din,clk:in std_logic;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp;dout
       
ut std_logic);<br>
end dou;<br>
<br>
architecture beha of dou is<br>
signal x,y:std_logic;<br>
begin<br>
process(clk)<br>
begin<br>
&nbsp;&nbsp;if clk'event and clk='1' then<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;x&lt;=din;<br>
&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;y&lt;=x;<br>
end if;<br>
dout&lt;=x and (not y);<br>
end process;<br>
end beha;
UFP 发表于 2010-6-26 05:08:59 | 显示全部楼层
这实际上是一个滤波器,也有防抖的作用,通过两级的移位寄存器实现<br>
假设din输入的信号中间有跳变的时候<br>
则x和y的值会不一样,<br>
如果x=0,y = 1,则dout= 0,也就是把din上的高电平毛刺滤除了;<br>
如果x=1,y=0,则dout=1,也就是把din上的低电平毛刺滤出了。
UFO 发表于 2010-6-26 06:56:07 | 显示全部楼层
你们一般用什么防抖程序啊?
ANG 发表于 2010-6-26 07:54:46 | 显示全部楼层
根据防抖的要求不同,设计也不尽相同。但都是一个低通滤波电路,区别在截至频率上。
longtim 发表于 2010-6-26 08:31:58 | 显示全部楼层
我是想在cpld外有一个按键,用手按一次计一个数.类似电话机的上翻下翻键.按一次显示内部存储的一个数
interige 发表于 2010-6-26 09:17:51 | 显示全部楼层
从你的描述来看,好像不分长按和短按<br>
如果确实是这样,假设没有按键按下是,对应的电平为高,有按键按下是对应的电平为低,则需要检测上升沿<br>
防抖的作用就是检测到有效的上升沿而非伪上升沿<br>
这种情况下可以用一个低速的时钟采样这个信号(一般人手按键的反应在ms级,根据这个确定采样时钟频率)<br>
把采样后的信号可以作为你的计数器的输入信号
CHAN 发表于 2010-6-26 10:33:25 | 显示全部楼层
是啊.但是我还需要一个高速时钟us级的,那么就是两个时钟了,编译的时候老是说clock is complex
FFT 发表于 2010-6-26 11:54:34 | 显示全部楼层
两个时钟域之间的数据是怎么传递的,时钟源是什么?
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

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

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

GMT+8, 2025-5-6 17:25 , Processed in 0.069628 second(s), 23 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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