跨时钟域(Clock Domain Crossing,CDC)

news2024/11/24 9:26:03

本文参考:http://t.csdnimg.cn/VHga2

【数字IC基础】跨时钟域(CDC,Clock Domain Crossing)_ReRrain的博客-CSDN博客

同步设计:所有设计使用同一时钟源,频率相位可预知。

异步设计:设计中有两个或以上的时钟,且时钟之间是同频不同相或不同频的关系。

亚稳态:如果D在Tsu和Th时间内不断变化(非定值),导致触发器在触发沿时不知道应该输出高电平还是低电平,输出端处于不确定状态,这便是亚稳态,当输出端恢复稳定之后,这个输出值是随机的,与输入没有逻辑关系。常常出现在跨时钟域信号传输(时钟相移未知)、异步复位信号(任意时间到达寄存器)、异步信号采集等。

通俗来讲,一个时钟源就代表一个时钟域,跨时钟域就是把数据从一个时钟域传输到另一个时钟域。

       跨时钟域的本质问题是:亚稳态。(还是建立时间、保持时间的问题),分为单比特亚稳态与多比特亚稳态。注意:组合逻辑才有竞争冒险,时序逻辑为亚稳态。

解决亚稳态问题的常用方法为用寄存器打拍,但是只能保证后续电路输出的稳定性,不能保证正确性。

       打拍通常打两拍,解释:引入一个MTBF(平均失效时间间隔),即触发器采样失败的时间间隔:

MTBF越大,亚稳态对电路产生的影响越小。文献指出,对于一个采样频率为200MHz的系统,不做同步MTBF=2.5us,一级同步MTBF=23年,二级同步MTBF=640年。一级同步不太稳定,二级同步够用,三级同步会增加面积且可能影响系统性能,没必要。所以常常打两拍来消除亚稳态。跨时钟域常见以下场景:

①多路扇出:如果一个时钟域A的信号同时输出到时钟域B去驱动多个触发器,由于经过不同路径,多路扇出的值不一定相同。(如一个使能信号使能后续多个模块)

解决方法:在时钟域B打两拍后再多路扇出。

②数据丢失:信号长度太短,采样时钟频率太快,导致没踩到数据,或者漏采样。

解决方法:展宽信号。

③异步复位:异步复位信号释放时不满足recovery time 和 removal time,产生亚稳态。

解决方法:异步复位同步释放,即通过寄存器改变释放的时间,同步处理。

 

       ①单bit亚稳态:用两级D触发器做同步处理。如果时钟域A发出的信号经过了组合逻辑电路再传输到时钟域B,那么需要先在组合逻辑后先接一级时钟域A的寄存器,再打两拍时钟域B的寄存器进行同步。

       ②多bit亚稳态:数据收敛,确保一组相关联的同步信号在经过不同的路径后可以在某一相同的时钟周期正确到达另一个时钟域。

单比特电平信号:用两级D触发器做同步处理

单比特脉冲信号:

①从慢时钟域到快时钟域:打两拍(两级D触发器),再边沿检测

②从快时钟域到慢时钟域:先在快时钟域进行脉冲展宽,同步后再传输到慢时钟域进行边沿检测。

多比特信号:

1.格雷码+双DFF(即打两拍):常用于异步FIFO中读写地址的跨时钟域传输。

如图,格雷码两个连续值仅相差一位,所以在FIFO读写地址的增减过程中,每次地址位只变化一位,本身出现亚稳态的几率就比二进制低了不少。此外,可以保证FIFO数据安全写入读出的标准。当然,应用格雷码时必须保证首尾只有1bit不同,即数据个数必须为2^n,否则首尾不满足只差1位。

二进制转格雷码一般通过组合逻辑实现,所以输出后要先加一级DFF,保证输出数据的稳定性。

2.握手协议:讲多比特数据的跨时钟传输问题转换成单个信号的跨时钟传输,即引入请求信号req和应答信号ack进行同步,只对req和ack进行同步。数据准备好了再发出req,就只有req可能有亚稳态问题,因为data已经稳定不变了。握手即req+ack。

