链路可靠性基础:眼图、抖动与误码率

做MIPI D-PHY链路的人,天天跟三个东西打交道:眼图、抖动、误码率。很多人觉得这是测试人员的事,焊好板子跑一遍就行。但我想说,理解这三个指标的内在关系,比会操作示波器重要得多。你设计阶段的每一个决定——PCB走线、端接、电源去耦——最终都会体现在这三个数字上。

眼图——信号质量的“心电图”

眼图是什么?说白了就是把无数个数据bit叠在一起看。信号好,眼睛睁得大;信号差,眼睛眯成一条缝。我个人习惯在调试初期先抓眼图,因为它最直观,一眼就能判断链路有没有大毛病。

眼图关键参数(D-PHY常用)

  • 眼高(Eye Height):信号高低电平之间的最小差值。MIPI D-PHY规范通常要求眼高≥100mV(差分)。
  • 眼宽(Eye Width):眼图在水平方向张开的宽度,对应有效的采样窗口。一般要求>0.7UI(Unit Interval)。
  • 眼交叉比例(Eye Cross Percentage):差分信号过零点在眼图垂直方向的位置。理想值是50%,偏差过大会导致占空比失真。
  • 抖动(Jitter):其实眼图宽度里的“模糊边缘”就是抖动。

我在项目中遇到过一块板子,眼高只有60mV,但眼宽还挺正常。当时用示波器一看,发现是CML输出级的共模电压漂了。调整了AC耦合电容的取值,眼高立刻回到120mV。所以,眼图能帮你定位问题是电压域还是时间域。

抖动——时钟与数据的“摇摆”

抖动是时序不确定性的总称。MIPI D-PHY对抖动特别敏感,因为它的源同步Clock只有一条通道,一旦Clock抖动大,整个链路的采样窗口就被压缩。

咱们把抖动分成两大类:

抖动类型来源特点D-PHY影响
随机抖动(RJ)热噪声、散粒噪声高斯分布,无界决定链路底噪水平
确定性抖动(DJ)串扰、反射、电源噪声有界,可重复可通过PCB优化压制
—— 数据相关抖动(DDJ)码间干扰(ISI)随数据图案变化长走线严重时需加预加重
—— 周期抖动(PJ)开关电源纹波周期性,频点明确容易和Clock混叠
—— 占空比失真(DCD)驱动器不匹配影响高低电平时间导致眼交叉偏移

避坑提醒:我曾经遇到过一块Demo板,眼图看起来不错,但一到长包长流就会随机丢包。查了三天,最后发现是电源纹波引发的周期抖动刚好落在Clock频率的1/4上,导致采样边沿周期性偏移。加两片LC滤波后问题消失。记住:抖动不是看总值,要看频谱分布。

误码率(Bit Error Rate)——最终判决

眼图和抖动都是间接指标,误码率才是“一票否决”的硬指标。MIPI D-PHY的误码率要求一般是1e-12以下(即10^12个bit出错不超过1个)。

误码率、眼图、抖动之间有非常经典的数学关系——浴盆曲线。你把眼图水平切开,在不同采样位置测误码率,会得到一个类似浴缸侧壁的形状。浴盆曲线越宽,说明采样裕量越大。

经验公式:当抖动符合高斯分布时,BER与抖动峰峰值(TJ)的关系可以估算:TJ(p-p) ≈ 14.1 × RJ(rms) + 2 × DJ。实际项目中我建议不要过度依赖公式,直接用BERT扫曲线更靠谱。

三者关联与实战要点

眼图、抖动、误码率不是孤立指标。我习惯用下图来理解它们的关系:

眼图 · 抖动 · 误码率 三角关联 眼图 Eye Diagram 抖动 Jitter 误码率 BER 眼图反映信号质量,抖动是时序不确定性,误码率是最终判决结果 三者相互关联:眼图宽度 = 1UI – 抖动,BER 浴盆曲线由抖动分布推导

你看,眼图的水平张开宽度直接等于1UI减去总抖动。而误码率浴盆曲线的“膝点”位置,就是眼图左右边缘的抖动分布穿越接收端阈值的位置。我通常先抓眼图确认基本眼高、眼宽,然后用BERT测BER曲线,再用频谱仪分析抖动的频域成分。这三个工具互相印证,基本能覆盖所有链路问题。

实战检查清单

  1. 眼图眼高是否>规范下限(D-PHY Gen2/Gen3要求不同)
  2. 眼图眼宽是否>0.6UI(留安全裕量)
  3. 总抖动(TJ@1e-12)是否小于0.3UI(经验值)
  4. 确定性抖动是否占主导(>70%),若是,排查串扰或电源
  5. 运行BERT至少1小时,确保无周期性误码

一个实用技巧:当现场没有BERT时,可以用示波器配合长Pattern(如PRBS31)测眼图,然后根据眼图开口估算极限BER。虽然不如BERT精确,但能快速筛出明显有问题的通道。我自己在早期原型验证阶段经常这么干,效率很高。

最后提醒一句:别光盯着数字。0.29UI抖动和0.31UI抖动可能只差2ps,但BER可能差一个数量级。关键是你得知道那个2ps是从哪来的——是随机抖动还是确定性抖动?后者可以改PCB解决,前者就只能认命换更低噪声的参考时钟。