亚稳态的概念,常见的三种同步器,电平同步器、边沿检查同步器和脉冲同步器。
同步电路和域异步电路
同步电路的定义
电路中的所有受时钟控制的单元(例如flip-flop,register),全部由一个统一的全局时钟控制
同步电路设计的优点
-
在同步设计中,EDA工具可以保证电路系统的时序收敛,有效避免了电路设计中竞争冒险现象;
-
由于触发器只有在时钟边缘才改变取值,很大限度地减少了整个电路受毛刺和噪声影响的可能。
同步电路设计的缺点
-
时钟偏斜(clock skew)
-
时钟抖动(clock jitter)
-
时钟树综合,需要加入大量的延迟单元,使得电路的面积和功耗大大增加。
全局异步电路的定义
电路中的数据传输可以在任何时候发生,电路中没有一个全局的或者局部的控制时钟。
异步电路设计的优点
- 模块化特性突出
- 对信号的延迟不敏感
- 没有时钟偏斜问题
- 有潜在的高性能特性
- 好的电磁兼容性
- 具有低功耗特性
异步电路设计的缺点
- 设计复杂
- 缺少相应的EDA工具支持
- 在大规模集成电路设计中应该避免采用异步电路设计
同步时钟异步时钟的差别在于,同步时钟来源于统一锁相环PLL生成,这些时钟的相位和倍数都是可控的,如果来源于不同的PLL,即使两个时钟的频率相同也属于异步时钟。
亚稳态相关概念和原理
- 亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态;
- 当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上;
- 在此期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去
亚稳态不能从根本上消除,但可以通过采取一定的措施使其对电路的影响降低。下面的公式用于表征亚稳态的影响:

故障间隔平均时间MTBF越大,亚稳态的影响越小
tmet -寄存器从时钟上升沿触发后的时序余量时间
fclk - 接收时钟域的时钟频率
fdata - 数据的变化频率
C1、C2 - 与器件有关的参数(固定值)
Tmet时间是指正常没有亚稳态情况下,寄存器输出信号从源寄存器到目的寄存器的建立时间余量。
Tmet = 采样时钟周期时间 - 输出信号正常的Tcq时间 - 数据到达下一级寄存器的输入端口的其他延时时间T_data - 下一级寄存器T_su时间
由于Tcq和Tsu都由器件本身的工艺和工作环境决定,如果在时钟频率fclk和数据变化率固定的情况下,要增大Tmet值,那么设计者要做的只能是减小T_data值。
最大程度的减小T_data,只能是不再两个寄存器之间添加任何逻辑。
同步策略—双锁存器电平同步器
一个信号在过渡到另一个时钟域时,如果仅仅用一个触发器将其锁存,那么用一个触发器进行采样的结果可能是亚稳态。
双锁存器法,即在一个信号进入另一个时钟域之前,将信号用两个锁存器连续锁存两次,最后得到的采样结果可以消除亚稳态问题。
亚稳态现象
亚稳态信号的传播
亚稳态的解决及RTL实现
1 | module synchronizer ( |
优点是结构简单,易实现,但是增加了两级触发器延时。而且当快时钟域转到慢时钟域时,易造成慢时钟采样丢失(还未来得及采样,数据就变化了)。故常用于慢时钟转到快时钟域。
使用条件:(慢时钟域–>快时钟域)
- {clk_slow的周期} > {(clk-fast的周期) + (路径延时)},确保信号可以被clk_fast采样到(假设clk_fast&clk_slow起始时刻相同求得);
- {data 数据变化间隔} > {(clk_slow的周期) + 2*(clk_fast的周期) + (路径延时)},确保所有的数据变化均能采集到。
结论:
- 两级触发器已经将MTBF变得足够大;
- 三级或者更多级虽然能将亚稳态出现概率降得更低,但影响电路效率;
- 增加寄存器进行同步的方法只是不断降低亚稳态出现的概率
亚稳态—单bit信号的跨时钟域传输
慢时钟域–>快时钟域
由慢时钟到快时钟域的传输,主要采用边沿检测同步器电路,可以检测输入信号的上升沿或下降沿。
边沿检查电路实现的电路功能实际上是将慢时钟下一个周期的脉冲,搬移并缩小为快时钟下一个周期宽的脉冲。
适用条件:
输入数据的宽度必须比一个接收时钟周期加上一个同步触发器的hold时间要长,最安全的就是两个同步周期宽度。慢时钟域的脉冲足够保持到被快时钟的同步器拿到
快时钟域–>慢时钟域
通常采用脉冲同步器,基本功能是:从某个时钟域取出一个单时钟宽度脉冲,然后在新的时钟域中建立另一个单时钟宽度的脉冲。
使用慢时钟直接去采集快时钟域下input信号采集不到,因此使用toggle 电路子啊快时钟域下对输入信号有效标定,获得toggle信号。随后,使用同步器同步toggle信号,在慢时钟域下最终获得两个有效的单周期脉冲output。
使用条件:
- 输入脉冲之间的最小间隔必须等于两个同步器时钟周期;
- 如果输入脉冲相互过近,则新时钟域中的输出脉冲也紧密相邻,结果是输出脉冲宽度比 一个时钟周期宽;
- 当输入脉冲时钟周期大于两个同步器时钟周期时,这个问题更加严重;
- 这种情况下,如果输入脉冲相邻太近,则同步器就不能检测到每个脉冲。
三种同步器对比
Reference:
2.SOC设计方法与实现_郭炜_中文课件