Chapter 11: Physical Layer - Logical (Gen1 and Gen2)
Chapter 11: Physical Layer - Logical (Gen1 and Gen2)书籍: PCI Express Technology 3.0 (MindShare Press, 2012)页码: Book Pages 391-438 | PDF Pages 430-470学习日期: 2026-04-13本章概要本章描述 PCIe Physical Layer 的逻辑部分Gen1 和 Gen2包括 8b/10b 编码、符号定义、有序集 (Ordered Sets)、字节条带化 (Byte Striping)、串行器/解串器 (SerDes)、时钟补偿机制等。11.1 Physical Layer 概述Physical Layer 分层┌─────────────────────────────────────────┐ │ Transaction Layer │ ├─────────────────────────────────────────┤ │ Data Link Layer │ ├─────────────────────────────────────────┤ │ Physical Layer - Logical (Gen1/Gen2) │ │ - 8b/10b Encoding │ │ - Ordered Sets │ │ - Byte Striping │ │ - SerDes │ ├─────────────────────────────────────────┤ │ Physical Layer - Electrical │ │ - 差分驱动器/接收器 │ │ - 阻抗、ESD │ └─────────────────────────────────────────┘Gen1 vs Gen2特性Gen1Gen2比特率2.5 GT/s5.0 GT/s符号时间4 ns2 ns编码8b/10b8b/10b11.2 8b/10b 编码编码原理每 8 bits 数据编码为 10 bits 符号效率: 80% (8/10)用途: 直流平衡、时钟恢复、错误检测D vs K 字符D字符 (Data): 常规数据字节 (256 个)K字符 (Control): 控制字符 (12 个)K字符用途K字符用途COM分隔符/同步SKP跳过时钟补偿STPTLP 帧开始ENDTLP/DLLP 帧结束SDPDLLP 帧开始FTS快速训练序列IDL电气空闲PAD填充SYNC链路同步11.3 TLP/DLLP 帧结构Gen1/Gen2 帧格式TLP: ┌──────┬────────┬───────┬────────┬─────┬──────┬─────┐ │ STP │ Seq Num│ Header│ Data │ECRC │ LCRC │ END │ │ (K) │ │ │ │ │ │ (K) │ └──────┴────────┴───────┴────────┴─────┴──────┴─────┘ DLLP: ┌──────┬────────┬────────┬──────┬──────┐ │ SDP │ DLLP │ CRC │ END │ │ │ (K) │ Type │ 16b │ (K) │ │ └──────┴────────┴────────┴──────┴──────┘帧控制字符STP (Start): 标记 TLP/DLLP 开始END: 标记结束SDP (Start DLLP): DLLP 开始11.4 Ordered SetsOrdered Set 定义有序集是特殊的符号序列不属于任何事务层数据包在 Physical Layer 生成和处理有序集类型类型用途TS1训练序列 1 - 链路训练TS2训练序列 2 - 链路训练确认FTS快速训练序列 - 从 L0s 退出SKIP跳过 - 时钟补偿COM公共 - 有序集分隔符IDL空闲 - 电气空闲指示TS1/TS2 有序集用途: 链路初始化和训练内容:Link/Bandwidth ManagementLane ReversalPolarityEqualization (Gen3)FTS 有序集用途: 从 L0s 低功耗状态快速恢复数量: 取决于从 L0s 需要多少 FTS 来恢复锁定SKIP 有序集用途: 时钟补偿组成: COM 3 × SKP插入规则:定期插入: 每 1180-1538 符号时间仅在数据包边界插入所有 Lane 同时插入11.5 Byte Striping (字节条带化)宽链路x2, x4, x8, x12, x16, x32 Lane 配置字节被条带化到所有 Lane条带化规则字节 0 → Lane 0字节 1 → Lane 1…字节 N → Lane N循环直到所有字节发送完毕x8 示例发送顺序: Byte 0 → Lane 0 Byte 1 → Lane 1 ... Byte 7 → Lane 7 Byte 8 → Lane 0 Byte 9 → Lane 1 ...11.6 SerDes (串行器/解串器)发送方向 (Serializer)并行数据 → 并/串转换 → 串行流接收来自 Byte Striping 的并行字节转换为串行比特流差分驱动器输出接收方向 (Deserializer)串行流 → 串/并转换 → 并行数据差分接收器输入CDR (Clock Data Recovery) 恢复时钟转换为并行字节提供给 Byte De-Striping11.7 时钟补偿时钟频率差异发送和接收使用独立时钟即使有共同参考时钟也存在容差频率差异导致缓冲区溢出/下溢SKIP 有序集补偿问题: 发射机时钟较快 → 数据到达太快 → 缓冲区溢出解决方案: 定期插入 SKP 有序集接收方可以丢弃 SKP 字符防止缓冲区溢出插入时机:每 1180-1538 符号时间仅在数据包边界11.8 电气空闲 (Electrical Idle)IDL 有序集指示链路进入低功耗状态发送 IDL 有序集代替常规数据接收方检测到 IDL → 进入低功耗退出电气空闲检测到非 IDL 信号重新开始链路训练恢复到 L0 正常工作状态11.9 链路训练基础训练序列TS1/TS2 有序集用于链路训练检测链路伙伴确定链路宽度和速度协商 Lane 翻转和极性训练步骤检测链路伙伴Polarity 检测和反转Lane 顺序检测速度 negotiation带宽 management完成训练11.10 Gen1/Gen2 关键差异相同点相同的 8b/10b 编码相同的帧结构相同的有序集类型差异特性Gen1Gen2比特率2.5 GT/s5.0 GT/s符号时间4 ns2 ns编码开销20%20%关键知识点速记8b/10b 编码: 效率 80%直流平衡D字符 数据K字符 控制STP/SDP 开始END 结束TS1/TS2 链路训练FTS 快速恢复SKIP 时钟补偿SKIP COM 3×SKP定期插入Byte Striping: 字节条带化到多 LaneSerDes: 串行/并行转换CDR: 从数据流恢复时钟时钟补偿: SKIP 有序集防止缓冲区溢出IDL: 电气空闲指示思考题为什么 8b/10b 编码能够实现直流平衡这对串行传输有什么好处SKIP 有序集为什么要定期发送发送太频繁或太少会有什么影响Byte Striping 如何保证接收方正确重组数据CDR (时钟数据恢复) 的工作原理是什么为什么串行链路需要它如果 Lane 极性反转接收方如何检测并纠正笔记结束