异步复位-----续
0赞记得特权前些天发表了一篇名为《异步复位,同步释放》的博文,其实对于这个亚稳态还是很心有余悸的。其实对于一个寄存器的亚稳态其实还是相对影响小一些,但是对于诸如总线式的寄存器受到亚稳态的影响那问题就大了,搞不好就是致命性的打击。正好在EDACN论坛里看到一谈论异步复位问题的帖子,而且也谈到了出现非同步释放的危害,引一网友的精彩剖析,原文如下:
摘录自EDACN论坛:
http://www.edacn.net/bbs/viewthread.php?tid=129759&extra=page%3D2
在带有复位端的D触发器中,当reset信号“复位”有效时,它可以直接驱动最后一级的与非门,令Q端“异步”置位为“1”or“0”。 这就是异步复位。
当这个复位信号release时,Q的输出由前一级的内部输出决定。
然而,由于复位信号不仅直接作用于最后一级门,而且也会做为前级电路的一个输入信号,因此这个前一级的内部输出也受到复位信号的影响。
前一级的内部电路实际上是实现了一个“保持”的功能,即在时钟沿跳变附近锁住当时的输入值,使得在时钟变为高电平时不再受输入信号的影响。
对于这一个“维持”电路,在时钟沿变化附近,如果“reset”信号有效,那么,就会锁存住“reset”的值;如果reset信号释放,那么这个“维持”电路会去锁当时的D输入端的数据。
因此,如果reset信号的“释放”发生在靠时钟沿很近的时间点,那么这个“维持”电路就可能既没有足够时间“维持”住reset值,也没有足够时间“维持”住D输入端的值,因此造成亚稳态,并通过最后一级与非门传到Q端输出。
如果reset信号的“释放”时间能够晚一点点,也就是说,让“维持”电路有足够的时间去锁住“reset”的值,那么,我们就可以肯定输出为稳定的“reset”状态了。
这一小段锁住“reset”值所需要的时间,就是寄存器的removal time要求。