跨时钟域学习记录(一)

亚稳态

  亚稳态是电平介于高低电平之间的一种暂时状态。在同步系统中,当寄存器的信号无法满足建立时间和保持时间时,输出端的信号就可能出现亚稳态。在异步系统中,亚稳态并非一定在建立时间和保持时间无法满足时出现。
  受噪声、温度、电压纹波等因素的影响,多数情况下,信号在经过一段时间(受工作条件影响)后会从亚稳态回到一个稳定的状态,然而具体逻辑电平的值是不可预知的(0或1)。
  下图以滚球模型形式介绍了寄存器输出的三种可能状态。
在这里插入图片描述

  亚稳态发生时,寄存器输出信号存在0、1、亚稳态三种可能,可能会导致下级电路出现不可预测的故障行为。不从根本上遏制亚稳态的传输,会增大系统故障概率。

平均故障时间与故障概率

  • 平均故障时间

  衡量两次亚稳态导致系统故障的平均时间可以用平均故障时间(MTBF, mean time before failure)表示,
M T B F = e t M E T / C 2 C 1 f c l k 1 f c l k 2 MTBF=\frac {e^{t_{MET} / C_2}} {C_1 f_{clk1} f_{clk2}} MTBF=C1fclk1fclk2etMET/C2
  其中 C 1 C_1 C1 C 2 C_2 C2为与工艺、工作条件相关的常量, f c l k 1 f_{clk1} fclk1 f c l k 2 f_{clk2} fclk2为进行同步的两个时钟的时钟频率, t M E T t_{MET} tMET是同步链中所有寄存器输出信号时序裕量之和。由于指数关系,增加 T m e t T_{met} Tmet(提高同步链每级的时序裕量、增加同步链的级数)可以显著提高平均故障时间。
  除上述因素外,数据的翻转频率也会影响故障时间,翻转频率越高,故障概率越高。(稳定数据跨时钟传输不易出现亚稳态)

  • 故障概率

在这里插入图片描述
  如上图,单比特长电平信号的跨时钟域传输通常采用两级触发器同步器,经过两级触发器处理,亚稳态传输到下游触发器后继续输出亚稳态的概率会减小。两级触发器同步出现亚稳态的故障概率是平均故障时间的倒数:
q f a i l u r e = 1 M T B F q_{failure}=\frac {1} {MTBF} qfailure=MTBF1
  若设计中存在多个独立的跨时钟域信号,则系统的故障概率为:
Q f a i l u r e = ∑ q f a i l u r e = ∑ 1 M T B F Q_{failure}=\sum q_{failure} = \sum \frac {1} {MTBF} Qfailure=qfailure=MTBF1
  系统的平均故障时间为:
M T B F s y s = 1 ∑ 1 M T B F MTBF_{sys}=\frac 1 {\sum \frac {1} {MTBF}} MTBFsys=MTBF11

消除跨时钟域过程的亚稳态

单比特长脉冲、慢时钟到快时钟信号同步

1. 时序逻辑信号同步

  亚稳态主要在不同时钟域交界处出现,以下图为例,在某时钟上升沿处,D1的输入端已经建立稳定的逻辑电平,则c1能够正确输出结果;D2的输入端在时钟上升沿后稳定,则c2会比c1落后一个时钟周期,D3在时钟沿上升沿附近跳变,则c3会出现一个亚稳态。

在这里插入图片描述
  为了减少亚稳态发生的概率,通常采用多级触发器组成同步链的方式,如下图所示,这种方式可以显著增加平均故障时间。
在这里插入图片描述
   对于上两张图所示的跨时钟多径信号传输(clk1时钟域下信号a在clk2的扇出大于1),c1、c2、c3对于同一输入b可能产生不同的采样结果,因此对于多径信号传输最好采用先对跨时钟信号同步,再将同步后的信号分发的方式。
在这里插入图片描述

2. 组合逻辑信号同步

   组合逻辑各输入信号的时序弧和传输延时存在差异,使得组合逻辑输出端可能出现窄脉冲或毛刺,从而具有更高的信号的翻转率,更短寄存器同步链的故障时间,更高的故障概率。
