中的图解,数据在时钟域之间交叉。在最坏的情况下,取决于时序,D处的亚稳态会传播到D并通过后续逻辑进入系统的更多部分,从而导致不确定和不一致的行为。]]
在电子学中,亚稳态是指数字电路系统能够在一个非稳定平衡或準穩態下无限期地持续存在的能力。在数字逻辑电路中,为了正确的电路操作,数字信号必须在一定的電壓或电流限制内,以表示“0”或“1”的逻辑电平;如果信号处于一个被禁止的中间范围,它可能会导致信号所施加的逻辑门出现错误行为。在亚稳态下,电路可能无法在正确电路操作所需的时间内稳定在“0”或“1”的逻辑电平。因此,电路可能会以不可预测的方式运行,并可能导致系统失效,有时被称为“故障”(glitch)。亚稳态是布里丹之驴悖论的一个实例。
亚稳态是异步数字系统以及具有多个独立时钟域的系统固有的特征。在异步系统中,仲裁器被设计为只在亚稳态解决后才允许系统继续进行,因此亚稳态是一种正常状态,而非错误状态。在具有异步输入的同步系统中,同步器被设计为使得同步失败的概率小得可以接受。当触发器的输入建立和保持时间要求得到满足时,亚稳态在完全同步的系统中是可以避免的。
例子
亚稳态的一个简单例子可以在SR NOR 锁存器中找到,当置位和复位输入都为真(R=1,S=1),然后两者几乎同时都变为假(R=0,S=0)时。两个输出Q和最初都因同时的置位和复位输入而保持在0。在置位和复位输入都变为假之后,触发器将(最终)进入两种稳定状态中的一种,即Q和中的一个为真而另一个为假。最终状态将取决于R或S哪一个按时间顺序先返回零,但如果两者几乎同时转换,由此产生的亚稳态,伴随着中间或振荡的输出电平,可能需要任意长的时间才能解析为稳定状态。
仲裁器
在电子学中,仲裁器是设计用来确定几个信号中哪一个先到达的电路。仲裁器用于异步电路中,以对共享资源的计算活动进行排序,从而防止并发的错误操作。仲裁器用于完全同步系统的输入,也用于不同时钟域之间,作为输入信号的同步器。尽管它们可以将亚稳态的发生率降至非常低的概率,但所有仲裁器都不可避免地存在亚稳态,这是无法避免的,因为它位于输入状态空间中导致不同输出的区域边界。
同步电路
充当同步器。当未同步的输入data0穿过每个触发器阶段时,其保持亚稳态的可能性会急剧降低,因为在每个阶段都有几乎一个完整的时钟周期可用于解决前一阶段可能出现的亚稳态。]]
同步電路设计技术使得数字电路能够抵抗由亚稳态引起的失效模式。一个时钟域被定义为一组具有共同时钟的触发器。这种架构可以形成一个保证无亚稳态的电路(低于某个最大时钟频率,超过该频率首先会出现亚稳态,然后是彻底的失效),前提是使用低偏移的共同时钟。然而,即使如此,如果系统依赖于任何连续输入,这些输入也可能容易受到亚稳态的影响。
同步器电路用于在接收异步输入或在不同时钟域之间传输信号时,减少亚稳态的可能性。同步器可以采用D触发器的级联形式(例如移位寄存器)。尽管每个触发器阶段都会给输入数据流增加一个额外的时钟周期延迟,但每个阶段都提供了解决亚稳态的机会。这种同步器可以被设计成将亚稳态降至可容忍的速率。
施密特触发器也可以用来降低亚稳态的可能性,但正如研究员Chaney在1979年所证明的,即使是施密特触发器也可能变得亚稳态。他进一步论证,从有限时间内完全消除来自未同步输入的亚稳态可能性是不可能的,并且“有大量的理论和实验证据表明,对于每个具有两种稳定状态的设备,都存在一个异常行为区域”。面对这种不可避免性,硬件只能降低亚稳态的概率,而系统可以尝试优雅地处理偶尔发生的亚稳态事件。
失效模式
尽管亚稳态已得到很好的理解,并且控制它的架构技术是已知的,但它仍然是设备中的一种失效模式。
由亚稳态引起的严重计算机和数字硬件错误有着引人入胜的社会历史。许多工程师一直拒绝相信一个双稳态设备可以进入既非“真”也非“假”的状态,并且在任何给定时间内保持不确定的状态具有正概率,尽管该概率随时间呈指数下降。然而,亚稳态是将连续域映射到离散域的任何尝试的必然结果。在连续域中,介于映射到不同离散输出的区域之间的边界处,在连续域中任意接近的点映射到不同的输出,这使得决定选择哪个输出成为一个困难且可能耗时的过程。如果仲裁器或触发器的输入几乎同时到达,电路最有可能穿过一个亚稳态点。亚稳态在某些圈子里仍然理解不足,各种工程师提出了他们自己的电路,声称可以解决或过滤掉亚稳态;通常这些电路只是将亚稳态的出现从一个地方转移到另一个地方。使用多个时钟源的芯片通常使用具有固定相位关系的测试仪时钟进行测试,而不是像在实际操作中那样相互漂移的独立时钟。这通常会明确阻止在实际使用中将要发生的亚稳态失效模式被看到或报告。对亚稳态的正确测试通常采用略有不同频率的时钟,并确保电路的正确操作。
参见
- 類比數位轉換器
- 布里丹之驴
- 非同步電路
- 接地反弹
- 三态逻辑
参考
评论 (0)