40、异步数据采集:标量数据一致性与亚稳态问题解析

异步数据采集:标量数据一致性与亚稳态问题解析

1. 标量采集的数据一致性

1.1 标量采集概述

标量采集意味着仅通过一条线路跨越时钟边界。尽管获取单个比特看似简单,但实际上存在一些微妙的问题。为了更好地理解这些特性,我们先探讨一些简单方案在异步变化输入下的不足,再介绍更合适的方法。

1.2 不同同步方案分析

  • 无同步方案 :在图 8.9a 的电路中,标量输入信号 Data 未经与本地时钟 ClkQ 同步,直接送入同步消费电路的两个组合子电路 g 和 h。这可能导致两个问题:一是信号 G 和 H 有时会在污染延迟和传播延迟之间被采样,其值既不对应过去间隔 t 的稳定值,也不对应即将到来的间隔 t + 1 的值;二是即使 G 和 H 在采样时稳定,但如果 tcd g > tpd h,它们可能对应不同的时间间隔,从而在两个寄存器中存储不一致的数据。
  • 多处同步方案 :如图 8.9b 所示,在所有组合子电路前添加同步触发器可以改善情况,但并不足够。由于 Data → Datag 和 Data → Datah 路径上的不平衡延迟、时钟偏移、不同的开关阈值和噪声等因素,触发器会在不同时间采样输入,导致输入数据有时会被矛盾地解释。
  • 单点同步方案 :为避免多个触发器之间的数据不一致,必须在数据分发前集中在一个地方进行同步。这是确保所有下游电路处理在同一时间点采样的一致数据的唯一方法。因此,通常使用类似于图 8.9c 和 d 所示的同步器。任何从一个时钟域传输到另一个时钟域的标量信号,都必须由接收时钟驱动的单个同步子电路在一个地方进行同步。处理两个互补信号时,最好只传输其中一个,并在同步后重新获得补码。
  • 慢时钟同步方案 :如果同步器的时钟频率 fclkq 较慢,除非所有数据脉冲至少持续一个时钟周期 1/fclkq = Tclkq < min(tdatavalid i),否则会丢失部分输入数据。当消费端的时钟太慢时,可以采取以下措施:
    • 使用移位寄存器将数据流从位串行转换为位并行格式,从而以更低的速率传输数据,然后使用安全的向量采集方案。
    • 使用模拟锁相环 (PLL) 以更快的速率为同步器提供时钟。
    • 如果将同步器的时钟频率提高一倍足够,则采用双边沿触发的单相时钟。

1.3 不同同步方案对比

同步方案 优点 缺点
无同步 简单 易导致数据不一致和采样错误
多处同步 一定程度改善 仍存在数据解释矛盾问题
单点同步 保证数据一致性
慢时钟同步 解决慢时钟问题 需额外电路或调整

1.4 同步方案选择流程图

graph LR
    A[开始] --> B{是否需要同步}
    B -- 是 --> C{同步位置}
    C -- 多处 --> D(多处同步方案)
    C -- 单点 --> E(单点同步方案)
    B -- 否 --> F(无同步方案)
    E --> G{时钟速度}
    G -- 慢 --> H(慢时钟同步方案)
    G -- 正常 --> I(正常单点同步)

2. 边缘触发与亚稳态

2.1 亚稳态及其表现

在各种同步方案中,都涉及到一个触发器或锁存器,其数据输入连接到输入信号。由于数据和时钟之间没有固定的时序关系,数据信号有时会在时钟事件附近切换,从而违反了双稳态数据调用窗口内输入数据必须保持稳定的要求。这种情况被称为时序违规或边缘触发。

在 20 世纪 70 年代中期之前,人们普遍认为双稳态会立即决定两种可能的输出之一(0 或 1)。但后来发现,在边缘触发后,双稳态的两个互补输出在最终稳定到正常稳态之前,会出现中间电压和过长的延迟。延迟有时会比官方规定的传播延迟大几个数量级,因此有必要更好地理解这个过程。

