为了解决Verilog中不同时钟域引起的亚稳态问题,使用了双寄存器方法。
但据我所知,亚稳态的最终输出尚未确定。输出与输入无关。
那么,我的问题是如何使用双重寄存器方法保证输出的正确性?
感谢。
答案 0 :(得分:2)
您不能完全确定您是否避免了亚稳态。 正如您所提到的,亚稳态触发器的输出是不可预测的,因此即使使用“双寄存器”,您也可能在具有亚稳态时传播错误的值。方法
然而,这种方法从未打算解决亚稳态问题,但试图降低亚稳态值进入电路的可能性。什么叫automatic singleton expansion MTBF(平均故障间隔时间)。要减少MTBF,您甚至可以链接更多的2个寄存器。
即使这不能解决值的不可预测性,使用这些双重寄存器也很有意思,因为当一个值为亚稳态时,它会振荡直到它稳定为0或1。
这种振荡将使您的电路切换,然后在每次转换消耗能量时都不会消耗大量能量。因此,使用双寄存器进行时钟域交叉非常重要。
为了确保您的数据有效,您可以在两个时钟域之间使用请求 - 确认机制。
快速举例:
该协议称为4阶段协议。你可以在网上找到很多关于它的文档,因为它是异步设计的经典协议。
理解和实施起来非常简单。请记住,它会产生一个非常重要的区域开销。
希望它有所帮助。