理解FPGA中的亚稳态

这篇具有很好参考价值的文章主要介绍了理解FPGA中的亚稳态。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一、前言

        大家应该经常能听说到亚稳态这个词,亚稳态主要是指触发器的输出在一段时间内不能达到一个确定的状态,过了这段时间触发器的输出随机选择输出0/1,这是我们在设计时需要避免的。本文主要讲述了FPGA中的亚稳态问题,可以帮助大家更好地理解亚稳态。本文来源于Altera公司的白皮书《Understanding Metastability in FPGAs》

二、概述

        本白皮书描述了fpga中的亚稳态,它发生的原因,以及它如何导致设计失败。它解释了亚稳态MTBF是如何计算的,并强调了各种器件和设计参数如何影响结果。

三、介绍(Introduction)

        亚稳性是当信号在不相关或异步时钟域的电路之间传输时,可能导致包括fpga在内的数字设备中的系统故障的一种现象。本文描述了fpga中的亚稳态,解释了这种现象发生的原因,并讨论了它如何导致设计失败。

        由于亚稳态而计算出的平均故障间隔时间(MTBF)表明设计人员是否应该采取措施减少此类故障的机会。本文解释了如何从各种设计和设备参数中计算MTBF,以及FPGA供应商和设计者如何增加MTBF。通过设计技术和优化,减少亚稳态故障的机会,可以提高系统的可靠性。

四、什么是亚稳态(What Is Metastability?)

        诸如FPGA等数字设备中的所有寄存器都定义了信号时序要求,允许每个寄存器在其输入处正确捕获数据并正确产生输出信号。为了保证寄存器的可靠运行,寄存器的输入必须在时钟沿之前的一段时间内保持稳定,我们称这个时间为建立时间(setup time),同时也必须在时钟沿之后的一段时间保持稳定,我们称之为保持时间 。然后,在指定的时钟到输出延迟之后(),寄存器输出就可用了。如果一个寄存器违反了建立时间或者保持时间要求,那么寄存器就有可能进入亚稳态。在亚稳态下,寄存器输出在高状态和低状态之间悬停一段时间,这意味着输出转换到定义的高或低状态会延迟到指定的之外。

        关于建立时间,保持时间等相关内容,请阅读:FPGA时序分析与约束(2)——时序电路时序https://blog.csdn.net/apple_53311083/article/details/132626131?spm=1001.2014.3001.5502

        在同步系统中,输入信号必须始终满足寄存器时序要求,这样才不会出现亚稳态。当信号在不相关或异步时钟域的电路之间传输时,通常会出现亚稳态问题。在这种情况下,设计人员不能保证信号满足建立时间和保持时间的时序要求,因为信号可以在相对于目标时钟的任何时刻到达。但是,并不是每个违反寄存器建立时间和保持时间的信号转换都会导致亚稳态输出。寄存器进入亚稳态的可能性和返回稳定状态所需的时间取决于制造设备所使用的工艺技术和操作条件。在大多数情况下,寄存器会很快恢复到稳定状态。  

        在时钟缘对数据信号进行采样的寄存器可以看作是一个球落到山上,如图 1 所示。山的侧面代表稳定状态(在信号转换后,信号的新旧数据值,信号转换的过程就是球翻山的过程,左侧为旧数据,右侧为新数据)山顶代表亚稳态。如果球掉在山顶,它可能会在那里无限期地保持平衡,但实际上它会稍微落到山顶的一侧并滚下山坡。球离山顶越远,它在底部达到稳定状态的速度就越快。

理解FPGA中的亚稳态,那些值得一读的FPGA文档,fpga开发,fpga,亚稳态,时序分析

        如果数据信号在时钟沿和保持时间之后发生传输,则类似于将球落在山的“旧数据值”一侧,并且输出信号保持在该时钟传输的原始值。

        当寄存器的数据输入在时钟沿和建立时间之前发生传输,并保持在保持时间之后,这类似于将球落在山的“新数据值”一侧,并且输出足够快地达到稳定的新状态,以满足定义的 时间。但是,当寄存器的数据输入违反 或 时,就类似于将球扔到山上。如果球落在山顶附近,球就需要很长时间才能到达底部,这会增加从时钟传输到稳定输出的延迟,超出定义的。

        下图说明了亚稳态信号。当时钟信号转换时,输入信号从低状态转换到高状态,违反了寄存器的要求。数据输出信号示例从低状态开始,进入亚稳态,在高状态和低状态之间徘徊。信号输出A解析为输入数据的新逻辑Logic 1状态,输出B返回到数据输入的原始逻辑 Logic 0状态。在这两种情况下,输出转换到定义的1或0的状态会延迟到寄存器指定的之外。

