您的位置:首页 > 其它

FPGA基础知识13(二级D触发器应用于同步器,减少亚稳态)

2016-07-09 14:25 441 查看
需求说明:IC设计基础


内容       :第一部分 关于两级D触发器减小亚稳态的原因

                  第二部分 关于亚稳态的讨论

来自       :时间的诗

原文:http://blog.csdn.net/verylogic/article/details/21407191


第一部分 关于同步器为什么需要二级D触发器的疑问

上周,在做VGA接口显示实验时,框图中的同步器引起了我的注意。从理论上说,一级同步器已经能够实现同步,为什么还要使用两级同步器呢?

首先,我想说理论与实际是有差距的,理论上在数字电路上的触发器都是稳态的,要么为0,要么为1,因此理论上说一级同步就够了,可实际上,除了高电平和低电平,同步器在建立时间或保持时间得不到满足的情况下,会进入亚稳态。亚稳态通过不同的延时传到组合逻辑中,可能为低电平,可能为高电平。

在此,补充说明建立时间和保持时间,建立时间(Tsu:set up time)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;保持时间(Th:hold time)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。

一级同步器如图1所示,如果时钟域产生的信号data_a的变化与clk时钟域时钟的边沿采样太接近,未满足采样建立时间。同步器故障导致输出出现亚稳态,且在下一个时钟边沿到来之前,不会变成稳态。此输出传递到后面的组合逻辑中,导致系统混乱。

两级同步器如图2所示,当第一级触发器采样异步输入之后,允许输出出现的亚稳态可以长达一个周期,在这个周期内,亚稳态特性减弱。在第二个时钟沿到来时,第二级同步器采样,之后才把该信号传递到内部逻辑中去。第二级输出是稳定且已被同步了的。如果在第二级采样时保持时间不够,第一级的输出仍然处于很强的亚稳态,将会导致第二级同步器也进入亚稳态,但这种故障出现的概率比较小。

一般情况下,两级同步器总体的故障概率是一级同步器故障概率的平方。在大部分的同步化设计中,两级同步器足以消除所有可能的亚稳态了。

附录:





图1






第二部分 关于亚稳态的讨论

原文:http://xilinx.eetop.cn/viewthread-288268

最近在网上看了一些硬件笔试题中,问如何解决亚稳态的问题,有人给出的答案中有降频使用,我不明白为什么降频使用可以解决亚稳态的问题。

falloutmx (2011-3-18 14:23:15)

毛刺对高速信号影响大

orlye (2011-3-18 20:49:30)

降频不能解决吧…… 只要有异步电路就可能有亚稳态。 应该是在异步过渡的地方好好处理。

hover99 (2011-3-18 21:11:54)

多级同步,频率一定级数越多采到亚稳态的概率越小,一般采用2-3级。

xuyo (2011-3-18 22:08:46)

亚稳态主要是建立或保持时间不满足导致的,不一定是频率的问题,具体问题具体分析

sunny_hua (2011-3-18 23:39:21)

要看什么原因了,就算是同步电路,setup time holdtime不满足,也会出现亚稳态,异步电路就更要考虑了,不同情况处理不同,你懂得

笨小孩 (2011-3-19 00:01:28)

 亚稳态在异步电路中是不可避免的,不管用什么同步电路去同步异步信号,都会出现亚稳态。那同步电路的作用是什么呢?其实是为了不让亚稳态传播。 两级同步电路的思想其实是为了给亚稳态留出足够的时间,好让亚稳态变成稳定态。

一般情况下亚稳态持续的时间很短,所以两级DFF同步之后的信号基本上不会出现亚稳态,可以给后级使用。

这里用两级DFF的目的就是给亚稳态留出一个DFF的工作时钟周期,如果第一级DFF的输出出现亚稳态,那么在一个时钟周期内,让亚稳态变成稳定态。

这样第二级DFF采样第一级DFF的输出时,第一级DFF的输出早就稳定了,因此不会出现亚稳态的传播。所以在用两级同步电路对异步信号做了处理后,降低同步电路的工作时钟,就可以给亚稳态留更多的时间让它变成稳定态,因此可以起到使电路更稳定安全的效果。 纯个人理解,若哪里说的有不正确的地方请指正,谢谢!

chinaleo (2011-3-19 12:18:10)

对,亚稳态是无法避免的,只能降低出现的频率

shufeng123 (2011-3-19 16:33:35)

亚稳态平均无故障时间(The metastability MTBF,即为由亚稳态决定的平均无故障时间)的公式: 

MTBF=etMET/C2/(C1*fclk*fdata) (tMET/C2是e的上标) 

C1 和C2 是常数,依赖于器件工艺和操作环境。 fCLK 和fDATA 参数取决于设计规格: fCLK 是接收异步信号的时钟域的时钟频率,fDATA 是异步数据的翻转频率(toggling frequency)。

更快的时钟速率和更快的数据翻转(faster-toggling data)会降低平均无故障时 间。 tMET 参数是亚稳态转稳定时间(vailable metastability settling time),或者说时序裕量大于寄存器Tco 可 以让潜在的亚稳态信号达到稳定值的时间。tMET 对同步链来说就是链中每个寄存器输出时序裕量的 和。 从这个公式来看降频使用是降低亚稳态的一种方法。

shufeng123 (2011-3-19 16:47:20)

在一次面试时遇到这个问题,我当时说可以降频使用,可那面试官说降频使用不是解决亚稳态的一种方法,现在想想应该是可以的。

mrwujian (2011-3-19 17:13:22)

亚稳态和电路的设计有关系。降频往往也可以解决一部分的问题

明天更好 (2014-7-31 11:16:52)

回复 1# shufeng123 你可以看看特权同学的一遍博文,百度文库里就有。降低频率,就增加了富余量Tsl,alter官网上给出了MTBF跟(e^Tsl)成正比,MTBF越大,就月不容易出现亚稳态。亚稳态,一般用握手或者双时钟FIFO解决,网上说的两级D触发器,也只是对单个信号应用的,只是消除亚稳态给楼面电路的影响,不会降低亚稳态发生的概率。降低工作频率,数据频率,或者增加富余量Tsl
才能降低亚稳态出现的概率。


nwpuxiaobing (2014-8-08 23:26:50)

FIFO FIFOFIFO
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息