当前位置: 首页 > article >正文

【电路笔记 信号】Metastability 平均故障间隔时间(MTBF)公式推导:进入亚稳态+退出亚稳态+同步器的可靠性计算

  • 这是一个简化的电路分析模型。图2中的典型触发器包括主锁存器、从锁存器和去耦反相器(这个结构类似 主从边沿触发器)。

在这里插入图片描述

  • 在亚稳态中,主锁存器的节点A、B的电压电平大致在逻辑“1”(VDD)和“0”(GND)之间。确切的电压电平取决于晶体管尺寸(通过设计以及由于任意工艺变化),并且对于两个都不一定相同。然而,为了简单起见,假设它们是( V A = V B = V D D / 2 V_A=V_B=V_{DD}/2 VA=VB=VDD/2)。

1.1 Entering Metastability 进入亚稳态

  • 主锁如何进入亚稳态?考虑图2中左侧的触发器。假设时钟为低,节点A处于“1”,输入D从“0”变为“1”。结果,节点a下降,节点B上升。当时钟上升时,它会断开节点A的输入并关闭A-B环路。如果A和B恰好在亚稳态水平附近,那么它们需要很长时间才能偏离合法的数值,如下所示。
    在这里插入图片描述
  • 事实上,如果触发器的输出变化晚于标称时钟到Q传播延迟(tpCQ),那么触发器一定是亚稳态的。我们可以通过调整时钟和数据的相对时序来模拟效果,直到我们获得所需的结果,如图3所示。顺便说一句,触发器的其他错误定时输入(异步复位、清除,甚至由于错误的时钟门控导致时钟脉冲太短)也可能导致亚稳态。
  • 当时钟与数据的时序关系未知时,我们使用概率来评估锁存器进入亚稳态的可能性(这里我们暂时只关注主锁存器,稍后会讨论整个触发器)。异步输入的最简单模型假设数据可能在任何时刻发生变化,且变化具有均匀分布。我们可以定义一个短时间窗口 T W T_W TW,围绕时钟的采样边沿(类似于“建立时间”和“保持时间”),如果数据在该窗口内发生变化,锁存器可能会进入亚稳态(即触发器输出可能会晚于 tpCQ 改变)。如果已知数据在某个时钟周期内确实发生了变化,并且该变化在时钟周期 T C T_C TC 内均匀分布,则进入亚稳态的概率,即数据在 TW 窗口内发生变化的概率为 T W / T C = T W ∗ F C T_W/T_C = T_W*F_C TW/TC=TWFC。然而,数据并非每个周期都发生变化;如果数据变化的频率为 F D F_D FD,那么进入亚稳态的速率将为 R a t e = F D F C T W Rate = F_DF_CT_W Rate=FDFCTW。例如,如果 F C F_C FC = 1GHz, F D F_D FD = 100MHz, T W T_W TW = 20ps,那么 Rate = 2,000,000 次/秒。事实上,这个“脆弱”的锁存器很容易进入亚稳态,每微秒两次,或者每 500 个时钟周期一次!注意,我们将概率转化为速率——这是我们下面需要的。

1.2 Exiting Metastability 退出亚稳态

  • 现在我们知道锁存器进入亚稳态的频率,接下来要探讨的是锁存器从亚稳态中退出的速度。在亚稳态中,两个反相器处于其线性传递函数区域,可以通过(小信号)模型将其视为(负)放大器(见图 4),每个反相器通过其输出电阻 R 驱动一个电容性负载 C,该负载包括另一个反相器的输入电容以及连接到该节点的其他外部负载。通常,主锁存器在时钟周期的第二阶段之前会从亚稳态中解决;但在极少数情况下,当主锁存器在亚稳态发生后的恰好半个时钟周期内解决时,从锁存器可能会因此进入亚稳态(其输入恰好在时钟断开输入的时刻发生变化,进而重复了关于主锁存器的情况)。
    在这里插入图片描述
  • 通过一阶微分方程来建模锁存器退出亚稳态的过程。