理解FPGA中的亚稳态,那些值得一读的FPGA文档,fpga开发,fpga,亚稳态,时序分析

五、何时亚稳态会造成设计失败(When Does Metastability Cause Design Failures? )

        如果数据输出信号在下一个寄存器捕获数据之前解析为有效状态,那么亚稳态信号就不会对系统操作产生负面影响。但是,如果亚稳态信号在到达下一个设计寄存器之前没有解析到低状态或高状态,就会导致系统故障。继续以来看球和山的例子,当球到达山脚下所需的时间(稳定的逻辑值0或1)超过分配的时间(即寄存器的 tco加上任何时间),可能会发生故障。当亚稳态信号在分配的时间内不能解析时,如果目标逻辑观察到不一致的逻辑状态,即不同的目标寄存器捕获亚稳态信号的不同值,就会导致逻辑故障。

六、同步寄存器(Synchronization Registers)

        当信号在不相关或异步时钟域的电路之间传输时,必须在使用之前将该信号同步到新的时钟域。新时钟域中的第一个寄存器充当同步寄存器。

        为了最小化异步信号传输中由于亚稳态而引起的故障,设计者通常在目标时钟域中使用一系列寄存器(同步寄存器链或同步器)来将信号重新同步到新的时钟域。这些寄存器允许一个潜在的亚稳态信号有额外的时间,在设计的其余部分使用该信号之前解析到一个已知的值。同步器寄存器到寄存器路径中可用的时序裕量是亚稳态信号稳定可用的时间,称为可用亚稳态稳定时间。        

        同步寄存器链或同步器被定义为满足以下要求的寄存器序列:

        (1)链中的寄存器都由相同或相位相关的时钟提供时钟
        (2)链中的第一个寄存器由不相关的时钟域驱动,或异步驱动
        (3)每个寄存器只扇出一个寄存器,链中的最后一个寄存器除外  
        同步寄存器链的长度是同步时钟域中满足上述要求的寄存器个数。图 3 显示了长度为 2 的示例同步链,假设输出信号馈送(feed)多个寄存器目标。 

理解FPGA中的亚稳态,那些值得一读的FPGA文档,fpga开发,fpga,亚稳态,时序分析

        请注意,任何异步输入信号或在不相关时钟域之间传输的信号都可以在相对于捕获寄存器的时钟沿的任何点进行传输。因此,设计人员在数据传输完成之前都无法预测信号传输的顺序或目标时钟边沿的数量。例如,如果异步信号总线在时钟域之间传输并同步,则数据信号可能会在不同的时钟沿上转换。结果,总线数据的接收值可能不正确。  

        设计人员必须使用诸如双时钟 FIFO (DCFIFO) 逻辑来存储信号值或握手逻辑等电路来适应这种行为。 FIFO 逻辑使用同步器在两个时钟域之间传输控制信号,然后使用双端口存储器写入和读取数据。 Altera 为该操作提供 DCFIFO 宏功能,其中包括控制信号的各种延迟和亚稳态保护。否则,如果异步信号充当两个时钟域之间的握手逻辑的一部分,则控制信号指示何时可以在时钟域之间传输数据。在这种情况下,同步寄存器用于确保亚稳态不会干扰控制信号的接收,并且在使用数据之前,数据有足够的稳定时间来解决任何亚稳态条件。在一个设计合理的系统中,只要每个信号在使用前解析为稳定值,设计就可以正常工作。 

七、总结

        原文章还有一部分的性能分析和专用解决方案,这里就不做展开了,只要系统中有异步元件,亚稳态就是不可避免的,因此设计的电路首先要减少亚稳态导致错误的发生,其次要使设计对于亚稳态产生的错误不敏感。前者通过同步实现,后者根据不同的设计应用会有不同的处理方法。文章来源地址https://www.toymoban.com/news/detail-702849.html

