一、SFP光模块概述

大家好,我是老张。做光模块固件开发十几年了,今天咱们聊聊SFP光模块的基础知识。说实话,很多新手一上来就扎进I2C协议细节里,结果连SFP的引脚是干嘛的都没搞清楚。嗯,这不行。万丈高楼平地起,咱们先把地基打牢。

1.1 SFP标准的演进

SFP,全称Small Form-factor Pluggable,小封装可插拔光模块。这东西最早是2001年由SFF委员会搞出来的标准。我入行那会儿,用的还是GBIC模块,个头大得像块砖头。后来SFP一出来,体积直接缩小了一半多,端口密度翻倍,大家都很兴奋。

标准演进大致是这样的:

  • SFP (INF-8074i):第一代,速率最高4.25Gbps,定义了基本引脚和I2C接口
  • SFP+ (SFF-8431):速率提升到10Gbps,增强了信号完整性要求
  • SFP28:25Gbps速率,兼容SFP+接口
  • SFP56:50Gbps速率,PAM4调制技术
  • SFP-DD:双密度,速率可达100Gbps

你想想看,从4G到100G,二十多年翻了25倍。但有意思的是,引脚定义基本没变。这说明什么?说明当初的设计很有远见。

核心要点:SFP标准的核心是SFF-8472,它定义了I2C的存储器映射。这个文档我翻了不下百遍,每次做新项目都要拿出来对照。

1.2 光模块分类

光模块的分类方式很多,我按最常见的几种给大家捋一捋:

按速率分

类型速率典型应用
SFP100M-4.25G千兆以太网、1G/2G FC
SFP+8.5G-10G10G以太网、8G/16G FC
SFP2825G25G以太网、100G(4通道)
SFP5650G50G以太网、200G(4通道)

按传输距离分

  • SR(短距):几百米,多模光纤,850nm波长
  • LR(长距):10公里,单模光纤,1310nm波长
  • ER(超长距):40公里,单模光纤,1550nm波长
  • ZR(极长距):80公里以上,需要外置光放大器

我记得有一次项目,客户非要拿SR模块跑10公里链路。我说不行,他不信。结果一测,误码率惨不忍睹。后来乖乖换了LR模块。所以啊,选型别图省事,距离和波长必须匹配。

1.3 SFP引脚定义与功能

SFP模块有20个引脚,编号从1到20。我习惯把它们分成几组:

引脚名称功能方向
1VeeT发射器地-
2Tx_Fault发射故障告警输出
3Tx_Disable发射关断控制输入
4SDAI2C数据线双向
5SCLI2C时钟线输入
6Mod_ABS模块在位检测输出
7-10RS0, RS1, RX_LOS, VeeR速率选择、接收告警、接收器地输入/输出
11-14VeeR, VeeR, RD-, RD+接收器地、差分数据输出输出
15-20VccR, VccT, VeeT, TD+, TD-, VeeT电源、发射器地、差分数据输入输入

个人经验:引脚4和5(SDA/SCL)是I2C总线,这是咱们固件开发的核心。我建议在设计电路板时,这两根线要加4.7kΩ上拉电阻到3.3V。曾经有个项目没加上拉电阻,I2C死活不通,查了两天才发现。

1.4 I2C总线在SFP中的作用

I2C总线在SFP模块里扮演什么角色?说白了,就是主机(交换机/路由器)和模块之间的通信通道。通过它,主机可以:

  • 读取模块信息:厂商名、型号、序列号、速率能力等
  • 监控运行状态:温度、电压、偏置电流、发射功率、接收功率
  • 控制模块行为:关断发射、速率切换、数字诊断使能
  • 告警上报:温度超标、电压异常、光功率过低等

SFP模块的I2C地址是固定的:

  • A0h:读取模块基本信息(128字节)
  • A2h:读取诊断监控数据(128字节)

为什么会用两个地址?因为SFF-8472标准把存储空间分成了两块。A0h存的是出厂固化信息,只读。A2h存的是实时监控数据,可读写。我刚开始做的时候,老是把A0h和A2h搞混,读出来的数据完全不对。后来养成了习惯,每次读写前先确认地址。

避坑指南:我曾经遇到过一个问题——模块插上后I2C通信正常,但读出来的温度值永远是0。查了半天,发现是A2h地址的校验和没更新。很多模块在出厂时校验和是错的,导致主机端校验失败,直接丢弃了数据。解决办法是重新计算校验和并写入。

知识体系结构图

下面这张图是我自己画的,把SFP光模块的知识体系串起来了。你看一眼就能明白各个知识点之间的关系:

SFP光模块知识体系 标准演进 SFP → SFP+ → SFP28 SFP56 → SFP-DD 光模块分类 按速率:SFP/SFP+/SFP28 按距离:SR/LR/ER/ZR 引脚定义 20引脚,分4组 电源/数据/控制/告警 I2C总线 地址:A0h(信息) 地址:A2h(诊断) 读:厂商/型号/序列号 读:温度/电压/光功率 写:Tx_Disable控制 写:告警阈值配置 核心:SFF-8472标准 + I2C通信协议

这张图把咱们今天讲的内容都串起来了。你看,标准演进是时间线,分类是选型依据,引脚是硬件接口,I2C是通信手段。四者缺一不可。

总结一下:SFP光模块的I2C通信,本质上就是通过两根线(SDA/SCL)访问模块内部的存储器。A0h地址存的是模块的"身份证",A2h地址存的是模块的"体检报告"。搞清楚了这两个地址,你就掌握了SFP固件开发的一半。

好了,第一章就到这里。内容不多,但都是基础中的基础。下一章咱们会深入I2C协议的细节,包括时序、读写操作、以及常见的坑。到时候见。


专注资料整理