数字电路中的Multi-bits跨时钟域设计

数字电路中的Multi-bits跨时钟域设计

  • 跨时钟域同步设计
    • 跨时钟域处理目标
    • Multi-bits的Clock Domin Crossing (CDC) 电路设计
      • 1-bit "Guard" 信号同步multi-bits数据
      • 其他的Multi-bits跨时钟域同步设计
  • 跨时钟域电路的仿真验证

跨时钟域同步设计

跨时钟域处理目标

在跨时钟域同步设计中,我们需要达到的主要目标就是 100% 确保数据(事件)在跨时钟域当中的完整性。数据(事件)的完整性包括了:

  1. 数据(事件)的值不能错;
  2. 数据(事件)的顺序不能错;
  3. 数据(事件)的个数不能错;
  4. 在跨时钟域同步设计中,不能出现metastable现象。

Multi-bits的Clock Domin Crossing (CDC) 电路设计

在之前的文章数字电路中的Single-Bit跨时钟域设计中我们提出了通过打两拍的方式将跨时钟域的单bit信号进行同步,那么我们对于多bits的信号也可以如下图一样,将每一bit的信号都通过打两拍的方式跨时钟域同步吗?

Multi-bits跨时钟域同步错误示例

这样设计是错误的。原因如下图所示,当DFF处于CK->Q之间的延迟时间中,每一个bit的跨时钟域同步传输可能出现metastable现象也可能不出现metastable现象,可能同步结果数据与同步前一致也可能不一致。这样的话,就会在CK->Q延时期间出现和预测不符的结果,影响电路的正常运转。

Multi-bits跨时钟域同步错误示例_2

1-bit “Guard” 信号同步multi-bits数据

在这里我们介绍一种比较简单可行的多bit数据信号跨时钟域同步设计——一种基于1-bit “Guard” 信号同步multi-bits数据的方法。

如上图所示,在设计多bits数据CDC电路的时候,我们通过添加“Guard“信号——vld和vld_sync,来保证当异步时钟可以稳定的传输数据的时候,再抓取数据信号进行传输。整个过程分为4步:
1-bit "Guard" 信号同步multi-bits数据

  1. Step 0:当clk0中的多bits的数据信号需要被传输的时候,将vld信号拉高,并通过两级DFF打两拍的方式输出clk1中稳定的vld_sync信号;
  2. Step 1:当vld_sync信号被拉高,表示时钟域已经稳定,将需要同步的data信号进行传输,输出data_sync信号。同时通知clk0时钟域,clk1已经接收到了信号;
  3. Step 2: 当clk0接收到了clk1传递的信号,并且data信号传输完毕之后,vld信号拉低,并通过两级DFF传递给vld_sync信号;
  4. Step 3:最后vld_sync接收到信号,并返回通知给vld信号进行最后一次shake。

经过这4步,一个完整的data sync time就完成了。

其他的Multi-bits跨时钟域同步设计

那么我们的多bits跨时钟域同步设计效率还可以更高一点吗?

通过"Guard"信号进行多bits传输

如上图所示,可以同时使用vld信号的上升沿和下降沿作为“Guard”信号对多bits信号进行传输,提升数据传输效率。

那么,这种多bits的同步电路设计还可以再快一点吗?

当然可以。可以通过使用异步FIFO(Async FIFO)进行Multi-bits的跨时钟域同步。关于异步FIFO的设计,参考Clifford E.Cummings的两篇paper。 1 2 在使用Async FIFO的时候,因为CDC电路设计很难被RTL仿真验证或者被带delay的gate level后仿验证,所以建议使用成熟的、商业化的Async FIFO IP核,例如:

  1. 使用Synopsys DesignWare (DW) 里面的Async_FIFO IP核;
  2. 使用公司经过tap-out验证的Async_FIFO IP核;
  3. 使用ISE/Vivado工具自带的Async_FIFO IP核。

跨时钟域电路的仿真验证

