跨时钟域问题(一)——亚稳态

亚稳态

    综合工具可以保证同步信号满足触发器建立与保持的时间要求。但是综合工具却不能判定异步信号是否满足触发器的时间要求,因为在一个跨时钟域的交界面上,外部发来数据的到达时间,根本不能与本地时钟产生什么必然的时序上关系,或者更确切地说,外部数据在本地输入端口的稳定时间与本地触发器的采样窗口在时序上没有必然的联系。因此造成了跨时钟域接口间的亚稳态问题。

建立时间和保持时间

    D触发器的正常工作必须满足建立时间和保持时间的要求。在时钟上升沿出现之前,D的值都必须在一段指定的时间内保持稳定,否则D触发器无法正常工作。在时钟上升沿之前D需要保持稳定的最短时间称为建立时间。如果在建立时间内D的值发生了变化,那么将无法确定Q的电平,其可能为一个不确定的电平值。
    图1中,在点a处,在建立时间窗口之前D发生改变,Q迅速变为1(点b)。然而,在点c,在建立时间窗口之内D输入发生改变,在接下来相当长的一段时间内(几乎整个时钟周期)Q输出电平在1和0之间无法稳定(点d)。
   在时钟的上升沿之后的一段时间内,D的输人值也不允许改变,否则也会造成Q输出得不稳定,这个窗口被称为保持时间。建立时间和保持时间在图1中表示为s和h。
   总结:
   建立时间:指在时钟沿到来之前,输入信号必须保持稳定的时间
   保持时间:指在时钟沿到来之后,输入信号必须保持稳定的时间

在这里插入图片描述

亚稳态理论

  亚稳态是由于违背了触发器的建立时间或保持时间而产生的。如图一所示,当输入D在建立时间和保持时间窗口内发生变化时,在此后的几乎一个时钟周期内,输出Q无法稳定在逻辑0或者逻辑1状态。换句话说,如果数据在上述窗口中被采集,触发器中的晶体管不能可靠地设置为逻辑0或者逻辑1对应的电平上。所以,此时的晶体管并未处于饱和区对应的高或者低电平,而是在稳定到一个确定电平之前,徘徊在一个中间电平状态(这个中间电平或许是一个正确值,也许不是)。这种不稳定的状态也被称为亚稳态。
  在不同的半导体工艺以及芯片处于不同的工作条件下,信号从亚稳态回到稳定状态的时间会有所不同。在多数情况下,信号会很快回到一个稳定的状态。
  也就是说一旦建立时间和保持时间无法满足,电路很可能产生亚稳态。然而,亚稳态并非一定在建立时间和保持时间无法满足时出现。对于复位情况下的亚稳态,常常是由于恢复时间和移除时钟不满足造成的。

亚稳态窗口

  亚稳态窗口(Metastability Window)具有特定的时间长度,在这段时间内输入信号和时钟都应该保持不变。如果它们发生变化,输出就可能变成亚稳态。如图2所示,建立时间和保持时间共同决定亚稳态窗口的宽度。
在这里插入图片描述
  窗口越大,进入亚稳态的概率越高。这一时间窗口受多种因素影响,如触发器设计、实现技术、运行环境及输出负载等。在ASIC或FPGA库中,每种触发器都有时序要求(Setup和Hold),以帮助你确定容易出问题的窗口。这些指标通常比较保守,以应对电源电压、工作温度、信号质量及制造工艺等各种可能的差异。

亚稳态的危害

  亚稳态中出现的不定态x和逻辑上的x并不是同一个概念。逻辑上的x是指当前寄存器的值为未知,不确定它是1还是0,但能肯定它在物理上是个有效的电平。而亚稳态中出现的不定态x却不一样,它实质上是因为触发器输入端的信号的电平没有达到触发器内物理器件的有效电平的噪声容限内,导致由接成反馈回路的两个反向器构成的触发器稳定在非有效电平处的第三稳定点。这就可能使后续的电路对此信号产生不同的解释,后续电路可能会把这个信号解释为正确的电平,也可能解释错误。
  在数字集成电路中,如果采用CMOS工艺,由PMOS管和NMOS管处在不同的导通关断产生的高低电平来区别0和1的状态,如图3所示。
  