现代数字子电路本质上是模拟网络,双稳态也不例外。锁存器、触发器和 SRAM 单元的数据保留能力主要来自由两个反相放大器组成的闭环反馈回路。状态空间有两个稳定平衡点,分别对应二进制状态 0 和 1,中间还有一个不稳定平衡点。边缘触发会使双稳态接近这个不稳定平衡点,从而进入亚稳态。

亚稳态的表现形式包括:输出在禁止区间内波动、振荡、出现非互补电压和过长的延迟等。最终,电路会回到两个稳定状态之一,但决策过程的结果不可预测,恢复时间必然超过双稳态的正常传播延迟,有时甚至会大几个数量级。

2.2 亚稳态对电路功能的影响

同步器处于亚稳态时,可能会导致以下后果:
- 下游电路处理错误的数据。
- 下游电路接收到处于禁止区间的电压。
- 下游电路在下次时钟事件到来之前没有足够的时间稳定到稳态值。

在后面两种情况下,一些下游存储元件可能会受到边缘触发,使亚稳态进一步扩散到时钟域中。无论哪种情况,系统的部分功能都可能会出现故障。

2.3 亚稳态的统计模型

由于亚稳态在同步器中不可避免,因此需要评估亚稳态问题的严重程度。理论和实验研究提出了统计模型,用于估计系统因亚稳态而发生故障的概率。

对于由频率为 fclk 的时钟驱动的触发器,连接到平均边沿速率为 fd 的异步数据信号,当亚稳态持续时间 tmr 超过允许时间 tal 时,会发生同步失败。这种情况下的平均错误间隔时间 (MTBE) 遵循以下公式:
[t_{MTBE} = \frac{e^{K_2 t_{al}}}{K_1 f_{clk} f_d}]
其中,参数 K1 和 K2 共同量化了同步器触发器在边缘触发和亚稳态解决方面的特性。K2 表示主锁存器存储环周围的增益带宽积,K1 表示进入亚稳态的敏感时间窗口。

例如,对于 Xilinx Virtex II Pro 系列的 XC2VPro4 FPGA 中的触发器,在典型工作条件下,当 fclk = 100 MHz,fd = 10 MHz,tsu ff dnst = 0.5 ns 和 tpd c = 4 ns 时,计算得到的 MTBE 超过宇宙年龄。但将时钟频率翻倍后,MTBE 降至仅 4 s,这表明亚稳态的影响高度依赖于电路的工作速度。

2.4 准同步接口

上述统计模型假设数据和时钟信号的频率和相位之间没有可预测的关系,但在准同步系统中并非如此。准同步系统中,数据生产者和消费者由独立的振荡器提供时钟,这些振荡器的标称频率相同。例如局域网 (LAN),一旦时钟和数据在接收器端以不利的方式对齐,连续的数据更新可能会多次在关键的数据调用窗口内发生,使得 MTBE 的概念变得毫无意义。

准同步接口容易出现突发错误模式,不适合用假设时钟不相关的简单统计模型进行分析。准同步接口需要某种自调节机制,以避免连续的时序违规和数据的重复错误解释。可以使用抽头延迟线,自适应电路从中选择一个抽头,避免在瞬态附近采样数据信号;也可以通过数字可调延迟线自适应地移动数据或时钟信号,或者在丢弃未稳定和重复的数据样本之前对输入数据进行过采样。但这些方法都无法完全避免时钟事件和数据变化的偶尔重合,问题只是从数据采集触发器转移到了自适应选择抽头或控制采样时间的子电路。

2.5 亚稳态行为的控制

