概述
写在前面
本文主要翻译自Altera公司的白皮书《Understanding Metastability in FPGAs》,主要讲述了FPGA设计中与亚稳态相关的问题。
正文中,黑字为翻译,浅蓝色字体是我的肤浅理解。如果需要英文原文文章,可以评论留邮箱给我。
概述
亚稳态是一种现象----当信号在不相关或异步时钟域中的电路之间传输时,可能导致包括 FPGA 在内的数字设备发生系统故障。本文描述了 FPGA 中的亚稳态,解释了这种现象发生的原因,并讨论了它是如何导致设计失败的。
由于亚稳态而计算出的平均无故障工作时间 (MTBF) 表明设计人员是否应采取措施减少此类故障发生的机会。本文解释了如何根据各种设计和器件参数计算 MTBF,以及 FPGA 供应商和设计人员如何提高 MTBF的值。通过使用设计技术和优化手段降低亚稳态故障发生的可能性,以此来提高系统可靠性。
亚稳态这种现象是不可避免的,哪怕是在同步电路中也有概率出现,所以作为设计人员,我们能做的是减少亚稳态发生的概率,当然这也是一个稳健的系统所必须拥有的前提条件。
什么是亚稳态?
FPGA 等数字设备中的所有寄存器都定义了信号时序要求----允许每个寄存器在其输入端正确捕获数据并产生输出信号。为确保可靠操作,寄存器的输入必须在时钟边沿之前的最短时间(寄存器设置时间或tsu)和时钟边沿之后的最短时间(寄存器保持时间或 tH)保持稳定。然后寄存器输出在指定的时钟到输出延迟 (tco) 之后可用。如果数据信号转换违反了寄存器的tsu或tH时序要求,则寄存器的输出可能会进入亚稳态。在亚稳态中,寄存器输出在高电平和低电平状态之间徘徊一段时间,这意味着输出转换到定义的高电平或低电平状态被延迟超过指定的tco。
在同步系统中,输入信号必须始终满足寄存器时序要求,因此不会出现亚稳态。当信号在不相关或异步时钟域的电路之间传输时,通常会出现亚稳态问题。在这种情况下,设计人员不能保证信号将满足tsu或tH时序要求,因为信号可以在相对于目标时钟的任何时间到达。但是,并非每个违反寄存器tsu或tH的信号转换都会导致亚稳态输出。寄存器进入亚稳态的可能性和返回稳定状态所需的时间取决于制造设备所使用的工艺技术和操作条件。在大多数情况下,寄存器会很快恢复到稳定的定义状态。
在时钟边缘对数据信号进行采样的寄存器可以看作是一个球落到山上,如图 1 所示。山的侧面代表稳定状态——信号传输后信号的旧数据值和新数据值——山顶代表亚稳态。如果球掉在山顶,它可能会在那里无限期地保持平衡,但实际上它会稍微落到山顶的一侧并滚下山坡。球离山顶越远,它在底部达到稳定状态的速度就越快。
如果数据信号在时钟沿和最小值 tH之后发生传输,则类似于将球落在山的“旧数据值”一侧,并且输出信号保持在该时钟传输的原始值.当寄存器的数据输入在时钟边沿和最小值 tsu之前发生传输,并保持在最小值 tH之后,这类似于将球落在山的“新数据值”一侧,并且输出足够快地达到稳定的新状态以满足定义的 tco时间。但是,当寄存器的数据输入违反 tsu或 tH时,就类似于将球扔到山上。如果球落在山顶附近,球需要很长时间才能到达底部,这会增加从时钟传输到稳定输出的延迟,超出定义的tco。
图 2 说明了亚稳态信号。输入信号在时钟信号转换时从低状态转换为高状态,这违反了寄存器的 tsu要求。数据输出信号示例从低状态开始并进入亚稳态,在高和低状态之间徘徊。信号输出 A 解析为输入数据的新逻辑 1 状态,输出 B 返回数据输入的原始逻辑 0 状态。在这两种情况下,到定义的 1 或 0 状态的输出转换都会延迟超过寄存器指定的 tco。
简单来讲,一旦不满足寄存器的建立时间和保持时间要求就会发生亚稳态。亚稳态在一段时间内是一个不确定的值,在一段时间tco后,会固定在一个稳定的值,但这个值可能是0,也可能是1。
亚稳态何时会导致设计失败?
如果数据输出信号在下一个寄存器捕获数据之前解析为有效状态,则亚稳态信号不会对系统操作产生负面影响。但是,如果亚稳态信号在到达下一个设计寄存器之前没有解析为低或高状态,则可能导致系统失败。继续球和山的类比,当球到达山底所需的时间(稳定的逻辑值 0 或 1)超过分配的时间(即寄存器的 tco加上任何时间)时,可能会发生故障。当亚稳态信号未在分配的时间内解决时,如果目标逻辑观察到不一致的逻辑状态,即不同的目标寄存器为亚稳态信号捕获不同的值,则可能导致逻辑故障。
亚稳态所带来的不定态,如果不采取手段将其消除,在会传播到后续电路,影响其输出,从而造成系统故障。
同步寄存器
当信号在不相关或异步时钟域的电路之间传输时,必须先将该信号同步到新的时钟域,然后才能使用它。新时钟域中的第一个寄存器用作同步寄存器。
为了最大限度地减少异步信号传输中由于亚稳态引起的故障,电路设计人员通常使用目标时钟域中的一系列寄存器(同步寄存器链或同步器)将信号重新同步到新的时钟域。这些寄存器允许潜在的亚稳态信号在信号用于设计的其余部分之前解析为已知值的额外时间。同步器寄存器到寄存器路径中可用的时序裕量是亚稳态信号稳定可用的时间,称为可用亚稳态稳定时间。
同步寄存器链或同步器被定义为满足以下要求的寄存器序列:
- 链中的寄存器都由相同或相位相关的时钟提供时钟
- 链中的第一个寄存器由不相关的时钟域驱动,或异步驱动
- 每个寄存器只扇出一个寄存器,链中的最后一个寄存器除外
同步寄存器链的长度是同步时钟域中满足上述要求的寄存器个数。图 3 显示了长度为 2 的示例同步链,假设输出信号馈送(feed)多个寄存器目标。
请注意,任何异步输入信号或在不相关时钟域之间传输的信号都可以在相对于捕获寄存器的时钟沿的任何点进行传输。因此,设计人员无法预测信号传输的顺序或目标时钟边沿的数量,直到数据传输完成。例如,如果异步信号总线在时钟域之间传输并同步,则数据信号可能会在不同的时钟沿上转换。结果,总线数据的接收值可能不正确。
设计人员必须使用诸如双时钟 FIFO (DCFIFO) 逻辑来存储信号值或握手逻辑等电路来适应这种行为。 FIFO 逻辑使用同步器在两个时钟域之间传输控制信号,然后使用双端口存储器写入和读取数据。 Altera 为该操作提供 DCFIFO 宏功能,其中包括控制信号的各种延迟和亚稳态保护。否则,如果异步信号充当两个时钟域之间的握手逻辑的一部分,则控制信号指示何时可以在时钟域之间传输数据。在这种情况下,同步寄存器用于确保亚稳态不会干扰控制信号的接收,并且在使用数据之前,数据有足够的稳定时间来解决任何亚稳态条件。在一个设计合理的系统中,只要每个信号在使用前解析为稳定值,设计就可以正常工作。
两级同步的方法是目前最为广泛使用的方法,当然也可以使用三级或者多级同步寄存器同步,只不过要多付出一些时序开销。
计算亚稳态 MTBF
亚稳态导致的平均故障间隔时间或 MTBF 提供了对亚稳态可能导致设计失败的实例之间的平均时间的估计。更高的 MTBF(例如亚稳态故障之间的数百或数千年)表明设计更稳健。所需的 MTBF 取决于系统应用场景。例如,与消费视频显示设备相比,生命攸关的医疗设备显然需要更高的 MTBF。增加亚稳态 MTBF 可降低信号传输导致器件出现任何亚稳态问题的可能性。
可以使用有关设计和器件特性的信息来计算特定信号传输或设计中所有传输的亚稳态 MTBF。同步器链的 MTBF 使用以下公式和参数计算:
C1和 C2常数取决于器件工艺和操作条件。fCLK and fDATA参数取决于设计规范:fCLK 是接收异步信号的时钟域的时钟频率,fDATA是异步输入数据信号的翻转频率。更快的时钟频率和更快的数据切换会降低(或恶化)MTBF。 tMET参数是可用的亚稳态建立时间,或超出寄存器 tco的可用时序裕量,用于将潜在亚稳态信号解析为已知值。同步链的tMET是链中每个寄存器的输出时序裕量的总和。
总体设计 MTBF可以由设计中每个同步器链的 MTBF 确定。同步器的故障率为 1/MTBF,整个设计的故障率通过将每个同步器链的故障率相加来计算,如下所示:
设计亚稳态 MTBF 为 1/failure_rate设计。
使用 Altera®PGA 的设计人员不必手动执行这些计算,因为 Altera 的 Quartus®II 软件在工具中集成了亚稳态参数。 Quartus II 软件报告已识别同步链的 MTBF,并提供整体设计亚稳态 MTBF。
从MTBF的公式中也能看到,随着系统时钟频率的上升,同时也对系统的鲁棒性带来了挑战。所以才说速率越高,设计越容易出问题啊!
参数化稳态常数
FPGA 供应商可以通过参数化 FPGA 的亚稳态来确定 MTBF 方程中的常数参数。这种表征的困难在于典型 FPGA 设计的 MTBF通常以年为单位,因此在实际操作条件下使用实际设计测量亚稳态事件之间的时间是不切实际的。为了表征器件特定的亚稳态常数,Altera 使用了一个测试电路,该电路设计为具有较短的、可测量的 MTBF,如图 4 所示。
在本设计中,clka 和 clkb 是两个不相关的时钟信号。输入到同步器的数据会在每个时钟周期切换(高fDATA)。同步器的长度为 1,因为单个同步寄存器馈送两个目标寄存器。目标寄存器在一个时钟周期和一个半时钟周期后捕获同步器的输出。如果信号在下一个时钟沿解析之前进入亚稳态,则电路检测到采样信号不同,并输出错误信号。
该电路检测在半时钟周期内发生的大部分亚稳态事件。 该电路在整个设备中复制以减少任何局部变化的影响,并且每个实例都经过连续测试以消除任何噪声耦合。 Altera 测量每个测试结构一分钟并记录错误计数。测试在不同的时钟频率下进行,MTBF 与tMET结果以对数刻度绘制。 C2常数对应于实验结果趋势线的斜率,C1常数线性缩放该线。
提高亚稳态 MTBF
由于 MTBF 方程中的指数因子etMET/C2, tMET/C2 项对 MTBF 计算的影响最大。因此,可以通过增强架构来优化器件的C2常数或优化设计以增加同步寄存器中的tMET来提高亚稳态。
FPGA 架构增强功能
MTBF方程中的亚稳态时间常数C2取决于与用于制造器件的工艺技术相关的各种因素,包括晶体管速度和电源电压。更快的工艺技术和更快的晶体管使亚稳态信号能够更快地解析。由于 FPGA 已从 180 纳米工艺迁移到 90 纳米,晶体管速度的提高通常会提高亚稳态 MTBF。因此,亚稳态一直不是 FPGA 设计人员关注的主要问题。 然而,随着电源电压随着工艺几何尺寸的减小而降低,电路的阈值电压不会成比例地降低。当寄存器进入亚稳态时,其电压约为电源电压的二分之一。随着电源电压的降低,亚稳态电压电平更接近电路中的阈值电压。当这些电压靠得更近时,电路的增益会降低,寄存器需要更长的时间才能摆脱亚稳态。随着 FPGA 进入 65 纳米及更低的工艺几何尺寸,电源电压为 0.9V 及更低,阈值电压的考虑变得比晶体管速度的提高更为重要。 因此,除非供应商设计 FPGA 电路来提高亚稳态鲁棒性,否则亚稳态 MTBF 通常会变得更糟。 Altera 使用 FPGA 架构的亚稳态分析来优化电路以提高亚稳态 MTBF。 Altera 40-nm Stratix®IV FPGA 架构的架构改进和新器件开发通过降低 MTBF C2常数提高了亚稳态稳健性结果。
设计优化
MTBF 方程中的指数因子意味着设计相关的tMET值的增加会以指数方式增加同步器的MTBF。例如,如果给定设备和一组操作条件的 C2常数为 50 ps,则tMET仅增加 200 ps 会使指数变为 200/50,并将 MTBF 增加因子 e( 4,或超过 50 倍,而 400 ps 的增加将 MTBF 乘以 e8,或近 3000 倍。 此外,MTBF 最差的链对设计 MTBF 有很大影响。例如,考虑具有十个同步器链的两种不同设计。一种设计有 10 个 MTBF 相同的 10,000 年链,另一种设计有 9 个 MTBF 为 100 万年的链,但有 1 个 MTBF 为 100 年的链。设计的故障率是每个链的故障率之和,其中故障率为 1/MTBF。第一个设计的亚稳态故障率为 10 链 × 1/10,000 年 = 0.001,因此设计 MTBF 为 1000 年。第二种设计的故障率为 9 条链 × 1/1,000,000 + 1/100 = 0.01009,设计 MTBF 约为 99 年——仅略低于最差链的 MTBF。
这不就是木桶原理嘛----最短的那块木板决定了木桶能装多少水。可以看到在一个系统中,最差MTBF的那部分能对整体造成多大的影响。
换句话说,一个不好的设计或实施不当的同步链支配了设计的整体亚稳态 MTBF。由于这种影响,对所有异步信号和时钟域传输执行亚稳态分析非常重要。设计人员或工具供应商可以通过改进具有最差 MTBF 的同步器链的tMET来对设计 MTBF 产生非常重要的影响。
为了提高亚稳态 MTBF,设计人员可以通过在同步寄存器链中添加额外的寄存器级来增加tMET。每个额外的寄存器到寄存器连接上的时序裕量被添加到tMET。设计人员通常使用两个寄存器来同步信号,但 Altera 建议使用三个寄存器的标准以获得更好的亚稳态保护。然而,添加一个寄存器会为同步逻辑增加一个额外的延迟阶段,因此设计人员必须评估这是否可以接受。
如果设计使用具有独立读写时钟的 Altera FIFO 宏功能跨时钟域,设计人员可以增加亚稳态保护(和延迟)以获得更好的 MTBF。 Altera 的 Quartus II MegaWizard™Plug-In Manager 提供了一个选项来选择具有三个或更多同步级的增强亚稳态保护选项。
Quartus II 软件还提供业界领先的亚稳态分析和优化功能,以增加同步寄存器链上的tMET。识别出同步器后,软件将同步寄存器放置得更近,以增加同步器链中可用的输出时序裕量,然后报告亚稳态 MTBF。
结论
当信号在不相关或异步时钟域的电路之间传输时,可能会出现亚稳态。亚稳态故障之间的平均时间与器件工艺技术、设计规范和同步逻辑中的时序裕量有关。FPGA 设计人员可以通过增加tMET的设计技术来提高系统可靠性并增加亚稳态 MTBF,这些设计技术会在同步寄存器中增加时序裕量。 Altera 对其 FPGA 的 MTBF进行了参数化,并通过器件技术改进提高了亚稳态 MTBF。使用 Altera FPGA 的设计人员可以利用 Quartus II 软件功能来报告其设计的亚稳态 MTBF,并优化设计布局以增加 MTBF。
最后
以上就是复杂豌豆为你收集整理的FPGA中亚稳态的理解(Understanding Metastability in FPGAs)写在前面概述什么是亚稳态?亚稳态何时会导致设计失败?同步寄存器计算亚稳态 MTBF参数化稳态常数 提高亚稳态 MTBF结论的全部内容,希望文章能够帮你解决FPGA中亚稳态的理解(Understanding Metastability in FPGAs)写在前面概述什么是亚稳态?亚稳态何时会导致设计失败?同步寄存器计算亚稳态 MTBF参数化稳态常数 提高亚稳态 MTBF结论所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复