MDIO (Management Data Input/Output)

1. MDIO 简介

wiki 中这样定于 MDIO(Management Data Input/Output)MDIO 是 IEEE 802.3 标准定义一种两线以太网串行总线用于 MII(Media Independent Interface), 有时关于 MDIO 我们还会说到 SMI(Serial Management Interface) 或者 MIIM(Media Independent Interface Management)。SMI/MDIO 协议用来管理 MAC(Media Access Controller)PHY(Physical) 两个网络层之间的数据传输。 控制 MDIO 总线的设备称为 STA(Station Management Entity) 而被 MDIO 总线管理的设备称为 MMD(MDIO Manageable Device)

MDIO 上层是 MII 其有两个接口: 数据接口连接以太网 MAC 层, 用以发送和接收以太网帧数据; 另外一个 PHY 管理接口了, 也就是我们所说的 MDIO 接口。

MMD 一般是指 PHY 设备这类 MDIO 从设备, MDIO 接口会连接控制单元控制 PHY 设备以及获取其状态 (读写寄存器)。 每个 PHY 设备能在执行操作之前监视, 在执行操作时则可通过寄存器监视其状态。 这些寄存器提供了状态和控制信息, 包括 link status, speed ability and selection, power down for low power consumption, duplex mode (full or half), auto-negotiation, fault signalling, loopback。 MDIO 协议的作用就是配置 PHY 层所需要的接收/发送的参量。

MDIO interface layout
MDIO interface layout

前述所说, MDIO 是一种双线协议, 其接口由两种信号构成:

  • MDIO Data Clock(MDC): 由 MAC 设备驱动的连接到 PHY 设备的时钟信号。
  • MDIO Data: 双向的数据传输, 所有的设备都依据 MDC 同步 (synchronous) 传输。

虽然 MDIO 的是一种最高仅有 2.5 MHz 的低速总线 (最新的 DP83640 已经能支持 25 MHz), 最开始是由 IEEE 802.3 的 Clause 22 定义, 后为了满足对 10G 以太网的设备需求在 IEEE 802.3ae 定义了 Clause 45。 对于 MDIO 总线而言其仅有一个主设备, 但能有多达 32 个 PHY 从设备。

MDIO 主从设备的控制器有不同的协议适用要求:

  • MDIO master controller: Clause 22 和 Clause 45 均可
  • MDIO slave controller: Clause 22
  • MDIO slave controller: Clause 45

2. Clause 22

Clause 22 format format
Clause 22 format format

Clause 22 的帧格式只允许 5 bit 物理层地址和寄存器地址, 这限制了 STA 可以连接的 MMD 的数量。 此外,Clause 22 MDIO 只支持限压 5V 的设备且不支持多设备的 PHY。

3. Clause 45

Clause 45 format format
Clause 45 format format

Clause 45 更改了寄存器的读写模式, 不同于 Clause 22 将寄存器读写数据以及地址都放在一个独立帧, Clause 45 分成了两帧进行传输, 第一帧为地址帧确定 MMD 和 寄存器, 第二帧为数据帧进行数据的读写。 这种设计不仅向后兼容 Clause 22, 并且将地址从 5 bit 扩展到了 16 bit, 使得寄存器的访问数量从 32 个增加到了 65535 个。 另外 Clause 45 支持 32 个端口, 每个端口都能支持 32 个 MMD 设备。

4. MDIO 与 PHY 与 NIC

网卡 (NIC) 工作在 OSI 的最后两层, 物理层和数据链路层

  • 物理层 定义了数据传送与接收所需要的电与光信号、 线路状态、 时钟基准、 数据编码和电路等, 并向数据链路层设备提供标准接口。
  • 数据链路层 则提供寻址机制、 数据帧的构建、 数据差错检查、 传送控制、 向网络层提供标准的数据接口等功能。 以太网卡中数据链路层的芯片称之为 MAC 控制器。

物理层的芯片称之为 PHY。 IEEE-802.3 标准定义了以太网 PHY。 包括 MII(Media Independent Interface) 子层, PCS(Physical Coding Sublayer)PMA(Physical Medium Attachment) 子层, PMD(Physical Medium Dependent) 子层, MDI(Medium Dependent Interface) 子层, 符合 IEEE-802.3k 中用于 10BaseT 和 100BaseTX 的规范。

PHY 和 MAC 之间通过 IEEE 定义的标准的 MII(Media Independent Interface) 连接 MAC 和 PHY。 MII 传递了网络的所有数据和数据的控制。 以太网接口实质是 MAC 通过 MII 总线控制 PHY 的过程。 按照前述内容可知, IEEE 定义了 MDIO 总线服务于 MII 用以与 PHY 的通信。

5. 参考