gpt4 book ai didi

vhdl - 使用双寄存器方法解决亚稳态问题

转载 作者:行者123 更新时间:2023-12-05 04:12:19 30 4
gpt4 key购买 nike

为了解决Verilog中不同时钟域引起的亚稳态问题,采用了双寄存器的方法。

但据我所知,亚稳态的最终输出是不确定的。输出独立于输入。

那么,我的问题是如何使用双寄存器的方式保证输出的正确性?

谢谢。

最佳答案

您不能完全确定是否避免了亚稳态。正如您提到的,亚稳态触发器的输出是不可预测的,因此当您具有亚稳态时,即使使用“双寄存器”方法,您也可能传播错误的值。

然而,这种方法从未打算解决亚稳态问题,而是试图降低亚稳态值进入电路的可能性。什么叫here MTBF(平均故障间隔时间)。要减少 MTBF,您甚至可以链接 2 个以上的寄存器。

即使这不能解决值的不可预测性问题,使用这些双寄存器也很有趣,因为当值处于亚稳态时,它会振荡直到稳定为 0 或 1。

这种振荡会使您的电路切换,然后因为每次转换都会消耗能量而白白消耗大量能量。因此,使用双寄存器进行时钟域交叉非常重要。

为确保您的数据有效,您可以在两个时钟域之间使用请求-确认机制。

简单示例:

  1. 设置数据到总线(双寄存器输入)
  2. 等待 1(或更多)个时钟周期以确保数据在另一端建立良好
  3. 发送请求信号(双寄存器输入)
  4. 最坏情况:请求信号是亚稳态的,一旦稳定就保持为 0。下一个时钟周期它将为 1,因为它已经设置为 1 至少 1 个时钟周期。最好的情况:下一个周期目的地将接受数据
  5. 数据稳定,请求稳定在1 -> 数据可以消费。向来源发送确认。
  6. 确认到达(在亚稳态的情况下在双寄存器上)。如果是亚稳态,它可能需要一个时钟周期才能到达。
  7. 请求失败。
  8. 可以通过总线发送其他数据

此协议(protocol)称为 4 阶段协议(protocol)。您可以在网络上找到很多关于它的文档,因为它是用于异步设计的经典协议(protocol)。

它非常容易理解和实现。请记住,它会在非常重要的区域产生开销。

希望对您有所帮助。

关于vhdl - 使用双寄存器方法解决亚稳态问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40846222/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com