在这里插入图片描述

  • 模型涉及到两个一阶微分方程,分别描述了电压 V A V_A VA V B V_B VB 随时间的变化:
  1. 对于电压 V A V_A VA
    d V A d t = 1 R ( − A V B − V A ) ⋅ 1 C \frac{dV_A}{dt} = \frac{1}{R} \left( -AV_B - V_A \right) \cdot \frac{1}{C} dtdVA=R1(AVBVA)C1

  2. 对于电压 V B V_B VB
    d V B d t = 1 R ( − A V A − V B ) ⋅ 1 C \frac{dV_B}{dt} = \frac{1}{R} \left( -AV_A - V_B \right) \cdot \frac{1}{C} dtdVB=R1(AVAVB)C1

  • 将第二个方程从第一个方程中减去,来合并这两个方程:

d V A d t − d V B d t = ( V B − V A ) + A ( V A − V B ) R \frac{dV_A}{dt} - \frac{dV_B}{dt} = \frac{ (V_B - V_A)+A (V_A - V_B) }{R} dtdVAdtdVB=R(VBVA)+A(VAVB)

将右侧的项整理一下:

C ( d V A d t − d V B d t ) = V B − V A R C(\frac{dV_A}{dt} - \frac{dV_B}{dt}) = \frac{V_B - V_A}{R} C(dtdVAdtdVB)=RVBVA
C d V A − d V B d t = V B − V A R C\frac{dV_A- {dV_B}}{dt} = \frac{V_B - V_A}{R} CdtdVAdVB=RVBVA

  • V A − V B = V V_A - V_B = V VAVB=V
  • τ = R C A − 1 \tau = \frac{RC}{A-1} τ=A1RC

V = τ d V d t V=\tau \frac{dV}{dt} V=τdtdV

V ( t ) = K e − t / τ V(t) = K e^{-t / \tau} V(t)=Ket/τ

其中, K K K 是由初始条件(即亚稳态时的电压)决定的常数。

解释

  • 时间常数 τ \tau τ:它是电路的特征时间,决定了电压恢复到稳定状态的速度。较大的 $ \tau $ 意味着恢复时间较长。
  • 指数衰减 e − t / τ e^{-t / \tau} et/τ:表示电压随着时间逐渐恢复,直到达到稳定状态。
  • 常数 K K K:它由初始电压条件决定,反映了系统的初始状态。

这个模型描述了锁存器如何从亚稳态中退出。时间常数 τ \tau τ 控制了锁存器恢复的速度,而恢复过程是一个指数衰减过程。

  • 由于 A / R ≈ g m A/R ≈ g_m A/Rgm,我们通常估计 τ = C / g m τ = C/g_m τ=C/gm;主节点上的更高电容负载或较低的反相器增益会妨碍亚稳态的解析度。主锁存器对电容具有指数级的敏感性,不同的锁存电路通常在驱动的电容负载上有所不同。过去,τ 在技术发展过程中表现出较好的可扩展性,但最近有新的证据表明,在未来的技术中,τ 可能会恶化而不是改善。

  • 因此,电压差 V 展现出一种“爆炸”现象(就像任何其他以指数速度增长的物理量,例如化学爆炸)。这一行为最能通过锁存器的电路仿真来展示,从一个微小的电压差 V0=1μV 开始(见图5)。两个节点的电压曲线似乎并没有很快变化(更不用说爆炸了)。然而,通过观察图6中电压差 V 的对数,我们可以看到完全不同的情况。从初始电压 V0 到约 V1=0.1V 或 log(V1) = –1(V1 大约是晶体管的阈值电压 VTH)这段直线经历了五个数量级的指数增长速率,表明“爆炸”实际上发生在微观层面。当电压差接近晶体管的阈值电压时,锁存器的工作模式从两个互联的小信号线性放大器(如图4所示)变为典型的、更慢的数字电路。我们说一旦电压 V 的增长速率不再是指数级的(图6中的对数曲线趋于平缓),亚稳态就得到了分辨。
    在这里插入图片描述
    在这里插入图片描述
    这段话介绍了如何通过对数图表来估算时间常数 τ \tau τ,并且讨论了现实中影响 τ \tau τ 的一些因素。

使用对数图估算 τ \tau τ

