上周,在做VGA接口显示实验时,框图中的同步器引起了我的注意。从理论上说,一级同步器已经能够实现同步,为什么还要使用两级同步器呢?
首先,我想说理论与实际是有差距的,理论上在数字电路上的触发器都是稳态的,要么为0,要么为1,因此理论上说一级同步就够了,可实际上,除了高电平和低
电平,同步器在建立时间或保持时间得不到满足的情况下,会进入亚稳态。亚稳态通过不同的延时传到组合逻辑中,可能为低电平,可能为高电平。
在此,补充说明建立时间和保持时间,建立时间(Tsu:set up
time)是指在时钟沿到来之前数据从不稳定到稳定所需的时间,如果建立的时间不满足要求那么数据将不能在这个时钟上升沿被稳定的打入触发器;保持时间(Th:hold
time)是指数据稳定后保持的时间,如果保持时间不满足要求那么数据同样也不能被稳定的打入触发器。
一级同步器如图1所示,如果时钟域产生的信号data_a的变化与clk时钟域时钟的边沿采样太接近,未满足采样建立时间。同步器故障导致输出出现亚稳态,且在下一个时钟边沿到来之前,不会变成稳态。此输出传递到后面的组合逻辑中,导致系统混乱。
两
级同步器如图2所示,当第一级触发器采样异步输入之后,允许输出出现的亚稳态可以长达一个周期,在这个周期内,亚稳态特性减弱。在第二个时钟沿到来时,第
二级同步器采样,之后才把该信号传递到内部逻辑中去。第二级输出是稳定且已被同步了的。如果在第二级采样时保持时间不够,第一级的输出仍然处于很强的亚稳
态,将会导致第二级同步器也进入亚稳态,但这种故障出现的概率比较小。
一般情况下,两级同步器总体的故障概率是一级同步器故障概率的平方。在大部分的同步化设计中,两级同步器足以消除所有可能的亚稳态了。
附录:
图1
图2
阅读(3756) | 评论(0) | 转发(0) |