跨时钟域的数据同步,亚稳态,和相关电路设计方法

目录

同步时钟:

亚稳态:       

双锁存器同步电路

        单bit信号跨时钟域传播

        边沿检测同步电路(慢时钟到快时钟)

脉冲同步器电路(快时钟到慢时钟)

结绳法1      

         结绳法2

         结绳法3

        多bit信号跨时钟域传播

         多bit连续数据


同步时钟:

 

(1)同一pll出来的时钟信号称之为同步时钟。

(2)缺点:

                1.时钟偏斜:同一时钟到达不同触发器c端的时间有偏差,由触发器到时钟源点的距离不同导致。

                2.时钟抖动

亚稳态:

        (1)亚稳态是指触发器无法在某个规定时间段内达到一个可确认的状态。

        (2)当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上。

          (3)在这个期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去。

          (4)亚稳态不能从根本上消除,但可以通过采取一定的措施使其对电路造成的影响降低。

双锁存器同步电路

其实是两个寄存器对输入信号打拍。

优点:简单。

缺点:(1)增加了两级延迟。

           (2)从快时钟到慢时钟域,可能慢时钟还没来得及对快时钟域的信号采样信号就已经变化导致数据丢失,所以一般用在慢时钟域到快时钟域。

适用条件,用于慢时钟域到快时钟域时要保证:

1.慢时钟周期>块时钟周期+路径延迟  。

2.数据变化时间间隔>慢时钟周期+2倍块时钟周期+路径延迟。

这样不会造成数据丢失

单bit信号跨时钟域传播

边沿检测同步电路(慢时钟到快时钟)

其实是在双锁存同步电路的基础上提取上升沿或者下降沿(因为是单bit)

适用条件:数据长度大于一个快时钟周期(接受时钟)加上一个同步触发器的hold时间。

脉冲同步器电路(快时钟到慢时钟)

        反转电路功能:选择器判断data,data为1则D=~Q,data为0则D=Q,也就是第一个脉冲取反拉高,第二个脉冲取反拉低。

        两级同步器和触发器:功能类似于之前的单bit的慢到快边沿检测同步电路

        异或门:由于上升沿下降沿分别包含一个bit,所以用异或门将上升沿下降沿都提取出来

        整体上就是将两bit(输入脉冲)中间拉高,将数据保留到边沿,在2次寄存打拍消除亚稳态,再一次寄存打拍提取上升下降沿。

适用条件:显然这里两个如果太近,提取出来的上升沿下降沿可能会连在一起,造成输出脉冲超过一个周期。(如下图)所以两个两bit(输入脉冲)间隔必须大于等于两个慢时钟周期。

 结绳法1

       

这种结绳法的原理是,数据作为Din_clkA,即当数据有上升沿(0->1)时,寄存器1的输出将会稳定在高电平等待复位,此时等待CIkB采样;当CIkB完成采样后,寄存器4会输出高电平,若此时Din_clkA为低电平,那么即可完成复位,开始下一次采样等待。

寄存器一:以数据上升沿为触发条件拉高Q端并保持。

寄存器二和寄存器三:同步电路。

寄存器四:将同步后的信号再延迟一拍,方便提取提取上升沿。

这里需要注意的是当数据来临(即上升沿)时,CIkB域需要等待3个CIkB才会在寄存器4输出并完成输入端的复位,所以Din_CIkA如果变化较快,即持续时间短于3个CIkB(上升沿再次到来时,上一个上升沿导致的第一个寄存器Q端的还没有被复位拉低过),也就是Din_ClkA频率大于CIkB的1/3,那么这时Din_CIkA的变化将无法被采样到,因为CIkB域需要3个ClkB才能完成采样,并且此时Din_ClkA必须是低电平才能复位,采用异步复位。

在慢时钟采样快时钟的时候,结绳法适合采样数据较少(即脉冲间隔较大)的控制信号。即脉冲间隔Ta>3Tb;即等待3个clkB时钟后,完成复位,才允许下一个输入脉冲。

 结绳法2

 

异步置为的时序图

 Q2的输出不是一个周期  最多为2个周期多一点  感觉out=(~Q1)&Q2更合理。

结绳法3

 其实就是两个边沿同步电路你读我,我读你。

多bit信号跨时钟域传播

如果简单同步

 b_load和b_en经过两级寄存器同步,但是这两个信号到来的时刻跨两个时钟(由于电路延迟引起),两级同步后显然不对。

此时可以将 b_load和b_en合并后两级同步

 

 

如果两信号不能简单合并比如译码信号

 在这种情况下,建议加入另一个控制信号,确保bdec[0]、bec[1]稳定时采。例如在bdec[0]、bec[1]稳定输出后一到两个周期b_clk域输出一个en信号,通知a_clk域此时可以采bdec[0],bec[1]信号。这样可确保正确采样。

 多bit连续数据

使用ram或者fifo。

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值