第二章:硬件接口与引脚定义

各位工程师朋友,今天我们来聊聊QSFP28模块的硬件接口。这部分内容,说白了就是模块和系统怎么「握手」的。我刚开始接触100G光模块时,总觉得引脚定义就是看看datasheet的事,直到有一次板子打样回来,模块死活不工作……嗯,从那以后,我再也不敢小看这些引脚了。

2.1 金手指引脚排列

QSFP28模块的金手指,一共38个引脚。你想想看,要在这么小的空间里塞下高速信号、电源、控制信号,设计难度其实不小。我个人习惯把引脚分成几类来记:

  • 高速信号引脚:TX/RX各4路,每路差分对
  • 电源引脚:Vcc、VccTx、VccRx
  • 控制引脚:SCL、SDA、ModSelL、ResetL、IntL、ModPrsL
  • 地引脚:GND,数量最多

这里有个容易踩的坑——引脚编号是从金手指的「卡扣侧」开始数的。我在项目中遇到过好几次,工程师把引脚编号搞反了,结果飞线飞得想哭。

关键提醒:QSFP28的38个引脚中,有12个是GND。别嫌多,高频信号对地的完整性要求极高,少一个地都可能带来信号完整性问题。

2.2 电源管理:Vcc / VccTx / VccRx

QSFP28模块的电源设计,比我想象中要讲究。它有三个独立的电源域:

电源引脚 典型电压 供电对象
Vcc 3.3V 模块内部逻辑、MCU、控制电路
VccTx 3.3V 发射端激光驱动器、TOSA
VccRx 3.3V 接收端跨阻放大器、ROSA

为什么要分开供电?说白了,就是防止串扰。发射端的激光器驱动电流很大,瞬间电流变化能到几十毫安。如果和接收端共用电源,接收灵敏度会受影响。我记得有一次调试,接收端误码率一直下不来,最后发现是VccTx和VccRx在PCB上没做隔离,加了个磁珠就好了。

避坑指南:我曾经遇到过模块上电时序不对导致无法识别的问题。建议先给Vcc供电,再给VccTx和VccRx。虽然QSFP28规范没有严格要求,但很多模块内部有上电复位电路,顺序错了可能锁死。

2.3 I2C总线接口:SCL / SDA

I2C总线是模块和主机通信的「命脉」。QSFP28使用标准的I2C协议,地址是0xA0(写)和0xA1(读)。

这里有几个要点:

  • 速率:标准模式100kHz,快速模式400kHz。别跑太快,有些模块扛不住。
  • 上拉电阻:SCL和SDA需要上拉到Vcc,阻值通常选4.7kΩ~10kΩ。我习惯用4.7kΩ,兼容性最好。
  • 电平:3.3V逻辑,但有些系统用1.8V,需要电平转换。

个人经验:调试I2C时,先量一下SCL和SDA的波形。如果上升沿太缓,说明上拉电阻太大了;如果信号有毛刺,可能是地回路不好。我一般先用示波器抓一下,确认没问题再写代码。

2.4 控制信号详解

这四个控制信号,每个都有自己的脾气。我们来逐个拆解:

ModSelL(模块选择,低有效)

这个信号用来选中模块。当ModSelL为低时,模块的I2C接口才响应。多端口系统中,每个模块的ModSelL是独立的。嗯,这里要注意:ModSelL必须在I2C通信前至少10μs拉低,否则模块可能不响应。

ResetL(复位,低有效)

拉低ResetL至少10μs,模块就会复位。复位后模块会重新初始化,大概需要100ms才能正常工作。我曾经犯过一个错——复位后立刻读寄存器,结果读回来的全是0xFF。后来加了延时就好了。

IntL(中断,低有效)

模块有异常时会拉低IntL,比如温度过高、电压异常、激光器失效等。主机可以通过I2C读取中断状态寄存器,看看具体是什么问题。我个人习惯在中断服务程序里只做标记,不要在里面做复杂的I2C读写。

ModPrsL(模块在位,低有效)

这个信号最简单——模块插进去就拉低,拔出来就变高。可以用来检测模块是否在位。但要注意:ModPrsL只是机械检测,不代表模块已经初始化完成。我见过有人用ModPrsL来判断模块是否就绪,结果吃了亏。

总结一下时序关系:上电后,先等ModPrsL变低,再拉低ModSelL,然后通过I2C读取模块信息。如果一切正常,IntL应该保持高电平。如果IntL变低,就去查中断寄存器。

2.5 知识体系结构图

下面这张图,是我自己整理的知识框架。你可以把它当作调试时的「地图」:

QSFP28 硬件接口知识体系 电源管理 通信接口 控制信号 Vcc 3.3V VccTx 3.3V VccRx 3.3V SCL(时钟线) SDA(数据线) ModSelL ResetL IntL ModPrsL 关键要点:上电时序 → I2C通信 → 状态监测 调试建议: 1. 先确认电源电压和纹波 2. 用示波器抓I2C波形 3. 检查控制信号时序是否满足规范

我的调试习惯:拿到一个新模块,我一般先测ModPrsL,确认模块插好了。然后测Vcc电压,3.3V±5%都算正常。接着用逻辑分析仪抓I2C,看看能不能读到模块的ID寄存器。如果这些都过了,再去看高速信号。

好了,这一章的内容就到这里。硬件接口这部分,说白了就是「电源要稳、通信要通、控制要对」。你把这些搞清楚了,后面调试光模块就会顺手很多。


公众号:蓝海资料掘金营,微信deep3321