基于FPGA的光纖通信系統的設計與實(shí)現
3.2 編碼器設計
從編碼的種類(lèi)看,直流平衡8B/10B編碼可分為數據字符編碼和控制字符編碼兩種,但是從編碼的組成看,它又可分為3B/4B編碼、5B/6B編碼兩部分。根據圖3 8B/10B編碼模塊圖將編碼器設計劃分為3個(gè)模塊:3B/4B編碼模塊、5B/6B編碼模塊和Dispartity運算模塊?;赩erilog語(yǔ)言的8B/10B編碼模塊圖,如圖4所示。本文引用地址:http://dyxdggzs.com/article/190204.htm
datain[8:0]為編碼數據輸入引腳。datain[4:0]為5位5B/6B編碼數據輸入端,即為ABCDE,其中E為最高位,分別用ai、bi、ci、di和ei表示每一位。datain[7:5]為3位3B/4B編碼數據輸入端,即FGH,其中H為最高位,分別用fi、gi和hi表示每一位。datain[8]為控制字符編碼標示位,用ki表示,ki為1表示為控制字符編碼,為0表示為數據字符編碼。dispin為8B/10B編碼前的RD輸入引腳;dispout為8B/10B編碼后的RD輸出引腳。dataout[9:0]為編碼數據輸出引腳。dataout[5:0]為8B/10B編碼后5B/6B編碼模塊對應輸出引腳。dataout[6:9]為
8B/10B編碼后3B/4B編碼模塊對應輸出引腳。
8B10B編碼器ModelSim仿真波形如圖5所示。其中datain、dispin、dispout和dataout分別為圖4編碼模塊圖對應的信號。仿真時(shí)選取了D31.2(RD+)、D31.0(RD-)、D28.0(RD+)和K28.0(RD+)作為仿真輸入信號。
4 NRZI編/解碼的FPGA實(shí)現
NRZI(Non-Return to Zero Inverted不歸零反轉)編碼是在數據位1時(shí)發(fā)生跳變,為0時(shí)保持不變的一種編碼。在光線(xiàn)通信中,由于光纖固有的特性,信號長(cháng)時(shí)間的置0或置1容易造成數據傳輸錯誤,應當盡量避免這種情況發(fā)生,NRZI編碼能夠很好地解決這一問(wèn)題。前面的8B/10B編碼已經(jīng)在很大程度上緩解了這個(gè)問(wèn)題,但為了進(jìn)一步提高數據傳輸質(zhì)量,在8B/10B編碼的基礎上加入一級NRZI編碼。
4.1 NISEI編碼器設計
NRZI的編碼規則是:數據位為1時(shí)發(fā)生跳變,為0時(shí)保持當前狀態(tài)。圖6為本設計采用的NRZI編碼電路。其中,DFF為D觸發(fā)器,XOR為異或門(mén);data_in為數據信號輸入端,數據來(lái)自編碼后的8B/10B碼;clock為NRZI編碼時(shí)鐘,clock時(shí)鐘頻率為data_in碼元速率的2倍頻(由FPGA倍頻電路實(shí)現);NRZI_data為NRZI編碼器輸出。
下面以一具體實(shí)例說(shuō)明NRZI的編碼過(guò)程。8B/10B碼D30.0(011110 0100)和D7.1(111000 0100)編碼后的波形圖如圖7所示。經(jīng)NRZI編碼后信號狀態(tài)變化更加頻繁,這些狀態(tài)變化使得接收器能夠持續地與輸入信號向相適應,這樣就保證了發(fā)送設備和接收設備之間的同步。由于8B/10B碼的有效編碼中都至少有4位“1”,從而保證了傳輸的信號至少發(fā)生4此跳變,以利于接收端的時(shí)鐘提取。
評論