FPGA跨时钟域同步,亚稳态等

我不是半导体/ASIC/FPGA 领域的,对跨时钟域,MTBF等了解的很少。

有时候看到个问题,就会想这个问题,解决这个问题。

或许大家可以先看看 新思科技的 《跨时钟域信号同步的IP解决方案》 一文。

http://www.synopsys.com.cn/information/white-paper/ip

另外还有一篇 《ASIC中的异步时序设计》

http://wenku.baidu.com/view/a2bf0c22192e45361066f59c.html

 

平时多多少少看些参数,多会讲到 Setup time 和 Hold time,既所谓的建立时间和保持时间 Tsu/Thd。

        在同步系统中,如果触发器的Tsu ,Thd不满足,就可能会发生亚稳态,发生亚稳态后触发器输出电平不可预测,可能是中间级电平,可能是01,也可能是震荡的,也无法预测何时触发器从亚稳 态中恢复过来,输出正确的逻辑01电平,这个逻辑电平是0是1是随机的,即输出的并不一定就是对的。在异步电路中完全消除亚稳态是不可能,所以我们还是得 想办法减少亚稳态发生几率。

       至于解决方法常见的就是锁存器法,结绳法,异步FIFO法........

 

 

 
 
 

       很多地方多提到MTBF,即平均无故障时间,也给出了计算公式

fclk 是采样时钟频率
fdata 是数据变化频率
tres 是解决亚稳态所允许占用的时间
T0和T1是与具体触发器相关的常数

看新思科技的资料《ASIC中的异步时序设计》上说T0,T1有可能从库供应商处获得,还列出了他们用的测量电路,也从一个侧面说明T0,T1是个特定的值,或者在某个条件下的常数。

tcko1  是第一级同步触发器的tco,即时钟到输出的延时
tsetup2 是第二级同步触发器的 tsetup ,即第二级触发器的建立时间。
MTBF是平均无故障时间,是越大越好,按可以知道降低fclk采样频率可以增大MTBF时间。
此外百度百科上有几个亚稳态解决方法
1 降低系统时钟
2 用反应更快的FF
3 引入同步机制,防止亚稳态传播
4 改善时钟质量,用边沿变化快速的时钟信号
关键是器件使用比较好的工艺和时钟周期的裕量要大。
 
应该说是降低概率更合适。
 
再来看看《ASIC中的异步时序设计》一文中人家的计算例子:
对于一个典型的0.25μm工艺的ASIC库中的一个触发器,我们取如下的参数:
tr = 2.3ns, τ = 0.31ns, T0 = 9.6as, f=100MHZ, a = 10MHZ, MTBF = 2.01 days
as是阿秒是10的负18次方秒。
即触发器每两天便可能出现一次亚稳态。即用一个D触发器同步在上面条件下的亚稳态概率是2天出一次,实际使用环境中可能不是那么好测量出来的。
另外我在一个论坛上看到一个坛友说些数据问题,叫他打了2下触发器问题解决了,这个算是碰到亚稳态问题了。
 
另外还有一篇关于altera 亚稳态的文献
《Managing Metastability with the Quartus II Software》
http://www.altera.com/literature/hb/qts/qts_qii51018.pdf
 
 
下面这个网站介绍亚稳态的定义,计算,还有几个PLA芯片对应情况下的10年期的MTBF时间
http://www.interfacebus.com/Design_MetaStable.html

[Cummings, Clifford E. Synthesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs-讲了亚稳态,同步,最后还有异步FIFO的设计
另外他还有2篇异步FIFO设计的,多可以在网上找到:
1.Simulation and Synthesis Techniques for Asynchronous FIFO Design
2.Simulation and Synthesis Techniques for Asynchronous FIFO Design with Asynchronous Pointer Comparisons]
 
 
[TI的 Metastability Performance of Clocked FIFOs 一文讲ACT ABT FIFO的亚稳态,还有时间常数和不同fc,fd下的ACT ABT工艺下 1级同步 2级同步的MTBF时间。
 另外还有一篇TI的 Metastable Response in 5-V Logic Circuit 则给出了几种工艺下的74芯片的时间常数,有这个在算MTBF不是很好算吗:
]
 
 
 
 
 
下面是2个常用的异步输入同步器: 
第一个适用于异步输入脉冲宽度比时钟周期大的时候用。
第二个适用于脉冲宽度比时钟周期小的情况,这个电路的技巧就是把脉冲转换成边沿触发电平。sync_out端收到“1”后,异步这级触发器就清零了。这种适用于检测短脉冲,脉冲间隔时间大于4倍采样时钟周期
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/linkfeel/archive/2013/04/28/3048882.html

你可能感兴趣的:(FPGA跨时钟域同步,亚稳态等)