当前位置:网站首页>【硬件架构的艺术】学习笔记(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低的输入信号。
边栏推荐
- 国家安全机关对涉嫌危害国家安全犯罪嫌疑人杨智渊实施刑事拘传审查
- SQL语句的写法:Update、Case、 Select 一起的用法
- Chinese valentine's day, of course, to learn SQL optimization better leave work early to find objects
- Button control switch 4017 digital circuit chip
- How to Identify Asynchronous I/O Bottlenecks
- Niuke.com Brush Question Record || Linked List
- CCF GLCC正式开营|九州云开源专家携丰厚奖金,助力高校开源推广
- 并发刺客(False Sharing)——并发程序的隐藏杀手
- idea去掉spark的日志
- How to find the location of a pdf file in endnote literature
猜你喜欢
Kyushu Cloud attended the Navigator Online Forum to discuss the current status, challenges and future of 5G MEC edge computing
"Social Enterprises Conducting Civilian Personnel Training Specifications" group standard on the shelves of Xinhua Bookstore
【毕设选题推荐】机器人工程专业毕设选题推荐
idea permanent activation tutorial (new version)
《社会企业开展应聘文职人员培训规范》团体标准在新华书店上架
Week 7 Latent Variable Models and Expectation Maximization
九州云出席领航者线上论坛,共话5G MEC边缘计算现状、挑战和未来
卷积神经网络 基础
人像分割技术解析与应用
浙江大学团队使用基于知识图谱的新方法,从空间分辨转录组数据中推断细胞间通信状况
随机推荐
Niuke.com Brush Question Record || Linked List
(记录)异步并发,多线程处理表的统计
Button control switch 4017 digital circuit chip
中大型商业银行堡垒机升级改造就用行云管家!必看!
router---Programmatic navigation
SQL语句的写法:Update、Case、 Select 一起的用法
小 P 周刊 Vol.13
Analysis and application of portrait segmentation technology
烂大街的缓存穿透、缓存击穿和缓存雪崩,你真的懂了?
leetcode 48. Rotate Image (Medium)
开放麒麟 openKylin 版本规划敲定:10 月发布 0.9 版并开启公测,12 月发布 1.0 版
文字编码 - Markdown 简明教程
C# 复制列表
Problem solving-->Online OJ (18)
vcl啥意思_oval
Win11快速助手在哪里?Win11打开快速助手的方法
Cockpit human-computer interaction "undercurrent", voice "down", multi-modal "up"
How to find the location of a pdf file in endnote literature
LCP 06. 拿硬币-遍历
Interviewer: Tell me the difference between NIO and BIO