首 页文档资料下载资料维修视频包年699元
请登录  |  免费注册
当前位置:精通维修下载 > 文档资料 > 家电技术 > 单元电路介绍 > 其它电路
基于LabVIEW的SFP光模块测试平台的设计与实现
来源:本站整理  作者:佚名  2011-07-06 07:17:57



  随着近几年光通信的迅速发展,光通信接入网对实现光电、电光转换的光收发模块的要求越来越高,光收发模块的测试也越来越复杂。早期一般使用Visual BasIC、Visual C++开发测试软件,存在开发周期长、测试效率低等问题,本文提出了使用LabVIEW虚拟仪器技术来完成测试工作的方法,解决了测试成本高、测试效率低、测试系统松散等问题,同时它还具备远程测试以及仪器定制或自制等特点。虚拟仪器技术已经深远地影响着测试测量领域,是企业和科研单位的测试工作的重要解决方案之一。本文正是利用此项技术解决了SFP光模块测试平台开发的几个关键问题。
  1 SFP光模块测试软件的设计
  1.1软件结构

  软件由四个界面构成,实时监控界面、阈值设置界面、校准界面和光模块信息设置界面。实时监控界面是软件的主界面,它显示数字诊断功能[1]中的五个模拟量与其Alarm和Warning标志;阈值设置界面的功能是设定Alarm与Warning阈值,当实时监控值不在阈值内时会出现工作异常警示;校准界面主要是解决数据漂移,从而保证测得数据准确;模块信息设置界面是完成光模块在出厂前信息设置。软件运行的过程中用到的数据库是由ACCess数据库构成。如图1所示为软件结构图。

 1.2计算机并口模拟I2C总线
   I2C总线由四种信号组成:开始信号、停止信号、响应信号和数据发送。在计算机并口产生这些信号就要对数据地址、状态地址和控制地址进行程序设计和控制。在LPT1端口中,它们对应的地址分别为0x378、0x379和0x37A。计算机并口中的8个数据端口分别对应0x378中的B7~B0;5个状态端口分别对应0x379中的B7~B3;4个控制端口分别对应0x37A中的B3~B0。如果在以上地址的某一位上写1,计算机并口的对应端口就会产生逻辑电平高。I2C总线的SDA和SCL分别需要并口的两个端口模拟,这是因为计算机并口的特性,对地址中的数据的操作要么一直读操作要么一直写操作。
    对LPT1端口地址操作要使用LabVIEW函数库中的Out Port函数和In Port函数。Out Port函数和In Port函数是在指定的16位I/O端口地址读取和写入带符号的整数。读操作要先利用In Port函数读取LPT1端口地址上的整数数据,再转化为无符号数据并求出特定位的布尔量,最后得到该位对应端口的逻辑电平。写操作就是先利用In Port函数读取LPT1端口地址上的整数数据,再转化为无符号数据并修改其中某一位的值,最后利用Out Port函数把修改后的数据转化为整数数据并写入LPT1端口地址,从而改变对应端口的逻辑电平。
    I2C总线的四种信号通过SDA和SCL的组合形式如下:(1)开始信号:在SCL高电平期间,SDA由高变为低,将产生一个开始信号;(2)停止信号:在SCL高电平期间,SDA由低变高,将产生一个停止信号;(3)应答信号:传输一个字节后的第9个时钟,若从设备把SDA拉低,表明有应答信号,反之则无;(4)数据传输:数据传输过程中,数据的改变都必须在SCL低电平期间,在SCL为高电平期间必须保持SDA信号的稳定[2]。
   按照时序要求依次可以编写出I2C start、I2C send、I2C ack和I2C stop四种I2C总线信号的vi,其中I2C send这个vi既能发送地址又能发送数据。最后由这些vi组成如图2所示的完整I2C总线数据传输。

1.3 生产者/消费者结构队列状态机
    设计模式是在解决问题的过程中,由一些良好思路的经验集成的。在LabVIEW中,它包括结构、函数、控件和错误处理的布局,它形成了一个通用的结构来完成一些常见的任务。设计模式可实现模块重用,并提高软件生产效率和质量[3]。
    生产者/消费者结构是一种常用的设计模式,它主要用于数据采集系统。一般的数据采集系统包括数据采集、数据分析和结果显示三个步骤。如果将这三个步骤按照常规的顺序执行,则数据分析导致的时间延迟会增大数据采集的周期。采用生产者/消费者结构的数据采集系统,它通过并行的方式实现多个循环,可以很好地解决这一问题。一个循环不断地采集数据(生产者),另一个循环不断地处理数据(消费者),这两个循环互相通信,但又不产生干涉。
    队列状态机也是一种常用的设计模式,它对经典状态机做了很大的改进。在经典状态机中,移位寄存器的状态转移方式受限于每个循环间隔内一个指定新状态或应用程序的状态。而队列状态机则通过LabVIEW的队列结构缓存一个队列的多状态,使得应用程序的任何状态都可以通过调用Enqueue Element函数在该队列的后端增加任意数量的新状态,这类似于先进先出缓冲器。
  生产者/消费者结构队列状态机最早是由Anthony Lukindo提出和改进,它结合以上两种设计模式优点,其结构示意图如图3所示。

    从图中可以看出,该设计模式由四部分组成:队列引用、事件循环、主循环和并行子vi。事件循环和并行子vi为生产者,主循环是消费者,生产者和消费者之间的消息与数据的传递是通过队列引用来实现的。事件循环由Event结构和While循环组成。主循环由Case结构和While循环组成,其中Case结构有两个,分别是主Case结构和错误Case结构。队列引用是由LabVIEW中的队列操作中的函数组成,其中最常用的函数为Obtain Queue、Enqueue Element、Dequeue Element和Release Queue等。图中的虚线是指并行子vi可以不通过队列引用而和主循环进行连接。
    生产者/消费者结构队列状态机的实现如下:Obtain Queue函数和Enqueue Element函数在While循环左侧初始化队列。枚举类型定义控件端子连接到Obtain Queue函数的数据类型端子,这样就可以指定队列的数据类型。枚举常量由枚举类型创建,并连线到Enqueue Element函数的端子。Initialize状态是添加到队列中的第一项,它是状态机执行的第一个状态。Dequeue Element函数位于主Case结构之外的错误Case结构的NO Error事例中。如果在错误簇中没有出现错误,则下一状态就会从队列移出,并传送到主Case结构的选择器端子;如果发生错误,则有General Error Handle VI来报告错误,并且执行Shutdown状态。Case结构的每个事例中,事件循环和并行子vi都可以使用Enqueue Element函数来增加其他的状态。此外,为了能够立即执行,可以使用Enqueue Element At Opposite End函数在队列的前端增加一个状态。这使得应用程序能够及时响应高优先级的操作或事件。当用户要退出应用程序时,必须利用Release Queue函数释放队列引用,同时释放队列所占用的内存空间。

[1] [2]  下一页

关键词:

文章评论评论内容只代表网友观点,与本站立场无关!

   评论摘要(共 0 条,得分 0 分,平均 0 分)
Copyright © 2007-2017 down.gzweix.Com. All Rights Reserved .
页面执行时间:93,546.88000 毫秒