SoC中跨时钟域的信号同步设计(单比特同步设计)

一、   亚稳态   

        在数字电路中,触发器是一种很常用的器件。对于任意一个触发器,都由其参数库文件规定了能正常使用的“建立时间”(Setup time)和“保持时间”(Hold time )两个参数。“建立时间”是指在时钟沿到来之前,触发器输入信号必须保持稳定的时间。“保持时间”则是指在时钟沿之后,信号必须保持稳定的时间。这些指标通常比较保守,以应对电源电压、工作温度、信号质量以及制
造工艺等各种可能的差异。
        异步时序电路中有多个独立的时钟源,不同时钟源存在频率和相位的差异,当数据信号通过两个时钟域的交界处时,将会分别由这两个时钟来控制信号的值。此时如果两时钟信号的敏感沿非常接近并超过了允许的额度,则将出现数据信号的不稳定,即电路陷入亚稳态,也称为同步失败  。如图 1 (a )所示。因为触发器内部数据的形成需要一定的时间,如果不满足建立和保持时间,触发器将进入亚稳  ,其输出在经过一段时间的不确定状态后才能随机地稳定到0 或1 。这个不可预知的状态就是亚稳态,亚稳态的形成过程如图1 ( b )所示。而且这种亚稳态可能向后传播,造成后级出现逻辑错误。通常触发器进入瞬时亚稳态,也会马上重新进入稳态,但此时输出值往往是不确定的,如输入端为数字信号,输出端为错误的数据,如输入端是时序信号,输出
端可能是错误的时序逻辑 ,这是时序逻辑设计中必须避免的。

二、  同步器的设计和分析

        在实际中,常用的是采用两级触发器串联的同步器(如图2(a ))。这种用两级触发器串联的同步器亦称为电平同步器(The Level Synchronizer ),它是其他同步器的基础。两级触发器的原理是降低出现亚稳态的概率,使其很小。由上述分析可以看出,来自前一个时钟域的信号到达下一个时钟域的第 1个触发器时,很可能出现不满足建立/保持时间的情况,而导致触发器的输出端 Q 长时间处在亚稳态状态。如果这种状态持续不到一个周期,可以通过增加一级触发器来消除该亚稳态,使第 2 级触发器的输出端满足同步信号的要求,达到异步电路同步化的效果 。图 2 (b )描述了由两级触发器构成的同步器对亚稳态的抑制过程。
        对于电平同步器,它能将原时钟域的输出电平信号(保险起见,电平信号应保持大于两个同步时钟周期),转换成目标时钟域的同步输入电平信号 。虽然两级触发器能有效抑制亚稳态,但增加一级 D 触发器就增加了对输入信号的一级延时。因此,对于高速率数字电路的同步器,通常采取的策略是用触发器级联来实现时间缓冲,为电路从亚稳态下恢复过来提供时间,即以时间延迟为代价,降低亚稳态的发生对电路的影响。

        两级触发器法在两个异步时钟频率相差不大的情况下比较适合。在信号从快时钟域向慢时钟域过渡时,如果信号变化太快,慢时钟将可能无法对该信号进行正确的采样,导致采样失败。使用两级触发器法时,应使原时钟域的信号保持足够长的时间,以便另一个时钟域的触发器可以正确地对其采样。电平同步器的最大优点就是结构简单,同时,缺点也十分明显,当目的时钟域频率小于源时钟域频率的 2 倍时,它就不能很好地工作  。基于这个原因,本文提出了4种对两个异步时钟频率大小关系没有要求的同步器。

2.1  脉冲到脉冲的同步

        在实际的应用当中,当需要将原时钟域的一个脉冲信号同步到目标时钟域的脉冲信号时,往往会使用这种脉冲到脉冲的同步方式。图3代表该电路的具体电路结构。clk1 代表原时钟域的时钟信号,clk2代表目的时钟域的时钟信号。这个同步电路实现的是把一个时钟域的脉冲信号同步到另一个时钟域,在目标时钟域产生一个脉冲。并且对源时钟域的时钟频率和目标时钟域的频率大小关系没有要求。

        输入信号来自原时钟域,是一个单时钟宽度脉冲,它触发原时钟域中的一个翻转电路。每当翻转电路接收到一个脉冲时,它就会在高、低电平间进行转换,然后通过电平同步器到达异或门的一个输入端,而另一个信号经一个时钟周期的延迟进入异或门的另一端,翻转电路每转换一次状态,这个同步器的输出端就产生一个单时钟宽度的脉冲。如此这样,就实现了不同时钟域内的脉冲
