什么是亚稳态?

电器工程 设计
2022-01-21 10:59:01

来自维基百科文章电子产品中的亚稳态

电子学中的亚稳态是数字电子系统在不稳定平衡或亚稳态下持续无限时间的能力。在亚稳态中,电路可能无法在正常电路操作所需的时间内稳定到稳定的“0”或“1”逻辑电平。结果,电路可能以不可预知的方式运行,并可能导致系统故障。

这似乎是一个很好的定义,但它在应用程序中意味着什么?

从电子设计人员的角度来看,有哪些示例说明何时会发生这种情况以及此类故障应在何处引起关注?

是否有更实用或应用的定义——更具体的定义?

4个回答

快速回答:如果您违反了触发器输入的建立和保持时间,那么输出将在一段时间内不可预测。这种不可预测的输出称为亚稳态(或亚稳态)。

长答案:当输出不可预测时,我的意思是它是不可预测的。它可能很高,可能很低,可能介于两者之间,或者它可能会振荡。在这个亚稳态之后,输出将是高或低,但在它发生之前我们不知道它会走向何方。

然而,它不可预测的时间量在某种程度上是可以预测的。有两个主要因素决定了亚稳态周期的长度:触发器的速度,以及您获得时序的“接近边缘”的程度。

大多数亚稳态时间都很短,尽管长时间的概率不为零。从理论上讲,您可以拥有大约几秒钟的亚稳态时间,尽管这种情况发生的可能性非常罕见。随着触发器速度的增加,平均亚稳态时间减少——所有其他条件都相同。

触发器中有一个“虚构”时间,相对于时钟边沿,您最容易受到亚稳态问题的影响。确切的时间取决于许多因素,例如温度、电压、过程、月相、动物牺牲以及您所属的政党。无论何时,您的数据输入边缘越接近该时间,亚稳态时间就越长。

处理亚稳态的最佳方法是使所有逻辑同步,并且不违反任何设置和保持时间。当然,对于任何复杂的电路来说,这几乎是不可能的。所以我们要做的是尝试限制亚稳态可能成为问题的地方,然后处理这些地方。

正常的方法是“双时钟”数据。意思是,有两个 D 触发器串联,第一个触发器的输出馈送第二个的输入。希望是,如果第一个触发器进入亚稳态,那么亚稳态周期将在它违反第二个的建立/保持时间之前结束。在实践中,这工作得相当好。在超级关键应用程序中,可能会发生一些“三倍时钟”。

亚稳态类似于不稳定平衡。不稳定平衡的一个常见例子是倒立摆如果你能在垂直位置平衡摆锤,那就是稳定状态。但是,如果有任何东西将杠杆推向任一侧(例如气流或地面振动),钟摆将不会自行恢复到垂直位置,它会下落。与常规摆形成对比,如果将其推到一侧,最终将回到垂直状态。

在电气系统中使用稳定的平衡来创建存储元件。不稳定的平衡不会产生良好的存储元素(因为它们很容易失去状态),但通常作为寄生状态存在。

常见的数字存储元件是一对交叉耦合的反相器:

两个反相器连接成一个回路,输出到输入

存储元件有两种稳定状态,一种是左侧节点处于电源电压,右侧节点处于接地状态,另一种处于相反状态。还有一种不稳定状态,其中每个节点都处于某个中间电压。

为了更好地理解不稳定状态是如何产生的,请回忆一下逆变器的传递函数。传递函数图显示了给定输入电压下逆变器的输出电压。

逆变器传递函数

