我不是半导体/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是个特定的值,或者在某个条件下的常数。
tr = 2.3ns, τ = 0.31ns, T0 = 9.6as, f=100MHZ, a = 10MHZ, MTBF = 2.01 days
[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]