目录
- 1.亚稳态理论
- 2.亚稳态窗口
- 3.计算MTBF
- 4.避免亚稳态
- 多级同步器
- 时钟倍频电路的多级同步器
- 5.亚稳态测试电路
- 6.同步器类型
- 7.综合性建议
在异步系统中,由于数据和时钟的关系不是固定的,因此有时会出现违反建立和保持时间的现象,此时便会输出介于两个有效状态之间的中间级电平且无法确定停留在中间状态的时间,或者在经过一定的延迟后才能进行正常转换。
1.亚稳态理论
- 亚稳态是由于违背了触发器的建立和保持时间而产生的。触发器的输出会因此产生毛刺,或者暂时保持在不稳定状态而且需要较长时间才能回到稳定状态。
- 当触发器处在亚稳态时,输出会在高低电平之间波动这会导致延迟输出转换过程。并非所有不满足建立和保持时间的输入变化都会导致亚稳态输出。触发器是否进入亚稳态和返回亚稳态所需时间取决于生产器件的工艺技术与外界环境。一般来说,触发器都会在一个或者两个时钟周期内返回稳态。
- 当信号在一个时钟域(src_data_out)里变化,在另外一个时钟域(dest_data_in)内采样时,就会导致输出变成亚稳态。这就是所谓的同步失败。(如下图所示)
2.亚稳态窗口
亚稳态窗口具有特定的时间长度,在这段时间内输入信号和时钟都应该保持不变。如果它们发生变化,输出就可能变成亚稳态。如下图所示,建立时间和保持时间共同决定亚稳态窗口的宽度。
窗口越大,进入亚稳态的概率越高。在大多数情况下,较新的逻辑器件会有更小的亚稳态窗口,也就意味着器件进入亚稳态的概率会更小。
3.计算MTBF
当系统的故障率恒定时,MTBF(Mean Time Between Failures,平均无故障时间)就是故障率的倒数。我们可以由此得到特定触发器发生故障的频率。
对于一个具有给定时钟频率和在该时钟周期内具有均匀概率密度的异步数据信号边沿的单季同步器,亚稳态事件的发生率可以用建立、保持时间窗口和时钟周期的比值乘以信号触发频率来计算。
由故障率和时间的关系可以计算出触发器的亚稳态(解析)时间常数:
由1.1和1.2两个式子可以计算出两级同步器的MTBF:
1.1计算出了第一级同步器的MTBF,实质上就是下一级的亚稳态发生率。1.2则根据解析时间的值计算出了亚稳态事件的解析概率。两项结果的乘积就是两级同步器的整个MTBF。
4.避免亚稳态
如上所述,每当违背建立、保持时间时,亚稳态就会出现。
在以下条件中,信号可能违背时序要求:
- 输入信号是异步信号。
- 时钟偏移/摆动(上升/下降时间)高于容限值。
- 信号在两个不同频率或者相同频率但是相位和偏移不同的时钟域下跨时钟域工作。
- 组合延迟使触发器的数据输入在亚稳态窗口内发生变化。
虽然亚稳态不能根除,但是可以减小亚稳态发生的概率。
多级同步器
避免亚稳态最常见的方法就是在跨时钟域的信号上加上一个或者多个同步触发器。如下图所示,这种方法用一个完整的时钟周期来解决第一级同步触发器的亚稳态问题(不包括第二级触发器的建立时间)。但是这种方法也增加了观察同步逻辑输入的延迟。
时钟倍频电路的多级同步器
多级同步器的一个局限就是系统需要花费较长的时间去响应异步输入。这里可以使用倍频时钟作为两个同步触发器的时钟输入去解决这个问题。如下图所示。
这种方法不仅能让系统在一个系统时钟周期内响应一个异步输入,而且改善了MTBF。
5.亚稳态测试电路
每当触发器采样一个异步输入时,触发器输出都可能会产生一个不可预测的延迟,虽然概率很低。这不仅会在输入违反建立、保持时间要求时发生,而且在触发器接受新的输入这一小段时序窗口内也会发生。在这些情况下,触发器都会进入亚稳态。
下图描述的测试电路可以用来确定触发器的亚稳态特征。电路给出了有一个异步输入“async_in”的触发器“FFA”,再由时钟“clk”的上升沿触发。触发器“FFB”和“FFC”都在时钟下降沿触发,这样做是为了捕捉FFA的亚稳态事件。
当两个互补的信号分别传递到“FFB”和“FFC”的输入时,无论“FFA”什么时候出现亚稳态事件,异或非门(XNOR)门的输出都会变为高电平。在触发器“FFD”输出端捕捉到高电平就表明已经检测到亚稳态事件。
测试电路中所有节点的时序如下图所示。
6.同步器类型
一个异步输入电路的MTBF和用于从亚稳态恢复的时间呈指数关系。用同步器构成的时间缓冲器可以帮助从亚稳态中恢复。
要注意,一个异步信号不应该被两个或多个同步器所同步(这样会存在多级同步器输出产生不同信号的风险)。
两级同步器有两种模式:
- 模式A
模式A是一个标准的电路,当异步输入信号比时钟周期大得多时最有效。
对于同步器的模式A,第一级触发器的输入D与Vcc相连,同时时钟信号是异步输入信号。另外两个触发器直接由系统时钟(clk)控制。一个短脉冲让q1变成高电平,这个高电平在经过两个时钟(clk)沿后从sync_out输出。(书上的这段话写在了模式B的部分,应该是写错了)
需要注意的是,即使异步输入在建立时间区间之外稳定,它仍然需要由时钟驱动产生两个周期的延迟,否则FF1可能进入亚稳态。如果亚稳态在不到一个时钟周期内就解析了,FF2就会有稳定的输入,否则就需要更深层的级联。
但是,模式A不能用于异步输入信号的宽度小于时钟周期的情况。在这种情况下要用模式B。
- 模式B
经验规则如下:
1.当信号必须跨时钟域工作时,要采用同步器。
2.如果clk1 > clk2,在时钟域2里用同步器的模式A,否则就采用同步器的模式B。
7.综合性建议
在两个相互异步系统的交界面亚稳态是不可避免的。以下几点可以明显减小亚稳态发生的概率:
- 采用同步器。
- 采用响应更快的触发器。(缩短亚稳态窗口)
- 使用亚稳态硬化触发器。
- 使用级联触发器(两个或多个)作为同步器。如果一个触发器的亚稳态失败概率是P,那么N个触发器的亚稳态失败率就是P的N次方。
- 减少采样速率。
- 避免使用dV/dt低的输入信号。
更多详细内容可参考《硬件架构的艺术:数字电路的设计方法与技术》