光模块sff-8472解析

上传人:mg****85 文档编号:44611576 上传时间:2018-06-14 格式:PDF 页数:5 大小:128.46KB
返回 下载 相关 举报
光模块sff-8472解析_第1页
第1页 / 共5页
光模块sff-8472解析_第2页
第2页 / 共5页
光模块sff-8472解析_第3页
第3页 / 共5页
光模块sff-8472解析_第4页
第4页 / 共5页
光模块sff-8472解析_第5页
第5页 / 共5页
亲,该文档总共5页,全部预览完了,如果喜欢就下载吧!
资源描述

《光模块sff-8472解析》由会员分享,可在线阅读,更多相关《光模块sff-8472解析(5页珍藏版)》请在金锄头文库上搜索。

1、光模块用 SFF-8472 解析 1、 SFF-8472 的生父 SFF Committee(Small Form Factor Committee 小外形规格委员会) ,成立于 1990 年,按照英文版维基百科的说辞,它当时是为了给便携式电脑定义新型磁盘驱动器的外形而成立的, 所以我们可以看到它的一个协议 SFF-8004 就规定了 2.5 寸硬盘的外形尺寸,所以我们可以看到在该委员会中以结构件设计生产而闻名的 Molex 公司也赫然在列。 Avago,Finisar,IBM,Infineon,Intel,JDSU,Micrel,Vitesse 等公司为 8472投了赞成票,AMCC,Fuj

2、ikura,Dell,Molex,Seagate,Tyco 等公司投了弃权票。这很容易理解,8472 是一个关于光学器件的数字监控方面的多元协议,对投弃权票的公司而言业务相关性并不强, 所以说有一种成功叫撤退, 有一种弃权叫谨慎。 有意思的是, 尽管 Seagate弃权了,但所有 SFF 协议仍然可以 SFF 委员会指定的官网地址进行下载ftp:/ 2、 SFF-8472 是典型的 00 后,首次开盘 Rev1.0 时间是 2001 年清明节,最新的版本是Rev11.0。当然,一般而言,2004 年儿童节出炉的 Rev9.5,就足以应付现有的大部分光模块了。 所以光模块市场一直就只有这么滴点儿

3、大, 跟这几个特定的发布日期是有某种联系的。 与 8472 关联最密切的三个协议,分别是 SFF-8053 GBIC,INF-8074 SFP 和 I2C Specification。8472+I2C,这两个协议合起来就无敌了,它既需要软件工程师去关心硬件上的信号的建立和保持时间甚至是时钟信号的占空比, 也需要硬件工程师去关心软件上的串行信号时序和相关通信协议。 尤其这协议是从洋人手中得来的, 首先这 E 文字面就容易转义,而埋藏在 E 文字面间的内涵,所有读过 8472 的人都会有这样的感慨:那是读一次有一次收获,久了不读就只能记得点皮毛了。 3、 SFF-8472 的 A0 和 A2,这两

4、个十六进制数值,这实际上是两个 I2C 从设备地址,每个从设备地址可以访问到 256 个 byte 的数据。 A0 里面装的是一些常量,主要标识模块类型接头速率波长传输距离等, 也包含产品标签序列码生产日期和对数字监控功能的支持项等,一般用户是不能修改的,所以 ZTE 为了避免误操作还特意要求 A0 写保护。 A2 才是 8472的独特之处,不仅装一些常量,比如监控量的上下限值和外部校准参数,还装了一些只读的变量,比如实时监控量及其报警标志位和当前状态,甚至还有一些可写的变量,比如Soft-TxDisable 控制位,更(不)爽的是其下半身有相当一部分,即 A2128.247,是可以让用户自由

