硬件寄存器配置:网卡PHY链路协商中断触发与调试 - 第1节

1.1 PHY芯片在网卡中的核心作用

PHY(Physical Layer,物理层)芯片是网卡中连接MAC(Media Access Control,介质访问控制)层与物理传输介质的桥梁。它负责将MAC层发送的数字信号转换为适合在双绞线、光纤等介质上传输的模拟信号,并反向完成接收信号的解码与恢复。

核心功能归纳:
  • 信号编码/解码: 实现PAM、MLT-3、NRZ等线路编码,提升抗干扰能力。
  • 链路协商(Auto-Negotiation): 自动与对端设备协商最高共同支持的速度(10/100/1000Mbps)与双工模式(半双工/全双工)。
  • 时钟恢复与数据对齐: 从接收信号中提取时钟,完成数据对齐与串并转换。
  • 电气隔离与驱动: 提供符合IEEE 802.3标准的电平驱动与隔离变压器接口。
网卡数据通路:MAC ↔ PHY ↔ 网线 MAC 控制器 MII/RMII 接口总线 PHY 芯片 物理层收发器 RJ45 / 光纤 🔍 调试要点: • 链路协商失败时,首先检查PHY寄存器(如BCM5461的0x01/0x04)状态。 • 接口模式不匹配(如MAC配置为RGMII而PHY输出GMII)会导致无数据。

1.2 MII / RMII / GMII / RGMII 接口详解

MAC与PHY之间的数据接口标准由IEEE 802.3定义,不同速率和引脚数需求催生了多种接口变体。选择哪种接口取决于系统对引脚数、功耗和最高速率的要求。

1.2.1 接口对比总表

接口标准 数据位宽 时钟频率 最大速率 TX/RX引脚数 适用场景
MII 4 bit 25 MHz (100M) / 2.5 MHz (10M) 100 Mbps 7 + 7 传统100M设计,引脚多
RMII 2 bit 50 MHz 100 Mbps 3 + 3 低引脚数嵌入式系统
GMII 8 bit 125 MHz 1000 Mbps 8 + 8 千兆MAC与PHY直连
RGMII 4 bit (DDR) 125 MHz (DDR) 1000 Mbps 4 + 4 千兆低引脚,主流选择
💡 调试经验: RGMII 接口在PCB布线时要求TX_CLK与TX_CTRL等长,且时钟走线长度差控制在±50mil以内,否则易出现建立/保持时间违例,导致链路间歇性断开。

1.2.2 MII 接口信号定义

MII(Media Independent Interface)是IEEE 802.3u定义的100Mbps标准接口,共需约18根信号线。其发送与接收通道独立,支持全双工。

  • TX_CLK / RX_CLK: 发送/接收时钟,由PHY提供(25MHz@100M,2.5MHz@10M)。
  • TXD[3:0] / RXD[3:0]: 4位并行数据总线。
  • TX_EN / RX_DV: 发送使能 / 接收数据有效指示。
  • TX_ER / RX_ER: 发送/接收错误指示(可选)。
  • CRS / COL: 载波侦听 / 冲突检测(半双工模式使用)。
MII 接口信号连接图 MAC PHY TXD[3:0] (4位数据) TX_EN (发送使能) TX_CLK (25/2.5MHz) RXD[3:0] (4位数据) RX_DV / RX_CLK MII 接口共需约18根信号线,适合100Mbps全双工通信

1.2.3 RMII 接口:减少引脚数的优化方案

RMII(Reduced MII)将数据位宽从4位减为2位,时钟频率固定为50MHz,通过双倍数据采样实现100Mbps。发送和接收各只需3根信号线,大幅减少PCB布线压力。

信号名称 方向 说明
REF_CLK MAC → PHY 50MHz参考时钟,由MAC或外部晶振提供
TXD[1:0] MAC → PHY 2位发送数据
TX_EN MAC → PHY 发送使能
RXD[1:0] PHY → MAC 2位接收数据
CRS_DV PHY → MAC 载波侦听/数据有效(复用信号)
⚠️ 常见陷阱: RMII 接口的 REF_CLK 必须同源且同相,若MAC与PHY使用独立晶振,必须保证频率偏差在±50ppm以内,否则会导致数据采样错位。调试时建议用示波器同时测量MAC和PHY侧的REF_CLK,检查相位差。

1.2.4 GMII 与 RGMII:千兆接口的演进

GMII(Gigabit MII)将数据位宽扩展到8位,时钟频率125MHz,实现1000Mbps。但8位数据加控制信号共需约24根线,对高密度PCB设计不友好。RGMII(Reduced GMII)采用DDR(双沿采样)技术,在时钟上升沿和下降沿各传输2位数据,仅需4位数据线即可达到千兆速率。

RGMII 接口 DDR 时序示意图 CLK TXD[3:0] D0 D1 D2 D3 D4 D5 D6 D7 上升沿采样 下降沿采样 上升沿采样 下降沿采样 📐 RGMII 时序约束: • Tskew(时钟到数据偏斜)< 1.5ns @ 125MHz DDR • 建议PCB上CLK走线比数据线长 0~50mil,以补偿芯片内部延迟

1.3 接口选择对调试的影响

在实际调试中,接口类型直接决定了信号观测点和故障排查路径:

  • MII/GMII: 信号线多,但每个信号功能单一,逻辑分析仪抓取后容易解析。调试时重点检查TX_CLK/RX_CLK频率和占空比。
  • RMII: 引脚少但REF_CLK必须稳定,且CRS_DV复用信号需要根据数据手册解析其内部状态机。
  • RGMII: DDR时序对PCB寄生参数敏感,调试时需用高带宽示波器(≥500MHz)测量眼图,确认建立/保持时间裕量。
📋 调试检查清单(接口部分):
  1. 确认MAC与PHY配置的接口模式一致(如MAC设为RGMII,PHY也必须为RGMII)。
  2. 测量时钟频率是否在规格范围内(MII 25MHz±100ppm,RMII 50MHz±50ppm,RGMII 125MHz±50ppm)。
  3. 检查数据线是否虚焊或短路,特别是RGMII的TXD[3:0]与RXD[3:0]交叉连接。
  4. 使用示波器观察RGMII的TX_CLK与TXD[0]之间的相对延迟,确保满足芯片datasheet的Tskew要求。