写在前面

本博客所有CDC相关的内容:跨时钟域(CDC)设计汇总


1、跨时钟域处理方法的分类

信号的跨时钟域传输可能会引入亚稳态问题,那么就需要想办法对其进行处理,从而降低亚稳态发生的概率(即提高MTBF)。

跨时钟域处理方法可以分为两个大类:单Bit信号跨时钟域处理、多Bit信号跨时钟域处理。分类的原因是多bit信号的传递不光只有亚稳态这一个问题,还可能会因为多个信号之间由于工艺、PCB布局等因素导致的信号传输延时(skew)的存在,从而导致信号被漏采或者错采。

2、合并多个控制信号

在下面的例子中,数据的读取需要载入信号load和使能信号en同时置位,但是这两个信号之间存在一个小偏差(skew),在分别进行单bit的跨时钟域同步时,由于小skew的存在,导致这两个信号在被同步到目的时钟域后有一个时钟周期的偏差,而这个偏差直接导致数据无法被读取。

现在不妨问自己:这两个信号是否都必须传递?实际上不是必须的,应用中我们可以把两个信号合并为一个控制信号,这样就将多bit信号的跨时钟域传递转换成了单bit信号的跨时钟域传递。如下:

3、格雷码

在一组数的编码中,若任意两个相邻的代码只有一位二进制数不同,则称这种编码为格雷码(Gray Code),另外由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此又称循环码或反射码。 关于格雷码的内容:Verilog实现的格雷码与二进制码的互相转换

下表给出了4bit自然二进制码、4bit典型格雷码(无特殊说明,典型格雷码即格雷码)与4bit十进制整数的对照:

从格雷码的性质,我们可以发现其虽然是多bit信号的CDC,但是由于每次只有相邻的一位不同,实际上就是1bit信号的CDC,好家伙,又把问题转化成了我们熟悉的单bit信号的跨时钟域问题。

但是格雷码的应用也有局限:

  • 格雷码只有相邻的两位之间存在只有1bit的改变,这就意味着数据的改变必须要连续(相邻),也就是说其只适用连续变化的数据,例如计数器,这无疑限制了格雷码的应用场景;
  • 格雷码传递的数据个数必须为2的N次幂----由于最大数与最小数之间也仅一位数不同,即“首尾相连”,因此格雷码又称循环码。若格雷码个数不为2的N次幂,则无法实现“首尾相连”,即最后一位传递到初始位时,就不止变化1bit了,这无疑违背了我们使用格雷码的初衷。

4、握手法

握手法的本质是负反馈,通俗来讲,就是先将被CDC信号展宽,展宽后将其同步到目的时钟域,在目的时钟域生成指示信号,该指示信号用来指示此时信号已经被目的时钟域接收,然后将指示信号反馈到源时钟域(反馈过程),源时钟域接收到这个反馈信号后将被CDC信号拉低,从而确定了展宽长度,也通过”发送--反馈--操作“这一握手过程完成了一次CDC传输。

上图是典型的握手过程来进行CDC:

  • 源时钟域aclk下的信号adt1信号是要进行CDC的信号;
  • adt1先是在源时钟域aclk下被展宽,然后通过两级同步器被同步到目的时钟域bclk下,分别为bq1_dat,bq2_dat;
  • bq2_dat作为指示信号(反馈信号,也可以通过bq1_dat和bq2_dat来生成新的指示信号)又被反馈到了目的时钟域aclk下,并进行同步,分别为aq1_dat,aq2_dat;
  • aq2_dat的拉高则说明反馈信号的同步完成,此时可以将adt1拉低(结束展宽过程);
  • adt1拉低(结束展宽过程)后表示一次CDC操作结束。

握手法是一种很保险的方法,但是缺点也很明显:需要的时序开销很大。

5、异步FIFO

毫无疑问异步FIFO是多bit信号来跨时钟域处理的最好的、也是最常用的方法。异步FIFO通过先进新出的缓存机制,将两端数据的读写都控制在各自的时钟域内,时钟域之间通过指针+格雷码形式来指示数据的空、满。

关于异步FIFO可以参考:

异步FIFO的Verilg实现方法

关于异步FIFO设计,这7点你必须要搞清楚

6、DMUX同步器

对于多bit的data信号,还可以使用使能技术,也就是通过一个使能信号来判断data信号是否已经稳定,当使能信号有效的时候说明data处于稳定状态,在这种情况下终点寄存器才对信号进行采样,可以保证没有setup/hold违例。而使能信号一般使用double FF的方法来进行同步。下面是DMUX的同步示意图:

7、其他

  • 以往我的文章我一般都是会贴出代码和仿真测试的。这次我就不贴了,因为我找到了一个不需要自己敲代码的方法。这个方法就下一篇文章再写吧!
  • 关于本文,您有什么想法均可在评论区留言!
  • 创作不易,如果本文对您有帮助,还请多多点赞、评论和收藏。您的支持是我更新的最大动力!

