从维基百科的文章“ 电子中的亚稳态”:
电子学中的亚稳定性是数字电子系统在不稳定的平衡或亚稳定状态下持续无限制时间的能力。在亚稳态下,电路可能无法在适当的电路操作所需的时间内稳定到稳定的“ 0”或“ 1”逻辑电平。结果,该电路可能以不可预测的方式工作,并可能导致系统故障。
这似乎是一个很好的定义,但是在应用程序中这意味着什么呢?
从电子设计人员的角度来看,什么时候可能发生这种情况?这种故障应该在哪里关注?
有没有更务实的或适用的定义-更具体的术语?
从维基百科的文章“ 电子中的亚稳态”:
电子学中的亚稳定性是数字电子系统在不稳定的平衡或亚稳定状态下持续无限制时间的能力。在亚稳态下,电路可能无法在适当的电路操作所需的时间内稳定到稳定的“ 0”或“ 1”逻辑电平。结果,该电路可能以不可预测的方式工作,并可能导致系统故障。
这似乎是一个很好的定义,但是在应用程序中这意味着什么呢?
从电子设计人员的角度来看,什么时候可能发生这种情况?这种故障应该在哪里关注?
有没有更务实的或适用的定义-更具体的术语?
Answers:
快速解答:如果您违反了触发器输入的建立和保持时间,那么输出将在一定时间内无法预测。这种不可预测的输出称为亚稳态(或亚稳定性)。
长答案:当输出不可预测时,我的意思是它不可预测。它可能很高,也可能很低,可能介于两者之间,也可能振荡。在此亚稳周期之后,输出将为高电平或低电平,但是直到发生这种情况,我们才知道它会走哪条路。
但是,不可预测的时间是可以预测的。有两个主要因素决定亚稳周期的长度:触发器的速度以及获得时序的“接近边缘”程度。
尽管具有长时间的可能性非零,但大多数亚稳态时间都非常短。从理论上讲,您可能会有几秒钟的亚稳态时间,尽管这种情况发生的几率非常罕见。随着触发器速度的增加,平均亚稳态时间会减少-所有其他条件都相同。
相对于时钟沿,触发器中有一个“虚构”的时间,您最容易受到亚稳性问题的影响。确切的说,这取决于许多因素,例如温度,电压,过程,月相,动物的牺牲以及您所属的政党。无论何时,您的数据输入边沿到该时间越近,亚稳态时间就越长。
处理亚稳定性的最佳方法是使所有逻辑同步,而不违反任何建立和保持时间。当然,对于任何复杂的电路,这都是很难甚至不可能的。因此,我们要做的是尝试限制可能会引起亚稳性的地方,然后再处理这些地方。
正常的方法是将数据“加倍计时”。意思是,两个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)状态。一旦处于亚稳态,它就可以无限期地停留在这里(假设闩锁不再被计时),但是由于它是不稳定的平衡,通常会相对较快地发生某种事情,将其从亚稳态中剔除。
如果您的存储元件即将变为亚稳态,那么您至少会损失一些下游逻辑的时序预算。在亚稳状态解析之前,该逻辑无法执行所需的评估。在最坏的情况下,亚稳状态会通过逻辑保持或传播,并且下游存储元素也会变为亚稳态,或者多个相关的存储元素捕获不一致的值。
正确设计和运行的同步逻辑不会出现亚稳性问题。时钟周期长于逻辑电路的评估时间,所有触发器输入均在下一个时钟沿稳定(满足设置要求),并且它们均加载有效值。
涉及亚稳性的一些常见情况是:
亚稳信号是在任意时间长度内以任意模式任意出现高电平或低电平的信号。如果信号直接或间接馈入多个门,则这些门中的一些可能会“看到”它为高电平,而另一些则看到它为低电平。讨厌的东西。
对于具有单个时钟的系统,通常可以通过两个锁存器来处理亚稳态信号。门控时钟时会遇到一个棘手的问题。有很多电路(尤其是使用RS锁存器)在无法实现亚稳性的情况下会很好地工作,但是如果发生亚稳性,则可能最终生成欠幅时钟脉冲(进而会导致下游的亚稳性)。
顺便提一句,关于亚稳性,还有一个重要的要点:锁存器的传播时间表明,如果满足采样和保持时间,则输出将稳定在新值。如果不满足建立和保持时间,则在锁存器收到有效时钟事件之前,无法保证输出是否或何时切换。即使输出“似乎”干净地切换,也无法保证它不会自发地切换回去。
典型的情况是,如果您违反了同步锁存器的建立/保持时间,这是在设计FPGA时需要注意的一个问题(我确信Xilinx和Altera会在此做一些说明)。如果信号可以在任意随机时间出现,则永远无法确定在对其计时时,它在建立/保持时间窗口规格内没有变化。可能发生的情况是,锁存器输出不会在时钟沿之后的指定时间变高或变低,而是会在稳定到稳定状态之前抖动一会儿。防止这种情况的正常方法是使用2级锁存器,该锁存器可以使用相同的时钟,也可以使用延迟时钟或异相时钟,具体取决于延迟要求和亚稳概率之间的平衡。这允许第一锁存时间在第二锁存器锁存稳定状态之前稳定。偶然,这是微控制器必须在内部处理的事情,因为外部I / O信号通常与CPU时钟异步,因此I / O端口通常具有双重锁存结构以避免出现问题,并且软件无需担心。一个模糊的回忆回顾了很多年前关于6502的问题,其中总线读取的数据超出了建立/保持时间规格,可能会导致分支跳转到既不是分支目标也不是下一条指令的地址,例如某些内部地址。国家变得亚稳。该视频显示了一些示例:一个模糊的回忆回顾了很多年前关于6502的问题,其中总线读取的数据超出了建立/保持时间规格,可能会导致分支跳转到既不是分支目标也不是下一条指令的地址,例如某些内部地址。国家变得亚稳。该视频显示了一些示例:一个模糊的回忆回顾了很多年前关于6502的问题,其中总线读取的数据超出了建立/保持时间规格,可能会导致分支跳转到既不是分支目标也不是下一条指令的地址,例如某些内部地址。国家变得亚稳。该视频显示了一些示例:http://www.youtube.com/watch?v=tKHCwjWMMyg
打个比方,就是如果您向某人扔一个球-他们大多是接住球或将球丢下/遗失,因此在投掷给定时间后,他们会握住球或不握球。但是偶尔它们会在捕获或丢弃之前变弱一段时间,因此它们的状态既不会保持也不会丢失-这是亚稳态!