【硬件架构的艺术】学习笔记(1)亚稳态的世界

目录

 

1. 亚稳态

1.1 什么是亚稳态?

1.2 亚稳态窗口

1.3 避免亚稳态

1.3.1 使用多级同步器

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

1.4 亚稳态测试电路

1.5 同步器的类型

1.6 亚稳态综合性建议


 

1. 亚稳态

1.1 什么是亚稳态?

在之前的文章中有介绍,直接调用链接。

【亚稳态、建立时间和保持时间】亚稳态的产生原因、危害及解决方法

1.2 亚稳态窗口

亚稳态窗口( Metastability Window) 具有特定的时间长度,在这段时间内输入信号和时钟都应该保持不变。如果它们发生变化,输出就可能变成亚稳态。如下图所示,建立时间和保持时间共同决定亚稳态窗口的宽度。

ef9021b7b40340ad83ed0d7e9278b930.png

窗口越大,进入亚稳态的概率越高。在大多数情况下,较新的逻辑器件会有更小的亚稳态窗口,也就意味着器件进入亚稳态的概率会更小。

亚稳态窗口可以看作需要数据稳定的时长,因此需要数据稳定的时长越长,就越难满足要求,也就越容易出现亚稳态。

1.3 避免亚稳态

如上面所述,每当违背建立、保持时间时,亚稳态就会出现。在以下条件中,信号可能违背时序要求。

  • 输入信号是异步信号。
  • 时钟偏移/摆动(上升/下降时间)高于容限值。
  • 信号在两个不同频率或者相同频率但是相位和偏移不同的时钟域下跨时钟域工作。
  • 组合延迟使触发器的数据输入在亚稳态窗口内发生变化。

亚稳态会引起过多的传输延迟和系统故障,所有的触发器和寄存器都存在亚稳态。虽然亚稳态不能根除,但是可以减小亚稳态发生的概率。

在最简单的情况下,设计人员可以通过确保时钟周期足够长来避免亚稳态,这个时钟周期要大于准稳态的解析时间,也要大于通往下一级触发器的路径上的任何逻辑延迟。虽然这种方法简单,但在大多数现代设计的性能要求下并不实用。另一种避免亚稳态的方法就是使用同步器。

1.3.1 使用多级同步器

避免亚稳态最常见的方法是在跨时钟域的信号上加上一个或者多个同步触发器,如下图所示。这种方法用一个完整的时钟周期来解决第一级同步触发器的亚稳态问题(不包括第二级触发器的建立时间)。但是这种方式增加了观察同步逻辑输入的延迟。

86d33089eb5a4d58a935ed7775f3b2ab.png

 

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

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

d1383db6887740918a2f5c9218ea9c2c.png

 

这种方法不仅能够让系统在一个系统时钟周期内响应一个异步输入,而且改善了MTBF。尽管这种倍频时钟能够降低MTBF,但是这个影响要超过两级触发器引起的偏移量。两种方法都不能保证同步器阻止亚稳态传播下去,它们仅仅减少了亚稳态发生的概率。

这里采用倍频时钟的是因为用快时钟去采样慢时钟是能够将数据采集完整的,不会出现遗漏的问题,也不一定需要倍频两倍,比源时钟快即可,一般数据从慢时钟域跨到快时钟域的时候,解决方式都是采用打两拍,也就是使用两级同步器。

1.4 亚稳态测试电路

每当触发器采样一个异步输入时,触发器输出都可能会产生一个不可预测的延迟,虽然这个概率很低。这不仅会在输人违反建立、保持时间要求时发生,而且在触发器接收新的输人这-一小段时序窗口内也会发生。在这些情况下,触发器都会进人亚稳态。

图1.8所描述的测试电路可以用来确定触发器的亚稳态特征。下图给出了有一个异步输入“async_ jin” 的触发器“FF、", 再由时钟“clk" 的上升沿触发。下图中所示的触发器“FFp”和“FFc”都在时钟下降沿触发,这样做是为了捕捉FF的亚稳态事件。

8db8e3d58fb845cdacff59e6d97b4d6d.png

 

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

测试电路中所有节点的时序如下图所示。

278408037ce14817ac1bd9aa54428491.png

 

因为解析触发器(“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是一个标准的电路,当异步输入信号比时钟周期大得多时最有效。

 

48642701796d4ddfa01b1e23f9ca00c6.png

7117788929a941408582792d1a25b4c0.png

 

注意,即使异步输入在建立时间区间之外稳定,它仍然需要由时钟驱动产生两个周期的延迟,否则 FF1 可能进人亚稳态。

如果亚稳态在不到一个时钟周期内就解析了,FF2 就会有稳定的输入,否则就需要更深层的级联。

但是,模式A不能用于异步输入信号的宽度小于时钟周期的情况。在这种情况下要采用模式 B,如图所示。

da11b0970d48456ab1d654b7b3ff9564.png

 

注意,对于同步器的模式 B,第一级触发器的输人 D 与 Vcc 相连,同时时钟信号是异步输人信号。另外两个触发器直接由系统时钟(clk) 控制。一个短脉冲让 q1 变成高电平,这个高电平在经过两个时钟(clk) 沿后从 sync__out 输出。

总结了如下规则

  • 当信号必须跨时钟域工作时,要采用同步器。
  • 如果 clk1

个人理解是:如果需要跨时钟域的数据的宽度比时钟大的多,则使用模式 A,如果数据宽度比时钟小,这时候使用再用时钟去采的话会导致数据采样丢失部分,这时候采用模式 B 进行同步,根据之前所学的知识也可以知道,也可以使用 FIFO 或者握手机制的方式进行数据跨时钟域处理。

1.6 亚稳态综合性建议

在两个相互异步系统的交界面亚稳态是不可避免的。但是下面的几点建议可以明显减小亚稳态发生的概率。

  1. 采用同步器。
  2. 采用响应更快的触发器(缩短亚稳态窗口Tw)。
  3. 使用亚稳态硬化触发器(专为高宽带设计并且减少为时钟域输入电路而优化的采样时间)。
  4. 使用级联触发器(两个或者多个)作为同步器。如果一个触发器的亚稳态失败概率为P,那么N个触发器的亚稳态失败率就是P"。
  5. 减少采样速率。
  6. 避免使用dV/dt低的输入信号。

 

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Linest-5

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值