在对数图表上,锁存器的电压变化可以近似为一条直线。通过取这条直线上的两个任意电压值 V x V_x Vx V y V_y Vy,并计算它们之间的比值,我们可以估算出时间常数 τ \tau τ。这个过程如下:

  1. 假设电压 V V V 随时间 t t t 指数衰减,可以表示为:
    V ( t ) = K e − t / τ V(t) = K e^{-t/\tau} V(t)=Ket/τ
    其中, K K K 是常数,表示初始电压。

  2. 取时间 t x t_x tx t y t_y ty 两个时刻的电压 V x V_x Vx V y V_y Vy,有:
    V x = K e − t x / τ , V y = K e − t y / τ V_x = K e^{-t_x/\tau}, \quad V_y = K e^{-t_y/\tau} Vx=Ketx/τ,Vy=Kety/τ

  3. 对两者取自然对数:
    ln ⁡ ( V x ) = ln ⁡ ( K ) − t x τ , ln ⁡ ( V y ) = ln ⁡ ( K ) − t y τ \ln(V_x) = \ln(K) - \frac{t_x}{\tau}, \quad \ln(V_y) = \ln(K) - \frac{t_y}{\tau} ln(Vx)=ln(K)τtx,ln(Vy)=ln(K)τty

  4. 通过这两个方程,可以得到:
    ln ⁡ ( V x V y ) = t y − t x τ \ln\left(\frac{V_x}{V_y}\right) = \frac{t_y - t_x}{\tau} ln(VyVx)=τtytx

    从而可以解出时间常数 τ \tau τ
    τ = t y − t x ln ⁡ ( V x / V y ) \tau = \frac{t_y - t_x}{\ln(V_x / V_y)} τ=ln(Vx/Vy)tytx

这是一种简单的方法,可以通过对数图来估算时间常数 τ \tau τ

影响 τ \tau τ 的因素

在实际电路中,影响 τ \tau τ 的因素有很多:

  1. 过程变化:在某些电路中, τ \tau τ 可能会在亚稳态解析的过程中发生变化,这使得图线不再是完全直线。因此,模拟得到的 τ \tau τ 值可能会比实际值小。

  2. 低供电电压:特别是当亚稳态电压接近阈值电压时,跨导 g m g_m gm 会显著下降,导致 τ \tau τ 增大。

  3. 温度变化:非常高或极低的温度也会使得 τ \tau τ 增加几个数量级。

这些因素使得同步研究成为一个有趣的挑战,并且具有实际意义。它们可能导致预期的恢复时间(即 τ \tau τ)比模拟计算的结果大得多。因此,在设计高速数字电路时,考虑到这些实际影响至关重要。

  • 亚稳态退出的时间 t m t_m tm 与电压 V 0 V_0 V0 V 1 V_1 V1 之间的关系:

退出亚稳态的时间 t m t_m tm

  • 如果亚稳态的开始电压是 V 0 V_0 V0,结束电压是 V 1 V_1 V1,那么从亚稳态退出的时间 t m t_m tm 可以通过以下公式来表示:

t m = τ ln ⁡ ( V 0 V 1 ) t_m = \tau \ln\left( \frac{V_0}{V_1} \right) tm=τln(V1V0)

其中:

  • τ \tau τ 是电路的时间常数(如之前所讨论的)。
  • V 0 V_0 V0 是亚稳态开始时的电压。
  • V 1 V_1 V1 是亚稳态结束时的电压。

这个公式表明,从亚稳态退出的时间 t m t_m tm 依赖于初始电压 V 0 V_0 V0,而与固定的结束电压 V 1 V_1 V1 无关。

解释

  • 对数关系:退出亚稳态的时间 t m t_m tm 与初始电压 V 0 V_0 V0 成对数关系。也就是说, V 0 V_0 V0 越大,退出亚稳态所需的时间 t m t_m tm 就越长。
  • 电压范围:电压 V 0 V_0 V0 V 1 V_1 V1 之间的比值决定了退出亚稳态的速率。随着 V 0 V_0 V0 的增大,退出的时间 t m t_m tm 也会增大,但这种增大是对数性质的。
  • 图示验证:如图 7 所示,这个关系在图形上是清晰可见的。随着 V 0 V_0 V0 的增大,所需的时间 t m t_m tm 会明显增加,但增加的速率减缓。

总结

  • 从亚稳态退出的时间 t m t_m tm 取决于开始时的电压 V 0 V_0 V0,并且它是对数关系。
  • 固定的结束电压 V 1 V_1 V1 t m t_m tm 的影响较小,主要影响的是 V 0 V_0 V0
  • 这种对数关系意味着在实际电路中,如果初始电压较高,系统可能需要更长的时间来从亚稳态恢复。