到了这里,关于理解FPGA中的亚稳态的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 数字设计小思 - D触发器与死缠烂打的亚稳态

    本系列整理数字系统设计的相关知识体系架构,为了方便后续自己查阅与求职准备。在FPGA和ASIC设计中,D触发器是最常用的器件,也可以说是时序逻辑的核心,本文根据个人的思考历程结合相关书籍内容和网上文章,聊一聊D触发器与亚稳态的那些事。 由传输门和两个反相器

    2024年02月03日
    浏览(26)
  • 【Chips】跨时钟域的亚稳态处理、为什么要打两拍不是打一拍、为什么打两拍能有效?

    前言 个人颜色习惯: 黑色加粗:突出显示; 红色:重要; 洋红色:产生的疑问 question; 蓝色:个人思考 或 针对问题的Solution 在学习 “跨时钟域的亚稳态的应对措施” 时,常会看到有三种解决方案: 单bit信号,用: 打两拍 多bit信号,用: 异步FIFO 多bit信号,用: 格雷码

    2024年01月23日
    浏览(38)
  • dubbo+zookeeper面试题,MySQL的 初步认识 - 细节狂魔,值得一读

    CPU CPU 又称 中央处理器,计算机最核心的组件! 是计算机的大脑。 是目前人类科学技术的巅峰!能CPU的技术含量相提并论的,只有氢弹。 存储器 CPU 是用来运算数据,但是计算机除了运算,还能存储数据。 存储数据 就是借助 存储器这样的设备。 而存储器又分两个大类:

    2024年04月10日
    浏览(27)
  • FPGA中亚稳态、异步信号处理、建立和保持时间违例及题目合集

    亚稳态:输入信号的变化发生在时钟有效沿的建立时间和保持时间之间,导致其不满足触发器建立保持时间的时序要求,使得输出有一段时间的不确定状态,这就是亚稳态。

    2023年04月09日
    浏览(26)
  • 【SpringCloudNetflix】一图理解Spring Cloud Netflix解决了那些微服务问题?

    注册中心:Eureka 负载均衡:Ribbon、Feign 服务熔断:Hystrix 服务降级:Hystrix 服务监控:Hystrix Dashboard 路由网关:Zuul 配置中心:Config git资源仓库:Spring Cloud Netflix 参考文章:https://zhuanlan.zhihu.com/p/353806201 坑:依赖版本对应问题 不断学习补充中,如理解有偏差的点,烦请指教!

    2024年02月08日
    浏览(30)
  • 系统设计 - 我们如何通俗的理解那些技术的运行原理 - 第八部分:Linux、安全

    本心、输入输出、结果 编辑:简简单单 Online zuozuo 地址:https://blog.csdn.net/qq_15071263 如果觉得本文对你有帮助,欢迎点赞、收藏、评论 我们使用视觉效果和简单术语来解释复杂的系统是如何运转的,帮助我们理解技术细节 我们使用视觉效果和简单术语来解释复杂的系统是如何

    2024年02月03日
    浏览(28)
  • Web3中的机会,值得尝试

    Web 3.0 是互联网下一次重大发展的新流行语之一。 Web 1.0 存在于 1990 年至 2004 年,当时大多数网站都是静态的并由企业构建。 在这个阶段,看到机会的人购买了域名,然后以更高的价格将它们出售给需要这些域名的企业。 Web 2.0 是用户生成内容和社交媒体的时代。 用户开始通

    2024年02月12日
    浏览(32)
  • 记录Lattice FPGA iCE40 HX8K开发中遇到的那些坑

    使用的芯片时iCE40HX8K,采用的是外接flash方式。 ERROR - Function:CHECK_ID Data Expected: h16 Actual: hFF 网上有人使用其他款FPGA的,说是要先擦除,再编程。经试验,我这不是这个问题。经查资料,每一款flash都有其对应的厂商和ID,应当是编程协议中需要进行识别的,我这款ID的确是0x

    2024年02月10日
    浏览(30)
  • Flutter中的http网络请求,值得一看

    本篇介绍Flutter中网络请求相关api的使用,Flutter在Flutter engine中提供了一个sky_engine开发工具包,其包含了一个_http的库,该库中有封装的http请求相关的各种操作类。本文我们将介绍_http相关操作类的使用和基于_http封装的三方dio网络库的使用。 _http库中的http.dart文件中封装的

    2024年04月11日
    浏览(27)
  • 那些.NET中的连接池

    在.NET中,连接池被广泛用于管理和优化不同类型资源的连接。连接池可以减少建立和关闭连接所需的时间和资源消耗,从而提高了应用程序的性能和响应能力。 System.Net.Http.HttpClient 类用于发送 HTTP 请求以及从 URI 所标识的资源接收 HTTP 响应。 每个HttpClient 实例使用自身的连接

    2024年03月09日
    浏览(31)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包