当前位置: 首页 > news >正文

《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界

Chapter 1 亚稳态的世界

chapter1_亚稳态的世界

一、简介

  • 同步系统中,数据和时钟有固定的因果关系(在同一时钟域(Clock Domains))中,只要数据和时钟满足建立时间和保持时间的要求,不会产生亚稳态(meastable)

    静态时序分析(STA) 就是基于同步电路设计模型而出现的,其目的一方面是增加同步时钟的稳定性,从而减少亚稳态的发生,另一方面通过附加约束可以控制逻辑的综合(DC)、映射(Map)、布局(Place)、布线(Route),以减少逻辑和布线延时,从而提高工作频率。

  • 异步系统中,数据和时钟关系不固定,可能违反建立保持时间,就会输出介于两个有效状态之间的中间级电平,且无法确定停留在中间状态的时间,或者过了一定的延迟后才能正常转换,这就是亚稳态

二、亚稳态理论

1.产生原因及现象

  • 亚稳态产生原因:违背了触发器的建立时间或保持时间。
  • 现象:触发器的输出产生毛刺(输出在高低电平之间波动),或者暂时保持在不稳定状态且需要较长时间才能回到稳定状态。

image-20230317200051333

tsu:建立时间(setup time)

th:保持时间(hold time)

tco:时钟到输出的延迟(clock-to-output delay)

tMET:亚稳态输出恢复到稳定状态所需的超过tco的额外时间部分(settling time)

  • 并非所有不满足建立时间和保持时间的输入变化都会导致亚稳态,触发器是否进入亚稳态和返回稳态的时间还取决于生产工艺和外界环境。
  • 一般来说,触发器在进入亚稳态之后,一两个周期就会回到稳态

2.同步失败

​ 如下图,信号在一个时钟域(src_data_in)里变换,在另一个时钟域(dest_data_in)内采样,导致输出变成亚稳态。

image-20230317202127933

三、亚稳态窗口

image-20230317202219028
  • 亚稳态窗口(Metastability Windows)具有特定的时间长度,在这段时间内输入信号的数据保持不变。如果发生变化,输出就可能编程亚稳态。如上图1.4所示,建立时间和保持时间共同决定了亚稳态窗口的宽度。

  • 窗口越大,进入亚稳态的概率越大,因此一般新的逻辑器件都会有更小的亚稳态窗口。

四、计算MTBF(故障率倒数)

  • MTBF(Mean/Average Time Between Failures,平均无故障时间),即故障率倒数.

  • 对于单级同步器
    1FailureRate=MTBF1=e(tr/τ)Wfcfd\frac{1}{FailureRate}=MTBF_1=\frac{e(t_r/\tau)}{Wf_cf_d} FailureRate1=MTBF1=Wfcfde(tr/τ)

    公式成立条件:该同步器具有跟定的时钟频率,并且在该时钟周期内具有均匀概率密度

​ 式中,tr=t_r=tr=允许超出器件正常传输延迟时间的解析时间

τ=\tau=τ=触发器的亚稳态(解析)时间常数

W=W=W=亚稳态窗口

fc=f_c=fc=时钟频率

fd=f_d=fd=异步信号边沿频率

  • 对于两级同步器
    MTBF2=e(tr1/τ)Wfcfd×e(tr2/τ)MTBF_2=\frac{e(t_{r1}/\tau)}{Wf_cf_d}×e(t_{r2}/\tau) MTBF2=Wfcfde(tr1/τ)×e(tr2/τ)
    tr1t_{r1}tr1是第一级同步器的解析时间

    tr2t_{r2}tr2是第二级同步器的解析时间

可以看出,增大同步级数可以显著提高MTBF

