Chapter 1 亚稳态的世界

一、简介
-
同步系统中,数据和时钟有固定的因果关系(在同一时钟域(Clock Domains))中,只要数据和时钟满足建立时间和保持时间的要求,不会产生亚稳态(meastable)
静态时序分析(STA) 就是基于同步电路设计模型而出现的,其目的一方面是增加同步时钟的稳定性,从而减少亚稳态的发生,另一方面通过附加约束可以控制逻辑的综合(DC)、映射(Map)、布局(Place)、布线(Route),以减少逻辑和布线延时,从而提高工作频率。
-
异步系统中,数据和时钟关系不固定,可能违反建立保持时间,就会输出介于两个有效状态之间的中间级电平,且无法确定停留在中间状态的时间,或者过了一定的延迟后才能正常转换,这就是亚稳态。
二、亚稳态理论
1.产生原因及现象
- 亚稳态产生原因:违背了触发器的建立时间或保持时间。
- 现象:触发器的输出产生毛刺(输出在高低电平之间波动),或者暂时保持在不稳定状态且需要较长时间才能回到稳定状态。
tsu:建立时间(setup time)
th:保持时间(hold time)
tco:时钟到输出的延迟(clock-to-output delay)
tMET:亚稳态输出恢复到稳定状态所需的超过tco的额外时间部分(settling time)
- 并非所有不满足建立时间和保持时间的输入变化都会导致亚稳态,触发器是否进入亚稳态和返回稳态的时间还取决于生产工艺和外界环境。
- 一般来说,触发器在进入亚稳态之后,一两个周期就会回到稳态
2.同步失败
如下图,信号在一个时钟域(src_data_in
)里变换,在另一个时钟域(dest_data_in
)内采样,导致输出变成亚稳态。

三、亚稳态窗口

-
亚稳态窗口(Metastability Windows)具有特定的时间长度,在这段时间内输入信号的数据保持不变。如果发生变化,输出就可能编程亚稳态。如上图1.4所示,建立时间和保持时间共同决定了亚稳态窗口的宽度。
-
窗口越大,进入亚稳态的概率越大,因此一般新的逻辑器件都会有更小的亚稳态窗口。
四、计算MTBF(故障率倒数)
-
MTBF(Mean/Average Time Between Failures,平均无故障时间),即故障率倒数.
-
对于单级同步器
1 F a i l u r e R a t e = M T B F 1 = e ( t r / τ ) W f c f d \frac{1}{FailureRate}=MTBF_1=\frac{e(t_r/\tau)}{Wf_cf_d} FailureRate1=MTBF1=Wfcfde(tr/τ)公式成立条件:该同步器具有跟定的时钟频率,并且在该时钟周期内具有均匀概率密度
式中, t r = t_r= tr=允许超出器件正常传输延迟时间的解析时间
τ = \tau= τ=触发器的亚稳态(解析)时间常数
W = W= W=亚稳态窗口
f c = f_c= fc=时钟频率
f d = f_d= fd=异步信号边沿频率
-
对于两级同步器
M T B F 2 = e ( t r 1 / τ ) W f c f d × e ( t r 2 / τ ) MTBF_2=\frac{e(t_{r1}/\tau)}{Wf_cf_d}×e(t_{r2}/\tau) MTBF2=Wfcfde(tr1/τ)×e(tr2/τ)
t r 1 t_{r1} tr1是第一级同步器的解析时间t r 2 t_{r2} tr2是第二级同步器的解析时间
可以看出,增大同步级数可以显著提高MTBF
五、避免亚稳态
-
避免亚稳态,当然要从能造成亚稳态的条件入手——违背建立/保持时间,以下条件中,信号可能违背时序要求:
-
输入信号是异步信号
-
时钟偏移(Clock Skew)和时钟抖动(Clock jitter 上升/下降时间)高于容限值。
-
信号在两个不同频率或者相同频率但是相位和偏移不同的时钟域下跨时钟工作。
-
组合延迟使触发器的数据输入在亚稳态窗口内发生变化。
-
-
亚稳态不能根除,但是可以减小亚稳态发生的概率。
-
最简单的情况下减小亚稳态概率的方法:确保时钟周期足够长,但是会影响性能,并不实用。
另一种避免亚稳态的方法就是使用同步器:
1.使用多级同步器
-
避免亚稳态最常见的方法:在跨时钟域的信号上加一个或多个同步触发器。
**缺点:**增加了观察同步逻辑输入的延迟。

2.使用时钟倍频电路的多级同步器
-
多级同步器**缺点:**系统需要花较长时间去响应异步输入。
**解决方法:**使用倍频时钟作为两个同步触发器的时钟输入。Altera的FPGA中就具有这项技术。

这样不仅能让系统一个周期响应一个异步输入,而且改善了MTBF。然而倍频时钟会降低MTBF,这个影响比两个触发器引起的偏移 量要大。
两种方法都不能保证同步器阻止亚稳态传播下去,它们仅仅减少了亚稳态发生的概率。
3.消除亚稳态常用方法
- 对异步信号进行同步处理;
- 采用FIFO对跨时钟域数据通信进行缓冲设计;
- 对复位电路采用异步复位、同步释放方式处理。
六、亚稳态测试电路

图中,asynv_in
的触发器
F
F
A
FF_A
FFA是时钟上升沿触发,
F
F
B
FF_B
FFB和
F
F
C
FF_C
FFC都在时钟下降沿触发,这样做是为了捕捉
F
F
A
FF_A
FFA的亚稳态事件。
- 当发生亚稳态时,异或非门会输出高电平,所以 F F D FF_D FFD捕捉到高电平就代表检测到亚稳态,时序图如下。

- 由于 F F B FF_B FFB和 F F C FF_C FFC两个触发器是下降沿触发,所以高电平时间减去 F F A FF_A FFA的 t c o t_co tco和 F F B FF_B FFB和 F F C FF_C FFC的建立时间等于稳定时间 t M E T t_{MET} tMET。
t M E T = Δ t − t A C N t_{MET} = \Delta t \ -\ t_{ACN} tMET=Δt − tACN
七、同步器的类型
一个异步信号不应被两个或者多个同步器所同步,一开始不太理解这句话,google了一下:一个信号扇出到多个同步器之后同步所需的时间不同,可能出现竞争冒险。
- **模式A:**当异步输入信号比时钟周期大得多时最有效:下面这张图才应该是模式A,图标错了。

**模式B:**第一级触发器输入直接与Vcc
相连,输入信号直接连触发器时钟。输入信号短脉冲把q1
置为1之后,便会一直保持,直到输出高电平。下面这张图才是模式B。

-
总结:
-
信号跨时钟,要采用同步器。
-
clk1<clk2
,采用模式A,否则采用模式B。
-
八、亚稳态/综合性建议
- 采用同步器。
- 采用响应更块的触发器(缩短亚稳态窗口 T W T_W TW)。
- 使用亚稳态硬化触发器 (专为高宽带设计并减少为时钟域输入电路而优化的采样时间)。
- 如图1.6所示,使用级联触发器(两个或多个)作为同步器。如果一个触发器的亚稳态失败概率为 P P P,那么N个触发器的亚稳态失败率就是 P N P^N PN。
- 减少采样速率。
- 避免使用 dV/dt 低的输入信号。
九、[整理]跨时钟域处理方法总结
- 见另一博客跨时钟域CDC
- 转载自mhq_martin 亚稳态的产生机理、消除办法 (可以理解为什么打拍)