硬件寄存器配置:网卡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标准的电平驱动与隔离变压器接口。
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: 载波侦听 / 冲突检测(半双工模式使用)。
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位数据线即可达到千兆速率。
1.3 接口选择对调试的影响
在实际调试中,接口类型直接决定了信号观测点和故障排查路径:
- MII/GMII: 信号线多,但每个信号功能单一,逻辑分析仪抓取后容易解析。调试时重点检查TX_CLK/RX_CLK频率和占空比。
- RMII: 引脚少但REF_CLK必须稳定,且CRS_DV复用信号需要根据数据手册解析其内部状态机。
- RGMII: DDR时序对PCB寄生参数敏感,调试时需用高带宽示波器(≥500MHz)测量眼图,确认建立/保持时间裕量。
📋 调试检查清单(接口部分):
- 确认MAC与PHY配置的接口模式一致(如MAC设为RGMII,PHY也必须为RGMII)。
- 测量时钟频率是否在规格范围内(MII 25MHz±100ppm,RMII 50MHz±50ppm,RGMII 125MHz±50ppm)。
- 检查数据线是否虚焊或短路,特别是RGMII的TXD[3:0]与RXD[3:0]交叉连接。
- 使用示波器观察RGMII的TX_CLK与TXD[0]之间的相对延迟,确保满足芯片datasheet的Tskew要求。