FPGA的亚稳态跟MTBF

博主微信:flm13724054952,不懂的有疑惑的也可以加微信咨询,欢迎大家前来投稿,谢谢!

引言

看了许多网上介绍亚稳态的博文,有些介绍得不是很到位,例如在介绍亚稳态的时候并没有一起介绍了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的亚稳态

FPGA的亚稳态跟MTBF相关推荐

  1. 数字电路设计中亚稳态与MTBF

    FPGA的亚稳态跟MTBF FPGA设计中的亚稳态及其缓解措施 原文 深入理解FPGA中的亚稳态概念 注意,亚稳态不一定会引发故障,而MTBF指的是无故障时间,所以二者不能画等号,也就是为什么,亚稳态 ...

  2. FPGA中亚稳态——让你无处可逃

    1. 应用背景 1.1         亚稳态发生原因 在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery ti ...

  3. 恶补FPGA知识——亚稳态

    亚稳态是FPGA系统中的一个常见的问题,亚稳态的出现轻则导致输出错误,严重的甚至会导致系统崩溃.因此对亚稳态的了解也必不可少. 一.概念 想要了解亚稳态问题,这里首先得了解四个时间 1.建立时间 触发 ...

  4. FPGA中亚稳态、异步信号处理、建立和保持时间违例及题目合集

    文章目录 一.亚稳态 1.1 降低亚稳态方法 二.异步信号处理的方式 三.建立和保持时间公式推导 3.1 建立时间 3.1 建立时间违例解决方法 3.2 保持时间违例解决方法 四.题目 一.亚稳态 亚 ...

  5. FPGA中亚稳态的理解(Understanding Metastability in FPGAs)

    写在前面 本文主要翻译自Altera公司的白皮书<Understanding Metastability in FPGAs>,主要讲述了FPGA设计中与亚稳态相关的问题. 正文中,黑字为翻 ...

  6. fpga.一些学习感悟以及细节方面

    前言:在fpga我只是一个新手,我会将一些学习心得不定期放到这个博文里.这里占个坑. 一.学习感悟 4.2022.12.21 扇入.扇出(助记:像扇子一样) 扇入:一个模块或者函数或方法被调用,也可以 ...

  7. 异步时钟引起的亚稳态问题和跨时钟域电路设计

    本文总结由数字电路设计的异步时钟引起的亚稳态问题,并针对亚稳态问题提出的处理方法和跨时钟域电路设计方法.重点是分析由异步时钟引起的跨时钟域CDC问题,后续将会总结由复位引起的电路亚稳态问题. 一.亚稳 ...

  8. 【华为2021秋招】【数字IC】【FPGA逻辑】【笔试解析】【独家】【2021届秋招】【FPGA探索者】【DengFengLai123】

    声明: /********************************************************* 文章首发于公众号,原创作者为 [公众号/知乎:FPGA探索者] [CSDN ...

  9. 【题目精刷】2022荣耀-数字芯片

    为了能够在做题目的过程中学习到需要的知识,对每道题知识参考或者知识详情都做了详细的说明.方便后续复习.欢迎对文中的解答批评指正. 文章目录 1.[单选题]下列电路中属于时序逻辑电路的是() 2.[单选 ...

最新文章

  1. 使用.htaccess删除.html扩展名_Visual Studio Code | 从下载安装到使用!
  2. BZOJ4698: Sdoi2008 Sandy的卡片
  3. 画瀑布图_常见的招财风水画之含义
  4. Spring JPA数据+休眠+ MySQL + Maven
  5. (软件工程复习核心重点)第七章软件维护-第一节:软件维护的概念和特点
  6. linux快捷键如dd,Linux的150个命令和快捷键 整理
  7. 手机辐射到底有多厉害!65分钟将生鸡蛋煮熟
  8. mysql innodb排他锁_mysql 中innoDB引擎的事务喝共享锁喝排他锁
  9. java web scala_Springboot与scala编写第一个web程序
  10. C语言之避免编译警告:unused用法(七)
  11. 双流棠湖中学怎么样_最强攻略!春节去哪儿high?双流这些免费活动别错过~
  12. elasticsearch-jdbc下载安装
  13. 充电器input与output_input和output的区别
  14. 基于易班API的Java开发入门教程
  15. 【数字基带传输】误码率的分析方法(BER Performance)
  16. VUE+Nodejs 商城项目练习项目(前台购物)
  17. linux系统 如何选择题,Linux认证考试练习题
  18. 怎么知道一个日期是一年中的第几周?
  19. l05173芯片针脚图_L05173TR
  20. (转载)symbian使用arm5编译器

热门文章

  1. vc中的rc和rc2的区别
  2. 力扣入门级广度优先搜索/遍历刷题小结
  3. 纯css导航下拉_纯CSS标签导航
  4. 使用Elastic Stack做应用的360度全观察性监控
  5. Linux监控平台搭建zabbix
  6. DOS下读取4GB内存——梁肇新代码分析
  7. Helix MP3 解码器在cortex m4应用
  8. 关于解决无法删除WPS留下的qingse64.dll的方案【wps】
  9. Matlab中自带的图片和路径
  10. 考研数学二推荐书籍(李永乐)