MAC ,PHY, MII
引言
在以太网硬件实现中,MAC(媒体访问控制)和 PHY(物理层收发器)是最核心的两个模块,它们共同完成了 OSI 七层模型中最低的两层——数据链路层和物理层的功能。本文将围绕 MAC、PHY、MII 三者的职责、工作流程以及它们之间的接口关系展开详细说明,帮助读者系统地了解以太网卡内部的工作机制,并在实际设计或调试时提供参考。
PHY 详解
基本职责
PHY 负责电气信号的转换、线路状态、数据硬编码等。
发送流程
PHY 在发送数据的时候,收到 MAC 过来的数据(对 PHY 来说,没有帧的概念,对它来说,都是数据而不管什么地址,数据还是 CRC),每 4bit 就增加 1bit 的检错码,然后把并行数据转化为串行流数据,再按照物理层的编码规则(10Based‑T 的 NRZ 编码或 100based‑T 的曼彻斯特编码)把数据编码,再变为模拟信号把数据送出去。
接收流程
收数据时的流程反之。
细节补充
- 电气转换:PHY 将 MAC 提供的 8‑bit 并行字节(通常是 GMII、MII 或 RGMII 接口)转换为符合以太网物理层标准的串行比特流。
- 线路状态监测:PHY 通过内部的链路检测电路实时监测链路是否存在、速率是否匹配以及是否出现错误(如碰撞、信号衰减)。
- 硬编码:在 10 Mbps 以太网中常用的 4B/5B 编码(每 4bit 增加 1bit 检错码)可以提升传输可靠性;在 100 Mbps 中则采用曼彻斯特编码,以保证时钟同步。
MAC 详解
基本职责
MAC 负责组帧、CRC 校验、与 IP 协议层的接口,寻址机制等。
关键功能
- 组帧:MAC 将上层协议(如 IP)产生的报文封装成以太网帧,添加目的 MAC 地址、源 MAC 地址以及帧类型字段。
- CRC 校验:在帧尾部加入 32 位循环冗余校验码(FCS),用于接收端的完整性验证。
- 接口:MAC 与上层协议栈通过标准的驱动接口(如 Linux 的 netdev)交互,同时通过 PCI 总线与系统主板通信。
硬件实现
以太网卡中数据链路层的芯片称之为 MAC 控制器。很多网卡的这两个部分是做到一起的。
连接关系
他们之间的关系是 PCI 总线接 MAC 总线,MAC 接 PHY,PHY 接网线(当然也不是直接接上的,还有一个变压装置)。
细节补充
- 帧过滤:MAC 控制器内部通常具备硬件过滤功能,只接受目的 MAC 地址匹配或广播地址的帧,从而降低 CPU 负载。
- 全双工/半双工:MAC 能够根据 PHY 报告的链路状态自动切换工作模式,支持全双工无碰撞的高速传输。
- 速率协商:在自动协商阶段,MAC 会通过 MII 接口发送协商帧,告知对端支持的速率和模式,PHY 再根据协商结果配置相应的物理层参数。
MII 接口
定义与作用
MII (Media Independent Interface) 是介质无关接口。40 针。MII 类似于 10 Mbps 以太网的连接单元接口(AUI)。
标准化
MII 层定义了在 100BASE‑T MAC 和各种物理层之间的标准电气和机械接口,这种标准接口类似于经典以太网中的 AUI,它允许制造厂家制造与介质和布线无关的产品,利用外接 MAU 去连接实际的物理电缆。
与 AUI 的区别
MII 和 AUI 的电气信号是不同的,AUI 信号具有较强的、能驱动 50 米电缆的能力,而 MII 的信号是数字型的,只能驱动 0.5 米电缆。MII 采用一个类似于 SCSI 连接器的 40 芯小型连接器。
常见变体
- GMII(Gigabit MII)用于 1 Gbps 以太网,针脚数为 9 × 2 + 1(共 18 针),兼容 MII。
- RGMII(Reduced GMII)通过降低信号频率和使用双向数据线,实现更高的集成度。
- RMII(Reduced MII)将信号线数从 16 降至 8,适用于资源受限的嵌入式系统。
选型建议
在设计板级以太网时,如果目标速率为 10/100 Mbps,推荐使用标准 MII 或 RMII;若需要 1 Gbps,则应选用 GMII/RGMII。注意检查 PHY 芯片的兼容性以及 PCB 布线对信号完整性的影响。
实际应用与调试要点
- 链路检测:使用
ethtool或 PHY 的寄存器读取功能,确认 PHY 已经成功检测到对端链路并完成速率协商。 - 信号完整性:在 PCB 设计阶段,保持 MII/RMII 信号对称走线,避免跨阻抗不匹配导致抖动。
- CRC 错误排查:如果出现大量 CRC 错误,首先检查 PHY 的电气连接(如 RJ45 插头、磁性耦合器)以及是否存在外部干扰。
- 功耗管理:在低功耗场景下,可通过 PHY 的节能模式(EEE)降低空闲时的功耗,MAC 需要配合相应的唤醒机制。
小结
- MAC 与 PHY 分别承担数据链路层和物理层的核心职责,二者通过标准化的 MII 接口实现互联。
- PHY 负责电气信号的转换、线路状态监测以及硬编码,发送时每 4bit 增加 1bit 检错码并进行 NRZ 或曼彻斯特编码;接收时则逆向处理。
- MAC 负责组帧、CRC 校验、与 IP 层的接口以及寻址机制,常见实现为 PCI 总线 → MAC 总线 → PHY → 网线(含变压装置)。
- MII 作为介质无关接口,提供 40 针的数字信号连接,兼容多种物理层实现,且与传统 AUI 在驱动能力和信号类型上有所区别。
通过对这三者的深入了解,工程师可以在硬件选型、板级设计以及系统调试阶段做出更合理的决策,提升以太网子系统的可靠性与性能。