为了限制亚稳态的有害影响,可以基于公式 (8.1) 和 (8.2) 采取以下措施:
- 系统级可靠性估计 :对系统的预期可靠性有一个较为准确的估计是很重要的。当 MTBE 已经超过预期产品寿命时,再提高同步可靠性就没有意义了。需要注意的是,上述公式和相关指导仅适用于一个标量同步器,而一个系统可能包含多个同步器。此外,统计模型不适用于准同步操作。在实践中,只有少数双稳态器件的数据手册会指定其亚稳态解决特性。作为经验法则,如果一个触发器有至少三倍的传播延迟时间来从亚稳态中恢复,那么同步失败的概率会非常低。在没有 K1 和 K2 数值的情况下,如果应用不是非常关键,并且能保证 tal ≥ 3 tpd,那么可以不进行详细分析。
- 选择具有良好亚稳态解决能力的触发器 :优化用于同步器应用的触发器具有较小的 K1 和较大的 K2,应优先选择这类触发器,而不是亚稳态恢复特性较差或未知的通用触发器。然而,组件制造商和库供应商仍然非常不愿意披露定量的亚稳态数据。
| D 型触发器 | 参考或供应商 | 单元类型或名称 | 技术 | F [nm] | K1 [ps] | K2 [GHz] |
| ---- | ---- | ---- | ---- | ---- | ---- | ---- |
| | Horstmann 等 [208] | n.a. | std cell | 1500 | 47600 | 3.23 |
| | VLSI Technology | DFNTNS | std cell | 800 | 140000 | 12.3 |
| | Ginosar [211] | n.a. “conservative” | std cell | 180 | 50 | 100 |
| | Xilinx [209] | XC2VPro4 CLB | FPGA | 130 | ≈100 | 27.2 |
- 消除同步器中的组合延迟 :根据公式 (8.2),两个级联触发器之间的任何额外延迟 tpd c 都会减少第一个双稳态的恢复时间 tal。因此,图 8.15 所示的单级同步器电路在高时钟速率下远非最优。当 MTBE 不足时,需要寻找更好的解决方案。两个无组合逻辑的级联触发器可以将亚稳态解决时间延长到几乎整个时钟周期,这种低错误率使得图 8.16 所示的两级同步器很受欢迎。如果额外触发器导致的额外延迟周期不可接受,可以重新排列现有寄存器,或者参考相关文献中并行操作多个两级同步器的建议。
- 使用快速切换时钟驱动同步器 :经验表明,使用快速上升沿的时钟驱动同步器可以加速从边缘触发状态的恢复。此外,过慢的时钟斜坡会使建立和保持时间超出标称值,而这些标称值是在假设时钟边沿陡峭、斜坡时间为零或接近零的情况下通过库表征得到的,它们存储在仿真模型和数据手册中,是设计工程师进行推理的基础。
- 减少同步器的不必要负载 :电容负载会减慢双稳态的亚稳态解决过程,因此建议通过必要时使用缓冲器和缓冲树,尽量减小同步器输出的负载。
- 降低消费端的时钟频率 :时钟频率的微小变化会对 MTBE 产生很大影响,因此值得检查是否可以使用稍慢的时钟来运行整个消费电路。
- 使用多级同步器 :在极少数情况下,两级同步器可能没有足够的时间来解决亚稳态问题,此时可以使用多个触发器的同步器电路,将可用时间延长到一个时钟周期以上。
- 缩短同步器内的反馈路径 :数字 VLSI 设计师通常使用预开发的单元库。如果需要在晶体管级设计自己的同步器,可以参考相关专业文献。为了进行分析,可以在亚稳态平衡点附近用线性模型替换两个交叉耦合的放大器。一般来说,内部反馈路径应尽可能快。快速的主锁存器是理想的,因为高增益带宽积有助于提高恢复速度、K2 和 MTBE。这也是较高的电源电压有益的原因。

3. 总结与建议

3.1 异步接口问题总结

异步接口会带来两个问题:数据混乱和亚稳态。通过使用适当的数据采集方案和协议,可以完全避免数据不一致,但由边缘触发引起的亚稳态问题只能以概率方式解决。

3.2 亚稳态问题分析

亚稳态常被用作同步失败的解释,因为它不可避免且不可预测。但实际上,大多数问题可能是由于数据一致性问题被忽视导致的。当同步器接近其最大时钟和数据频率运行,或者涉及大量同步器时,亚稳态会对系统可靠性构成威胁。而对于那些能为同步器提供额外时钟周期以恢复的电路,通常是安全的,两级同步器在这种情况下通常足够。

3.3 同步问题检测

