跨时钟域(CDC)的主要问题是,当目标时钟域采样时,跨时钟域信号可能出现的setup和hold violation然后出现亚稳态,其中亚稳态可以在整个设计中传播,导致数据丢失,甚至芯片故障。
亚稳态是无法预防的,但可以使用同步器来避免亚稳态的传播;因此,防止系统故障。
双触发器同步器如何防止亚稳态传播?
如上图所示,当第一个触发器(FF)数据输入违反setup或hold时间要求时,输出A/B将变为亚稳态。然而,在不可预测的延迟(Tco)后,FF输出将稳定在某个逻辑0/1。
然后这个输出进入第二个FF,防止亚稳态在整个设计中传播。由于亚稳态将在Tco后稳定到稳定状态,当在时钟的下一个上升沿被第二个触发器采样时,Q1输出可能已经稳定,也就是第二个触发器没有setup或hold violation。因此,FF2可以成功存储Q1/D1的稳定数据,没有亚稳态。换句话说,FF2的输出可以由下一个逻辑块安全使用,而不会传播亚稳态。
目标时钟的时钟周期越高,亚稳态传播到下一个逻辑块的概率就越小,因为这为亚稳态在被第二个FF采样之前稳定下来提供了更多时间。
双触发器同步器是CDC设计中最常用的同步器。尽管如此,如下图所示,在同步链中添加额外的FF将进一步提高防止亚稳定性传播的概率。
三触发器同步器 |
由平均故障间隔时间(MTBF)参数对亚稳态导致的设计失败概率进行建模。