《電子技術應用》
您所在的位置:首頁 > 測試測量 > 設計應用 > 基于LabVIEW的SFP光模塊測試平臺的設計與實現(xiàn)
基于LabVIEW的SFP光模塊測試平臺的設計與實現(xiàn)
來源:電子技術應用2011年第4期
曾 劍, 周劍揚, 劉舜奎
廈門大學 電子工程系, 福建 廈門 361005
摘要: 介紹了一種利用LabVIEW構建SFP(Small Form-factor Pluggable)光模塊測試平臺的方法。測試平臺通過讀寫計算機并口來映射地址上的數(shù)據(jù),控制并口端口的邏輯電平實現(xiàn)計算機并口模擬I2C總線。計算機利用模擬的I2C總線與SFP光模塊實現(xiàn)通信。分析了生產者/消費者結構隊列狀態(tài)機并用于設計中,該設計模式可以及時響應前面板動作或外部事件,并且使得狀態(tài)機的狀態(tài)變換更加靈活多變。
中圖分類號: 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


     隨著近幾年光通信的迅速發(fā)展,光通信接入網對實現(xiàn)光電、電光轉換的光收發(fā)模塊的要求越來越高,光收發(fā)模塊的測試也越來越復雜。早期一般使用Visual Basic、Visual C++開發(fā)測試軟件,存在開發(fā)周期長、測試效率低等問題,本文提出了使用LabVIEW虛擬儀器技術來完成測試工作的方法,解決了測試成本高、測試效率低、測試系統(tǒng)松散等問題,同時它還具備遠程測試以及儀器定制或自制等特點。虛擬儀器技術已經深遠地影響著測試測量領域,是企業(yè)和科研單位的測試工作的重要解決方案之一。本文正是利用此項技術解決了SFP光模塊測試平臺開發(fā)的幾個關鍵問題。
1 SFP光模塊測試軟件的設計
1.1軟件結構

  軟件由四個界面構成,實時監(jiān)控界面、閾值設置界面、校準界面和光模塊信息設置界面。實時監(jiān)控界面是軟件的主界面,它顯示數(shù)字診斷功能[1]中的五個模擬量與其Alarm和Warning標志;閾值設置界面的功能是設定Alarm與Warning閾值,當實時監(jiān)控值不在閾值內時會出現(xiàn)工作異常警示;校準界面主要是解決數(shù)據(jù)漂移,從而保證測得數(shù)據(jù)準確;模塊信息設置界面是完成光模塊在出廠前信息設置。軟件運行的過程中用到的數(shù)據(jù)庫是由Access數(shù)據(jù)庫構成。如圖1所示為軟件結構圖。

1.2計算機并口模擬I2C總線
    I2C總線由四種信號組成:開始信號、停止信號、響應信號和數(shù)據(jù)發(fā)送。在計算機并口產生這些信號就要對數(shù)據(jù)地址、狀態(tài)地址和控制地址進行程序設計和控制。在LPT1端口中,它們對應的地址分別為0x378、0x379和0x37A。計算機并口中的8個數(shù)據(jù)端口分別對應0x378中的B7~B0;5個狀態(tài)端口分別對應0x379中的B7~B3;4個控制端口分別對應0x37A中的B3~B0。如果在以上地址的某一位上寫1,計算機并口的對應端口就會產生邏輯電平高。I2C總線的SDA和SCL分別需要并口的兩個端口模擬,這是因為計算機并口的特性,對地址中的數(shù)據(jù)的操作要么一直讀操作要么一直寫操作。
    對LPT1端口地址操作要使用LabVIEW函數(shù)庫中的Out Port函數(shù)和In Port函數(shù)。Out Port函數(shù)和In Port函數(shù)是在指定的16位I/O端口地址讀取和寫入帶符號的整數(shù)。讀操作要先利用In Port函數(shù)讀取LPT1端口地址上的整數(shù)數(shù)據(jù),再轉化為無符號數(shù)據(jù)并求出特定位的布爾量,最后得到該位對應端口的邏輯電平。寫操作就是先利用In Port函數(shù)讀取LPT1端口地址上的整數(shù)數(shù)據(jù),再轉化為無符號數(shù)據(jù)并修改其中某一位的值,最后利用Out Port函數(shù)把修改后的數(shù)據(jù)轉化為整數(shù)數(shù)據(jù)并寫入LPT1端口地址,從而改變對應端口的邏輯電平。
    I2C總線的四種信號通過SDA和SCL的組合形式如下:(1)開始信號:在SCL高電平期間,SDA由高變?yōu)榈?,將產生一個開始信號;(2)停止信號:在SCL高電平期間,SDA由低變高,將產生一個停止信號;(3)應答信號:傳輸一個字節(jié)后的第9個時鐘,若從設備把SDA拉低,表明有應答信號,反之則無;(4)數(shù)據(jù)傳輸:數(shù)據(jù)傳輸過程中,數(shù)據(jù)的改變都必須在SCL低電平期間,在SCL為高電平期間必須保持SDA信號的穩(wěn)定[2]。
    按照時序要求依次可以編寫出I2C start、I2C send、I2C ack和I2C stop四種I2C總線信號的vi,其中I2C send這個vi既能發(fā)送地址又能發(fā)送數(shù)據(jù)。最后由這些vi組成如圖2所示的完整I2C總線數(shù)據(jù)傳輸。

