2、RGMII接口介绍

RGMII,全称 Reduced Gigabit Media Independent Interface,说白了就是吉比特以太网的简化版媒体独立接口。为什么会有它?早期以太网接口(比如 GMII)数据线一大堆,板上布线密密麻麻,你想想看,DDR 走线都够烦了,再加几十根信号线谁受得了。RGMII 就把数据线砍掉一半,用双沿采样来弥补,嗯,这是个很聪明的做法。

我入行那会儿,还用过纯 GMII 的芯片,板子上走线走到怀疑人生。后来换成 RGMII 才发现,原来接口也可以这么清爽。不过,清爽归清爽,它对时序和 PCB 材料的要求反而更高了。这就是我们这节课要聊的核心。

2.1 RGMII 信号定义

RGMII 一共就 12 根信号线?是不是比你想的少?来,我列个表,看一眼就清楚:

信号名方向位宽说明
RXCPHY → MAC1接收时钟,125 MHz(千兆)
RXD[3:0]PHY → MAC4接收数据,DDR 双沿采样
RX_CTLPHY → MAC1接收控制(DDR:高电平有效 + 起始位)
TXCMAC → PHY1发送时钟,125 MHz
TXD[3:0]MAC → PHY4发送数据,DDR 双沿采样
TX_CTLMAC → PHY1发送控制(DDR)

注意,RGMII 没有独立的 TX_EN 和 TX_ER 分开走,而是把控制信息编码到 TX_CTL 信号里,利用 DDR 的两个沿分别传递使能和错误标志。我曾经在一个项目里,就是因为没搞懂这个编码,调试了好几天才发现是 PHY 的时钟相位配置错了。嗯,这种坑,踩过一次就记住了。

💡 实战技巧: 多数 PHY 芯片支持 RGMII ID 模式(内置 2 ns 延时),也支持板级延迟走线。你用哪种,先看 Datasheet 的寄存器描述,别上来就盲调。

2.2 时序要求

RGMII 最大的挑战在哪?时钟与数据的相对关系。因为它是双沿采样,125 MHz 时钟 → 250 MHz 数据率,一个 bit 的时间才 4 ns。你想想,PCB 走线哪怕多 0.5 ns 的偏移,眼图就裂了。

标准规定:对于发送方向(MAC → PHY),TXC 的上升沿和下降沿要对齐 TXD 和 TX_CTL 的切换沿。但实际中,PHY 往往要求 TXC 比数据提前 1~2 ns(内部采样需要建立时间)。所以,MAC 侧最好能提供 中心对齐 的时序——时钟沿在数据稳定区的中间。

接收方向(PHY → MAC)呢?PHY 会输出一个时钟沿和数据切换沿对齐的 signal。这就要求 MAC 内部做延迟(或板级串阻+走线延迟)来重新建立中心对齐。我见过不少板子,直接把 RXC 绕了 1000 mil 蛇形线来调延迟——这种土办法虽然能工作,但 PCB 材料变了(比如从 FR4 换到高频材料),延迟量全得重新计算。

来看这张图,帮你理清 RGMII 的时钟数据关系:

RGMII 时序 & 信号结构 TXC / RXC (125 MHz) TXD[3:0] / RXD[3:0] TX_CTL / RX_CTL 双沿采样 (DDR) 时钟上升沿采样低4位 时钟下降沿采样高4位 RX_CTL 编码示例 上升沿:TX_EN · 下降沿:TX_ER 时钟对齐方式 发送:沿对齐(需内部/板级延迟) 关键:PCB 走线延迟控制在 ±0.5 ns 以内,材料 DK 值影响信号传播速度
🔑 核心管控点: RGMII 的时序裕量只有 1~2 ns。如果你用的 PCB 材料 DK 值波动大(比如普通 FR4 的 DK 在 4.2~4.8 之间),不同批次的 PCB 延迟可能差出 10%~15%,这对 RGMII 来说足以致命。

2.3 电压电平

RGMII 的电压电平,传统上是 3.3V LVCMOS。但后来很多 SoC 和 PHY 都往低电压走,就出现了 2.5V 和 1.8V 版本。你设计前一定要查手册,不信的话,你拿 3.3V 去接 1.8V 的管脚,大概率会冒烟——我当年第一块板子就是这么报废的,哎,说多了都是泪。

常用的电平标准我列一下:

电平标准VOH (min)VOL (max)VIH (min)VIL (max)常见场合
3.3V LVCMOS2.4 V0.4 V2.0 V0.8 V传统 PHY,FPGA I/O bank 3.3V
2.5V LVCMOS1.8 V0.4 V1.7 V0.7 V中低压 SoC,部分 Marvell PHY
1.8V LVCMOS1.35 V0.45 V1.17 V0.63 V低功耗设计,RGMII 2.0

这里有个坑:电平转换。如果你 MAC 是 1.8V,PHY 是 3.3V,不能直接连!得加电平转换芯片,或者用电阻分压+钳位二极管。我习惯在 TX 信号上加 33 Ω 串阻,既能做阻抗匹配,也能限制过冲——尤其是在跨越电平域时,串阻能救命。

⚠️ 曾经有个惨痛教训: 我为了省一个电平转换芯片,用了几颗电阻分压去接 1.8V 的 MAC 和 3.3V 的 PHY。结果 PHY 输出的高电平直接冲击 MAC 的接收管脚,几天后 MAC 端 I/O 就烧了。从那以后,我再也不敢在 RGMII 上省电平转换。

另外,RGMII 的电压阈值还跟 PCB 材料的介电损耗有关?别急,我们在后面的章节会展开讲。但先记住一个结论:材料的高频损耗会导致信号幅度衰减,尤其在 125 MHz 以上的频率,如果 PCB 的 Df(损耗因子)太大,接收端的 VOH 可能降到 VIH 以下,这时候即使你时序调好了,数据也读不对。

小结一下