《電子技術應用》
您所在的位置:首頁 > 测试测量 > 设计应用 > 基于LabVIEW的SFP光模块测试平台的设计与实现
基于LabVIEW的SFP光模块测试平台的设计与实现
来源:电子技术应用2011年第4期
曾 剑, 周剑扬, 刘舜奎
厦门大学 电子工程系, 福建 厦门 361005
摘要: 介绍了一种利用LabVIEW构建SFP(Small Form-factor Pluggable)光模块测试平台的方法。测试平台通过读写计算机并口来映射地址上的数据,控制并口端口的逻辑电平实现计算机并口模拟I2C总线。计算机利用模拟的I2C总线与SFP光模块实现通信。分析了生产者/消费者结构队列状态机并用于设计中,该设计模式可以及时响应前面板动作或外部事件,并且使得状态机的状态变换更加灵活多变。
中圖分類號: TN929.11
文獻標識碼: A
文章編號: 0258-7998(2011)04-0067-03
Design and implementation of testing platform of small form-factor pluggable transceiver based on LabVIEW
Zeng Jian, Zhou Jianyang, Liu Shunkui
Department of Electronic Engineering, Xiamen University, Xiamen 361005, China
Abstract: This paper introduces a method of constructing a SFP(small form-factor pluggable) transceiver testing platform by using LabVIEW. The testing platform controls the logic level of parallel port to simulate I2C Bus by reading and writing the data of address which map to the parallel port. The computer can attach to the SFP transceiver by means of the I2C Bus. This paper also analyzes and applies queued state machine-producer consumer architecture, this kind of design style can respond to the action of front panel or external happening without delay. What’s more, it can make transformation of state more flexible and changeable.
Key words : SFP transceiver; queued state machine-producer consumer architecture; parallel port simulate I2C bus


     隨著近幾年光通信的迅速發展,光通信接入網對實現光電、電光轉換的光收發模塊的要求越來越高,光收發模塊的測試也越來越復雜。早期一般使用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函數釋放隊列引用,同時釋放隊列所占用的內存空間。
    當隊列中需要傳遞狀態和數據時,隊列元素數據類型就需要由一個簇組成,這個簇包括一個與變體打包到一起的枚舉類型定義。通常,該枚舉類型包含了事例選擇器中需要的狀態。變體用來將數據從時間循環或并行子vi傳遞給主循環,這些數據的傳遞體現了生產者/消費者結構。同時,這個變體可以是多種類型的數據,但是必須為其中每個成員指定一種數據類型。
  SFP光模塊測試程序首先初始化隊列引用和主界面中的控件,然后進入檢測光模塊。如果檢測到光模塊的插入,則主程序會讀取數字診斷功能中電壓、溫度和偏置電流等。在大部分時間里,主程序都是在輪詢地讀取這些數據。如果用戶在前面板有操作,此時事件循環將利用Flush Queue函數把隊列清空,然后加載下幾個狀態,及時地響應用戶的操作并且最后回到讀取數字診斷功能中模擬量。
2 測試與驗證
2.1測試環境

  測試平臺的硬件包括計算機、測試板、并口線、電源以及待測光模塊。首先在計算機中安裝本文開發的測試軟件,其次利用并口線把計算機和測試板連接起來,再次把待測光模塊插入到測試版中,并加載電源,最后打開測試軟件進行測試。
  連接到I2C總線的器件輸出端要是漏極開路或集電極開路才能執行傳輸的功能。因為計算機并口不滿足這兩種結構,所以本設計中在并口外接2N3906使得SDA和SCL滿足集電極開路結構。
2.2 I2C總線驗證
  為了保證光模塊測試平臺穩定地工作,必須測試I2C總線通信的穩定性。利用 I2C總線對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.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 久久免费观看视频| 国产精品一区免费观看| 亚洲国产精品www| 久久精品美女视频网站| 国产乱子夫妻xx黑人xyx真爽 | 国产精品激情自拍| 国产精品第一视频| 国产精品亚洲视频在线观看| 青青精品视频播放| 国产精品第3页| 久久精品人人做人人爽| 国产精品一区二区三区观看| 久久超碰亚洲| 久久国产成人精品国产成人亚洲| 欧美激情精品在线| 亚洲熟妇无码一区二区三区 | 91国产在线播放| 国产精品丝袜一区二区三区| 久久精品亚洲热| 国模吧一区二区| 亚洲熟妇无码另类久久久| 午夜免费电影一区在线观看| 国产精品精品久久久久久| 国产精品国产三级国产专播精品人| 亚洲欧美在线网| 亚洲五月六月| 精品中文字幕在线| 国产精品麻豆va在线播放| 日韩中文字幕第一页| 久久久久久av| 国产精品极品在线| 欧美亚洲日本在线观看| 国产一区二区视频免费在线观看| 国产美女三级视频| 国产精品免费观看久久| 91久久久久久久久| 日韩av高清| 精品国产免费人成电影在线观...| 久久久久人妻精品一区三寸| 白嫩少妇丰满一区二区| 久久精品国产v日韩v亚洲|