PCIe 物理层(Physical Layer)详解

1. 物理层概述

物理层(Physical Layer)是 PCIe 协议栈的最底层,负责比特流的收发、链路的训练与协商、以及电气特性的定义。物理层在 PCIe 体系中扮演"公路与交通灯"的角色------所有上层数据最终都要经过物理层的编码、串行化并发送到链路上。

物理层分为两个子层:

  • 逻辑物理层(Logical Physical Layer):与数据链路层交互,负责 8b/10b 或 128b/130b 编码/解码、加扰/解扰、串行/并行转换
  • 电气物理层(Electrical Physical Layer):模拟接口,包含差分信号收发器、终端阻抗、均衡器等

1.1 发送端数据流

|--------|--------------------------|-------------------------------------|
| 步骤 | 操作 | 说明 |
| 1 | DLLP/TLP 进入 Tx Buffer | 来自数据链路层 |
| 2 | 添加 Start / End 标识 | 1 Byte Start + 1 Byte End,标识 TLP 边界 |
| 3 | Byte Stripping | 多 lane 场景下,数据按字节交替分发到各 lane |
| 4 | Scramble(加扰) | 打破长连零/连一,减少 EMI 和串扰(Gen1/Gen2) |
| 5 | 8b/10b 或 128b/130b 编码 | Gen1/Gen2:8b/10b;Gen3 及以上:128b/130b |
| 6 | Parallel to Serial (P2S) | 并转串,通过 Serializer 输出差分信号 |

1.2 接收端数据流

|--------|--------------------------|----------------------------------|
| 步骤 | 操作 | 说明 |
| 1 | Serial to Parallel (S2P) | 串行数据转为并行 |
| 2 | 时钟数据恢复(CDR) | 从数据流中恢复时钟(嵌入式时钟) |
| 3 | 8b/10b 或 128b/130b 解码 | Gen1/Gen2:8b/10b;Gen3+:128b/130b |
| 4 | De-Scramble(解扰) | 逆向 Scramble 操作 |
| 5 | Byte Un-Stripping | 合并各 lane 数据 |
| 6 | 检查 Start / End 标识 | 确认 TLP 边界 |
| 7 | 数据送入 Rx Buffer | 传递给数据链路层 |

1.3 编码方式对比

|-----------|-----------|--------|----------------|
| 版本 | 编码 | 开销 | 主要优点 |
| Gen1/Gen2 | 8b/10b | 20% | 直流均衡、嵌入时钟、错误检测 |
| Gen3+ | 128b/130b | ~1.5% | 低开销,Gen3+ 强制使用 |

2. LTSSM 链路训练状态机

2.1 状态机概述

LTSSM(Link Training and Status State Machine)负责在链路初始化、速率切换、热插拔等场景下完成链路的协商和配置。LTSSM 包含 11 个主要状态,分为五大类:

|---------------|----------------------------------|
| 类别 | 状态 |
| 链路训练 | Detect, Polling, Configuration |
| 重训练(Recovery) | Recovery |
| 正常活动 | L0 |
| ASPM 功耗管理 | L0s, L1 |
| 其他 | L2, Loopback, Disable, Hot Reset |

2.2 Detect 状态

设备复位后进入 Detect 状态,检测链路对端是否存在:

  • Detect.Active:发送检测脉冲,检测接收端终端阻抗
  • Detect.Quiet:无检测脉冲进入安静状态,节省功耗

若检测到对端电阻为标准终端阻抗(85Ω 或 100Ω),进入 Polling 状态。

2.3 Polling 状态

在 Polling 状态,链路两端通过交换 TS1OS 和 TS2OS 完成初始协商:

  • Bit Lock:接收端从数据流中恢复时钟,达到稳定位同步
  • Symbol Lock:确定字符边界(8b/10b 编码下每个符号为 10 bits)
  • Polarity Detection:检测并自动翻转差分信号极性(如果布线反接)
  • Lane Reversal Detection:检测 Lane 顺序是否需要翻转
  • Negotiate Link Speed:协商链路速率(Gen1/2/3/4/5)

2.4 Configuration 状态

Configuration 状态进一步细化链路参数:

  • Link Width:协商链路宽度(x1 / x2 / x4 / x8 / x16)
  • Lane Number Assignment:为每个 Lane 分配逻辑 Lane 号
  • Lane-to-Lane De-skew:修正各 Lane 之间的偏斜,保证数据对齐

Configuration 完成后进入 L0 状态。

2.5 L0 状态

