3. Polling 状态深入分析

Polling 状态是 PCIe 链路训练状态机(LTSSM)中连接建立的关键阶段。在 Detect 状态完成物理连接检测后,链路进入 Polling 状态,其核心目标是:确认接收通道完好、建立位锁定、完成符号锁定,并协商初始链路速度。Polling 状态由三个子状态构成:Polling.Active、Polling.Compliance 和 Polling.Speed。本章将逐一剖析每个子状态的目的、操作流程及常见失败原因。

3.1 Polling 状态的目的与整体流程

Polling 状态的主要目的可归纳为以下四点:

  • 位锁定(Bit Lock):接收器从串行数据流中恢复时钟,并识别出正确的位边界。
  • 符号锁定(Symbol Lock):在 8b/10b 或 128b/130b 编码的码流中,找到符号(Symbol)或数据块(Block)的起始边界。
  • 速度协商:通过发送特定的训练序列(TS1/TS2),在 Polling.Speed 子状态中确定链路的工作速率。
  • 电气空闲退出确认:确保发送端已从电气空闲状态退出,并开始发送有效信号。
实战提示: Polling 状态失败是链路训练中最常见的故障点之一。逻辑分析仪抓取到的 LTSSM 状态跳转记录中,若反复出现 Polling → Detect 的回退,通常意味着信号完整性或时钟恢复存在问题。
Polling 状态整体流程 Polling.Active 位锁定 + 符号锁定 Polling.Speed 速度协商 进入 Configuration 链路建立成功 Polling.Compliance 合规性测试模式 失败回退 超时回退至 Detect 关键观察点:Polling.Active 失败通常与信号质量相关;Polling.Speed 失败多与时钟抖动或阻抗不匹配有关

3.2 Polling.Active 子状态

Polling.Active 是 Polling 状态的入口子状态。当链路从 Detect.Quiet 或 Detect.Active 进入 Polling 后,首先进入 Polling.Active。该子状态的核心任务是完成接收器的初始化同步。

3.2.1 操作流程

  1. 发送 TS1 有序集:端口开始连续发送 TS1 训练序列,TS1 中包含链路编号、通道编号和训练控制信息。
  2. 位锁定:接收器利用 TS1 中的特定码型(如 COM 符号)恢复时钟,并调整采样相位,实现位锁定。
  3. 符号锁定:在 8b/10b 编码下,接收器通过识别 COM 符号(K28.5)的 10 位码型,确定符号边界。
  4. TS1 接收确认:当接收器成功锁定并正确解码连续的 TS1 序列后,认为链路对端已准备就绪。
  5. 状态跳转:成功完成上述步骤后,链路进入 Polling.Speed 子状态。

3.2.2 关键参数与超时

参数 规范值 说明
Polling.Active 超时 48 ms(典型) 若在此时间内未完成位锁定和符号锁定,链路回退至 Detect
TS1 发送间隔 连续发送 每个符号周期发送一个 TS1 有序集
COM 符号码型 K28.5(8b/10b) 用于符号锁定和位对齐
接收器锁定要求 连续 2 个 TS1 无误 部分实现要求连续 4 个 TS1 无误才视为锁定成功
常见失败原因:
  • 信号幅度不足:发送端差分电压低于接收器灵敏度阈值(通常为 175 mV 峰峰值)。
  • 时钟抖动过大:总抖动(TJ)超过 0.6 UI(单位间隔)时,位锁定无法稳定。
  • 交流耦合电容异常:电容值偏离 75 nF ~ 200 nF 范围,导致低频分量衰减。
  • 阻抗不连续:PCB 走线阻抗偏离 85Ω ± 15% 时,反射信号干扰 COM 符号识别。
Polling.Active 位锁定与符号锁定过程 发送端 连续发送 TS1 PCIe 通道 交流耦合 + 传输线 接收器 时钟恢复 采样判决 锁定成功 位锁定 + 符号锁定 锁定失败 回退至 Detect 调试要点 1. 使用示波器测量接收端眼图,确认眼高 > 200 mV,眼宽 > 0.4 UI 2. 检查 COM 符号的码型完整性,排除符号边界漂移

3.3 Polling.Compliance 子状态

Polling.Compliance 是一个特殊的测试子状态,用于信号合规性测试。当链路进入该子状态时,发送端会输出特定的测试码型,以便使用示波器或误码率测试仪(BERT)测量信号质量。该子状态通常由测试夹具或特定配置触发,在正常链路训练中不会进入。

