眼图原理与测量
眼图这东西,说白了就是信号质量的"心电图"。我刚开始做高速设计那会儿,第一次在示波器上看到眼图,满屏的线条像毛毛虫一样,完全看不出门道。后来师傅告诉我一句话——"眼睛睁得越大,信号质量越好",这才算入了门。
眼图为什么重要?因为它能直观地告诉你信号还能不能继续用。你想想看,高速信号在传输过程中会受到损耗、反射、串扰等各种干扰,这些干扰最终都会在眼图上留下痕迹。学会了看眼图,就等于拿到了信号完整性的"诊断报告"。
眼图是怎么形成的
眼图的形成原理并不复杂。你把一串数字信号送到示波器上,把显示模式调到余晖(Persistence),让所有bit的波形叠加在一起——0变1、1变0、0保持0、1保持1,这些波形反复重叠,就形成了"眼睛"的形状。
为什么会形成眼睛?说白了,信号只有两种状态:高电平和低电平。所有的高电平波形叠在一起形成上眼皮,所有的低电平波形叠在一起形成下眼皮,上升沿和下降沿则构成了眼睛的两侧。如果信号质量好,眼睛就睁得大大的;要是信号质量差,眼睛就眯成一条缝,甚至完全闭上。
这里有个容易忽略的点:码型长度会影响眼图的完整性。我记得有一次用PRBS7测一个3.2Gbps的信号,眼图看起来还行,但换成PRBS31之后眼睛明显变小了。原因是长码型包含了更多低频成分,更容易暴露信道的损耗特性。所以测量时选什么码型,得根据实际场景来定。
眼图的核心参数
眼图里藏着好几个关键参数,每个参数都对应一种信号质量问题。下面这张表汇总了最常用的几个:
| 参数 | 符号 | 定义 | 反映的问题 |
|---|---|---|---|
| 眼高 | EH | 眼图垂直方向张开的幅度 | 噪声裕量——眼高不够,信号扛不住噪声 |
| 眼宽 | EW | 眼图水平方向张开的宽度 | 时序裕量——眼宽太小,采样点没地方放 |
| 抖动 | Jitter | 信号边沿在时间轴上的偏差 | 时序质量——抖动过大导致误码 |
| 眼幅度 | EA | 高电平与低电平的差值 | 信号强度——幅度衰减说明损耗大 |
| 交叉点 | CP | 上升沿与下降沿的交点位置 | 占空比失真——交叉点偏移说明有DCD |
这几个参数里,我最关注的是眼高和抖动。为什么?因为眼高直接决定了接收端能不能正确区分0和1,而抖动则决定了系统还有多少时序余量。我有个习惯:拿到一个眼图,先看眼高有没有达到规范要求的80%,再看抖动峰值有没有超过0.1UI。这两个指标过了,基本就放心了。
眼图测量方法与要点
测量眼图看起来简单——把探头接上、按一下Auto Setup就行了?没那么简单。我见过太多人因为示波器设置不当,测出来的眼图跟实际信号差很远。下面是我总结的几个关键步骤:
- 选对示波器带宽。 示波器带宽至少是信号频率的3倍,最好到5倍。测10Gbps的信号,带宽至少要20GHz,30GHz更稳。
- 设置余晖时间。 我习惯把余晖时间设成"无限"(Infinite),让所有波形充分叠加,这样才能看到最完整的眼图轮廓。
- 调整触发电平。 触发电平一般设在信号幅度的50%位置。触发电平设偏了,眼图会变形,这种错误我一开始也犯过。
- 打开时钟恢复(CDR)。 对于高速串行信号,必须用CDR恢复时钟,否则眼图会乱飘。CDR的环路带宽要匹配实际系统的PLL带宽。
- 提取参数并记录。 用示波器的自动测量功能读取眼高、眼宽、抖动等参数,同时保存眼图截图,方便后续分析。
避坑指南
做眼图测量这些年,踩过的坑不少。挑几个典型的说说:
- 交叉点偏移但不一定是DCD。 有一次我在测一个PCIE Gen3的信号,发现交叉点上移,以为是有占空比失真。查了半天才发现是示波器的触发电平没设对,调整之后交叉点就恢复正常了。嗯,先检查设备设置,再怀疑信号本身。
- 眼图闭合不一定就是通道太差。 有回一个项目,10Gbps背板的眼图几乎完全闭合,团队都认为是PCB损耗太大。后来我建议换了一种均衡算法,眼图立马睁开了。眼图闭合也可能是均衡没调好,别急着改板子。
- 抖动测量要区分RJ和DJ。 示波器给出的总抖动(TJ)很有用,但真正帮你定位问题的是随机抖动(RJ)和确定性抖动(DJ)的分解值。RJ大说明时钟或电源有噪声,DJ大则暗示有串扰或ISI。我习惯用抖动分解功能做第一轮诊断。
说到底,眼图是工具不是目的。它的价值在于帮你快速判断信号有没有"病",以及"病"在哪儿。把眼图看明白了,再做BER浴盆曲线分析就有了底气——因为你知道信号的大致"体质"如何。
我个人建议大家养成一个习惯:每次做高速设计验证,先把眼图测了,把眼高、眼宽、抖动这三个核心数据记在测试报告里。日积月累,你就能总结出一套属于你自己的"眼图健康标准",看到眼图就知道信号能不能扛得住实际运行。