2、SFP接口信号定义:电源与地信号、高速差分信号、控制信号
好,咱们今天来聊聊SFP接口的那些信号线。说实话,很多刚入行的朋友拿到SFP的datasheet,一看几十个引脚就头大。其实没那么复杂,我把它分成三大类来讲:电源与地、高速差分信号、控制信号。搞懂了这三块,你基本就能上手了。
2.1 电源与地信号
先说说最基础的——供电。SFP模块需要两组电源:VccT(发射端电源)和VccR(接收端电源)。
| 信号名 | 引脚号 | 说明 |
|---|---|---|
| VccT | 1 | 发射器电源,+3.3V |
| VccR | 14 | 接收器电源,+3.3V |
| GND | 2, 3, 6, 9, 13, 16, 17, 20 | 地信号,共8个引脚 |
我个人习惯,在PCB布局时会把VccT和VccR分开走线,中间用地隔离。为什么?因为发射端和接收端的工作状态不一样,发射时电流大,容易把噪声耦合到接收端。我在一个10G项目中就吃过这个亏,当时没注意电源隔离,结果接收灵敏度怎么也上不去。后来把电源分开,问题就解决了。
地信号有8个引脚,这可不是随便放的。它们分布在模块的两侧,形成一种“包围”结构,目的就是给高速信号提供一个干净的回流路径。你想想看,高速信号频率那么高,回流路径稍微长一点,EMI问题就来了。
2.2 高速差分信号
这部分是SFP的核心——数据通路。包括两对差分线:
- TD+ / TD-(Transmit Data):发送差分对,从FPGA到光模块
- RD+ / RD-(Receive Data):接收差分对,从光模块到FPGA
这两对信号都是CML(电流模式逻辑)电平,典型摆幅在400-800mV之间。嗯,这里要注意,CML是直流耦合的,不像LVDS那样需要共模电压。所以你在设计时,FPGA和SFP之间可以直接连接,不需要额外的偏置电阻。
- 数据速率:最高可达4.25Gbps(SFP标准),实际常用1.25Gbps或2.5Gbps
- 差分阻抗:100Ω ±10%
- 耦合方式:AC耦合(模块内部已集成电容)
我曾经在调试一个2.5G项目时,发现眼图总是张不开。查了半天,原来是PCB走线时差分对间距没控制好,导致阻抗不连续。说白了,高速信号就是“细节决定成败”。差分对要等长、要对称、要远离其他信号,这些老生常谈的东西,真出了问题才知道有多重要。
2.3 控制信号
控制信号是SFP的“大脑”,负责管理模块的工作状态。一共5个信号,我一个个说。
2.3.1 TX_Disable(发射禁用)
这个信号高电平有效。拉高时,光模块的激光器关闭,不发光。拉低时正常工作。为什么需要这个功能?
- 系统初始化时,先关闭发射,等配置完成再开启
- 故障保护,比如检测到光纤断开,可以主动关闭发射
- 省电模式,不用的通道关掉
我建议你在FPGA里给这个信号加一个上拉电阻(10kΩ到3.3V)。为什么?因为模块上电瞬间,FPGA的IO口可能处于高阻态,如果不加下拉,TX_Disable会浮空,导致模块误动作。我曾经遇到过,上电时模块莫名其妙发光,查了半天就是这个问题。
2.3.2 TX_Fault(发射故障)
这是模块给主机的反馈信号。当激光器出现故障(比如偏置电流异常、温度过高),这个引脚会拉高。正常工作时为低电平。
嗯,这里有个坑:TX_Fault是开漏输出,需要外部上拉电阻。很多新手忘了加,结果读到的电平永远是低,故障检测形同虚设。我一般用4.7kΩ上拉到3.3V。
2.3.3 Mod_Defs(模块定义)
这个信号其实是I2C接口的时钟和数据线。SFP模块内部有一个EEPROM,存储了模块的型号、序列号、速率、波长等信息。主机通过I2C读取这些信息,实现“即插即用”。
Mod_Defs包括两个引脚:
- Mod_Def0:接地,用于识别模块类型
- Mod_Def1:SCL(I2C时钟)
- Mod_Def2:SDA(I2C数据)
注意,I2C地址是固定的:写地址0xA0,读地址0xA1。EEPROM大小为256字节,前128字节是标准定义,后128字节是厂商自定义。
2.3.4 Rate_Select(速率选择)
这个信号用于选择模块的工作速率。有些SFP模块支持多速率(比如1G和2.5G),通过这个引脚切换。高电平选择高速率,低电平选择低速率。
不过说实话,现在大多数SFP模块都是固定速率的,这个引脚直接接地或悬空就行。如果你用的是多速率模块,记得在FPGA里控制这个引脚的电平。
2.3.5 LOS(信号丢失)
LOS是接收端的“眼睛”。当接收光功率低于某个阈值时,这个引脚会拉高,告诉主机“我没收到信号”。正常工作时为低电平。
LOS也是开漏输出,需要外部上拉。它的响应时间一般在100μs以内,所以你可以用它来做快速链路检测。
2.4 知识体系总览
为了让你更直观地理解这些信号的关系,我画了一张图。你看一眼就明白了。
这张图把SFP接口的信号分成了三大块。左边是电源与地,中间是高速数据通路,右边是控制管理。你设计驱动时,就按这个框架来,思路会清晰很多。
好了,这一节的内容就这些。记住,SFP接口说复杂也复杂,说简单也简单。关键是把每个信号的作用搞清楚,然后按照规范去设计。下一节我们开始讲具体的驱动编写,到时候我会带着你一步步实现。