功能仿真或测试很难发现许多同步问题,因为致命缺陷可能会被忽略。除了常见的覆盖率问题外,引发同步失败可能需要多次重复运行,且事件的相对偏移在亚纳秒范围内,这既不高效也不能令人信服。有文献提出了一种查找电路中哪些时钟域交叉可能需要改进的方法。

3.4 避免同步问题的规则

为了避免同步带来的不确定性和额外成本,可以实施以下规则:
- 尽可能消除不受控制的异步接口,即将系统划分为技术上可行的最少时钟域。
- 如果必须跨越时钟边界,选择数据带宽最小的地方进行。
- 在系统级估计错误概率或平均错误间隔时间。
- 尽可能为同步器留出额外的稳定时间。
- 在每个时钟域内,严格遵守同步时钟规则。
- 避免使用在接收到损坏数据时可能会灾难性失败的(子)电路。

4. 问题思考

  1. 图 8.17 的两级同步器电路有什么问题?
  2. 重新考虑图 8.1a 的原始电路,为什么计算机在程序计数器因同步失败而填充错误地址时会失败,尽管表面上只从外部获取了一个标量信号?
  3. 为图 8.5 中的两个有限状态机建立详细的状态图,生成所有必要的控制信号,并尽量减少延迟。根据与周围电路的接口定义,可能有多个可接受的解决方案。能否设计模型,以最小化两相和四相协议的 HDL 代码差异?
  4. 图 8.18 所示的电路长期以来用于将数据向量从一个时钟域传输到另一个时钟域,它与图 8.5 的握手电路有什么不同?该电路的正确运行依赖于一个可能在实际应用中不成立的假设,找出这个假设。建立信号转换图 (STG) 可能会有帮助,提示:考虑两个时钟频率差异很大的情况。
  5. 在图 8.13 中,三个点分别用空心圆或螺旋桨标记,它们有什么共同点?螺旋桨标记与其他两个标记有什么区别?

5. 同步方案的实际应用案例分析

5.1 案例一:工业自动化控制系统

在工业自动化控制系统中,不同模块可能由不同频率的时钟驱动。例如,传感器模块以较低频率采集数据,而控制模块需要以较高频率进行实时处理。假设传感器模块的时钟频率为 10kHz,控制模块的时钟频率为 100kHz。

最初采用了无同步方案,发现数据传输过程中经常出现错误,导致控制指令不准确。经过分析,决定采用单点同步方案,在数据进入控制模块之前,使用一个同步器进行同步。同时,由于传感器数据更新速度相对较慢,为了避免数据丢失,采用了慢时钟同步方案中的移位寄存器方法,将传感器的位串行数据流转换为位并行格式。

改进后的系统运行稳定,数据传输错误率大幅降低。通过实际测试,平均错误间隔时间 (MTBE) 从原来的几分钟提高到了数天,大大提高了系统的可靠性和稳定性。

5.2 案例二:通信设备中的数据传输

在通信设备中,数据在不同的芯片或模块之间传输时,也会遇到时钟域不同的问题。例如,一个无线通信模块和一个基带处理模块,它们的时钟频率和相位可能存在差异。

在设计初期,采用了多处同步方案,但发现仍然存在数据解释矛盾的问题,导致通信误码率较高。经过研究,改为采用两级同步器的单点同步方案。同时,为了提高同步器的性能,使用了快速切换时钟驱动同步器,并尽量减少同步器输出的负载。

改进后的通信设备通信质量明显提高,误码率从原来的 1%降低到了 0.1%以下。这表明合理选择同步方案和优化同步器参数对于提高通信设备的性能至关重要。

5.3 案例对比分析

案例 原同步方案 改进后同步方案 效果
工业自动化控制系统 无同步 单点同步 + 慢时钟同步(移位寄存器) 数据传输错误率大幅降低,MTBE 显著提高
通信设备 多处同步 两级同步器的单点同步 + 快速时钟驱动 + 减少负载 通信误码率显著降低

6. 同步方案的未来发展趋势

6.1 智能化同步技术

