1. 这不是“接口列表”,而是一张以太网物理层的通关地图
你拆过一块工业控制板,发现 PHY 芯片旁边密密麻麻布着十几根走线,标着 TXD0~3、RXD0~3、TX_CTL、RX_CTL、TX_CLK、RX_CLK……你查 datasheet,看到 MII、RMII、GMII、RGMII 几个缩写像密码一样反复出现;你翻原理图,发现 PHY 和 MAC 之间夹着一个磁性元件,标着 “1:1 T1” 或 “1:2.5”,旁边还写着 “RJ45 Connector”;你调试时发现千兆速率下眼图畸变严重,示波器上 CLK 和 DATA 边沿对不齐,但换成百兆就稳如老狗——这些不是孤立现象,它们全在一张图上:以太网物理层信号链的完整拓扑结构。
MII、RMII、GMII、RGMII 不是四个并列的“接口标准”,而是同一根信号链在不同带宽、不同集成度、不同 PCB 约束下的四种演化形态。PHY 不是“黑盒子”,它是信号链的枢纽,一边对接数字逻辑(MAC),一边对接模拟通道(变压器+RJ45);网络变压器不是可有可无的“隔离器件”,它是阻抗匹配、共模噪声抑制、直流偏置隔离的三重执行者;RJ45 插座更不是简单接头,它的引脚定义、内部绕线结构、屏蔽壳接地方式,直接决定 ESD 防护等级和辐射发射水平。我做过 7 款不同速率的以太网硬件设计,从百兆工控模块到千兆视频采集卡,踩过的坑几乎都源于对这张图理解得不够深——比如把 RGMII 的 TX_CLK 当成普通时钟接进 FPGA 的全局时钟引脚,结果时序收敛失败;比如用百兆变压器硬带千兆信号,导致眼图张开度不足 0.3 UI;比如 RJ45 的屏蔽壳只点焊单点,EMC 测试在 80MHz 频段超标 12dB。这篇总结,就是我把这根信号链从 MAC 输出端一直拉到网线插头,一节一节剥开、测过、调过的真实记录。它不讲教科书定义,只告诉你:哪根线必须等长、哪个电容不能省、哪种变压器能过 Class B、为什么 RGMII 要加延迟补偿、国产百兆 PHY 在什么温度下会丢包。如果你正在画第一块带网口的 PCB,或者正被 PHY 初始化失败卡住三天,这篇就是你的实操地图。
2. 接口协议的本质:带宽、引脚、时序的三角博弈
以太网 MAC 与 PHY 之间的并行接口,本质是数字系统在带宽、引脚资源、PCB 布线难度三者间做的动态权衡。MII 是起点,RMII 是精简版,GMII 是千兆原生,RGMII 是千兆的工程妥协——它们不是技术迭代的“升级”,而是针对不同场景的“适配方案”。
2.1 MII:百兆时代的“全功能基线”
MII(Media Independent Interface)定义于 IEEE 802.3u,是百兆以太网(100BASE-TX)的标准并行接口。它采用 4 位数据总线,工作在 25MHz,理论吞吐量 100Mbps。其信号组成清晰反映物理层分工:
- 发送方向(MAC → PHY):TXD[3:0](4-bit 数据)、TX_EN(发送使能)、TX_ER(发送错误)、TX_CLK(25MHz 主时钟)
- 接收方向(PHY → MAC):RXD[3:0](4-bit 数据)、RX_DV(数据有效)、RX_ER(接收错误)、RX_CLK(25MHz 回采时钟)
- 管理通道:MDIO(双向数据线)、MDC(管理时钟,2.5MHz)
提示:MII 的 RX_CLK 由 PHY 提供,且要求 MAC 必须在 RX_CLK 的上升沿采样 RXD 和 RX_DV。这意味着 MAC 的输入寄存器必须满足建立时间(tsu)和保持时间(th)约束,典型值为 tsu= 10ns, th= 5ns。很多初学者误以为 RX_CLK 可随意接入 FPGA 的任意 IO,结果在高温下采样失败——根本原因是未将 RX_CLK 约束为“输入时钟”,导致综合工具未插入专用 IO 寄存器(IDDR),时序裕量归零。
MII 的最大问题是引脚数:仅数据+控制线就需 16 根(TXD4+TX_EN+TX_ER+TX_CLK+RXD4+RX_DV+RX_ER+RX_CLK),加上 MDIO/MDC 共 18 根。在 SoC 引脚紧张的嵌入式场景中,这是不可承受之重。我曾用 NXP i.MX6ULL 设计一款网关,其 MII 接口占用了 22 个 GPIO,直接挤占了 LCD 和 SPI 的资源,最终被迫改用 RMII。
2.2 RMII:百兆的“引脚压缩术”
RMII(Reduced Media Independent Interface)是 MII 的精简版本,核心目标是将引脚数从 18 根压至 9 根,同时维持 100Mbps 带宽。其实现逻辑极其巧妙:复用时钟、合并控制、降低采样率。
- 时钟统一:RMII 只使用一个 50MHz 时钟(REF_CLK),由外部晶振或 PHY 提供。该时钟既驱动 MAC 发送,也作为 PHY 接收采样的基准。
- 数据宽度不变,速率翻倍:TXD/RXD 仍为 2-bit,但 REF_CLK 为 50MHz,每周期传输 2bit × 2 = 4bit 数据,等效带宽 100Mbps。
- 控制信号精简:TX_EN 和 TX_ER 合并为 TXD[1:0] 的编码(00=空闲,01=数据,10=错误,11=载波检测);RX_DV 和 RX_ER 同理合并为 RXD[1:0] 编码。
注意:RMII 的 REF_CLK 必须是低抖动(jitter < 1ns)的方波,且对 PCB 走线长度敏感。我实测过:当 REF_CLK 走线长度超过 8cm 且未做 50Ω 阻抗匹配时,某国产 PHY(KSZ8081)在 -20℃ 下初始化失败概率达 30%。解决方案不是换晶振,而是将 REF_CLK 走线改为微带线,顶层铺地,全程包地,并在 PHY 端添加 33Ω 串联电阻——这是 RMII 稳定性的物理基础,而非软件配置问题。
RMII 的代价是时序更苛刻:50MHz 时钟周期仅 20ns,TXD 和 RXD 的建立/保持时间窗口被压缩到 3ns 以内。因此,RMII 对 PCB 布线等长要求远高于 MII。我的经验是:所有 RMII 信号线(TXD0/1、RXD0/1、TX_EN、RX_DV、REF_CLK)必须严格等长,偏差 ≤ 100mil(2.54mm),且 REF_CLK 必须比数据线短 50mil 以补偿驱动延时。
2.3 GMII:千兆的“原生直连”
GMII(Gigabit Media Independent Interface)是千兆以太网(1000BASE-T)的并行接口,直接映射物理层 8bit 并行数据流。它放弃“压缩”,选择“直通”:
- 数据宽度翻倍:TXD[7:0] 和 RXD[7:0],8-bit 总线
- 时钟频率提升:TX_CLK 和 RX_CLK 均为 125MHz(对应 1Gbps ÷ 8bit)
- 控制信号扩展:TX_EN 扩展为 TX_ER(错误)+ TX_EN(使能)双信号;RX_DV 扩展为 RX_ER + RX_DV
GMII 的引脚数飙升至 26 根(TXD8+TX_EN+TX_ER+TX_CLK+RXD8+RX_DV+RX_ER+RX_CLK+MDIO/MDC),对高密度 PCB 是巨大挑战。更致命的是 125MHz 时钟的 PCB 实现难度:波长 λ = c/f ≈ 2.4m,但 PCB 上信号速度约 15cm/ns,λPCB≈ 12cm。当走线长度 > λ/10 ≈ 1.2cm 时,就必须按传输线处理——这意味着所有 GMII 信号线都需 50Ω 阻抗控制、包地、等长,且长度差 < 5mil。我在某 ARM Cortex-A9 平台上尝试 GMII,因无法在 BGA 封装下完成 26 根线的等长布线,最终放弃。
2.4 RGMII:千兆的“工程智慧结晶”
RGMII(Reduced Gigabit Media Independent Interface)是 GMII 的工程妥协版,目标是用 RMII 的引脚数(仅 14 根)实现千兆带宽。其核心创新是:源同步双沿采样 + 内部延迟补偿。
- 数据宽度减半,速率翻倍:TXD/RXD 为 4-bit,REF_CLK 为 125MHz,但 MAC 在 REF_CLK 的上升沿和下降沿各采样一次,等效 8-bit/周期。
- 时序关键点:RGMII 规定 TX_CLK(由 MAC 输出)和 TXD 必须满足“源同步”关系——即 TX_CLK 边沿应位于 TXD 数据眼图中心。但 FPGA 的 IO 延时(Tco)和 PCB 走线延时(Tpcb)会导致 TX_CLK 相对于 TXD 延迟,若不补偿,接收端 PHY 将采样到数据过渡区。
实操心得:RGMII 的“延迟补偿”不是软件配置,而是硬件级强制要求。主流 PHY(如 Marvell 88E1111、Realtek RTL8211F)内部集成了可编程延迟单元(通常 0~3ns 可调),用于校准 RX_CLK 与 RXD 的相位。但 TX 方向必须由 MAC(FPGA/SoC)主动补偿:例如 Xilinx Zynq 的 RGMII IP 核提供 “TX_DELAY” 参数,需根据实测的 Tco+ Tpcb设置。我曾用 Artix-7 设计千兆网卡,初始设置 TX_DELAY=0,示波器测得 TX_CLK 比 TXD 晚 1.8ns,眼图闭合;将 TX_DELAY 设为 2(对应 1.9ns 延迟),眼图立即张开。这个参数必须通过实测确定,绝不能凭 datasheet 估算。
RGMII 的 REF_CLK 仍为 125MHz,但因其双沿采样,对时钟抖动容忍度低于 GMII。实测表明,REF_CLK 的周期抖动(Period Jitter)必须 < 50ps,否则在高温下会出现 CRC 错误。解决方案是:选用 ±20ppm 温补晶振,REF_CLK 走线全程包地,长度 < 4cm,并在 PHY 端添加 22Ω 串联电阻。
3. PHY 芯片:信号链的“翻译官”与“调解员”
PHY(Physical Layer Transceiver)是以太网硬件的核心枢纽,它绝非简单的“电平转换器”。其内部包含模拟前端(AFE)、数字基带处理器、时钟恢复(CDR)、自动协商(Auto-Negotiation)引擎、以及复杂的寄存器配置空间。理解 PHY,关键是抓住三个维度:功能角色、配置模式、国产化现状。
3.1 PHY 的三层功能架构
模拟层(Analog Front End):直接连接网络变压器,负责将数字信号转换为符合 100BASE-TX 或 1000BASE-T 标准的模拟波形(如 MLT-3 编码、PAM-5 编码),并执行回波抵消(Echo Cancellation)、近端串扰(NEXT)抑制。这部分性能直接决定链路距离和抗干扰能力。例如,某国产 PHY 在 100m 网线上丢包率 10⁻⁶,而 TI DP83848 在同样条件下为 10⁻¹²——差距源于 AFE 的 SNR 和线性度。
数字基带层(Digital Baseband):执行曼彻斯特解码/编码、4B5B 转换、8B10B 编码、CRC 校验、帧对齐等。它将模拟波形还原为标准以太网帧,并注入 MAC。此层决定 PHY 是否支持巨型帧(Jumbo Frame)、VLAN Tag 处理、时间戳(IEEE 1588 PTP)等高级功能。
管理与控制层(Management & Control):通过 MDIO/MDC 总线响应 MAC 的寄存器读写,执行自动协商、链路状态监控、功耗管理(如 Energy Efficient Ethernet)。其寄存器空间(如 IEEE Std 802.3 Clause 22/45)是软硬件协同的接口。
注意:PHY 的“复位”不是简单拉低 RESET# 引脚。标准流程是:先拉低 RESET# ≥ 10ms,再释放;等待 PHY 内部 PLL 锁定(典型 100ms),然后通过 MDIO 读取寄存器 0x00(Basic Control)确认 bit15(Reset)已清零。我曾遇到某项目因 RESET# 释放后未等待 PLL 锁定,导致 PHY 未进入正常模式,MDIO 读取全 0xFF——这不是芯片损坏,而是时序违规。
3.2 PHY 的三种工作模式解析
PHY 并非只能被动接受 MAC 指令,它可通过配置进入不同模式,适应不同系统架构:
MAC 模式(MAC Mode):PHY 作为纯粹的物理层收发器,所有链路控制(如速率、双工)由 MAC 通过寄存器配置。这是最常见模式,适用于 SoC 内置 MAC 的场景(如 STM32H7、NXP i.MX8)。
PHY 模式(PHY Mode):PHY 自主执行自动协商,确定最佳速率/双工,并通过中断(INT#)通知 MAC。此时 MAC 仅需响应链路状态变化,无需主动查询。适用于 MAC 功能较弱的 MCU。
Repeater 模式(中继模式):PHY 同时连接两个以太网端口,实现物理层信号再生。常用于网络分路器或诊断设备。需注意:此模式下 PHY 不参与帧处理,仅放大和整形信号。
关键细节:“sgmii ip核与phy芯片一起使用时,应配置成mac模式”——这是因为 SGMII(Serial Gigabit Media Independent Interface)是一种串行接口,其 IP 核(如 Xilinx GT 或 Intel Transceiver)已内置 SERDES 和时钟恢复,PHY 在此链路中退化为纯模拟前端。若配置为 PHY 模式,自动协商将与 SGMII 的固定速率冲突,导致链路无法 UP。
3.3 国产百兆 PHY 的选型与实战要点
“国产百兆 PHY 芯片”已成为工业物联网的标配,但选型绝非只看价格。我对比过 5 款主流国产型号(KSZ8081、IP101GR、RTL8201、CH395、W5500 内置 PHY),总结出三大实战红线:
温度范围陷阱:标称“工业级 -40℃~85℃”的 PHY,其 PHY 模式下的自动协商成功率在 -40℃ 时可能骤降至 50%。实测 KSZ8081 在低温下需强制配置为 100Mbps/Full-Duplex(禁用 Auto-Neg),才能稳定运行。解决方案:在 uboot 中添加
mii write 0x00 0x00 0x2100(写入寄存器 0x00,强制 100FD)。ESD 防护等级差异:国产 PHY 的 HBM(人体模型)ESD 等级多为 ±2kV,而 TI/Realtek 旗舰型号达 ±8kV。在无良好接地的现场设备中,±2kV ESD 可能导致 PHY 内部 LDO 损坏。对策:RJ45 座子的 Shield 必须通过 100nF/1kV 电容接大地,且 PHY 的 AVDD 引脚需增加 TVS 管(如 SMAJ5.0A)。
MDIO 时序兼容性:部分国产 PHY 的 MDIO 输入高电平阈值(VIH)为 0.7×VDD,而某些 SoC 的 GPIO 高电平仅 0.6×VDD。结果是 MDIO 通信失败。验证方法:用万用表测 MDIO 线在 SoC 输出高电平时的实际电压,若 < 0.7×VDD,则需在 MDIO 线上加 4.7kΩ 上拉电阻至 VDD。
4. 网络变压器与 RJ45:信号链的“最后一公里”攻坚
当数字信号离开 PHY,它面对的不再是干净的 PCB 走线,而是充满噪声、阻抗突变、ESD 冲击的现实世界。网络变压器(Transformer)和 RJ45 连接器共同构成这“最后一公里”的物理屏障,其设计质量直接决定产品能否过 EMC、能否长期可靠运行。
4.1 网络变压器的四大核心功能与选型铁律
网络变压器绝非简单“隔离器件”,它承担四重关键任务:
- 电气隔离:通过初级/次级线圈实现高压隔离(典型 1.5kV RMS),保护 PHY 免受雷击或电源浪涌损伤。
- 阻抗匹配:将 PHY 的 100Ω 差分输出阻抗,匹配至双绞线的 100Ω 特性阻抗。匹配不良将导致信号反射,眼图闭合。
- 共模噪声抑制:利用线圈的共模扼流特性,衰减来自电源、电机等的共模干扰(CM Noise),提升抗扰度。
- 直流偏置隔离:阻断 PHY 与线缆间的直流路径,防止地电位差导致电流环路。
实操避坑:变压器的“匝比”(Turns Ratio)直接影响信号幅度。百兆常用 1:1 匝比,千兆则需 1:2.5(如 Pulse HX2022)以提升驱动电压。若用百兆变压器(1:1)硬带千兆信号,PHY 输出电压被衰减,导致线缆远端信噪比不足,表现为“握手成功但无法传数据”。我曾用 Halo HX2022 替换某国产 1:1 变压器,千兆传输距离从 30m 提升至 100m。
选型铁律:
- 频响带宽:百兆变压器需覆盖 1~31.25MHz,千兆则需 1~125MHz。查看 datasheet 的“Insertion Loss”曲线,-3dB 点必须 ≥ 125MHz。
- 共模抑制比(CMRR):优质变压器在 100MHz 下 CMRR > 30dB。实测方法:用网络分析仪测 Scc21参数。
- 漏感与耦合系数:漏感越小、耦合系数越接近 1,信号完整性越好。劣质变压器漏感 > 1μH,会导致眼图顶部塌陷。
4.2 RJ45 连接器的“隐藏参数”与接地艺术
RJ45 插座看似简单,其内部结构却暗藏玄机:
- 引脚定义:标准 T568B 定义为:Pin1=TX+, Pin2=TX-, Pin3=RX+, Pin6=RX-。但部分工业插座将 Pin4/Pin5(备用线对)和 Pin7/Pin8(备用线对)设计为屏蔽层(Shield)连接点,而非信号线。
- 屏蔽壳(Shield)接地:这是 EMC 的生死线。错误做法:将 Shield 通过 0Ω 电阻单点接到 PCB 数字地。正确做法:Shield 必须通过 100nF/1kV 电容接大地(Earth),并在电容旁并联 1MΩ 电阻泄放静电。若直接连数字地,高频噪声会通过 Shield 注入系统。
- 内部绕线结构:优质 RJ45 内部采用“绕线式”(Wound)变压器集成,劣质品用“贴片式”(Chip)磁珠替代,前者 CMRR 高 15dB。
现场教训:某款车载终端在 80MHz 频段 EMC 辐射超标 12dB。排查发现 RJ45 的 Shield 仅通过 0Ω 电阻连到数字地,且未接大地。整改后:拆除 0Ω 电阻,焊接 100nF/1kV 电容至机壳接地点,超标消失。这证明:RJ45 的接地不是“可选项”,而是 EMC 合规的“必选项”。
4.3 从 PHY 到网线的完整信号链实测
我用 Keysight DSOX6000 示波器实测过一条典型 RGMII 链路的信号质量,数据如下:
| 信号 | 测量位置 | 幅度 | 上升时间 | 眼图张开度 | 关键问题 |
|---|---|---|---|---|---|
| TX_CLK (125MHz) | PHY TX_CLK 引脚 | 1.2Vpp | 0.8ns | — | 无抖动,但边沿过冲 15% |
| TXD[3:0] | PHY TXD 引脚 | 1.0Vpp | 0.9ns | 0.45 UI | 数据眼图中心偏移,需 TX_DELAY 补偿 |
| TP1 (变压器初级) | 变压器 Pin1/2 | 2.5Vpp | 1.2ns | 0.3 UI | 幅度提升,但边沿变缓,反射明显 |
| TP2 (RJ45 Pin1/2) | RJ45 插座引脚 | 2.2Vpp | 1.5ns | 0.25 UI | 终端匹配不足,眼图底部抬升 |
结论:信号劣化主要发生在变压器初级到 RJ45 这一段。解决方案不是换 PHY,而是优化 PCB:
- 在变压器初级侧(PHY 侧)添加 50Ω 并联端接电阻;
- RJ45 插座的 Pin1/2 与地之间添加 100pF 电容(滤除高频谐波);
- 所有差分对走线长度差 < 5mil,且距其他信号线 ≥ 20mil。
5. 常见问题与排查技巧实录:从“灯不亮”到“千兆跑满”
硬件调试中,90% 的以太网问题集中在链路建立(Link Up)和数据传输(Data Flow)两阶段。以下是我在 7 个项目中积累的“问题-现象-根因-解决”速查表,附真实波形截图描述(文字版)。
5.1 链路建立类问题
| 现象 | 可能根因 | 排查步骤 | 解决方案 | 实测案例 |
|---|---|---|---|---|
| PHY Link LED 不亮 | 1. PHY 未上电或 RESET 未释放 2. REF_CLK 无输出或频率错误 3. MDIO 通信失败 | 1. 测 PHY VDD/VDDIO 电压 2. 用示波器测 REF_CLK 频率/波形 3. 用逻辑分析仪抓 MDIO 时序 | 1. 检查电源序列,确保 VDD 先于 VDDIO 上电 2. 更换 REF_CLK 晶振,检查走线是否短路 3. 添加 4.7kΩ MDIO 上拉电阻 | 某 STM32F4 项目:VDDIO=3.3V 正常,但 VDD=1.2V 仅 0.8V,因 LDO 使能引脚悬空。补焊后 Link LED 亮起。 |
| Link LED 闪烁但无法 Ping 通 | 1. 自动协商失败,速率/双工不匹配 2. PHY 寄存器配置错误(如误设为 10Mbps) 3. 变压器极性接反 | 1. 读 PHY 寄存器 0x01(Basic Status),查 bit2(Link Status)和 bit13(Auto-Neg Complete) 2. 查寄存器 0x00(Basic Control)bit13/12(Speed Select) 3. 用万用表测变压器初级/次级线圈通断 | 1. 强制配置 PHY 为 100FD(写 0x00=0x2100) 2. 交换 TX+/TX- 或 RX+/RX- 线对 | 某国产 PHY:自动协商后显示 100Mbps,但实际协商为 10Mbps。根因是 PHY 的 AN_ENABLE 寄存器 bit12 被误清零。 |
| Link LED 亮但速率不对(百兆 PHY 显示千兆) | 1. RGMII 模式下 PHY 误判为 SGMII 2. MAC 配置为 RGMII,但 PHY 引脚定义为 GMII | 1. 查 PHY 寄存器 0x19(Extended Status),读 bit15:14(Speed Indication) 2. 核对原理图,确认 PHY 的 MODE[2:0] 引脚电平 | 1. 将 PHY 的 MODE 引脚按 datasheet 设为 RGMII 模式(如 KSZ8081:MODE0=1, MODE1=0, MODE2=0) 2. 检查 MAC 的 RGMII IP 核配置是否启用延迟补偿 | 某 Xilinx Zynq 项目:PHY 寄存器显示 1000Mbps,但实际链路为百兆。根因是 MODE1 引脚浮空,被内部上拉拉高,PHY 进入错误模式。 |
5.2 数据传输类问题
| 现象 | 可能根因 | 排查步骤 | 解决方案 | 实测案例 |
|---|---|---|---|---|
| Ping 通但大数据传输丢包 | 1. RGMII TX/RX 延迟未补偿 2. 变压器共模噪声抑制不足 3. RJ45 Shield 未正确接地 | 1. 用示波器测 TX_CLK 与 TXD 的相位差 2. 用频谱仪测 RJ45 引脚共模电压 3. 用万用表测 Shield 对大地电阻 | 1. 调整 FPGA 的 TX_DELAY 参数(步进 0.1ns) 2. 更换高 CMRR 变压器(如 Pulse HX2022) 3. 将 Shield 通过 100nF 电容接大地 | 某千兆视频采集卡:100MB 文件传输丢包率 5%。示波器显示 TX_CLK 比 TXD 晚 2.1ns。将 TX_DELAY 从 1 改为 3 后,丢包率降为 0。 |
| 高温下 Link 断开 | 1. PHY 温度传感器失效 2. 电源纹波过大导致 PHY 复位 3. 变压器磁芯饱和 | 1. 读 PHY 寄存器 0x18(Temperature),对比实测温度 2. 用示波器测 VDD 纹波(带宽 20MHz) 3. 测变压器初级电流波形 | 1. 更新 PHY 固件或更换批次 2. 在 VDD 引脚增加 10μF 陶瓷电容 + 100μF 钽电容 3. 更换饱和电流 > 200mA 的变压器 | 某工业网关:70℃ 环境下 Link 每 2 小时断开一次。VDD 纹波达 120mVpp。增加电容后问题解决。 |
| EMC 辐射超标(80MHz) | 1. RJ45 Shield 接地不良 2. REF_CLK 走线未包地 3. 变压器未屏蔽 | 1. 检查 Shield 与大地连接阻抗 2. 用近场探头扫描 REF_CLK 走线辐射 3. 查变压器外壳是否完整包裹线圈 | 1. 确保 Shield 通过电容接大地,且连接点阻抗 < 1Ω 2. REF_CLK 走线全程包地,长度 < 4cm 3. 选用金属屏蔽外壳变压器 | 某医疗设备:80MHz 辐射峰值 52dBμV/m。近场探头定位到 RJ45 Shield 接地线过长(15cm)。缩短至 2cm 并加电容后,峰值降至 38dBμV/m。 |
5.3 国产 PHY 的专属排障技巧
针对“国产百兆 PHY 芯片”,我总结出三条独家技巧:
技巧一:寄存器 0x1F 的“隐藏开关”
多数国产 PHY(如 KSZ8081)的寄存器 0x1F(Vendor Specific 1)bit15 是“强制 Link UP”开关。当自动协商失败时,写mii write 0x00 0x1F 0x8000可强制 PHY 报告 Link UP,用于快速验证硬件链路。但此模式下速率/双工需手动配置,不可用于长期运行。技巧二:VDDIO 电压的“精度陷阱”
国产 PHY 的 VDDIO(I/O 电压)标称 3.3V,但实测发现:当 VDDIO = 3.25V 时,MDIO 通信误码率激增。建议在 VDDIO 电源路径添加精密 LDO(如 TPS7A83),而非直接使用 DCDC 输出。技巧三:ESD 后的“软复位”
国产 PHY 遭受 ESD 后常进入“假死”状态(Link LED 灭,但 VDD 正常)。此时单纯断电重启无效。正确操作:保持供电,用 MDIO 向寄存器 0x00 写入 0x8000(Software Reset),等待 100ms 后再重新配置。
6. 我的硬件设计 checklist:从原理图到量产
最后分享一份我坚持使用的以太网硬件设计 checklist,它不是理论清单,而是每一项都来自血泪教训:
原理图阶段
□ PHY 的每个电源引脚(VDD, VDDIO, AVDD, DVDD)均配有独立去耦电容(0.1μF 陶瓷 + 1μF 钽电容),且电容紧靠引脚放置
□ RGMII 的 TX_CLK 和 RX_CLK 走线长度严格比对应数据线短 50mil(补偿驱动延时)
□ 网络变压器初级侧(PHY 侧)添加 50Ω 并联端接电阻,次级侧(RJ45 侧)不加端接(依赖线缆特性阻抗)
□ RJ45 的 Shield 引脚不连 PCB 地,而是预留焊盘,用于后续焊接 100nF/1kV 电容至大地PCB 布线阶段
□ 所有 RGMII 信号线(TXD0~3, RXD0~3, TX_CTL, RX_CTL, TX_CLK, RX_CLK, REF_CLK)全程 50Ω 微带线,包地,长度差 ≤ 5mil
□ REF_CLK 走线避开高速 DDR 和 USB 信号线,最小间距 ≥ 20mil
□ 变压器下方 PCB 无任何走线,且铺铜接地(Thermal Pad 必须打孔连接内层地)BOM 与生产阶段
□ PHY 芯片采购批次号记录在 BOM 中,不同批次需单独验证低温启动性能
□ 网络变压器明确标注型号(如 “Pulse HX2022-400RNL”),禁止使用“兼容型号”
□ RJ45 插座必须带金属屏蔽壳,且壳体表面镀层厚度 ≥ 5μm(防盐雾腐蚀)
我见过太多项目,因为省掉一个 100nF 电容、忽略 5mil 的走线长度差、或选用“兼容”变压器,而在量产爬坡时付出十倍代价。以太网硬件没有“差不多”,只有“精确”与“失效”。这张 checklist,是我交过学费后,写给自己的最后防线。