5、读写的 EEPROM,这里的“爽”是针对上位机即系统板而言的,不用往下位机的密码区 A2123.126输入特定密码上电即可读写下位机的 A2128.247;这里的“(不)”是针对下位机即光模块而言的,它将额外占用光模块的微处理器大约 1/8k Byte 的 RAM 及EEPROM 或 FLASH,并增加在写 EEPROM 时下位机 NACK 的风险。 扩展一下,这里的A0 和 A2 地址值, 是 8472 规定的从设备地址值, 如果从设备的原始地址值不是 A0 和 A2,那么需要从原始地址值经过一套复杂的 I2C 操作改成 A0 和 A2,这在 8472 中被称之为Addressing Mod

6、es,8472 中提到首先要求 A092.bit2=1,其次就是一套复杂的 I2C 操作,要用到 I2C 协议规定的广播地址 00 和 CBUS 总线地址 04,先把 xxxxxx10 地址值改成10100010 即 A2,再把 xxxxxx00 地址值改成 10100000 即 A0。这里有一点令我困惑的地方,既然原始地址值没有 A0,何来的 A092.bit2=1 这个前提条件呢?所以我以为A092.bit2=1 不是前提条件,而是一个标志位,显示当前 A0/A2 地址值是从其他地址值改过来的。 4、 SFF-8472 里看不见的 NACK ,这是在通篇 8472 中都没有出现的关键词,全

7、称 not acknowledge,翻译成中文可做“不响应”,更可按某位自称“以卖维生”的销售老大的话来简称为“不应”。它是 I2C 主从设备通信时唯一的出错标志,I2C 协议规定一旦下位机 NACK 了(比如下位机正在做一些其他不可中断的事情时对上位机的命令就不响应了) ,上位机应该发一个 STOP 放弃此次操作,或者再一个 START 重新发起一次操作。 其实下位机在某个特定的时刻不响应,也不能说就是下位机的错,因为下位机忙得正欢呢。而 I2C 协议同样也没有对忙得正欢的这段时间(按销售老大的话套下来,似乎可以简称为“不应期”)做出具体定义,只说在 Hs-mode(速率从 0 到 3.4M

8、bit/s)模式下从设备可以在 ACK 后拉底 SCL信号线来告诉上位机我正忙着呢; 但是对光模块而言, 通常是在100 kbit/s的Standard-mode模式下混饭吃,只有 10G 光模块才提到了 400 kbit/s 的 Fast-mode 模式但也不是强制要求的。 关于“不应期”的具体解释, 只能从第三方获取了, 比如ST意法半导体公司在其ST24C02的 datasheet 中称之为 Tw(Write Time) ,典型值 10ms;比如 ATMEL 爱特梅尔公司在其AT24C02 的 datasheet 中称之为 Twr(Write Cycle Time)典型值 5ms;都是指

9、在上位机写下位机后,必须等待一段时间让下位机把接收到的数据写入到 EEPROM 中,再发起下一次I2C 操作的等待时间。 正是因为 8472 协议中没有提到 NACK,在 I2C 协议中没有规定不应期,所以 NACK 像一颗沉默的地雷,已经和正在酿成 N 多血案。前面小节提到的“写EEPROM 时下位机 NACK 的风险”,即是此例,因为系统板完全可能无视 8472 中提到的“Consult vendor datasheets for any limits on writing to these locations, including timing and maximum number of

10、 writes”要求,无视 I2C 协议中提到的 NACK,而提出更多非份的操作,血案就不可避免。 5、 SFF-8472 的 A00.95 定义得比较绕,有点像浙版西游记电视连续剧里面的唐僧,修的是正果但死到临头了还在跟红孩儿推心置腹地讲因果。 究其原因可能是为了囊括层出不穷的不同类型模块, 层层叠叠地打补丁造成的; 这就是 MSA 即多源协议的特点, 谁都是亲爹,但娃只有一个,所以 DNA 的成分就比较杂乱了。 A0 里面跟 8472 的核心,DDMI 数字监控相关的,是 A092.bit6,当 A092.bit6=1 时,表示该模块支持数字监控功能,将实现对RxPWR,TxPWR,Bia

