MDIO 是纯粹的控制接口,负责 MAC 与 PHY 之间的参数配置、状态读取;而 MII/GMII/RGMII 是数据通信接口,专门传输以太网帧的实际数据(收发双向),两者分工明确、协同工作,共同完成以太网的完整通信。

一、核心分工:控制 vs 数据

接口类型 核心作用 传输内容 总线特性
MDIO 控制与管理 PHY 配置参数(速率、双工)、状态信息(链路是否连通) 双线串行总线(MDC 时钟 + MDIO 数据),低速
MII/GMII/RGMII 数据收发 以太网帧(前导码、数据、CRC)、同步时钟、使能信号 多线并行总线(含数据、时钟、控制信号),高速

简单说:MDIO 是“指挥通道”(比如告诉 PHY“用1G全双工模式”),MII/GMII/RGMII 是“数据通道”(实际传输网页、文件等数据)。

二、数据接口的差异(MII/GMII/RGMII)

三者都是 MAC 与 PHY 之间的数据接口,核心区别是速率、信号线数量、时序设计,适配不同带宽需求:

  1. MII(Media Independent Interface)

    • 支持速率:10M/100M 以太网
    • 信号线:共 16 根(发送侧 4 根数据 + TXEN/TXER + TXCLK;接收侧 4 根数据 + RXDV/RXER + RXCLK)
    • 特点:低速、信号线多,适合早期百兆以太网设备
  2. GMII(Gigabit MII)

    • 支持速率:10M/100M/1G 以太网(向下兼容 MII)
    • 信号线:共 24 根(发送侧 8 根数据 + TXEN/TXER + GTXCLK;接收侧 8 根数据 + RXDV/RXER + RXCLK)
    • 特点:高速、带宽足,但信号线多,对 PCB 布线要求较高
  3. RGMII(Reduced GMII)

    • 支持速率:10M/100M/1G 以太网(兼容 GMII)
    • 信号线:仅 12 根(发送侧 4 根数据 + TX_CTL;接收侧 4 根数据 + RX_CTL;时钟线 2 根)
    • 特点:通过“边沿复用”技术减少信号线,兼顾高速和布线简便,是目前嵌入式设备(如 ARM 开发板)最常用的接口

三、实际工作流程(MAC + PHY 协同)

  1. 内核通过 MDIO 总线,配置 PHY 的工作模式(比如选择 RGMII 接口、1G 全双工、自动协商);
  2. 数据传输时,MAC 生成以太网帧,通过 RGMII/MII/GMII 接口的 TXD(发送数据)线输出,同时通过 TXEN(发送使能)信号标记数据有效;
  3. PHY 接收数据后,转换为物理电信号(如差分信号),通过网线传输;
  4. 接收数据时,PHY 将网线的电信号转换为数字信号,通过 RGMII/MII/GMII 接口的 RXD(接收数据)线传给 MAC,同时通过 RXDV(接收有效)信号告知 MAC 数据可用;
  5. 内核通过 MDIO 实时读取 PHY 的状态寄存器,获取链路速率、连接状态等信息(比如 ethtool 命令的输出)。


MDIO、MII/GMII/RGMII这三类接口的核心参数、信号定义和关键差异,
我将以清晰的表格+分类说明的形式。

一、核心接口总览表(MDIO + MII/GMII/RGMII)

先通过总表快速掌握三类接口的核心属性,
其中MII/GMII/RGMII归为数据接口,MDIO为控制接口

接口类型 核心用途 支持速率 信号线数量 总线类型 时钟频率/特性 典型应用场景
MDIO PHY配置/状态读取 低速控制 2根 串行 MDC(2.5MHz~25MHz),双向MDIO 所有以太网设备(MAC↔PHY)
MII 以太网数据收发 10M/100M 16根 并行 TXCLK/RXCLK(25MHz/2.5MHz) 早期百兆嵌入式设备
GMII 以太网数据收发 10M/100M/1000M 24根 并行 GTXCLK(125MHz)、RXCLK(125MHz) 千兆以太网设备(PCB布线宽松)
RGMII 以太网数据收发(精简版) 10M/100M/1000M 12根 并行 TXCLK/RXCLK(125MHz/25MHz),边沿复用 ARM嵌入式设备(开发板、工控机)

二、分接口详细说明(信号定义+关键逻辑)

1. MDIO(控制接口:Media Independent Interface Management)

核心信号(仅2根,双向/单向区分明确):

信号名 方向 作用
MDC MAC→PHY 管理时钟信号(MDIO总线的同步时钟,标准速率最高25MHz,常用2.5MHz)
MDIO 双向(MAC↔PHY) 管理数据信号(MAC发送配置命令/读取PHY状态,PHY返回状态数据,半双工)

关键逻辑

  • MDIO采用地址+寄存器的访问机制:MAC通过MDIO发送PHY地址(5位,最多32个PHY)、寄存器地址(5位)和读写命令,PHY响应并返回数据(16位寄存器值)。
  • 内核中对应驱动路径:drivers/net/phy/mdio_bus.c(MDIO总线核心)、drivers/net/phy/phy_device.c(PHY设备管理)。

