当前位置: 首页 > news >正文

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/10b

11.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 Sets

Ordered Set 定义

  • 有序集是特殊的符号序列
  • 不属于任何事务层数据包
  • 在 Physical Layer 生成和处理

有序集类型

类型用途
TS1训练序列 1 - 链路训练
TS2训练序列 2 - 链路训练确认
FTS快速训练序列 - 从 L0s 退出
SKIP跳过 - 时钟补偿
COM公共 - 有序集分隔符
IDL空闲 - 电气空闲指示

TS1/TS2 有序集

用途: 链路初始化和训练

内容:

  • Link/Bandwidth Management
  • Lane Reversal
  • Polarity
  • Equalization (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-Striping

11.7 时钟补偿

时钟频率差异

  • 发送和接收使用独立时钟
  • 即使有共同参考时钟,也存在容差
  • 频率差异导致缓冲区溢出/下溢

SKIP 有序集补偿

问题: 发射机时钟较快 → 数据到达太快 → 缓冲区溢出

解决方案: 定期插入 SKP 有序集

  • 接收方可以丢弃 SKP 字符
  • 防止缓冲区溢出

插入时机:

  • 每 1180-1538 符号时间
  • 仅在数据包边界

11.8 电气空闲 (Electrical Idle)

IDL 有序集

  • 指示链路进入低功耗状态
  • 发送 IDL 有序集代替常规数据
  • 接收方检测到 IDL → 进入低功耗

退出电气空闲

  • 检测到非 IDL 信号
  • 重新开始链路训练
  • 恢复到 L0 正常工作状态

11.9 链路训练基础

训练序列

  • TS1/TS2 有序集用于链路训练
  • 检测链路伙伴
  • 确定链路宽度和速度
  • 协商 Lane 翻转和极性

训练步骤

  1. 检测链路伙伴
  2. Polarity 检测和反转
  3. Lane 顺序检测
  4. 速度 negotiation
  5. 带宽 management
  6. 完成训练

11.10 Gen1/Gen2 关键差异

相同点

  • 相同的 8b/10b 编码
  • 相同的帧结构
  • 相同的有序集类型

差异

特性Gen1Gen2
比特率2.5 GT/s5.0 GT/s
符号时间4 ns2 ns
编码开销20%20%

关键知识点速记

  1. 8b/10b 编码: 效率 80%,直流平衡
  2. D字符 = 数据,K字符 = 控制
  3. STP/SDP = 开始,END = 结束
  4. TS1/TS2 = 链路训练,FTS = 快速恢复,SKIP = 时钟补偿
  5. SKIP = COM + 3×SKP,定期插入
  6. Byte Striping: 字节条带化到多 Lane
  7. SerDes: 串行/并行转换
  8. CDR: 从数据流恢复时钟
  9. 时钟补偿: SKIP 有序集防止缓冲区溢出
  10. IDL: 电气空闲指示

思考题

  1. 为什么 8b/10b 编码能够实现直流平衡?这对串行传输有什么好处?
  2. SKIP 有序集为什么要定期发送?发送太频繁或太少会有什么影响?
  3. Byte Striping 如何保证接收方正确重组数据?
  4. CDR (时钟数据恢复) 的工作原理是什么?为什么串行链路需要它?
  5. 如果 Lane 极性反转,接收方如何检测并纠正?

笔记结束

http://www.jsqmd.com/news/658397/

相关文章:

  • PADS Layout在Pcb设计前的实用设置
  • Stardock Fences(桌面管理工具) 6.02
  • ceph子集群和rados
  • 基于STM32LXXX的模数转换芯片ADC(SGM58031XMS10G/TR)驱动C程序设计
  • 技术书籍推荐
  • Java 常见 Map 对比总结:HashMap、LinkedHashMap、TreeMap、ConcurrentHashMap
  • 负载箱与电网质量的相互影响:用户应知的技术事实与应对策略
  • 深入RT-Thread BSP引擎:从Kconfig选项到SCons脚本,彻底搞懂STM32工程构建的里子
  • 图片去水印 API 哪个好?5种方案实测对比(附避坑指南 + 免费在线体验)
  • 杀疯了!Claude Opus 4.7 突袭发布,多项能力登顶第一
  • 保姆级教程:用Scikit-learn的train_test_split和cross_val_score搞定数据集划分与交叉验证
  • Cadence 17.2 allegro如何导出封装库-library
  • 跨越桌面与移动的边界:Windows 10如何无缝融合Android应用生态?
  • ODI备案代办
  • 为什么Google Brain团队在SITS2026圆桌突然终止演示?背后是智能代码生成的“第三道红线”:训练数据版权溯源不可绕行(附法律+技术双轨应对方案)
  • 虚拟化赛道大洗牌,Infortrend存储带Proxmox VE-凭硬核实力成为企业替代方案首选
  • 告别字典盲打:用BurpSuite Intruder对DVWA密码爆破进行结果智能分析与过滤实战
  • 2026供应商审核重点:5大维度+AI工具应用指南
  • 告别百度看病:我用 Nexent 手搓了一个宠物急救与健康管家
  • 在idea中怎么把目录(directory)转成模块
  • K8s 集群安全加固措施
  • SITS2026案例深度复盘:从Prompt工程到可交付React组件,AI生成前端代码的7步工业化流水线
  • 用STM32F103C8T6和CubeMX做个密码锁,我踩过的OLED显示和矩阵按键的坑都在这了
  • 15.5k Star项目的作者,连个申诉入口都找不到
  • uni-app怎么做横向滚动导航 uni-app滚动菜单Tab实现教程【代码】
  • AC220V转12V 0.5A可替代KP15051非隔离降压转换芯片_AH8966
  • 别再追二手热点了!Hermes Agent 爆火,我是这么知道的
  • 测评|鸿达辉科技自动点胶机真实表现:五款机型、服务与选购建议
  • 深度解析Winhance:模块化Windows系统优化与定制终极方案
  • Chapter 12: Physical Layer - Logical (Gen3)