3.DMUX(D触发器加二选一选通器):通过使能信号判断多比特data是否已经稳定,稳定则选通当前data;不稳定则选通之前的data。所以需要暂存前一时刻的data。

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

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

相关文章

MATLAB|风玫瑰图

目录 扫一扫关注公众号 效果图 粉丝给的图: 复刻的图: 其他样式效果: 数据 绘图教程 绘制左边Y轴 绘制主、次网格和主、次刻度的极坐标区域。 添加刮风数据,添加数据和颜色、图列大小映射关系。 颜色条绘制​​​​​​…

在mac上使用jmap -heap命令报错:Attaching to process ID 96530, please wait...

在mac上执行命令jmap -heap 96530 报错: Attaching to process ID 96530, please wait... ERROR: attach: task_for_pid(96530) failed: (os/kern) failure (5) Error attaching to process: sun.jvm.hotspot.debugger.DebuggerException: Cant attach to the proc…

数据结构(超详细讲解!!)第二十二节 广义表

1.定义 广义表,顾名思义,也是线性表的一种推广。广义表被广泛地应用于人工智能等领域的表处理语言LISP语言中。在LISP语言中,广义表是一种最基本的数据结构,就连LISP 语言的程序也表示为一系列的广义表。 广义表又称列表&#x…

【Mysql】去重(distinct)