L0 是链路的正常活动状态,所有 TLP、DLLP 和 Ordered Set 均可正常收发。支持 PCIe Gen1-Gen5 速率,可在 Recovery 状态切换。

2.6 Recovery 状态

Recovery 用于链路速率重协商或位锁定重新获取:

  • 链路从低速率升到高速率(如 Gen1 -> Gen3)时必须经过 Recovery
  • 重新进行 Bit Lock 和 Symbol Lock(但比 Polling 快)
  • 重新交换 TS2 以协商新速率
  • 接收端均衡器重新训练(Gen3+)

2.7 L0s 状态(ASPM)

L0s 是 Active State Power Management 的一种,用于短时空闲后快速恢复:

  • 进入条件:发送端连续 7us 无 TLP/DLLP 发送(可配置)
  • 进入方式:发送 EIOS(Electrical Idle Ordered Set),两端进入 Electrical Idle
  • 退出方式:发送 N_FTS 个 FTS + 1 个 SOS,快速恢复位锁定后回到 L0
  • 恢复延迟:< 1us(比 L1 快得多)

2.8 L1 状态(ASPM)

L1 比 L0s 功耗更低,但恢复时间更长:

  • 进入方式 1(ASPM L1):硬件自动,发送端空闲超时后建议,接收端同意后进入
  • 进入方式 2(软件控制):系统软件将设备置入 D1/D2/D3 Hot 状态,通过 PM 消息协商进入
  • L1 要求链路两端同时同意(双向协议)
  • 退出方式:通过 Recovery 状态重新训练,回到 L0

2.9 L2 状态

L2 是最低功耗状态,仅保留 Vaux 电源:

  • Beacon 或 WAKE# 信号唤醒
  • Beacon 是低频差分信号(30kHz-500MHz)
  • 需要完整链路训练恢复(L0),延迟最高

2.10 其他状态

|-----------|-----------------------------------------------------------------------|
| 状态 | 说明 |
| Hot Reset | 软件设置 Bridge Control 寄存器的 Secondary Bus Reset 位,发送含 Hot Reset 的 TS1 OS |
| Disable | 软件禁用链路,发送端进入 Electrical Idle,接收端处于低阻态 |
| Loopback | 测试模式,上游设备发送数据,下游设备环回(用于硅验证和调试) |

2.11 典型状态转移路径

典型复位后转移路径:Reset -> Detect -> Polling -> Configuration -> L0

典型功耗管理转移路径:L0 -> (空闲) -> L0s / L1 -> Recovery -> L0

典型速率切换路径:L0 -> Recovery(高速) -> Configuration -> L0(新速率)

3. Ordered Sets(训练序列)

3.1 TS1 / TS2 Ordered Set

TS1OS 和 TS2OS 是链路训练的核心 Ordered Set,包含:

|------------------|---------------------------------------|
| 字段 | 说明 |
| Link # | 链路号 |
| Lane # | Lane 号 |
| N_FTS | L0s 退出所需 FTS 数量 |
| Data Rate | 目标速率 |
| Training Control | 控制位(Hot Reset / Disable / Loopback 等) |
| Speed Change | 速率切换指示 |

3.2 FTS(Fast Training Sequence)

FTS 用于 L0s 快速退出,接收端通过 FTS 重新获得位锁定和符号锁定。N_FTS 值在 Configuration 阶段协商,越大意味着接收端恢复能力越强。

3.3 EIOS / EIEOS(Electrical Idle Ordered Set)

EIOS:进入 Electrical Idle 状态(信号 D+ 和 D- 无压差),用于 L0s/L1/L2 进入和链路 Disable。EIEOS:Gen3+ 使用的扩展 Idle 序列,替代 EIOS。

3.4 SOS(Start of Symbol)

SOS 在 FTS 序列之后发送,用于标识数据的真正开始(Gen1/Gen2)。

4.1 预知系数(Preset)与均衡值

Gen3+ 引入了 Preset 概念,发送端从 16 个 Preset 中选择一个最优值。Preset 是发送端均衡器(TX FFE coefficient sets)的预定义组合。

4.2 Gen3+ 均衡流程

  1. Phase 0:发送端发送 Preset 8(0dB 增益),接收端测量并反馈最优 Preset
  2. Phase 1:上游设备依次发送各 Lane 的最优 Preset
  3. Phase 2:下游设备依次反馈各 Lane 的最优 Preset
  4. Phase 3:两端协商最终 Preset,均衡完成

5. 电气特性

