PCIe 链路训练是物理层的一个自动化过程,由硬件自动完成,无需软件干预(除部分高级配置外)。它的核心目的是在两个设备之间建立可靠的通信链路。

这个过程由 LTSSM (Link Training and Status State Machine,链路训练与状态状态机) 定义。LTSSM 包含多个状态,对于上电初始化来说,主要经历以下四个核心阶段:

  1. Detect (检测)
  2. Polling (轮询)
  3. Configuration (配置)
  4. L0 (正常工作状态)

以下是每个阶段的详细解析:


1. Detect 阶段 (检测)

这是链路训练的起点,主要目的是确认对端设备是否存在。

  • Detect.Quiet (静止):
    • 发送端处于高阻抗状态,不发送任何信号。
    • 如果接收端检测到唤醒信号或复位释放,状态机开始工作。
  • Detect.Active (活动):
    • 发送端输出一个共模电压,并检测接收端的终端电阻。
    • 判断逻辑:
      • 如果检测到对端有 50Ω 的终端电阻接地,则认为对端设备存在,进入下一阶段。
      • 如果没有检测到,则回到 Detect.Quiet 等待。

关键点:这是“握手”的开始,如果这里失败,链路根本不会建立。


2. Polling 阶段 (轮询)

在此阶段,双方尝试建立比特锁定和符号锁定,并协商基本的通信参数。

  • Polling.Active (活动):
    • 发送端开始发送 TS1 (Training Sequence 1) 有序集。
    • TS1 的作用:告诉对方“我是PCIe设备,我想建立连接”。
    • 接收端尝试从数据流中恢复时钟(CDR)并实现比特锁定。
  • Polling.Compliance (合规性):
    • 这是一个可选状态,通常用于测试信号完整性。设备发送合规模式图案,供示波器测试。
  • Polling.Configuration (配置准备):
    • 双方开始交换 TS2 (Training Sequence 2) 有序集。
    • TS2 的作用:确认双方都已经收到了 TS1,并准备好进入配置阶段。
    • 一旦双方连续收到指定数量的 TS2,且比特锁定稳定,则进入 Configuration 阶段。

关键点:这是最耗时的阶段之一,主要解决“能不能听清对方说话”的问题(信号同步)。


3. Configuration 阶段 (配置)

这是链路训练中最复杂的阶段,主要解决“怎么连接”的问题,包括链路宽度、通道映射和极性等。

  • Configuration.Linkwidth.Start:
    • 确定链路宽度(x1, x2, x4, x8, x16 等)。
    • 设备会尝试以最大宽度开始,如果失败则降级(例如 x4 降为 x2)。
  • Configuration.Lanenum.Wait & Lanenum.Accept:
    • 通道翻转:由于PCB布线原因,PCIe的 Lane 0 可能连接到对端的 Lane 3。此阶段通过发送编号信息,自动识别并纠正通道顺序。
    • 极性反转:如果差分线的 D+ 和 D- 接反了,硬件会在此阶段自动检测并反转极性。
  • Configuration.Complete:
    • 双方确认链路参数(宽度、速率等)无误。
    • 发送端停止发送 TS2,准备进入正常工作状态 L0。

关键点:此阶段实现了“即插即用”的灵活性,允许工程师在画PCB时交叉布线或接反差分线,硬件会自动修正。


4. L0 阶段 (正常工作状态)

链路训练完成,进入全功能工作状态。

  • 数据传输:
    • 此时不再发送 TS1/TS2 训练序列。
    • 开始传输 TLP (Transaction Layer Packets)DLLP (Data Link Layer Packets),即实际的数据业务。
  • 链路保持:
    • 即使在 L0 状态,物理层也会定期发送 SKP (Skip) 有序集来补偿时钟频率差异。

5. 进阶:速度切换与恢复

PCIe 设备通常以 Gen1 (2.5 GT/s) 的速率启动进行上述训练。一旦链路在 L0 稳定,如果双方都支持更高速度(如 Gen2, Gen3, Gen4),会触发 Recovery (恢复) 状态:

  1. L0 -> Recovery:
    • 双方协商切换到更高速度。
  2. Recovery.RcvrLock & RcvrCfg:
    • 改变物理层的传输速率(例如从 2.5 GT/s 切换到 8.0 GT/s)。
    • 由于速率提高,信号衰减变大,此时会进行 均衡 调节(特别是 Gen3 及以上),调整发送端的预加重和接收端的均衡器。
  3. 回到 L0:
    • 以高速率重新进入工作状态。

总结:链路训练的全景图

阶段核心动作发送的数据解决的问题
Detect检测电阻无 (电气检测)对端设备是否存在?
Polling建立同步TS1, TS2时钟同步、比特锁定
Configuration参数协商TS2链路宽度、通道顺序、极性
L0业务传输TLP/DLLP正常数据通信
Recovery速度升级TS1/TS2/EQ切换速率、信号均衡

调试提示
如果链路训练失败,通常卡在 Polling 阶段(信号质量差、时钟问题)或 Configuration 阶段(通道映射错误、电源不稳定)。使用协议分析仪或示波器触发 TS1/TS2 序列是定位问题的关键手段。

Logo

这里是“一人公司”的成长家园。我们提供从产品曝光、技术变现到法律财税的全栈内容,并连接云服务、办公空间等稀缺资源,助你专注创造,无忧运营。

更多推荐