当队列中需要传递状态和数据时,队列元素数据类型就需要由一个簇组成,这个簇包括一个与变体打包到一起的枚举类型定义。通常,该枚举类型包含了事例选择器中需要的状态。变体用来将数据从时间循环或并行子vi传递给主循环,这些数据的传递体现了生产者/消费者结构。同时,这个变体可以是多种类型的数据,但是必须为其中每个成员指定一种数据类型。
SFP光模块测试程序首先初始化队列引用和主界面中的控件,然后进入检测光模块。如果检测到光模块的插入,则主程序会读取数字诊断功能中电压、温度和偏置电流等。在大部分时间里,主程序都是在轮询地读取这些数据。如果用户在前面板有操作,此时事件循环将利用Flush Queue函数把队列清空,然后加载下几个状态,及时地响应用户的操作并且最后回到读取数字诊断功能中模拟量。
2 测试与验证
2.1测试环境
测试平台的硬件包括计算机、测试板、并口线、电源以及待测光模块。首先在计算机中安装本文开发的测试软件,其次利用并口线把计算机和测试板连接起来,再次把待测光模块插入到测试版中,并加载电源,最后打开测试软件进行测试。
连接到I
2C总线的器件输出端要是漏极开路或集电极开路才能执行传输的功能。因为计算机并口不满足这两种结构,所以本设计中在并口外接2N3906使得SDA和SCL满足集电极开路结构。
2.2 I2C总线验证
为了保证光模块测试平台稳定地工作,必须测试I
2C总线通信的稳定性。利用 I
2C总线对EEPROM进行连续读或者连续写。在图4中,C1和C2信号是对Z1和Z2信号框内部分的放大,这部分是主设备向从设备写数据。
主设备首先发送器件地址0xA0,在第9个时钟,从设备给出了一个拉低SDA的应答信号。主设备然后发送寄存器地址0x00,同样得到了应答信号。最后发送要写入的数据0x55。图中的两个时间标尺测量出写入数据操作距离下一次操作的时间,这个时间要大于等于5 ms。重复此读写过程10 000次,没有错误则证明I2C总线非常稳定。
2.3 光模块测试软件的验证
如图5所示,是对一个Maxim DS1856方案的光收发模块的检测结果。
其中5个模拟量的监控值直接反映光模块的工作状态。表1是DS1856方案实测值与软件监控值对比。
在SFF-8472协议中规定了每个模拟量的精度范围:温度误差在±3℃之内;电压误差不超过厂家标称值的3%;偏置电流误差不超过厂家标称值的10%;发射功率误差在±3 dBm之内;接收功率在±3 dBm之内。通过表1结果显示,此测试软件满足SFF-8472协议规定的误差范围。
本文使用LabVIEW设计实现了针对SFP光收发模块的测试平台。重点介绍了测试软件与SFP光模块的I2C总线通信的实现,论述了生产者/消费者结构队列状态机设计模式,提供了对该设计模式的具体实现方法,并把它应用在SFP光模块测试软件。该测试平台已经应用到企业的实际生产过程中,减少了对SFP光模块测试工作量,提高了测试效率,并且保证了所需的测试精度,具有一定的工程应用价值。
参考文献
[1] SFF-8472 specifICation for diagnostic monitoring interface for Optical Transceivers Rev 10.4[S]. 2009-01.
[2] The I2C-Bus specification version 2.1[S]. 2000-01.
[3] Blume, Peter A. The LabVIEW style book[M]. Prentice Hall, 2007-03.
[4] 程社成.带数字诊断功能的小封装光模块研究[D].武汉:武汉理工大学,2006.
上一页 [1] [2]