以太网之MDIO

组里新买了一款开发板,打算借此重温基本外设的开发。本系列将结合相关芯片手册及个人理解,对 FPGA 开发以太网进行整理和记录。


1. MDIO 简介

MDIO(Management Data Input/Output)是以太网物理层设备(PHY)和 MAC 之间的管理接口,主要用于配置和监控 PHY 设备的状态。MDIO 通常与 MDC(Management Data Clock)一起使用,MDC 提供时钟信号,而 MDIO 用于数据传输。通常情况下,PHY 芯片在默认状态下也可正常工作,因此在进行以太网通信实验时,对 MDIO 接口的配置并非必须。

  • ETH_MDC:为 ETH_MDIO 提供时钟,数据手册[1]中规定其最大时钟频率不得超过 12.5MHz。
  • ETH_MDIO:双向数据引脚,支持数据的发送与接收。
MDIO 接口功能示意图

1.1 MDIO 通信帧格式

MDIO 接口的读写通信帧格式如下表所示:

字段 读操作帧结构 写操作帧结构
Preamble 32 位逻辑 "1" 32 位逻辑 "1"
ST 01(帧开始信号) 01(帧开始信号)
OP 10(读操作码) 01(写操作码)
PHYAD 5 位 PHY 地址(AAAAA) 5 位 PHY 地址(AAAAA)
REGAD 5 位寄存器地址(RRRRR) 5 位寄存器地址(RRRRR)
TA Z0(高阻切换) 10(固定输出)
DATA 16 位读取数据(高位在前) 16 位写入数据(高位在前)
IDLE 高阻态(默认上拉至高电平) 高阻态(默认上拉至高电平)

1.2 关键字段说明

  • Preamble:32 位前导码,用于同步 PHY 芯片。
  • ST:帧起始标志,固定为 01
  • OP:操作码,10 表示读,01 表示写。
  • PHYAD:5 位 PHY 地址,支持 MAC 连接多个 PHY 芯片。
  • REGAD:5 位寄存器地址,指定目标寄存器。
  • TA:方向切换标志。读操作时,MDIO 由 MAC 驱动切换为 PHY 驱动;写操作时固定为 10
  • DATA:16 位数据,传输时高位在前。
  • IDLE:空闲状态,默认通过上拉电阻维持高电平。

1.3 时序详解

读操作时序

MDIO 读操作时序图

以从 PHY 地址 0x01 的寄存器 0x00 读取数据为例:

  1. MAC 驱动 MDIO 发送前导码、操作码、地址等信息。

  2. TA 阶段:MDIO 引脚切换为由 PHY 驱动,第一个 TA 位为高阻态,第二个 TA 位若为低电平,则 PHY 响应成功并输出数据;若为高电平,则响应失败。

  3. 数据采集:PHY 在 MDC 时钟上升沿采集数据,为确保数据稳定传输,MAC 在 MDC 下降沿更新 MDIO 引脚数据。当 MDIO 引脚切换至PHY驱动时,MDIO 数据于 MDC 时钟下降沿更新,故 MAC 需在 MDC 时钟上升沿进行数据采集。

  4. 读操作结束后,MAC 将 MDIO 引脚置为高阻态,此时由外部上拉电阻将其拉高,使 MDIO 接口进入空闲状态。

写操作时序

MDIO 写操作时序图

以向 PHY 地址 0x01 的寄存器 0x00 写入数据 0x1340 为例:

  1. MAC 全程驱动 MDIO,依次发送帧头、地址和数据。

  2. PHY 于 MDC 时钟上升沿采集数据,为确保数据稳定传输,MAC 在 MDC 下降沿更新 MDIO 引脚数据。

  3. 写操作完成后,MAC 将 MDIO 引脚置为高阻态,借助外部上拉电阻将其拉高,使 MDIO 接口进入空闲状态。


1.4 PHY 地址配置

PHY 地址由硬件电路中的 PHYAD[2:0] 引脚电平决定。开发板原理图如下所示,PHY 地址被配置为 5'h01

PHY 地址配置说明
FPGA 开发板原理图

1.5 复位方式

RTL8211 PHY 芯片支持两种复位方式:

  1. 硬件复位:通过 PHYRSTB 引脚保持 10ms 低电平实现。但开发板上该引脚被上拉,无法使用。

  2. 软件复位:向寄存器 0x00 的 Bit[15] 写入 1,复位完成后该位自动清零。

硬件复位电路设计
软件复位寄存器配置

1.6 常用寄存器

BMCR(基础模式控制寄存器,地址 0x00

BMCR 寄存器上
BMCR 寄存器下
  • Bit[15]:软件复位位(写入 1 触发)。
  • Bit[14]:环回模式使能(1 启用)。
  • Bit[6/13]:速率选择(仅在自动协商关闭时有效,10 ==> 1000Mb/s;01 ==> 100Mb/s;00 ==> 10Mb/s)。
  • Bit[12]:自动协商使能(1 启用)。
  • Bit[9]:重启自动协商(1 触发)。

BMSR(基础模式状态寄存器,地址 0x01

BMSR 寄存器
  • Bit[5]:自动协商完成标志(1 表示完成)。
  • Bit[2]:链路状态(1 表示连接成功)。

PHYSR(PHY 状态寄存器,地址 0x1A

PHYSR 寄存器
  • Bit[5:4]:连接速率(10 ==> 1000Mbps,01 ==> 100Mbps,00 ==> 10Mbps)。

2、参考资料


以太网之MDIO
https://yao-jiangyu.github.io/以太网之MDIO/
作者
小姚
发布于
2025年1月9日
许可协议