第1章 眼图基础
眼图,你肯定听过。做高速数字设计的人,天天跟它打交道。说白了,眼图就是用示波器把一串数字信号的波形叠加起来,形成的一张图。因为长得像眼睛,所以叫眼图。
我第一次真正看懂眼图,是在调试一块 DDR3 板子的时候。那时候信号跑 1600MT/s,示波器一抓,眼睛都快闭上了——那个"眼睛"又小又歪。从那以后我才明白,眼图不是拿来"看个热闹"的,它是信号质量的窗口。
这一章,我把眼图的基础概念和核心参数梳理一遍。你把这些搞清楚了,后面讲 CTLE、DFE 那些均衡调整,你才能听懂我在说什么。
1.1 眼图是什么?——信号的"体检报告"
眼图,本质上是数字信号在示波器上重复叠加的结果。示波器以码元周期(UI)为时间窗口,不停触发、采样、叠加。慢慢地,那个"眼睛"就出来了。
- 横轴:时间,通常显示 1~2 个 UI
- 纵轴:电压,显示信号的高/低电平
- 亮的区域:波形密集,说明信号稳定
- 暗的区域:波形稀疏,说明信号有变化
你想想看,一个理想的数字信号,应该是方波——上升沿笔直,高电平稳定,下降沿干脆。但实际信号呢?有噪声、有反射、有抖动。这些"不完美"在眼图上看得一清二楚。
核心观点:眼图是数字信号完整性的"体检报告"。眼图好,链路大概率没问题;眼图差,迟早出误码。
1.2 眼图是怎么形成的?——示波器里的叠加魔法
拿示波器看眼图,操作很简单:把探头点到测试点,设置好触发,切换到"eye"模式。但背后的原理,你得理解。
示波器以码元周期(比如 100ps)为时间窗口,不断采集波形。每次触发,它抓一段 2UI 长的波形。由于码元是随机的——有时候是"0",有时候是"1"——抓到的波形,上升沿和下降沿的位置就不一样。
举个例子:
- 第一次触发:抓到"0→1"的上升沿
- 第二次触发:抓到"1→0"的下降沿
- 第三次触发:抓到"1→1",电平不变
把这些波形全部叠在一起,你看到的就是一堆轨迹。轨迹密集的地方,形成"眼睛"的边沿;轨迹稀疏的地方,就是眼睛的"开口"。开口越大,信号质量越好。
小提示:示波器的余辉时间越长,眼图越"实"。我习惯把余辉开到 1s 以上,这样能看清抖动的分布。
1.3 眼图核心参数——读懂"眼睛"的健康指标
眼图好不好,不能光靠"看着顺眼"来判断。有四个关键参数,你得会量、会看、会分析。
1.3.1 眼高(Eye Height)
眼高,就是眼睛在垂直方向上的开口大小。单位是 mV。它反映了信号在接收端的电压裕量。
眼高怎么算?简单说,就是眼睛中心位置的"高电平最小电压"减去"低电平最大电压"。这个差值越大,接收器区分"0"和"1"就越容易。
我遇到过一块板子,眼高只有 80mV,接收器死活锁不住信号。后来查出来是电源纹波太大,把眼高压下去了。换了 LDO 之后,眼高恢复到 280mV,问题迎刃而解。
注意:眼高不等于摆幅。摆幅是信号从低到高的电压差,眼高还要扣除噪声和抖动的影响。同一个信号,摆幅 1.2V,眼高可能只剩 400mV。
1.3.2 眼宽(Eye Width)
眼宽,是眼睛在水平方向上的开口大小。单位是 ps 或 UI。它反映了接收端的定时裕量。
眼宽越大,接收器采样点的选择范围就越大。眼宽小了,采样点稍微偏一点就抓到错误的电平。
我记得有一次调试 PCIe Gen3 链路,眼宽只有 0.35UI,链路训练总是失败。查了半天,发现是参考时钟的抖动太大。换了低抖动振荡器之后,眼宽恢复到 0.6UI,链路稳定了。
1.3.3 抖动(Jitter)
抖动,是信号边沿在时间轴上的不确定性。单位是 ps。抖动越大,眼宽越小。
抖动分两大类:
- 随机抖动(RJ):由热噪声、散粒噪声等引起,呈高斯分布。无法彻底消除,只能控制。
- 确定性抖动(DJ):由串扰、反射、电源噪声等引起,有规律可循。可以优化设计来减小。
在项目里,我最头疼的就是 DJ 中的"数据相关抖动"——也就是码型不同,边沿位置不一样。这种抖动会在眼图上形成"双迹"或"多迹",看起来眼睛像长了复眼一样。
经验之谈:眼图上的抖动,不要只看峰峰值。分开看 RJ 和 DJ,才能找到根本原因。
1.3.4 上升/下降时间(Rise/Fall Time)
上升时间,是信号从 10% 到 90% 电平所需的时间。下降时间反过来,从 90% 到 10%。单位是 ps。
这两个参数反映了信号的带宽。上升时间越短,信号的高频分量越多,对 PCB 走线的损耗越敏感。上升时间太长,又容易导致码间干扰(ISI)。
我一般会看上升时间和下降时间是否匹配。如果两者相差太大,说明驱动器的输出阻抗有问题,或者链路的负载不对称。
| 参数 | 量纲 | 反应的问题 | 理想值(参考) |
|---|---|---|---|
| 眼高 | mV | 电压裕量、信噪比 | > 200mV |
| 眼宽 | ps / UI | 定时裕量、抖动 | > 0.5UI |
| 抖动 | ps | 时钟质量、噪声 | < 0.15UI |
| 上升/下降时间 | ps | 带宽、驱动能力 | < 0.35UI |
1.4 参数之间的关联——牵一发而动全身
这四个参数不是孤立的。它们相互影响,有时候你压了这边,那边又翘起来了。
- 抖动 ↑ → 眼宽 ↓:抖动增大,眼睛的水平开口就收窄。
- 噪声 ↑ → 眼高 ↓:噪声把电平"糊"掉了,眼睛的垂直开口就变小。
- 上升时间 ↑ → 眼高 ↓:边沿变缓,码间干扰加重,眼睛闭合更快。
- 眼高 ↓ + 眼宽 ↓ → 误码率 ↑:两个裕量同时缩水,接收器就容易判错。
所以,调眼图不能只盯着一个参数。你得看整体。我一般先看眼高,再看眼宽。眼高不够,先把电压裕量搞回来;眼宽不行,再查时钟和抖动。
调优顺序:噪声 > 抖动 > 带宽。先把信号"洗干净",再处理定时问题,最后看边沿速率。
1.5 实战怎么看眼图?——我的三点经验
讲完了理论,说点实际的。你在实验室里拿到一张眼图,该怎么看?我总结了三步。
- 先看"眼睛"睁没睁开。眼睛中间是不是有明显的开口?如果开口几乎闭合,那信号质量很差,直接测误码率大概率通不过。
- 再看"眼皮"厚不厚。眼皮就是眼图的轨迹。轨迹越细越清晰,说明噪声和抖动控制得好。轨迹越粗越糊,说明信号有杂散干扰。
- 最后看"眼角的纹理"。有没有"双迹"?有没有"毛刺"?双迹通常意味着码间干扰或阻抗不匹配,毛刺往往是反射引起的。
我曾经拿到一块 PCB 的样板,眼图看着还行,眼睛是睁开的,参数也达标。但上量产之后,良率只有 70%。后来细看眼图的"眼角"——也就是过零点附近——发现有微弱的双迹。就是这 10ps 的双迹,导致部分芯片误码率超标。所以,不要只看眼睛大小,要仔细看边沿的"纹理"。
避坑指南:我曾经犯过一个错——在示波器上只看了一个通道的眼图。实际上,差分信号要同时看 P 和 N 两个通道,用差分探头测。单端眼图好看,差分眼图不一定好看。
好了,这一章的内容就是这些。眼图的四个参数——眼高、眼宽、抖动、上升/下降时间——你回去一定要在示波器上亲手量一量。找一块评估板,调调示波器的余辉、时间基座和垂直分辨率,看看参数怎么变。动手试过,才算真懂。