最近在异步FIFO设计中,遇到了对跨时钟信号的同步处理,主要是为了降低亚稳态出现的概率。因此这篇文章主要讲一下亚稳态出现原因以及处理办法。
(一)亚稳态的出现原因
亚稳态主要是指触发器在某一段时间内不能达到一个确定的状态。一个触发器一旦进入亚稳态状态,则无法预测触发器的输出电平,也无法预测什么时候可以稳定在某个确定的电平上,此时触发器的输出端Q在较长时间内处于振荡状态,不等于输入端D。这段时间称作决断时间(resolution time)。经过resolution time之后,输出端Q将会稳定在某个电平上,但是这个稳定之后的电平与输入端D是没有关系的。
亚稳态出现的主要原因是因为触发器无法满足setup time或者hold time。亚稳态在在输出稳定下来之前有可能是毛刺、振荡、固定的某一电平值,因此会导致逻辑误判;并且在没有稳定下来之前,输出在0-1之间的值还会使得下一级电路进入亚稳态状态。逻辑误判可以通过一些设计技巧进行改善(grey编码),但是亚稳态的传输会扩大故障,难以处理。
只要系统中存在异步元件,则亚稳态是没有办法避免的,亚稳态通常发生在异步信号检测、跨时钟传输和复位电路当中。下面做一个详细的说明。
在同步系统中,输入总是与时钟同步,因此寄存器的setup time和hold time是满足
的,一