2. OSI模型与物理层定位

说实话,很多工程师干了几年车载网络,对OSI模型的理解还停留在“背七层名字”的阶段。但物理层不一样——你调不好它,上层协议再牛也白搭。今天我们就从OSI模型切入,把物理层的位置、职责、以及与数据链路层的“握手”方式彻底讲透。

2.1 OSI七层模型回顾

OSI模型是1984年ISO搞出来的参考框架。它把通信过程拆成七层,每层只管自己的事。我习惯这么记:“物、数、网、传、会、表、应”。

层号 名称 核心职责 车载以太网中的例子
7 应用层 为用户应用提供网络服务 SOME/IP服务发现、DoIP诊断
6 表示层 数据格式转换、加密、压缩 序列化/反序列化(如SOME/IP的CDR)
5 会话层 建立、管理、终止会话 DoIP的TCP连接管理
4 传输层 端到端可靠传输、流量控制 TCP/UDP、AVTP时间同步
3 网络层 路由选择、逻辑寻址 IPv4/IPv6、VLAN路由
2 数据链路层 帧封装、MAC寻址、差错检测 以太网MAC、VLAN标签、CRC校验
1 物理层 比特流传输、电气特性、编码 100BASE-T1、1000BASE-T1 PHY

你想想看,这七层里真正跟“线”打交道的,只有物理层。上层协议再花哨,最终都得变成物理层的一串高低电平或者差分信号,才能在铜线或光纤上跑。

核心认知:OSI模型是逻辑分层,实际硬件实现时,物理层和数据链路层往往集成在同一颗芯片里(比如车载PHY+MAC组合芯片)。但逻辑上,它们的职责必须严格分开。

2.2 物理层在车载以太网中的角色

物理层到底干些什么?说白了就三件事:发出去、收回来、保证信号不丢不坏。

具体到车载以太网,物理层的角色可以拆成五个关键点:

  1. 介质适配——把MAC层送来的数字信号,转成适合在特定介质上传输的物理信号。车载环境用单对非屏蔽双绞线(UTP),所以物理层要做共模/差模转换。
  2. 信号编码——原始数据不能直接扔到线上。物理层会做编码(比如PAM3、PAM5),目的是抗干扰、减少直流分量、提供时钟同步信息。
  3. 电气特性管理——车载电压波动大、温度范围宽。物理层要保证在-40°C到+125°C范围内,信号眼图依然张开。
  4. 链路建立与检测——PHY芯片上电后,会通过Auto-Negotiation(自动协商)和Link Training(链路训练)来确认对端能力、匹配工作模式。
  5. 故障诊断——物理层能检测链路断开、短路、信号质量劣化,并通过寄存器或中断通知上层。

我的经验:有一次在台架上测100BASE-T1,发现丢包率忽高忽低。查了半天,最后发现是PHY芯片的MDI引脚附近少放了一颗共模扼流圈。物理层的“小细节”往往就是系统稳定性的“大瓶颈”。

车载以太网物理层还有一个特殊角色——EMC/EMI的守门员。车内的电磁环境极其恶劣,电机、点火线圈、射频模块都在干扰你。物理层的频谱整形和共模抑制能力,直接决定了整车能不能过EMC测试。

2.3 物理层与数据链路层的接口

这两层之间的接口,在以太网体系里叫MII(Media Independent Interface)。名字叫“介质无关”,意思是MAC层不用管底下是双绞线还是光纤,统一通过MII跟PHY通信。

MII家族有很多变种,车载领域最常见的是:

接口类型 数据位宽 时钟频率 典型应用
MII 4位 25 MHz 100BASE-T1(早期设计)
RMII 2位 50 MHz 减少引脚数,适合低成本方案
RGMII 4位(DDR) 125 MHz 1000BASE-T1,千兆车载以太网
SGMII 串行1位 625 MHz 高速SerDes连接,芯片间远距离

接口上跑的信号,主要分两类:

  • 数据信号:TXD/RXD(发送/接收数据)、TX_EN/RX_DV(使能/数据有效)、TX_CLK/RX_CLK(时钟)
  • 管理信号:MDC/MDIO(管理时钟/数据),用于配置PHY寄存器、读取状态

我建议你重点理解MDIO/MDC管理接口。调试物理层问题时,90%的工作都是通过读写PHY寄存器来完成的。比如读寄存器0x01(BMSR)可以看链路是否建立,写寄存器0x00(BMCR)可以强制PHY进入Loopback模式。

避坑指南:我曾经在一个项目里,MAC和PHY之间的RGMII走线长度差了200mil,结果高速信号时序不满足建立/保持时间,千兆链路死活协商不上。后来在PCB上做了蛇形等长才解决。记住:MII接口的PCB走线必须做等长约束,尤其是RGMII这种DDR采样方式。

物理层通过MII接口,向上层暴露了哪些能力?我整理了一张图:

物理层与数据链路层接口关系 数据链路层(MAC) 帧封装 · MAC寻址 · CRC校验 物理层(PHY) 编码 · 调制 · 电气适配 · 链路检测 MII / RMII / RGMII / SGMII 数据信号:TXD/RXD/TX_EN/RX_DV 管理信号:MDC/MDIO 时钟信号:TX_CLK/RX_CLK 状态信号:CRS/COL(半双工) 物理介质(UTP / STP / PCB走线) 接口关键点 1. MII是MAC与PHY之间的 标准数字接口 2. 数据信号负责传输 以太网帧的字节流 3. 管理信号(MDIO)用于 读写PHY内部寄存器 4. 时钟信号由PHY提供 (或由MAC提供,取决于模式) 5. 不同速率选择不同 MII变种以平衡 引脚数和性能 6. PCB走线必须做 等长约束和阻抗控制

这张图里,MII接口就像MAC和PHY之间的“翻译官”。MAC把帧拆成4位半字节(Nibble)或2位数据,通过TXD线送给PHY;PHY收到后重新编码、加前导码、加帧起始定界符,然后调制成模拟信号发出去。反过来,PHY从线上收到信号后,先解码、去前导码、检查CRC,再通过RXD线把数据还给MAC。

这里有个容易混淆的点——MAC层也会做CRC校验,但那是针对整个帧的完整性。物理层在MII接口上传递的是“净荷+MAC头+CRC”的完整帧数据。物理层自己不做CRC,它只保证比特级的传输质量。

实战要点:调试物理层问题时,第一步永远是检查MII接口上的信号质量。用示波器看TX_CLK和RXD之间的时序关系,用逻辑分析仪抓MDIO读写序列。如果MII接口上的数据就是错的,那PHY再牛也救不了。

最后说一句——物理层不是孤立的。它跟数据链路层之间,通过MII接口传递的不仅是数据,还有链路状态和错误指示。比如PHY检测到链路断开,会通过中断引脚或MDIO寄存器通知MAC;MAC收到后停止发送数据,避免浪费带宽。这种“物理层-数据链路层”的协作机制,是车载以太网可靠性的基础。