1. MDC/MDIO 接口概述
1.1 什么是 MDC/MDIO?
说白了,MDC 就是一根时钟线,MDIO 是一根数据线。它们俩组成了一个最简单的两线串行管理接口,专门用来“遥控”以太网 PHY 芯片的内部寄存器。
我个人习惯把这个接口想象成一个小型的 I²C,但协议更简单:
- MDC(Management Data Clock) —— 由 MAC 侧或 CPU 侧提供,频率最高到 12.5 MHz(实际常用 2.5 MHz,因为很多旧 PHY 扛不住太快)。
- MDIO(Management Data Input/Output) —— 双向半双工数据线。写操作时 MAC 控制数据,读操作时 PHY 在第 2 个“转向时钟”后驱动数据。
我记得刚入行那会儿,把 MDC 和 MDIO 当成普通 GPIO 去拉,结果死活读不回 PHY 的 ID 寄存器。后来才发现,MDIO 帧有严格的起始码、操作码、PHY ADDR、REG ADDR、TA 周期,一个时序不对,PHY 就罢工。
一个标准的 MDIO 帧长 64 个时钟周期(读)或 64 个(写),结构如下:
帧格式(读操作):
| PRE(32) | ST(2) | OP(2) | PHY_ADDR(5) | REG_ADDR(5) | TA(2) | DATA(16) |
PRE: 全1,连续32个“1”
ST : 01
OP : 10(读)/ 01(写)
TA : 前1位高阻,后1位PHY拉低(读时)
嗯,这里要注意:TA 周期的第一个时钟,对读操作来说是“转向时间”,MDIO 线由 MAC 释放为高阻,PHY 必须在那之后才能驱动。很多国产 PHY 在这个时序上卡得比较紧,我曾经碰到过换上某款国产芯片后读数据总错位,最后不得不在 FPGA 里把 TA 周期延长了半个时钟才稳定。
1.2 应用场景:以太网 PHY 管理
MDC/MDIO 几乎出现在所有需要配置或监控以太网 PHY 的场合。你想想看,从家用路由器到工业交换机,再到汽车里的车载以太网,都有它的影子。
- 速率协商:通过 MDIO 写 PHY 的 AN 寄存器,让 PHY 自动协商 10/100/1000M 和双工模式。
- 链路状态监测:读 Status 寄存器(地址 1)的第 2 位,判断 Link 是否 Up。
- 故障排查:读 PHY 的 Specific Status 寄存器,获取 CRC 错误、码型错误、极性翻转等细节。
- 低功耗模式:通过 MDIO 写 Power Down 位来让 PHY 休眠。
- 环回测试:置位 PHY 的 Loopback 位,验证数据通路。
我在项目中遇到过最典型的一次:某款 4 端口交换芯片,一上电只有 2 个口能 Link 上,另外 2 个死活不行。后来拿示波器抓 MDC/MDIO 波形,发现在复位后 CPU 没有等 PHY 初始化完成就去写寄存器,写了也白写。加了一个 50ms 延时,问题立刻消失。
调试 MDC/MDIO 时,先把速率降到 500 kHz 左右,这样可以减少信号反射和振铃的影响。等通信稳定了再往上提频率。
1.3 物理层与管理层的区别
很多新手容易把这俩搞混。其实它们处在完全不同的逻辑层次:
| 对比项 | 物理层(PHY 核心) | 管理层(MDC/MDIO 接口) |
|---|---|---|
| 功能 | 负责模拟信号的编解码、时钟恢复、线缆驱动 | 负责对 PHY 内部的寄存器进行读写 |
| 信号类型 | 差分对(如 RX±、TX±),通常是高速模拟信号 | CMOS 数字电平(MDC, MDIO) |
| 故障表现 | 丢包、误码、链路不稳、眼图闭合 | 读回数据全 0、全 1、总线冲突、设备无应答 |
| 调试工具 | 示波器(高速差分探头)、误码仪、眼图仪 | 逻辑分析仪、普通示波器、MDIO 总线抓拍 |
说白了,物理层管的是“能不能传得好”,管理层管的是“怎么配置它、怎么知道它好不好”。我经常把 PHY 芯片比作一个收音机:物理层是天线和功放电路,管理层就是收音机面板上的旋钮和指示灯。你旋钮坏了(MDIO 通信故障),并不代表收音机放不了歌(PHY 仍然能跑默认配置下的数据),但你想调台就只能靠砸机器了。
物理层故障会导致数据噪声或中断;管理接口故障只会让你失去“遥控”能力,但 PHY 可能还在用默认配置继续工作。所以排查时一定要先分清:是 PHY 不能正常传数据,还是你没法读到它内部状态?
不要以为 MDIO 读到一个全 0 的寄存器就一定是 PHY 坏了。先把 MDC 时钟频率降低,再用逻辑分析仪抓一下帧格式是否合规。我踩过坑:某款 PHY 的 datasheet 说 MDIO 默认上拉,实际板上没加,结果读回来全是 0,折腾了两天才发现。
1.4 本章知识体系概览
下面的 SVG 展示了 MDC/MDIO 在整个以太网系统中的位置,以及它如何把 MAC 侧、管理总线、PHY 寄存器、物理介质串在一起。