RGMII时钟方案:125MHz还是25MHz?抖动到底多重要?

时钟是RGMII接口的“心跳”,这个说法你可能听过好多次了。但我敢说,很多板子调不通,根因就出在时钟上。RGMII对时钟的要求,其实比大多数人想象的要严苛得多。

核心要点: RGMII的时钟问题,本质上是频率、抖动和拓扑的三角博弈。搞懂这三个维度,你这块板子就成功了一半。

4.1 参考时钟频率:125MHz vs 25MHz vs 50MHz

先说最直观的——频率。RGMII接口工作时,数据在时钟的上升沿和下降沿各采样一次,也就是DDR模式。这意味着,对于1Gbps的RGMII,你需要的时钟频率是125MHz,而不是许多初学者以为的1GHz。

但为什么很多参考设计里,我还会看到25MHz或50MHz的晶振?

这就涉及到芯片内部的PLL配置了。你想想看,SoC或交换芯片内部,通常有一个时钟管理单元。你可以给它喂一个外部低频时钟(比如25MHz),然后通过PLL倍频到125MHz。

模式 外部晶振频率 内部PLL倍频 最终RGMII时钟 典型场景
直接125MHz 125MHz 无(或1x) 125MHz PHY提供时钟,SoC作为从模式
25MHz倍频 25MHz 5x 125MHz SoC或PHY内部集成PLL,节省高频晶振成本
50MHz倍频 50MHz 2.5x 125MHz 部分FPGA或PHY的特定参考设计

我记得以前做一个项目,芯片手册里写着“支持25MHz/50MHz/125MHz外部时钟”。我心想,那就随便焊个25MHz晶振吧,便宜。结果板子回来,上电后死活不通。最后查了两个小时,才发现是内部PLL的锁定时间太长,导致PHY在初始化时错过了时钟参考。从那以后,我对参考时钟的频率选择就很谨慎了。

我的个人习惯: 如果不是功耗约束特别严格,我倾向于直接用125MHz的差分振荡器。省掉PLL的倍频环节,抖动性能更好,系统也更简单。

4.2 时钟抖动要求:别让抖动毁了你的眼图

频率选对了,只是第一步。真正让人头疼的,是抖动。

RGMII的时序窗口非常窄。大家知道吗?对于1Gbps RGMII,数据是DDR采样的,每个比特的窗口只有800ps。算上PCB走线的板级误差、芯片内部的setup/hold时间,你留给时钟抖动的预算,可能只有100ps甚至更少。

抖动分为两类:

  • 随机抖动(RJ): 由热噪声、散弹噪声等引起。服从高斯分布,无法完全消除,只能通过设计控制。
  • 确定性抖动(DJ): 由串扰、电源噪声、EMI等引起。有规律可循,可以通过布局布线和滤波优化。

对于RGMII时钟,我更关注的是周期抖动(Period Jitter)和相位抖动(Phase Jitter)。特别是TCCS(Total Clock Cycle Shift)——这个词你可能在PHY的datasheet里见过。

避坑指南: 我曾经在一个项目上直接用了SoC的GPIO做RGMII时钟输出。仿真时看波形还行,但实测眼图直接爆了。后来一量时钟抖动,TCCS超过250ps。解决方案很简单:换成专用的时钟缓冲器,抖动立刻降到50ps以内。所以,千万别用普通的GPIO或PLL输出做RGMII时钟源!

对于125MHz的RGMII时钟,推荐的最低要求是:

  • TCCS(周期抖动RMS): 小于50ps
  • 相位抖动(12kHz-20MHz): 小于3ps RMS
  • 占空比:45%-55%

你可以用频谱分析仪测时钟的近端相位噪声,然后积分到相位抖动。如果你没有专用的抖动仪,也可以用示波器的直方图统计功能,测量时钟过零点的时间漂移。

4.3 时钟源选择与分配:源端到负载的每一步都得小心

时钟源选择,说白了就是选晶振还是选振荡器。这是成本和性能的经典权衡。

  • 晶体(Crystal): 需要外部匹配电容和负载电容,启动时间长,频率精度一般,但很便宜。适用于对成本敏感、时钟要求不高的场景(比如25MHz倍频后给SoC内部用)。
  • 振荡器(Oscillator): 集成在内部,输出已经是CMOS或LVPECL电平,启动快,频率精度高,抖动低。贵一点,但省心。我个人建议,直连PHY的125MHz时钟,一定要用振荡器,不要用晶体。
  • 时钟缓冲器/分配器: 当系统有多个RGMII口(比如1个SoC带4个PHY)时,一个振荡器不够用。这时候,你需要时钟缓冲器(如:一个输入,差分输出或LVCMOS输出)。

时钟分配时,要注意的细节更多:

  1. 星形拓扑 vs 菊花链: RGMII时钟强烈推荐星形拓扑。即每个时钟负载都有独立的走线,从源端拉出来。不要试图在一条线上挂多个PHY,那是给自己找麻烦。
  2. 端接匹配: 对于125MHz的时钟,如果走线长度超过2英寸,建议在接收端做串联源端匹配。如果是差分时钟,一定要保持等长,差分对内误差控制在5mil以内。
  3. 参考平面: 时钟走线必须紧贴完整的地平面。千万不要跨分割!切地一刀,时钟抖动直接翻倍。
一个容易忽略的细节: RGMII的时钟存在“时钟偏斜(Skew)”概念。源端分配时,要确保各个时钟到达不同PHY的延迟尽量一致(相差不超过50ps)。这就是为什么我建议用专用的时钟分配芯片,它们的输出之间的skew非常小(通常小于10ps)。
RGMII时钟方案与抖动路径 时钟源(125MHz/25MHz振荡器) 3ps RMS抖动 时钟分配器 / 时钟缓冲器 10ps skew 10ps skew PHY 1 (125MHz DDR) TLVDS/PECL 输入 PHY 2 (125MHz DDR) TLVDS/PECL 输入 关键抖动参数要求 TCCS (周期抖动) < 50ps RMS | 相位抖动 (12kHz-20MHz) < 3ps | 占空比 45%-55% PCB时钟走线规则(避坑) • 星形拓扑:各PHY独立走线,不共用一条线 • 等长:差分对内误差 < 5mil;源端到各PHY长度差 < 5mm • 参考平面:走线必须紧贴完整地平面,禁止跨分割

最后说一个分配中的真实案例。有一个项目,时钟用了1分4的扇出缓冲器,Pin设完全按照手册来。结果实测时发现,4个PHY没一个能稳定建链。查了三天,最后发现是缓冲器的输出电源滤波没做好。我给每个输出通道单独加了一颗0.1μF的陶瓷电容,紧贴电源脚,问题立刻解决。

总结一句话: RGMII时钟,频率选对是及格,抖动控制是优秀,而时钟分配(包括拓扑和去耦)是决定系统稳定性的关键。这三个环节,哪一个出了问题,你的眼图都会很难看。