数字IC/FPGA——亚稳态及跨时钟域

  • 什么是亚稳态
  • 亚稳态会造成什么
  • 平均故障间隔时间
  • 如何解决亚稳态
  • 同步时钟和异步时钟
  • 单bit电平信号如何跨时钟域
  • 单bit脉冲信号如何跨时钟域
  • 多bit信号如何跨时钟域

目录

    • 一、亚稳态
      • 1.基本概念
      • 2.危害
      • 3.平均故障时间
      • 4.解决亚稳态的方法
    • 二、跨时钟域
      • 1.同步电路和异步电路
        • (1)同步电路
        • (2)异步电路
      • 2.单bit跨时钟域
        • (1)电平信号
        • (2)脉冲信号
      • 3.多bit跨时钟域
        • (1)格雷码
        • (2)DMUX
        • (3)异步FIFO

一、亚稳态

1.基本概念

亚稳态是指触发器无法在某个规定时间内达到一个确定的状态,当一个触发器进入亚稳态时,既无法预测该单元的输出电平,也无法预测何时****输出才能稳定在某个正确的电平上。在这个期间,触发器输出一些中间级电平,或者可能处于振荡状态,并且这种无用的输出电平可以沿信号通道上的各个触发器级联式传播下去

在这里插入图片描述

从CMOS层级分析亚稳态产生的原因,下图是一个CMOS反相器的传输特性曲线:

在这里插入图片描述

电子技术——CMOS反相器-CSDN博客

其中BC段为MOS的放大器区,在BC端具有无限大的增益。将输入电压和输出电压相等的点即Vm=VDD/2称作是反相器的阈值电压,电平在这个点附近迅速完成了电平切换。

当输入电压处于0—V_IL时,反相器认为输入为低电平;当输入电压处于V_IH—VDD时,反相器认为输入为高电平。当输入电压处于V_IL—VIH之间时,反相器有可能会将其判断为低电平或高电平中的任意一种。

当输入数据不能够满足寄存器的建立时间和保持时间要求时,采样到的电压就可能会处于上述的V_IL和V_IH之间的区间,就会导致输出处于亚稳态。

2.危害

由于产生亚稳态后,寄存器Q端输出在稳定下来之前可能是毛刺、振荡、固定的某一电压值。在信号传输中产生亚稳态就会导致与其相连其他数字部件将其作出不同的判断,有的判断到“1”有的判断到“0”,有的也进入了亚稳态,数字部件就会逻辑混乱

3.平均故障时间

平均故障时间指的是系统两次发生故障之间系统平均正常工作的时间,他是系统发生故障概率的倒数。用MTBF表示。平均故障间隔时间越长,系统越可靠。

M T B F = e t M E T / C 2 C 1 ⋅ f C L K ⋅ f D A T A MTBF=\frac{e^{t_{MET}}/C_2}{C_1\cdot f_{CLK}\cdot f_{DATA}} MTBF=C1fCLKfDATAetMET/C2

t_MET代表寄存器从时钟上升沿触发后的时序余量时间;

C1、C2与器件有关的参数,器件的建立时间和保持时间越小,C2越小

f_DATA是数据的变化频率

f_CLK是接收时钟域的时钟频率

4.解决亚稳态的方法

亚稳态不能消除,只能降低其发生的概率。

我们从MTBF入手:当数据的变化频率和接收时钟域的时钟频率越低,C2越小,MTBF越大。

因此可有以下几种方法:

(1)降低时钟频率;

(2)采用反应更快的触发器;

(3)跨时钟域处理。

二、跨时钟域

1.同步电路和异步电路

(1)同步电路

同步电路是指电路中所有由时钟控制的单元,都由一个统一的全局时钟控制。

优点

①时序收敛;

②可以避免噪声和毛刺的影响(采用的是边沿触发器)

缺点

时钟偏移的存在会导致时钟树综合时加入缓冲单元,以保证时钟偏移能够维持在一个较小的水平,这样使得电路的面积和功耗增加