11、sCurrent,VCC 和 Temperature 的采样,同时这五个采样值的上下限告警阈值也必须写入到 A20.55。 A093也是值得注意的主儿, 比如当 A093.bit6=1 时,说明模块支持 Soft-TxDisable 的控制和监视功能。 6、 SFF-8472 的几个关键时序要求 8472 提到,当 A2110.bit6 即 Soft-TxDisable 控制位的状态发生变化时,100ms 内必须在硬件上体现出来;而 SFP 协议规定,当 TxDisable 硬件管脚的状态发生变化时,10us 内必须禁止发光,1ms 内发端光功率必须达到正常光功率的 90%。8472 还提到,

12、上电后 300ms 内 I2C 必须准备好和上位机通信,300ms 内发端开始正常发光,1000ms 内必须完成初始化和第一次采样监控后清零 A2110.bit0。 7、 SFF-8472 的 DDMI DDMI 全称 Ditital Diagnostics Mornitoring Interface,数字监控接口。这是区别于更早时期推出来的 SFF 光模块的模拟监控接口。SFF 光模块没有 I2C 这种数字串行通信接口,它有四个硬件管脚连接到系统板,可以采样到 TxPWR 和 BiasCurrent的模拟信号。 数字接口固然方便,但是也有 HW 担忧的地方:“读 DDM 参数的两个高低字节的

13、过程中,可能会出现 DDM 监控量的更新。如果读高字节时不把低字节数据锁存起来,最后读到的结果可能是上次 DDM 值的高字节与下次 DDM 的低字节组合起来的错误的结果,引起监控的误差。比如恰好上次是 0x00FF,下次是 00100,错误的组合将导致 DDM 是00000,即接收功率显示无光。” 这个问题实际在 8472 中早已规定好了,对主设备而言,从下位机读双字节的监控量,必须是双字节连续读的 I2C 时序;对从设备而言,应该避免在上位机读监控量时去更新双字节的监控量。但是,如果主设备不遵守 8472 协议,而采取单字节读,则完全可能在第一秒读到高字节=000,在第十秒读低字节=000,

14、合在一起就是 00000 这个错误值了。 8、 SFF-8472 的五个监控量的计算 A092.bit5=1,内部校准:,内部校准: Temperature (单位 Celsius degree,量程-128C+127.99C,准确度误差3 摄氏度) = (signed short int) (A2968 + A297) * (1/256); VCC (单位 V,量程 0+6.55V,准确度误差3%;所以在 10G XFP 协议中就没有出现对电压的监控要求了, 我猜测是因为 12V 就超量程了, 而-5V 更是莫法表示) = (unsigned short int) (A2988 + A299

15、) * (100E-6); BiasCurrent (单位 mA,量程 0131 mA,准确度误差10%) = (unsigned short int) (A21008 + A2101) * (2E-3); TxPWR (单位 mW,06.5535 mW 即-40+8.2 dBm,准确度误差3dB;所以 ZTE 曾经提出过一款 PX20+产品要求发端光功率最大到+8.5dBm,不说硬件上不容易实现,在软件上连监控值都溢出了; 另外8472提到在TxDisable情况下, 该监控值无效, 所以在TxDisable时清零 TxPWR 是没有什么意义的) = (unsigned short int)

16、 (A21028 + A2103) * (0.1E-3); RxPWR (单位 mW, 06.5535 mW 即-40+8.2 dBm, 准确度误差3dB) = (unsigned short int) (A21048 + A2105) * (0.1E-3); A092.bit4=1,外部校准,外部校准,需要用到 A256.95存储的校准参数,计算过程就相对复杂得多,光是把收端光功率监控所需的 4byte 系数按照 IEEE Std 754-1985 格式转换成 float 数就够伤神的了,而 APD 器件的 RxPWR 计算甚至需要用到四次多项式的浮点运算,这对系统板来说无异于是场噩梦;所以目前模块都很少用外部校准了。支持内部校准的模块,至少是带 APD 的支持内部校准的模块,多

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号