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
设计要点:在Gen5链路训练过程中,PCS负责“块同步”和“编码锁定”,而PMA负责“位锁定”和“时钟恢复”。LTSSM必须等待PMA完成位锁定后,PCS才能开始块同步。两个子层的状态机是串联依赖关系。

下图展示了PMA与PCS在物理层逻辑子层中的位置关系及数据流向:

PCIe Gen5 物理层逻辑子层:PMA与PCS功能划分 数据链路层(DLL)接口 PCS(物理编码子层) 128b/130b 编码 · 扰码/解扰 · 块同步 速率协商 · 弹性缓冲 · 符号对齐 PMA(物理介质附加子层) 串行化/解串行化 · CDR时钟恢复 TX FIR均衡 · RX CTLE/DFE · 阻抗校准 高速差分信号(Tx+/Tx- · Rx+/Rx-) 并行数据总线 32/64位宽 核心时钟域 串行差分信号 32 GT/s 高速串行时钟

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编码器在发送路径上的处理步骤:

  1. 数据组装:从数据链路层接收128位数据(或有序集)。
  2. 扰码:对128位数据载荷进行加扰(同步头不扰码)。
  3. 同步头插入:根据块类型,在块首插入2位同步头(数据块为01,有序集块为10)。
  4. 并串转换:将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结构。下图展示了扰码器的硬件实现:

PCIe Gen5 扰码器 LFSR 结构(多项式:x^23 + x^21 + x^16 + x^8 + x^5 + x^2 + 1) 0 1 2 ⊕ 3 4 ⊕ 5 … 7 ⊕ 8 … 15 ⊕ 16 … 20 ⊕ 21 22 反馈路径(Feedback) 数据输入 Din ⊕ 扰码输出 Dout 每个时钟周期:LFSR左移一位,新位 = 反馈位 ⊕ 输入数据位;抽头位置:2, 5, 8, 16, 21 同步头(2位)不经过扰码器,直接透传

4.3.3 解扰原理

解扰器结构与扰码器完全相同,因为LFSR的线性性质使得两次异或运算相互抵消。接收端解扰过程:

  1. 接收端在完成块同步后,使用与发送端相同的初始种子(Seed)初始化LFSR。
  2. 对每个接收到的130位块,跳过前2位同步头,对后续128位数据载荷进行解扰。
  3. 解扰操作:data_out = data_in ⊕ lfsr_out。
种子同步问题:发送端和接收端的LFSR种子必须完全一致。PCIe规范规定:在链路训练过程中,通过TS1/TS2有序集中的特定字段传递种子信息。如果种子不同步,解扰后的数据将完全错误,导致链路训练失败。这是LTSSM中配置状态需要验证的关键点之一。

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个无效同步头,则退出锁定状态,重新进入搜索阶段。
Gen5设计挑战:在32 GT/s速率下,位周期仅为31.25 ps。块同步状态机必须在纳秒级时间内完成同步头检测和块边界对齐。这要求PCS逻辑采用全流水线架构,且同步头检测器必须支持每时钟周期处理多个位(如每周期处理32位或64位)。

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个无效同步头解锁。