随着人工智能和机器学习技术的发展,未来的同步方案可能会引入智能化元素。例如,通过机器学习算法实时监测时钟和数据信号的变化,自动调整同步器的参数,以适应不同的工作场景和环境变化。这种智能化同步技术可以提高同步的准确性和可靠性,减少人工干预。

6.2 低功耗同步设计

在当今对能源效率要求越来越高的背景下,低功耗同步设计将成为未来的一个重要发展方向。研究人员将致力于开发新的电路结构和工艺技术,降低同步器的功耗。例如,采用新型的低功耗触发器和锁存器,优化时钟驱动电路,减少不必要的能量消耗。

6.3 高速同步解决方案

随着数据传输速率的不断提高,对高速同步解决方案的需求也越来越迫切。未来的同步方案需要能够在更高的时钟频率下保证数据的一致性和可靠性。这可能涉及到采用更先进的电路设计技术、更快的半导体工艺以及新的同步算法。

6.4 集成化同步模块

为了简化设计过程和提高系统的可靠性,未来可能会出现更多的集成化同步模块。这些模块将包含多个同步器和相关的控制电路,以一个整体的形式提供给设计师。设计师只需要将这些模块集成到系统中,就可以实现高效的同步功能,减少了设计的复杂性和开发时间。

7. 同步方案的设计流程总结

7.1 同步方案设计流程图

graph LR
    A[需求分析] --> B{数据和时钟特性}
    B -- 异步数据 --> C{时钟频率差异}
    C -- 大 --> D(考虑慢时钟同步方案)
    C -- 小 --> E(选择合适同步位置)
    E --> F{同步位置}
    F -- 单点 --> G(单点同步方案)
    F -- 多处 --> H(多处同步方案)
    D --> G
    G --> I{同步器性能优化}
    I -- 需要 --> J(优化同步器参数)
    I -- 不需要 --> K(正常同步设计)
    J --> L(系统测试与验证)
    K --> L
    H --> L

7.2 详细设计步骤

  1. 需求分析 :明确系统中数据和时钟的特性,包括数据的类型(标量或向量)、时钟的频率、相位关系等。
  2. 判断数据是否异步 :如果数据是异步的,进一步分析时钟频率的差异。
  3. 选择同步位置 :根据系统的结构和要求,决定是采用单点同步还是多处同步。
  4. 考虑慢时钟情况 :如果时钟频率差异较大,采用慢时钟同步方案中的相应措施。
  5. 优化同步器性能 :根据系统的可靠性要求和实际情况,对同步器的参数进行优化,如选择合适的触发器、调整时钟驱动等。
  6. 系统测试与验证 :对设计好的同步方案进行测试和验证,检查是否满足系统的性能指标和可靠性要求。如果不满足,返回前面的步骤进行调整。

8. 总结与展望

8.1 同步方案总结

通过对异步数据采集过程中不同同步方案的研究和分析,我们了解到不同同步方案具有不同的优缺点和适用场景。无同步方案简单但容易导致数据错误,多处同步方案有一定改善但仍存在问题,单点同步方案能保证数据一致性,慢时钟同步方案可以解决时钟速度不匹配的问题。在处理亚稳态问题时,需要综合考虑系统的可靠性要求和实际情况,采取合适的数据采集方案和协议,以及优化同步器的设计和参数。

8.2 未来展望

随着电子技术的不断发展,异步数据采集和同步问题将面临更多的挑战和机遇。未来的同步方案将朝着智能化、低功耗、高速和集成化的方向发展。设计师需要不断学习和掌握新的技术和方法,以应对日益复杂的系统设计需求。同时,对于亚稳态等深层次问题的研究也将不断深入,为提高系统的可靠性和性能提供更坚实的理论基础。

8.3 建议与启示

在实际设计中,设计师应该根据系统的具体要求和特点,合理选择同步方案和优化同步器参数。同时,要注重系统的可靠性估计和测试验证,及时发现和解决潜在的问题。此外,加强对新技术和新方法趋势的关注,不断提升自己的设计能力和水平,以适应未来电子系统发展的需求。希望本文能够为从事相关领域的工程师和研究人员提供有益的参考和借鉴。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值