在这里插入图片描述
在这里插入图片描述
   为了解决组合逻辑的问题,可以采用在源时钟域先采样寄存再同步的方式,能够显著消除毛刺、窄脉冲,降低输出信号的翻转率。
在这里插入图片描述

单比特短脉冲、快时钟到慢时钟信号同步

1. 延长脉冲宽度的同步

   如下几幅图所示,短、脉冲信号从快时钟同步到慢时钟时,可能出现信号丢失。

在这里插入图片描述
   clk1的整个脉冲落在clk2的一个时钟周期内,会出现信号丢失。
在这里插入图片描述
   clk1的整个脉冲正好落在clk2的一个完整时钟周期,由于信号变化出现在时钟沿附近,容易引起亚稳态,若亚稳态未因此输出信号从旧数据变到新数据,同样会出现信号丢失。
在这里插入图片描述
   通常情况下,只有当clk1的整个脉冲宽度达到clk2的1.5倍时钟周期时,才能保证脉动信号不被遗漏。

2. 带反馈的同步

   采用延长脉动宽度的同步方式依赖于clk1与clk2的周期关系,不具有广泛适用性和可移植性。如下图所示的采用反馈信号的同步方式更具有广泛适用性。
   当信号b从低电平翻转到高电平后,clk2对信号b进行两级触发器同步采样得到信号d,clk1通过两级触发器同步采样得到ack2,当ack2的值与a相同为高电平时,同步一定完成,此时信号b返回低电平,再次等到ack2返回低电平,完成一次脉冲信号的传输。
   这种采用反馈信号的方式能够保证不会出现信号丢失,然而反馈信号的引入会带来额外的延时,导致操作周期较长。
在这里插入图片描述
在这里插入图片描述

多比特信号同步

  由于亚稳态在传输过程中行为的随机性,多比特数据传输可能存在一个周期的不定态,以下图为例。信号s0, s1通过两级触发器从clk1同步到clk2的信号d0,d1。
  当{s0, s1}信号从{1’b0, 1’b1}变到{1’b1, 1’b0}时,{d0, d1}信号在从{1’b0, 1’b1}变到{1’b1, 1’b0}的过程中还可能出现一个周期的{1’b0, 1’b0}或{1’b1, 1’b1}状态。
在这里插入图片描述
在这里插入图片描述
  因此,通常多比特信号的同步需要引入额外的单比特信号作为有效信号。

在这里插入图片描述

  对于数据流场景,设计没有额外的时间传递同步有效信号,需要使用存储器件处理并行数据的跨时钟域转换,在FPGA上,并行多比特数据的跨时钟域转换需要用到FIFO或DPRAM(Dual Port RAM)。无论哪种方式,都需要保证源时钟域的带宽不高于目的时钟域的带宽,这样才能防止信号丢失。

1. FIFO

  采用FIFO进行数据同步还需要确保突发的数据写入量不会导致FIFO溢出,否则除了信号丢失外,还可能导致写指针跑飞。
   如下图所示,FIFO的Almost Full / Almost Empty信号在处理跨时钟域情景时能够提供灵活的FIFO控制方式。
在这里插入图片描述
   下面列举了三种依靠Almost Full / Almost Empty信号握手进行读写异步FIFO,进行数据同步的方式。

A. 慢写入、快读出

   这种方式持续写入数据,在Almost Full有效时开始读出数据,直到Almost Empty有效后结束读数据,依次往复。
在这里插入图片描述

B. 快写入、慢读出

   这种方式持续读出数据,在Almost Empty有效时开始写入数据,直到Almost Full有效后结束写数据,依次往复。
在这里插入图片描述

C. 等速传输

   这种方式不依赖Almost Full / Almost Empty信号,保证FIFO不会溢出或读空,这种无握手的等速传输一般不如依赖Almost Full / Almost Empty信号可靠。
在这里插入图片描述

2. DPRAM

   在使用时与FIFO类似,不过需要设计异步时钟间握手信号的产生、同步方式、地址、控制信号的产生。可参考牛客网异步FIFO设计习题如何将DPRAM设计为异步FIFO。

在这里插入图片描述

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

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

相关文章

