分享

FPGA的亚稳态跟MTBF

 依米大人 2023-02-16 发布于北京

引言

看了许多网上介绍亚稳态的博文,有些介绍得不是很到位,例如在介绍亚稳态的时候并没有一起介绍了MTBF(mean time between failure,平均无故障时间),甚至有一些“歧义”的介绍比较使人误导,这篇博文主要了描述了我自己对FPGA中的亚稳态跟MTBF的了解。介绍亚稳态是怎样产生的,还有它是怎样导致设计的失败。并举例子介绍MTBF由亚稳态得出的平均无故障时间可以告诉设计者是否应该去降低出现失效的几率。这篇博文将告诉你如何由各种设计和器件参数计算出平均无故障时间,如何通过一些设计技巧优化或者规避亚稳态来提高系统的稳定性。当然本文都是博主跟公司工程师们交流及自己研究理解的,如果有不到位的欢迎批评并交流。

亚稳态

在所有的数字器件中如FPGA的寄存器都有各自的时序要求,只有满足了时序要求,寄存器才能在输入端捕捉数据并在输出端输出稳定的数据。在前面博文介绍的电路静态时序分析可知,为保证电路正常,信号应该在寄存器捕获沿前的“建立时间Tsu”之前翻转变换并保持稳定到寄存器捕获沿后的“保持时间Th”,然后经过Tco(始终捕获沿到寄存器Q端所需的时间)才会输出有效(稳定)。如果一个数据信号的翻转变换违反了寄存器的Tsu跟Th,寄存器的输出就可能会是亚稳态。在产生亚稳态中,输出会在高电平跟低电平来回震荡的时间叫做Tmet(从亚稳态震荡到稳定状态的0或者1的过程叫做决断时间,resolution time),这个时候输出翻转到0或者1的延迟可能会超过时钟沿到寄存器输出端的延迟(注意是Tmet>Tco)。
下面是我从很多博文看到的一张时序解释图在这里插入图片描述
由图可知,当产生亚稳态后Tco时间后会有Tmet(决断时间)的振荡时间段,当振荡结束回到稳定状态时为“0”或者“1”,这个是随机的。因此,会对后续电路判断造成影响。 这张时序图给我的感觉就是难道Tco==Th?,两者很明显是不同的概念,另外许多博文图片的描述都是震荡时间Tmet是在Tco之后开始算的??,我看了Alter官网的白皮书介绍与公司工程师们的交流则看法不一样,亚稳态Tmet是在信号违反时序而马上触发的,而不是在违反之后还要经过Tco之后才触发进入决断时间Tmet。所以对于亚稳态的时序图我的看法则如下所示:当input在时钟上升沿(捕获沿)前的Tsu建立时间里翻转变换,即为input violates在经过寄存器触发进入亚稳态Tmet的震荡时间,其震荡时间大于Tco。而决断时间Tmet是取决于制造商的工艺与电路系统的工作环境,大部分情况下寄存器会从亚稳态快速的进入到稳定状态。但是并不代表系统完全没事,系统的稳定性更多时候取决于MTBF。 当然以上是自己的研究了解,如果大家有其他看法,欢迎提出交流批评,欢迎共同进步。
在这里插入图片描述

亚稳态的危害

是不是当电路发生亚稳态就会导致系统失效呢?这个答案很明显是否定的。当寄存器捕获输出发生亚稳态,但是如果能在同步给下一个寄存器的capture数据之前恢复到稳定状态(下一个寄存器时钟捕获沿的Tsu之前保持稳定),那么就不会导致设计失败而消极的对系统造成影响。但是当如果寄存器输出亚稳态的决断时间Tmet如果大于Tco以及到下一个寄存器路径上的时间余量,那么下一个同步寄存器就会得到一个不确定的不一致逻辑状态而导致设计的失败跟系统失效。

亚稳态的产生