2. MII(数据接口:Media Independent Interface)

核心信号(分发送、接收、时钟三类,共16根):

信号组 信号名 方向 作用
发送侧 TXD[3:0] MAC→PHY 4位并行发送数据(10M/100M速率下的核心数据总线)
TXEN MAC→PHY 发送使能(高电平表示TXD数据有效)
TXER MAC→PHY 发送错误(高电平表示当前TXD数据存在编码错误)
TXCLK PHY→MAC 发送时钟(100M时25MHz,10M时2.5MHz,由PHY提供)
接收侧 RXD[3:0] PHY→MAC 4位并行接收数据
RXDV PHY→MAC 接收有效(高电平表示RXD数据有效,替代TXEN的接收侧版本)
RXER PHY→MAC 接收错误(高电平表示当前RXD数据存在错误)
RXCLK PHY→MAC 接收时钟(频率与TXCLK一致,由PHY提供)
其他 CRSDV PHY→MAC 载波侦听/接收有效(部分场景复用RXDV)
COL PHY→MAC 冲突检测(半双工模式下的冲突指示)

关键逻辑

  • 4位数据总线决定了100M速率下,需要25MHz时钟(4bit×25MHz=100Mbps)才能满足带宽。
  • 仅支持百兆及以下速率,是早期以太网的标准数据接口。

3. GMII(数据接口:Gigabit MII)

核心信号(在MII基础上扩展为8位数据,共24根):

信号组 信号名 方向 作用
发送侧 TXD[7:0] MAC→PHY 8位并行发送数据(支持千兆速率的核心扩展)
TXEN MAC→PHY 发送使能(与MII逻辑一致)
TXER MAC→PHY 发送错误(与MII逻辑一致)
GTXCLK MAC→PHY 千兆发送时钟(125MHz,由MAC提供,区别于MII的PHY提供时钟)
接收侧 RXD[7:0] PHY→MAC 8位并行接收数据
RXDV PHY→MAC 接收有效(与MII逻辑一致)
RXER PHY→MAC 接收错误(与MII逻辑一致)
RXCLK PHY→MAC 接收时钟(125MHz,由PHY提供)
其他 保留MII的CRSDV/COL 向下兼容MII的冲突检测/载波侦听

关键逻辑

  • 8位数据总线+125MHz时钟(8bit×125MHz=1000Mbps),实现千兆速率。
  • 信号线数量多(24根),对PCB布线的时序和抗干扰要求高,适合工业级设备(而非小型嵌入式板卡)。

4. RGMII(数据接口:Reduced GMII)

核心信号(精简版GMII,通过边沿复用减少信号线,共12根):

信号组 信号名 方向 作用
发送侧 TXD[3:0] MAC→PHY 4位并行发送数据(通过时钟上升/下降沿复用,等效8位数据)
TX_CTL MAC→PHY 发送控制(复用TXEN和TXER,上升沿传TXEN,下降沿传TXER)
TXCLK PHY→MAC 发送时钟(125MHz=千兆,25MHz=百兆,2.5MHz=十兆)
接收侧 RXD[3:0] PHY→MAC 4位并行接收数据(同理边沿复用)
RX_CTL PHY→MAC 接收控制(复用RXDV和RXER,上升沿传RXDV,下降沿传RXER)
RXCLK PHY→MAC 接收时钟(频率与TXCLK一致)

关键逻辑(ARM嵌入式场景的核心优势):

  • 边沿复用技术:在时钟的上升沿和下降沿分别传输1位控制信号/4位数据,实现用4位数据总线达到GMII 8位的带宽,信号线数量减少一半。
  • 是目前ARM开发板(如树莓派、NXP i.MX、瑞芯微RK系列)的标配以太网数据接口,兼顾高速和布线简便。

三、ARM架构下的接口关联逻辑(设备树视角)

在ARM平台的设备树(DTB)中,MDIO和RGMII/MII/GMII是关联配置的,典型逻辑:

  1. MAC控制器节点中,同时声明MDIO总线节点RGMII数据接口节点
  2. MDIO节点通过phy-handle指向PHY设备节点,PHY节点中声明compatible(PHY型号)和reg(PHY地址,MDIO访问用);
  3. 数据接口节点声明引脚复用(如TXD0~TXD3、TX_CTL、TXCLK)和速率配置(如千兆全双工)。

总结

  1. MDIO是控制接口,仅2根线,负责MAC对PHY的配置和状态读取,是所有以太网设备的必备接口。
  2. MII是百兆数据接口,16根线,4位数据总线,仅支持10/100M速率,属于早期标准。
  3. GMII是千兆数据接口,24根线,8位数据总线,支持千兆速率但布线复杂;RGMII是其精简版,通过边沿复用减少信号线,是ARM嵌入式设备的主流选择。