目录
1. PCIe链路训练简介
2. PCIe链路训练内容
3. PCIe训练基本概念
4. PCIe训练过程
4.1. 链路初始化与训练 (Link Initialization & Training)
4.2. 正常工作与异常恢复 (Normal Operation & Error Recovery)
4.3. 电源管理 (Power Management)
4.4. 测试与维护 (Test & Maintenance)
1. PCIe链路训练简介
PCIe物理层实现了链路训练(Link Training)和链路初始化(Link Initialization)的功能,这一般是通过链路训练状态机(Link Training and Status State Machine,LTSSM)来完成的。 主要流程为上电后两侧根据PCIe总线协议进入LTSSM流程;该过程是一套硬件自动化的流程,链路双方自动协商速率和宽度,调节发送和接收参数,从而达到最佳信号质量。
- 核心背景:解决RC与EP经过PCB传输后,信号衰减、串扰、抖动、码间干扰导致的采样错误问题,全程物理层硬件自动完成,无软件参与,训练完成后上层TL/DL层才可传输业务数据。
- 核心原理:通过LTSSM状态机流转,双方交互TS训练序列,协商链路参数、调优收发信号参数,补偿PCB传输损耗,实现对端模数信号精准恢复。
|
1.链路初始化(上电自检) |
Detect 检测状态 |
Quiet静默、Active探测 |
1. 设备上电/复位后进入首个状态;2. 两端通过链路阻抗充电探测,检测对端设备是否在位、通道是否有效;3. 无信号交互,仅硬件链路物理连通性检测 |
排查PCB虚焊、断线、通道开路等硬件连通故障,确认链路基础物理通路正常 |
|
Polling 轮询状态 |
Polling.Active、Polling.Configuration |
1. 两端互相发送TS1/TS2训练序列;2. 接收端锁定CDR时钟,完成初步比特同步;3. 确认对端设备PCIe协议版本兼容 |
解决PCB传输导致的时钟偏移、比特失步问题,让对端可以初步识别串行比特流 |
|
|
2.链路参数协商(基础配置) |
Configuration 配置状态 |
通道协商、链路宽度绑定、速率预协商 |
1. RC(下行端口)为主导端,EP(上行端口)为跟随端;2. 协商有效链路宽度(x1/x4/x8/x16),屏蔽异常PCB通道;3. 协商初始最大传输速率(Gen1/2/3/4/5) |
规避PCB部分通道信号损耗过大、通道不一致问题,匹配硬件最优传输规格 |
|
3.精准链路训练(信号质量优化核心) |
Recovery 训练恢复状态 |
速率重训练、均衡参数调优、采样窗口校准 |
1. 发送端:调节预加重、去加重、输出幅值,补偿PCB高频信号衰减;2. 接收端:开启CTLE线性均衡、DFE判决反馈均衡,消除串扰和ISI码间干扰;3. 微调采样相位,锁定最佳采样点 |
核心解决PCB传输带来的高频衰减、信号抖动、串扰、码间干扰,修复模数转换信号失真问题 |
|
4.正常工作状态 |
L0 活跃状态 |
稳定传输、实时链路监测 |
1. 链路训练完成,物理层锁定最优收发参数;2. 向上层DL/TL层上报链路就绪;3. 正常转发业务数据,同时实时监测信号质量 |
维持PCB链路信号稳定,保障高速数据持续可靠传输 |
|
5.低功耗状态(拓展) |
L0s/L1/L2 低功耗状态 |
空闲休眠、唤醒预备 |
1. 链路无数据时自动进入低功耗,关闭部分收发电路;2. 唤醒时自动触发简易链路重训练,快速恢复L0状态 |
低功耗场景下保障链路唤醒后信号可快速恢复正常 |