五、避免亚稳态

  • 避免亚稳态,当然要从能造成亚稳态的条件入手——违背建立/保持时间,以下条件中,信号可能违背时序要求:

    • 输入信号是异步信号

    • 时钟偏移(Clock Skew)和时钟抖动(Clock jitter 上升/下降时间)高于容限值。

    • 信号在两个不同频率或者相同频率但是相位和偏移不同的时钟域下跨时钟工作。

    • 组合延迟使触发器的数据输入在亚稳态窗口内发生变化。

  • 亚稳态不能根除,但是可以减小亚稳态发生的概率。

  • 最简单的情况下减小亚稳态概率的方法:确保时钟周期足够长,但是会影响性能,并不实用

另一种避免亚稳态的方法就是使用同步器:

1.使用多级同步器

  • 避免亚稳态最常见的方法:在跨时钟域的信号上加一个或多个同步触发器。

    **缺点:**增加了观察同步逻辑输入的延迟。

image-20230317214242801

2.使用时钟倍频电路的多级同步器

  • 多级同步器**缺点:**系统需要花较长时间去响应异步输入。

    **解决方法:**使用倍频时钟作为两个同步触发器的时钟输入。Altera的FPGA中就具有这项技术。

image-20230317214346141

​ 这样不仅能让系统一个周期响应一个异步输入,而且改善了MTBF。然而倍频时钟会降低MTBF,这个影响比两个触发器引起的偏移 量要大。

​ 两种方法都不能保证同步器阻止亚稳态传播下去,它们仅仅减少了亚稳态发生的概率

3.消除亚稳态常用方法

  • 对异步信号进行同步处理;
  • 采用FIFO对跨时钟域数据通信进行缓冲设计;
  • 对复位电路采用异步复位、同步释放方式处理。

六、亚稳态测试电路

image-20230317214936072

图中,asynv_in的触发器FFAFF_AFFA是时钟上升沿触发,FFBFF_BFFBFFCFF_CFFC都在时钟下降沿触发,这样做是为了捕捉FFAFF_AFFA的亚稳态事件。

  • 当发生亚稳态时,异或非门会输出高电平,所以FFDFF_DFFD捕捉到高电平就代表检测到亚稳态,时序图如下。
image-20230317215547807
  • 由于FFBFF_BFFBFFCFF_CFFC两个触发器是下降沿触发,所以高电平时间减去FFAFF_AFFAtcot_cotcoFFBFF_BFFBFFCFF_CFFC的建立时间等于稳定时间tMETt_{MET}tMET

tMET=Δt−tACNt_{MET} = \Delta t \ -\ t_{ACN} tMET=Δt  tACN

七、同步器的类型

一个异步信号不应被两个或者多个同步器所同步,一开始不太理解这句话,google了一下:一个信号扇出到多个同步器之后同步所需的时间不同,可能出现竞争冒险。

  • **模式A:**当异步输入信号比时钟周期大得多时最有效:下面这张图才应该是模式A,图标错了。
image-20230317220152589

**模式B:**第一级触发器输入直接与Vcc相连,输入信号直接连触发器时钟。输入信号短脉冲把q1置为1之后,便会一直保持,直到输出高电平。下面这张图才是模式B。

image-20230317220255283
  • 总结:

    • 信号跨时钟,要采用同步器。

    • clk1<clk2,采用模式A,否则采用模式B。

八、亚稳态/综合性建议

  • 采用同步器。
  • 采用响应更块的触发器(缩短亚稳态窗口TWT_WTW)。
  • 使用亚稳态硬化触发器 (专为高宽带设计并减少为时钟域输入电路而优化的采样时间)。
  • 如图1.6所示,使用级联触发器(两个或多个)作为同步器。如果一个触发器的亚稳态失败概率为PPP,那么N个触发器的亚稳态失败率就是PNP^NPN
  • 减少采样速率。
  • 避免使用 dV/dt 低的输入信号。

九、[整理]跨时钟域处理方法总结

  • 见另一博客跨时钟域CDC
  • 转载自mhq_martin 亚稳态的产生机理、消除办法 (可以理解为什么打拍)

