4. PCIe 电气特性:电压摆幅、去加重、预加重、均衡

讲完协议层和链路训练的逻辑,咱们得聊聊最底层的物理层了。说白了,PCIe 信号在铜线上跑的时候,不是理想方波,而是会衰减、会变形的。你在示波器上看到的眼图,就是电气特性的最终呈现。我当年调试 Gen3 主板时,眼图闭合得像条缝,最后发现是去加重力度没调对,折腾了两周。

4.1 电压摆幅:信号大小的玄机

PCIe 的发送端输出差分电压,通常用 VTX-DIFF-PP(峰峰值差分电压)衡量。Gen1/Gen2 固定摆幅,Gen3 之后支持可编程摆幅。给你个参考:

PCIe 代际典型摆幅 (VTX-DIFF-PP)备注
Gen1 / Gen2400 mV ~ 1200 mV通常用 800 mV 左右
Gen3 / Gen4800 mV ~ 1200 mV低功耗模式可降到 400 mV
Gen5 / Gen6600 mV ~ 1000 mV更强调均衡补偿

摆幅大了,信号能量强,抗噪好,但功耗和电磁干扰也高。摆幅小了,省电,但信号可能被噪声淹没。我个人习惯:在做 PCB 设计初期,先按默认 800 mV 跑仿真,如果眼图裕量不够,再调高到 1000 mV,而不是一上来就开大。

小提示: 实际项目中,接收端可以通过 Equalization 协商请求改变发送摆幅。你可以在 Link Training 的 TS1/TS2 序列里看到相关比特位。如果发现链路不稳定,先检查接收端是否成功写回了摆幅调整请求。

4.2 去加重与预加重:补偿高频衰减

信号在传输线上高频分量衰减更严重。去加重(De-emphasis)和预加重(Pre-emphasis)是两种补偿方法。本质上都是在发送端对信号频谱做预整形。

4.2.1 去加重(Gen1/Gen2 常用)

它降低低频分量,保持高频不变。比如 Gen1 要求 -3.5 dB 去加重。怎么操作?就是让非跳变位的电压幅度减小,跳变位维持满幅。想象一下:连续两个相同 bit 时,第二个 bit 的电压会被压低 3.5 dB。这样在接收端,高频跳变部分相对更强。

4.2.2 预加重(Gen3 之后融入均衡流程)

预加重正好相反:提升高频跳变位,非跳变位保持正常。实际上 Gen3 之后不再单独提“预加重”,而是统一用 3-tap TX FIR 滤波器来实现。滤波器系数(前标 c-1、主标 c0、后标 c1)可以编程。我建议你记住这个公式:

Vout(n) = c(-1)*Vin(n-1) + c(0)*Vin(n) + c(+1)*Vin(n+1)

其中 c(0) 是主抽头,c(-1) 和 c(+1) 用于去加重或预加重。c(-1) 为正时做预加重,c(+1) 为正时做去加重。很多工程师搞混方向,其实看信号序列就知道:对 101 这种模式,预加重会让第一个“1”更大;去加重会让第二个“1”更小。

避坑指南: 我曾经遇到一个案子,客户投诉链路间歇性断连。我用示波器抓发送眼图,发现去加重力度只有 -2 dB(要求 -3.5 dB)。因为 BIOS 里写死了某个寄存器,没做动态协商。最后在 Driver 里加了 Equalization 初始化,问题解决。别迷信默认值,一定要测。

4.3 均衡:从发送到接收的全面补偿

单靠发送端的去加重/预加重还不够。Gen3 引入了一套完整的均衡流程,包括三个环节:TX EQ、RX EQ(CTLE + DFE)。

  • TX EQ:发送端 3-tap FIR,调节前标、主标、后标。相当于精细刻画发送波形。
  • RX CTLE(连续时间线性均衡器):模拟滤波器,放大高频,压制低频噪声。分为 Fixed / Adaptive 两种。
  • RX DFE(判决反馈均衡器):数字均衡,消除码间干扰。一般有 1~2 个抽头,Gen4 之后可以更多。

这些均衡器在链路训练阶段(Phase 2 和 Phase 3)通过握手机制来优化。过程大致是:发送端发预置 pattern,接收端根据眼图质量请求调整 TX 系数,反复迭代直到锁定。

核心要点:Gen3 的均衡是一个闭环自适应系统,不是一次设好就不管了。温度、电压、老化都会改变信道,所以链路会周期性地重训练(比如每 100ms 做一次速度协商)。

4.4 知识体系:一张图看懂 PCIe 电气链路

下面我把发送端去加重、接收端均衡以及整个信号通道画成一张 SVG 流程图:

PCIe 电气路径:发送均衡 → 信道 → 接收均衡 发送端 3-tap FIR 去加重 / 预加重 传输信道 PCB走线 + 连接器 频率相关衰减 接收端均衡 CTLE(线性) DFE(判决反馈) 均衡协商反馈(TX 系数调整) 眼图质量监控 接收端评估裕量 典型损耗:-20dB @ 16GHz Gen4 信道长度建议 ≤ 10 inch 使用低损耗板材改善

这张图里,深蓝色是发送 FIR,橙色是信道(PCB 走线、过孔、连接器),紫色是接收端 CTLE+DFE。红色虚线是闭环反馈,接收端测量眼图后通知发送端调整系数。你想想看,如果信道损耗太大,接收端拼命让发送端增加预加重,但发送端已经到头了——那就会出现链路直接降速到 Gen2 甚至更慢。

4.5 实际调试需要关注的参数

我在板级调试时,会重点抓这几个参数:

  1. TP1(发送端测试点)眼图: 确认发送端输出符合规范,摆幅、去加重、抖动都在范围内。
  2. TP2(接收端测试点)眼图: 看经过整段信道后的眼图高度和宽度。Gen3 要求眼高 ≥ 25 mV,眼宽 ≥ 0.4 UI。
  3. 均衡系数协商结果: 读取 PCIe 配置空间的 Link Control 2 Register 中的 TX Equalization 字段,看协商了哪个 preset。
  4. 误码率: 长跑 PRBS 模式(比如 PRBS11 或 PRBS31),看是否出现错误计数。
记个口诀: “摆幅撑能量,均衡补高频,反馈闭环调,眼图看度量。” 电气特性说到底就是要在功耗、成本和信号完整性之间取平衡。

好了,这一章把电压摆幅、去加重、预加重和均衡讲完了。你在实际项目中遇到链路问题,不要一头扎进协议栈,先回物理层看眼图。很多时候,一根设计不佳的走线会让后面所有努力白费。