如何解决fpga电路设计中的毛刺问题

如何解决fpga电路设计中的毛刺问题,第1张

FPGA内部由于有timing constraint。只要满足setup/hold的timing,就不会存在毛刺问题。

你指的的输出pin的毛刺吧。或液

register输出,把亮正输出经过register同步到时钟之后就能避免组合逻辑直接衫键物输出所产生的毛刺

我们可以通过改变设计,破坏毛刺产生的条件,来减少毛刺的发生。例如,在数字电路设计中,常常采用格雷码计数器取代普通的二进制计数器,这是因为格雷码计数器的输

出每次只有一位跳变,消除了竞争冒险的发生条件,避免了虚丛洞毛刺的产生。

毛刺并不是对所有的输入都有危害,例如 D 触发器的 D 输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害,我们可以说 D 触发

器的 D 输入端对毛刺不敏感。 根据这个特性,我们应当系统中尽可能采用同步电路,这是因为同步电路信号的变化都发生在时钟沿,只要毛刺不出现在时钟的沿口并且不满足数据的建立和保持时间,就不会对系统造成危害。 (由于毛刺很短,多为几纳秒,基本上都不可能满足数据的建立和保持时间)

去除毛刺的一种常见的方法是利用 D 触发器的 D 输入端对毛刺信号不敏感的特点,在输出信号的保持时间内,用触发器读取组合逻辑的输出信号,这种方法类似于将异步电路转化为同步电路。如前所述,优秀的设计方案,如采差枯用格雷码计数器,同步电路等,可以大大减少毛刺,但它并不能完全消除毛刺。 毛刺并不是对所有输入都有危害,例如 D触发器的 D输入端,只要毛刺不出现在时钟的上升沿并且满足数据的建立和保持时间,就不会对系统造成危害。

因此我们可以说 D触发器的 D输入端对毛刺不敏感。但对于 D触发器的时钟端,置位端,清零端,则都是对毛刺敏感的输入端,任何一点毛刺就会使系统出错,但只要认真处理,我

们可以把危害降到最低直至消除。

不管是用verilog还是VHDL语郑厅言,去毛刺都是很简单的几句程序,例如:在同步电路设计中,有时候可以用同步置位的办法来替代异步清 0。在用硬件描述语言

的设计中可以用如下的方式来描述:

异步清 0 的描述方法:

process(rst,clk)

begin

if rst=’1’ then

count<=(others=>’0’)

elsif clk’event and clk=’1’ then

count<=count+1

end if

end process

同步清 0 的描述方法:

process

begin

wait until clk’event and clk=’1’

if rst=’1’ then

count<=(others=>’0’)

else

count<=count+1

end if

end process

你表达的不够清楚,你需要详细的说一下,就是具体的问题,你需要把出现的问题,如波形中哪一种东西需要滤除掉,你需要放一个波形在上main,然后把问题对照着图像,你只是简单的说了几句话,看竖坦得人野裂很多,可是回答的人很少,因为不知道你说的是什么,所以不好回答你余脊桐的问题


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12347572.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存