亚稳态

数字电路中的亚稳态产生原因和处理方法

最近在异步FIFO设计中,遇到了对跨时钟信号的同步处理,主要是为了降低亚稳态出现的概率。因此这篇文章主要讲一下亚稳态出现原因以及处理办法。

(一)亚稳态的出现原因

亚稳态主要是指触发器在某一段时间内不能达到一个确定的状态。一个触发器一旦进入亚稳态状态,则无法预测触发器的输出电平,也无法预测什么时候可以稳定在某个确定的电平上,此时触发器的输出端Q在较长时间内处于振荡状态,不等于输入端D。这段时间称作决断时间(resolution time)。经过resolution time之后,输出端Q将会稳定在某个电平上,但是这个稳定之后的电平与输入端D是没有关系的。

亚稳态出现的主要原因是因为触发器无法满足setup time或者hold time。亚稳态在在输出稳定下来之前有可能是毛刺、振荡、固定的某一电平值,因此会导致逻辑误判;并且在没有稳定下来之前,输出在0-1之间的值还会使得下一级电路进入亚稳态状态。逻辑误判可以通过一些设计技巧进行改善(grey编码),但是亚稳态的传输会扩大故障,难以处理。

只要系统中存在异步元件,则亚稳态是没有办法避免的,亚稳态通常发生在异步信号检测、跨时钟传输和复位电路当中。下面做一个详细的说明。

FPGA中亚稳态——让你无处可逃

1. 应用背景
1.1 亚稳态发生原因
在FPGA系统中,如果数据传输中不满足触发器的Tsu和Th不满足,或者复位过程中复位信号的释放相对于有效时钟沿的恢复时间(recovery time)不满足,就可能产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端在0和1之间处于振荡状态,而不是等于数据输入端D的值。这段时间称为决断时间(resolution time)。经过resolution time之后Q端将稳定到0或1上,但是稳定到0或者1,是随机的,与输入没有必然的关系。

1.2 亚稳态发生场合
只要系统中有异步元件,亚稳态就是无法避免的,亚稳态主要发生在异步信号检测、跨时钟域信号传输以及复位电路等常用设计中。

1.3 亚稳态危害

认识FPGA触发器的亚稳态

边沿型触发器的输出有两个稳定状态: 高电平或者低电平。为保证可靠操作, 必须要满足触发器的时序要求,也就是我们熟知的建立时间和保持时间。如果输入信号违反了触发器的时序要求, 那么触发器的输出信号就有可能会出现非法状态—亚稳态。亚稳态是一种不稳定状态,在一定时间后, 最终返回到两个稳定状态之一。亚稳态输出的信号是什么样子的? 对于系统有什么危害? 如果降低亚稳态带来的危害? 这是下面要探讨的问题。

亚稳态的特点:

1. 增加触发器进入稳定状态的时间。

亚稳态的坏处之一是会导致触发器的TCO时间比正常情况要大。多出来的时间tR (resolution time) 就是亚稳态持续的时间,参考图1。如果触发器的时序要求tSU(建立时间)和tH(保持时间)被满足,那么触发器的延时TCO=tCO_norm; 否则如果违反了触发器的时序要求,那么触发器在经过tCO_norm时间后,进入亚稳态,亚稳态持续的时间叫做resolution time,标识为tR。tR过后,亚稳态返回到两个稳定状态之一。

同步内容