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.mzph.cn/news/226659.shtml

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

相关文章

【MySQL学习之基础篇】多表查询

文章目录 1. 多表关系1.1. 一对多1.2. 多对多1.3. 一对一 2. 多表查询概述2.1. 数据准备2.2. 概述 3. 查询的分类3.1. 内连接查询3.2. 外连接查询3.3. 自连接3.3.1. 自连接查询3.3.2. 联合查询 3.4. 子查询3.4.1. 概述3.4.2. 标量子查询3.4.3. 列子查询3.4.4. 行子查询3.4.5. 表…

python+requests+pytest 接口自动化实现

最近工作之余拿公司的项目写了一个接口测试框架,功能还不是很完善,算是抛砖引玉了,欢迎各位来吐槽。 主要思路: ①对 requests 进行二次封装,做到定制化效果 ②使用 excel 存放接口请求数据,作为数据驱动 ③…

LeetCode(60)K 个一组翻转链表【链表】【困难】

目录 1.题目2.答案3.提交结果截图 链接: K 个一组翻转链表 1.题目 给你链表的头节点 head ,每 k 个节点一组进行翻转,请你返回修改后的链表。 k 是一个正整数,它的值小于或等于链表的长度。如果节点总数不是 k 的整数倍&#xf…

Modbus转Profinet网关使用方法

Modbus转Profinet网关(XD-MDPN100/200)是用于将Modbus协议和Profinet协议进行转换并进行通迅的设备。Modbus转Profinet网关(XD-MDPN100/200)无论是新项目还是改造项目都可轻松配置完成通迅互联。 正确的安装和配置对于确保设备的正…

低代码核心能力详解:简化应用开发的新思路

低代码平台作为一种快速地应用开发解决方法,为中小企业实现数字化转型提供了机会。但是,对于一些刚开始触碰低代码平台的企业来说,了解其核心能力是很重要的。本文将详细分析低代码平台的核心能力,并在挑选低代码平台以前为中小企…

云原生之深入解析OOM和CPU节流

一、前言 使用 Kubernetes 时,内存不足 (OOM) 错误和 CPU 节流是云应用程序中资源处理的主要难题,这是为什么呢?云应用程序中的 CPU 和内存要求变得越来越重要,因为它们与云成本直接相关。通过 limits 和 requests ,可…

航带模式拍完之后用重建大师跑出来的模型是弧形的,怎么处理?

答:空三设置-更多设置-定位方式中选择pos高精度,再跑一下看看。 重建大师是一款专为超大规模实景三维数据生产而设计的集群并行处理软件,输入倾斜照片,激光点云,POS信息及像控点,输出高精度彩色网格模型&a…

k8s-Pod

1、Pod 简介: (1) 概念: Pod 是 Kubernetes 中创建和管理的,最小的可部署的计算单元。Pod中存储了一组(一个或多个)容器,以及怎样运行这些容器的声明,这些容器共享存储、网络和环境&#xff0…

早上好,我的leetcode 【hash】(第二期)

写在前面:坚持才是最难的事情 C代码还是不方便写,改用python了,TAT 文章目录 1.两数之和49. 字母异位词分组128.最长连续序列 1.两数之和 你好,梦开始的地方~ https://leetcode.cn/problems/two-sum/description/?envTypestudy…

《打造第二大脑》—如何构建高效的笔记系统

最近看了一本书,因为我也用Obsidian来记笔记,(Obsidian之前有介绍过Obsidian使用教程(如何构建你的个人知识库,第二大脑))看完这本书后发现里面给的方法跟Obsidian很契合,所以就整理…

STM32单片机输出频率及占空比可调的PWM波

一、测试用环境 STM32F103C8T6&#xff0c;HAL库。 只考虑PWM的频率和占空比两个参数&#xff0c;死区、极性、对齐方式等不做讨论。 二、STM32Cube MX配置 1.PWM原理 上图中&#xff0c;定时器向上计数&#xff0c;当CNT<CCRx时&#xff0c;输出0&#xff0c;当CNT>C…