5.1 差分信号

  • PCIe 采用低压差分信号(Low Voltage Differential Signaling, LVDS/LVPE)
  • 典型输出摆幅:800mV(Gen1/2)、400mV(Gen3+)
  • 差分阻抗:85Ω(Gen1/2)、100Ω(Gen3+)

5.2 嵌入式时钟

PCIe 不提供独立的时钟线,时钟嵌入在数据流中(8b/10b 或 128b/130b 编码),接收端通过 CDR(Clock Data Recovery)电路从数据流恢复时钟。

5.3 参考时钟(RefClk)

  • 100MHz 差分参考时钟(±300ppm)
  • Common RefClk(CC):链路两端共享同一时钟源
  • Separate RefClk(SRIS):各自独立时钟(Gen3+ 可选,需 SSC)
  • No RefClk(SRNS):发送端 PLL 提供时钟(Gen3+ 可选)

5.4 均衡器(Equalizer)

|---------------------------------|--------|------------------------------|
| 均衡器类型 | 位置 | 说明 |
| CTLE(Continuous Time Linear EQ) | 接收端 | 模拟均衡,放大高频衰减 |
| DFE(Decision Feedback EQ) | 接收端 | Gen4+ 使用,消除码间干扰 |
| TX FFE(Feed-Forward EQ) | 发送端 | 预加重(pre-shoot / de-emphasis) |

6. 眼图与信号质量

6.1 眼图测试

眼图是评估 PCIe 链路信号质量的经典方法,通过采样点叠加显示"眼睛"张开程度。眼图测试关注:

  • Timing Margin:接收端采样窗口的时序余量
  • Voltage Margin:电压余量
  • Jitter:时钟抖动(周期抖动 / 随机抖动)

6.2 眼图工具

Intel 提供 PCIe Gen4 Margin Tool,可在支持 margining 的接收端上自动测量眼图位置(Lane Margining at Receiver),量化 Timing 和 Voltage Margin。

7. 热插拔(Hot Plug)

物理层负责热插拔的硬件信号部分:

  • PRSNT1# / PRSNT2#:卡是否存在(PRSNT1# 接地,卡插入时 PRSNT2# 拉高)
  • PERST#:热插拔时控制卡的复位
  • CLKREQ#:ASPM L1 电源管理时钟请求信号
  • WAKE#:L2 唤醒信号(边带)

8. Synopsys PCIe IP 物理层实现

Synopsys PCIe Controller 物理层通过 PIPE 接口(PCIe PHY Interface)与外部 PHY 连接(支持 PIPE 4.4.1 / 5.1.1 / 5.1.2 标准接口)。控制器内部实现 MAC 层(含 LTSSM)、8b/10b 或 128b/130b 编解码、以及 PHY PCS 子层功能。

9. 参考文档

  • PCI Express Base Specification Revision 5.0,Chapter 4(Physical Layer)
  • PCI Express Base Specification Revision 5.0,Chapter 5(Physical Layer Hot Plug)
  • PCIe_PHY_Test_Spec_4.0_V1.01(PCIe PHY 测试规范)
  • DWC_pcie_ctl_overview / user(Synopsys PCIe IP 物理层相关章节)
相关推荐
木泽八10 小时前
PCIe配置空间与BAR地址映射:系统发现硬件的钥匙
pcie
婷婷_17210 天前
【PCIe 验证每日学习・Day22】PCIe 拓扑结构与 Switch / 桥片转发全解析
网络·学习·程序人生·芯片·pcie·pcie学习·pcie 拓扑
婷婷_17211 天前
【PCIe验证每日学习·Day21】PCIe复位机制与功能级复位(FLR)全解析
学习·程序人生·芯片·pcie·芯片验证·链路恢复·pcie 复位
深念Y1 个月前
联想小新Air14 R5 5500U m2转oculink外接无头RX580显卡和服务器电源:极低成本给轻薄本续命
win11·显卡·硬件·pcie·amd·独立显卡·oculink
Maxwell的猫1 个月前
PCIe接口技术深度解析:从发展历程到核心架构
架构·pcie·高速接口·串行总线
漫游嵌入式3 个月前
《PCI EXPRESS体系结构导读》---(5)PCI总线Device号的分配
express·pcie·pci
漫游嵌入式3 个月前
《PCI EXPRESS体系结构导读》---(4)PCI总线Bus号初始化
express·pcie·pci
漫游嵌入式3 个月前
《PCI EXPRESS体系结构导读》---(3)PCI总线配置请求的转换原则
pcie
漫游嵌入式3 个月前
《PCI EXPRESS体系结构导读》---(1)基本概念
express·pcie·pci