为什么打两拍可以消除亚稳态的影响?

  •  在clk上升沿来之前,数据必须提前一个最小时间量“预先准备好”,这个最小时间量就是建立时间;
  •  在clk上升沿来之后,数据必须保持一个最小时间量“不能变化”,这个最小时间量就是保持时间。
  • 在时序电路设计中,建立时间和保持时间(Setup Time (TSU) 和 Hold Time (TH))是非常关键的概念。当数据信号D在寄存器(如触发器)的输入端进行更新时,必须满足这两个时间参数:
  1. 建立时间(TSU)4: 数据D需要在新的时钟周期开始之前(即上升沿)稳定一段时间,以便寄存器能够识别并正确地捕获这个新的值。如果D在TSU期间不稳定,可能导致寄存器接收错误的数据,从而导致亚稳态或丢失数据。

  2. 保持时间(TH)4: 在数据已经被稳定地写入寄存器之后,D必须继续保持稳定至少TH的时间长度,这样寄存器才能确保其内部状态不会因为新数据的到来而改变。如果在TH时间内D值改变,可能会造成寄存器的输出不一致。

如果在建立时间或保持时间内,D的状态未能维持稳定,那么寄存器的行为可能会变得不可预测,这就是所说的“亚稳态”状态,这通常被视为设计错误。为了避免这种情况,电路设计者需要确保信号D的驱动器具有足够的驱动能力,并且系统时序参数设置得当。

1.亚稳态

当时钟信号上升沿到来的时候正好采样的数据也在发生变化,但是对于采样的时钟信号,如果想要采样得到一个稳定值,在clk的上升沿的前一段时间有一个建立时间TSU和在clk的上升沿的后一段时间有一个保持时间Th,如果在这两个时间段内采样的信号D发生跳变的话,输出的信号Q就会出现0,1之间跳变的不稳定、不确定状态,从而对采样结果产生干扰,这就是亚稳态。

从图中,我们了解到,在处理异步时钟域之间的信号传输时,为了避免亚稳态(Metastability)的潜在影响,通常会采用“打两拍”的方法。这种方法特别适用于慢时钟域到快时钟域的信号同步。

当采样信号sig(来自慢时钟域)在快时钟clk的上升沿附近发生变化时,第一级寄存器reg1可能会进入亚稳态,即其输出值在一段时间内是不确定的。然而,如果在紧接着的下一个clk上升沿再次采样reg1的值,由于信号在这段时间内更有可能保持稳定,因此第二级寄存器捕获到稳定值的概率会大大增加。

具体来说,第一级寄存器在经历亚稳态后,有大约70%的概率在一个时钟周期内稳定到某个值(0或1)。第二级寄存器随后会捕获这个稳定值,尽管这个值可能并不完全等同于原始的sig信号,但至少它是一个确定的值。这样,通过两级寄存器的设计,可以显著降低亚稳态对系统的影响。

在异步时钟域同步化处理中,即使打一拍(即单次采样)从技术上讲可以实现信号的同步,但由于亚稳态的风险,我们更倾向于使用打两拍的方法。这种方法通过引入额外的寄存器延迟,增加了信号稳定的概率,从而提高了系统的可靠性。

类似地,在validready握手信号进行异步通信时,也需要对这两个信号进行打两拍的处理。这是因为在异步时钟域之间传递这些信号时,同样存在亚稳态的风险。通过打两拍,我们可以显著降低这种风险,确保信号在传输过程中的稳定性和可靠性。

并且使用“打两拍”来处理单比特信号的跨时钟域处理问题是有限制的,就是源寄存器发过来的信号必须保证稳定不变至少碰见目的域时钟3个连续的沿,这个沿可以是上升沿,也可以是下降沿。持续3个沿之后才能变,否则就有可能在目的时钟域寄存器无法捕捉到这个信号的变化。正是因为这个局限,所以“打两拍”一般适用于单比特信号从慢时钟域传递快时钟域的场景。

  • 24
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kjnhkn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值