(2)异步电路

电路中不是由一个统一的时钟控制,数据传输可以发生在任何时候。

优点:

①由于是异步时钟,无需考虑时钟偏移问题;

②相同条件下比同步电路功耗低;

缺点:

①设计复杂,缺少EDA工具支持;

②很大概率存在竞争与冒险;

③一般无法对异步电路进行静态时序分析。

2.单bit跨时钟域

(1)电平信号

电平信号是指长时间稳定在高电平或低电平的一种信号。因此对其进行跨时钟域处理时,可以直接在接收时钟域对数据进行打拍处理即可,一般为经过两级同步器。

跨时钟域之全面解析_cdc path-CSDN博客

在这里插入图片描述

需要注意的是,经过两级同步器并不代表数据采样一定正确,只是可以降低亚稳态发生的概率。

(1)如果亚稳态维持的时间不止一个周期,在下一个时钟上升沿没有稳定,那么第二级的FF也会进入亚稳态,这种情况的概率是1/MTBF

(2)第一级亚稳态在下一个时钟上升沿稳定,但是被是识别为0,那么第二级的FF输出bq2_dat就是0,说明信号跨时钟采样失败。但是这种情况不会造成亚稳态的传播,也就是不会影响后面的设计。针对这种情况,一般会改变设计,不会让快时钟域的单周期脉冲,跨时钟到慢的时钟内采样。

为什么跨时钟信号必须是寄存器的输出,中间不能有组合逻辑?

参考下面这篇文章,写的非常好。

跨时钟域之全面解析_cdc path-CSDN博客

在这里插入图片描述

观察图中我们可以发现,当采用组合逻辑后,会出现adat在一个周期内出现了多次跳变,也就是说数据变化的频率变大了,而参考MTBF的公式,当数据频率变大时会导致平均故障间隔时间变小,因此会提高亚稳态发生的概率。

(2)脉冲信号

脉冲信号是指在源时钟下只保持一个时钟周期的信号,为保持其信号特性,跨时钟后该信号需要在目的时钟域下也只保持一个时钟周期。需要考虑原时钟和目的时钟的频率关系,并在设计中采取不同的方式。

①慢时钟域到快时钟域

直接进行采样可能导致目的时钟对脉冲的重复采样。

将采样信号在目的时钟域打两拍稳定数据,再根据额外打一拍之后做边沿采样(与非),产生脉冲。

在这里插入图片描述

在这里插入图片描述

②快时钟域到慢时钟域

这种情况下可能会发生漏采,因此需要先对脉冲信号进行展宽,在源时钟域下根据脉冲信号生成电平信号,检测脉冲信号,将电平信号翻转一次。之后进行两级同步,再提取信号边沿(异或)。

在这里插入图片描述

3.多bit跨时钟域

(1)格雷码

格雷码相邻两个数之间只有1bit变化,只要其是连续变化,就可以通过两级同步器进行跨时钟域。

在这里插入图片描述

(2)DMUX

对于数值非连续变化数据保持多拍的多bit信号,可以通过DMUX同步器的方式来进行跨时钟域。

其实现方式为:

对数据有效信号通过两级同步器进行跨时钟域,之后在目的时钟域提取边沿信号,然后再在目的时钟域采样数据信号,因为此时数据信号已经稳定。但是这是对于原时钟域慢目的时钟域快的情况,当原时钟域快目的时钟域慢时需要对有效信号进行展宽,然后跨时钟域。

在这里插入图片描述

在这里插入图片描述

通常同步器模块的输入和多周期路径规划数据路径需要使用set_false_path命令。因为同步器的输入会出现时序问题。

(3)异步FIFO

对于数值非连续变化并且数据保持一个时钟周期的情况,应使用异步FIFO进行跨时钟域处理。

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

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

相关文章

Tuxera Ntfs for mac 2023中文解锁版安装、密钥下载与激活教程 Tuxera激活码 tuxera破解