linux下的strerror和perror处理错误函数

strerror和perror是C语言中用于处理错误信息的函数。 strerror函数&#xff1a; strerror函数用于将错误码转换为对应的错误消息字符串。它接受一个整数参数&#xff0c;通常是由系统调用或库函数返回的错误码&#xff0c;然后返回一个描述该错误的字符串。 函数原型&#xff1…

PrimDiffusion:3D 人类生成的体积基元扩散模型NeurIPS 2023

NeurIPS2023 &#xff0c;这是一种用于 3D 人体生成的体积基元扩散模型&#xff0c;可通过离体拓扑实现明确的姿势、视图和形状控制。 PrimDiffusion 对一组紧凑地代表 3D 人体的基元执行扩散和去噪过程。这种生成建模可以实现明确的姿势、视图和形状控制&#xff0c;并能够在…

化学方程式小程序

brief introduction 相信大家上中学时都会被化学方程式折腾得死去活来&#xff0c;尤其是配平&#xff0c;怎么也算不对数字。于是我写出了这款近200行的自动配平程序&#xff0c;这是不是你们黑暗化学中的一丝光亮呢&#xff1f; usage 正常化学式输入&#xff0c;每一种物…

D33|动态规划!启程!

1.动态规划五部曲&#xff1a; 1&#xff09;确定dp数组&#xff08;dp table&#xff09;以及下标的含义 2&#xff09;确定递推公式 3&#xff09;dp数组如何初始化 4&#xff09;确定遍历顺序 5&#xff09;举例推导dp数组 2.动态规划应该如何debug 找问题的最好方式就是把…

软件测试面试八股文(答案解析+视频教程)

1、B/S架构和C/S架构区别 B/S 只需要有操作系统和浏览器就行&#xff0c;可以实现跨平台&#xff0c;客户端零维护&#xff0c;维护成本低&#xff0c;但是个性化能力低&#xff0c;响应速度较慢。 C/S响应速度快&#xff0c;安全性强&#xff0c;一般应用于局域网中&#xf…

Yoast SEO Premium v21.7 Premium WordPress 插件Yoast +子插件介绍

什么是Yoast SEO&#xff1f; Yoast SEO 是 WordPress 的 SEO 插件&#xff0c;可帮助网站所有者针对搜索引擎优化他们的网站。该插件由 Joost de Valk 于 2008 年创建&#xff0c;旨在让每个人都能访问 SEO。今天&#xff0c;Yoast SEO 是全球数百万 WordPress 用户使用的最受…

如何对比云渲染平台优劣?到底哪一家好一些?

云渲染作为共享经济的一种体现&#xff0c;在强大计算资源共享的趋势下对个人用户和渲染团队的作品制作提供了巨大的便利。云渲染服务让CG艺术家无需自己投资昂贵的硬件设备&#xff0c;而可以通过网络提交渲染任务到云平台并利用其强大的共享计算资源&#xff0c;不但有效节约…

利用腾讯微搭平台连接MYSQL

首先&#xff0c;找到控制台 然后再控制台搜索&#xff1a;微搭 然后点击进入&#xff1a; 这里如果是第一次进入&#xff0c;他应该会提示要创建环境。 然后按照这个步骤&#xff1a; 然后进入这个页面&#xff0c;点击编辑器&#xff1a; 然后在这里搜索表格&#xff1a; 点…

springboot应用,cpu高、内存高问题排查

前几天&#xff0c;排查了2个生产问题。一个cpu高&#xff0c;一个内存高。今天把解决过程整理一下 文章目录 1、cpu高问题排查1.1、获取栈日志1.2、分析栈日志 2、内存高问题排查2.1、dump日志分析2.2、堆内存使用情况2.3、解决方案2.4、arthas trace解决问题2.5、总结 1、cp…