跨时钟域(CDC)设计方法之多bit信号篇(一)相关推荐

  1. 漫谈时序设计(1)跨时钟域是设计出来的,而非约束出来的!

    目录 亚稳态(Metastability) 单比特信号同步 慢时钟域到快时钟域 快时钟域到慢时钟域 多比特信号同步 Handshake Mechanism 异步FIFO 参考链接 写在最后 这篇博文在 ...

  2. 跨时钟域问题(二)(单bit信号跨时钟域 1. 电平同步器 2. 边沿同步器 3. 脉冲检测器)

  3. CDC:跨时钟域处理

    前言(还未整理好) CDC(clock domain crossing)检查(跨时钟域的检查)是对电路设计中同步电路设计的检查.非同步时钟没有固定的相位关系,这样Setup/Hold不满足而产生了亚稳 ...

  4. 【数字IC基础】跨时钟域(CDC,Clock Domain Crossing)

    文章目录 一.什么是跨时钟域? 二.跨时钟域传输的问题? 2.1 亚稳态(单bit:两级D触发器(双DFF)) 2.2 数据收敛(多bit亚稳态)(格雷码编码.握手协议.异步FIFO.DMUX) 2. ...

  5. FPGA跨时钟域设计的一点总结

    1. 亚稳态的概念说明 是指触发器无法在某个规定时间段内达到一个可确认的状态.当一个触发器进入亚稳态引时,既无法预测该单元的输出电平,也无法预测何时输出才能稳定在某个正确的电平上.在这个稳定期间,触发 ...

  6. FPGA跨时钟域处理的三大方法

    跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPGA初学者的必修课.如果是还在校的本科生,跨时钟域处理也是面试中经常常被问到的一个问题. 在本篇文章中,主要介 ...

  7. 3位格雷码的顺序编码_FPGA 设计之 跨时钟域(四 - 格雷码)

    上一篇文章总结了四种常用的多比特跨时钟域的设计.这篇我们主要来看一下 格雷码,文章目录如下: 什么是格雷码 格雷码转二进制码 二进制码转格雷码 N比特格雷码转N-1比特格雷码 什么是格雷码 ? A G ...

  8. FPGA设计中,跨时钟域问题的处理

    FPGA设计中,跨时钟域问题的处理 今天和大侠简单聊一聊FPGA设计中跨时钟域问题的处理,话不多说,上货. 跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPG ...

  9. 解决跨时钟域问题的三大方法

    跨时钟域处理是FPGA设计中经常遇到的问题,而如何处理好跨时钟域间的数据,可以说是每个FPGA初学者的必修课.如果是还是在校的学生,跨时钟域处理也是面试中经常常被问到的一个问题. 在本篇文章中,主要介 ...

最新文章

  1. 局域网与网络工程课堂笔记(1)(2)
  2. 网易北航搞了个奇怪研究:多数人类看不懂的立体图,AI现在看懂了
  3. 笔记 - Ali Cloud OSS 简介 三种常见数据存储类型
  4. Spark on YARN cluster client 模式作业运行全过程分析
  5. 错排、卡特兰数、斯特林数小结
  6. Linux C高级编程——网络编程之API(5)
  7. 8.1 复用(组合/继承)
  8. 怎么做店铺客单价|盛天海科技
  9. 软件成分分析(SCA)完全指南
  10. 毕业论文html代码查重吗,毕业论文中的代码内容重复了怎么办? 毕业论文代码重复率高...
  11. Latex命令、符号、公式、数学符号编辑
  12. mysql数据库设计教材_mySQL教程 第1章 数据库设计
  13. java 获取一年内周六周日日期
  14. 大三小学期进阶课程第二十一课:reinforcement learning and data driven approaches
  15. php memcache内存大小,PHP memcache 内存缓存 数据库查询 应用 高洛峰 细说PHP
  16. 双相机 单目三维重建
  17. Mybatis源码解析——入门级
  18. vanilla_使用Vanilla JavaScript构建Cookie库
  19. Backtrader获取数据集当天的全部数据
  20. 人脸与关键点检测:YOLO5Face实战

热门文章

  1. 微信PC端第三方登录
  2. 香港读书 – 香港签注延期办理流程(转载)
  3. HashiCorp 企业版本中国禁止使用了
  4. Hadoop(一)——hadoop框架简介
  5. 分布式计算框架Hadoop核心组件概述
  6. 取各位数字c语言程序,取出数字的每一位
  7. 第十七章 书房自习
  8. pycharm Python3.6.5安装flask-No module named flask 错误解决
  9. 有没有什么音频转文字的软件?亲测好用的转换软件分享给你
  10. 我们到底应该在大学里得到什么?