1. PHY眼图概述

先聊聊什么是眼图。说白了,眼图就是把一串数字信号的波形,在示波器上反复叠加之后显示出来的图案。因为形状像人的眼睛,所以就叫“眼图”。

你可能要问:为什么要把波形叠在一起看?直接看单个脉冲不就行了?嗯,问题就在这儿。高速信号里,单个脉冲说明不了问题。码间干扰、抖动、噪声,这些家伙都是随机出现的。你只有看几百万个bit的统计效果,才能真正掌握信号质量。

一个直观的理解: 眼图就像信号的“心电图”。医生通过心电图看心脏跳得规不规律,咱们通过眼图看信号跳得干不干净。

眼图是怎么生成的?

拿示波器来说,把时钟恢复出来的采样时钟作为触发源,然后无限次地捕获波形。每个bit的波形都被强制对齐到同一个时间窗口内。这样一来,所有波形的共同轨迹就形成了“眼”的轮廓,随机游走的轨迹则填满了“眼”的内部。

  • 采样窗口: 通常是1个UI(Unit Interval,一个比特宽度)
  • 叠加次数: 至少要百万次以上,统计才有意义
  • 触发源: 用CDR恢复出的时钟,而不是外部参考时钟

我个人习惯,在调试阶段会把叠加次数设得更大一些。有一次发现一个板子眼图看着挺好,结果跑了十亿次采样,眼睛突然闭了一小下——原来是个极低概率的抖动事件。这种坑,不多跑几遍根本抓不到。

眼图形成过程与关键参数 眼图形成逻辑与关键指标 信号源(PRBS码型) 多次捕获 & 叠加 示波器显示波形 数据采集层 数据分析层 眼图波形形成 眼高(Eye Height) 垂直张开度 / mV 眼宽(Eye Width) 水平张开度 / ps 抖动(Jitter) 峰峰值 / ps 占空比失真(DCD) 高/低脉冲偏差 是否符合规范掩码(Mask) 注:参数合格 ≠ 系统稳定,还需看裕量

为什么高速串行链路这么看重眼图?

你想想看,现在动不动就跑10Gbps、25Gbps,甚至112Gbps。一个UI才几十皮秒甚至十几皮秒。信号在PCB上走几英寸,反射、串扰、介质损耗全来了。这时候如果不看眼图,你根本不知道信号到底还能不能正确采样。

我见过不少工程师,仿真跑得漂漂亮亮,结果板子打样回来一测,眼图完全闭了。后来查出来是过孔残桩没处理好。这种事,眼图一放上去就原形毕露。

具体来说,眼图的重要性体现在四个方面:

维度 眼图对应的指标 为什么重要
数据完整性 眼高、眼宽 决定了接收器能否正确区分0和1
时序余量 眼宽、上升/下降时间 决定时钟采样的可靠窗口大小
噪音与干扰 眼高抖动、眼皮厚度 反映出串扰、电源噪声等干扰的严重程度
标准合规性 眼图掩码(Mask)测试 所有高速协议(PCIe、USB、Ethernet、SATA等)都用眼图掩码作为物理层合格判据

核心观点: 眼图是串行链路物理层健康的“单窗口总览”。一个眼图,包含了幅度噪声、时间抖动、码间干扰的全部统计信息。这是任何一个单次测量都做不到的。

眼图到底能告诉我们什么?

一张眼图摆出来,有经验的工程师扫一眼就能判断个七七八八。我来拆解一下怎么看:

  1. 眼睛睁开得够不够大? —— 眼高决定了电压裕量。PCIe Gen4要求眼高至少175mV(在特定BER下),小了就危险。
  2. 眼睛横向宽度够不够? —— 眼宽决定了时序裕量。如果眼宽不到0.5个UI,CDR就快锁不住了。
  3. 眼图的“眼皮”厚不厚? —— 眼皮厚表示噪声大。上升沿和下降沿的交叠区域越粗,说明抖动越严重。
  4. 交叉点在哪里? —— 交叉点偏离50%说明有占空比失真(DCD),通常是由时钟占空比误差或驱动器不对称引起的。
  5. 眼图上下是否对称? —— 不对称可能意味着驱动器的共模电压不对,或者有直流偏移。
我曾经踩过一个坑: 有一款PCIE Gen3的M.2 SSD,常温下眼图完全在mask之内。结果放到85°C烘箱里烤了半小时,眼图直接塌了。后来查出来是PCB板材的损耗在高温下急剧劣化,导致ISI(码间干扰)恶化。所以做眼图验证,一定要跑温度边界条件,不能只在常温看。

眼图测量的几个关键注意事项

眼图不是放上示波器就能测准的。经验告诉我,以下三点最容易出问题:

  • 时钟恢复设置 —— CDR的环路带宽必须与被测信号的协议要求一致。带宽设宽了,抖动会被跟踪掉,眼图看起来比实际好;设窄了,抖动会被放大,眼图看起来比实际差。
  • 示波器带宽 —— 至少要大于被测信号基频的3倍。比如10Gbps信号,基频5GHz,示波器带宽至少要15GHz。带宽不够,眼图的高频分量被滤掉,看起来会更“好看”但失真了。
  • 探头和电缆 —— 这几个无源器件是最大的噪声源和损耗源。我自己习惯每次测前都做一次去嵌处理,把探头和电缆的频率响应校准掉。

说白了,眼图验证不是“把波形拉出来看一眼”那么简单。它是一个系统性的分析过程。从激励码型的选择,到采样次数的设定,到CDR参数的配置,再到最终的mask判据比对,每一步都影响结论。

这一章算是给整个课程搭了个架子。后面我们会深入学习眼图的每个参数含义、抖动分离方法、掩码测试标准,以及实际项目中的debug思路。内容不少,但每部分都有它的实际用处。