1.亚稳态与设计可靠性

设计数字电路时大家都知道同步是非常重要的,特别当要输入一个信号到一个同步电路中,但是该信号由另一个时钟驱动时,这是要在接口处采取一些措施,使输入的异步信号同步化,否则电路将无法正常工作,因为输入端很可能出现亚稳态(Metastability),导致采样错误。

下面我们会对亚稳态的原理、起因、危害、解决办法、对可靠性的影响和消除仿真做一些介绍。

2. 什么是亚稳态?

亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。

3.亚稳态发生的原因

在同步系统中,如果触发器的setup time / hold time不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端毛刺、振荡、固定的某一电压值,而不是等于数据输入端D的值。这段之间成为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是究竟是0还是1,这是随机的,与输入没有必然的关系。

4.亚稳态的危害

由于输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值,因此亚稳态除了导致逻辑误判之外,输出0~1之间的中间电压值还会使下一级产生亚稳态(即导致亚稳态的传播)。 逻辑误判有可能通过电路的特殊设计减轻危害(如异步FIFO中Gray码计数器的作用),而亚稳态的传播则扩大了故障面,难以处理。

5.亚稳态的解决办法

只要系统中有异步元件,亚稳态就是无法避免的,因此设计的电路首先要减少亚稳态导致错误的发生,其次要使系统对产生的错误不敏感。前者要同步来实现,而后者根据不同的设计应用有不同的处理办法。用同步来减少亚稳态发生机会的典型电路如图1所示。

图 1 两级同步化电路

在图1中,左边为异步输入端,经过两级触发器同步,在右边的输出将是同步的,而且该输出基本不存在亚稳态。其原理是即使第一个触发器的输出端存在亚稳态,经过一个CLK周期后,第二个触发器D端的电平仍未稳定的概率非常小,因此第二个触发器Q端基本不会产生亚稳态。注意,这里说的是“基本”,也就是无法“根除”,那么如果第二个触发器Q出现了亚稳态会有什么后果呢?

后果的严重程度是有你的设计决定的,如果系统对产生的错误不敏感,那么系统可能正常工作,或者经过短暂的异常之后可以恢复正常工作,例如设计异步FIFO时使用格雷码计数器当读写地址的指针就是处于这方面的考虑。如果设计上没有考虑如何降低系统对亚稳态的敏感程度,那么一旦出现亚稳态,系统可能就崩溃了。

6.亚稳态与系统可行性

使用同步电路以后,亚稳态仍然有发生的可能,与此相连的是MTBF(Mean Time Between Failure),亚稳态的发生概率与时钟频率无关,但是MTBF与时钟有密切关系。 有文章提供了一个例子,某一系统在20MHz时钟下工作时,MTBF约为50年,但是时钟频率提高到40MHz时,MTBF只有1分钟!可见降低时钟频率可以大大减小亚稳态导致系统错误的出现,其原因在于,提供较长的resolution time可减小亚稳态传递到下一级的机会,提高系统的MTBF,如图2所示。

图 2 resolution time与MTBF的关系

7. 总结

亚稳态与设计可靠性有非常密切的关系,当前对很多设计来说,实现需要的功能并不困难,难的是提高系统的稳定性、可靠性,较小亚稳态发生的概率,并降低系统对亚稳态错误的敏感程度可以提高系统的可靠性。

来源: http://www.elecfans.com/d/604591.html

