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 所示。第一个虚线框内的也是一个电平到脉冲的转换单元,然后经过后面的脉冲到脉冲的同步电路,实现了电平到脉冲的同步。

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

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

相关文章

向华为学习:基于BLM模型的战略规划研讨会实操的详细说明,含研讨表单(一)

前面,华研荟用了三篇文章介绍华为战略规划的时候使用的其中一个工具:五看三定。一句话来说,五看三定是通过“五看”来知己知彼,然后设计业务,在选定的业务领域(方向)确定战略控制点,…

JedisCluster 通过 Pipeline 实现两套数据轮换更新

其他系列文章导航 Java基础合集数据结构与算法合集 设计模式合集 多线程合集 分布式合集 ES合集 文章目录 其他系列文章导航 文章目录 前言 一、整体流程 1.1 大致流程 1.2 流程代码解释 二、从数据库里查数据 2.1 SQL语句 三、更新当前前缀 3.1 设置前缀常量 3.2 初…

设计模式——原型模式(创建型)

引言 原型模式是一种创建型设计模式, 使你能够复制已有对象, 而又无需使代码依赖它们所属的类。 问题 如果你有一个对象, 并希望生成与其完全相同的一个复制品, 你该如何实现呢? 首先, 你必须新建一个属于…

overleaf 加载pdf格式的矢量图时,visio 图片保存为pdf格式,如何确保pdf页面大小和图片一致

Overleaf支持多种矢量图形格式,其中一些常见的包括: PDF(Portable Document Format): PDF是一种常见的矢量图形格式,Overleaf可以直接加载和显示PDF文件。许多绘图工具和LaTeX生成的图形都可以导出为PDF格式…

vue中哪些数组的方法可以做到响应式

Vue2 中为什么直接通过数组的索引修改元素是不会触发视图更新 vue2 为什么不直接监听数组 Vue2 对于数组提供了一些变异方法 重写数组方法源码分析 定义拦截器将拦截器挂载到数组上面收集依赖 扩展:理解Vue2如何解决数组和对象的响应式问题 对复杂对象的处理 复杂对…

【ThemeStudio】安装报错A Javascript error occurred in the main process

报错内容: 问题原因:系统环境缺少microsoft visual c插件 解决方法: 下载 微软VC 地址

elementui + vue2实现表格行的上下移动

场景&#xff1a; 如上&#xff0c;要实现表格行的上下移动 实现&#xff1a; <el-dialogappend-to-bodytitle"条件编辑":visible.sync"dialogVisible"width"60%"><el-table :data"data1" border style"width: 100%&q…

爬虫akamai案例:DHL国际物流

声明&#xff1a; 该文章为学习使用&#xff0c;严禁用于商业用途和非法用途&#xff0c;违者后果自负&#xff0c;由此产生的一切后果均与作者无关 一、Akamai简介 Akamai是一家提供内容传递网络&#xff08;CDN&#xff09;和云服务的公司。CDN通过将内容分发到全球各地的服…

uniapp:使用fixed定位,iOS平台的安全区域问题解决

manifest.json > 添加节点 "safearea": { //iOS平台的安全区域"background": "#1C1E22","backgroundDark": "#1C1E22", // HX 3.1.19支持"bottom": {"offset": "auto"} },已解决&#xff…

call 和 apply:改变对象行为的秘密武器(下)

&#x1f90d; 前端开发工程师&#xff08;主业&#xff09;、技术博主&#xff08;副业&#xff09;、已过CET6 &#x1f368; 阿珊和她的猫_CSDN个人主页 &#x1f560; 牛客高级专题作者、在牛客打造高质量专栏《前端面试必备》 &#x1f35a; 蓝桥云课签约作者、已在蓝桥云…

docker consul 容器的自动发现与注册

consul相关知识 什么是注册与发现 服务注册与发现是微服务架构中不可或缺的重要组件。起初服务都是单节点的&#xff0c;不保障高可用性&#xff0c;也不考虑服务的压力承载&#xff0c;服务之间调用单纯的通过接口访问。直到后来出现了多个节点的分布式架构&#xff0c;起初的…

flowable工作流看这一篇就够了(高级篇 上)

目录 一、Flowable基础表结构 1.1、表结构讲解 1.2、ProcessEngine讲解 1.2.1、硬编码的方式 1.2.2、配置文件 1.2.3、自定义配置文件 1.3、Service服务接口 1.3.1、Service创建方式 1.3.2、Service总览 1.4、图标介绍 1.4.1、事件图标 1.4.2、活动(任务)图标 1.4…