在上面的描述中,我们在广义上已经知道其实亚稳态的产生原因主要是因为违反了寄存器的时序要求而导致输出的震荡。但是其实亚稳态从其产生的方式主要分为三大类:
第一类:在同步系统电路里面,可以说就是组合逻辑路径上的延迟大等原因而造成违反寄存器的时序要求。
这一类的解决方式比较好解决,一般较少路径延迟即可,而这种在同步系统电路里面其亚稳态的产生是比较小概率的,只要不违反时序,保证电路余量即可。
第二类:在多时钟跨时域的系统电路里面,因为发送域寄存器时钟与接收域寄存器时钟的时钟相位移不确定,而导致发送域数据有可能随时到达接收域寄存器(随时到达而不满足寄存器的Tsu跟Th),所以会导致寄存器产生亚稳态。
这一类的解决方式有多种方法,例如总线传输,异步FIFO传输等方式,这里不做详细描述,在后面的博文将再做详细介绍。
第三类:异步复位而导致系统电路产生亚稳态。因为异步复位信号有可能随时复位在时钟沿的附近,而导致系统产生亚稳态。这一类的解决方式有“异步复位,同步释放”等,也在后面的博文将再做详细介绍。

平均无故障时间(MTBF)

对于亚稳态来说,我们没有办法把他完全消灭,只能做的是看如何优化电路,在时间上来衡量他发生错误的概率是多大。
如果在一个FPGA系统电路里面存在多个独立(异步)时钟,并且存在多时钟跨时域(clock domain)之间的信号传输,那么电路会出现亚稳态。出现亚稳态的平均时间间隔常用“平均无故障时间” (MTBF, Mean Time Between Failure)来表示。数据的频率,时钟频率及寄存器的工作温度、电压、辐射等因素都对MTBF有影响。平均无故障时间一般根据系统应用需求而定,例如一个医疗设备额平均无故障时间要大于一个消费型的音响。提高平均无故障时间有利于减少系统在信号传输过程因亚稳态而带来的风险。下图是平均无故障时间MTBF的计算公式:
在这里插入图片描述
从上图的计算可以看得出,MTBF与触发器的时钟频率密切相关,甚至受到时钟频率的影响极大,但是注意一点的是亚稳态发生的概率与时钟的频率无关,只是MTBF与触发器的时钟频率有密切联系。例如对于一个系统来说,可能触发器的时钟频率为20MHZ时,系统MTBF为5年,但是当触发器时钟为40MHZ时,可能MTBF只剩下一分钟了。例如假设触发器的时钟频率为10MHZ,而输入数据频率为3KHZ,其MTBF如下图所计算的:
在这里插入图片描述

MTBF的提高

提高平均无故障时间有利于减少系统在信号传输过程因亚稳态而带来的风险。那我们应该如何提高MTBF呢,从上图MTBF的计算公式来说,我们可以看得出MTBF取决于电路寄存器的工艺及电路的Tmet(Tr,在不引起同步失败的前提下亚稳态可持续的最长时间)。
提高MTBF的第一种办法:提高工艺,例如从180nm的工艺提高到90nm的工艺,更快的供电电压跟更快的晶体管可以使亚稳态信号更快的稳定下来。晶体管的速度提升通常来说也是提高了亚稳态的平均无故障时间。
提高MTBF的第二章办法:采用3-5的同步链装置,来提高电路的Tmet/Tr,根据系统应用的MTBF需求甚至可以采用更高更多的同步链。例如:如果给定器件和运行条件下的Tmet是50ps,则在Tmet上提高200ps则提高MTBF的e^4倍,即50多倍,然而如果提高400ps则累乘e8是3000多倍。
为了增加Tmet可以增加同步链的寄存器个数,因为寄存器到寄存器之间的时间余量都会加到Tmet中去,一般来说,在面对跨时域数据交汇的电路,为了更好的亚稳态保护,一般会采用两级同步链电路。经典的两级同步链的电路设计图如下所示:
在这里插入图片描述

总结

当信号在异步时钟域中传输或者因为异步复位亚稳态就会发生。而亚稳态失效的平均无故障时间与器件的工艺,设计规格和同步逻辑中的时序裕量有关。FPGA设计者可以使用一些设计技巧提高Tmet或增加同步寄存器中的时序裕量来提高系统可靠性和平均无故障时间。

参考书籍

https://wenku.baidu.com/view/036beaf9aef8941ea76e0568.html FPGA的亚稳态

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多