4、硬件层面:时钟问题导致协商失败

时钟,是PHY芯片的心跳。

这话一点不夸张。我遇到过不少项目,Link灯死活不亮,翻来覆去查配置、查变压器、查PCB走线,最后发现——时钟偏了那么一点点。说白了,PHY内部的PLL和CDR电路全指着这个参考时钟来同步数据。时钟不准,自动协商根本走不到最后一步。

4.1 PHY需要什么样的时钟

大多数千兆PHY需要25MHz或125MHz的参考时钟。为什么是这个频率?因为125MHz是1000BASE-T的符号率,内部PLL可以直接倍频。25MHz则是外部晶振常见值,靠PLL升到125MHz。

速率标准 符号率 常用参考时钟 频率精度要求
1000BASE-T 125 MHz 25 MHz / 125 MHz ≤ ±50 ppm
100BASE-TX 125 MBaud 25 MHz ≤ ±50 ppm
10BASE-Te 10 MHz 25 MHz ≤ ±50 ppm

±50 ppm是什么概念?25 MHz时钟偏差不超过1250 Hz。但实际调试中,我这个要求往往会更严。

注意:有些低成本晶振标称±50 ppm,但温漂能跑到±100 ppm以上。80 ppm时自动协商就开始随机失败了。我吃过这个亏——一批板子常温全过,老化箱里一半不通,最后锁定时钟问题。

4.2 常见的时钟故障模式

举个例子,假设你用示波器看时钟波形。频率对了,幅度也够,但自动协商就是不过。

为什么会这样?

我总结过几个常见坑:

  • 频率偏差:晶振本身频率偏了,或者负载电容匹配不对,实际频率跑了50 ppm以上。
  • 抖动过大:时钟边沿在时间轴上晃来晃去。PHY内部CDR容忍度有限,抖动大了锁不住。
  • 占空比不对称:PHY内部PLL一般靠双边沿同步,占空比偏差大,PLL调节范围不够用。
  • 时钟路径噪声:时钟线跟开关电源走太近,或者地层有缺口,串入了共模噪声。
小技巧:我个人习惯,遇到协商失败先用示波器看时钟波形。不用急着调MDIO寄存器。时钟干净,问题就少了一半。

4.3 抖动——那个看不见的杀手

抖动分两种:随机抖动(RJ)和确定性抖动(DJ)。RJ来自热噪声,不好消除;DJ来自电源噪声、串扰、反射。对于PHY来说,DJ更要命。

我记得有一次,一台设备接隔离变压器后Link直接断了。查了两天,最后发现是隔离变压器的共模扼流圈饱和了,耦合出的噪声把时钟抖得一团糟。

抖动类型 典型来源 对PHY的影响 典型容忍限值
周期抖动 电源纹波、串扰 增加符号间干扰,降低SNR < 40 ps (rms)
相位抖动 PLL噪声、参考时钟噪声 导致CDR失锁 < 0.01 UI (rms)
占空比失真 时钟缓冲器不对称驱动 等效增加低频抖动分量 45% ~ 55%

4.4 时钟源的选择与布局

时钟源一般有两种:石英晶振和MEMS振荡器。成本上晶振便宜,但精度和抗振性不如MEMS。我一般在原型阶段用晶振,量产看情况切换到MEMS。

布局上,有几点要注意:

  1. 尽量靠近PHY,走线不超过10mm。长了就是天线。
  2. 下方挖空时钟区域顶层和底层不要走其他信号,避免串扰。
  3. 并联小电容靠近PHY时钟输入引脚,滤高频噪声。
  4. 独立LDO供电不要跟IO或核心供电混在一起。
我曾经踩过坑:一款产品因为时钟走线穿过了DDR区域,DDR读写时产生的辐射耦合到时钟线上,导致千兆协商成功率从100%降到70%。后来改版把时钟走了一层单独的内层,周围打了地孔隔离,问题才解决。

4.5 时钟问题排查步骤(实战流程)

下面是我在项目里常用的一套排查流程,你可以参考:

时钟问题排查流程图 发现协商失败 抓时钟波形 测量频率 / 占空比 抖动测量 (RMS / 峰峰值) 是否超标? 是 否 检查时钟源 / 供电 / 布局 排查MAC / PCB其他部分 输出结论 / 整改措施 遇到时钟问题不要慌,按流程一步步查,大部分都能找到根因

上面这张图是我自己一直在用的排查逻辑。核心就是:先确认时钟质量,再往前查电源和源端设备。

4.6 几个实战案例

我挑两个典型的说说:

案例1:负载电容选错

一块板子,用了24 MHz晶振,PHY内部倍频后需要125 MHz。示波器一看,频率24.03 MHz,偏了1250 ppm。换晶振不行,后来发现是负载电容贴错了,从18 pF换到12 pF,频率回归正常。

案例2:时钟缓冲器坏了一半

另一块板子,时钟波形看起来正弦波,但幅度只有1.2 Vpp。PHY手册要求1.8 Vpp最小值。查下去发现时钟缓冲器的供电退耦电容虚焊了,导致驱动能力不足。

注意:有些PHY芯片内部有时钟丢失检测寄存器。比如Marvell的PHY,读寄存器0x11 bit 10就能知道时钟是否丢失。我建议调试时先把这些状态读一遍,比自己瞎猜快很多。

4.7 总结:时钟调试的“三板斧”

归纳起来,时钟问题调试我主要看三样:

  1. 频率准不准——用频率计或者示波器测,偏差在±25 ppm以内才放心。
  2. 抖动大不大——示波器打开抖动分析,RMS抖动控制在30 ps以内。
  3. 路径干不干净——时钟走线附近有没有大电流、开关电源、高速数字线。

嗯,说来说去,时钟是整个PHY系统的根基。根基不稳,后面再怎么调协议、调寄存器都是白费力气。希望这篇笔记能帮你少走点弯路。