【CDC 系列】跨时钟域处理(一)同步器

目录

 

同步器

两种同步场景

两级触发同步器

平均故障前时间--MTBF

三级触发同步器

同步来自发送时钟域的信号

将信号同步到接收时钟域

说明


 

同步器

在时钟域之间传递信号时,要问的一个重要问题是,我是否需要对从一个时钟域传递到另一个时钟域的信号的每个值进行采样?

两种同步场景

跨 CDC 边界传递信号时可能出现两种情况,确定哪种情况适用于设计很重要:

(1) 允许错过在时钟域之间传递的样本。

(2) 必须对时钟域之间传递的每个信号进行采样。

第一种情况:有时不需要对每个值进行采样,但采样值准确很重要。一个例子是标准异步 FIFO 设计中使用的一组格雷码计数器。在适当设计的异步 FIFO 模型中,同步格雷码计数器不需要从相反的时钟域捕获每个有效值,但至关重要的是,采样值准确识别何时发生了满和空情况。

第二种情况:在允许对 CDC 信号进行更改之前,必须正确识别 CDC 信号。

在这两种情况下,CDC 信号都需要某种形式的同步到接收时钟域。

两级触发同步器

“同步器是一种对异步信号进行采样并输出具有与本地或采样时钟同步的转换信号的设备。”最常用的同步器是双触发器同步器,如下图所示。

第一个触发器将异步输入信号采样到新的时钟域并等待一个完整的时钟周期以允许第一级输出信号上的任何亚稳态衰减,然后由同一时钟将第一级信号采样到第二个阶段触发器,其预期目标是,阶段 2 信号现在是一个稳定且有效的信号,已同步并准备好在新时钟域内分发。

8452c9ea49e240669988f64b2643c93c.png

 

理论上,当信号被计时进入第二级时,第一级信号仍然足够亚稳态以使第二级输出信号也进入亚稳态。

同步故障间隔时间 (MTBF) 概率的计算是多个变量的函数,包括用于生成输入信号和为同步触发器提供时钟的时钟频率。

对于大多数同步操作,两个触发器同步器足以消除所有可能的亚稳态。

平均故障前时间--MTBF

MTBF(mean time before failure),对于大多数应用来说,计算任何跨越 CDC 边界的信号的平均故障前时间 (MTBF) 非常重要。从这个意义上说,故障意味着传递到同步触发器的信号,在第一级同步器触发器上进入亚稳态,并且在一个周期后当它被采样到第二级同步器触发器时继续亚稳态。由于信号在一个时钟周期后没有稳定到已知值,因此在采样并传递到接收时钟域时信号仍然可能是亚稳态的,从而导致相应逻辑的潜在故障。

在计算 MTBF 数字时,较大的数字优于较小的数字。较大的 MTBF 数字表示潜在故障之间的时间较长,而较小的 MTBF数字表明亚稳态可能经常发生,同样会导致设计失败。

Dally 和 Poulton 给出一个方程,对可以执行的计算进行了非常彻底的分析,以计算同步器电路的 MTBF。在不重复公式和分析的情况下,应该指出直接影响同步器电路 MTBF 的两个最重要因素是采样时钟频率(信号被采样到接收时钟域的速度)和数据更改频率(跨越 CDC 边界的数据更改速度有多快)。

ea9d23c767394ec9a115dda0eaabc1c6.png

 

从上面的方程可以看出,在更高速率的设计中,或者当采样数据更频繁地变化时,故障发生的频率更高(MTBF 更短)。

三级触发同步器

对于一些非常高速的设计,双触发器同步器的 MTBF 太短,并且添加了第三触发器以将 MTBF 增加到令人满意的持续时间。三级触发器在同步中使用比较少,两级触发器就足以应对绝大多数的设计。

68adce9efc174a19a35e140d7d48f673.png

 

同步来自发送时钟域的信号

有关 CDC 设计的常见问题:在将信号传递到接收时钟域之前寄存来自发送时钟域的信号是否是个好主意?问题中暗示 CDC 信号将同步到接收时钟域的假设;因此,它们不需要在发送时钟域中进行同步。这种合理化是不正确的,通常需要在发送时钟域中寄存信号。

考虑一个示例,其中发送时钟域中的信号在传递到接收时钟域之前未寄存,如图所示。

46c6673a0804436fb07dfacd22d6400a.png

 

在此示例中,来自发送时钟域的组合逻辑输出可能会在 CDC 边界处有一连串的组合逻辑输出。这种情况大大增加了数据变化频率,可能会产生小的振荡数据突发,从而增加在变化时可以采样的边沿的数量,相应地增加对变化数据进行采样和生成亚稳态信号的可能性。

将信号同步到接收时钟域

发送时钟域中的信号应在传递到 CDC 边界之前进行同步。来自发送时钟域的信号同步减少了可以在接收时钟域采样的边沿数量,有效地降低了 MTBF 方程中的数据变化频率,从而增加了计算故障之间的时间。

f03d51327fa34e3a843295944613e275.png

 

在上图中, aclk时钟域的逻辑在被传递到adat触发器之前稳定并建立bclk域。 adat触发器过滤掉触发器输入上的组合逻辑串(a),并将一个合适的信号传递给bclk时钟域。

说明

本文是对《Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog》的文章的翻译及部分说明解释

 

 

  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Linest-5

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

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

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

打赏作者

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

抵扣说明:

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

余额充值