1. MII (Media Independent Interface)

  • 适用场景:10/100M,老旧设备。
  • 特点:TX/RX 时钟全由 PHY 提供,控制线独立。
信号名称方向 (MAC视角)描述与功能
TX_CLKInput发送时钟。PHY 提供。25MHz(100M) 或 2.5MHz(10M)。
TXD[3:0]Output发送数据。4位并行数据。
TX_ENOutput发送使能。高电平有效。
TX_EROutput发送错误。指示当前发送的数据帧无效。
RX_CLKInput接收时钟。PHY 提供。频率同 TX_CLK。
RXD[3:0]Input接收数据。4位并行数据。
RX_DVInput接收数据有效。高电平有效。
RX_ERInput接收错误。指示当前接收的数据帧有误。
CRSInput载波侦听。指示介质忙(半双工用)。
COLInput冲突检测。指示发生冲突(半双工用)。
MDCOutput管理时钟
MDIOIn/Out管理数据

2. RMII (Reduced MII)

  • 适用场景:10/100M,引脚受限的嵌入式设备。
  • 特点:时钟统一,控制线合并,引脚最少。
信号名称方向 (MAC视角)描述与功能
REF_CLKInput/Output参考时钟50MHz。可由 MAC 输出,也可由外部晶振输入给 MAC 和 PHY。
TXD[1:0]Output发送数据。2位并行数据。
TX_ENOutput发送使能
RXD[1:0]Input接收数据。2位并行数据。
CRS_DVInput载波/数据有效。复用引脚:同时代表 MII 的 RX_DVCRS
RX_ERInput接收错误。(注:很多简化的 RMII 接口会省略此引脚)。
MDCOutput管理时钟
MDIOIn/Out管理数据

3. GMII (Gigabit MII)

  • 适用场景:10/100/1000M,主要是芯片内部逻辑或 FPGA,PCB 走线极少用。
  • 特点双发送时钟(这是最容易搞错的地方)。
信号名称方向 (MAC视角)描述与功能
GTX_CLKOutput千兆发送时钟125MHz。仅在 1000M 模式下使用,由 MAC 产生。
TX_CLKInput百兆/十兆发送时钟。25MHz/2.5MHz。仅在 10/100M 模式下使用,由 PHY 产生 (为了兼容 MII)。
TXD[7:0]Output发送数据。8位并行数据。
TX_ENOutput发送使能
TX_EROutput发送错误
RX_CLKInput接收时钟。PHY 提供。125MHz(1000M) / 25MHz(100M) / 2.5MHz(10M)。
RXD[7:0]Input接收数据。8位并行数据。
RX_DVInput接收数据有效
RX_ERInput接收错误
CRSInput载波侦听
COLInput冲突检测
MDCOutput管理时钟
MDIOIn/Out管理数据

4. RGMII (Reduced Gigabit MII)

  • 适用场景:10/100/1000M,当前最主流接口。
  • 特点:DDR 双边沿采样,控制信号高度复用,无 COL/CRS。
信号名称方向 (MAC视角)描述与功能
TXC (TX_CLK)Output发送时钟。MAC 提供。125M/25M/2.5M。注意配置 Internal Delay
TXD[3:0]Output发送数据。4位。
1000M时:DDR模式 (上升/下降沿均传输)。
10/100M时:SDR模式 (仅上升沿)。
TX_CTLOutput发送控制 (复用)。
上升沿 = TX_EN
下降沿 = TX_EN XOR TX_ER
RXC (RX_CLK)Input接收时钟。PHY 提供。频率同 TXC。注意配置 Internal Delay
RXD[3:0]Input接收数据。4位。
1000M时:DDR模式
10/100M时:SDR模式。
RX_CTLInput接收控制 (复用)。
上升沿 = RX_DV
下降沿 = RX_DV XOR RX_ER
MDCOutput管理时钟
MDIOIn/Out管理数据

BSP 开发者速记口诀

  1. 时钟是谁给的?
    • MII: 全是 PHY 给。
    • RMII: 大家听同一个(外部或内部 Ref)。
    • RGMII: 谁发数据,谁给时钟 (Source Synchronous)。
  2. GMII 的坑?
    • 别忘了它有两个 TX 时钟脚,一个跑千兆(MAC给),一个跑百兆(PHY给)。
  3. 为什么不通?
    • 1000M: 查查是不是没开自动协商?
    • RGMII: 查查设备树里的 rx-internal-delay 加了吗?