为了解决Verilog中不同时钟域引起的亚稳态问题,采用了双寄存器方法.
但据我所知,亚稳态的最终输出是未定的。输出与输入无关。
那么,我的问题是如何用双寄存器方法保证输出的正确性呢?
谢谢。
发布于 2016-11-28 15:05:26
你不能完全确定你避免了亚稳态。正如您所提到的,亚稳态触发器的输出是不可预测的,因此即使使用“双寄存器”方法,当您具有亚稳态时,也可能传播错误的值。
然而,这种方法从来没有打算解决亚稳态,而是试图降低一个亚稳态值进入你的电路的可能性。所谓的这里 MTBF (平均故障间隔时间)。为了减少MTBF,您甚至可以链接更多的2个寄存器。
即使这不能解决一个值的不可预测性,使用这些双寄存器也很有趣,因为当一个值是亚稳态时,它会振荡,直到稳定到0或1。
这种振荡将使你的电路切换,然后使用大量的能量为零,因为每次过渡消耗能量。因此,使用双寄存器进行时钟域交叉是非常重要的.
但是,为了确保数据是有效的,您可以在两个时钟域之间使用请求确认机制。
简单的例子:
这个协议被称为四阶段协议.您可以在web上找到很多关于它的文档,因为它是异步设计的经典协议。
这是相当简单的理解和实施。不过,请记住,它将在可能非常重要的区域产生开销。
希望能帮上忙。
https://stackoverflow.com/questions/40846222
复制相似问题