3. PHY芯片基础:PHY芯片功能、MII/RMII/RGMII接口标准介绍
PHY(Physical Layer,物理层)芯片是以太网通信中连接MAC层与物理介质的桥梁。在嵌入式Linux系统中,正确理解PHY芯片的功能及其与MAC之间的接口标准,是进行设备树配置和驱动适配的前提。本节将系统介绍PHY芯片的核心功能、三种主流MAC-PHY接口标准(MII、RMII、RGMII)的电气特性与时序差异。
3.1 PHY芯片的核心功能
PHY芯片位于OSI模型的物理层,负责将MAC层发出的数字信号转换为适合在双绞线、光纤等介质上传输的模拟信号,并执行反向转换。其主要功能模块包括:
| 功能模块 | 说明 | 关键特性 |
|---|---|---|
| 编码/解码 | 将MAC层数据编码为物理介质传输格式(如4B/5B、8B/10B、MLT-3) | 降低直流分量,提供时钟恢复 |
| 串行化/解串行 | 将并行数据转换为串行比特流,或反向转换 | 决定接口数据宽度与速率 |
| 链路检测与协商 | 自动检测链路状态,执行Auto-Negotiation(自动协商) | 协商速率(10/100/1000Mbps)与双工模式 |
| 时钟恢复 | 从接收数据流中提取同步时钟 | 使用PLL(锁相环)实现 |
| MDI接口驱动 | 驱动RJ45连接器,包含隔离变压器和线路驱动 | 支持交叉/直连自动检测(Auto MDI/MDIX) |
| 管理接口 | 通过MDIO/MDC总线与MAC层交换状态和控制信息 | 读取PHY寄存器,配置工作模式 |
开发提示:在设备树中,PHY节点通常通过
reg 属性指定MDIO总线上的PHY地址(0~31),并通过 compatible 属性匹配驱动。理解PHY寄存器(如BMCR、BMSR、PHYID1/2)是调试网络问题的基本功。
3.2 MII/RMII/RGMII接口标准对比
MAC与PHY之间的数据接口标准决定了引脚数量、时钟频率、最大传输速率和PCB布局复杂度。三种主流接口的对比如下:
| 特性 | MII | RMII | RGMII |
|---|---|---|---|
| 全称 | Media Independent Interface | Reduced MII | Reduced Gigabit MII |
| 数据宽度 | 4位(半字节) | 2位 | 4位(DDR双沿采样) |
| 时钟频率 | 25MHz(100Mbps)/ 2.5MHz(10Mbps) | 50MHz | 125MHz(DDR) |
| 最大速率 | 100Mbps | 100Mbps | 1000Mbps |
| 引脚数量(典型) | 16~18 | 9~10 | 12~14 |
| 时钟源 | PHY提供TX_CLK/RX_CLK | MAC或外部提供REF_CLK(50MHz) | MAC提供TX_CLK,PHY提供RX_CLK |
| PCB布局难度 | 中等(引脚多,走线多) | 低(引脚少,适合密集设计) | 中等(需等长匹配,DDR时序要求高) |
| 应用场景 | 旧式100Mbps设计 | 低成本100Mbps嵌入式设备 | 千兆以太网主流接口 |
关键差异:RMII通过将数据宽度减半并固定时钟为50MHz来减少引脚数;RGMII则通过DDR(双数据率)技术在125MHz时钟下实现1000Mbps传输,同时保持4位数据宽度。
3.3 MII接口详解
MII是IEEE 802.3u定义的原始标准接口,提供4位并行数据总线。其信号组包括:
- 数据信号:TXD[3:0](发送数据)、RXD[3:0](接收数据)
- 时钟信号:TX_CLK(发送时钟,PHY提供)、RX_CLK(接收时钟,PHY提供)
- 控制信号:TX_EN(发送使能)、TX_ER(发送错误)、RX_DV(接收数据有效)、RX_ER(接收错误)、CRS(载波侦听)、COL(冲突检测)
- 管理信号:MDC(管理时钟)、MDIO(管理数据输入输出)
3.4 RMII接口详解
RMII(Reduced MII)由RMII联盟定义,旨在减少引脚数量以降低BOM成本和PCB面积。其核心设计思想是:
- 数据宽度减半:从4位减少到2位(TXD[1:0]、RXD[1:0])
- 时钟统一:使用单一50MHz参考时钟(REF_CLK),由MAC或外部振荡器提供
- 控制信号简化:CRS和COL合并为CRS_DV信号
时钟注意事项:RMII要求REF_CLK的精度在50ppm以内,且MAC和PHY必须使用同源时钟。在设备树中,通常通过
clocks 属性指定时钟源,并确保PHY节点与MAC节点共享同一时钟。
3.5 RGMII接口详解
RGMII(Reduced Gigabit MII)是千兆以太网的主流接口标准,由HP公司提出并标准化为IEEE 802.3z。其关键技术是DDR(Double Data Rate)采样:
- DDR技术:在时钟的上升沿和下降沿各传输一次数据,等效数据速率翻倍
- 数据宽度:4位(TXD[3:0]、RXD[3:0]),通过DDR实现8位等效传输
- 时钟频率:125MHz,DDR采样后等效250MHz数据速率
- 控制信号:TX_CTL(发送控制,包含TX_EN和TX_ER)、RX_CTL(接收控制,包含RX_DV和RX_ER)
3.6 接口时序与设备树配置要点
在设备树中,MAC节点通过 phy-mode 属性指定使用的接口标准。不同接口的时序约束和配置参数如下:
| 接口标准 | 设备树 phy-mode | 时钟方向 | 关键时序约束 |
|---|---|---|---|
| MII | "mii" |
PHY提供TX_CLK/RX_CLK | 数据相对于时钟的建立/保持时间≥10ns |
| RMII | "rmii" |
MAC或外部提供REF_CLK | REF_CLK抖动≤50ps,数据与时钟偏差≤2ns |
| RGMII | "rgmii" 或 "rgmii-id" |
MAC提供TX_CLK,PHY提供RX_CLK | DDR模式下数据与时钟偏差≤1ns,需PCB等长匹配 |
设备树示例:RGMII接口的MAC节点配置通常包含内部延迟(rgmii-id表示MAC内部添加TX和RX延迟):
&mac {
pinctrl-names = "default";
pinctrl-0 = <&rgmii_pins>;
phy-mode = "rgmii-id";
phy-handle = <&phy0>;
status = "okay";
mdio {
#address-cells = <1>;
#size-cells = <0>;
phy0: ethernet-phy@1 {
reg = <1>;
compatible = "ethernet-phy-ieee802.3-c22";
};
};
};
3.7 接口选择决策指南
在实际项目中选择MAC-PHY接口时,可参考以下决策流程:
- 确定目标速率:1000Mbps必须选RGMII;100Mbps可选MII或RMII
- 评估引脚预算:引脚紧张(如QFP封装SoC)优先RMII或RGMII
- 考虑PCB层数:RMII走线少,适合2层板;RGMII需4层以上保证信号完整性
- 检查SoC支持:确认MAC外设支持哪些phy-mode,查阅芯片手册
- 时钟源可用性:RMII需要50MHz时钟源,RGMII需要125MHz时钟源
实战建议:对于新设计,推荐优先使用RGMII(千兆)或RMII(百兆)。MII因引脚多且不支持千兆,已逐渐被淘汰。在设备树中,phy-mode的字符串必须与驱动支持的枚举值完全匹配,常见值包括:"mii"、"rmii"、"rgmii"、"rgmii-id"、"rgmii-txid"、"rgmii-rxid"。