多异步时钟设计(1)

1.0 亚稳态介绍

亚稳态是指在设计的正常操作期间的某个时间点在某些持续时间内不呈现稳定的0或1状态的信号。 在多时钟设计中,不能避免亚稳态,但可以抵消亚稳态的不利影响。
引自Dally和Poulton关于亚稳态的书:
“当用时钟对变化的数据信号进行采样时…事件的顺序决定了结果。事件之间的时间差越小,确定哪个事件首先出现的时间越长。当两个事件非常接近时, 决策过程可能需要比分配的时间更长的时间,并且会发生同步失败。‘’

在这里插入图片描述
如图1所示,
显示了当在一个时钟域中生成的信号被采样得太接近来自第二时钟域的时钟信号的上升沿时发生的同步失败。 同步失败是由输出变为亚稳态引起的,并且在输出必须再次采样时不会收敛到合法稳定状态。
在任何设计中使用的每个触发器都具有指定的建立和保持时间,或者在时钟上升沿之前和之后规则上上不允许更改数据输入的时间。 该时间窗口被精确地指定为设计参数,以防止数据信号变得太接近于可能导致输出变为亚稳定的另一同步信号。

2.0 MTBF - mean time before failure

对于大多数应用,重要的是对穿过Clock Domain Crossing(CDC)边界的任何信号运行平均故障前时间(MTBF)的计算。
在这种意义上的失败意味着传递到同步触发器的信号在第一级同步器触发器上变为亚稳态,并且在其被采样到第二级同步器触发器中的一个循环之后继续变为亚稳态。由于在一个时钟周期之后信号没有稳定到已知值,所以当采样并传递到接收时钟域时,信号仍然可以是亚稳定的,从而导致相应逻辑的潜在故障。

在计算MTBF数时,较大的数字优先于较小的数字。较大的MTBF数字表示潜在故障之间的较长时间段,而较小的MTBF数字表明亚稳态可能频繁发生,同样导致设计内的故障。

Dally和Poulton 给出了一个很好的方程式,可以对计算同步器电路的MTBF进行非常详尽的计算分析。在不重复等式和分析的情况下,应该指出直接影响同步器电路的MTBF的两个最重要的因素是采样时钟频率(信号被采样到接收时钟域的速度有多快)和数据改变频率(跨越CDC边界的数据变化的速度)
在这里插入图片描述
从上面的部分方程式可以看出,在较高速度设计中或者当采样数据更频繁地改变时,故障更频繁地发生(更短的MTBF)。
详细介绍可参见博客
https://blog.csdn.net/mao0514/article/details/52224307

3.0 亚稳态的解决

在跨越CDC边界传递信号时,有两种情况是可能的,确定哪种情况适用于设计非常重要:

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

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

第一种情况:有时没有必要对每个值进行采样,但采样值的准确性非常重要。一个例子是标准异步FIFO设计中使用的一组格雷码计数器。在正确设计的异步FIFO模型中,同步的格雷码计数器不需要从相反的时钟域捕获每个合法值,但是在完全和空条件发生时,采样值准确识别是至关重要的。

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

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

3.1同步器

对于第一种情况,可以使用同步器。

3.1.1 双触发

再次引用Dally和Poulton 关于同步器:

“同步器是一种对异步信号进行采样并输出信号版本的设备,该信号具有与本地或采样时钟同步的转换。”
数字设计人员使用的最简单和最常见的同步器是双触发器同步器,如图3所示。

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

在这里插入图片描述

理论上,当信号被计时到第二级时,阶段1信号仍然可以充分地亚稳定,以使阶段2输出信号也变为亚稳态。 同步失败之间的时间概率(MTBF)的计算是多个变量的函数,包括用于产生输入信号和为同步触发器计时的时钟频率。
对于大多数同步应用,两个触发器同步器足以消除所有可能的亚稳态。

3.1.2 三触发

如图所示
在这里插入图片描述
对于一些非常高速的设计,双触发器的MBTF明显太短,所以会再增加一级触发器在增加MBTF的时间。

3.1.3 在发送时钟域进行信号同步

Clifford在《Clock Domain Crossing (CDC) Design & Verification Techniques Using SystemVerilog》一文中指出,在发送时钟域对信号进行同步是很有必要的,
如下例子是没有在发送时钟域对信号进行的同步i的例子

在这里插入图片描述

在该示例中,来自发送时钟域的组合输出可以经历在CDC边界处的组合建立。 这种组合增加了数据变化频率,可能产生小的振荡数据突发,从而增加了在改变时可以采样的边缘数量,相应地增加了采样变化数据和产生亚稳态信号的可能性。

但是在发送时钟域对信号进行同步,如下图

在这里插入图片描述

