2. 以太网基础
以太网从诞生至今已走过半个世纪,但其核心架构依然建立在OSI参考模型的分层思想上。对于硬件工程师而言,理解MAC(媒体访问控制层)与PHY(物理层)的边界划分,是进行芯片选型、电路设计、信号完整性和调试排障的基石。很多初学者容易将“网卡芯片”视为一个整体,但在实际工程中,MAC和PHY往往由不同厂商、不同封装甚至不同板级拓扑实现,二者之间的接口(如MII、RGMII、SGMII)设计直接决定了系统的稳定性和吞吐量。本章将从分层模型出发,深入剖析MAC与PHY的职责边界、以太网帧的字节级结构,以及双工模式与速率协商的硬件实现机制,帮助读者建立从协议栈到PCB焊盘的完整映射。
上图展示了OSI模型与以太网硬件实现的对应关系。在实际芯片中,MAC层通常集成在主控SoC或交换芯片内部,而PHY则作为独立芯片或模组存在。两者之间的接口信号线数量、时序要求、电平标准各不相同,这直接影响了PCB布局布线的复杂度。例如,RGMII接口采用DDR(双沿)采样,在千兆速率下时钟频率为125MHz,数据线仅需4根(TXD[3:0]和RXD[3:0]),但时序裕量较小,对PCB走线等长要求严格;而SGMII采用串行差分对,仅需一对发送和一对接收,但需要额外的时钟恢复电路。理解这些接口特性,是进行原理图设计和PCB Layout的前提。
2.1 核心原理:OSI模型与以太网分层映射
OSI参考模型将网络通信划分为七个层次,每一层只与相邻层通信,通过标准接口提供服务。以太网协议栈实际主要涉及物理层(第1层)和数据链路层(第2层),更高层(网络层、传输层等)由操作系统协议栈处理。在硬件设计中,我们最关心的是物理层和数据链路层的边界——即PHY芯片和MAC控制器之间的分工。
物理层进一步细分为三个子层:PCS(物理编码子层)负责数据编码(如100Base-TX的4B/5B编码、1000Base-T的8B/1B编码)、PMA(物理介质附加子层)负责并串转换和时钟恢复、PMD(物理介质相关子层)负责与具体传输介质的接口(如双绞线驱动、光纤收发)。这三个子层全部集成在PHY芯片内部。而MAC层则负责帧的组装与解析、错误检测(CRC)、介质访问控制(CSMA/CD或全双工流控)等。
2.2 判断方法:MAC与PHY的职责边界与接口选型
在电路设计中,判断MAC与PHY的职责边界,可以从以下几个维度进行:
- 数据封装层级:MAC处理的是完整以太网帧(从目的MAC地址到FCS字段),而PHY处理的是编码后的比特流。如果示波器测量MAC侧接口,看到的是并行数据(如RGMII的4位数据线)和时钟;测量PHY侧线路,看到的是串行差分信号(如MDI的差分对)。
- 时钟域:MAC接口时钟由PHY提供(如RGMII的RX_CLK由PHY恢复并输出),而PHY的线路时钟由本地晶振或参考时钟决定。若PHY未检测到有效参考时钟,则无法建立链路。
- 管理通道:MDIO/MDC管理接口用于配置PHY寄存器(如速率、双工模式、LED配置、环回测试等)。MAC通过MDIO读写PHY寄存器,实现链路协商和状态监控。
接口选型时,需综合考虑速率、引脚数、PCB复杂度、功耗和成本。下表列出了常见MAC-PHY接口的对比:
| 接口类型 | 数据宽度 | 时钟频率 | 最大速率 | 引脚数(数据) | 典型应用 |
|---|---|---|---|---|---|
| MII | 4位 | 25MHz | 100Mb/s | 16 | 低端MCU、工业控制 |
| RMII | 2位 | 50MHz | 100Mb/s | 7 | 引脚受限的嵌入式系统 |
| GMII | 8位 | 125MHz | 1000Mb/s | 24 | 早期千兆设计 |
| RGMII | 4位(DDR) | 125MHz | 1000Mb/s | 12 | 主流千兆SoC接口 |
| SGMII | 1位串行 | 625MHz(DDR) | 1000Mb/s | 2对差分 | 高速背板、交换芯片 |
| XGMII | 32位 | 156.25MHz | 10Gb/s | 74 | 数据中心、高端交换 |
选择接口时,除了速率匹配,还需关注MAC侧是否支持该接口的电压域。例如,RGMII通常支持2.5V或3.3V,而SGMII为CML电平(1.2V),需要AC耦合电容。若SoC的MAC接口电压与PHY不匹配,需要增加电平转换电路或选择兼容的PHY。
2.3 案例拆解:RGMII接口时序调试与PHY寄存器配置
某工业网关项目采用NXP LS1028A处理器(内置两个千兆MAC)搭配Marvell 88E1512 PHY芯片,通过RGMII接口连接。在实验室调试时,发现链路能协商到1000Mbps,但ping包丢包率高达30%,且吞吐量仅为200Mbps左右。
初步排查:使用示波器测量RGMII的TX_CLK和TXD[3:0]信号,发现数据线与时钟边沿的建立/保持时间不足。RGMII规范要求数据在时钟上升沿和下降沿均有效,且建立时间≥1ns,保持时间≥1ns。实测建立时间仅约0.5ns,保持时间约0.8ns,明显不满足时序要求。
分析判断:RGMII接口的PCB走线长度不匹配是主要原因。TX_CLK走线长度约1200mil,而TXD[3:0]走线长度约800~900mil,导致时钟比数据早到达约0.3ns。此外,PHY的RX_CLK延迟配置(RGMII TX delay)未正确设置。
操作步骤:
- 通过MDIO总线读取PHY寄存器0x0004(LED/时钟控制寄存器),将bit 7(RGMII TX clock delay)设置为1,使PHY在TX_CLK路径上增加约2ns延迟。
- 调整PCB走线,将TXD[3:0]走线长度增加至与TX_CLK一致(误差±50mil内)。
- 在SoC侧配置RGMII RX clock delay(通过设备树或寄存器),补偿数据采样点。
结果对比:调整后,建立时间提升至1.8ns,保持时间提升至1.5ns,ping丢包率降为0%,吞吐量恢复至940Mbps(线速的94%)。
复盘经验:RGMII接口的时序裕量较小,PCB Layout时必须严格等长,且优先使用PHY内部的时钟延迟功能,而非依赖PCB走线绕长。在原理图设计阶段,应预留MDIO上拉电阻和调试接口,方便软件配置PHY寄存器。
2.4 常见误区与总结复盘
在以太网硬件设计中,以下误区值得特别注意:
- 误区一:认为MAC和PHY必须同一厂商。实际上,只要符合标准接口(如RGMII、SGMII),不同厂商的MAC和PHY可以互联。但需注意PHY的默认寄存器配置可能与MAC的期望不一致,需通过MDIO初始化。
- 误区二:忽略PHY的时钟源要求。PHY需要25MHz(千兆)或50MHz(百兆)的参考时钟,该时钟的精度和抖动直接影响链路稳定性。若使用晶振,需选择±50ppm以内的产品;若使用SoC时钟输出,需确认驱动能力和信号完整性。
- 误区三:双工模式不匹配。当一端设置为全双工,另一端为半双工(或自动协商失败)时,会导致大量冲突和CRC错误。建议强制两端均开启自动协商,或手动设置为相同的双工模式。
- 误区四:忽视PHY的环回测试功能。PHY芯片通常支持近端环回(Digital Loopback)和远端环回(Analog Loopback),可用于定位故障在MAC侧还是PHY侧。调试时应充分利用这些功能。