徐寒柳+李潔+馬苗



摘 要:針對傳統通信系統傳輸損耗高、抗干擾能力弱的不足,以及傳統1B/2B編碼難以滿足光纖通信的要求,本文融合光纖通信和FPGA可編程技術,設計了基于FPGA的光纖通信系統。重點研究了直流平衡8B/10B編、解碼技術及其FPGA實現,并對編解碼器進行了驗證。最后通過系統仿真及測試,驗證了系統功能正確,實現了數據在光纖介質中可靠傳輸。
關鍵詞:光纖通信;FPGA;數據傳輸;編碼
隨著信息化步伐逐漸加快,光纖通信技術已成為現代通信的重要支柱。光纖通信具有傳輸損耗低、傳輸頻帶寬、抗電磁干擾等優點,光纖傳輸損耗幾乎比同軸電纜低三個數量級,并且在整個頻段內其損耗對于任何調制信號都相同,因此光纖成為一種理想信號傳輸媒介[1]。FPGA具有時鐘頻率高,內部時延小,運行速度快的特點,適于大數據量的高速傳輸控制[2]。目前,在高速光纖通信中還多采用專用的ASIC 芯片,FPGA的可編程特性,具有ASIC 芯片無法比擬的優越性[3]。因此,本文融合光纖通信和FPGA可編程技術,對基于FPGA的光纖通信系統進行研究,這具有重要現實意義。
1 系統總體設計
系統主要由時鐘模塊、8B/10B編解碼器模塊、串并轉換模塊和光發收模塊組成,主要功能框圖如圖1 所示。在發送端,并行數據由系統控制送入8B/10B編碼器,編碼后的10位并行信號經并串轉換串行化后差分輸出,再由光發送接收模塊轉換為光信號送入光纖傳輸介質。在接收端,光接收模塊把將接收到的光信號還原回電平信號,時鐘恢復模塊從串行信號中提取時鐘信息,完成最佳采樣。串并轉換模塊將串行信號轉換成10位并行數據,然后通過字符邊界校準模塊調整字邊界,再經解碼還原為正確的8位數據。
2 直流平衡8B/10B編解碼的FPGA 實現
傳統1B/2B編碼幀之間不可避免出現長0長1,此種高低電平的跳變速率使得接收的光纖信號等效為高阻態導致沒有信號,難以滿足光纖傳輸要求。此外,編碼中一旦有傳輸錯誤易產生錯誤累積。
8B/10B 編碼作為高性能的串行數據編碼標準,其主要思想是利用映射機制將一個字節寬度的數據轉化為10位寬度的字符,具有直流平衡特性[4]。該編碼規定位流中0或1的最大游程長度值不能大于5,使得傳輸過程有足夠高的信號變換頻率,保證串行數據在接收端被正確還原,可附用特殊碼(K碼)進一步確保數據復原。另外,可在早期發現數據位傳輸錯誤以抑制錯誤累積[5]。因此,這些特性使得8B/10B編碼特別適合光纖介質的連接和信息傳輸。
2.1 直流平衡8B/10B編碼實現
通信適配接口的輸入由單字節數據、控制信號以及時鐘信號組成。輸入的8bit數據(HGFEDCBA)編碼時,將低5位(EDCBA,用x表示)經5B/6B編碼成為6 bit(iedcba)碼字,高3位(HGF,用y表示)數據經3B/4B編碼成為4 bit(jhgf)碼字,進而組合得到10 bit碼字(abedeifghj)。在8B/10B編碼中,包括普通數據字符(用Dxy表示)和特殊控制字符(用Kxy表示)。極性偏差RD(Running Disparity)作為8B/10B編碼中重要的概念,是維持編碼直流平衡的核心。用RD+表示編碼結果中0的大于等于1的個數,用RD-來表示編碼結果中1的個數大于等于0的個數。disp表示編碼結果中1和0的個數差,4bit編碼碼組中,disp為0時則為完美平衡碼。
8B10B編碼頂層原理圖如圖2所示。數據分離模塊將輸入8bit數據拆成高3bit、低5bit,同時將整體8bit分別輸出。特殊符號編碼模塊完成特殊控制符號Kxy編碼,輸出當前編碼不均等性disp_k ('0'均等,'1'不均等)。5B/6B編碼模塊完成5B到6B的編碼,輸出當前編碼不均等性disp_6,其中IsS表示出當前編碼是否為5B碼。3B/4B編碼模塊完成3B到4B的初步編碼,輸出當前編碼不均等性disp_4,其中IsOne表示當前編碼是否為單值輸出,用于合成10B碼時判斷4B碼是否取反。3B/4B編碼調整模塊根據disp_6和IsOne判斷當前3B4B編碼輸出是否需要反轉和調整。RD控制模塊將編碼后的10 bit數據進行選擇輸出,同時根據前3個模塊輸送來的disp_6、disp_4及disp_10來更新當前RD值以反饋到下一輪RD的輸入。
8B/10B編碼器仿真波形如圖3所示,可知8bit數據00011011被編碼成為10bit數據1101100100。輸入為00011101的特殊控制碼被編碼為1011100100。編碼結果與查碼表一致,表明該編碼器實現了正確編碼。
2.2 直流平衡8B/10B解碼實現
解碼模塊頂層原理圖如圖4所示,解碼器由塊數據緩存,特殊符號解碼,3B/4B解碼,5B/6B解碼以及解碼控制模塊組成。系統檢測到標志位flag_out為1時進行解碼,先判斷接收碼,若為特殊控制碼則直接查找表解碼。否則,將接收的10位碼分解為高6位和低4位,高6位用5B/6B的查找表解碼得到5bit碼,低4位用3B/4B的查找表解碼得到3bit碼,最后將得所3bit碼為高位而5bit碼為低位重新組合成8bit碼。圖4中的輸出信號包括:Dout_8為8bit解碼,flag_DataOut為輸出有效信號,flag_IsK為特殊控制碼,flagOut_err表示解碼錯誤。8B/10B解碼仿真波形圖如圖5所示,圖中din_10為輸入的10bit的數據,decodeout為解碼的數據。圖中給出了K23.7,D0.0,D1.0,K27.7的正確解碼。
3 系統功能驗證及測試
系統完成后,為驗證輸出數據的正確性,預設輸入模塊循環往發送端輸入FIFO里輸入00到01,此時接入示波器以觀察輸出波形。另外,將發送模塊最終的編碼串行輸出連至接收端的串行輸入口,為了直觀觀測數據,在輸出異步FIFO后連接UART至PC機串口,通過串口助手觀測接收碼。系統仿真波形與示波器實測波形對比如圖6所示,由結果可知,系統仿真結果與實測信號相符,驗證了系統功能正確性。另外,串口助手不停的接收整齊的00,01數據,進一步驗證了信號在實際傳輸時的正確性。
4 結語
本文研究并實現了基于FPGA的光纖通信系統。通過仿真和實驗,實現了數據在光纖內的可靠傳輸,驗證了系統功能正確。相對于傳統通信系統,具有傳輸速率高,傳輸帶寬寬,抗電磁干擾能力強等優點。本設計也可用于其它串行高速傳輸通信系統,此外,在8B/10B編碼時運用特殊控制碼,配合多個FIFO收發端,組成不同結構的數據鏈路網絡,實現多種數據的匯總和傳輸。
參考文獻
[1] 陳克難,劉文紅.使用光纖傳輸信號波形的技術[J].儀器儀表學報, 2005, 26(z1):537-538.
[2] 秦奎,張衛平,陳文元.基于ARM和FPGA的微加速度計數據采集系統設計[J].現代電子技術,2010,313(2):25-27,30.
[3] 李欣,管紹軍,胡曉天.基于FPGA的光纖通信系統的設計與實現[J].電子設計工程, 2012,20(8):85-87.
[4]秦蒙,王輝,秋云海,等.光纖通信中8B/10B編碼器的設計與實現[J].電視技術, 2014, 38(1):50-54
[5]李玉偉,潘明海. 8B/10B編碼對高速傳輸的影響分析[J].信息安全與通信保密, 2011(3):41-43.