信号的同步。

        这种脉冲同步器虽然对时钟频率没有要求,但是对两个脉冲之间的间隔是有要求的,如果前后两个脉冲间隔太小,同步以后的脉冲不能分辨这是两个脉冲,会导致最后的同步输出把两个脉冲连在一起输出。甚至当脉冲间隔小于目标时钟域的时钟周期时,则同步器就不能检测到每个脉冲。后面讨论的几种结构的同步器都是基于这种脉冲到脉冲的同步器设计的,所以都对相邻两次脉冲脉冲信号或者电平信号都不能离的太近。为了防止这种现象发生,最好保证相邻两次的脉冲间隔大于2个目标域时钟周期。

2.2  脉冲到电平同步

        在实际应用当中,有时需要脉冲到电平的同步,实现方法和脉冲到脉冲的同步大体相同,区
别在于,脉冲到电平的同步需要对电平维持时间的控制。具体的电路实现如图 5 所示。
        脉冲到电平的同步和脉冲到脉冲的同步实现原理相同,脉冲到电平同步电路多了一个电平
宽度控制电路,电平宽度控制信号level_clear_i是由目标时钟域时钟控制生成的。根据电路不同的需求,有电平宽度控制信号产生不同宽度的电平信号。

2.3  电平到电平的同步

        实际应用中,如果是慢时钟域到快时钟域的同步,电平到电平的同步两级异步触发器就可以完成,但是两级触发器构成的同步只适合时钟域时钟相差不大或者慢始终域到快时钟域的情况。该电平到电平的同步电路是在脉冲到电平的同步电路之前加一个电平到脉冲的转换电路。具体的电路实现如图7所示。图7左边第一个虚线框里是一个电平到脉冲的转换单元,通过这个转换单元实现在原时钟域内将电平转换成与原时钟域同步的脉冲信号,然后经过第二个虚线框内的脉冲到电平的同步电路,实现了原时钟域的电平信号到目标时钟域的电平信号的同步。

2.4  电平到脉冲的同步

        电平到脉冲的同步和电平到电平的同步实现方法相似,将图 7 中第二个虚线框内的电路替换成脉冲到脉冲的同步即可,具体的电路结构图如图 8 所示。第一个虚线框内的也是一个电平到脉冲的转换单元,然后经过后面的脉冲到脉冲的同步电路,实现了电平到脉冲的同步。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】C的面向对象

一、BREW接口实现 高通的BREW(Binary Runtime Environment for Wireless)是一个早期为手机设备开发的应用程序平台,用于开发在CDMA手机上运行的软件。尽管这个平台目前已经不太流行,但是在其使用高峰时期,开发者需要使…

【深度学习目标检测】七、基于深度学习的火灾烟雾识别(python,目标检测,yolov8)

YOLOv8是一种物体检测算法,是YOLO系列算法的最新版本。 YOLO(You Only Look Once)是一种实时物体检测算法,其优势在于快速且准确的检测结果。YOLOv8在之前的版本基础上进行了一系列改进和优化,提高了检测速度和准确性。…

C/C++ STL提供的序列式容器之deque

deque是双向开口的连续内存空间(动态将多个连续空间通过指针数组接合在一起),随时可以增加一段新的空间。 deque 的最大任务就是在这些分段的连续空间上,维护其整体连续的假象,并提供随机存取的接口。 特点 1. 一…

v-show和v-if有什么区别?使用场景分别是什么?

一、v-show与v-if的共同点 我们都知道在 vue 中 v-show 与 v-if 的作用效果是相同的(不含v-else)&#xff0c;都能控制元素在页面是否显示 在用法上也是相同的 <Model v-show"isShow" /> <Model v-if"isShow" />1 2 当表达式为true的时候&…

RK3588安装TVM-CPU版本

1.背景 TVM是一个开源的机器学习编译器栈&#xff0c;用于优化和编译深度学习模型&#xff0c;以在各种硬件平台上实现高效性能。以下是关于TVM的详细介绍&#xff1a; TVM的目标是将深度学习模型的优化和编译过程自动化&#xff0c;以便开发人员可以轻松地将其模型部署到各种…

HACON error #2453:

问题&#xff1a;HALCON handle is NULL in operator grab_image_async" 分析&#xff1a;句柄为空&#xff0c;因为提前hv_AcqHandle.Dispose();将句柄释放掉了 解决方案&#xff1a;屏蔽此语句

【Spring】06 生命周期之销毁回调

文章目录 1. 回调是什么2. 销毁回调2.1 实现 DisposableBean 接口2.2 配置 destroy-method 3. 执行顺序4. 应用场景总结 在 Spring 框架中&#xff0c;生命周期回调&#xff08;Lifecycle Callbacks&#xff09;是一种强大的机制&#xff0c;它允许我们在 Spring 容器中的 Bean…

【Vue】日期格式化(全局)

系列文章 【Vue】vue增加导航标签 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/134965353 【Vue】Element开发笔记 本文链接&#xff1a;https://blog.csdn.net/youcheng_ge/article/details/133947977 【Vue】vue&#xff0c;在Windows IIS平台…