【vue3.0】实现导出的PDF文件内容是红头文件格式

效果图: 编写文件里面的主要内容 <main><div id"report-box"><p>线索描述</p><p class"label"><span>线索发现时间:</span> <span>{{ detailInfoVal?.problem.createdDate }}</span></p><…

MyBatis3源码深度解析(二十一)动态SQL实现原理(二)动态SQL解析过程、#{}和${}的区别

文章目录 前言8.5 动态SQL解析过程8.5.1 SQL配置转换为SqlSource对象8.5.2 SqlSource转换为静态SQL语句 8.6 #{}和${}的区别8.7 小结 前言 在【MyBatis3源码深度解析(二十)动态SQL实现原理(一)动态SQL的核心组件】中研究了MyBatis动态SQL相关的组件&#xff0c;如SqlSource用于…

AAC相关知识

一、AAC音频格式种类有哪些 AAC音频格式是一种由MPEG-4标准定义的有损音频压缩格式。AAC包含两种封装格式 ADIF&#xff08;Audio Data Interchange Format音频数据交换格式&#xff09;和ADTS&#xff08;Audio Data transport Stream音频数据传输流&#xff09;。 ADIF 特点…

promethus的安装使用

1、# 软件下载地址 https://prometheus.io/download/ https://grafana.com/grafana/download https://prometheus.io/download/ Prometheus是一套开源的监控&报警&时间序列数据库的组合,起始是由SoundCloud公司开发的。 Prometheus 的优点 1、非常少的外部依赖,安装…

OceanBase4.2.2.1 单机集群在ArmX86安装(自测记录)

OceanBase OceanBase就不必多加介绍了&#xff0c;本次主要是分享对于它的安装使用&#xff0c;先说说背景&#xff0c;首先接触是因为信创国产化的要求&#xff0c;为满足支持国产化&#xff0c;安装了Arm架构下版本4.0.0&#xff0c;满足支持通过。后来项目实际使用&#xff…

由浅到深认识Java语言(20):包装类

该文章Github地址&#xff1a;https://github.com/AntonyCheng/java-notes 在此介绍一下作者开源的SpringBoot项目初始化模板&#xff08;Github仓库地址&#xff1a;https://github.com/AntonyCheng/spring-boot-init-template & CSDN文章地址&#xff1a;https://blog.c…

leetcode刷题日记-外观数组

题目描述 解题思路 初始化字符串 init 为 “1”&#xff0c;作为外观数列的第一项。 通过循环迭代生成外观数列的下一项&#xff0c;循环次数为 n-1&#xff0c;因为已经初始化了第一项。 在每次迭代中&#xff0c;通过两个指针 pos 和 start 来遍历当前项 init&#xff0c;po…

C++中的枚举类型

C中的enum&#xff08;枚举&#xff09;类型是一种用户定义的类型&#xff0c;用于表示一组整数值&#xff0c;每个值都有对应的名称&#xff0c;增强了代码的可读性和可维护性。 1. 基本枚举类型 基本的枚举类型定义了一组命名的整数常量。 enum Color {RED,GREEN,BLUE };C…

创业之路:探索如何在Facebook上创业成功

引言 在当今数字化时代&#xff0c;社交媒体已成为创业者们开展业务、建立品牌和推广产品的重要平台之一。作为全球最大的社交媒体平台之一&#xff0c;Facebook为创业者提供了丰富的机会和资源。本文将探讨如何在Facebook上创业成功的关键因素和实践方法&#xff0c;帮助创业…

第九届蓝桥杯大赛个人赛省赛(软件类)真题C 语言 A 组-第几个幸运数字

幸运数字是可以被3,5,7任一整除的数字&#xff0c;列举小明号码内的所有可能组合并计数。注意别忘了把1占的一位减去。 #include<stdio.h> typedef long long ll; int main(){long long ans 0, n 59084709587505LL;for(ll i 1; i < n; i * 3){//计算小于等于n的数…

计算机程序的编译和链接