在这里插入图片描述  在稳定状态下,PMOS管和NMOS 管不可能同时处于导通状态。亚稳态现象却打破了这个原则。最简单的情况是,以后续电路为反向器为例,正常的时候D端为1,NMOS管导通,PMOS管关闭,Q端输出为0,而当D端为0时,PMOS管导通,NMOS管关闭,Q端为1。当D端的输入信号没有达到有效电平的噪声容限时,可能会出现PMOS管和NMOS管同时导通的现象,这是一个没有定义的状态,既不对应于逻辑0,也不对应于逻辑1,而且这个状态可能会继续往下传播,造成后面的电路的功能完全失效。
  由此可见,异步信号直接接入触发器输入端的时候不但可能传输一个错误的逻辑信号(信号实际值是1,但是触发器采到的是0,或反之),更有可能使触发器进入亚稳态并将其传播下去,造成严重的系统错误,同时还会造成非常大的系统功耗损失(双管同时导通产生极大的泄漏电流)。
  即传输延迟、系统故障、功耗损失。

如何减少亚稳态的风险

  每当违背建立、保持时间时,亚稳态就会出现。在以下条件中,信号可能违背时序要求。

  1. 输入信号是异步信号。
  2. 时钟偏移/摆动(上升/下降时间)高于容限值。
  3. 信号在两个不同频率或者相同频率但是相位和偏移不同的时钟域下跨时钟域工作。
  4. 组合延迟使触发器的数据输入在亚稳态窗口内发生变化。

  亚稳态会引起过多的传输延迟和系统故障,所有的触发器和寄存器都存在亚稳态。虽然亚稳态不能根除,但是可以减小亚稳态发生的概率。
  只要系统中有异步元件,亚稳态的发生就不可避免。亚稳态不能从根本上消除,但可以通过采取一些措施使其对电路造成的影响降低,也就是说可以采取一些措施降低亚稳态发生的概率,常见的方法有以下几种:

  1. 降低系统时钟频率,减少采样速率
  2. 用反应更快的触发器(缩短亚稳态窗口Tw
  3. 使用亚稳态硬化触发器(专为高宽带设计并且减少为时钟域输入电路而优化的采样时间)
  4. 引入同步机制,防止亚稳态传播
  5. 改善时钟质量,用边沿变化快速的时钟信号,避免使用dV/dt低的输入信号。(取决于晶振、晶振、工艺等)**
  6. 相位控制技术,PLL控制分频与相位。

计算MTBF

  触发器进入亚稳态的时间可以用参数MTBF(Mean Time Between Failures)来描述,MTBF即触发器采样失败的时间间隔,计算公式如下:
M T B F = e ( τ × t M E T ) W × f C L O C K × f D A T A MTBF = \frac{e^{(\tau\times t_{MET})}}{W\times f_{CLOCK}\times f_{DATA}} MTBF=W×fCLOCK×fDATAe(τ×tMET)
式中

  • tMET=指寄存器从时钟上升沿触发后的时序余量时间;
  • τ \tau τ=触发器的亚稳态(解析)时间常数
  • W=亚稳态窗口
  • fCLOCK=接收时钟域的时钟频率;
  • fDATA* 异步信号边沿频率;

  常数W和 τ \tau τ跟触发器的电气特性有关,会根据工艺技术而改变。所以,相同工艺生产出来的不同器件有着相似的W和 τ \tau τ值。
t M E T = T C L O C K + T S K E W − T C O − T D A T A − T S U t_{MET}=T_{CLOCK}+T_{SKEW}-T_{CO}-T_{DATA}-T_{SU} tMET=TCLOCK+TSKEWTCOTDATATSU
  设计者只能通过改变tMET、fCLOCK、fDATA、来提高MTEF值。MTEF值越大,说明出现亚稳态的几率越小。
  而这个tMET时间是指正常没有亚稳态情况下,寄存器输出信号从源寄存器到目的寄存器的建立时间余量。由于决定tMET取值的参数中Tco和Tsu,都是由FPGA器件本身的工艺以及工作环境决定的,设置时钟网络延时参数也很大程度上由器件决定,所以,如果在时钟频率fCLOCK和数据变化率fDATA固定的情况下,要增大tMET值,那么设计者要做的只能是减小fDATA值。而这个fDATA是指两个寄存器间的逻辑延时以及走线延时之和,要最大程度地减小它,估计也只能是不在两个寄存器间添加任何逻辑而已。

参考资料

1.Application Note 42——Metastability in Altera Devices
2.Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog
3.SoC设计方法与实现 /郭炜等编著
4.硬件架构的艺术:数字电路的设计方法与技术 /(印)阿罗拉(Arora,M.)著;李海东等译.
5.FPGA设计实战演练.高级技巧篇 /王敏志编著.

  • 2
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值