3.3.1 进入条件

  • 硬件触发:通过置位 Compliance 进入位(通常为 PERST# 信号配合特定 GPIO 电平)。
  • 软件触发:通过配置空间中的链路控制寄存器(Link Control Register)的“Compliance 模式”位触发。
  • 自动进入:某些测试设备在 Detect 状态检测到特殊码型后,强制链路进入 Compliance 模式。

3.3.2 测试码型与测量项目

码型名称 码型内容 测量项目
CP0 全 0 码型(D0.0) 直流电平、共模电压
CP1 全 1 码型(D10.2) 高频抖动、上升/下降时间
CP2 交替 0/1 码型 眼图模板、确定性抖动
CP3 PRBS 伪随机码型 总抖动、误码率
合规性测试标准: 根据 PCIe Base Spec Rev 5.0,Gen3 及以上的合规性测试要求发送端在 Compliance 模式下输出 CP0~CP3 码型,接收端眼图模板的垂直开口需大于 25 mV,水平开口需大于 0.3 UI。
Polling.Compliance 测试拓扑 DUT(被测设备) 发送 CP0~CP3 码型 测试夹具 信号调理 + 阻抗匹配 示波器 / BERT 眼图测量 + 抖动分析 注意事项 1. 测试夹具必须使用 SMA 连接器和 50Ω 同轴电缆,避免引入额外反射 2. 示波器带宽应至少为被测信号速率的 3 倍(如 Gen3 8 GT/s 需 ≥ 25 GHz)

3.4 Polling.Speed 子状态

Polling.Speed 是 Polling 状态的最后一个子状态,负责链路速度的初始协商。在 Polling.Active 完成位锁定和符号锁定后,链路进入 Polling.Speed,通过交换 TS1 和 TS2 有序集来确定双方共同支持的最高速率。

3.4.1 速度协商机制

速度协商遵循“先共同、后最高”的原则:

  1. 初始速度:链路以 Gen1(2.5 GT/s)速率进入 Polling.Speed,这是所有 PCIe 设备必须支持的基础速率。
  2. 发送 TS2 有序集:双方开始发送 TS2 有序集,TS2 中包含“速度标识(Speed ID)”字段,用于指示设备支持的最高速率。
  3. 速度匹配:接收端解析对端 TS2 中的 Speed ID,与自身支持的最高速率取交集。
  4. 速度切换:若双方支持更高的速率(如 Gen2 5 GT/s 或 Gen3 8 GT/s),则链路在 TS2 交换完成后切换到该速率。
  5. 进入 Configuration:速度协商完成后,链路进入 Configuration.Linkwidth 子状态,开始链路宽度协商。

3.4.2 Speed ID 编码

Speed ID 值 对应速率 编码方式
0001b 2.5 GT/s(Gen1) 所有设备必须支持
0010b 5.0 GT/s(Gen2) 可选支持
0100b 8.0 GT/s(Gen3) 可选支持
1000b 16.0 GT/s(Gen4) 可选支持
多位同时置位 表示支持多种速率 例如 0011b 表示支持 Gen1 和 Gen2
Polling.Speed 失败典型场景:
  • 速度不匹配:一端仅支持 Gen1,另一端强制要求 Gen3,导致协商失败。
  • TS2 解码错误:由于信号质量差,接收端无法正确解析 TS2 中的 Speed ID 字段。
  • 速度切换失败:双方协商出 Gen3 速率,但发送端在切换 PLL 频率时失锁,导致链路中断。
  • 电气空闲错误:在速度切换过程中,发送端错误地进入了电气空闲状态,导致接收端误判为链路断开。
Polling.Speed 速度协商流程 步骤 1:以 Gen1 速率进入 发送 TS1 有序集 步骤 2:交换 TS2 有序集 解析 Speed ID 字段 步骤 3:速度匹配 取双方支持的最高速率 成功:进入 Configuration 链路宽度协商开始 失败:回退至 Detect 超时或协商失败 调试建议 1. 使用协议分析仪捕获 TS2 有序集,检查 Speed ID 字段是否被正确解析 2. 若速度切换失败,检查发送端 PLL 锁定指示信号(如 PLL_LOCK)是否在切换期间保持高电平 3. 在 PCB 设计中,不同速率下的阻抗一致性需满足 ±10% 以内

3.5 本章小结

Polling 状态是 PCIe 链路训练中从物理连接到协议握手的关键过渡阶段。三个子状态各有侧重:

  • Polling.Active:解决“能否收到信号”的问题,核心是位锁定和符号锁定。
  • Polling.Compliance:解决“信号质量是否达标”的问题,用于合规性测试。
  • Polling.Speed:解决“以多快速度通信”的问题,完成初始速度协商。