减少亚稳态导致错误,提高系统的MTBF相关推荐

  1. 提高系统开发效率的“银弹”——X-series可视化大规模应用开发工具集

    子曰,知之为知之,不知为不知,是知也. 知道自己不知道也是一种知道,但作为开发人员,面对一个系统时,无论是开发新功能还是维护老系统,我们更多的是处在一种茫然无助,不知道如何下手,甚至不知道自己不知道的 ...

  2. Java应用,如何提高系统健壮性

    Java 是一门广泛应用于企业级应用的编程语言,在编写大型系统时需要考虑系统健壮性,以确保系统的可靠性和稳定性. 以下是提高 Java 系统健壮性的一些建议: 异常处理:合理处理异常可以避免程序在遇到 ...

  3. 清理和关闭多余的Win7服务 提高系统速度

    清理和关闭多余的Win7服务 提高系统速度 浏览:393 | 更新:2013-07-15 11:30 | 标签:windows7 清理 现在已经有不少配置不是很高的电脑用户正式用上了Windows 7 ...

  4. 如何提高系统稳定性?

    1.系统稳定性的评判标准 在开始谈稳定性保障之前,我们先来聊聊业内经常提及的一个词SLA!业内喜欢用SLA (服务等级协议,全称:service level agreement)来衡量系统的稳定性,对 ...

  5. 如何提高系统的稳定性?

    如何提高系统的稳定性? 2人以上的需求或项目,必须制定主要负责人,负责整体系统的设计.代码把控,内外部的协调,把整体流程串起来,不只是每个人只做自己的部分: 在需求评审之前,相关人把prd通读,把问题 ...

  6. 在基于数据库的任务派发系统中利用SQL Server 2005 中新的查询提示来提高系统的效率...

    1.READPAST ReadPast会让SQL Server在查询数据时如果遇到数据行被锁定可以跳过继续搜索数据,从而避免了锁定. 2.UPDLOCK UPDLOCK会让SQL Server在查询数 ...

  7. 搭建前端错误监控系统

    当我们完成一个业务系统的上线时,总是要观察线上的运行情况,查看日志发现问题并进行优化迭代. 因为测试永远无法做到100%覆盖,用户也不会总是按照我们所预期的进行操作,因此我们需要在系统异常时主动对其进 ...

  8. 计算机的时钟设置错误,错误:系统时钟已被设置回过去的时间。 这是不允许的!...

    错误:系统时钟已被设置回过去的时间. 这是不允许的! 错误消息 启动 Esri 软件产品可能会返回以下错误:错误: "系统时钟已被设置回过去的时间. 这是不允许的!" 原因 任何将 ...

  9. 计算机无法检查出来的错误,Win7系统电脑显卡出现错误时怎么检测(图文)

    相信大家都知道电脑显卡的重要性,每台电脑上面都配置了电脑显卡,显卡有什么作用呢?其主要功能就是暂时将储存显示芯片要处理的数据和处理完毕的数据.如果Win7系统电脑显卡出现错误时,应该怎么检测呢?还是有 ...

最新文章

  1. 设置VSCode快速切换多个项目窗口的快捷键Alt+E
  2. Windows安全软件长臂管辖的折中方案?
  3. 大数据入门基础系列之初步认识大数据生态系统圈(博主推荐)
  4. Node.js Stream - 基础篇
  5. 剑指offer之 二叉搜索树的后续遍历序列
  6. windows7下安装php的imagick和imagemagick扩展教程
  7. 可信计算3.0工程初步pdf_查校 | 英国大学工业工程与运筹学专业40个授课硕士+研究Mphil/Phd 项目汇总...
  8. 安装centos6.7和deepin15的折腾记录
  9. 微信今日全面开放接口
  10. Linux vsyscall和vDSO加速系统调用
  11. 关于Tomcat 的一些配置和启动
  12. 简单python日志抓取脚本
  13. python百度百科-python语言概述
  14. Scrum 的每日例会 和 故事墙
  15. 三星android智能手机usb驱动程序,三星智能手机USB驱动
  16. GridView 样式
  17. 国际标准 ANIS/ IES,各环境场所灯光照明的设计使用规划
  18. Activiti6.0 用户任务分配方式总结(单人任务、多人任务)
  19. KDD2020|字节联合密歇根州立大学提出推荐广告联合训练框架RAM(已开源)
  20. DataSet-如何优雅使用DataSet,看完此篇文章完全理解C7N/choerodon/猪齿鱼 UI中的DataSet

热门文章

  1. c++中const与函数一起用的时候需要注意什么?
  2. linux AS 5 DNS 配置中的小错误
  3. linux 快捷matlab_Linux命令 笔记(一)
  4. android java 时间_android java获取当前时间的总结
  5. 中setting怎么配置_用VSCode配置Latex
  6. java十进制小数转化为二进制小数代码 乘二取整法_(四)改掉这些坏习惯,还怕写不出健壮的代码?...
  7. 智慧农场基本情况交流会议记录
  8. MNIST数据集合在PaddlePaddle环境下使用简单神经网络识别效果
  9. 2021年春季学期-信号与系统-第八次作业参考答案-第十一小题
  10. 315MHz 高频射频发射模块