zl程序教程

您现在的位置是:首页 >  后端

当前栏目

硬件架构的艺术 学习笔记(1)

2023-09-27 14:20:42 时间

第一章 亚稳态的世界

1.1 亚稳态产生的原因:
亚稳态是由于违背了触发器的建立时间和保持时间而产生的。设计中任何一个触发器都有特定的建立和保持时间,在时钟上升沿前后的这段时间窗口内,数据输入信号必须保持稳定。如果信号在这段时期发生了变化,那么输出将是未知的或者称为“亚稳态的”。这种有害状态的传播就叫做亚稳态。触发器的输出会因此产生毛刺,或者暂时保持在不稳定状态而且需要较长时间才能回到稳定状态。

1.2 亚稳态窗口
亚稳态窗口(Metastability Window)具有特定的时间长度,在这段时间的输入信号和时钟都应该保持不变。建立时间和保持时间共同决定亚稳态窗口的宽度。
在这里插入图片描述

1.3 MTBF 平均无故障时间
在这里插入图片描述在这里插入图片描述

c2是器件相关的常数,器件的建立时间和保持时间越小,C2越小,MTBF就越大。所以可以通过选择更快的触发器,来减少亚稳态发生的概率。
MTBF越大,发生概率越小。

1.4 避免亚稳态
在这里插入图片描述
解决方法
1.4.1 使用多级同步器
在这里插入图片描述
在这里插入图片描述
如图所示,bclk的第一级FF输出发生亚稳态,亚稳态维持了一个周期,并在下一个时钟上升沿稳定,被识别为高,这样第二级的FF就能正确的将adat采样到了bq2_dat。

1.4.2 同步器的输入:源时钟寄存
采用同步器还有另外一个要求:通常,需要跨时钟的信号,需要在源时钟域先经过一级FF进行寄存输出。也就是说,跨时钟信号必须是寄存器的输出,中间不能有组合逻辑。还是刚才的电路,如果输入不是寄存器的输出,而是组合逻辑的输出那么情况会是怎样的呢?如下图所示:

在这里插入图片描述
可以看到,adat是组合逻辑的输出,变化的频率更快了,根据MTBF公式:
在这里插入图片描述
数据变化太快,会减小MTBF,增加亚稳态发生的概率。如果adat是FF的输出,那么根据FF的特性,输出在一个时钟周期内是不会改变的,数据的变化频率不会超过时钟频率,这样就能降低跨时钟信号变化的频率,减小亚稳态发生的概率,如下图所示:
在这里插入图片描述
所以,在使用同步器同步信号时,要求输入信号必须是源时钟域的寄存输出。

这里引用了该博客 芯片设计进阶之路-亚稳态和同步器

1.4.3 使用时钟倍频电路的多级同步器
在这里插入图片描述
1.5 亚稳态测试电路
在这里插入图片描述
在这里插入图片描述
总结
在这里插入图片描述