Tuxera Ntfs for mac2023是Mac中专用于读写外置存储的工具,具有强大的磁盘管理和修复功能,它在Mac上完全读写NTFS格式硬盘,快捷的访问、编辑、存储和传输文件。能够在 Mac 上读写 Windows NTFS 文件系统。Tuxera NTFS 实现在Mac OS X系统读写…

【opencv】示例-npr_demo.cpp 非真实感渲染:边缘保留平滑、细节增强、铅笔素描/彩色铅笔绘图和风格化处理...

Edge Preserve Smoothing- Using Normalized convolution Filter Edge Preserve Smoothing-Using Recursive Filter Detail Enhancement Pencil sketch/Color Pencil Drawing Stylization /* * npr_demo.cpp * * 作者: * Siddharth Kherada <siddharthkherada27[at]gmail[do…

前端小技巧之轮播图

文章目录 功能htmlcssjavaScript图片 设置了一点小难度&#xff0c;不理解的话&#xff0c;是不能套用的哦&#xff01;&#xff01;&#xff01; &#xff08;下方的圆圈与图片数量不统一&#xff0c;而且宽度是固定的&#xff09; 下次写一些直接套用的&#xff0c;不整这些麻…

杭州掀起快递物流创新浪潮,2024长三角快递物流展7月共绘智慧物流新蓝图

杭州&#xff0c;作为中国的电商之都&#xff0c;近年来在快递物流行业背景与应用方面取得了显著的发展。随着电子商务的迅猛增长&#xff0c;杭州的快递物流行业迅速崛起&#xff0c;成为支撑电商产业发展的重要力量。 2024长三角&#xff08;杭州&#xff09;快递物流供应链与…

b站江科大stm32笔记(持续更新)

b站江科大stm32笔记&#xff08;持续更新&#xff09; 片上资源/外设引脚定义表启动配置推挽开漏oc/od 门漏极/集电极 电阻的上拉下拉输入捕获输入捕获通道主从触发模式输入捕获基本结构PWMI基本结构PWMPSC ARR CRR输入捕获模式测频率TIM_PrescalerConfig()初始化输入捕获测频法…

AI PC元年,华为的一张航海图、一艘渡轮和一张船票

今天&#xff0c;从学术研究者到产业投资者&#xff0c;无不认为大模型掀起了一场人工智能的完美风暴。 所谓“完美风暴”&#xff0c;指的是一项新技术的各个要素&#xff0c;以新的方式互相影响、彼此加强&#xff0c;组合在一起形成了摧枯拉朽般的力量。 而我们每个人&#…

Spark-Scala语言实战(16)

在之前的文章中&#xff0c;我们学习了三道任务&#xff0c;运用之前学到的方法。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实战&#x…

(N-149)基于微信小程序网上商城系统

开发工具&#xff1a;IDEA、微信小程序 服务器&#xff1a;Tomcat9.0&#xff0c; jdk1.8 项目构建&#xff1a;maven 数据库&#xff1a;mysql5.7 前端技术&#xff1a;vue、uniapp 服务端技术&#xff1a;springbootmybatisredis 本系统分微信小程序和管理后台两部分&a…

使用Pandas实现股票交易数据可视化

一、折线图&#xff1a;展现股价走势 1.1、简单版-股价走势图 # 简洁版import pandas as pdimport matplotlib.pyplot as plt# 读取CSV文件df pd.read_csv(../数据集/格力电器.csv)data df[[high, close]].plot()plt.show() 首先通过df[[high,close]]从df中获取最高价和收盘…

【一招鲜】-阿里云服务器安全更新 RHSA-2021:3889: java-1.8.0-openjdk 安全和BUG修复更新

形似这种&#xff1a; RHSA-2021:3889: java-1.8.0-openjdk 安全和BUG修复更新 #1 查看可更新的软件java yum list updates |grep java #2 如果有可更新软件&#xff0c;则进行更新 yum -y update java-1.8.0-openjdk.x86_64 形似这种&#xff1a; RHSA-2021:4782: openssh …

你的系统是如何跟MySQL打交道的

1、Java 工程师眼中的数据库是什么东西? 从今天开始&#xff0c;我们将要开始一个MySQL的专栏&#xff0c;一起来研究MySQL数据库的底层原理和各种实践案例&#xff0c;以及互联网公司的技术方案。 现在我们先来看看&#xff0c;在一个Java工程师眼中的数据库是什么东西? 平时…

mp3怎样才能转换成wav格式?音频互相转换的方法

一&#xff0c;什么是WAV WAV&#xff0c;全称为波形音频文件&#xff08;Waveform Audio File Format&#xff09;&#xff0c;是一种由微软公司和IBM公司联合开发的音频文件格式。自1991年问世以来&#xff0c;WAV格式因其无损的音频质量和广泛的兼容性&#xff0c;成为了多…

【C++】1390-请从键盘读入一个四位整数,求这个四位整数各个位的和是多少?

问题&#xff1a;1390-请从键盘读入一个四位整数&#xff0c;求这个四位整数各个位的和是多少&#xff1f; 类型&#xff1a;基础问题 题目描述&#xff1a; 请从键盘读入一个四位整数&#xff0c;求这个四位整数各个位的和是多少&#xff1f; 输入&#xff1a; 一个四位整…

thinkphp6入门(23)-- 如何导入excel

1. 安装phpexcel composer require phpoffice/phpexcel composer update 2. 前端 <form class"forms-sample" action"../../xxxx/xxxx/do_import_users" method"post" enctype"multipart/form-data"><div class"cont…

再写-全景拼接

全景拼接 1. 将读取进行灰度转化&#xff0c;并且输出图像&#xff0c;关键点和计算描述 import cv2 import numpy as np# 将读取进行灰度转化&#xff0c;并且输出图像&#xff0c;关键点和计算描述 image_left cv2.imread("C:\\Users\\HONOR\\Desktop\\image\\pinjie…

Day19-【Java SE进阶】网络编程

一、网络编程 1.概述 可以让设备中的程序与网络上其他设备中的程序进行数据交互(实现网络通信的)。java.net,*包下提供了网络编程的解决方案! 基本的通信架构 基本的通信架构有2种形式:CS架构(Client客户端/Server服务端)、BS架构(Browser浏览器/Server服务端)。 网络通信的…

轮腿机器人-五连杆正运动学解算

轮腿机器人-五连杆与VMC 1.五连杆正运动学分析2.参考文献 1.五连杆正运动学分析 如图所示为五连杆结构图&#xff0c;其中A&#xff0c;E为机器人腿部控制的两个电机&#xff0c;θ1,θ4可以通过电机的编码器测得。五连杆控制任务主要关注机构末端C点位置&#xff0c;其位置用直…

【Unity】常见性能优化

1 前言 本文将介绍下常用的Unity自带的常用优化工具&#xff0c;并介绍部分常用优化方法。都是比较基础的内容。 2 界面 2.1 Statistics窗口 可以简单查看Unity运行时的统计数据&#xff0c;当前一帧的性能数据。 2.1.1 Audio 音频相关内容。 Level&#xff1a;音量大小&a…

物联网云组态平台

TopStack 物联网云组态平台&#xff0c;提供从边缘感知及设备到云的数据采集、分析、可视化软件服务&#xff0c;提供完善的平台开发环境&#xff0c;协助客户完善垂直领域的业务应用开发。与伙伴共同打造多元产业物联网解决方案。 产品采用微前端、微服务架构进行设计&#x…

Testng测试框架(7)--测试运行

忽略测试 TestNG可以让你忽略类、特殊包、包及其子中的所有Test方法。 当在测试方法级别使用Ignore 注解&#xff0c;在功能上与Test(enabledfalse).一样。 以下例子将忽略类中所有tests。 import org.testng.annotations.Ignore; import org.testng.annotations.Test; Ign…