相关文章:

《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界

Chapter 1 亚稳态的世界 一、简介 同步系统中&#xff0c;数据和时钟有固定的因果关系(在同一时钟域(Clock Domains))中&#xff0c;只要数据和时钟满足建立时间和保持时间的要求&#xff0c;不会产生亚稳态(meastable) 静态时序分析(STA) 就是基于同步电路设计模型而出现的&am…...

开箱即用的密码框组件

写了一个小玩具&#xff0c;分享一下 - 组件功能&#xff1a; 初次进入页面时&#xff0c;密码隐藏显示&#xff0c;且无法查看真实密码 当修改密码时&#xff0c;触发键盘&#xff0c;输入框则会直接清空 此时输入密码&#xff0c;可以设置密码的隐藏或显示&#xff1a; …...

ChatGPT能否取代程序员?

目录ChatGPT能否取代程序员&#xff1f;ChatGPT和程序员的工作内容和工作方式ChatGPT和程序员的共同点程序员的优势程序员的实力ChatGPT和程序员的关系结论惊喜ChatGPT能否取代程序员&#xff1f; ChatGPT是一种非常普遍的人工智能&#xff08;AI&#xff09;系统&#xff0c;…...

案例分享 | 金融微服务场景下如何提升运维可观测性

​云原生环境下金融业务的微服务化改造以及分布式架构的部署&#xff0c;使得业务与开发部门的关联更为紧密&#xff0c;传统运维监控已满足不了业务运营需求&#xff0c;亟需建设具备可观测性的运维体系。所以这次我们以某金融客户的实践案例为例&#xff0c;跟大家说一说在金…...

CentOS8提高篇3:Centos8安装播放器(mplayer vlc)

1. 准备工作&#xff08;需要配置epel, rpmfusion源&#xff09;; 配置epel源 下载epel dnf install epel-release 配置rpmfusion源 下载rpmforge dnf install rpmfusion-free-release-8.noarch.rpm 2. 安装mplayer和vlc 直接dnf安装 # dnf install mplayer # dnf install v…...

MySQL-存储过程

什么是存储过程我们前面所学习的MySQL语句都是针对一个表或几个表的单条 SQL 语句&#xff0c;但是在数据库的实际操作中&#xff0c;并非所有操作都那么简单&#xff0c;经常会有一个完整的操作需要多条SQL语句处理多个表才能完成。例如&#xff0c;为了确认学生能否毕业&…...

经典七大比较排序算法 · 下 + 附计数和基数排序

经典七大比较排序算法 下 附计数和基数排序1 插入排序1.1 算法思想1.2 代码实现1.3 插入排序特性2 希尔排序2.1 算法思想2.2 代码实现2.3 希尔排序特性3 七大比较排序特性总结4 计数排序4.1 算法思想4.2 代码实现4.3 计数排序特性5 基数排序5.1 算法思想5.2 代码实现1 插入排…...

HTTPS协议,看这篇就够了

不安全的HTTP 近些年来&#xff0c;越来越多的网站使用 HTTPS 协议进行数据传输&#xff0c;原因在于 HTTPS 相较于 HTTP 能够提供更加安全的服务。 很多浏览器对于使用 HTTP 协议的网站会加上『警告』的标志表示数据传输不安全&#xff0c;而对于使用 HTTPS 协议的网站会加上…...

C语言学习之路--结构体篇

目录一、前言二、结构体的声明1、结构的基础知识2、结构的声明3、结构体成员的类型4、结构体变量的定义和初始化三、结构体成员的访问四、结构体传参一、前言 本人是一名小白&#xff0c;这一篇是记录我C语言学习中的结构体的所学所得&#xff0c;仅为简单的认识下C语言中的各…...

【LINUX】初识文件系统