在这里插入图片描述

  • Figure 7: Simulations of metastability resolution with the starting voltage difference varying from 100mV (left) to 10pV (right); the lower the starting voltage, the longer it takes to resolve. The top chart shows voltage of the two latch nodes (the chart for V0=1\mu V is same as in Figure 5); the bottom chart shows the log of their difference (the line starting at –6 is the same as in Figure 6)

  • © IEEE 2011 6 To be published in IEEE Design & Test

  • 进一步探讨了锁存器进入亚稳态后的行为,特别是亚稳态持续时间的概率性质以及影响初始电压 V 0 V_0 V0 的因素。

初始电压对亚稳态持续时间的影响

  • V 0 = V 1 V_0 = V_1 V0=V1,即亚稳态初始电压与结束电压相等,亚稳态的持续时间 t m t_m tm 为零(见图 7 中的最左侧曲线)。这种情况表示亚稳态已经在初始时刻就已经解决。

  • V 0 = 0 V_0 = 0 V0=0,也就是锁存器输入电压完全为零,理论上我们需要无限长的时间才能退出亚稳态。但这种情况非常不可能发生,因为实际电压不会完全为零。

亚稳态的实际过程

对于一些流行的说法,“亚稳态时,锁存器的两个节点会卡在中间,最终会通过某种随机过程摆脱困境”,需要谨慎对待。这类说法过于简化了亚稳态的过程。

亚稳态的实际初始电压 V 0 V_0 V0 受两个因素的影响:

  1. 时钟采样边沿的精确时刻:即时钟的采样边沿究竟在什么时刻锁存器输入被阻塞,并关闭了锁存器。此时的实际电压值是 V 0 V_0 V0

  2. 噪声的影响:噪声,特别是热噪声,可能会在电压上产生小的波动。例如,热噪声通常会产生 1μV 到 1mV 之间的电压变化,这个噪声值远高于图 7 右侧极端情况下的电压。

随机性与统计估算

由于我们无法精确地知道初始电压 V 0 V_0 V0 的具体值,因此我们无法确定锁存器将保持亚稳态的确切时间。但我们可以进行统计估算

  • 概率分析表明,假设锁存器在时间 t = 0 t = 0 t=0 时进入亚稳态,那么它在 t > 0 t > 0 t>0 时保持亚稳态的概率为:
    P ( t ) = e − t / τ P(t) = e^{-t/\tau} P(t)=et/τ
    这个概率随着时间的推移指数衰减。

  • 换句话说,即使锁存器进入了亚稳态,它也会相当快地恢复稳定。具体来说,随着时间的推移,亚稳态持续的概率会迅速降低。

结论

  • 初始电压 V 0 V_0 V0 对亚稳态的持续时间有重要影响,但由于噪声和时钟采样的随机性,我们无法精确预测亚稳态的持续时间。
  • 概率分析显示,即使锁存器进入亚稳态,它通常也会很快恢复,恢复时间是由时间常数 τ \tau τ 决定的,且恢复过程遵循指数衰减规律。
  • 这些结果表明,虽然亚稳态的出现是一个不确定过程,但在大多数情况下,它不会持续很长时间。

1.3 Synchronization Reliability 同步器的可靠性

  • 这一切引导我们开始计算同步器的可靠性。如果一个锁存器接收异步输入,我们无法保证它永远不会进入亚稳态——事实上,我们已经知道,在上述示例中,锁存器肯定会以 ( F_D \cdot F_C \cdot T_W ) 的高频率(2M/s)进入亚稳态!相反,我们可以计算它因此导致失败的可靠性。同步器的整个目的(如下所述)就是最小化这种失败的概率。因此,我们现在可以最终定义和估算同步失败:我们希望亚稳态在同步周期 ( S ) 内得到解决,以便我们可以安全地采样锁存器(或触发器)的输出。失败意味着一个触发器(i)在时钟的采样边缘之后变得亚稳态,并且(ii)在 ( S ) 时间后仍然处于亚稳态。由于这两个事件是独立的,我们可以将它们的概率相乘:

p ( f a i l u r e s ) = p ( e n t e r M S ) × p ( t i m e t o e x i t > S ) = T W F C × e − S / τ p(failures)=p(enter MS) \times p(time to exit > S)=T_WF_C \times e^{-S/\tau} p(failures)=p(enterMS)×p(timetoexit>S)=TWFC×eS/τ

  • 现在我们可以利用上面计算的进入亚稳态速率的表达式,推导出预期失败的速率:

R a t e ( f a i l u r e s ) = T W F C F D × e − S / τ Rate(failures)=T_WF_CF_D\times e^{-S/\tau} Rate(failures)=TWFCFD×eS/τ

  • 故障率的倒数就是平均故障间隔时间(MTBF):
    M T B F = e S / τ T W F C F D MTBF = \frac{e^{S/\tau}}{T_WF_CF_D} MTBF=TWFCFDeS/τ

CG

  • 主要翻译自 Metastability and Synchronizers A Tutorial

  • William J. Dally and John W. Poulton, Digital Systems Engineering, Cambridge University Press, 1998

  • ASIC 中的异步时序设计,2004

  • https://www.doc88.com/p-311748560902.html?s=rel&id=4

  • Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog

  • 跨时钟域处理方法总结–最终详尽版

  • 精确 MTBF 计算公式

  • https://reliabilityacademy.com/wp-content/uploads/2021/12/Simple-guide-to-MTBF-1.pdf

  • http://www.ai.mit.edu/courses/6.915/6.915.html

  • Practical design for transferring signals between clock domains

  • A Scalable Dual-Clock FIFO for Data Transfers Between Arbitrary and Haltable Clock Domains

  • A High Performance and Robust FIFO Synchronizer-Interface for Crossing Clock Domains in SFQ Logic

  • 你真的懂2-flop synchronizer吗-- CDC的那些事(2)

  • 更多零件 --> 更低的 MTBF,更少的零件 --> 更高的 MTBF

    • https://trilobyte.com/pdf/golson_snug14.pdf
    • 19 Theoretical and experimental behavior of synchronizers operating in the metastable region.
  • https://www.ti.com/lit/an/scza004a/scza004a.pdf

  • https://my.ece.utah.edu/~kstevens/mscas/mscas12-session2a.pdf

  • Product Level MTBF Calculation

  • MTBF of a Multi-Synchronizer System on Chip

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

  • Understanding Metastability in FPGAs

    • https://web.stanford.edu/class/ee183/handouts/synchronization_pres.pdf
      在这里插入图片描述
  • 注:

  • 1. 您不能将多位数据与 FF 链同步。数据可能会变得不一致,因为每个位只能自行同步。它在特殊条件下工作,例如递增变化的灰色编码数字,每个 clock cycle 少于 1 个计数。所以讨论显然是关于单比特二进制数据。

  1. 来自不相关 clock domain 的二进制数据,在每个 clock cycle上发生变化,只有一个 ‘X’ 结果。没有同步器可以提供帮助。

http://www.kler.cn/a/451162.html

相关文章:

  • 【数据库原理】数据增删改查,DML、单表查询、多表连接查询
  • 聊天社交管理系统 Java 源码,构建个性化社交空间
  • LeetCode 热题 100_LRU 缓存(35_146_中等_C++)(哈希表 + 双向链表)(构造函数声明+初始化列表=进行变量初始化和赋值)
  • 使用 perf 工具进行性能分析
  • 基于Springboot的在线问卷调查系统【附源码】
  • Linux的mmap
  • php时间strtotime函数引发的问题 时间判断出错
  • LabVIEW软件开发的未来趋势
  • 【前端】详解前端三大主流框架:React、Vue与Angular的比较与选择
  • 老旧小区用电安全保护装置#限流式防火保护器参数介绍#
  • Spring Boot 3.4新特性:RestClient和RestTemplate的重大更新详解
  • Python 标准库:random——随机数
  • 【Chrome Extension】一、CSDN计时扩展设计
  • Swift Type Erasure(类型擦除)
  • 【docker】pull 镜像异常
  • Redis--通用命令学习
  • centos权限大集合,覆盖多种权限类型,解惑权限后有“. + t s”问题!
  • 技术与教育的融合:构建现代成绩管理系统
  • 4、数据结构与算法解析(C语言版)--栈
  • PH热榜 | 2024-12-24
  • 提高保养效率:4S店预约系统的设计与开发
  • SpringBoot简单使用Stomp
  • 深入理解批量归一化(BN):原理、缺陷与跨小批量归一化(CmBN)
  • Redis数据库操作备份
  • 手机外观边框缺陷视觉检测智慧方案
  • Hive 部署