欢迎关注:飞翔硬件杂谈
如果你在做千兆以太网相关的硬件设计,一定绕不开两个名字:GMII和RGMII。它们都是 MAC 与 PHY 之间的接口标准,一个引脚多但简单直白,一个引脚少却暗藏玄机。RGMII 到底"省"在了哪里?又是如何做到"少一半引脚,同样的带宽"的?本文带你一次看透。
一、先说背景:MAC 和 PHY 之间聊什么?
在以太网硬件架构中,MAC(媒体访问控制层)负责数据链路层的协议处理,PHY(物理层芯片)负责物理信号的编解码和线路驱动。两者之间需要一个接口来传递数据和控制信号。这个接口需要解决三个问题:
- 传数据:TX 方向发出去的数据,RX 方向收进来的数据
- 传时钟:双方需要一个共同的时钟节拍来对齐数据
- 传控制:告诉对方"数据有效""出错了"等状态信息
GMII 和 RGMII 就是两种不同的"接线方案",解决的是同一个问题,但思路不同。
二、GMII:IEEE 标准的"正经"方案
GMII(Gigabit Media Independent Interface)是 IEEE 802.3 标准中定义的千兆以太网 MAC-PHY 接口。
核心参数
参数 | 值 |
|---|---|
数据位宽 | 8 bit |
时钟频率 | 125 MHz |
信号方式 | SDR(单沿采样,仅上升沿) |
带宽 | 125 MHz × 8 bit =1 Gbps |
引脚数(数据+控制) | 约 24 pin |
速率支持 | 10 / 100 / 1000 Mbps |
引脚构成(以 TX 侧为例)
TXD[7:0] :8 条数据线TX_CLK:发送时钟TX_EN:发送使能(高电平表示数据有效)TX_ER:发送错误(高电平表示数据出错)
RX 侧对称:RXD[7:0]、RX_CLK、RX_DV(数据有效)、RX_ER(接收错误)。再加上管理接口 MDC/MDIO,总共约 24 个引脚。
GMII 的特点
优点:时序简单,只在时钟上升沿采样,建立/保持时间窗口充足(整个周期 8ns),PCB 布线约束宽松。
缺点:引脚多。TX 侧 11 个信号引脚,RX 侧 11 个,加上管理接口一共二十多个。对于引脚紧张的主控芯片来说,这是个不小的负担。
三、RGMII:HP 提出的"精简"方案
RGMII(Reduced Gigabit Media Independent Interface)由惠普(HP)提出,是目前千兆以太网中最广泛使用的 MAC-PHY 接口。它不是 IEEE 正式标准,而是行业事实标准。
核心参数
参数 | 值 |
|---|---|
数据位宽 | 4 bit |
时钟频率 | 125 MHz |
信号方式 | DDR(双沿采样,上升沿+下降沿) |
带宽 | 125 MHz × 4 bit × 2 =1 Gbps |
引脚数(数据+控制) | 约 12 pin |
速率支持 | 10 / 100 / 1000 Mbps |
引脚构成(以 TX 侧为例)
TXD[3:0]:4 条数据线TX_CLK:发送时钟TX_CTL:发送控制(一根线复用 EN 和 ER)
RX 侧对称:RXD[3:0]、RX_CLK、RX_CTL。加上 MDC/MDIO,总共约 12 个引脚。
引脚数直接砍掉一半。问题是:少了一半的引脚,带宽怎么没变?
四、核心揭秘:RGMII 如何用更少引脚实现相同功能
RGMII 省引脚靠的是两大机制:DDR 双沿采样 + 控制信号复用。
机制一:DDR 双沿采样——数据线减半(8→4)
这是省引脚的主要原因,TX+RX 合计省下8 个引脚。
GMII 的做法(SDR 单沿):
时钟 125 MHz,每个周期 8ns。GMII只在时钟上升沿采样一次,每次采 8 bit。所以一个周期传 8 bit,需要 8 条数据线。
TX_CLK: ___|‾‾‾‾|____|‾‾‾‾|____|‾‾‾‾|___ ↑ 采样 ↑ 采样 TXD[7:0]: | D0[7:0] | D1[7:0] |RGMII 的做法(DDR 双沿):
同样的 125 MHz 时钟,但 RGMII上升沿和下降沿各采样一次。每次采 4 bit,一个周期采 2 次 = 4 × 2 = 8 bit。
TX_CLK: ___|‾‾‾‾|____|‾‾‾‾|____|‾‾‾‾|___ ↑ ↓ ↑ 上升沿 下降沿 上升沿 TXD[3:0]: |D0[3:0]|D0[7:4]|D1[3:0]|一个 8 bit 字节怎么拆?
上升沿采样:低 4 位
D[3:0]下降沿采样:高 4 位
D[7:4]
两半拼起来,正好是完整的 8 bit 字节。时钟频率没变,数据线少了一半,但每个周期传输的数据量完全一样。
通俗类比:GMII 是一条 8 车道公路,每个绿灯放行一次;RGMII 是一条 4 车道公路,但每个绿灯和红灯切换时都放行一次。同样的时间段内,通过的车辆数相同。
机制二:控制信号复用——控制引脚合并(2→1)
这个机制省下2 个引脚(TX 侧 1 个 + RX 侧 1 个)。
GMII 的做法:
TX_EN(发送使能)和TX_ER(发送错误)是两个独立引脚,各自独占一根线,电平始终有效。
TX_EN: ─────████████████────── ← 独占引脚 1 TX_ER: ─────────────────────── ← 独占引脚 2RGMII 的做法:
合并为一根TX_CTL线,利用 DDR 的思路分时复用:
- 上升沿
时刻:
TX_CTL的值 =TX_EN - 下降沿
时刻:
TX_CTL的值 =TX_ER
TX_CTL: ────████────████────── ← 合为 1 根引脚 ↑EN=1 ↓ER=0 ↑EN=1 上升沿 下降沿 上升沿RX 侧同理:RX_DV+RX_ER→ 合并为RX_CTL一根线。
五、引脚账本:到底省了多少?
下面以 TX+RX 合计(不含 MDC/MDIO 管理接口)做一笔账:
信号类别 | GMII | RGMII | 节省 | 省引脚机制 |
|---|---|---|---|---|
数据线(TXD+RXD) | 16 | 8 | 8 | DDR 双沿采样 |
控制线(EN/ER + DV/ER) | 4 | 2 | 2 | 上升沿/下降沿复用 |
时钟线(TX_CLK+RX_CLK) | 2 | 2 | 0 | 不变 |
合计 | 22 | 12 | 10 | — |
一个千兆以太网接口,从 22 个引脚降到 12 个,省了将近一半。
对于多网口设备(如交换机、路由器),这个节省更加可观。8 口交换机就能省下 80 个引脚,直接降低芯片封装成本和 PCB 层数。
六、RGMII 的代价:不是免费的午餐
RGMII 省了引脚,但也带来了额外约束:
1. 需要 2ns 时钟延迟
DDR 要求在数据信号的中间采样,因此时钟需要相对数据延迟约 2ns(四分之一周期)。这个延迟可以通过两种方式实现:
- PHY 芯片内部延迟
:大多数 PHY 芯片支持内部延迟模式(设备树中配置为
rgmii-id或rgmii-txid/rgmii-rxid),这是最常用的方式 - PCB 走线延迟
:绕线约1.5~2 英寸≈3.8~5cm,对应延迟约 1.5~2ns(FR4 板材信号速度≈15cm/ns),物理上实现延迟
2. 时序约束更严格
双沿采样意味着建立/保持时间窗口只有半个周期(约 4ns),对 PCB 布线等长控制和信号完整性要求更高。数据线和时钟线需要严格等长,走线长度差通常控制在 ±50mil 以内。
3. 不是 IEEE 正式标准
RGMII 由 HP 提出,最新规范为 RGMII v2.0(2002),属行业事实标准;GMII 定义于 IEEE 802.3z-1998 Clause 35Wikipedia
4. 10/100M 模式下的退化
在 100 Mbps 和 10 Mbps 模式下,RGMII 退化为 SDR 模式(只在上升沿采样),数据速率减半以匹配较低带宽需求,时钟分别降到 25 MHz 和 2.5 MHz。
七、实际选型建议
场景 | 推荐 | 原因 |
|---|---|---|
新设计,千兆以太网 | RGMII | 引脚少,主流 PHY 均支持,是当前行业标准 |
引脚非常充裕,追求最简时序 | GMII | 无需时钟延迟,布线约束最宽松 |
需要兼容老芯片 | 看 MAC 支持 | 部分早期 MAC 只支持 GMII |
多网口设备(交换机等) | RGMII | 引脚节省效果成倍放大 |
八、总结
RGMII 就是 GMII 的"精简版"——用 DDR 双沿采样把数据线砍掉一半,再通过控制信号分时复用合并掉冗余引脚,在引脚数减半的前提下实现了和 GMII 完全相同的千兆带宽。
维度 | GMII | RGMII |
|---|---|---|
数据位宽 | 8 bit | 4 bit |
信号方式 | SDR 单沿 | DDR 双沿 |
引脚数 | ~24 | ~12 |
时钟延迟 | 无需 | 需 2ns |
时序复杂度 | 简单 | 较高 |
标准来源 | IEEE 802.3 | 行业事实标准 |
应用现状 | 早期芯片 | 主流方案 |
欢迎关注