1. RGMII接口概述与时序标准归纳

做硬件工程师这么多年,RGMII接口可以说是以太网通信里最常见的“小麻烦”。它看起来简单——4位数据加一个时钟,但时序容限非常有限。我见过不少项目,PCB走线走完了,一测眼图,根本通不过1000BASE-T的时序要求。说白了,RGMII就是个“精打细算”的接口。

1.1 什么是RGMII?

RGMII全称是Reduced Gigabit Media Independent Interface,由HP公司提出,用来替代GMII。它把原本GMII的24根信号线压缩到12根,而且时钟频率只有125MHz。嗯,关键在这里——它用双沿采样(DDR)的方式,在一个时钟周期内传输两组数据,从而达成千兆速率。

要点:RGMII在125MHz时钟下,通过上升沿和下降沿分别采样,实现250Mbps每线,4位总线就是1Gbps。

1.2 时钟与数据的关系

RGMII的标准时序有两种主要模式:内部延迟模式和外部延迟模式。我个人习惯把内部延迟叫“MAC侧延迟”,外部延迟叫“PCB走线延迟”。为什么?因为内部延迟通常由MAC芯片自己产生一个固定的相位偏移(比如90°或240ps),而外部延迟则需要你在PCB上靠蛇形走线或者串联电阻来实现。

  • 内部延迟模式:MAC在发送时把时钟或数据做相移,使得PHY侧采样窗口对齐。优点是简单,不需要额外器件;缺点是不同芯片的延迟精度差异很大,容易翻车。
  • 外部延迟模式:MAC和PHY之间走线等长,然后靠PHY内部的延迟配置或者PCB上的延迟线来调整。我曾经在一个项目里,因为PCB空间不够,没法走等长,结果用了外部延迟模式,靠电阻电容搭了个RC延迟网络,调了一周才稳定。

1.3 时序标准参数

RGMII的时序标准主要参考IEEE 802.3和RGMII规范。对于千兆速率,关键的时序参数有以下几个:

参数符号最小值最大值说明
时钟周期Tcyc7.5 ns8.5 ns125MHz ± 6%
时钟高电平时间Tch3.0 ns5.0 ns占空比40%~60%
数据建立时间Tsetup0.8 ns—相对于时钟边沿
数据保持时间Thold0.8 ns—相对于时钟边沿
时钟偏斜Tskew—0.5 ns时钟到数据之间的最大偏斜
实际项目中,Tsetup和Thold的大小往往受PCB走线长度、过孔数量、以及芯片I/O Buffer的驱动能力影响。我常用一个经验值:走线长度差每英寸约产生150ps的延迟偏斜。所以等长控制在±100mil以内比较稳妥。

1.4 时序裕量的计算

裕量的计算公式其实不复杂:

时序裕量 = Tvalid - Tsetup - Tskew

其中Tvalid是数据有效窗口的宽度。在DDR模式下,每个数据窗口只有半个周期,即4ns(125MHz下)。所以裕量非常紧张。你想想看,如果PCB走线偏斜200ps,芯片内部延迟偏差300ps,那留给你的裕量可能只有几百皮秒了。

特别注意:不要忽略时钟的抖动(jitter)。时钟源本身的phase jitter可能达到几十皮秒,加上电源噪声,总抖动可能超过100ps。这些都会吃掉你的裕量。我曾经有一个项目,SI仿真全通过,但量产时个别板子通信不稳定,最后查出来是某个批次的晶振jitter超标。

1.5 RGMII接口知识体系

下面这张图概括了本章的核心概念。它展示了RGMII接口中主控、PHY、时钟、数据、控制信号之间的关系,以及时序参数的分布。

RGMII接口结构与时序参数关系 主控(MAC) PHY 时钟 125MHz DDR 数据总线 (RXD[3:0]/TXD[3:0]) 控制信号 (RX_CTL/TX_CTL) 关键时序参数:Tcyc=8ns, Tsetup≥0.8ns, Thold≥0.8ns, Tskew≤0.5ns

1.6 避坑指南与经验总结

做RGMII设计时,有几个容易踩的坑:

  1. 时钟相位设置错误:内部延迟模式需要在MAC或PHY侧配置正确的延迟值。我曾在某国产芯片上,手册写的是240ps,实际测出来只有180ps,结果导致时序不满足。建议在样机阶段一定要用示波器测量时钟和数据的相对相位,不要盲目相信手册。
  2. 等长走线不彻底:很多人只注意数据线之间等长,却忽略了时钟线和控制线。控制信号如果不做延时匹配,可能会造成数据采样错误。我记得有一次,同事只做了4位数据线的等长,时钟线长了200mil,结果跑千兆时随机丢包。
  3. 忽略电源噪声:数字电路开关噪声会通过VCO耦合到时钟输出,影响jitter。我习惯在PHY和MAC的电源引脚附近加至少0.1μF和10μF的去耦电容。
调试小技巧:先用示波器看时钟和数据的眼图。如果眼图张开度小于3.5ns(对于DDR模式,理论窗口4ns),就需要排查走线和延迟。我一般先用片内延迟调整,如果不行再改PCB。

总的来说,RGMII接口虽然简单,但时序裕量并不宽裕。理解了这些基础参数和关系,后面我们讲如何通过信号完整性优化来提升裕量就会更容易上手。