每当我们设计完一个电路之后,我们都想将其进行仿真验证,在设计阶段就防止出现bug。但CDC通过RTL仿真是不能验证其正确性的,因为在RTL仿真当中,tool不会检查reg寄存器的setup/hold requirement,所以一定不会出现metastable现象。那么我们可以通过带delay的gate level后仿验证CDC电路的正确性吗?这种验证方法也是很难完整的验证CDC电路的。因为,第一,信号的翻转率可能不够。在同步电路的设计中,我们会将信号翻转,从“0”到“1”,从“1”到“0”,用于验证function的正确性。但在异步跨时钟域的电路中,我们不仅要验证function的正确,我们还要考虑在任意timing的条件下,这个CDC电路是否都正确完成指定的目标;第二,仿真时间不够长,没有把clk间的关系全部覆盖。跨时钟域电路的不同时钟源之间的关系是复杂的,比如时钟的频率、时钟的相位关系、时钟输入的latency等等。如果仿真时间不够长的话,clk间的关系没有覆盖完全,设计出来的电路也是有风险的;第三,在gate level后仿验证中,我们一般默认CDC电路会出现metastable现象,所以在第一级DFF的D pin上,我们不会进行timing check,即不会检查它的setup/hold requirement。如果DFF在cell library中的CK->Q延迟比较大,显示出来的最后Q pin输出了一个稳定的电平,我们也不能保证这个的电平是没有产生metastable现象的。

那么我们应该怎样保证CDC电路的正确性呢?第一,我们可以通过设计的电路结构保证,即grant by design;第二,通过工具检查CDC电路结构是否正确,比如:spyglass。这些工具会检查电路是否为同步电路,电路结构是否正确,是否在错误的位置放置了组合逻辑电路或时序逻辑电路。


  1. Simulation and Sythesis Techniques for Asyncronous FIFO Design —— Clifford E.Cummings ↩︎

  2. Sytnesis and Scripting Techniques for Designing Multi-Asynchronous Clock Designs —— Clifford E.Cummings ↩︎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/496552.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ACM公布2017年图灵奖,大卫·帕特森和约翰·轩尼诗获奖

来源:网络大数据刚刚,美国计算机协会(ACM)宣布 John L. Hennessy 和 David A. Patterson 荣获 2017 年图灵奖。目前这两位学者都供职于谷歌,前者是谷歌母公司 Alphabet 的董事会主席,后者任谷歌杰出工程师,致力于研究机…

Java加密与解密的艺术~DES实现

密钥长度与安全性成正比,但Java仅支持56位密钥长度,作为补充,Bouncy Castle 提供64位密钥长度支持。在此基础上配合不同填充方式(如PKCS5Padding,PKCS7Padding),可显著提高加密系统的安全性。 D…

YOLOv8改进 | 主干篇 | 利用SENetV2改进网络结构 (全网首发改进)

一、本文介绍 本文给大家带来的改进机制是SENetV2,其是2023.11月的最新机制(所以大家想要发论文的可以在上面下点功夫),其是一种通过调整卷积网络中的通道关系来提升性能的网络结构。SENet并不是一个独立的网络模型,而是一个可以和现有的任何…

Linux学习路线及网络编程经典书籍

linux学习资源整理:https://zhuanlan.zhihu.com/p/22654634 Linux初学者(学习资料):https://zhuanlan.zhihu.com/p/21723250 知乎 - 你是如何学习 Linux 编程的?:https://www.zhihu.com/question/20730157 如果让你推荐一本 Linux…

在Windows 7解决GAC错误

调试一网站源代码出现下面的错误 错误 1 Could not load file or assembly Microsoft.ReportViewer.WebForms, Version8.0.0.0, Cultureneutral, PublicKeyTokenb03f5f7f11d50a3a or one of its dependencies. The system cannot find the file specified. D:\3layerhotel\WebS…

CVPR 2018 | 腾讯AI Lab入选21篇论文详解

来源:腾讯AI实验室近十年来在国际计算机视觉领域最具影响力、研究内容最全面的顶级学术会议CVPR,近日揭晓2018年收录论文名单,腾讯AI Lab共有21篇论文入选,位居国内企业前列,我们将在下文进行详解,欢迎交流与讨论。去年…

Java加密与解密的艺术~DESede实现