2. PCIe链路训练内容
| 位锁定 Bit Lock | CDR 恢复嵌入式时钟,稳定识别 0/1 比特 | 必选 | 串行接收基础,先完成 Bit Lock |
| 符号锁定 Symbol Lock | 识别 K 字符,界定编码符号边界 | 必选 | Gen1/2:8b/10b;Gen3+:128b/130b |
| 极性翻转 Polarity Inversion | 修正差分 D+/D – 正反接反 | 必选 | 所有设备强制支持 |
| 链路宽度 Link Width | 协商有效通道数量 x1/x4/x8/x16 | 必选 | 屏蔽失效 Lane |
| 通道翻转 Lane Reversal | 修正通道编号顺序不匹配 | 可选 | 规范布线一般不用 |
| 链路速率 Data Rate | 协商 Gen1~Gen5 传输速率 | 必选 | 初始 2.5GT/s,高速需重训练 |
| 通道对齐 Lane De-skew | 消除多通道走线时延差 | 必选 | 多 Lane 绑定传输必备 |
| 均衡 Equalization | Tx FFE + Rx CTLE+DFE,补偿信号损耗 | Gen3 + 必选 | 高速链路保证眼图质量核心 |

1. 位锁定 Bit Lock
PCIe 采用嵌入式时钟,仅传输差分数据,不单独发送时钟。接收端通过 CDR 电路从串行数据流恢复采样时钟;恢复时钟与数据相位稳定对齐,可正确识别比特 0/1,即完成位锁定。
-
发送方发送连续的 101010… 序列(称为 Jitter Tolerance Pattern 或 JTP)。
-
接收方通过时钟恢复电路(Clock and Data Recovery, CDR)锁定发送方的位时钟,确保能够正确采样每一位。
2. 符号锁定 Symbol Lock
完成位锁定仅能识别比特流,无法区分字符边界。Gen1/Gen2 使用 8b/10b 编码,以 10bit 为一个符号。LTSSM 通过识别 COM(K28.5)等 K 控制字符,定位每个符号起始边界,实现符号锁定。
Gen3 及以上为 128b/130b 编码,字符对齐机制有所变化。
-
发送方发送 8b/10b 编码的字符序列。
-
接收方通过 8b/10b 解码器识别和解码这些字符,确保能够正确解码每一个字符。
3. 极性翻转 Polarity Inversion
PCIe 传输差分信号(D+/D-),PCB 布线可能造成差分对正负接反。规范要求所有 PCIe 设备必须支持极性自动翻转,在链路训练阶段完成修正,和通道翻转不同,属于必选能力。

-
发送方和接收方通过交换 Polarity Inversion 训练序列来检测信号极性。
-
如果检测到信号极性不一致,接收方会进行极性翻转,以确保信号的正确性。
4. 链路宽度 Link Width
支持 x1/x4/x8/x16 多种通道组合,允许短卡插入长插槽。链路初始化阶段双方交互能力,协商最终可用有效链路宽度,屏蔽失效通道。
5. 通道翻转 Lane Reversal
PCB 布线可能导致两端 Lane 编号顺序不一致,协议支持通道顺序重映射对齐。该功能为可选,标准硬件布线下一般不会启用。

-
发送方和接收方通过交换 Lane Reversal 训练序列来确定通道的正确顺序。
-
如果物理连接顺序不正确,双方会进行通道位置翻转,以确保数据在正确的通道上传输。
6. 链路速率 Data Rate
上电初始训练统一从 Gen1(2.5GT/s)起步;若两端均支持更高速率(Gen2 5GT/s、Gen3 8GT/s、Gen4 16GT/s、Gen5 32GT/s),会进入 Recovery 状态执行重训练,协商切换更高速率。
-
发送方和接收方通过交换 Training Sequence(TS)包来协商链路速度。
-
双方根据各自的硬件能力和配置选择最佳的链路速度。
7. 通道对齐 Lane-to-Lane De-skew
多条并行 Lane 经过 PCB,走线长度差异会带来通道间时延差(Skew)。完成符号锁定后,接收端缓存各通道数据,消除通道间时延偏差,保证多通道数据同步拼接。

