基于FPGA的光纖通信系統(tǒng)的設計與實現(xiàn)
摘要:光纖通信是現(xiàn)今數(shù)據(jù)通信系統(tǒng)的主要通信方式,其性能的好壞直接影響數(shù)據(jù)通信系統(tǒng)的質量。本文采用Verilog語言實現(xiàn)FPGA光纖通信系統(tǒng)的功能。光纖通信系統(tǒng)又包含位同步時鐘提取模塊、8B/10B編解碼器模塊和NRZI編解器模塊;這些模塊都利用了DA(Design Analyz er)、Quartus II以及Modelsim等EDA工具來完成綜合與仿真,從仿真的結果可以看出該設計方法很好地滿足了系統(tǒng)的要求。
關鍵詞:光纖通信;FPGA;位同步時鐘;Verilog
光纖收發(fā)器與FPGA技術相結合的方案是現(xiàn)在光纖通信系統(tǒng)的主流解決方案。目前,在超高速光纖通信中還多采用專用的ASIC芯片,但最近各FPGA廠商也相繼推出了40Gbps、4x10Gbps、100Gbps和10x10Gbps等FPGA芯片,使基于FPGA超高速光纖通信的實現(xiàn)成為可能。FPGA的可編程特性,具有ASIC芯片無法比擬的優(yōu)越性。所以基于FPGA的光纖通信有很大的現(xiàn)實意義。
1 光纖通信系統(tǒng)結構設計
光纖通信系統(tǒng)主要由位同步時鐘提取模塊、8B/10B編解碼器模塊和NRZI編解器模塊組成.主要功能框圖如圖1所示。數(shù)據(jù)經(jīng)8B/10編碼后,能在很大程度上平衡位流中0與1的個數(shù),而NRZI編碼又做了進一步的平衡,主要是為了使信號狀態(tài)變化趨于頻繁以便位同步時鐘提取模塊更好、更快的提取出位同步時鐘。編碼后的信號為LVTTL電平信號,先經(jīng)電平轉換模塊轉換為PECL電平信號,再由光發(fā)送接收模塊轉換為光信號送入光纖傳輸介質。經(jīng)光纖傳輸后,在接收端先經(jīng)光發(fā)送接收模塊把光信號轉換為PECL電平信號,再由電平轉換模塊把PECL電平信號轉換為LVTTL電平信號,同時位同步時鐘提取模塊提取出同步時鐘,為解碼模塊提供參考時鐘。最后,接收到的數(shù)據(jù)經(jīng)解碼后數(shù)據(jù)輸出。
2 位同步時鐘提取的FPGA實現(xiàn)
在數(shù)字通信系統(tǒng)中,任何消息都是通過一連串的碼元序列傳送的,所以接收時需要知道每個碼元的起止時刻,以便在恰當?shù)臅r候取樣判決。這就要求接收端必須提供一個位定時脈沖序列,該序列的重復頻率與碼元速率相同,相位與最佳取樣判決時刻一致。這種提取定時脈沖序列的過程稱為位同步。同步性能的好壞直接影響通信系統(tǒng)的性能,出現(xiàn)同步誤差或失去同步就會導致通信系統(tǒng)性能下降或通信中斷。
提取位同步信號有多種方法,其中最常用的是數(shù)字鎖相法。其基本原理是:在接收端利用鑒相器比較接收碼元和本地產(chǎn)生的位同步信號的相位,若兩者相位不一致(超前或滯后),鑒相器就產(chǎn)生誤差信號去調整位同步信號的相位,直至獲得準確的位同步信號為止。本設計采用數(shù)字鎖相法提取位同步時鐘,主要由鑒相器、分頻器和相位選擇調整模塊等幾大部分組成。其功能框圖如圖2所示。
CLK_local是利用FPGA內(nèi)部的鎖相環(huán)倍頻后得到的高穩(wěn)定度、高頻時鐘。CLK1是CLK_local經(jīng)N次分頻后得到的,分頻系數(shù)N要求滿足分頻后的時鐘CLK1等于所要提取出的位同步時鐘R_clk。Din為接收到的碼元。Valid為超前、滯后鑒相器的使能輸出,Up_Down為超前、滯后鑒相器的比較輸出,Valid為邏輯0時關閉模增/減計數(shù)器,Valid為邏輯1時開啟模增/減計數(shù)器,如果位同步時鐘滯后時Up_Down的輸出為邏輯0,使模增/減計數(shù)器進行減計數(shù),如果位同步時鐘超前時Up_Down的輸出為值為邏輯1,使模增/減計數(shù)器進行增計數(shù)。
接收到的碼元經(jīng)超前、滯后鑒相器后,如果位同步時鐘滯后則計數(shù)器減計數(shù),從而通過多路選擇器后減少一個單位的延遲,反之如果位同步時鐘超前則計數(shù)器進行增計數(shù),從而通過多路選擇器后增加一個單位的延遲。
3 直流平衡8B/10B編/解碼的FPGA實現(xiàn)
8B/10B編碼(以下簡稱8B/10B)作為一種高性能的串行數(shù)據(jù)編碼標準,其基本思想就是將一個字節(jié)寬度的數(shù)據(jù)經(jīng)過映射機制(Mapping Rule)轉化為10為寬度的字符,但是平衡了位流中0與1的個數(shù),也就是所謂的直流平衡特性。同時規(guī)定位流中0或1的游程長度(Run Length)的最大值不能大于5,以使得傳輸過程保持足夠高的信號變換頻率,這樣不僅確保了時鐘恢復也使得信息流的直流頻譜分量為零或近乎為零,而正是這些特性使得8B/10B編碼特別適合光纖等介質的連接和信息傳輸。
3.1 直流平衡8B/10B編碼
如圖3所示,通信適配接口的輸入由一個字節(jié)的數(shù)據(jù)(ABCDEFGH)、一個控制信號(Z)以及一個時鐘信號組成,其中時鐘采樣以字節(jié)為單位??刂菩盘朲是數(shù)據(jù)信號或控制信號的標示位。輸入數(shù)據(jù)ABCDEFGH被分成兩部分,其中ABCDE經(jīng)5B/6B編碼生成6比特字符abcdei,而FGH經(jīng)3B/4B編碼得到fghi,最后組合輸出得到10比特的傳輸字符abcdeifghi。
3.2 編碼器設計
從編碼的種類看,直流平衡8B/10B編碼可分為數(shù)據(jù)字符編碼和控制字符編碼兩種,但是從編碼的組成看,它又可分為3B/4B編碼、5B/6B編碼兩部分。根據(jù)圖3 8B/10B編碼模塊圖將編碼器設計劃分為3個模塊:3B/4B編碼模塊、5B/6B編碼模塊和Dispartity運算模塊?;赩erilog語言的8B/10B編碼模塊圖,如圖4所示。
datain[8:0]為編碼數(shù)據(jù)輸入引腳。datain[4:0]為5位5B/6B編碼數(shù)據(jù)輸入端,即為ABCDE,其中E為最高位,分別用ai、bi、ci、di和ei表示每一位。datain[7:5]為3位3B/4B編碼數(shù)據(jù)輸入端,即FGH,其中H為最高位,分別用fi、gi和hi表示每一位。datain[8]為控制字符編碼標示位,用ki表示,ki為1表示為控制字符編碼,為0表示為數(shù)據(jù)字符編碼。dispin為8B/10B編碼前的RD輸入引腳;dispout為8B/10B編碼后的RD輸出引腳。dataout[9:0]為編碼數(shù)據(jù)輸出引腳。dataout[5:0]為8B/10B編碼后5B/6B編碼模塊對應輸出引腳。dataout[6:9]為
8B/10B編碼后3B/4B編碼模塊對應輸出引腳。
8B10B編碼器ModelSim仿真波形如圖5所示。其中datain、dispin、dispout和dataout分別為圖4編碼模塊圖對應的信號。仿真時選取了D31.2(RD+)、D31.0(RD-)、D28.0(RD+)和K28.0(RD+)作為仿真輸入信號。
4 NRZI編/解碼的FPGA實現(xiàn)
NRZI(Non-Return to Zero Inverted不歸零反轉)編碼是在數(shù)據(jù)位1時發(fā)生跳變,為0時保持不變的一種編碼。在光線通信中,由于光纖固有的特性,信號長時間的置0或置1容易造成數(shù)據(jù)傳輸錯誤,應當盡量避免這種情況發(fā)生,NRZI編碼能夠很好地解決這一問題。前面的8B/10B編碼已經(jīng)在很大程度上緩解了這個問題,但為了進一步提高數(shù)據(jù)傳輸質量,在8B/10B編碼的基礎上加入一級NRZI編碼。
4.1 NISEI編碼器設計
NRZI的編碼規(guī)則是:數(shù)據(jù)位為1時發(fā)生跳變,為0時保持當前狀態(tài)。圖6為本設計采用的NRZI編碼電路。其中,DFF為D觸發(fā)器,XOR為異或門;data_in為數(shù)據(jù)信號輸入端,數(shù)據(jù)來自編碼后的8B/10B碼;clock為NRZI編碼時鐘,clock時鐘頻率為data_in碼元速率的2倍頻(由FPGA倍頻電路實現(xiàn));NRZI_data為NRZI編碼器輸出。
下面以一具體實例說明NRZI的編碼過程。8B/10B碼D30.0(011110 0100)和D7.1(111000 0100)編碼后的波形圖如圖7所示。經(jīng)NRZI編碼后信號狀態(tài)變化更加頻繁,這些狀態(tài)變化使得接收器能夠持續(xù)地與輸入信號向相適應,這樣就保證了發(fā)送設備和接收設備之間的同步。由于8B/10B碼的有效編碼中都至少有4位“1”,從而保證了傳輸?shù)男盘栔辽侔l(fā)生4此跳變,以利于接收端的時鐘提取。
NRZI編碼器ModelSim仿真波形如圖8所示。data_in輸入數(shù)據(jù)分別為D30.0和D7.1。
4.2 NRZI解碼器設計
NRZI解碼器設計是NRZI編碼器的逆過程。圖9為本設計采用的NRZI解碼電路。其中,DFF為D觸發(fā)器,XOR為異或門。NRZI_data為信號輸入端,數(shù)據(jù)來自經(jīng)光纖傳輸?shù)腘RZI碼;clock時鐘頻率同編碼起時鐘頻率,即為NRZI_data碼元速率的2倍(由FPGA倍頻電路實現(xiàn));data_out為解碼器輸出。
NRZI解碼器ModelSim仿真波形如圖10所示。NRZI_data輸入數(shù)據(jù)分別為D30.0和D7.1編碼后的數(shù)據(jù)。
5 結束語
文中主要用Verilog語言編寫了位同步時鐘提取模塊、8B/10B編解碼模塊、NRZI編解碼模塊等來實現(xiàn)光纖通信。8B/10B編碼很好地平衡了位流中0和1的個數(shù),特別適合光纖介質的信息傳輸;NRZI編碼使信號的狀態(tài)變化更加頻繁,進一步增強了發(fā)送設備與接收設備的可同步性;位同步時鐘提取使得發(fā)送設備與接收設備保持同步,同時為接收端解碼器提供可靠的時鐘參考。這幾大模塊相輔相成,共同維持光纖通信系統(tǒng)可靠、高效的運行。