3. 抖动时域分析
好,咱们这就进入时域分析的重头戏——眼图。
说白了,眼图就是把一串数字信号的波形,按照位周期(Unit Interval, UI)叠在一起。你想想看,上亿个比特的波形叠在一块,最终会形成一个类似眼睛的图案。这就是“眼图”名字的由来。
我当年调试第一个高速串行项目时,老板走到我后面只问了一句:“眼图睁开了没有?”
嗯,那时候我就明白了,眼图是判断信号质量最直观、最粗暴的方式。眼睛睁得越大、越清晰,说明信号质量越好,接收端误码的概率就越低。
3.1 眼图是怎么形成的?
眼图不是靠单次抓取一个波形就能画出来的。它需要把采集到的长串数据,按照理想时钟的位周期切片,然后一个个重叠显示。
- 采集信号数据:示波器需要捕获足够多的比特(通常至少100万个UI)。
- 时钟恢复(CDR)锁定:对采集到的数据流进行时钟恢复,找到每个比特的决策点。
- 波形叠加:把每1个UI的波形片段取出,从决策点对齐,全部叠在一起显示。
- 眼图形成:叠加后的图形就会自然呈现出“眼睛”的形状。
我的习惯:在实际测试中,我会先不打开示波器的时钟恢复功能,直接看原始波形。等确认信号幅值正常后,再开启CDR和眼图模式。这样能先排除放大器或探头设置的问题。
为什么非要叠很多个比特?因为偶尔出现的抖动会改变波形过零点或幅值的分布,叠得越多,抖动和噪声的统计特性就越明显。我见过有人只抓了几千个比特就开着眼图分析,出来一个“完美”的眼图。后来调了几天都不对——其实是因为样本太少,根本没抓到抖动的小概率事件。
3.2 眼图里的关键参数
一个标准眼图,你至少要看三个核心参数:眼高、眼宽、抖动量。下面这张图可以帮你快速建立直觉。
3.3 眼高(Eye Height)
眼高就是眼睛在垂直方向的最大开口程度。严格来说,它是眼图在采样点处“1”电平与“0”电平之间的电压差值。
直观理解:接收端要靠这个电压差来区分“0”和“1”。眼高越大,噪声容限越大,抗干扰能力就越强。
公式理解:
眼高 ≈ Vtop_histogram_mean – Vbottom_histogram_mean – 噪声尾巴的裕度。
在实际测试中,你看到示波器算出的眼高往往是峰值,但设计中我们要看的是统计意义上的最差眼高。
有一次我在测一个PCIe Gen3的信号,眼高只有规范要求的60%。测量前我反复确认探头和电缆都没问题,最后才发现是接收端均衡器没开启。这里有个教训:眼高不仅受发射端影响,还受接收端EQ设置的影响。
| 参数 | 典型值 | 含义 | 注意事项 |
|---|---|---|---|
| 眼高 | 200~500 mV | 电压裕量 | 受噪声、ISI、反射影响 |
| 眼宽 | 0.6~0.9 UI | 时序裕量 | 受抖动、码间串扰影响 |
| 总抖动 (Tj) | 0.1~0.3 UI | 眼图水平闭合程度 | 包含Dj + Rj的组合 |
3.4 眼宽(Eye Width)
眼宽是眼睛在水平方向的最大开口宽度,单位通常用UI或皮秒。它代表接收端可以用来安全采样的时间窗口宽度。
我常说:眼宽就是你的“时间红包”。如果眼宽只剩0.4 UI,留给时钟抖动的余量就非常紧张了。
注意:眼宽的测量位置非常敏感。不要在眼高最大的地方测眼宽。应该先找到垂直方向的眼图开口中点,然后在那条水平线上测量。我没少看到新手直接拿最大眼高处去量眼宽——那样量出来的值往往会偏大,给你一种“时序裕量充足”的错觉。
3.5 抖动量(Jitter)
抖动量其实包含很多子类:总抖动 (Tj)、确定性抖动 (Dj)、随机抖动 (Rj)、周期抖动 (Pj) 等。在眼图中,我们最关心的是总抖动——它直接决定了眼宽被压缩了多少。
之前我调试一个25Gbps的背板时,眼图闭合非常严重。开始我以为是电源噪声,反复整改都没用。后来用抖动分离一看,Rj确实很低,但Dj里的Pj成分很大。顺着Pj的频率一追——发现了板上有个DC-DC的开关频率干扰了高速信号。你说巧不巧?
避坑指南:我曾经在PCIe Gen4的测试中漏掉了Pj的分离,单纯用Tj去评估裕量。结果10套样品里有3套量产不过——就是因为Pj在不同板卡上有谐振差异。从那以后,我习惯在眼图底图上把抖动分量都拆开看一遍再做结论。
3.6 眼图分析的步骤
- 采集数据:保证数据长度≥1M UI,否则统计意义不充分。
- 时钟恢复:CDR带宽要与实际接收端一致,别用错了速率。
- 观察眼高:确认垂直方向裕量满足规范。
- 观察眼宽:确认水平方向裕量。
- 测量总抖动:通常是通过对眼图横向闭合程度进行拟合计算得到Tj@BER=1e-12。
- 抖动分离:如果需要定位问题,用分离算法得到Dj、Rj、Pj。
- 对比规范:各项参数与协议要求的眼图 mask 做对比。
说白了,眼图就是一张信号质量的“体检报告”。哪一个参数不合格,你就针对哪个方向去排查。