触发器的建立时间和保持时间和亚稳态(转)

1、亚稳态的定义

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

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

 

建立时间(Tsu:set up time)

       是指在触发器的时钟信号上升沿到来以前,数据稳定不变的时间,如果建立时间不够,数据将不能在这个时钟上升沿被稳定的打入触发器,Tsu就是指这个最小的稳定时间。

保持时间(Th:hold time):

        是指在触发器的时钟信号上升沿到来以后,数据稳定不变的时间,如果保持时间不够,数据同样不能被稳定的打入触发器,Th就是指这个最小的保持时间。

触发器的建立时间和保持时间和亚稳态(转)

 

那么问题来了,为什么触发器要满足建立时间和保持时间?
因为触发器内部数据的形成是需要一定的时间的,如果不满足建立和保持时间,触发器将进入亚稳态,进入亚稳态后触发器的输出将不稳定,在0和1之间变化,这时需要经过一个恢复时间,其输出才能稳定,但稳定后的值并不一定是你的输入值。这就是为什么要用两级触发器来同步异步输入信号。这样做可以防止由于异步输入信号对于本级时钟可能不满足建立保持时间而使本级触发器产生的亚稳态传播到后面逻辑中,导致亚稳态的传播。

(比较容易理解的方式)换个方式理解:需要建立时间是因为触发器的D段像一个锁存器在接受数据,为了稳定的设置前级门的状态需要一段稳定时间;需要保持时间是因为在时钟沿到来之后,触发器要通过反馈来所存状态,从后级门传到前级门需要时间。

问题又来了,什么是亚稳态?为什么两级触发器可以防止亚稳态传播?
亚稳态是指触发器无法在某个规定的时间段内到达一个可以确认的状态。两级触发器可防止亚稳态传播的原理:假设第一级触发器的输入不满足其建立保持时间,它在第一个脉冲沿到来后输出的数据就为亚稳态,那么在下 一个脉冲沿到来之前,其输出的亚稳态数据在一段恢复时间后必须稳定下来,而且稳定的数据必须满足第二级触发器的建立时间,如果都满足了,在下一个脉冲沿到 来时,第二级触发器将不会出现亚稳态,因为其输入端的数据满足其建立保持时间。
解决亚稳态的方法:

1 降低系统时钟频率

2 用反应更快的 FF

3 引入同步机制,防止亚稳态传播(可以采用前面说的加两级触发器)。

4 改善时钟质量,用边沿变化快速的时钟信号

 

2、可能出现亚稳态的场景

在同步系统中,输入总是与时钟同步,因此寄存器的 setup time 和 hold time 是满足
的,一般情况下是不会发生亚稳态情况的。亚稳态一般是发生在跨时钟传输异步信号采集中以及复位电路中:

(1)在跨时钟传输中,由于时钟之间存在相移,因此当源寄存器发出数据之后,无法确定在什么时间段到达目的寄存器,因此也不能保证满足目的寄存器的 setup time 和 hold time 要求。

(2)在异步信号采集当中,由于异步信号可以在任何时间点到达目的寄存器,因此也无法满足目的寄存器的setup time和hold time 时间。

(3) 复位电路分为两类,异步复位电路和同步复位电路,都可能出现亚稳态,只不过同步复位电路出现亚稳态的概率较低。
 

参考:

https://blog.csdn.net/iamsarah/article/details/76222650

https://blog.csdn.net/dongdongnihao_/article/details/79590213

https://blog.csdn.net/bleauchat/article/details/85291957

https://blog.csdn.net/nksosoon/article/details/20696249

https://www.cnblogs.com/yfwblog/p/4793118.html