文章目录一、前言二、回顾C语言文件操作三、初识系统调用openreadwriteclose四、文件系统初识五、结语一、前言 二、回顾C语言文件操作 int main() {FILE* fp fopen("log.txt", "w");if (fp NULL){perror("fopen");}int cnt 0;fputs("…...

金三银四Java面试题及答案整理(2023最新版) 持续更新

作为一名优秀的程序员&#xff0c;技术面试是不可避免的一个环节&#xff0c;一般技术面试官都会通过自己的方式去考察程序员的技术功底与基础理论知识。 如果你参加过一些大厂面试&#xff0c;肯定会遇到一些这样的问题&#xff1a; 1、看你项目都用的框架&#xff0c;熟悉 …...

7个角度,用 ChatGPT 玩转机器学习

大家好&#xff0c;我是机器学习科普创作者章北海mlpy&#xff0c;探索更高效的学习方法是我一直等追求。现在的初学者太幸福了&#xff0c;可以利用ChatGPT来帮助你学习机器学习的各个方面。 比如【个人首测】百度文心一言 VS GPT-4这篇文章中&#xff0c;我就用文心一言、GP…...

关于多层板,你了解多少?

01 前言 大家好&#xff0c;我是张巧龙。好久没写原创了&#xff0c;记得之前刚接触PCB时&#xff0c;还在用腐蚀单层板&#xff0c;类似这种。 慢慢随着电子产品功能越来越多&#xff0c;产品越来越薄&#xff0c;对PCB设计要求越来越高了&#xff0c;复杂程度也随之增加。因此…...

使用sqlalchemy-gbasedbt连接GBase 8s数据库

测试环境&#xff1a; 操作系统&#xff1a;CentOS 7.9 64-bit数据库版本&#xff1a;GBase8sV8.8_AEE_3.0.0_1&#xff0c;对应的CSDK版本为3.0.0_1 1&#xff0c;确认安装python3 确认已经安装python3和python3-devel [rootlocalhost test]# python3 -V Python 3.6.8如果…...

前端如何丢掉你的饭碗?

对于后端而言&#xff0c;我们常有“删库跑路”的说法&#xff0c;这说明后端的操作对于信息系统而言通常影响很大&#xff0c;可以轻易使信息系统宕机、崩溃&#xff0c;直接导致项目失败。所以&#xff0c;不要去逼后端程序员&#xff01; 作为前端程序员&#xff0c;我们似…...

栈、队列、优先级队列的模拟实现

优先级队列的模拟实现栈stack的模拟实现push()pop()top()size()empty()swap()stack总代码队列queue的模拟实现push()pop()front()back()empty()size()swap()queue总代码优先级队列(堆)push()pop()top()empty()size()swap()priority_queue总代码deque的了解栈 在CSTL中栈并不属…...

JMM内存模型

JMM内存模型JMM内存模型定义三大特性原子性可见性有序性volatile语义JMM规则操作系统实现术语缓存一致性要求缓存一致性机制写传播事务串行化重排序as-if-serial 语义&#xff08;像是有序的&#xff09;happens-before 原则happens-before 原则的八大子原则内存屏障总结finalf…...

Linux- 系统随你玩之--玩出花活的命令浏览器-双生姐妹花

文章目录1、背景2、命令浏览器-双生姐妹花2.1、姐妹花简介2.2 、验名正身2.3、常用功能选项3、常用实操3.1、发送请求获取文件3.1.1、抓取页面内容到一个文件中3.1.2、多个文件下载3.1.3、下载ftp文件3.1.4、断点续传3.1.5、上传文件3.1.6、内容输出3.2 、利用curl测试接口3.3 …...

【深度学习】基于Hough变化的答题卡识别(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5;&#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。⛳座右铭&#…...

Linux - 进程控制(创建和终止)

1.进程创建fork函数初识 在linux中fork函数时非常重要的函数&#xff0c;它从已存在进程中创建一个新进程。新进程为子进程&#xff0c;而原进程为父进程。返回值&#xff1a;子进程返回0&#xff0c;父进程返回子进程id&#xff0c;出错返回-1getpid()获取子进程id&#xff0c…...

地震勘探——干扰波识别、井中地震时距曲线特点

目录 干扰波识别反射波地震勘探的干扰波 井中地震时距曲线特点 干扰波识别 有效波&#xff1a;可以用来解决所提出的地质任务的波&#xff1b;干扰波&#xff1a;所有妨碍辨认、追踪有效波的其他波。 地震勘探中&#xff0c;有效波和干扰波是相对的。例如&#xff0c;在反射波…...

微软PowerBI考试 PL300-选择 Power BI 模型框架【附练习数据】

微软PowerBI考试 PL300-选择 Power BI 模型框架 20 多年来&#xff0c;Microsoft 持续对企业商业智能 (BI) 进行大量投资。 Azure Analysis Services (AAS) 和 SQL Server Analysis Services (SSAS) 基于无数企业使用的成熟的 BI 数据建模技术。 同样的技术也是 Power BI 数据…...

前端导出带有合并单元格的列表

// 导出async function exportExcel(fileName "共识调整.xlsx") {// 所有数据const exportData await getAllMainData();// 表头内容let fitstTitleList [];const secondTitleList [];allColumns.value.forEach(column > {if (!column.children) {fitstTitleL…...

【AI学习】三、AI算法中的向量

在人工智能&#xff08;AI&#xff09;算法中&#xff0c;向量&#xff08;Vector&#xff09;是一种将现实世界中的数据&#xff08;如图像、文本、音频等&#xff09;转化为计算机可处理的数值型特征表示的工具。它是连接人类认知&#xff08;如语义、视觉特征&#xff09;与…...

3403. 从盒子中找出字典序最大的字符串 I

3403. 从盒子中找出字典序最大的字符串 I 题目链接&#xff1a;3403. 从盒子中找出字典序最大的字符串 I 代码如下&#xff1a; class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...

实现弹窗随键盘上移居中

实现弹窗随键盘上移的核心思路 在Android中&#xff0c;可以通过监听键盘的显示和隐藏事件&#xff0c;动态调整弹窗的位置。关键点在于获取键盘高度&#xff0c;并计算剩余屏幕空间以重新定位弹窗。 // 在Activity或Fragment中设置键盘监听 val rootView findViewById<V…...

Redis数据倾斜问题解决

Redis 数据倾斜问题解析与解决方案 什么是 Redis 数据倾斜 Redis 数据倾斜指的是在 Redis 集群中&#xff0c;部分节点存储的数据量或访问量远高于其他节点&#xff0c;导致这些节点负载过高&#xff0c;影响整体性能。 数据倾斜的主要表现 部分节点内存使用率远高于其他节…...

Maven 概述、安装、配置、仓库、私服详解

目录 1、Maven 概述 1.1 Maven 的定义 1.2 Maven 解决的问题 1.3 Maven 的核心特性与优势 2、Maven 安装 2.1 下载 Maven 2.2 安装配置 Maven 2.3 测试安装 2.4 修改 Maven 本地仓库的默认路径 3、Maven 配置 3.1 配置本地仓库 3.2 配置 JDK 3.3 IDEA 配置本地 Ma…...

算法笔记2

1.字符串拼接最好用StringBuilder&#xff0c;不用String 2.创建List<>类型的数组并创建内存 List arr[] new ArrayList[26]; Arrays.setAll(arr, i -> new ArrayList<>()); 3.去掉首尾空格...

MySQL账号权限管理指南:安全创建账户与精细授权技巧

在MySQL数据库管理中&#xff0c;合理创建用户账号并分配精确权限是保障数据安全的核心环节。直接使用root账号进行所有操作不仅危险且难以审计操作行为。今天我们来全面解析MySQL账号创建与权限分配的专业方法。 一、为何需要创建独立账号&#xff1f; 最小权限原则&#xf…...