1.3 生產者/消費者結構隊列狀態(tài)機
    設計模式是在解決問題的過程中,由一些良好思路的經驗集成的。在LabVIEW中,它包括結構、函數(shù)、控件和錯誤處理的布局,它形成了一個通用的結構來完成一些常見的任務。設計模式可實現(xiàn)模塊重用,并提高軟件生產效率和質量[3]。
    生產者/消費者結構是一種常用的設計模式,它主要用于數(shù)據(jù)采集系統(tǒng)。一般的數(shù)據(jù)采集系統(tǒng)包括數(shù)據(jù)采集、數(shù)據(jù)分析和結果顯示三個步驟。如果將這三個步驟按照常規(guī)的順序執(zhí)行,則數(shù)據(jù)分析導致的時間延遲會增大數(shù)據(jù)采集的周期。采用生產者/消費者結構的數(shù)據(jù)采集系統(tǒng),它通過并行的方式實現(xiàn)多個循環(huán),可以很好地解決這一問題。一個循環(huán)不斷地采集數(shù)據(jù)(生產者),另一個循環(huán)不斷地處理數(shù)據(jù)(消費者),這兩個循環(huán)互相通信,但又不產生干涉。
    隊列狀態(tài)機也是一種常用的設計模式,它對經典狀態(tài)機做了很大的改進。在經典狀態(tài)機中,移位寄存器的狀態(tài)轉移方式受限于每個循環(huán)間隔內一個指定新狀態(tài)或應用程序的狀態(tài)。而隊列狀態(tài)機則通過LabVIEW的隊列結構緩存一個隊列的多狀態(tài),使得應用程序的任何狀態(tài)都可以通過調用Enqueue Element函數(shù)在該隊列的后端增加任意數(shù)量的新狀態(tài),這類似于先進先出緩沖器。
  生產者/消費者結構隊列狀態(tài)機最早是由Anthony Lukindo提出和改進,它結合以上兩種設計模式優(yōu)點,其結構示意圖如圖3所示。

    從圖中可以看出,該設計模式由四部分組成:隊列引用、事件循環(huán)、主循環(huán)和并行子vi。事件循環(huán)和并行子vi為生產者,主循環(huán)是消費者,生產者和消費者之間的消息與數(shù)據(jù)的傳遞是通過隊列引用來實現(xiàn)的。事件循環(huán)由Event結構和While循環(huán)組成。主循環(huán)由Case結構和While循環(huán)組成,其中Case結構有兩個,分別是主Case結構和錯誤Case結構。隊列引用是由LabVIEW中的隊列操作中的函數(shù)組成,其中最常用的函數(shù)為Obtain Queue、Enqueue Element、Dequeue Element和Release Queue等。圖中的虛線是指并行子vi可以不通過隊列引用而和主循環(huán)進行連接。
    生產者/消費者結構隊列狀態(tài)機的實現(xiàn)如下:Obtain Queue函數(shù)和Enqueue Element函數(shù)在While循環(huán)左側初始化隊列。枚舉類型定義控件端子連接到Obtain Queue函數(shù)的數(shù)據(jù)類型端子,這樣就可以指定隊列的數(shù)據(jù)類型。枚舉常量由枚舉類型創(chuàng)建,并連線到Enqueue Element函數(shù)的端子。Initialize狀態(tài)是添加到隊列中的第一項,它是狀態(tài)機執(zhí)行的第一個狀態(tài)。Dequeue Element函數(shù)位于主Case結構之外的錯誤Case結構的NO Error事例中。如果在錯誤簇中沒有出現(xiàn)錯誤,則下一狀態(tài)就會從隊列移出,并傳送到主Case結構的選擇器端子;如果發(fā)生錯誤,則有General Error Handle VI來報告錯誤,并且執(zhí)行Shutdown狀態(tài)。Case結構的每個事例中,事件循環(huán)和并行子vi都可以使用Enqueue Element函數(shù)來增加其他的狀態(tài)。此外,為了能夠立即執(zhí)行,可以使用Enqueue Element At Opposite End函數(shù)在隊列的前端增加一個狀態(tài)。這使得應用程序能夠及時響應高優(yōu)先級的操作或事件。當用戶要退出應用程序時,必須利用Release Queue函數(shù)釋放隊列引用,同時釋放隊列所占用的內存空間。
    當隊列中需要傳遞狀態(tài)和數(shù)據(jù)時,隊列元素數(shù)據(jù)類型就需要由一個簇組成,這個簇包括一個與變體打包到一起的枚舉類型定義。通常,該枚舉類型包含了事例選擇器中需要的狀態(tài)。變體用來將數(shù)據(jù)從時間循環(huán)或并行子vi傳遞給主循環(huán),這些數(shù)據(jù)的傳遞體現(xiàn)了生產者/消費者結構。同時,這個變體可以是多種類型的數(shù)據(jù),但是必須為其中每個成員指定一種數(shù)據(jù)類型。
  SFP光模塊測試程序首先初始化隊列引用和主界面中的控件,然后進入檢測光模塊。如果檢測到光模塊的插入,則主程序會讀取數(shù)字診斷功能中電壓、溫度和偏置電流等。在大部分時間里,主程序都是在輪詢地讀取這些數(shù)據(jù)。如果用戶在前面板有操作,此時事件循環(huán)將利用Flush Queue函數(shù)把隊列清空,然后加載下幾個狀態(tài),及時地響應用戶的操作并且最后回到讀取數(shù)字診斷功能中模擬量。
