2. 管理接口协议基础与MDIO/I2C帧格式解析

在3.2T光模块中,管理接口是主机(交换机MAC/PHY或BMC)与模块内部管理控制器之间的“神经通道”。3.2T模块内部通常包含DSP、驱动器、TIA、激光器控制、TEC温控等多个子系统,主机需要实时读取温度、电压、偏置电流、告警标志,并下发配置与固件升级指令。这些操作全部依赖管理接口完成。本节聚焦两种最常用的物理层管理协议——MDIO与I2C,讲清它们在3.2T模块中的角色分工、帧结构与地址分配,并通过一次逻辑分析仪抓取实例,说明如何把总线上的电平变化还原为可读的事务。

一、MDIO与I2C在3.2T模块中的角色分工

MDIO(Management Data Input/Output)源自IEEE 802.3,是MAC与PHY之间的标准管理总线,采用两线制:MDC时钟由主机驱动,MDIO为双向数据线。它的帧结构固定、寻址空间为5位PHY地址加5位寄存器地址,单次事务开销小、时序确定,适合高频轮询链路状态和寄存器级配置。在3.2T模块中,MDIO常用于主机侧PHY/SerDes与模块管理寄存器之间的快速访问,尤其是需要与802.3管理寄存器模型对齐的场景。

I2C则是更通用的两线总线(SCL/SDA),支持多主多从、7位或10位地址,帧格式灵活,可承载任意长度的寄存器读写。3.2T光模块的MSA(多源协议)管理通常以I2C为主通道,映射到模块内部的EEPROM页和寄存器页,用于读取厂商信息、DDM实时参数、告警阈值以及执行固件下载。简单说:MDIO偏“链路与PHY寄存器级快速访问”,I2C偏“模块管理信息与大数据量读写”,两者在模块内可能并存,由管理控制器统一调度。

3.2T光模块管理接口:角色分工与帧结构 主机侧 MAC / PHY / BMC 管理控制器 MDC / SCL 主驱动 MDIO / SDA MDC / SCL 3.2T光模块 管理控制器(MCU) 寄存器页 / EEPROM页 DSP / 驱动 / TEC 控制 DDM 采集与告警 角色定位 MDIO:PHY/链路寄存器快速访问 I2C:MSA管理信息、DDM、固件 地址空间:5位PHY / 7位I2C从地址 两者由MCU统一调度 MDIO 帧结构(Clause 22,共64位) 前导码32×1 起始01 操作码10读/01写 PHY地址5位 寄存器地址5位 数据/转向16位 I2C 帧结构(7位地址,单次写事务) 起始S 从地址+W7位+0 ACK从应答 寄存器地址8位 ACK从应答 数据字节8位 ACK从应答 停止P 注:读事务需“写寄存器地址→重复起始→从地址+R→读数据”,地址分配须与模块MSA页映射一致。

二、帧结构与地址分配要点

MDIO Clause 22帧固定64位:32位前导码(全1)、2位起始码“01”、2位操作码(读为10、写为01)、5位PHY地址、5位寄存器地址、2位转向位,最后16位数据。读事务中,主机在转向位后释放MDIO,由从机驱动数据;写事务则由主机持续驱动。Clause 45则用“地址帧+数据帧”两段式扩展,支持更多寄存器和设备类型,3.2T高速PHY常涉及Clause 45访问。

I2C事务以起始位S开始,发送7位从地址加读写位,从机回ACK后传输寄存器地址字节,再传数据字节,每个字节后都有ACK,最后以停止位P结束。读操作需要“写地址—重复起始—读”的组合。地址分配上,MDIO的PHY地址由硬件引脚或配置决定,同一总线上的多个PHY必须地址唯一;I2C从地址通常由模块MSA规定(如0xA0/0xA2对应不同页),同一总线挂多个器件时需避免地址冲突。工程上要特别注意:地址是“设备级”还是“页级”,以及读写位是否已包含在抓包工具显示的地址中。

三、用逻辑分析仪抓取并解析一次完整MDIO读事务

下面以一次MDIO Clause 22读事务为例,说明从接线到解码的完整过程。假设主机要读取PHY地址0x05、寄存器0x10的内容,预期返回0x1234(示例参数,用于说明解析方法)。

  1. 接线与采样设置:逻辑分析仪通道0接MDC,通道1接MDIO,两地共地。采样率至少为MDC频率的10倍以上;若MDC为2.5MHz,建议采样率≥25MS/s,以保证边沿与建立保持时间可辨。
  2. 触发设置:以MDC上升沿为采样时钟,触发条件设为MDIO出现前导码后的起始码“01”,或直接以帧首前导码下降沿触发,避免抓到半截帧。
  3. 解码器配置:在分析仪中加载MDIO协议解码器,设置时钟为MDC、数据为MDIO、Clause选择22、PHY地址过滤0x05。解码器会按位切分出前导码、起始、操作码、地址、数据和转向位。
  4. 结果判读:正常读事务应看到操作码“10”、PHY地址0x05、寄存器0x10,转向位后数据段为0x1234,且MDIO在转向位后由从机驱动。若数据段全1或全0,需检查从机是否响应、上拉电阻是否合适、地址是否匹配。
# 逻辑分析仪解码输出示例(MDIO Clause 22 读)
Preamble : 1111...1111 (32 bits)
Start    : 01
Opcode   : 10  (READ)
PHY Addr : 0x05
Reg Addr : 0x10
TA       : Z0  (主机释放,从机驱动)
Data     : 0x1234
# 判读:操作码=读、地址匹配、数据非全1/全0 → 事务有效
抓包时若发现MDIO数据段出现“X”或不定态,多半是总线上拉缺失或从机未使能;若ACK/转向位异常,优先核对从地址与PHY地址是否与硬件配置一致。

把上述方法迁移到I2C时,解码器选择I2C协议,重点观察起始位、从地址+读写位、每个字节后的ACK以及停止位。一次完整的“写寄存器地址再读数据”的读事务,在分析仪上会显示为两段:第一段写地址并收到ACK,第二段重复起始后读数据。只要地址分配、时序参数(如SCL频率、建立保持时间)与模块规格一致,抓包结果就能直接用于定位管理接口通信故障。