当前位置:网站首页>【硬件架构的艺术】学习笔记(1)亚稳态的世界
【硬件架构的艺术】学习笔记(1)亚稳态的世界
2022-08-04 14:10:00 【Linest-5】
目录
写在前面
这个博客系列是对最近阅读的书籍《硬件架构的艺术》的读书笔记,大部分的内容是摘抄书上的内容,小部分是自己的笔记,对书上部分知识点的理解以及拓展(有标注)。
1. 亚稳态
1.1 什么是亚稳态?
在之前的文章中有介绍,直接调用链接。
1.2 亚稳态窗口
亚稳态窗口( Metastability Window) 具有特定的时间长度,在这段时间内输入信号和时钟都应该保持不变。如果它们发生变化,输出就可能变成亚稳态。如下图所示,建立时间和保持时间共同决定亚稳态窗口的宽度。

窗口越大,进入亚稳态的概率越高。在大多数情况下,较新的逻辑器件会有更小的亚稳态窗口,也就意味着器件进入亚稳态的概率会更小。
亚稳态窗口可以看作需要数据稳定的时长,因此需要数据稳定的时长越长,就越难满足要求,也就越容易出现亚稳态。
1.3 避免亚稳态
如上面所述,每当违背建立、保持时间时,亚稳态就会出现。在以下条件中,信号可能违背时序要求。
- 输入信号是异步信号。
- 时钟偏移/摆动(上升/下降时间)高于容限值。
- 信号在两个不同频率或者相同频率但是相位和偏移不同的时钟域下跨时钟域工作。
- 组合延迟使触发器的数据输入在亚稳态窗口内发生变化。
亚稳态会引起过多的传输延迟和系统故障,所有的触发器和寄存器都存在亚稳态。虽然亚稳态不能根除,但是可以减小亚稳态发生的概率。
在最简单的情况下,设计人员可以通过确保时钟周期足够长来避免亚稳态,这个时钟周期要大于准稳态的解析时间,也要大于通往下一级触发器的路径上的任何逻辑延迟。虽然这种方法简单,但在大多数现代设计的性能要求下并不实用。另一种避免亚稳态的方法就是使用同步器。
1.3.1 使用多级同步器
避免亚稳态最常见的方法是在跨时钟域的信号上加上一个或者多个同步触发器,如下图所示。这种方法用一个完整的时钟周期来解决第一级同步触发器的亚稳态问题(不包括第二级触发器的建立时间)。但是这种方式增加了观察同步逻辑输入的延迟。

1.3.2 使用时钟倍频电路的多级同步器
多级同步器的一个局限就是系统需要花费较长的时间去响应异步输入。解决这个问题的办法就是使用倍频时钟作为两个同步触发器的时钟输入。Altera 的 FPGA 中具有这项称为时钟倍频的技术。

这种方法不仅能够让系统在一个系统时钟周期内响应一个异步输入,而且改善了MTBF。尽管这种倍频时钟能够降低MTBF,但是这个影响要超过两级触发器引起的偏移量。两种方法都不能保证同步器阻止亚稳态传播下去,它们仅仅减少了亚稳态发生的概率。
这里采用倍频时钟的是因为用快时钟去采样慢时钟是能够将数据采集完整的,不会出现遗漏的问题,也不一定需要倍频两倍,比源时钟快即可,一般数据从慢时钟域跨到快时钟域的时候,解决方式都是采用打两拍,也就是使用两级同步器。
1.4 亚稳态测试电路
每当触发器采样一个异步输入时,触发器输出都可能会产生一个不可预测的延迟,虽然这个概率很低。这不仅会在输人违反建立、保持时间要求时发生,而且在触发器接收新的输人这一小段时序窗口内也会发生。在这些情况下,触发器都会进人亚稳态。
图1.8所描述的测试电路可以用来确定触发器的亚稳态特征。下图给出了有一个异步输入“async_ jin” 的触发器“FF", 再由时钟 "clk"的上升沿触发。下图中所示的触发器“FFp”和“FFc”都在时钟下降沿触发,这样做是为了捕捉FF的亚稳态事件。

当两个互补的信号分别传递到“FFB” 和“FFC”的输入时,无论“FFA”什么时候出现亚稳态事件,异或非( XNOR)门的输出都会变为高电平。在触发器“FF。” 输出端捕捉到高电平就表明已经检测到亚稳态事件。
测试电路中所有节点的时序如下图所示。

因为解析触发器(“FFB" 和“FFc") 由时钟下降沿触发,所以可以通过改变时钟高电平的时间(Δt)来控制所要求的稳定时间。稳定时间tmet由下式确定
tmet =Δt - tACN
式中,tscN是最小时钟周期,等于tco (FFA的时钟到输出延迟) + 解析触发器(FFg 或FFc)的建立时间tsu。
减少解析时间或者稳定时间的方法之一就是给建立/保持时间处的数据集中加入抖动。
异或非的逻辑如下
相同为 1,不同为 0,在 FFA 输出经过一个反相器输出到 FFC,如果正常的话,输入到 FFB 和 FFC 的数值是相反的,如果出现了亚稳态则两个输出就会变成一样,从而导致异或非输出为 1,这样就可以达到检测电路是否出现亚稳态。
A | B | OUT |
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
1.5 同步器的类型
一个异步输入电路的 MTBF 和用于从亚稳态恢复的时间呈指数关系。用同步器构成的时间缓冲器可以帮助从亚稳态中恢复。
要注意,一个异步信号不应该被两个或者多个同步器所同步( 这样做会存在多级同步器输出产生不同信号的风险)。本节介绍两级同步器的两种不同的模式:模式A和模式B。
模式A是一个标准的电路,当异步输入信号比时钟周期大得多时最有效。