-
发送方发送 De-skew 训练序列,这些序列包含已知的时延信息。
-
接收方通过测量各通道的时延差异,调整接收时钟以对齐所有通道。
-
双方通过交换 De-skew 训练序列来确保所有通道的时延一致。
8. 均衡 Equalization(高速链路核心)
为补偿 PCB 高频损耗、ISI 码间干扰,高速 PCIe(Gen3+)必须执行均衡训练:
- Tx:FFE 前馈均衡器(预加重 / 去加重)
- Rx:CTLE 连续时间线性均衡 + DFE 判决反馈均衡
双方交互均衡预设值,迭代找到最优收发参数,保证接收端信号采样窗口充足。
3. PCIe训练基本概念
PCIe进行链路训练时要发送一些特殊的字符序列,这些序列也被称为PLP(PLP:Physical Layer Packet 物理层报文,链路训练专用特殊字符序列),物理层报文。这些字符序列主要有如下:
| TS1 / TS2 | Gen1/Gen2:16 Symbol,COM 起始 | TS1 协商链路参数;TS2 确认协商结果(速率、Link/Lane 编号等) |
| EIOS(Idle 相关) | 有序集合 | 进入电气空闲前发送,链路进入低功耗 Electrical Idle |
| FTS | COM + 3×FTS | 辅助完成位锁定、符号锁定 |
| SKIP | COM + 3×SKP | 时钟补偿,消除通道间 Skew |

4. PCIe训练过程
LTSSM具体有11个状态,分别是Detect、Polling、Configuration、Recovery,L0、L0s、L1、L2(L3是可选的)、Hot Reset、Loopback和Disable状态。系统进行复位操作(Cold, Hot or Warm Reset)后,会自动进入Detect状态。 这11个状态又可以被分为下面五个类别:
- 链路训练状态(Link Training State);
- 重训练状态(Re-Training(Recovery) State);
- 软件驱动功耗管理状态(Software Driven Power Management State);
- 活动状态功耗管理状态(Active-State Power Management State,ASPM State);
- 其他状态(Other State);
| 初始化训练 | Detect | 探测对端接收器是否在位 |
| Polling | Bit Lock、Symbol Lock、极性校正 | |
| Configuration | 协商链路宽度、通道映射 | |
| 工作 & 低功耗 | L0 | 正常收发业务 TLP 数据 |
| L0s | 轻量低功耗,快速唤醒 | |
| L1 | 深度低功耗,中等唤醒时延 | |
| L2 | 休眠,电路下电,唤醒慢 | |
| 重训练 | Recovery | 速率切换、均衡调优、链路修复 |
| 测试 / 异常 | Loopback | 硬件环回自测 |
| Hot Reset | 热复位,重置整条链路 | |
| Disabled | 端口禁用,链路关闭 |

4.1. 链路初始化与训练 (Link Initialization & Training)
系统上电 / 复位后必须顺序执行,完成链路基础通信建立,属于 LTSSM 前序核心流程
| Detect | 探测接收端是否在位 | Tx 调节共模电压,检测 RC 充放电特征 | 判断链路物理通路是否存在 |
| Polling | 时钟与符号对齐 | 收发 TS1/TS2,CDR 完成 Bit Lock、Symbol Lock,修正极性 | 比特与符号可正确解析 |
| Configuration | 链路拓扑参数协商 | TS 交互通道信息,链路降级、通道翻转配置 | 确定最终链路宽度与 Lane 映射 |
1. Detect(检测状态)
-
功能定义:检测物理链路是否存在带有效终端匹配电阻的接收端
-
底层行为:发送端周期性调整共模电压,通过 RC 充放电时间变化识别对端寄生电容;未探测到设备时,在 Detect.Quiet 与 Detect.Active 之间循环等待
2. Polling(轮询状态)
-
功能定义:完成物理层时钟同步、符号对齐
-
底层行为:两端互发 TS1/TS2 训练有序集;接收端依靠 CDR 电路实现位锁定 Bit Lock、符号锁定 Symbol Lock;同时自动识别并修正差分信号极性翻转(Polarity Inversion)
3. Configuration(配置状态)
-
功能定义:协商确定链路拓扑参数(链路宽度、通道编号分配)
-
底层行为:通过 TS1/TS2 交互通道能力;通道故障时执行链路降级(x8→x4→x1);完成通道翻转(Lane Reversal)映射配置

