RGMII与RMII接口选型及硬件验证 - 第1节

1.1 什么是 RGMII?什么是 RMII?

说白了,RGMII 和 RMII 都是芯片与 PHY 之间的「翻译官」。

你想想看,MAC 层跑的数字逻辑跟物理层要送的模拟信号,语言不通啊。这两类接口就是帮它们沟通的。我入行那年,公司还在用老掉牙的 MII 接口——25 根线,布板子像蜘蛛网。后来才慢慢换成 RMII 和 RGMII。

  • RGMII(Reduced Gigabit Media Independent Interface):简化千兆介质无关接口。名字里带「千兆」,速度上限 1000 Mbps。用 12 根信号线,DDR 双沿采样。
  • RMII(Reduced Media Independent Interface):简化介质无关接口。主打百兆,也能跑千兆(但很少见)。只用 6 根信号线,SDR 单沿采样。
核心区别一句话:RGMII 用「时间换带宽」,RMII 用「根数换速度」。

我在一个车载项目中见过有人拿 RMII 强行跑千兆,结果丢包丢到怀疑人生。你想想,50 MHz 时钟单沿采样,DDR 效率差一大截,强行超频只会让时序崩溃。

1.2 发展历史:从并行走到串行

回忆一下,本世纪初的 MII 长啥样?25 根信号线,4 位数据总线,最高 100 Mbps。那时候一块 PCB 上过孔的密度,啧啧。

RMII 在 2000 年左右出现。简化版,数据总线缩到 2 位,时钟从 MAC 侧统一提供。我记得第一次用 RMII 接 DM9000A 芯片,哇,布线简单了太多。

RGMII 则是 2004 年以后才铺开。为了千兆不增线,Hewlett-Packard 推了这个标准。数据线还是 4 位,但时钟双沿都采样。换句话说,250 MHz 时钟配合 DDR,等效 1000 Mbps。我做过一个 FPGA 直连 RGMII 的项目,时序约束调了一周才稳——高频率带来的问题,一个都不会少。

三种接口粗暴对比
接口年代信号线数最大速率采样方式
MII199725100 Mbps单沿
RMII20006100 Mbps单沿
RGMII2004121000 Mbps双沿
别觉得 MII 已经绝迹。老工业控制板你还得修,MII 的时序信号眼图判断,至今是基本功。

1.3 适用场景:什么场合选谁

选型不是拍脑袋。我个人判断依据就三个:速率、布线成本、兼容性。

1.3.1 RMII 的常见战场

  • 百兆以太网产品:比如智能电表、工业传感器。100 Mbps 够用,6 根线走线轻松。
  • 管脚受限的 MCU:有些小封装芯片只能挤出 6 个 IO 给 ETH,RMII 是唯一选项。
  • 低时钟复杂度:RGMII 需要外部提供 125/250 MHz 时钟,RMII 只要 50 MHz。我用过 STM32F4 + LAN8720,直接 MCU 输出 50 MHz,省了一颗晶振。

1.3.2 RGMII 的必选场景

  • 千兆性能:NAS、路由器、交换机、视频传输,1000 Mbps 起步。RMII 在 1000 Mbps 下基本不可用。
  • 长距离布线:RGMII 带内建延时补偿,PCB 走线可以容忍更长绕线。我曾经在一个 12 层板里把 RGMII 数据线绕了 12 cm 依然稳定——换成 RMII 早乱了。
  • 多 PHY 级联:RGMII 的 RXC 与 TXC 相位可独立调整,多路同步容易。我见过一个八口交换机的设计,RGMII 级联不需要额外同步芯片。
别踩的坑:有些国产 PHY 宣称兼容 RGMII,实际只支持 10/100 Mbps 的 RGMII 模式。我吃过亏,板子贴好才发现千兆无法 link up。

1.4 一张图看懂 RGMII 与 RMII 定位

下面这张图是我画的选型逻辑——你遇到一个新项目,按这个思路走,基本不会跑偏。

RGMII vs RMII 选型决策图 需求:需要多大带宽? ≥ 1000 Mbps? RMII 百兆方案 6 线 · 50 MHz · 低功耗 RGMII 千兆方案 12 线 · 125/250 MHz · 需时序调整 管脚 IO 是否紧张? IO 少 → 优先 RMII IO 够 → 选 RGMII 留余量 综合建议:百兆产品且管脚受限用 RMII,千兆或需要大吞吐量时选 RGMII

1.5 避坑指南:我踩过的三个雷

  • 千万别混接差分电平:RGMII 通常是 1.8V/2.5V/3.3V 可选,RMII 几乎都是 3.3V。我曾经把 1.8V 的 RGMII MAC 接到 3.3V 的 PHY,烧了第三颗芯片才反应过来——电平转换不能省。
  • RGMII 的 IDDR 时序约束要精准:我做过一个方案,PCB 长度差 2 mm,RGMII 的 DQS 与数据就发生了正/负沿错位。最后加了一组 skew 调整电阻才搞定。
  • RMII 的 50 MHz 时钟源必须干净:用 MCU 内部 PLL 输出的抖动大,我测过极个别芯片直接以太网无法同步。加个 RC 滤波或换晶体振荡器,一劳永逸。
一句话总结第 1 章:RGMII 是「用频率换线数」,RMII 是「用线数换简单」。选型时先看带宽需求,再看 IO 资源,之后才考虑成本和时钟方案。