第4章:光模块标准体系

做光模块这些年,我最大的感受就是:标准太多了。刚入行那会儿,我对着SFF-8472的文档看了三天,愣是没搞懂哪个字节是干嘛的。后来踩的坑多了,才慢慢摸出门道。

这一章,咱们就把光模块的四大标准体系捋清楚。你想想看,没有标准会怎样?A厂的光模块插到B厂的设备上,大概率点不亮。标准就是让不同厂家的东西能互相说话。

4.1 MSA:多源协议,行业的“基本法”

MSA全称是Multi-Source Agreement,翻译过来就是“多源协议”。说白了,就是几家大厂坐在一起,商量出一个共同的外形尺寸和电气接口。

我个人习惯把MSA分成两类:

  • 封装类MSA:比如SFP、QSFP、OSFP。规定了模块长什么样,金手指间距多少,散热器怎么装。
  • 管理类MSA:比如SFF-8472、CMIS。规定了模块内部怎么读写寄存器,告警怎么上报。

我在项目中遇到过最头疼的事,就是客户非要我们兼容一个非标封装。嗯,那段时间加班加得我头发都少了三成。

核心要点:MSA不是强制标准,但你不遵守,市场就不带你玩。尤其是SFP和QSFP,基本是行业默认的“基本法”。

4.2 IEEE 802.3:物理层的“硬规矩”

IEEE 802.3主要管两件事:电接口特性和光接口特性。你想想看,为什么10G光模块和25G光模块不能混插?就是因为IEEE 802.3规定了不同的眼图模板和抖动容限。

举个例子,100GBASE-LR4这个标准:

  • 波长:4路LAN WDM,1295.56nm、1300.05nm、1304.58nm、1309.14nm
  • 速率:每路25.78125 Gbps
  • 接收灵敏度:-10.6 dBm(典型值)

这些参数都是IEEE 802.3ba里白纸黑字写死的。你改一个试试?设备端直接给你报“链路未建立”。

我的小技巧:做设计前,先去IEEE官网把最新的802.3草案下载下来。别用百度搜来的二手资料,我吃过这个亏——照着旧版标准做出来的模块,死活过不了一致性测试。

4.3 SFF-8472:数字诊断的“通用语言”

SFF-8472这个标准,我估计是光模块工程师翻得最多的文档。它定义了数字诊断监控接口(DDMI),也就是我们常说的“读寄存器”。

标准把256字节的EEPROM分成了几个区域:

地址范围 内容 我常用的功能
0x00-0x5F 基础ID信息 读模块型号、序列号
0x60-0x7F 扩展ID 看速率等级、编码方式
0x80-0x9F 告警和警告阈值 设置温度、电压的上下限
0xA0-0xBF 实时监控值 读当前温度、偏置电流

我曾经遇到一个坑:某家交换机的DDMI轮询频率特别高,每100ms读一次。我们的固件没做缓存,结果I2C总线被堵死了,模块直接掉线。后来加了读写互斥锁才解决。

注意:SFF-8472只适用于SFP封装。QSFP模块用的是SFF-8636,别搞混了。我见过有人把QSFP的DDMI地址按SFP的来读,读出来的温度永远是25°C——因为地址根本不对。

4.4 CMIS:新一代管理接口

CMIS(Common Management Interface Specification)是近几年才火起来的标准。它主要针对400G及以上的高速模块,比如QSFP-DD、OSFP。

和SFF-8472相比,CMIS有几个明显的变化:

  • 寄存器空间更大:从256字节扩展到了多页,每页128字节,最多支持128页。
  • 支持多通道管理:可以独立控制每个通道的发射功率、CDR设置。
  • 引入了“模块状态机”:模块有Init、Fault、Ready等状态,主机可以通过查询状态机来了解模块当前在干嘛。

我个人觉得,CMIS最大的好处是调试方便。以前调SFP模块,得用I2C一个个地址去读。现在CMIS有标准化的“诊断页面”,一条命令就能拿到所有通道的实时数据。

举个例子:在CMIS中,读通道0的发射功率,只需要访问Page 0x10,Offset 0x20-0x21。而在SFF-8472里,你得先算好哪个字节对应哪个通道,再手动转换单位。嗯,这就是进步。

4.5 四大标准的关系图

下面这张图,是我自己总结的。它把MSA、IEEE 802.3、SFF-8472、CMIS之间的关系画清楚了。

光模块标准体系关系图 MSA(多源协议) 封装类MSA SFP / QSFP / QSFP-DD / OSFP 定义外形、引脚、散热 管理类MSA SFF-8472 / CMIS 定义寄存器、诊断接口 IEEE 802.3 电接口 / 光接口 / 眼图模板 定义物理层参数 配套使用 约束 约束 注:IEEE 802.3约束封装类的外形尺寸,也约束管理类的诊断参数

从这张图你能看出来:MSA是顶层框架,IEEE 802.3是底层约束,SFF-8472和CMIS是具体实现。做模块设计时,这三层都得照顾到。

4.6 实际项目中的标准选择

说了这么多理论,咱们来点实际的。假设你现在要设计一个400G QSFP-DD模块,该参考哪些标准?

  1. 封装:看QSFP-DD MSA,确定外形尺寸和金手指定义。
  2. 光口:看IEEE 802.3bs,确定是DR4还是FR4,波长和速率是多少。
  3. 管理:看CMIS 5.0,确定寄存器地址和诊断命令。

我建议你把这些标准的PDF都下载到本地,按“封装-光口-管理”的顺序建三个文件夹。调试时遇到问题,先翻对应的标准文档,别急着上网搜。网上答案十有八九是错的,尤其是那些论坛里的“经验贴”。

避坑指南:我曾经因为没仔细看CMIS的“模块状态机”章节,导致模块在Init状态卡了5秒才进入Ready。客户那边交换机超时了,直接报错。后来发现是固件里少写了一个“状态切换确认”的步骤。嗯,从那以后,我每看一个标准,都会把状态机画在纸上。

好了,这一章的内容就到这里。标准这东西,看着枯燥,但真遇到问题,它就是你的救命稻草。下一章咱们聊聊光模块的硬件设计,到时候我会分享一些画原理图的小技巧。

专注资料整理