1. RGMII接口概述

RGMII,全称Reduced Gigabit Media Independent Interface,是吉比特以太网中MAC与PHY之间的标准数字接口。说白了,它就是把传统GMII的24根信号线压缩到12根,同时还能跑千兆速率。我在做第一个千兆交换机项目时,就被这个接口折腾得不轻——信号眼图怎么调都过不了,后来才发现是时序理解出了问题。

1.1 信号定义

RGMII接口的信号线数量不多,但每根都承担着双重任务。比如数据线,上升沿和下降沿各采一个比特,这样用DDR技术实现了速率翻倍。

信号名方向宽度描述
TXD[3:0]MAC→PHY4发送数据总线,DDR模式,上升沿送低4位,下降沿送高4位
RXD[3:0]PHY→MAC4接收数据总线,同样DDR
TX_CLKMAC→PHY1发送参考时钟,频率125MHz(千兆)/ 25MHz(百兆)/ 2.5MHz(十兆)
RX_CLKPHY→MAC1接收参考时钟,由PHY从接收数据恢复
TX_CTLMAC→PHY1发送控制信号,上升沿表示TX_EN,下降沿表示TX_ER
RX_CTLPHY→MAC1接收控制信号,定义同TX_CTL

经验之谈: 我曾经在layout时把TXD和RXD两组信号放得太近,结果串扰导致误码率飙升。所以建议数据线之间至少留3倍线宽间距,并且每组线等长控制在±50mil以内。

1.2 关键时序参数

RGMII的时序要求很严格,尤其是发送侧,MAC必须在时钟边沿前后保持数据和控制信号的有效窗口。我见过不少新手工程师上来就照着数据手册抄延时值,结果板子一跑就挂。咱们得搞明白根源。

1.2.1 建立时间与保持时间

以TX_CLK为例,MAC输出的数据相对于TX_CLK的上升沿和下降沿,必须满足Tsu(建立时间)和Th(保持时间)。通常Tsu要求≥1ns,Th要求≥1ns。但实际上,由于PCB走线和芯片内部路径延迟,这个窗口会缩小。

1.2.2 时钟到数据输出延时

Tco是指时钟边沿到数据输出有效的延时。MAC器件手册会给出最小值和最大值。这个参数直接影响板级时序裕量。我习惯在仿真时把Tco的min和max都跑一遍,看最差情况是否仍然满足PHY的输入窗口。

1.2.3 时钟走线延时与数据走线延时的匹配

RGMII对时钟和数据间的相对延时非常敏感。千兆速率下,一个UI(单位间隔)只有2ns,而时钟占空比抖动、走线长度差都会吃掉裕量。我当年做一个项目,因为TX_CLK比TXD长了10mm,导致眼图闭合,后来加了一段蛇形线才救回来。

避坑指南: 千万不要以为参考时钟和数据线等长就万事大吉。芯片内部封装引线长度不同、输出驱动强度差异,都会引入skew。我建议在做时序预算时,至少预留300ps的margin。

1.3 常见应用场景

RGMII接口几乎统治了中低端以太网设备。你随便打开一个路由器、交换机或开发板,上面多半都能找到RGMII。

  • 家用路由器 / 企业交换芯片: 比如MT7621、RTL8367这类芯片,内部都是RGMII连接MAC和PHY。成本低、走线少,适合多层板。
  • FPGA + PHY组合: 很多FPGA开发板(如Xilinx Zynq、Intel Cyclone V)用RGMII连接外部PHY(如RTL8211、KSZ9031)。我做过一个视频采集卡,就用Zynq + RGMII搞定千兆网口。
  • SoC内部互联: 一些片上系统把MAC和PHY集成在同一个封装内,但接口仍然采用RGMII标准,因为IP核复用方便。

为什么大家都爱用RGMII?

  1. 引脚少:12根线就能跑千兆,GMII需要24根;
  2. 频率适中:125MHz的DDR信号,PCB设计难度适中;
  3. 标准统一:只要遵守RGMII v2.0规范,不同厂商的MAC和PHY可以互连。

但也要注意它的局限。当器件间距超过4英寸时,信号质量会急剧下降。所以远距离互联时,我宁愿换SGMII或者SerDes。

核心逻辑: RGMII的本质是用DDR技术换取引脚数量和PCB面积,代价是更苛刻的时序约束。做设计时,时序预算就是你的生命线。

下面这张图概括了RGMII系统的典型结构,我画的时候把最重要的信号和延时关系标了出来,方便你对照理解。

RGMII系统结构与时序要点 MAC (处理器/FPGA) PHY (RTL8211/KSZ9031) TXD[3:0] (DDR) TX_CTL (EN/ER) TX_CLK (125MHz) RXD[3:0] (DDR) RX_CTL RX_CLK (恢复时钟) 🔑 时序关键点 • 数据与时钟的skew控制:TX_CLK到TXD的走线长度差 ≤ ±50mil • 建立/保持时间:Tsu ≥ 1ns, Th ≥ 1ns(需留裕量) • 时钟占空比:45%~55%,否则DDR采样丢失

你看这张图,发送方向数据(TXD)和时钟(TX_CLK)都是从MAC流向PHY,而接收方向相反。实际调试时,我经常用示波器量TX_CLK和TXD[0]的相对相位,判断是否需要调节内部延时。对,很多MAC芯片内部有可编程延时调整寄存器,比如加0.5ns或1ns,这个后面几章会详细讲。

小技巧: 如果你手头没有高端示波器,可以先用示波器看TX_CLK的占空比,再配合网络分析仪的TDR模式看走线阻抗连续性。我记得有一次做板级调试,就是靠TDR发现了一段阻抗不连续,修正后时序问题就解决了——其实问题根本不在芯片,而在PCB工艺。

好了,这一章先帮你把RGMII的底子打牢。信号定义搞清楚了,时序参数心里有数了,应用场景也了解了,我们后面才能拿网络分析仪去动手校准。记住一句话:RGMII的成败,九成在时序预算,剩下的一成是layout细节。