MDC MDIO 电气特性与标准
说到 MDC 和 MDIO 的电气特性,很多工程师第一反应就是“查手册”。我个人习惯是先看电压域,再看驱动能力,最后对阈值。顺序反了容易出问题。你想想看,电平都不对,后面测再多波形也白搭。
2.1 电压电平:3.3V 与 1.8V 之争
咱们先解决最直接的问题:MDC/MDIO 到底用 3.3V 还是 1.8V?
IEEE 802.3 规范并没有强制规定单一电压。它只要求信号满足特定的逻辑阈值和驱动强度。说白了,你用 3.3V 或者 1.8V 都可以。但实际项目中,我见过太多因为电平不匹配导致的“幽灵故障”——信号有,通信就是偶尔报错。
为什么会有两种主流电压?简单说:
- 3.3V:老器件、传统 PHY 的标配。噪声容限大,抗干扰好。适合较长走线(>10 cm)。
- 1.8V:低压工艺芯片的偏好。功耗低,但噪声容限也小。走线稍长就容易出眼图闭合。
这里有一个实用判断:如果你的板子上 MAC 是 1.8V,而 PHY 是 3.3V,别指望通过上下拉电阻分压解决问题。用专用的双电源电平转换芯片(比如 TXB0104)最稳。
2.2 输出驱动能力——别小看这几十毫安
驱动能力是指 IO 端口能提供的最大电流。MDC 和 MDIO 的驱动能力直接影响信号上升时间和信号完整性。
IEEE 802.3 要求输出驱动至少能提供:
- MDC:最小 4 mA(3.3V 时)
- MDIO:最小 4 mA(双向,开漏结构)
但这只是最低要求。实际设计中,驱动能力不足会导致:
常见症状:
- MDIO 上升沿变缓 ↔ 时序余量不足
- 挂多个从设备时信号塌陷
- 偶发读写失败(特别是高负载)
我自己的经验是:把驱动能力设置为 8~12 mA 会比较安全。很多芯片的 IO 驱动是可编程的,比如 STM32 的 GPIO 可以配置驱动强度。不建议用默认值,至少设置到中等档位。
举个例子,我调试过一块板子,MDIO 挂了 4 个 PHY,波形一开始还能看,等到焊接温度变化后,驱动不足导致最后一颗 PHY 经常读不到 ID。后来把驱动强度从 4 mA 提到 8 mA,问题消失。嗯,就是差那么几毫安。
2.3 输入阈值——高低电平的判断门槛
输入阈值决定了接收端认为“0”和“1”的电压范围。IEEE 802.3 给出了如下典型值:
| 参数 | 3.3V 域 | 1.8V 域 |
|---|---|---|
| VIH(高电平输入阈值) | min 2.0 V | min 1.17 V |
| VIL(低电平输入阈值) | max 0.8 V | max 0.63 V |
| 噪声容限(VOH - VIH) | 约 0.8 V | 约 0.3 V |
看到没有?1.8V 域的噪声容限只有 0.3V 左右。这就意味着你对信号完整性的要求要比 3.3V 苛刻得多。
避坑指南: 我曾经遇到一个案例,PHY 的 MDIO 引脚输入阈值手册上写的是 1.17V,但实际由于 PCB 走线耦合噪声,MDIO 线上的纹波达到了 200 mV pp。这在 3.3V 系统里完全没问题,但在 1.8V 系统里直接导致阈值抖动,读写失败。后来加了一个 10 pF 电容滤波搞定。
2.4 IEEE 802.3 规范摘录与解读
规范里关于电气特性的核心条款集中在 第 22 条(MII) 和 第 45 条(MDIO 管理接口)。我挑几个必须知道的点:
- MDC 频率:最高 2.5 MHz(也有提到 12.5 MHz 用于增强型)。频率越高,对驱动和阈值要求越严。
- MDIO 上拉电阻:必须在上游端接一个上拉电阻(典型 1.5 kΩ ~ 10 kΩ,取决于电压和负载)。规范要求开漏输出。
- 时序要求:MDC 高电平和低电平最小宽度 160 ns(2.5 MHz 时)。
小技巧: 检查你的 MDC/MDIO 实际波形时,用示波器测量上升时间(10%~90%)应小于 0.4×信号周期。如果上升沿太缓,可能是驱动不足或容性负载太大。
2.5 实际调试中的避坑清单
最后列一份我在现场常用来快速排查电气问题的清单:
- ☐ 确认 MAC 和 PHY 的工作电压相同(或已加电平转换)。
- ☐ 检查 MDIO 上拉电阻是否接对(通常接至 VDDIO)。
- ☐ 用示波器测 MDC/MDIO 信号幅度:3.3V 域应在 3.0V 以上;1.8V 域应在 1.6V 以上。
- ☐ 测 MDIO 低电平是否接近 0V(开漏输出低时不能超过 0.4V)。
- ☐ 检查负载数量:一个 MAC 最多建议挂 32 个 PHY,但实际挂超过 8 个就要考虑加 buffer。
- ☐ 如果读数据偶尔失败,尝试降低 MDC 频率到 1 MHz 以排除 Timing 问题。
还记得我说过的那次 1.8V 系统纹波问题吗?就是靠清单里的第三项——“测信号幅度”——发现的。幅度不够,再查驱动和阈值,问题基本能定位。
画个图帮大家理清关系:规范是根,电压电平、驱动能力、输入阈值是三个支柱,任何一个出问题都会反映到信号质量故障里。排查的时候按这个框架走,不会漏项。