ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

CDC(2) 多bit信号

2022-04-08 09:31:05  阅读:197  来源: 互联网

标签:load bclk CDC aclk 信号 bit data 时钟


在绝大多数情况下,我们不能直接利用2flop synchronizer来同步一个多bit信号。

但是因为2flop synchronizer的delay有随机性,可能是一个周期之后就同步过去了,也可能需要两个周期。

方案一

我们说直接用2flop synchronizer同步多bit信号adata,如果adata的信号在同步的时候变化,就会导致上面出错的问题。那么我能不能想个办法,说bclk在采样adata的时候,adata的所有bit都稳定不变呢?这样就不存在不同bit之间delay cycle不同的问题了。于是思路如下

    • 在aclk时钟域产生一个load_aclk信号,load_aclk为1’b1时代表多bit data信号稳定

    • load_aclk信号本身利用double flop同步到bclk时钟域得到load_bclk

    • bclk时钟域可以直接利用flop来load bus信号

    •  

       

第一,要有专门的逻辑保证aload为高的时候data_aclk不变。

第二,在aload为1’b1的时候,data_bclk会持续load data_aclk, aload从0—>1是ok的,但是1—>0会发生错误,因为data_aclk是不稳定的!

当load_aclk变高的时候,把data_aclk当前的值同步过去之后就行了,并不需要持续load。这个时候我们上一篇讲的pulse synchronizer就派上用场了,我们让load_aclk是一个pulse,然后把这个pulse同步过去,这样data_bclk只会load一次。

 

 

第三,aclk时钟域怎么知道data_aclk已经被成功传到bclk时钟域,从而可以更新下一组data了呢?

把信号从bclk时钟域反馈回来,告诉aclk时钟域load成功,可以更新下一个数据了。如下图所示,aclk时钟域的load_aclk是由一个valid/ready的握手逻辑产生。我们可以把load_bclk再利用pulse synchronizer同步回去,从而让ready_aclk为1,这样我们就知道data_aclk肯定已经被同步到了bclk时钟域,可以更新下一个data了。

总结一下,方案一适用于

  • 无法化简为单bit信号跨时钟域传递

  • 适用于非高速传输的场合,即在source 时钟域的多bit信号可以保持稳定一段时间,而不是时刻都在变化,可以有一个明确的load窗口

  • load信号为高时必须保证多bit信号稳定不变

  • 如果没有连续同步数据的要求,可以适当使用不带反馈的

方案二

可以设计一个比较逻辑,利用2flop synchronizer同步到bclk时钟域之后,再用两级flop把bdata打两拍,然后比较这3级的值,如果这三级flop的值是相同的,那不就证明2flop synchronizer同步到的值是稳定的吗?我们可以用三级flop的值相等作为一个update信号,来updata最后输出级的flop

 

如果知道adata变化频率很低,每变一次之后会稳定很长时间,或者说bclk这边不在乎是不是错过了些data,那么你确实可以用方案二。方案二是当你没有办法拿到aclk域的load信号时的back up方案,所以你必须深刻了解它的限制条件。最后还有一点,方案二需要很多级flop,三级flop可能有的时候还不够,要具体分析,但是很明显方案二需要的flop数目更多,尤其是bit数大的时候,面积的花费可能要更高。

方案三 异步FIFO

 https://mp.weixin.qq.com/s/396trM4O6mgh5WqilW_vPA

 

标签:load,bclk,CDC,aclk,信号,bit,data,时钟
来源: https://www.cnblogs.com/chenjc98/p/16115345.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有