2 測試與驗證
2.1測試環(huán)境

  測試平臺的硬件包括計算機、測試板、并口線、電源以及待測光模塊。首先在計算機中安裝本文開發(fā)的測試軟件,其次利用并口線把計算機和測試板連接起來,再次把待測光模塊插入到測試版中,并加載電源,最后打開測試軟件進行測試。
  連接到I2C總線的器件輸出端要是漏極開路或集電極開路才能執(zhí)行傳輸?shù)墓δ?。因為計算機并口不滿足這兩種結構,所以本設計中在并口外接2N3906使得SDA和SCL滿足集電極開路結構。
2.2 I2C總線驗證
  為了保證光模塊測試平臺穩(wěn)定地工作,必須測試I2C總線通信的穩(wěn)定性。利用 I2C總線對EEPROM進行連續(xù)讀或者連續(xù)寫。在圖4中,C1和C2信號是對Z1和Z2信號框內部分的放大,這部分是主設備向從設備寫數(shù)據(jù)。
    主設備首先發(fā)送器件地址0xA0,在第9個時鐘,從設備給出了一個拉低SDA的應答信號。主設備然后發(fā)送寄存器地址0x00,同樣得到了應答信號。最后發(fā)送要寫入的數(shù)據(jù)0x55。圖中的兩個時間標尺測量出寫入數(shù)據(jù)操作距離下一次操作的時間,這個時間要大于等于5 ms。重復此讀寫過程10 000次,沒有錯誤則證明I2C總線非常穩(wěn)定。
2.3 光模塊測試軟件的驗證
    如圖5所示,是對一個Maxim DS1856方案的光收發(fā)模塊的檢測結果。

    其中5個模擬量的監(jiān)控值直接反映光模塊的工作狀態(tài)。表1是DS1856方案實測值與軟件監(jiān)控值對比。
    在SFF-8472協(xié)議中規(guī)定了每個模擬量的精度范圍:溫度誤差在±3℃之內;電壓誤差不超過廠家標稱值的3%;偏置電流誤差不超過廠家標稱值的10%;發(fā)射功率誤差在±3 dBm之內;接收功率在±3 dBm之內。通過表1結果顯示,此測試軟件滿足SFF-8472協(xié)議規(guī)定的誤差范圍。

    本文使用LabVIEW設計實現(xiàn)了針對SFP光收發(fā)模塊的測試平臺。重點介紹了測試軟件與SFP光模塊的I2C總線通信的實現(xiàn),論述了生產者/消費者結構隊列狀態(tài)機設計模式,提供了對該設計模式的具體實現(xiàn)方法,并把它應用在SFP光模塊測試軟件。該測試平臺已經應用到企業(yè)的實際生產過程中,減少了對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] 程社成.帶數(shù)字診斷功能的小封裝光模塊研究[D].武漢:武漢理工大學,2006.

此內容為AET網站原創(chuàng),未經授權禁止轉載。