4. 物理层逻辑子层:PMA与PCS功能划分、Gen5 PCS编码(128b/130b)、扰码与解扰原理
物理层逻辑子层是PCIe链路数据从事务层到达电气接口之间的关键转换层。在Gen5速率(32 GT/s)下,逻辑子层被明确划分为PMA(Physical Media Attachment,物理介质附加子层)和PCS(Physical Coding Sublayer,物理编码子层)两个功能模块。本章深入分析二者的职责边界、Gen5采用的128b/130b编码机制以及扰码/解扰的数学原理与硬件实现。
4.1 PMA与PCS功能划分
在PCIe Gen5物理层中,PMA和PCS的分工遵循“靠近介质 vs 靠近逻辑”的原则。下表列出了二者的核心职责与差异:
| 功能维度 | PCS(物理编码子层) | PMA(物理介质附加子层) |
|---|---|---|
| 主要任务 | 数据编码/解码、扰码/解扰、块同步、速率协商 | 串行化/解串行化、时钟恢复(CDR)、电气适配 |
| 数据宽度 | 并行数据总线(如32位或64位) | 高速串行差分信号(Tx/Rx各一对) |
| 时钟域 | 核心逻辑时钟域(相对低频) | 高速串行时钟域(32 GHz) |
| Gen5关键特性 | 128b/130b编码、加扰多项式、块锁定状态机 | CTLE/DFE均衡、TX FIR滤波、阻抗校准 |
| 与LTSSM接口 | 提供编码状态、同步状态给LTSSM | 提供信号检测、电气空闲状态给LTSSM |
下图展示了PMA与PCS在物理层逻辑子层中的位置关系及数据流向:
4.2 Gen5 PCS编码:128b/130b
PCIe从Gen3开始引入128b/130b编码,取代了Gen1/Gen2的8b/10b编码。Gen5延续并优化了这一编码方案。128b/130b的核心思想是将128位数据块编码为130位传输块,编码开销仅为1.56%,远低于8b/10b的20%。
4.2.1 编码块结构
每个130位编码块由以下部分组成:
- 同步头(Sync Header):2位,位于块起始位置。用于区分数据块(
01)和有序集块(10)。00和11为非法组合,用于错误检测。 - 数据载荷:128位,包含原始数据或有序集内容。
下表对比了不同代际PCIe的编码方案:
| 参数 | Gen1/Gen2(8b/10b) | Gen3/Gen4/Gen5(128b/130b) |
|---|---|---|
| 编码效率 | 80% | 98.46% |
| 同步头 | 无(使用逗号字符) | 2位同步头 |
| 运行长度限制 | 5位 | 通过扰码保证 |
| DC平衡 | 强制保证 | 通过扰码统计保证 |
| Gen5速率 | 不适用 | 32 GT/s → 有效数据率 31.51 GT/s |
4.2.2 编码与解码流程
128b/130b编码器在发送路径上的处理步骤:
- 数据组装:从数据链路层接收128位数据(或有序集)。
- 扰码:对128位数据载荷进行加扰(同步头不扰码)。
- 同步头插入:根据块类型,在块首插入2位同步头(数据块为
01,有序集块为10)。 - 并串转换:将130位编码块送入PMA进行串行化。
接收路径为逆过程:同步头检测 → 块同步 → 解扰 → 数据提取。
4.3 扰码与解扰原理
扰码(Scrambling)是128b/130b编码中保证信号质量的核心技术。其目的是:
- 避免长连续相同位:防止接收端CDR失锁。
- 降低EMI:分散频谱能量,减少电磁干扰。
- 统计DC平衡:使0/1比例接近50%。
4.3.1 扰码多项式
PCIe Gen5使用的扰码多项式与Gen3/Gen4相同,为:
G(x) = x^23 + x^21 + x^16 + x^8 + x^5 + x^2 + 1
这是一个23阶的线性反馈移位寄存器(LFSR)多项式。其本原多项式特性保证了最大周期为2^23 - 1 = 8,388,607位,远大于一个130位编码块的长度。
4.3.2 LFSR实现结构
扰码器采用乘法型(Galois型)LFSR结构。下图展示了扰码器的硬件实现:
4.3.3 解扰原理
解扰器结构与扰码器完全相同,因为LFSR的线性性质使得两次异或运算相互抵消。接收端解扰过程:
- 接收端在完成块同步后,使用与发送端相同的初始种子(Seed)初始化LFSR。
- 对每个接收到的130位块,跳过前2位同步头,对后续128位数据载荷进行解扰。
- 解扰操作:
data_out = data_in ⊕ lfsr_out。
4.3.4 扰码对链路训练的影响
在链路训练过程中,扰码器的工作状态直接影响LTSSM的跳转:
| LTSSM状态 | 扰码器状态 | 说明 |
|---|---|---|
| Detect | 关闭 | 电气空闲检测,不发送数据 |
| Polling | 关闭 | 发送未扰码的TS1/TS2有序集 |
| Configuration | 开启(种子交换后) | 完成种子同步后,后续数据开始扰码 |
| L0 | 开启 | 正常数据传输,持续扰码 |
| Recovery | 保持开启或重新同步 | 根据恢复场景决定是否重置LFSR |
4.4 块同步状态机
接收端PCS需要实现一个块同步状态机(Block Lock State Machine),用于从串行比特流中定位130位块的边界。其核心逻辑基于同步头的检测:
- 搜索阶段:滑动窗口检测2位同步头是否为
01或10。连续检测到4个有效同步头后进入锁定状态。 - 锁定阶段:持续验证每个块的同步头。如果连续检测到16个无效同步头,则退出锁定状态,重新进入搜索阶段。
4.5 本章小结
- PMA与PCS分工明确:PCS负责编码/扰码等逻辑功能,PMA负责串行化/时钟恢复等模拟功能。
- 128b/130b编码效率高:仅1.56%开销,同步头(2位)是块同步的关键。
- 扰码多项式为x^23 + x^21 + x^16 + x^8 + x^5 + x^2 + 1:LFSR实现,同步头不参与扰码。
- 解扰需要种子同步:链路训练过程中通过TS1/TS2完成种子交换。
- 块同步状态机:4个有效同步头锁定,16个无效同步头解锁。