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

2024-04-13 22:12
文章标签 时钟 fpga 数字 ic 亚稳态

本文主要是介绍数字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进行跨时钟域处理。

这篇关于数字IC/FPGA——亚稳态及跨时钟域的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/901360

相关文章

从去中心化到智能化:Web3如何与AI共同塑造数字生态

在数字时代的演进中,Web3和人工智能(AI)正成为塑造未来互联网的两大核心力量。Web3的去中心化理念与AI的智能化技术,正相互交织,共同推动数字生态的变革。本文将探讨Web3与AI的融合如何改变数字世界,并展望这一新兴组合如何重塑我们的在线体验。 Web3的去中心化愿景 Web3代表了互联网的第三代发展,它基于去中心化的区块链技术,旨在创建一个开放、透明且用户主导的数字生态。不同于传统

第10章 中断和动态时钟显示

第10章 中断和动态时钟显示 从本章开始,按照书籍的划分,第10章开始就进入保护模式(Protected Mode)部分了,感觉从这里开始难度突然就增加了。 书中介绍了为什么有中断(Interrupt)的设计,中断的几种方式:外部硬件中断、内部中断和软中断。通过中断做了一个会走的时钟和屏幕上输入字符的程序。 我自己理解中断的一些作用: 为了更好的利用处理器的性能。协同快速和慢速设备一起工作

usaco 1.2 Name That Number(数字字母转化)

巧妙的利用code[b[0]-'A'] 将字符ABC...Z转换为数字 需要注意的是重新开一个数组 c [ ] 存储字符串 应人为的在末尾附上 ‘ \ 0 ’ 详见代码: /*ID: who jayLANG: C++TASK: namenum*/#include<stdio.h>#include<string.h>int main(){FILE *fin = fopen (

AIGC6: 走进腾讯数字盛会

图中是一个程序员,去参加一个技术盛会。AI大潮下,五颜六色,各种不确定。 背景 AI对各行各业的冲击越来越大,身处职场的我也能清晰的感受到。 我所在的行业为全球客服外包行业。 业务模式为: 为国际跨境公司提供不同地区不同语言的客服外包解决方案,除了人力,还有软件系统。 软件系统主要是提供了客服跟客人的渠道沟通和工单管理,内部管理跟甲方的合同对接,绩效评估,BI数据透视。 客服跟客人

NC 把数字翻译成字符串

系列文章目录 文章目录 系列文章目录前言 前言 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站,这篇文章男女通用,看懂了就去分享给你的码吧。 描述 有一种将字母编码成数字的方式:‘a’->1, ‘b->2’, … , ‘z->26’。 现在给一串数字,返回有多少种可能的译码结果 import java.u

34465A-61/2 数字万用表(六位半)

34465A-61/2 数字万用表(六位半) 文章目录 34465A-61/2 数字万用表(六位半)前言一、测DC/AC电压二、测DC/AC电流四、测电阻五、测电容六、测二极管七、保存截图流程 前言 1、6位半数字万用表通常具有200,000个计数器,可以显示最大为199999的数值。相比普通数字万用表,6位半万用表具有更高的测量分辨率和更高的测量准确度,适用于精度比较高的测

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密

超级 密码加密 解密 源码,支持表情,符号,数字,字母,加密 可以将表情,动物,水果,表情,手势,猫语,兽语,狗语,爱语,符号,数字,字母,加密和解密 可以将文字、字母、数字、代码、标点符号等内容转换成新的文字形式,通过简单的文字以不同的排列顺序来表达不同的内容 源码截图: https://www.httple.net/152649.html

FPGA编译与部署方法全方位介绍

FPGA编译与部署是FPGA开发中的核心环节,涉及从代码编写、调试到将设计部署到FPGA硬件的全过程。这个流程需要经过创建项目、编写FPGA VI、模拟调试、编译生成比特流文件,最后将设计部署到硬件上运行。编译的特点在于并行执行能力、定制化硬件实现以及复杂的时钟管理。通过LabVIEW的FPGA模块和NI硬件,可以快速完成开发和部署,尤其适用于复杂控制与高性能数据处理系统。 1. FPG

两个长数字相加

1.编程题目 题目:要实现两个百位长的数字直接相加 分析:因为数字太长所以无法直接相加,所以采用按位相加,然后组装的方式。(注意进位) 2.编程实现 package com.sino.daily.code_2019_6_29;import org.apache.commons.lang3.StringUtils;/*** create by 2019-06-29 19:03** @autho

FPGA开发:条件语句 × 循环语句

条件语句 if_else语句 if_else语句,用来判断是否满足所给定的条件,根据判断的结果(真或假)决定执行给出的两种操作之一。 if(表达式)语句; 例如: if(a>b) out1=int1; if(表达式)         语句1; else         语句2; 例如: if(a>b)out1=int1;elseout1=int2; if(表达式1) 语句1; els