目录 distinct 单字段 多字段 统计( count ) distinct name为张三的有5条数据并且重复 单字段 语法: select distnct 字段名 from 表 这里的去重并不是删掉重复 多字段 select distinct 字段名1,字段名2 from 表 统计( coun…

2020 ICPC 澳门(G,J,I)详解

链接&#xff1a;The 2020 ICPC Asia Macau Regional Contest G Game on Sequence 题意 给定长度为 n n n 数组 a i a_i ai​&#xff0c;A与G博弈&#xff0c;G先手&#xff0c;给定初始位置 k k k&#xff0c;若当前在 i i i 点转移到 j j j&#xff0c;满足 i <…

Google play的企业开发者账号比个人号上包成功率更高?

众所周知&#xff0c;Google play作为全球最大的Android应用市场&#xff0c;是开发者们推广应用的首选平台。Google play平台提供了两种账号类型&#xff1a;个人开发者和企业开发者&#xff0c;开发者们可以选择创建个人开发者账号或者企业开发者账号进行应用上架。 不过&am…

NR DCI size alignment

DCI对齐在38.212 7.3.1.0 DCI size alignment 中讲述。 Step 0 CSS 下&#xff0c;DCI 0_0根据初始UL BWP 确定大小&#xff0c;DCI 1_0 根据CORESET0 或初始DL BWP&#xff08;没有CORESET 0时&#xff09; 确定大小 根据激活的UL/DL BWP 确定DCI 0_0和DCI 1_0 的size&…

图的算法

拓扑排序算法 解析 要求&#xff1a;无环有向图 编译过程使用的是拓扑排序。A依赖BCD&#xff0c;在BCD三个文件编译完成才能引入A&#xff1b;B依赖ECD&#xff0c;在ECD三个文件编译完成才能引入B。拓扑排序排出整体的编译顺序E→CD→B→A 算法实现 找到整个图入度为0的点&…

《第三期(先导课)》之《Python 开发环境搭建》

文章目录 《第 1 节 初始Python》《第 6 节 pip包管理工具》 《第 1 节 初始Python》 。。。 《第 6 节 pip包管理工具》 pip是Python的包管理工具,用于安装、升级和管理Python包。 pip是Python标准库之外的一个第三方工具,可以从Python Package Index(PyPI)下载和安装各种P…

频次最高的38道selenium面试题及答案

1、selenium的原理是什么&#xff1f; selenium的原理涉及到3个部分&#xff0c;分别是&#xff1a; 浏览器driver&#xff1a;一般我们都会下载driverclient&#xff1a;也就是我们写的代码 client其实并不知道浏览器是怎么工作的&#xff0c;但是driver知道&#xff0c;在…

机器学习中的决策阈值

什么是决策阈值&#xff1f; sklearn不允许我们直接设置决策阈值&#xff0c;但它允许我们访问用于进行预测的决策分数&#xff08;决策函数o/p&#xff09;。我们可以从决策函数输出中选择最佳得分并将其设置为决策阈值&#xff0c;并且将小于该决策阈值的所有那些决策得分值…

点信息标注_BillboardTextActor3D

开发环境&#xff1a; Windows 11 家庭中文版Microsoft Visual Studio Community 2019VTK-9.3.0.rc0vtk-example参考代码 demo解决问题&#xff1a;点附近创建左边或其他信息&#xff0c;且信息面板显示状态不受相机缩放、旋转影响 prj name: BillboardTextActor3D #include…

【Qt之QMetaType】使用

介绍 QMetaType类管理元对象系统中的命名类型。 该类用作QVariant和排队的信号与槽连接中类型的编组辅助器。它将类型名称与类型关联起来&#xff0c;以便可以在运行时动态创建和销毁它。使用Q_DECLARE_METATYPE()声明新类型&#xff0c;以使它们可供QVariant和其他基于模板的…

民生画派创始人张龙(天驰)作品

简介 张龙&#xff08;天驰&#xff09; 中国民生画派创始人 首届“陆俨少奖”金奖得主 人民大学巨幅主题创作高级研修班导师 中央美院客座教授 神舟十二号载人飞船遨游太空搭载作品创作者 被评为2021、2022年年度最具收藏价值艺术家 中国美术家协会会员 中国美术家协…

【CesiumJS入门】(11)加载LAS点云数据

前言 最近有两次投递简历以及面试都被问到了是否有三维点云数据处理相关的经验。然而我的岗位都没有和点云相关的工作任务&#xff0c;所以还是得自己加把劲呀。 本篇将从数据获取到加载来简易地介绍一个LAS点云数据的加载。 加载数据 首先&#xff0c;你得有一份LAS格式的…

Python实验项目6 :文件操作与模块化

1、使用random库&#xff0c;产生10个100到200之间的随机数&#xff0c;并求其最大值、平均值、标准差和中位数。 # 1、使用random库&#xff0c;产生10个100到200之间的随机数&#xff0c;并求其最大值、平均值、标准差和中位数。 import random # 定义一个列表 list[] for i …

MySQL–第4关:查询用户日活数及支付金额

MySQL–第4关&#xff1a;查询用户日活数及支付金额 – WhiteNights Site 标签&#xff1a;MySQL 非常好的题&#xff0c;爱来自中国。 题目 没啥用 任务描述 现有3张业务表&#xff0c;详见如下: 需要输出结果如下&#xff0c;没有支付的日期不需要显示&#xff0c;请写出对…

Leetcode---370周赛

题目列表 2923. 找到冠军 I 2924. 找到冠军 II 2925. 在树上执行操作以后得到的最大分数 2926. 平衡子序列的最大和 一、找到冠军I 第一题模拟题&#xff0c;简单来说是看每一行(列)是否全是1&#xff0c;当然不包括自己比自己强的情况&#xff0c;需要特判 代码如下 …

python回文日期 并输出下一个ABABBABA型回文日期

题目&#xff1a; 输入&#xff1a; 输入包含一个八位整数N&#xff0c;表示日期 对于所有的测评用例&#xff0c;10000101 ≤N≤89991231&#xff0c;保证N是一个合法日期的8位数表示 输出&#xff1a; 输出两行&#xff0c;每行一个八位数。第一行表示下一个回文日期第二…

任务管理器的正确使用教程

快捷键 Ctrlshiftesc&#xff1a;进入任务管理器 我以Win11举例 如何给XX排序 给XX排序&#xff0c;点击空白处可以选择某项降序排列&#xff08;可以找到最占用某项资料的程序&#xff09;&#xff0c;再点击空白处可以选择某项升序排列 文件正在使用&#xff0c;如何解决 …