PCIe电气层测试:发送端眼图、抖动、电压摆幅测试方法
电气层测试,说白了就是看你那个高速信号在物理链路上到底跑得怎么样。我这些年做PCIe合规测试,最深的体会就是:协议握手没过可以查逻辑,电气层没过那就是物理硬伤,返修成本极高。所以这一章,咱们就把发送端眼图、抖动、电压摆幅这三个硬指标掰开揉碎了讲清楚。
3.1 眼图测试——信号质量的“体检报告”
眼图是什么?说白了就是把很多个bit的波形叠加在一起,看看信号的“眼睛”睁得多大。你想想看,眼睛睁开得越大,信号的噪声裕量和时间裕量就越好。
我个人习惯在测试前先做一件事:确认测试夹具和线缆的插损。有一次我在实验室测一个Gen3的板卡,眼图怎么测都不合格,折腾了半天,结果是那条SMA线缆老化了,插损多了2dB。从那以后,我每次测眼图之前,都会先用矢量网络分析仪扫一下夹具通道。
测试步骤
- 连接设备: 把被测设备(DUT)的PCIe TX端通过合规测试夹具接到示波器上。示波器带宽必须足够(Gen3建议≥16GHz,Gen4建议≥23GHz)。
- 设置示波器: 打开眼图模板(Mask)测试功能,调出PCIe特定速率的模板文件(.msk文件)。
- 捕获波形: 采集至少10⁶个UI(单位间隔)的波形,确保统计稳定性。
- 测量参数: 读取眼高(Eye Height)、眼宽(Eye Width)、模板余量(Mask Margin)。
- 判断结果: 模板内不能有波形触碰或落入,否则判为不合格。
| PCIe代际 | 数据速率 (GT/s) | 眼高最小值 (mV) | 眼宽最小值 (UI) |
|---|---|---|---|
| Gen1 | 2.5 | ≥ 200 | ≥ 0.75 |
| Gen2 | 5.0 | ≥ 150 | ≥ 0.75 |
| Gen3 | 8.0 | ≥ 120 | ≥ 0.70 |
| Gen4 | 16.0 | ≥ 80 | ≥ 0.65 |
3.2 抖动测试——别让信号“晃来晃去”
抖动,就是信号的边沿在理想时间点上发生了偏移。它分为随机抖动(RJ)和确定性抖动(DJ)。为什么要注意这个?因为抖动会吃掉眼宽,导致接收端采错数据。
我记得有一次帮客户调试一个NVMe SSD,主机读数据偶尔会断流。示波器一看,眼图挺好的,但接过抖动分析软件一跑,发现周期性抖动(PJ)的峰值特别大。最后找到了板上的一个DC-DC电源模块,它的开关频率耦合到了信号线上。你想想看,供电噪声居然能串进PCIe高速通道里,排查起来真费劲。
抖动分类与来源
- 随机抖动(RJ):符合高斯分布,主要来自热噪声、散弹噪声。无法消除,只能通过增加链路裕量来忍受。
- 确定性抖动(DJ):有具体物理原因,可预测可分离。包括:
- 数据相关抖动(DDJ):由码间串扰(ISI)引起。
- 占空比失真(DCD):由时钟占空比不对称引起。
- 周期性抖动(PJ):由电源耦合、电磁干扰引起。
- 有界不相关抖动(BUJ):由相邻通道串扰引起。
测试方法
我用的是Tektronix或Keysight的示波器,自带的抖动分析软件(如EDA或DJA)非常方便。核心做法是:让DUT发送指定的测试码型(比如PRBS7或者PCIe标准规定的CBB码型),然后用软件分离出TJ、RJ、DJ、DDJ。PCIe规范对总抖动(TJ)有要求:
- Gen1/2: TJ < 0.25 UI(误码率BER=10⁻¹²)
- Gen3: TJ < 0.3 UI(BER=10⁻¹²)
- Gen4: TJ < 0.3 UI(BER=10⁻¹²)
3.3 电压摆幅测试——信号“声音”要够大
电压摆幅就是信号的高低电平之差。PCIe规范对此有严格的界线。信号太低,接收端就听不见;信号太高,打坏接收端不说,还会产生严重的电磁辐射。
在PCIe Gen2之后,还有一个叫做去加重(De-emphasis)的技术。简单说,就是在发送端先刻意提高第一个bit的电压,后面接着压缩,用来平衡传输链路的频率衰减。测摆幅时,需要分别测测试码型下不同连续相同位(CBB)长度时的峰值电压。
电压参数要求(Gen3 ×1为例)
| 参数 | 最小值 | 典型值 | 最大值 |
|---|---|---|---|
| 差分峰峰值电压(Vtx-diffpp) | 800 mV | 1000 mV | 1400 mV |
| 去加重量(最小编码长度下的压降比) | 3.0 dB | – | 6.0 dB |
| 预加重(Pre-shoot)允许范围 | – | 0% | 5% |
测试操作
- 将示波器设置为差分测量模式,或者用单端探头分别测P/N,然后软件做差分运算。
- 锁定一个稳定的数据段,比如CBB为“1111100000”切换的地方。
- 读取第一个bit和第七个bit的差分幅值。去加重量 = 20 × log(V₁ / V₇)。
- 做至少10次独立测量,取最差情况。