你指的的输出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,然后把问题对照着图像,你只是简单的说了几句话,看竖坦得人野裂很多,可是回答的人很少,因为不知道你说的是什么,所以不好回答你余脊桐的问题欢迎分享,转载请注明来源:内存溢出
评论列表(0条)