4. Gen3 均衡参数:Preset、Coefficient、Cursor 的定义与作用

在 PCIe Gen3 及后续高速代际中,链路均衡(Link Equalization)是保证信号在损耗信道上正确传输的核心机制。Gen3 均衡过程通过 Preset(预设系数)、Coefficient(系数) 和 Cursor(游标) 三个层次递进的参数,精确控制发送端(Tx)的 FIR 滤波器抽头权重,从而对信号进行预加重(Pre-emphasis)或去加重(De-emphasis)。

核心概念速览: Preset 是预定义的系数组合模板,Coefficient 是 FIR 滤波器中每个抽头的具体权重值,Cursor 则标识这些抽头在时间轴上的相对位置(主游标、预游标、后游标)。

4.1 三个参数的定义与层级关系

这三个参数并非并列关系,而是从“宏观配置”到“微观权重”的递进关系。下表清晰展示了它们的定义与在均衡流程中的角色:

参数名称 英文全称 定义 作用层级
Preset Preset Coefficient Set 一组预定义的、经过验证的系数组合(包含 C-1, C0, C+1 等),由 PCIe 规范定义,共 11 种(Gen3)。 宏观模板层:快速设定链路初始状态,减少协商时间。
Coefficient FIR Filter Coefficient 发送端 FIR 滤波器中每个抽头(Tap)的具体数值,通常表示为 Cn,代表该抽头对当前发送符号的贡献权重。 微观权重层:精确控制信号波形的预加重/去加重幅度。
Cursor Cursor Position 标识 FIR 抽头在时间序列上的位置,分为 Pre-cursor(前游标,C-1)、Main-cursor(主游标,C0)、Post-cursor(后游标,C+1 等)。 时间定位层:定义每个系数作用于哪个相邻符号。
调试经验: 在 Gen3 调试初期,通常先选择一个合适的 Preset 作为起点,然后在 Preset 基础上微调各个 Coefficient 值。直接修改原始 Coefficient 而不使用 Preset 可能导致链路无法完成均衡训练。

4.2 Cursor(游标)的物理意义与 FIR 结构

理解 Cursor 是理解均衡参数的基础。发送端的 FIR 滤波器是一个 3-Tap(Gen3)或更多 Tap(Gen4/Gen5)的数字滤波器,其输出是当前符号与相邻符号的加权和。下图展示了 3-Tap FIR 的结构与 Cursor 的对应关系:

3-Tap FIR 滤波器结构与 Cursor 位置 输入符号序列: Dn-1 Dn Dn+1 Tap 1 Tap 2 系数: C-1 C0 C+1 Σ 输出 游标定义: Pre-cursor (C-1):作用于前一个符号,用于预加重。 Main-cursor (C0):作用于当前符号,主信号幅度。 Post-cursor (C+1):作用于后一个符号,用于去加重。

在 Gen3 的 3-Tap FIR 中,输出信号的计算公式为:

Output = C₋₁ × Dₙ₋₁ + C₀ × Dₙ + C₊₁ × Dₙ₊₁

其中,Dn 是当前要发送的符号,Dn-1 是前一个符号,Dn+1 是后一个符号。通过调整 C-1 和 C+1 的权重,可以补偿信道对高频分量的衰减。

4.3 Preset(预设系数)的规范定义

PCIe Gen3 规范定义了 11 种 Preset(编号 0~10),每种 Preset 对应一组固定的 C-1、C0、C+1 系数组合。这些 Preset 覆盖了从最小去加重到最大去加重的典型场景,目的是让链路在均衡训练初期快速找到一个可工作的起点。

下表列出了 Gen3 中常用的几种 Preset 及其系数值:

Preset 编号 名称 / 描述 C-1 (Pre-cursor) C0 (Main-cursor) C+1 (Post-cursor) 去加重幅度 (dB)
P0 最小去加重 0.00 1.00 0.00 0.0
P1 轻度去加重 0.00 0.95 0.05 -0.5
P4 中度去加重 0.00 0.85 0.15 -1.5
P7 重度去加重 0.00 0.70 0.30 -3.5
P10 最大去加重 0.00 0.55 0.45 -6.0
注意: 上表中的 Preset 仅包含 Post-cursor 去加重(C+1),未使用 Pre-cursor(C-1)。在 Gen4/Gen5 中,Preset 会同时包含 Pre-cursor 和 Post-cursor 的组合,以支持更复杂的均衡策略。实际调试时,Preset 的选择取决于信道损耗特性,损耗越大,通常需要越大的去加重幅度。

4.4 Coefficient(系数)的精细调整

当链路使用 Preset 完成初始训练后,接收端(Rx)可能会请求发送端微调各个 Coefficient 值,以进一步优化信号质量。Coefficient 的调整遵循以下规则:

  • 归一化约束: 所有系数的值之和必须等于 1(或接近 1),以保证输出信号幅度在合理范围内。即 |C-1| + |C0| + |C+1| = 1。
  • 调整步长: 每次调整的最小步长由规范定义,通常为 0.01 或 0.005(取决于代际)。
  • 调整方向: Rx 通过均衡训练序列(EQ TS)中的系数请求字段,指示 Tx 增加或减少某个特定 Cursor 的系数值。

下图展示了从 Preset P4 出发,微调 C+1 系数的过程:

Coefficient 微调示例:从 Preset P4 开始 Preset P4 (初始) C₀=0.85, C₊₁=0.15 Rx 请求增加 C₊₁ 调整后 (步长 +0.01) C₀=0.84, C₊₁=0.16 归一化约束 0.84 + 0.16 = 1.00 ✓ 每次调整必须保持 |C₋₁| + |C₀| + |C₊₁| = 1,增加一个系数时,必须相应减少另一个系数。

4.5 三者在 Gen3 均衡流程中的协同工作

在 Gen3 链路均衡的 Phase 1、Phase 2 和 Phase 3 中,这三个参数按以下顺序发挥作用:

  1. Phase 0 (初始化): 发送端使用默认 Preset(通常是 P0 或 P4)开始发送均衡训练序列(EQ TS)。
  2. Phase 1 (Tx 均衡): 接收端评估信号质量,如果眼图不满足要求,Rx 会请求 Tx 切换到另一个 Preset。此阶段只切换 Preset,不涉及单个 Coefficient 的微调。
  3. Phase 2 (Rx 均衡): 当 Preset 选定后,Rx 开始微调其内部的 CTLE 和 DFE 参数,同时可能请求 Tx 微调单个 Coefficient(如增加 C+1 的权重)。
  4. Phase 3 (最终确认): 双方确认所有参数(Preset + 微调后的 Coefficient)已锁定,链路进入 L0 状态。
调试要点: 在 Gen3 调试中,如果链路无法完成均衡,首先检查 Preset 切换过程是否正常(Phase 1)。如果 Preset 能锁定但眼图质量差,则重点分析 Coefficient 微调阶段(Phase 2),确认 Rx 是否发出了正确的系数更新请求,以及 Tx 是否准确响应。

4.6 参数调试中的常见问题与避坑

问题现象 可能原因 排查方向
链路始终无法完成均衡 Preset 选择不当,或信道损耗超出 Preset 的补偿范围 尝试手动指定不同的 Preset 进行测试;检查信道插入损耗是否超标
眼图张开但抖动过大 Pre-cursor (C-1) 未使用,导致 ISI 补偿不足 在支持 Pre-cursor 的 Preset 中尝试启用 C-1(如 Gen4 的 Preset)
系数调整后链路立即失锁 调整步长过大,或归一化约束被违反 检查 Rx 发出的系数请求是否合法;确认 Tx 的 FIR 实现是否严格遵循归一化
Preset 切换成功但眼图无改善 Rx 的 CTLE/DFE 参数未同步优化 检查 Phase 2 中 Rx 的均衡参数是否已正确更新;尝试强制 Rx 重新训练