c语言中的小小白-CSDN博客c语言中的小小白关注算法,c,c语言,贪心算法,链表,mysql,动态规划,后端,线性回归,数据结构,排序算法领域.https://blog.csdn.net/bhbcdxb123?spm1001.2014.3001.5343 给大家分享一句我很喜欢我话&#xff1a; 知不足而奋进&#xff0c;望远山而前行&am…

下载网页上的在线视频 网络视频 视频插件下载

只需要在浏览器上安装一个插件&#xff0c;就可以下载大部分的视频文件&#xff0c;几秒到一两个小时的视频&#xff0c;基本都不是问题。详细解决如下&#xff1a; 0、因为工作需要&#xff0c;需要获取某网站上的宣传视频&#xff0c;我像往常一样&#xff0c;查看视频的url…

Schemdraw小白从入门到放弃---原理工具书

文章目录 序版本最简单的例子一、总体思路二、元件2.1 color习题 2.2 label2.3 length 三、元件的连接3.1 延续性习题 3.2 方向习题 3.3 接线点习题3.3.1 默认激活anchor与沉默anchor3.3.2 切换鼠标焦点机制3.3.2.1 at函数规定元件的start接在哪个anchor上3.3.2.2 to函数规定元…

重磅!一起做个淘宝的简易布局!(超详细)

你好&#xff0c;我是云桃桃。 一个希望帮助更多朋友快速入门 WEB 前端程序媛。 因为之前的学习内容&#xff0c;今天&#xff0c;我们可以来综合运用一下标签和 CSS 样式&#xff0c;做一个简易的淘宝网页大体布局了&#xff0c;如图。 咱们今天要做成这样子&#xff01; 里面…

4.1 RK3399项目开发实录-案例开发之MIPI 摄像头开发(wulianjishu666)

嵌入式从零到项目开发全套例程资料 链接&#xff1a;https://pan.baidu.com/s/1ksCQN__jD8ZrJhw8sWzhwQ?pwdvvfz 3.2. MIPI 摄像头 带有 MIPI CSI 接口的 RK3399 板子都添加了双 MIPI 摄像头 OV13850 的支持&#xff0c;应用中也添加了摄像头的例子。下面介绍一下相关配置。…

蓝桥杯(2):python基础算法【上】

时间复杂度、枚举、模拟、递归、进制转换、前缀和、差分、离散化 1 时间复杂度 重要是看循环&#xff0c;一共运行了几次 1.1 简单代码看循环 #时间复杂度1 n int(input()) for i in range(1,n1):for j in range(0,i):pass ###时间复杂度&#xff1a;123....nn(1n)/2 所以…

2024 ccfcsp认证打卡 2023 09 02 坐标变换(其二)

202309-2 坐标变换&#xff08;其二&#xff09; 题解1题解2区别第一种算法&#xff08;使用ArrayList存储操作序列&#xff09;&#xff1a;数据结构&#xff1a;操作序列处理&#xff1a; 第二种算法&#xff08;使用两个数组存储累积结果&#xff09;&#xff1a;数据结构&a…

Unable to authenticate, need: BASIC realm=“Sonatype Nexus Repository Manager“

问题 使用公司的私有源&#xff0c;执行 npm i 的时候突然报错了&#xff1a; 解决 执行命令 npm config list找到 .npmrc 去掉对应的这一行即可&#xff0c;或者使用 nrm 工具执行 nrm del xxx 删掉私有源&#xff0c;然后在添加私有源也可。可以参考我这篇&#xff1a;使…

(一)基于IDEA的JAVA基础8

使用多重if选择结构 多个if条件进行判断: 语法: if(条件1){ 执行语句1&#xff1b; }else if(条件2){ 执行语句2&#xff1b; }else if(条件3){ 执行语句3&#xff1b; }else if (条件4)…… 流程图: 我们来写个好玩的&#xff0c;对暗号: public class Test01 { …

五分钟快速搭建个人游戏网站(1Panel)

五分钟快速搭建个人游戏网站&#xff08;1Panel&#xff09; 环境要求&#xff1a;主流 Linux 发行版本&#xff08;基于 Debian / RedHat&#xff0c;包括国产操作系统&#xff09;&#xff1b; 如果是Windows OS的可以通过WSL来实现安装。 1 介绍 1Panel 是一个基于 Web 的 L…