眼图形成原理:示波器余晖模式与波形叠加

很多人第一次看到眼图,都觉得挺神奇的。一根根波形叠在一起,最后形成那么一个像眼睛一样的图案。它到底是怎么来的?你想想看,示波器怎么就能把上亿个bit的信息浓缩在一张图里?

这背后的核心,就是示波器的余晖模式,说白了,就是让每条波形都留下“残影”。

什么是余晖模式?

先说说最基本的。普通模式下,示波器扫完一次屏,就清掉重画。你看到的是最新的那一帧。但余晖模式不一样,它会保留之前多次扫描的结果。每一次新的波形扫过来,都叠加在之前的画面上。旧的波形慢慢变暗,新的更亮。嗯,就像相机长曝光一样,拍车流会留下一道道的光轨。

我记得刚开始带徒弟时,有人问我:“这跟观察眼图有什么关系?”关系大了。高速信号里,每个bit的跳变过程不是完全一模一样的。有抖动,有噪声,有码间干扰。你只看一次波形,根本看不出统计特征。只有把成千上万次跳变叠在一起,才能看到信号的真实“质量”。

核心要点:余晖模式让示波器从“单次捕获”变成“统计叠加”。没有它,就没有眼图。

波形叠加:从随机到确定

假设我们在测一个PCIe Gen3的差分对。数据是随机的,0和1交替出现。每一次跳变,示波器都会采集一个波形。第一次采集,波形可能过冲多一点。第二次,可能上升沿慢了一点。第三次,可能刚好卡在判定点附近。

这些波形单独看,都是“随机”的。但当你把它们叠加在一起,神奇的事发生了——它们会形成一个有规律的区域。所有从0到1的跳变,都集中在一个带状区域里。所有从1到0的跳变,集中在另一个。中间交叉的部分,就是我们说的“眼”了。

这里有个我个人觉得特别重要的经验:波形叠加的数量很关键。叠得太少,噪声充满随机性,眼图毛刺多,看不清真实边界。叠得太多,示波器内存和刷新率跟不上,可能错过偶发的抖动。我一般在合规测试时,习惯设到100万次以上的采集。PCIe规范里要求的眼图测试,也要求足够的统计样本。

余晖模式与色温显示

现在的示波器,余晖模式还分好几种。最常见的是模拟余晖和色温显示。

模拟余晖就是前面说的,波形慢慢变暗,旧的自然消失。好处是直观,但你观察的时间窗口有限。色温显示不同。它会用颜色表示某个区域被“扫过”的次数。红色通常代表高频出现,蓝色代表低频。嗯,这比单纯叠加更进了一步。

你们想想看,信号里的随机抖动出现在哪个位置?如果你看到眼图交叉点附近有一大片红色,那说明多数跳变都集中在这里。如果蓝色区域很大,说明抖动分散、不集中。这对排查问题很有用。

实用技巧:在PCIe合规测试时,记得打开示波器的“无限余晖”或“色温显示”,并关闭自动清除。这样能捕捉到所有偶发的信号劣化,不会被新波形刷掉。

波形叠加的数学本质

从数学上看,眼图其实就是信号在特定时间点的概率密度分布。每一次采样,都对应一个(电压, 时间)点。把所有点投影到同一个时间窗口里,就形成了眼图。

为什么要这么干?因为信号完整的判断,不能只看一次。合规测试关心的是“最差情况”。比如,抖动是否导致误码?眼高是否足够?这些都需要统计收敛。波形叠加的过程,就是把所有可能情况都暴露出来。

# 举个简单的例子,模拟波形叠加的处理步骤(只是示意,不是真实命令)
# 1. 采集N次波形
# 2. 把所有波形对齐到UI边界(单位间隔)
# 3. 叠加成一个数据矩阵
# 4. 用色温或透明度渲染
# 5. 得到眼图

眼图与PCIe测试的关系

PCIe规范里,对眼图的要求非常明确。Gen3及以上,还引入了Pulse Width Distortion(脉宽失真)和特定模板。但这些都建立在同一个基础上——波形叠加形成的眼图必须是“稳定收敛”的。

我遇到过一些朋友测试时,随手抓个几万个波形就下结论。结果拿到一致性测试里,怎么过不了。原因就是:统计样本不够,眼图没“长稳”。特别是高速信号,偶发的占空比失真很隐蔽,只有长时间余晖叠加才能暴露出来。

注意:千万别在余晖模式未稳定时就读取眼图参数。等波形叠加到眼图边缘不再明显变化,才算采集完成。PCIe合规测试里,这通常是几百万次采集以后的事。

好了,理解了这个原理,后面讲模板测试和抖动分解就好办了。你知道图像是怎么形成的,也就能看懂示波器是怎么判断“通过”或“失效”的。

本章知识结构

下面这张图,把眼图形成的核心逻辑串起来了。从原始数据采集,到余晖叠加,再到最终眼图呈现和PCIe合规测试应用。你们可以对照着理解。

眼图形成原理:余晖模式与波形叠加 数据源(随机0/1序列) 示波器采集波形帧 示波器采集波形帧 …… 余晖模式叠加 (波形对齐UI边界 + 逐帧叠加) 形成稳定眼图 (统计收敛 + 概率分布) PCIe合规测试:眼高/眼宽/模板比对 关键原理 单次波形是随机的 叠加后呈现统计规律 实践经验 建议采集百万级波形 眼图稳定后再判读