Metastability,即亚稳态,是指触发器无法在某个规定时间段内(决断时间)达到一个可确认的状态(0 或 1)。
亚稳态的具体表现:当一个触发器进入亚稳态引时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去,最终有可能导致系统的崩溃。
亚稳态的产生原因:触发器的建立时间和保持时间在时钟上升沿左右定义了一个时间窗口,如果触发器数据输入端口上的数据在这个时间窗口内发生变化(或者数据更新),那么就违反了建立时间要求和保持时间要求,从而产生了时序违规。此时触发器内部的一个节点(一个内部节点或者要输出到外部节点)可能会在一个电压范围内浮动(徘徊在一个中间电平状态),无法确定最终是稳定在逻辑 0 或者 1 状态,而在这段时间里数据输出端 Q 为毛刺、振荡、固定的某一电压值,而不是等于数据输入端 D 的值。
亚稳态的随机输出:此时触发器输出端 Q 在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里 Q 端在 0 和 1 之间处于振荡状态,而不是等于数据输入端 D 的值。这段时间称为决断时间。经过决断时间之后 Q 端将稳定为 0 或 1 ,但是具体是 0 或 1 却是随机的,与输入没有必然关联。
亚稳态的解决方法:
1、降低系统时钟;
2、用反应更快的 FF ;
3、引入同步机制,防止亚稳态传播;
4、改善时钟质量,用边沿变化快速的时钟信号;
5、关键是器件使用比较好的工艺和时钟周期的裕量要大。
例子:
对于以上的第三点,我们有多级 D 触发器级联处理方式,可对异步信号进行同步处理。
可以看出,当第一个寄存器发生亚稳态后,经过 Tmet 的振荡稳定后,第二级或者第三级寄存器就能采集到一个稳定的值。避免了亚稳态跟随着电路一直传递下去,最终导致的系统的崩溃。