1.3.4 亚稳态
在同步电路或异步电路中,如果触发器的setup 时间或hold 时间不能得到满足,就可
能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端将会产生毛刺并不断振荡、最终固定在某一电压值上,此电压值并不一定等于原来数据输入端D的值。这段时间称为决断时间(resolution time)。经过决断时间之后,Q端将稳定到0或1上,但是究竟是0还是1,这是随机的,与输入没有必然的关系。
亚稳态的危害主要体
现在破坏系统得稳定性上,由于输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值,因此亚稳态除了导致逻辑误判之外,严重情况下输出0~1之间的中间电压值还会使下一级产生亚稳态(即导致亚稳态的传播)。 逻辑误判将导致功能性错误,而亚稳态的传播则扩大了故障面,严重时将导致系统崩溃。
在异步时序电路中更容易发生亚稳态,因为异步电路一般具有多个时钟域,数据在两个时钟域间传递时,非常容易导致setup 时间或hold 时间不满足而发生亚稳态。在同步时序电路中,当两个触发器间的组合逻辑延迟过大时,会导致setup 时间不满足而发生亚稳态。
1.3.5 对跨时钟域数据的处理
对跨时钟域数据的处理的核心就是要保证下级时钟对上级数据采样的setup 时间或hold 时间满足要求,即尽量避免亚稳态的发生和传播。但是,我们知道,只要系统中有异步元件,亚稳态就是无法避免的,因此设计的电路首先要减少亚稳态导致错误的发生,其次要使系统对产生的错误不敏感。我们推荐使用以下方法来解决异步时钟域数据同步问题。
1. 用触发器打两拍
如下图,左边为异步输入端,经过两级触发器同步,在右边的输出将是同步的,而且该输出基本不存在亚稳态。其原理是即使第一个触发器的输出端存在亚稳态,经过一个CLK周期后,第二个触发器D端的电平仍未稳定的概率非常小,因此第二个触发器Q端基本不会产生亚稳态。然而,亚稳态是无法被根除的,一旦亚稳态发生,后果的严重程度依赖于你