《硬件架构的艺术》读书笔记:Chapter 1 亚稳态的世界
创始人
2025-05-30 13:05:12
0

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​=Wfc​fd​e(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​=Wfc​fd​e(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_BFFB​和FFCFF_CFFC​都在时钟下降沿触发,这样做是为了捕捉FFAFF_AFFA​的亚稳态事件。

  • 当发生亚稳态时,异或非门会输出高电平,所以FFDFF_DFFD​捕捉到高电平就代表检测到亚稳态,时序图如下。
image-20230317215547807
  • 由于FFBFF_BFFB​和FFCFF_CFFC​两个触发器是下降沿触发,所以高电平时间减去FFAFF_AFFA​的tcot_cotc​o和FFBFF_BFFB​和FFCFF_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,采用模式A,否则采用模式B。

八、亚稳态/综合性建议

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

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

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

相关内容

热门资讯

BFC块级格式化上下文 一、概念 BFC - Block Formatting Context 块级格式化上下文 BFC的定...
实验2---mybatis映射... mybatis映射文件 1.目的 通过该实验,掌握mybatis映射文件中结果映射re...
马斯克黯然下课,临走前给特朗普... 黯然下课,马斯克要走了。5月底,马斯克正式宣布,即将卸任“政府效率部”部长职务,为其在特朗普政府的任...
100天精通Python(可视... 文章目录0. 专栏导读1. 普通折线图2. 网格折线图3. 趋势折线图4. 对比折线图5. 百分比折...
济南大学202204(汉诺塔递... #include #include #include void hanoi(int n, char ...
从数据中获得成功!学会如何使用... 在当今数字化的世界中,社交媒体已成为企业推广产品和服务的主要渠道之一。然而࿰...
考研复试——离散数学 三年疫情都没有笔试,今年恢复,大概率会有笔试。 2023年3月19号&#...
并发基础之Callable与F... 目录前言浅析Callale接口Callale源码分析Callale简单演示浅析Future接口Fut...
DevOps是什么?DevOp... 目录专栏导读一、DevOps是什么?二、为什么会出现DevOps?1、容...
9、Cascaded Diff... 简介 主页:https://cascaded-diffusion.github.io/...
记首次小程序遇到坑及解决 前言 由于工作需要,首次进行微信小程序开发,从基础环境搭建到小程序发布&...
虚拟机使用AlmaLinux搭... 使用Parallels Desktop虚拟机运行 环境:AlmaLinux9.1 &#...
GMP理解 目录goroutine动态栈goroutine调度GOMAXPROCS为什么不直接将本地队列放在 M...
重磅解读:组建国家数据局,数据... “国务院关于提请审议国务院机构改革方案的议案,组建国家数据局,数据要素正...
ElasticSearch -... 文章目录1. 数据构造2. ElasticSearch 查询集群中所有索引中的所有文档3. Elas...
VSCode配置之OnnxRu... 背景 最近在尝试将Pytorch模型部署为Cmodel并讨论推理框架的速度优势,作为V...
金三银四互联网大厂最全1000... Java 面试 大家都知道,现在的 Java 面试是越来越难了!主要原因...
DW3000芯片SPI通信接口... SPI功能描述DW3000的主机接口是一个4线spi兼容的外围设备。SPI控制器(主机)断言SPIC...
儿童甲流高发,宝妈记住预防3部... 春天来了,儿童甲流的高发期也来了。根据国家流感监测中心的数据,流感病毒的...
基于Gin封装的Web框架如何... 在登陆系统中我们我们时常要去校验密码是否正确,而数据库中的密码是密文形式在Gin中我们...