小白在设计数字电路,如同步/异步时序电路时常常会碰到毛刺或者亚稳态的问题,但很多小白对亚稳态问题措手不及,经常搞错电路导致系统崩溃,所以本文将归纳总结,分析数字电路中的亚稳态。
在同步电路或异步电路中,如果触发器的setup时间或hold时间无法得到满足,将产生亚稳态,此时触发器输出端Q在有效时钟沿之后比较长的一段时间处于不确定的状态,在这段时间里Q端将会产生毛刺并不断振荡、最终固定在某一电压值上,此电压值并不一定等于原来数据输入端D的值,这段时间成为决断时间(resolution time)。经过决断时间后,Q端将稳定到0或1上,但究竟是0还是1,这是随机的,与输入没有必然的关系。
亚稳态的危害主要体现在破坏系统的稳定性上,由于输出在稳定下来前可能是毛刺、振荡、固定的某一电压值,因此亚稳态除了导致逻辑误判之外,严重情况下输出0-1之间的中间电压值还会使下一级产生亚稳态(即导致亚稳态的传播)。逻辑误判将导致功能性错误,而亚稳态的传播则扩大了孤枕眠,严重时将导致系统崩溃。
在异步时序电路时更容易发生亚稳态,这是由于异步电路具有多个时钟域,数据在两个时钟域间传递时,非常容易导致setup时间或hold时间不满足而发生亚稳态。在同步时序电路中,当两个触发器间的组合逻辑延迟过大时,将导致setup时间不满足而发生亚稳态。