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