注意,即使异步输入在建立时间区间之外稳定,它仍然需要由时钟驱动产生两个周期的延迟,否则 FF1 可能进人亚稳态。
如果亚稳态在不到一个时钟周期内就解析了,FF2 就会有稳定的输入,否则就需要更深层的级联。
但是,模式A不能用于异步输入信号的宽度小于时钟周期的情况。在这种情况下要采用模式 B,如图所示。

注意,对于同步器的模式 B,第一级触发器的输人 D 与 Vcc 相连,同时时钟信号是异步输人信号。另外两个触发器直接由系统时钟(clk) 控制。一个短脉冲让 q1 变成高电平,这个高电平在经过两个时钟(clk) 沿后从 sync__out 输出。
总结了如下规则
- 当信号必须跨时钟域工作时,要采用同步器。
- 如果 clk1
个人理解是:如果需要跨时钟域的数据的宽度比时钟大的多,则使用模式 A,如果数据宽度比时钟小,这时候使用再用时钟去采的话会导致数据采样丢失部分,这时候采用模式 B 进行同步,根据之前所学的知识也可以知道,也可以使用 FIFO 或者握手机制的方式进行数据跨时钟域处理。
1.6 亚稳态综合性建议
在两个相互异步系统的交界亚稳态是不可避免的。但是下面几点建议可以减小亚稳态发生的概率。
- 采用同步器。
- 采用响应更快的触发器(缩短亚稳态窗口Tw)。
- 使用亚稳态硬化触发器(专为高宽带设计并且减少为时钟域输入电路而优化的采样时间)。
- 使用级联触发器(两个或者多个)作为同步器。如果一个触发器的亚稳态失败概率为P,那么N个触发器的亚稳态失败率就是P"。
- 减少采样速率。
- 避免使用dV/dt低的输入信号。
边栏推荐
- leetcode 48. Rotate Image 旋转图像(Medium)
- Fuse bit of AVR study notes
- 如何才能有效、高效阅读?猿辅导建议“因材因时施教”
- LeetCode 1403 Minimum subsequence in non-increasing order [greedy] HERODING's LeetCode road
- Utility function---string processing
- leetcode 48. Rotate Image (Medium)
- 从理论到实践:MySQL性能优化和高可用架构,一次讲清
- How to install postgresql and configure remote access in ubuntu environment
- SQL语句的写法:Update、Case、 Select 一起的用法
- 国家安全机关对涉嫌危害国家安全犯罪嫌疑人杨智渊实施刑事拘传审查
猜你喜欢

如何通过使用“缓存”相关技术,解决“高并发”的业务场景案例?

Theory 1: Deep Learning - Detailed Explanation of the LetNet Model

如何查找endnote文献中pdf文件的位置
将 Sentinel 熔断限流规则持久化到 Nacos 配置中心

Problem solving-->Online OJ (18)

九州云出席领航者线上论坛,共话5G MEC边缘计算现状、挑战和未来

化繁为简,聊一聊复制状态机系统架构抽象

谁说 Mysql 单表最大 2000 W ?我硬要塞它 1 个亿
![[LeetCode] 38. Appearance sequence](/img/d6/092796b57844d5d30f3ed123a1b98a.png)
[LeetCode] 38. Appearance sequence

物联网应用发展趋势
随机推荐
Cockpit human-computer interaction "undercurrent", voice "down", multi-modal "up"
并发程序的隐藏杀手——假共享(False Sharing)
State security organs conduct criminal arrest and summons review on Yang Zhiyuan, a suspect suspected of endangering national security
卷积神经网络 基础
Various problems with npm install
Convolutional Neural Network Basics
阿里老鸟终于把测试用例怎么写说的明明白白了,小鸟必看
如何才能有效、高效阅读?猿辅导建议“因材因时施教”
(记录)异步并发,多线程处理表的统计
word2003按空格键为什么会出现小数点
MySQL【窗口函数】【共用表表达式】
爬虫——selenium基本使用、无界面浏览器、selenium的其他用法、selenium的cookie、爬虫案例
CCF GLCC officially opened | Kyushu Cloud open source experts bring generous bonuses to help universities promote open source
idea permanent activation tutorial (new version)
没有Project Facets的解决方法
南瓜科学产品升级 开启益智探索新篇章
基于 Next.js实现在线Excel
企业应当实施的5个云安全管理策略
AlphaFold 如何实现 AI 在结构生物学中的全部潜力
odoo15 大部分模块都用的附件整理成一独立模块