跨时钟域处理(一):两级DFF同步

在进行IC/FPGA设计的时候,如果使用了多个频率不同的时钟信号,就有可能产生亚稳态的问题,即某些跨时钟域传输的信号,可能会因为建立时间或保持时间不满足,而出现寄存器采样后数据状态不稳定或未知的情况。如下图所示,在CLK上升沿到来时,D恰好也发生变换,因而D不满足 T s e t u p T_{setup} Tsetup或者 T h o l d u p T_{holdup} Tholdup,所以寄存器的输出就会出现亚稳态的情况。
在这里插入图片描述
解决这个问题的一个常见方法就是打两拍,当然该方法主要针对的是单bit信号的跨时钟域传输问题。
如下图所示,我们可以看到,虽然寄存器在采样D1信号时发生了亚稳态,输出Q1处于一个不确定的状态,但是可以肯定的是,这个不稳定的状态不会一直持续下去,它最终会恢复到一个稳定的状态,有可能是0,也有可能是1,而在绝大多数的情况下,这个从不稳定到稳定的时间一般是小于时钟周期的,因此,如果我们在下一个时钟周期再对Q1进行采样,就能得到的一个稳定的、确定的值Q2(当然也不绝对,但是从概率上来说出现亚稳态的几率已经很小了),从而在某种程度上来说,消除了亚稳态现象。
在这里插入图片描述
但是,也有例外的情况,如下图所示,Q1信号在下一个时钟上升沿到来之前,仍然处于亚稳态,因此Q2采样得到的也是一个不确定的值,针对这种情况,处理的方法是再打一拍,这是Q3仍然处于亚稳态的概率已经非常低了,几乎可以视作不可能发生。
在这里插入图片描述
当然,为了出现亚稳态的几率更小,我们还可以打更多拍,但在实际的工程应用中,打两拍已经满足大多数场景了。

  • 9
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

FPGA硅农

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

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

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

打赏作者

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

抵扣说明:

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

余额充值