曹 聰,郭建中,王振亞,譚 浪,胡仁杰, 艾 勇,肖 云,袁進剛,萬梓傲
(1.武漢紡織大學 電子與電氣工程學院,武漢 430200;2.武漢六博光電技術有限責任公司,武漢 430072; 3.武漢船舶通信研究所,武漢 430205)
水下光通信是一種通過水介質(zhì)傳輸信息的通信方式,其信息載體是光,通過脈沖數(shù)字碼進行調(diào)制。由于海水吸收、散射強烈,水下光通信技術的實現(xiàn)會比空間光通信技術的難度大大提升[1]。一個完整的水下光通信系統(tǒng)包括大功率藍綠光LED發(fā)射模塊、高靈敏度APD接收模塊、FPGA下位機數(shù)據(jù)轉換模三大部分,由于該系統(tǒng)在水下工作,一些相關的參數(shù)與傳輸數(shù)據(jù)難以顯示和分析,于是基于該系統(tǒng)中的FPGA數(shù)據(jù)控制轉換部分與PC聯(lián)合設計了一款通信系統(tǒng),由PC提供水下通信數(shù)據(jù)的直觀顯示,可實現(xiàn)多媒體數(shù)據(jù)傳輸及光信道性能檢測。上位機作為信源發(fā)出數(shù)據(jù),通過網(wǎng)線傳遞給FPGA,F(xiàn)PGA經(jīng)過數(shù)據(jù)轉換驅動LED發(fā)射模塊,將電信號轉化為光信號發(fā)出,接收方通過高靈敏度APD將光信號轉化為電信號接收,再通過FPGA由網(wǎng)線將信號傳輸?shù)缴衔粰C,在上位機中完成數(shù)據(jù)處理并顯示處理結果。此為完成一次單向的水下光通信系統(tǒng)的數(shù)據(jù)傳輸。上位機主要功能是為數(shù)據(jù)處理與數(shù)據(jù)收發(fā)顯示以及發(fā)送控制命令,下位機主要功能是控制數(shù)據(jù)傳輸速率與硬件系統(tǒng)相匹配以及直接控制硬件設備。為增加數(shù)據(jù)發(fā)送方與接收方的互動性,在上位機軟件中增加了攝像頭抓拍及循環(huán)發(fā)圖功能??蓮膱D片等數(shù)據(jù)的接收完整性,直觀體現(xiàn)水下光通信系統(tǒng)的傳輸穩(wěn)定性。
上位機軟件主體部分采用C#語言編寫,利用Microsoft Visual Studio 2017開發(fā)工具在.NET Framework v4.6.1框架下進行應用程序開發(fā)。C#是一種簡單、現(xiàn)代、通用以及面向對象的程序設計語言[2]。下位機部分主要采用Verilog HDL語言編寫,利用QuartusⅡ17.0軟件進行開發(fā)。Verilog HDL是一種硬件描述語言,邏輯電路圖、邏輯表達式以及數(shù)字邏輯系統(tǒng)所完成的邏輯功能都可以用它來表示,它將數(shù)字系統(tǒng)硬件的結構和行為以文本的形式描述[3]。
FPGA通過網(wǎng)線與上位機連接,水下光通信設備開機后,F(xiàn)PGA處于等待狀態(tài),通過上位機開啟服務,綁定固定端口,與下位機進行通信。上位機通過指令,控制系統(tǒng)的運行模式、光發(fā)射模塊與光接收模塊的開關及傳輸速率的切換等,通過光發(fā)射與光接收的硬件部分反饋的信號,F(xiàn)PGA判斷其是否正常工作并將結果返回給上位機,由開關控制區(qū)域的顏色進行表示。FPGA端資源有限,通過建立簡易的UDP通信模塊與PC端進行通信,F(xiàn)PGA根據(jù)接收的數(shù)據(jù)實現(xiàn)電路控制[4,5]。PC端開啟UdpReciveThread()線程進行接收,將接收的數(shù)據(jù)按照自定義的通信協(xié)議解析數(shù)據(jù)包,再進行相應的處理及顯示。
根據(jù)PC與FPGA檢測系統(tǒng)中的處理流程和數(shù)據(jù)的調(diào)用可分為四層:如圖1所示的系統(tǒng)結構圖,分別為界面層、處理層、通訊層和FPGA層。
圖1 多媒體數(shù)據(jù)傳輸系統(tǒng)結構框圖Fig.1 Block diagram of multimedia data transmission system
水下光通信系統(tǒng)框圖如圖2所示,下位機以UDP數(shù)據(jù)包的形式從上位機接收數(shù)據(jù),在FPGA中通過FIFO緩沖解決PC與FPGA之間的數(shù)據(jù)傳輸速率匹配問題和FPGA內(nèi)部的跨時鐘域問題[6],再將數(shù)據(jù)以LVTTL電平的模式傳輸給LD驅動電路。FPGA將UDP模塊接收到的數(shù)據(jù)進行RS糾錯編碼,確保數(shù)據(jù)傳輸?shù)臏蚀_性,再進行8B/10B編碼防止過多連續(xù)零和連續(xù)一的情況發(fā)生,再進行并串轉換以及幀同步后輸出的信號通過LD發(fā)射模塊發(fā)出,接收端接收后一次進行譯碼,再有UDP模塊傳送給PC進行處理顯示。若發(fā)送方改變了FPGA的發(fā)送速率,接收方的FPGA會對接收速率自適應改變,并將改變后的速率通過消息形式發(fā)送給上位機顯示。
圖2 水下光通信系統(tǒng)流程圖Fig.2 Flow chart of underwater optical communication system
1.3.1 數(shù)據(jù)讀取模塊的設計與開發(fā)
目前實現(xiàn)下位機與上位機之間的數(shù)據(jù)通信通常使用的方式有兩種:1)USB轉串口方式;2)以太網(wǎng)方式。本次水下光通信系統(tǒng)的通信速率范圍跨度大,傳輸速率要求高,擬達到50 Mbps,故而選用網(wǎng)線連接的方式,運用以太網(wǎng)進行通信。該通信系統(tǒng)工作前,需先將PC端的IP地址設置為與下位機代碼中對應的地址。在后臺代碼中利用建立Socket建立套接字,可應用Bind()綁定端口,與FPGA端進行端對端的收發(fā)。其通訊準備流程如圖3所示。
圖3 通訊準備流程圖Fig.3 Flow chart of communication preparation
通訊準備完成后,上位機需向FPGA發(fā)送相應指令,使FPGA打開光發(fā)射與接收的硬件設備,即可進行模式選擇,同時可收到FPGA返回的當前信道數(shù)據(jù)的傳輸速率,點擊繪圖模式便可實時顯示當前的發(fā)送與接收速率并繪制成曲線。若發(fā)送端的速率改變后,系統(tǒng)將處于未同步狀態(tài),接收端會自動調(diào)整接收端的速率檔位直到設備處于同步狀態(tài)。其繪制的速率曲線圖界面如圖4所示。
圖4 通信速率曲線圖Fig.4 Communication rate curve
光接收模塊接收數(shù)據(jù)轉化為電信號輸出給FPGA,F(xiàn)PGA經(jīng)過幀同步穩(wěn)定接收后,設置幀長為1024字節(jié)為一幀,其中前8個字節(jié)為自定義通信協(xié)議數(shù)據(jù)包格式中的數(shù)據(jù)。由于數(shù)據(jù)接收函數(shù)一直運行需要大量資源,會使主線程操作時卡頓,故開啟一個新的線程,進行消息接收。為了保證軟件的穩(wěn)定性,一般使用異步調(diào)用的方式。在新線程中調(diào)用Receive()方法進行數(shù)據(jù)接收。數(shù)據(jù)讀取流程圖如圖5所示。
圖5 數(shù)據(jù)讀取流程圖Fig.5 Data reading flow chart
1.3.2 數(shù)據(jù)解析模塊的設計與開發(fā)
上位機接收FPGA傳輸?shù)臄?shù)據(jù),通過幀頭辨別數(shù)據(jù)類型進行相應的處理。將接收到的數(shù)據(jù)包暫存在新建數(shù)組中,根據(jù)自定義的通信協(xié)議進行判斷。由于從光模塊接收的數(shù)據(jù)已經(jīng)有FPGA經(jīng)過幀同步處理了,所以無需再進行特殊判別,可直接將接收數(shù)據(jù)進行分類,若不是所需要數(shù)據(jù)可直接舍去,后續(xù)不做任何處理。數(shù)據(jù)解析流程圖如圖6所示。自定義控制命令格式如圖7所示。
圖6 數(shù)據(jù)解析流程圖Fig.6 Data analysis flow chart
首先UDP協(xié)議的數(shù)據(jù)包在網(wǎng)絡層通過添加IP首部,封裝成IP數(shù)據(jù)包的格式,然后送到以太網(wǎng)MAC層完成以太網(wǎng)標準數(shù)據(jù)幀格式的封裝,最后才送到物理層處理,在數(shù)據(jù)鏈路層,數(shù)據(jù)都是以數(shù)據(jù)幀的形式進行傳輸?shù)?。以太網(wǎng)有效數(shù)據(jù)封裝成標準幀之后再進行傳輸[7]。標準以太網(wǎng)的幀格式包括幀頭標記(前導碼和幀起始定界符)、目的MAC地址、源MAC地址、長度/類型域、數(shù)據(jù)域、填充域和幀校驗域等字段[8]。
圖7 自定義控制命令格式Fig.7 Custom control command format
1.3.3 數(shù)據(jù)處理模塊的設計與開發(fā)
在通訊模式下,F(xiàn)PGA首先進行幀同步,確認幀同步后開始進行數(shù)據(jù)處理與傳輸,在FPGA中數(shù)據(jù)主要經(jīng)過了8B/10B編解碼,RS編解碼的處理,主要是為了降低通信誤碼率,使得數(shù)據(jù)可以進行有效且穩(wěn)定的傳輸,數(shù)據(jù)由FPGA傳送給上位機,上位機進行處理顯示,根據(jù)幀頭判斷多媒體數(shù)據(jù)的形式,再將以不同形式進行展現(xiàn);在誤碼測試模式下,F(xiàn)PGA無需進行幀同步等處理,發(fā)送方由本原多項式產(chǎn)生27-1位偽隨機序列,以固定時鐘循環(huán)發(fā)送,接收方接收進行循環(huán)比對,以接收到的數(shù)據(jù)個數(shù)作為總數(shù),比對的不同個數(shù)作為誤碼個數(shù),反饋給上位機,上位機利用BitConverter()函數(shù)轉化為浮點型數(shù)據(jù)進行處理顯示。數(shù)據(jù)處理流程如圖8所示。
圖8 數(shù)據(jù)處理流程圖Fig.8 Data processing flow chart
首先對PC與FPGA組成的通信系統(tǒng)進行獨立的性能測試,只有先確保了該系統(tǒng)的穩(wěn)定可靠,才可加入到水下通信系統(tǒng)中進行水下的綜合測試。上位機主頁面如圖9所示。
主頁面包含有基礎的字符串、圖片等數(shù)據(jù)傳送功能,在主頁面的“上位機模式選擇”中包含有互動功能,增加人機的互動性,可手動截圖發(fā)送,也可定時在某一時刻拍攝發(fā)送給對方,也可設置開始與結束時間在期間以某一特定時間間隔拍攝并發(fā)送給對方。該功能增強整體系統(tǒng)的人際互動性。此頁面如圖10(a)所示。循環(huán)與實時功能,便于觀測連續(xù)數(shù)據(jù)的發(fā)送與接收情況,可從側面反映出系統(tǒng)通信性能的情況。實時功能頁面如圖10(b)所示。
圖9 上位機主頁面Fig.9 The main page of the host computer
2.1.1 丟包率測試
為便于觀測對比發(fā)送與接收的數(shù)據(jù),有單塊FPGA與PC通過網(wǎng)線相連進行系統(tǒng)的環(huán)回實驗,通過Wireshark軟件在PC端進行抓包,對所抓取的以太網(wǎng)數(shù)據(jù)包進行比對。丟包率是數(shù)據(jù)通信過程中數(shù)據(jù)包丟失的數(shù)量與發(fā)送數(shù)量的比率[9],其可以作為一項重要指標來證名該系統(tǒng)的穩(wěn)定性。通信丟包率部分測試數(shù)據(jù)如表1所示。
通過對通信丟包率的測試,相同數(shù)據(jù)長度、相同速率、不同數(shù)據(jù)包個數(shù);相同數(shù)據(jù)長度、不同速率、相同數(shù)據(jù)包個數(shù);各項測試中的丟包率均為0,可以得出PC與FPGA組成的通信系統(tǒng)穩(wěn)定性極好,不存在丟包情況,能夠應用于水下光通信的測試中。
2.1.2 誤碼測試模式可用性測試
誤碼率是通信信道性能的直接體現(xiàn),為了測試該系統(tǒng)誤碼測試的功能,使用單塊FPGA與PC進行環(huán)回實驗,其中有插入誤碼的功能,能夠測試該系統(tǒng)中誤碼測試功能是否良好。誤碼率的計算公式如式(1)所示:
(1)
式中Pe為誤碼率;Ne為傳輸中的誤碼個數(shù);N為傳輸中的總碼數(shù)。根據(jù)以上誤碼率的計算公式計算,誤碼率測試結果如表2所示(速率是指FPGA開發(fā)板上利用SMA傳輸線模擬的光信道的傳輸速率)。
經(jīng)計算檢驗,界面顯示的誤碼率準確。通過對誤碼率測試功能的檢測,可以得出該系統(tǒng)測試誤碼率的方法可靠性高。基于不同的數(shù)據(jù)傳送速率,插入誤碼次數(shù)不同,由于SMA代替光信道,多次實驗,誤碼率的變化符合理論規(guī)律。
表1 通信丟包率測試
表2 誤碼率測試
測試場景如圖11所示,為同一通信信道,分別使用誤碼儀與該檢測系統(tǒng)檢測誤碼率,其中誤碼儀型號為ET34A誤碼測試儀,該誤碼儀速率最高僅能達到34 Mbps。其中,圖11(a)、(b)為實驗場景圖,圖11(c)、(d)為實驗結果圖。由于條件有限,搭建簡易的平臺進行測試實驗,根據(jù)接收端增加衰減片模擬水下不同距離的接收。
圖11 檢測系統(tǒng)誤碼率準確率測試Fig.11 Testing the accuracy of the bit error rate of the detection system
圖12 測試場景圖Fig.12 Test scene diagram
根據(jù)多次的實驗,該檢測系統(tǒng)的誤碼率與同一條件誤碼儀檢測的誤碼率一致,故此系統(tǒng)可用于測試實際水下光通信信道的誤碼率檢測,從而獲取水下光通信信道的性能指標與關鍵數(shù)據(jù)。
通信測試時間為下午至夜晚,地點為泳池內(nèi),泳池兩邊分別放置2個設備,里面分別有藍綠LED和藍綠LD發(fā)射模塊及APD、PMT接收模塊。其中藍綠光波長分別為450 nm和520 nm,藍綠光LED陣列發(fā)光功率均為36.6 W,藍色激光發(fā)光功率均為80 mW,綠色激光發(fā)光功率均為130 mW,APD探測器接收靈敏度約為-31dBm,PMT探測器靈敏度約為-55 dBm。測試場景圖如圖12所示,其中(a)、(b)為空間測試場景圖,(c)、(d)為水下測試場景圖。
下午在空間上對該套設備的性能進行了測試,速率為3 Mbps,通信距離為50 m時,測得誤碼率為10-8。實驗截圖如圖13所示。
圖13 空間光通信信道誤碼測試結果圖Fig.13 Error test result of space optical communication channel
晚上在水下對該套設備的性能進行了測試,發(fā)射端由藍光發(fā)射光源,接收端由大面積APD進行光接收,測試的誤碼率情況如圖14所示。
經(jīng)過多次測試得到結論,最佳情況為:空間中測試,綠光LED發(fā)射,PMT接收,通信距離50 m,通信速率3 Mbps可達到0誤碼;空間中藍光LED發(fā)射,APD接收,則誤碼率為10-8,此時可雙向發(fā)送接收近乎完整的多媒體數(shù)據(jù);水下環(huán)境測試,藍光LD發(fā)射,APD接收,通信距離15 m,通信速率50 Mbps可達到0誤碼,可接收完整數(shù)據(jù);水下環(huán)境測試,綠光LD發(fā)射,PMT接收,通信距離40 m,通信速率3M,誤碼率為10-5,接收數(shù)據(jù)不完整。
圖14 水下光通信信道誤碼測試結果圖Fig.14 Error test results of underwater optical communication channel
綜上所述,本文中PC與FPGA所組成的多媒體數(shù)據(jù)傳輸系統(tǒng)具有穩(wěn)定性與可靠性,且能夠加入到水下光通信系統(tǒng)中進行實驗,并在不同傳輸速率下能夠測得光通信信道的誤碼率,得到光通信系統(tǒng)性能評價的關鍵指標參數(shù)。還能夠進行實時的數(shù)據(jù)回傳,當前通信速率以繪圖形式呈現(xiàn)出來,非常直觀;當前誤碼率也是實時在界面刷新,并且可停止在某一時刻獲取當前時刻得誤碼率值。在誤碼率良好的情況下可進行多媒體數(shù)據(jù)的傳輸。該系統(tǒng)在水下光通信中十分具有應用意義,并具有穩(wěn)定可靠性,用于水下光通信中。