当前位置: 首页 > 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…...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

XCTF-web-easyupload

试了试php&#xff0c;php7&#xff0c;pht&#xff0c;phtml等&#xff0c;都没有用 尝试.user.ini 抓包修改将.user.ini修改为jpg图片 在上传一个123.jpg 用蚁剑连接&#xff0c;得到flag...

synchronized 学习

学习源&#xff1a; https://www.bilibili.com/video/BV1aJ411V763?spm_id_from333.788.videopod.episodes&vd_source32e1c41a9370911ab06d12fbc36c4ebc 1.应用场景 不超卖&#xff0c;也要考虑性能问题&#xff08;场景&#xff09; 2.常见面试问题&#xff1a; sync出…...

练习(含atoi的模拟实现,自定义类型等练习)

一、结构体大小的计算及位段 &#xff08;结构体大小计算及位段 详解请看&#xff1a;自定义类型&#xff1a;结构体进阶-CSDN博客&#xff09; 1.在32位系统环境&#xff0c;编译选项为4字节对齐&#xff0c;那么sizeof(A)和sizeof(B)是多少&#xff1f; #pragma pack(4)st…...

【解密LSTM、GRU如何解决传统RNN梯度消失问题】

解密LSTM与GRU&#xff1a;如何让RNN变得更聪明&#xff1f; 在深度学习的世界里&#xff0c;循环神经网络&#xff08;RNN&#xff09;以其卓越的序列数据处理能力广泛应用于自然语言处理、时间序列预测等领域。然而&#xff0c;传统RNN存在的一个严重问题——梯度消失&#…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文&#xff1f; 多租户隔离&#xff1a;自动为接入设备追加租户前缀&#xff0c;后端按 ClientID 拆分队列。零代码鉴权&#xff1a;将入站用户名替换为 OAuth Access-Token&#xff0c;后端 Broker 统一校验。灰度发布&#xff1a;根据 IP/地理位写…...

质量体系的重要

质量体系是为确保产品、服务或过程质量满足规定要求&#xff0c;由相互关联的要素构成的有机整体。其核心内容可归纳为以下五个方面&#xff1a; &#x1f3db;️ 一、组织架构与职责 质量体系明确组织内各部门、岗位的职责与权限&#xff0c;形成层级清晰的管理网络&#xf…...

Robots.txt 文件

什么是robots.txt&#xff1f; robots.txt 是一个位于网站根目录下的文本文件&#xff08;如&#xff1a;https://example.com/robots.txt&#xff09;&#xff0c;它用于指导网络爬虫&#xff08;如搜索引擎的蜘蛛程序&#xff09;如何抓取该网站的内容。这个文件遵循 Robots…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上&#xff0c;所以报错&#xff0c;到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本&#xff0c;cu、torch、cp 的版本一定要对…...