亚稳态的几种解决方法
亚稳态(semi-stable state)是指触发器无法在某个规定时间段内达到一个可确认的状态。当一个触发器进入亚稳态引时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。在这个稳定期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。
平均故障间隔时间
平均故障间隔时间,是指产品或系统在两相邻故障间隔期内正确工作的平均时间,也称平均无故障工作时间。它是标志产品或系统能平均工作多长时间的量,用MTBF表示。平均故障间隔时间越长,系统越可靠。 因此降低系统时钟,可以减少亚稳态发生的概率
解决方法
1. 降低系统时钟
2 .用反应更快的FF
3. 引入同步机制,防止亚稳态传播
关键是器件使用比较好的工艺和时钟周期的裕量要大。
处理亚稳态的经典办法——双触发
设计中使用的任何寄存器都会指定一个建立和保持时间,在时钟上升沿前后的这个时间内输入数据被禁止发生任何变动。所有器件中的寄存器都要指定这个精确参数,就是为了防止数据信号两次变化发生的时间间隔太过靠近,从而导致其输出陷入亚稳态。
当需要在两个时钟域传输信号的时候,需要考虑一个重要的问题是:是否需要采样从一个时钟域传输到另一个时钟域的这个信号的每一个值?通过思考这个问题可以发现,在跨时钟边界存在跨时钟域传输数据允许丢失部分采样值和跨时钟域传输数据不允许丢失任何信号采样值两种情况,而且确认设计到底属于哪种情况则变得非常重要。
对于第一种情况来说,没有必要去采样每一个值,但是需要注意的是被采样的值必需要确保精确度;而在第二种情况中,一个跨时钟域信号必需要被正确识别,或者说在其允许发生改变之前必须被识别。这两种情况中,跨时钟域信号都需要被同步到其接收时钟域之中。
最常见的同步器就是使用两级寄存器,即使用寄存器打两拍的方式进行同步。所谓的同步器就是采样一个异步信号,采样输出能够同步到本地或采样时钟的模块。这种最简单也是使用最普遍的两级寄存的同步器如图所示。
两级寄存的同步器
当然,仍然有可能级联的第二个寄存器输出还会表现为非稳定状态,但是这种双寄存同步器已经可以解决大部分这类亚稳态问题。在设计这种同步器的时候应当注意遵循以下原则:
(1)级联的寄存器必须使用同一个采样时钟。
(2)发送端时钟域寄存器输出和接收端异步时钟域级联寄存器输入之间不能有任何其他组合逻辑。