亚稳态的概念
1.1 简介
在同步系统中,数据相对于时钟总有固定的关系。当这种关系满足器件的建立和保持时间的要求时,输出端会在特定的传输延时时间内输出一个有效状态。在异步系统中,由于时钟和数据的关系不是固定的,因此有时会出现违反建立和保持时间的现象。当违反建立和保持时间时,就会输出介于两个有效状态之间的中间级电平且无法确定停留在中间状态的时间,或者在经历一定的延时后才能进行正常的转换。
1.2 亚稳态理论
亚稳态是由于违背了触发器的建立和保持时间而产生的。设计中任何一个触发器都有特定的建立和保持时间,在时钟上升沿前后的这段时间窗口内,数据输入信号必须保持稳定。如果信号在这段时间内发生了变化,那么输出将是未知的即称为亚稳态。触发器的输出会因此而产生毛刺,或者暂时保持在不稳定状态且需要较长时间才能回到稳定状态。
如下图(亚稳态时序参数)所示,当触发器处于亚稳态,输出会在高低电平之间波动,这会导致延迟输出转换过程,并超出所规定的时钟到输出的延迟值(tco)。亚稳态输出恢复到稳定状态所需要的超过(tco)的额外时间部分称为稳定时间(tMET)。并非所有不满足建立和保持时间的输入变化都会导致亚稳态输出。触发器是否进入亚稳态和返回稳态所需要的时间取决于器件工艺和外界环境。一般来说,触发器都会在一个或者两个时钟周期内返回稳态。
另外,当信号在一个时钟域(src_data_out)里变化,在另一个时钟域(dest_data_in)内采样,就会导致输出变成亚稳态。这就是所谓的同步失败(见下图--触发器中的亚稳态)。
1.3 亚稳态窗口
亚稳态窗口(Metastability Window)具有特定的时间长度,在这段时间内输入信号和时钟都应该保持不变。如果发生变化,输出就可能变成亚稳态。如图(亚稳态窗口)所示,建立时间和保持时间共同决定亚稳态窗口宽度。
窗口越大,进入亚稳态的概率就越高。在大多数情况下,较新的逻辑器件会有更小的亚稳态窗口,也就意味着器件进入亚稳态的概率就更小。
1.4 亚稳态的危害
亚稳态的危害主要体现在破坏系统的稳定性。由于输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值,因此亚稳态除了导致逻辑误判之外,输出0~1之间的中间电压值还会使下一级产生亚稳态(即导致亚稳态的传播)。逻辑误判有可能通过电路的特殊设计减轻危害,而亚稳态的传播则扩大了故障面。另外,在亚稳态状态下,任何诸如噪声、电源干扰等细微扰动将导致更恶劣的状态不稳定,这时这个系统的传输延时增大,状态输出错误,在某些情况下甚至导致会使寄存器在两个有效判定门限之间长时间振荡。