DESede 实现 /*** 2009-10-5*/ package org.zlex.chapter07_2;import java.security.Key;import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESedeKeySpec;/*…

推荐!神经进化才是深度学习未来的发展之路!

来源:全球人工智能过去几年时间里,我们有一个完整的团队致力于人工智能研究和实验。该团队专注于开发新的进化计算方法(EC),包括设计人工神经网络架构、构建商业应用程序,以及使用由自然进化激发的方法来解…

linux 命令:ping、fping、gping、hping3、tracert、traceroute

From: Nmap、Netcat、Hping3工具对比:http://www.2cto.com/article/201210/158961.html ​hping3 命令:http://man.linuxde.net/hping3 示例:Testing firewall rules with Hping3 :https://www.docin.com/p-74538211…

Java加密与解密的艺术~数字签名~模型分析

甲方作为消息的发送方,乙方作为消息的接收方。假设甲乙双方在消息传递之前已经指定了要使的数字签名算法(如RSA算法)。为完成签名验证,甲乙双方需要以下操作: 1)、由消息发送方(甲方&#xff09…

excel概率密度函数公式_标准正态分布密度函数公式

展开全部标准正态分布密度函数公式:正态曲线呈钟型62616964757a686964616fe58685e5aeb931333366306532,两头低,中间高,左右对称因其曲线呈钟形,因此人们又经常称之为钟形曲线。若随机变量X服从一个数学期望为μ、方差为…

2017-2018中国物联网产业全景图谱报告——物联网对产业深度变革已开启

来源:物联网智库丨公众号如果说2016年里物联网的产业生态各种要素已具备,那么2017年就是物联网对于国民经济产业变革的规模效应初显的一年,可以说是物联网对产业变革的元年。在这一过程中,通过二维生态图谱去了解过去一年的进展不…

Java加密与解密的艺术~数字签名~RSA实现

RSA 实现 /*** 2008-6-11*/ package org.zlex.chapter09_1;import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import …

科技部认定的独角兽名单来了!共164家

来源:中国证券报丨公众号 作者:杨洁今天上午, 科技部火炬中心、中关村管委会、长城战略咨询、中关村银行联合主办“2017中国独角兽企业发展报告”发布会。《2017中国独角兽企业发展报告》显示: 2017年中国独角兽企业共164家新晋62…

《Head First 设计模式》专题上线

立即访问《Head First 设计模式》专题 我们为这本经典图书制作了专题,也想在此了解一下园子里有哪些朋友看过这本书。 --- 博客园团队 2008年12月26日 转载于:https://www.cnblogs.com/bookshop/archive/2008/12/26/1363084.html

Java加密与解密的艺术~数字签名~DSA实现

DSA 实现 /*** 2008-6-13*/ package org.zlex.chapter09_2;import java.security.Key; import java.security.KeyFactory; import java.security.KeyPair; import java.security.KeyPairGenerator; import java.security.PrivateKey; import java.security.PublicKey; import …

tcpdump - 数据包进行截获的包分析工具

From:http://www.cnblogs.com/ggjucheng/archive/2012/01/14/2322659.html 30 分钟掌握 tcpdump:http://zhuanlan.51cto.com/art/201701/527498.htm Android tcpdump 下载:https://www.androidtcpdump.com/android-tcpdump/downloads tcpdum…

相持不下的争论:脑波,有用吗?

来源:原理、编译:糖兽在大脑中,存在着我们看不见的脑电活动。这些脑波是由在大脑周围大量存在神经细胞的协调发射而产生的,他们可以从大脑的前部传到后部,从大脑深处传到头皮。这种脑电活动被称为神经元振荡。有意思的…

CVS 客户端使用手册

IRLab 2003年2月10日 什么是CVS CVS(Version Control System.)即版本控制系统。用来记录源文件的历史信息。甚至二进制文件,媒体文件等。 例如,当软件修改时有时会产生Bugs,并且你可能在做这次修改后很长时间不会发现这…

redisserver是什么问题_面试官老是问:为什么采用单线程的Redis也会如此之快?...

Java面试笔试面经、Java技术每天学习一点公众号Java面试关注我不迷路作者:kaito来源:http://kaito-kidd.com/2020/06/28/why-redis-so-fast/众所周知,Redis在内存库数据库领域非常地火热,它极高的性能和丰富的数据结构为我们的开发…