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