4.2. 正常工作与异常恢复 (Normal Operation & Error Recovery)
链路初始化完成后进入 L0 正常工作态,双向收发 TLP 与 DLLP 业务报文,初次建链默认 Gen1 速率。链路误码过高或者需要提升传输速率时,进入 Recovery 恢复状态;Gen3 及以上速率在此完成四阶段均衡训练,调优收发均衡参数,满足高速信号完整性,训练完成后切回 L0。
| L0 | 全速双向业务传输 | TLP/DLLP 正常编解码收发;初次进入默认 Gen1 2.5GT/s | RC 与 EP 可正常交互上层业务数据 |
| Recovery | 链路修复、速率切换、高速均衡训练 | 重同步;Gen3 + 执行 EQ 四阶段,调优 Tx 预加重、Rx 均衡参数 | 修复链路误码,完成高速速率协商,返回 L0 |
1. L0 (正常工作状态)
-
功能定义:链路完全激活,全速双向数据传输
-
底层行为:正常收发、编解码 TLP 事务层数据包与 DLLP 数据链路层数据包;链路初次建链进入 L0 默认使用 Gen1 基础速率 2.5GT/s
2. Recovery (恢复状态)
-
功能定义:修复链路失锁、高误码故障,完成动态速率切换
-
底层行为:L0 误码超标,或是切换更高 Gen 速率时进入;Gen3 及以上必须在此执行 4 阶段均衡训练(EQ Phase0~3),协商 Tx 预加重、Rx CTLE/DFE 等均衡参数,补偿 PCB 高频损耗,保障高速信号完整性

4.3. 电源管理 (Power Management)
PCIe 电源管理包含三级低功耗状态:L0s 为 ASPM 极速待机,单向电气空闲,FTS 快速唤醒回 L0;L1 深度休眠,双向电气空闲,可关闭 PLL,唤醒需要经过 Recovery 重训练;L2/L3 Ready 是主电源关断预备,仅保留辅助电源,监听唤醒信号。
| L0s | ASPM 轻量低功耗待机 | Tx 单向电气空闲,停止发数,保存链路基础同步信息 | FTS 快速唤醒,纳秒级返回 L0 |
| L1 | 深度休眠低功耗 | 链路双向电气空闲,可关闭 PLL | 唤醒需进入 Recovery 重训练,微秒级时延 |
| L2/L3 Ready | 主电源下电预备 | Vmain 准备关闭,仅保留 Vaux 供电 | 监听 WAKE#/Beacon 唤醒信号,唤醒流程更长 |
1. L0s (待机状态)
-
功能定义:ASPM 管理,纳秒级极速唤醒的轻量低功耗状态
-
底层行为:发送端单向进入电气空闲 Electrical Idle,停止数据发送;依靠 FTS 快速训练序列,短时间即可返回 L0 工作态
2. L1 (休眠状态)
-
功能定义:微秒级深度低功耗状态
-
底层行为:链路双向进入电气空闲,收发器可关闭 PLL 锁相环;需上层协商进入,唤醒时经过 Recovery 重训练,重新完成符号锁定
3. L2/L3 Ready (极低功耗准备状态)
-
功能定义:主电源下电前的预备状态
-
底层行为:准备关闭主电源 Vmain,仅保留辅助电源 Vaux,用于监听 WAKE# 边带唤醒信号或 Beacon 带内唤醒信号

4.4. 测试与维护 (Test & Maintenance)
Disable 为软件强制禁用链路,发送端保持电气空闲,适配热插拔场景;Loopback 是测试专用状态,接收数据直接环回发送,用于误码率与信号一致性测试;Hot Reset 属于带内热复位,通过 TS1 序列通知对端清空配置,回到 Detect 重新建链。
| Disable | 软件强制关闭物理链路 | Tx 保持电气空闲 | 热插拔断开前准备,软件关闭端口 |
| Loopback | 物理层测试验证 | Rx 数据直接环回至 Tx,不经过上层协议 | BER 误码测试、信号一致性调试 |
| Hot Reset | 带内软复位链路 | 发送 Hot Reset 标记 TS1,对端清空状态返回 Detect | 链路异常恢复,无需硬件断电复位 |
1. Disable(禁用状态)
-
功能定义:软件强制禁用物理链路
-
底层行为:发送端持续保持电气空闲,多用于热插拔断开前的链路准备工作
2. Loopback(环回状态)
-
功能定义:物理层 BER 误码率、信号一致性专用测试状态
-
底层行为:从设备将 Rx 解串后的数据流,不经过上层协议栈,直接转发至 Tx 原样回传给主设备
3. Hot Reset(热复位)
-
功能定义:带内软复位机制
-
底层行为:主端持续发送带有 Hot Reset 标志位的 TS1 有序集;对端识别后清空状态、缓存参数,跳转回 Detect 状态,重新完成整套链路初始化