逆变器是非线性的;获得非线性电路近似解的一种简单方法是绘制电路特性图;曲线的交点是解,或者换句话说,是满足电路所有元件电气特性的点。通常这是通过 iv 图完成的,如 Wikipedia 上的这个二极管示例但是,对于逆变器,我们将使用 vv 图来完成。在绘图上覆盖第二个逆变器传递函数(交换轴,因为第二个逆变器是向后的:

背靠背逆变器的叠加传递函数

图有三个交点:一个在 (0, Vs),一个在 (Vs, 0),一个在 (Vs/2, Vs/2)。(Vs/2, Vs/2) 状态是亚稳态的。在任一节点发生小幅扰动后,电路几乎总是会稳定到其中一个稳定状态,而不是返回到 (Vs/2, Vs/2)。

将值写入双反相器存储元件的方法是使用比反相器更强的驱动器将其中一个节点强制为所需值。一种常见的方法是使用传输晶体管:

带传输晶体管的交叉耦合反相器

如果将传输晶体管的栅极连接到时钟,则有一个 D 锁存器(我将省略输出结构)。当时钟为高时,启用传输晶体管,锁存器是透明的——输入直接传递到输出。当时钟为低电平时,锁存器保持先前的值。亚稳态在锁存器采样的那一刻出现。如果锁存器采样时输入是稳定的高电压或低电压,则它会正常工作。但是,如果锁存器采样时输入在 Vs/2 点附近,则锁存器有可能最终处于亚稳态 (Vs/2, Vs/2) 状态。一旦它处于亚稳态,它可以无限期地停留在那里(假设锁存器没有再次计时),但由于它是一个不稳定的平衡,通常会相对较快地发生一些事情以将其从亚稳态中击出。

何时担心亚稳态

如果您的存储元件正在进入亚稳态,那么您至少会失去一些下游逻辑的时序预算。在亚稳态解决之前,逻辑无法执行所需的评估。在最坏的情况下,亚稳态持续存在或通过逻辑传播,下游存储元件也进入亚稳态,或者多个相关存储元件捕获不一致的值。

正确设计和运行的同步逻辑不存在亚稳态问题。时钟周期长于逻辑的评估时间,所有触发器输入在下一个时钟沿稳定(满足设置要求),并且它们都加载一个有效值。

涉及亚稳态的一些常见情况是:

  • 对外部输入进行逻辑采样,例如前面板上的开关,或随时可能转换(欠压、过热)的监控电路的输出。
  • 使用不具有同步关系的多个时钟的逻辑。这通常出现在具有特定时钟要求的 I/O 接口中,但当芯片的不同部分具有不同的性能要求时,也会在内部发生。例如,并非 3 GHz CPU 中的所有逻辑实际上都以 3 GHz 运行。(不过,CPU 并不是一个很好的例子,因为 CPU 中的许多时钟是彼此同步的倍数。)

亚稳态信号是在任意时间长度内以任意模式任意显示为高或低的信号。如果信号直接或间接地馈送到多个门,那么其中一些门可能会“看到”它的高电平,而其他门可能会看到它的低电平。讨厌的东西。

对于具有单个时钟的系统,亚稳态信号通常可以通过两个锁存器来处理。门控时钟出现了一个更棘手的问题。有很多电路(尤其是使用 RS 锁存器)如果不可能实现亚稳态,它们会很好地工作,但如果发生亚稳态,最终会产生欠幅时钟脉冲(这反过来又会导致下游亚稳态)。

顺便说一下,关于亚稳态的另一个要点是:锁存器的传播时间表明,如果满足采样和保持时间,则输出将稳定在其新值。如果不满足建立和保持时间,则无法保证输出是否或何时切换,直到锁存器接收到有效的时钟事件。即使输出“似乎”干净利落地切换,也不能保证它不会自发切换回来。

典型的情况是,如果您违反了同步锁存器的建立/保持时间,这是您在设计 FPGA 时需要注意的问题(我相信 Xilinx 和 Altera 会有关于此的应用说明)。如果一个信号可以在任何随机时间出现,你永远无法确定当你给它计时时,它不会在建立/保持时间窗口规范内改变。可能发生的情况不是锁存器输出在时钟沿之后的指定时间变为高电平或低电平,而是可以在稳定状态之前抖动一段时间。防止这种情况的正常方法是使用 2 级锁存器,根据您的延迟要求和亚稳态概率之间的平衡,使用相同的时钟或延迟或异相时钟。这允许第一锁存时间在第二锁存器锁存稳定状态之前稳定。顺便,这是微控制器必须在内部处理的事情,因为外部 I/O 信号通常与 CPU 时钟异步,因此 I/O 端口通常具有双锁存安排以避免问题,软件无需担心. 模糊地回忆起多年前关于 6502 的问题,其中总线读取在设置/保持时间规范之外更改的数据可能会导致分支到既不是分支目标也不是下一条指令的地址,因为一些内部状态变为亚稳态。该视频显示了一些示例:模糊地回忆起多年前关于 6502 的问题,其中总线读取在设置/保持时间规范之外更改的数据可能会导致分支到既不是分支目标也不是下一条指令的地址,因为一些内部状态变为亚稳态。该视频显示了一些示例:模糊地回忆起多年前关于 6502 的问题,其中总线读取在设置/保持时间规范之外更改的数据可能会导致分支到既不是分支目标也不是下一条指令的地址,因为一些内部状态变为亚稳态。该视频显示了一些示例:http://www.youtube.com/watch?v=tKHCwjWMMyg

打个比方,如果你扔给某人一个球——他们大多要么接住它,要么丢掉/错过它,所以在投掷一段时间后,他们要么拿着它,要么不拿着它。但偶尔他们会摸索一会儿,然后抓住或放下它,所以他们的状态既不是握住也不是丢弃——这就是亚稳态!