眼图测试原理:眼图的形成机制与参数定义
眼图,说白了你就是把一串高速数字信号,用示波器叠加在同一个时间窗口里看。怎么叠加?用时钟做触发,把每一个比特的波形叠在一起。USB 3.0跑5Gbps,一个UI(Unit Interval)才200ps,信号在这么短的时间里跳变,你想象一下——几百万个比特的波形叠在一起,中间的空白区域就会形成一个像眼睛一样的形状。
这个“眼睛”不是画出来好看的。它能直接告诉你信号质量行不行。我做信号完整性这十几年,每次拿到一个新板子,第一件事就是看眼图。眼睛睁得大,后面测试大概率顺;眼睛眯成一条缝,那基本可以提前约EMC整改了。
眼图是怎么形成的
原理不复杂。示波器用时钟恢复功能(CDR)锁定数据流的速率,然后用这个恢复时钟去触发采样。每个数据比特的波形被重复叠加到一个固定长度的时间窗口上——这个窗口通常设为一个UI或两个UI。因为数据是随机的,0和1的跳变位置不同,但上升沿和下降沿的位置相对固定,所以叠加后的波形会呈现出“眼”的轮廓。
我举个例子:你拿一支笔在纸上反复描同一个图形,描几百遍,图形就会越描越粗,边界变得模糊。眼图也类似——边沿的抖动、过冲、振铃都会让“眼睛”的边界变粗。打开度高的眼图,说明信号干净;打开度低,说明噪声和抖动大。
关键参数定义
USB 3.0规范里,眼图测试有四个核心参数:眼高、眼宽、抖动、占空比失真。下面逐个说。
眼高(Eye Height, Veye)
眼高就是眼睛在垂直方向上的开口大小,单位一般是mV。它衡量的是信号在接收端能够分辨0和1的电压裕量。我在项目里见过一种情况:板子走线太长,插损大了,眼高直接掉到100mV以下,接收端根本没法正确判断电平。
USB 3.0的规范要求眼高不小于100mV(差分值),但实际工程中我建议至少留20%的余量,也就是120mV以上。为什么?温度和电压波动会让眼高进一步恶化。
眼宽(Eye Width, Teye)
眼宽是眼睛在水平方向上的开口宽度,单位是ps。它反映的是在采样时刻,接收端有多少时间窗口可以正确采样数据。理论上一个UI是200ps,但实际眼宽会比200ps小,因为边沿抖动占掉了一部分。
规范要求眼宽不小于0.35 UI,也就是70ps。但是我个人习惯,如果眼宽低于85ps,就会仔细查一下时钟抖动或者串扰来源。有一次排查一个不良品,发现是一根时钟线没包地,串扰导致眼宽只剩60ps。
抖动(Jitter)
抖动是信号边沿偏离理想位置的随机或确定性偏移。分两种:随机抖动(RJ)和确定性抖动(DJ)。RJ来自热噪声等随机过程,呈高斯分布;DJ来自串扰、反射、电源噪声等,有固定的幅度和模式。USB 3.0测试中,抖动会用Tj(Total Jitter)来评估,Tj = DJ + 14.069×RJ(BER=10^-12时)。
嗯,这里要注意:抖动是眼图闭合的元凶。你想想看,抖动大了,眼宽和眼高都会缩水。我调试过一个HDMI转USB 3.0的桥接芯片,PCB布局没注意隔离,抖动跑到40ps以上,眼图几乎闭合。
占空比失真(Duty Cycle Distortion, DCD)
DCD指的是信号正脉冲宽度和负脉冲宽度不一致。通常在低频或数据模式固定时观察。原因可能是驱动器上升沿和下降沿不对称,或者接收端阈值偏移。DCD会表现为眼图垂直方向上的偏移——眼睛不是水平对称的,而是偏上或偏下。
我曾经遇到一个案子,USB 3.0眼图测试一直不过,查了半天发现是驱动器输出P/N不匹配,DCD达到15%,最后换了一颗料才解决。DCD在测试中可以用差分眼图的“交叉点”位置来评估,理想交叉点在50%处。
参数对比速查表
下面这张表我平时调试时也常贴在工作台上,各位可以保存下来对照。
| 参数 | 符号 | 单位 | USB 3.0 规范最低值 | 工程推荐余量 |
|---|---|---|---|---|
| 眼高 | Veye | mV | 100 | ≥120 |
| 眼宽 | Teye | ps | 70 | ≥85 |
| 抖动(总) | Tj | ps | ≤25 | |
| 占空比失真 | DCD | % | ≤5 | ≤3 |
重点回顾:
- 眼图是多个UI波形叠加的结果,CDR触发是关键。
- 眼高决定电压裕量,眼宽决定时序裕量。
- 抖动是眼图恶化的首要原因,总抖动必须控制在规范内。
- DCD影响眼图对称性,排查驱动器不对称或阈值偏移。
小技巧: 我用的是Tektronix DPO70000示波器配80SJNB软件做眼图分析。其实最省事的办法是让示波器自动测量眼高眼宽,再手动看一下抖动分解后的DJ成分。如果你看到DJ主要是数据相关抖动(DDJ),那大概率是阻抗不连续或串扰。
曾经踩过的坑: 不要一上来就用全码型测眼图。我建议先跑PRBS7或PRBS9码型,这样抖动分解更准确。直接上合规码型有时候会把问题掩盖掉,因为合规码型的频谱成分特殊,某些串扰可能不触发。先跑简单码型定位问题,再跑合规码型做最终验证。
实测步骤简述
如果你现在要测一块USB 3.0板卡的眼图,大致流程是:
- 连接差分探头(差分有源探头,带宽至少6GHz)。
- 示波器设置CDR锁定到5Gbps(速率等级需对应)。
- 采集足够多的比特数——我一般采1M个UI以上。
- 让示波器自动计算出眼高、眼宽、Tj、DCD。
- 记录结果,对比规范限值。
对了,如果你用软件做后处理(比如MATLAB写脚本),也可以自己调眼图算法。但说实话,大部分时间用示波器自带的眼图分析功能足够了。不过你得清楚背后的数学原理,否则遇到异常结果没法判断是信号问题还是算法问题。
最后说一句,眼图不是万能的。它只能告诉你信号质量,但不能告诉你为什么差。排查根因,还是要靠TDR、S参数和时域反射分析。但作为入门第一步,学会看眼图,你就能判一个板子到底是“能过”还是“得改”了。