3. PHY芯片基础

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(管理数据输入输出)
MII接口连接框图 MAC (CPU集成) PHY (外部芯片) TXD[3:0] + TX_EN + TX_ER RXD[3:0] + RX_DV + RX_ER TX_CLK(PHY→MAC) RX_CLK(PHY→MAC) MDC + MDIO(管理总线) CRS + COL(半双工) MII使用独立时钟线,TX_CLK和RX_CLK由PHY提供,频率取决于速率(100Mbps时为25MHz)

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接口连接框图 MAC (CPU集成) PHY (外部芯片) TXD[1:0] + TX_EN RXD[1:0] + CRS_DV REF_CLK(50MHz,MAC或外部提供) MDC + MDIO(管理总线) RMII仅需9~10个引脚,时钟固定50MHz,适合引脚受限的嵌入式SoC设计
时钟注意事项: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)
RGMII接口连接框图(DDR采样) MAC (千兆MAC) PHY (千兆PHY) TXD[3:0] + TX_CTL(DDR) RXD[3:0] + RX_CTL(DDR) TX_CLK(125MHz,MAC→PHY) RX_CLK(125MHz,PHY→MAC) MDC + MDIO(管理总线) DDR采样:时钟上升沿传输低4位(TXD[3:0]低半字节),下降沿传输高4位(TXD[3:0]高半字节) 等效数据速率 = 时钟频率 × 数据宽度 × 2 = 125MHz × 4 × 2 = 1000Mbps

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接口时,可参考以下决策流程:

  1. 确定目标速率:1000Mbps必须选RGMII;100Mbps可选MII或RMII
  2. 评估引脚预算:引脚紧张(如QFP封装SoC)优先RMII或RGMII
  3. 考虑PCB层数:RMII走线少,适合2层板;RGMII需4层以上保证信号完整性
  4. 检查SoC支持:确认MAC外设支持哪些phy-mode,查阅芯片手册
  5. 时钟源可用性:RMII需要50MHz时钟源,RGMII需要125MHz时钟源
实战建议:对于新设计,推荐优先使用RGMII(千兆)或RMII(百兆)。MII因引脚多且不支持千兆,已逐渐被淘汰。在设备树中,phy-mode的字符串必须与驱动支持的枚举值完全匹配,常见值包括:"mii"、"rmii"、"rgmii"、"rgmii-id"、"rgmii-txid"、"rgmii-rxid"。