基于若依搭建微服务nacos版本(ruoyi-Cloud前后端分离)

说明&#xff1a;本文介绍基于Ruoyi-Cloud前后端分离nacos版本的微服务从0到1的搭建过程&#xff0c;同时新增一个新的微服务模块。是基于官方文档的补充说明&#xff0c;需要结合Ruoyi-Cloud的官方文档 https://doc.ruoyi.vip/ruoyi-cloud/ 如果直接查看官方文档便可成功部署&…

Linux Conda 安装 Jupyter

在Linux服务器Conda环境上安装Jupyter过程中遇到了无数的报错&#xff0c;特此记录。 目录 步骤一&#xff1a;安装Anaconda3 步骤二&#xff1a;配置Conda源 步骤三&#xff1a;安装Jupyter 安装报错&#xff1a;simplejson.errors.JSONDecodeError 安装报错&#xff1a;…

Linux---重定向命令

1. 重定向命令的介绍 重定向也称为输出重定向&#xff0c;把在终端执行命令的结果保存到目标文件。 2. 重定向命令的使用 命令说明>如果文件存在会覆盖原有文件内容&#xff0c;相当于文件操作中的‘w’模式>>如果文件存在会追加写入文件末尾&#xff0c;相当于文件…

DevOps云原生创建devops流水线(微服务项目上传git,打包镜像,部署k8s)

开发和运维人员的解决方案 一、中间件的部署&#xff08;Sentinel/MongoDB/MySQL&#xff09; 二、创建DevOps工程 邀请成员 三、创建流水线 四、编辑流水线 ①、拉取代码&#xff08;若失败&#xff0c;则将制定容器改为maven&#xff09; 若失败&#xff0c;则将命令改…

P1789 【Mc生存】插火把

题目描述 话说有一天 linyorson 在“我的世界”开了一个 nn 的方阵&#xff0c;现在他有 m 个火把和 k 个萤石&#xff0c;分别放在 (x1​,y1​)∼(xm​,ym​) 和 (o1​,p1​)∼(ok​,pk​) 的位置&#xff0c;没有光并且没放东西的地方会生成怪物。请问在这个方阵中有几个点会…

Python 实现:OCR在图片中提取文字(基于Gradio实现)

Paddle OCR PaddleOCR 基于深度学习技术实现的&#xff0c;使用十分简单。 先看效果 可以看出来识别效果还是不错的&#xff0c;里面的“湿”字识别成了繁体字。如果不是连体字&#xff0c;就不会出现这个问题。 1.测试环境 操作系统&#xff1a;Win10 Python&#xff1a;3…

KVM虚拟机console使用

注意这些设置都在你要进入虚拟机里设置&#xff0c;不是在你的物理机设置 首先debian12 需要设置 grep ttyS0 /etc/securetty #没有则加上 echo ttyS0 >> /etc/securetty #启动 systemctl start serial-gettyttyS0 systemctl enable serial-gettyttyS0#CentOS Stream …

广西开放大学形成性考核 平时作业 统一资料 参考

试卷代号&#xff1a;1293 心理学 参考试题 一、选择题&#xff08;每个3分&#xff0c;共30分&#xff0c;含单选和多选&#xff0c;请将正确答案的字母序号填入括号中&#xff09; 1.人们通常把下列图形知觉为一个连续、完整的形状&#xff0c;说明图形知觉遵循( )。…

转载:TableView性能优化

转载&#xff1a;TableView性能优化 原文链接&#xff1a;https://juejin.cn/post/6955731915672387592 tableView性能优化 Cell重用、标识重用 使用 static 修饰重用标识名称能够保证这个标识只会创建一次&#xff0c;提高性能。接着调用dequeueReusableCellWithIdentifie…

超详细的80个Python入门实例,附源码,大学装逼必备!

对于大部分Python学习者来说&#xff0c;核心知识基本已经掌握了&#xff0c;但"纸上得来终觉浅,绝知此事要躬行"&#xff0c;要想完全掌握Python&#xff0c;还得靠实践应用。 今天给大家分享80个Python入门实例&#xff0c;都是基础实例&#xff0c;经典实用&…

人工智能深度学习100种网络模型,精心整理,全网最全,PyTorch框架逐一搭建

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能深度学习100种网络模型&#xff0c;这些模型可以用PyTorch深度学习框架搭建。模型按照个人学习顺序进行排序&#xff1a; 深度学习模型 ANN (Artificial Neural Network) - 人工神经网络&#xff1a;基本…

JavaSE语法之七:封装

文章目录 一、封装的概念二、访问限定符三、封装扩展之包1. 包的概念2. 导入包中的类3. 自定义包4. 常见的包 四、实现封装五、static成员1. 再谈学生类成员变量2. static修饰成员变量3. static修饰成员方法4. static成员变量初始化 六、代码块1. 代码块概念及其分类2. 普通代码…