来自发送时钟域的信号同步减少了可在接收时钟域中采样的边沿数量,有效地降低了MTBF等式中的数据变化频率,从而增加了计算出的故障之间的时间 数据变化频率对MTBF的影响)。

在图7中,aclk逻辑在传递到bclk域之前在adat触发器上建立并建立。 adat触发器滤除了触发器输入(a)上的组合建立,并将干净的信号传递给bclk逻辑。

3.2 将快信号同步到慢时钟域

如果在时钟域之间传递时不能跳过CDC信号,则在时钟域之间传递时考虑信号宽度或同步技术是很重要的。

与同步器相关的一个问题是来自发送时钟域的信号可能在其被采样之前改变值两次,或者可能太接近于较慢时钟域的采样边缘。 每当信号从一个时钟域发送到另一个时钟域时,必须考虑这种可能性,并且必须确定丢失的信号是否是所讨论的设计的问题。

如果不允许遗漏信号,则有两种常见方法可解决此问题:

(1)开环解决方案,确保在没有确认的情况下捕获信号。

(2)闭环解决方案,要求确认接收穿过CDC边界的信号。

3.2.1 要求在时钟域之间传递可靠的信号

如果较快的时钟域是较慢时钟域的频率(或更多)的1.5倍,则将较慢的控制信号同步到较快的时钟域通常不是问题,因为较快的时钟信号将对较慢的CDC信号进行一次或多次采样。 认识到将较慢的信号采样到更快的时钟域比将更快的信号采样到更慢的时钟域中导致更少的潜在问题,设计者可以通过使用简单的两个触发器同步器在时钟域之间传递单个CDC信号来利用这一事实。

3.2.1.2 “三个边缘”要求

Mark Litterick指出,当通过双触发器同步器在时钟域之间传递一个CDC信号时,CDC信号必须宽于接收域时钟周期的周期宽度的1.5倍。 Littereick将此要求描述为“输入数据值必须对三个目标时钟边缘稳定”。

对于特别长的源和目标时钟频率,此要求可能安全地放宽到接收时钟域的周期时间的1.25倍或更少,但“三边”指南是最安全的初始设计条件,并且 通过使用SystemVerilog更容易证明,而不是在模拟过程中动态测量CDC信号的分数宽度。

“三边”要求实际上适用于开环和闭环解决方案,但闭环解决方案的实现需要确保检测到所有CDC信号至少有三个边沿。

3.2.1.2问题 - 传送快速CDC信号

考虑严重缺陷的情况,其中发送时钟域具有比接收时钟域更高的频率,并且CDC脉冲在发送时钟域中仅是一个周期宽。 如果CDC信号仅在一个快速时钟周期内产生脉冲,则CDC信号可能在较慢时钟的上升沿之间变为高电平和低电平,而不会被捕获到较慢的时钟域中,如图8所示。
在这里插入图片描述

3.2.1.3问题-采样一个较长的CDC信号-------但是不够长

考虑一些非直观和有缺陷的情况,其中发送时钟域向接收时钟域发送脉冲,该脉冲比接收时钟频率的周期略宽。 在大多数情况下,信号将被采样并通过,但CDC脉冲很小但很有可能会变得太接近接收时钟域的两个上升时钟边沿,从而违反了第一个时钟边沿的建立时间 并且违反第二个时钟边沿的保持时间而不形成预期的脉冲。 这种可能的故障如图9所示。

在这里插入图片描述

3.2.2 开环解决方案—用同步器采样信号

这个问题的一个潜在解决方案是将CDC信号置为超过采样时钟周期时间的一段时间,如图10所示。如4.1.1节所述,最小脉冲宽度为1.5倍。接收时钟频率。假设CDC信号将被接收器时钟至少采样一次,可能两次。

当相对时钟频率固定并进行适当分析时,可以使用开环采样。

优点:开环解决方案是跨CDC边界传递信号的最快方式,不需要确认接收信号。

缺点:与开环解决方案相关的最大潜在问题是,另一位工程师可能会将解决方案误认为是通用解决方案,或者设计要求可能会发生变化,工程师可能无法重新分析原始的开环解决方案。通过向模型添加SystemVerilog Assertion可以最小化此问题,以检测输入脉冲是否未能超过“三个边缘”设计要求。

在这里插入图片描述

3.2.3 闭环解决方案----用同步器采样信号

该问题的第二个可能的解决方案是发送使能控制信号,将其同步到新的时钟域,然后将同步的信号通过另一个同步器传递回发送时钟域作为确认信号。

优点:同步反馈信号是一种非常安全的技术,用于确认第一控制信号被识别并被采样到新的时钟域中。

缺点:在允许控制信号改变之前,在两个方向上同步控制信号可能存在相当大的延迟。

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值