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

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

首先,我们需要了解什么是亚稳态,看下图
在这里插入图片描述
简单来说,就是当时钟信号上升沿到来的时候正好采样的数据也在发生变化,但是对于采样的时钟信号,如果想要采样得到一个稳定值,在clk的上升沿的前一段时间有一个建立时间TSU和在clk的上升沿的后一段时间有一个保持时间Th,如果在这两个时间段内采样的信号D发生跳变的话,输出的信号Q就会出现0,1之间跳变的不稳定、不确定状态,从而对采样结果产生干扰,这就是亚稳态。
在建立时间TSU期间,若D不能保持稳定状态,则寄存器则无法将正确的D值打入到寄存器中,同理在经过建立时间后的TH保持时间内,若D不能保持稳定状态,则寄存器无法将正确的D值打入到寄存器中去,从而产生亚稳态。

那么如何消除亚稳态呢?看图
在这里插入图片描述
由上图可知,打两拍来消除亚稳态的方法是适用于慢时钟域到快时钟域的情况,采样信号sig是慢时钟域的信号,正好当第一个clk上升沿建立时间和保持时间内采样信号发生了变化,reg1及出现了一个亚稳态的状态,当第二个采样时钟对reg1进行采样时,在第二个clk上升沿的建立时间和保持时间的范围内 reg1保持在稳定的概率要比第一个时刻大得多,相应的发生亚稳态的概率也会减小,一般来说,第一级寄存器的发生亚稳态的之后稳定的概率为70%,第二次寄存器发生亚稳态之后稳定的概率为99%。

就是说在绝大多数时候,第一级寄存器即使出现亚稳态,也会在一个时钟周期内稳定下来,但是稳定下来的值是0或1,这样第二级寄存器就会采到的就是一个稳定的值。并不是说第二级寄存器所输出的第一个状态 就是输入的第一个状态,只能说第二个寄存器输出第一个的状态是稳定的(即打两拍后的值可能不是正确的sig,但一定是个稳定的值),之后的状态是跟输入的状态保持一致的。从而将第二个寄存器输出的结果进行处理,这样可以大幅降低亚稳态的影响。

在做异步时钟域信号进行同步化的处理时,其实打一拍便可以实现同步化的处理,但是由于打一拍是可能遇到亚稳态情况,所以通常进行打两拍处理。
异步时钟域同步化处理:即利用clkb去采样clka时钟域中的信号D的过程,即当clkb时钟上升沿时去寄存clka中D的值(reg1 <= D),也被叫做打一拍处理。

同样在valid/ready握手信号做异步通信时,需要将valid和ready信号打两拍的处理(做同步化+降低亚稳态的的处理),因为时钟域clkb的上升沿在采集时钟域clka的valid信号时,若此时valid信号正好处于亚稳态的状态(即valid信号跳变状态),则会造成同步时(打一拍或第一级寄存)大概率产生亚稳态,所以需要进行再打一拍去降低亚稳态产生的概率
————————————————
原文链接:https://blog.csdn.net/weixin_42279450/article/details/124199039?spm=1001.2014.3001.5506
原文链接:https://blog.csdn.net/weixin_42279450/article/details/124199039

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值