袁玉英,張連俊,袁慧祥,李鑫磊,羅永剛
(1.山東理工大學計算機科學與技術(shù)學院,山東 淄博 255049;2.中國移動德州分公司,山東 德州 253013;3.山東理工大學電氣與電子工程學院,山東 淄博 255049)
基于FPGA的5B6B編譯碼器的設(shè)計與測試
袁玉英1,張連俊1,袁慧祥2,李鑫磊1,羅永剛3
(1.山東理工大學計算機科學與技術(shù)學院,山東 淄博 255049;2.中國移動德州分公司,山東 德州 253013;3.山東理工大學電氣與電子工程學院,山東 淄博 255049)
為避免簡單的二電平碼對數(shù)字光纖通信系統(tǒng)傳輸?shù)挠绊?,設(shè)計適用于數(shù)字光纖通信系統(tǒng)的5B6B編譯碼器,實現(xiàn)對簡單二電平碼進行碼型變換,保證傳輸?shù)耐该餍?。該設(shè)計利用碼字數(shù)字和(WDS)進行編碼碼字的選擇,采用正、負兩種模式交替的方法,在保證平均誤碼增值系數(shù)最小的基礎(chǔ)上,以6種碼變換規(guī)則中的一種為例完成設(shè)計。該設(shè)計采用FPGA設(shè)計流程,運用Verilog HDL語言完成5B6B編譯碼器各個模塊的設(shè)計,并在Quartus II軟件上進行仿真測試。仿真結(jié)果表明:該設(shè)計功能正確,可根據(jù)需要實現(xiàn)不同碼表中相應(yīng)5B與6B碼之間的轉(zhuǎn)換,實現(xiàn)簡單,應(yīng)用靈活,并能減少數(shù)字碼流中連“0”或連“1”的數(shù)目,減小基線漂移。
光纖通信;5B6B編譯碼器;FPGA;Quartus II;模式交替;仿真測試
在數(shù)字光纖通信系統(tǒng)中,電發(fā)射機輸出適于電纜的雙極性碼;但光源不能發(fā)出負脈沖,因此必須把信號轉(zhuǎn)變?yōu)閱螛O性碼,才能滿足在光纖中傳輸信號的要求[1]。但是在簡單的以二進制方式傳輸?shù)碾S機數(shù)字碼流中,可能會出現(xiàn)較長連“0”或連“1”串的情況,這會帶來一些問題,如導致碼流中的直流分量發(fā)生基線漂移,給定時提取帶來一定困難;同時,不能實現(xiàn)在線誤碼檢測,對長途通信系統(tǒng)的維護也將產(chǎn)生不利影響。因此,在數(shù)字光纖通信系統(tǒng)中,不適合用簡單的二進制碼作為系統(tǒng)的線路碼。為了保證傳輸?shù)耐该餍裕瑪?shù)字光纖通信系統(tǒng)經(jīng)常采用的一種碼型為5B6B碼。國外的5B6B編譯碼器大多采用組合電路,即把整個器件集成在一塊芯片上,組成一個專用集成塊[2]。國內(nèi)一般采用碼表法:就是把預先設(shè)計完的碼表全部存入到一塊可編程只讀存儲器(programmable read-only memory,PROM)內(nèi)。早期的碼表法實現(xiàn)5B6B編譯碼器基于單片機完成;近年來,現(xiàn)場可編程門陣列(field-programmable gate array,F(xiàn)PGA)發(fā)展迅猛。FPGA具有串/并行工作方式、寬口徑適用性、高速度等優(yōu)點[3]。本文介紹基于FPGA設(shè)計實現(xiàn)的5B6B編譯碼器,并采用Quartus II軟件完成了功能測試。該設(shè)計方法簡單、易于實現(xiàn),并且具有靈活性。
5B6B碼屬于mBnB碼,是將輸入的碼流每5bit作為一組,稱作一個碼字,然后通過編碼把5 bit的輸入碼字在相應(yīng)時隙內(nèi)轉(zhuǎn)換成6bit的碼字輸出。其碼率提高了6/5倍[4]。在mBnB碼中一般n>m,如果一個nB碼字中的“0”、“1”個數(shù)差別比較大,把這樣的nB碼字作為禁字,通常把剩余的可以使用的碼字按照“1”、“0”的個數(shù)分為正和負兩種模式(“1”多的為正模式,“0”多的為負模式),并且兩種模式交替工作。通常使用碼字數(shù)字和(WDS)來判斷碼字是否均勻,并且將選擇WDS最好的碼字在系統(tǒng)中進行傳輸,從而確保線路碼傳輸特性等。如果在nB碼碼字中,把“0”碼當作“-1”,把“1”碼當作“+1”,那么整個碼字所對應(yīng)的碼字和即為碼字數(shù)字和(WDS)。選取nB碼的原則是:盡量采用最小的碼字,禁止采用最大的。對于5B6B碼,總共有25,即32個 5B碼碼字,而6B碼可以組成的碼字共有26,即64個,其中:WDS=0,表示6B碼字中含有3個“0”和3個“1”,其碼字數(shù)為
同理,WDS=+2的碼字數(shù)為15個,WDS=-2的碼字數(shù)也為15個,因此可供選擇的具有較小WDS的碼字一共有50個。然而5B碼僅有32個碼字,那么只需要從中選擇32個6B碼碼字。為了減少碼字中連“1”和連“0”的數(shù)目,刪除:000011、110000、001111和111100 4個碼字,當然也禁止使用WDS=±4和WDS=±6的碼字。
5B6B碼有6種碼變換規(guī)則,其中一種碼變換如表1所示的5B6B變換規(guī)則,其平均誤碼增值系數(shù)(error multiplication factor,EMF)最?。‥MF=1.28),因此,本文選擇表1所示的碼變換組。表中的“+”組(即模式I)中選用了19個WDS=0的均等碼字和13個WDS=+2的不均等碼字。在“-”組(模式II)中選用了19個WDS=0的均等碼字和13個WDS=-2的不均等碼字?!?”組和“-”組交替使用,其交替規(guī)則如下:當6B碼字為WDS=0的均等碼字時,此時不論“+”組或“-”組,其下一個6B碼字在上一個6B碼字的同組中選擇,即不發(fā)生交替,此時其下一組欄中標以碼字所在組的相同組別符號;例如,“+”組中6B碼字為110010,這個碼字為WDS=0的均等碼字,所以,其下一組欄標“+”,即下一個6B碼字仍在“+”組中;當6B碼字為不均等碼字時,如果6B碼字WDS=+2,即這個碼字處在“+”組中,其下一個6B碼字為WDS=-2不均等碼字,下一組欄標“-”。這時6B碼字發(fā)生交替,以減小累計不均;反之,6B碼字為WDS=-2不均等碼字,表明這個6B碼字處在“-”組,其下一組欄標“+”,即下一個6B碼字應(yīng)在“+”組,碼字狀態(tài)發(fā)生交替。交替結(jié)果,使6B碼字的不均值達到平衡。
上面所述的5B6B碼兩種模式的交替,也可以用狀態(tài)圖表示,如圖1所示。
圖1 狀態(tài)轉(zhuǎn)換圖
5B6B編碼器是將輸入的二進制碼流按5 bit單元進行分組,組成輸入碼字。然后將每組5bit的碼字在相同時隙內(nèi)變換成模式I(+組)或模式II(-組)的6bit一組的碼流輸出。圖2為5B6B編碼器框圖。
表1 5B6B碼碼表
由圖可知,編碼器電路由偽隨機碼發(fā)生器、分頻電路、串/并間轉(zhuǎn)換電路、狀態(tài)控制電路及編碼電路組成。
2.1 偽隨機碼發(fā)生器
偽隨機碼是確定序列,但具有隨機序列的基本特性,有預先可確定性,可重復產(chǎn)生與處理[5]。偽隨機碼是利用序列發(fā)生器的輸入時鐘脈沖產(chǎn)生的,為與總時鐘同步,在頂層模塊設(shè)計中先將CLK取反后再輸入偽隨機發(fā)生器。
2.2 分頻模塊
系統(tǒng)會產(chǎn)生一個標準時鐘信號clk,此分頻電路產(chǎn)生供編碼電路和譯碼電路工作使用的時鐘,將分頻成5分頻和6分頻,之間的關(guān)系是:f6b=6/5f5b,分別控制串并轉(zhuǎn)換、編碼和并串轉(zhuǎn)換。
1)5分頻:序列發(fā)生器的輸入時鐘脈沖5分頻,可實現(xiàn)每輸入5 bit的串行信號同步轉(zhuǎn)換輸出5位的并行信號,實現(xiàn)時鐘信號的同步[6]。
2)6分頻:序列發(fā)生器的輸入時鐘脈沖6分頻,實現(xiàn)時鐘信號的同步。
2.3 串/并轉(zhuǎn)換模塊
此模塊實現(xiàn)信號的串行輸入、并行輸出,或?qū)崿F(xiàn)信號的并行輸入、串行輸出[7]。
串/并轉(zhuǎn)換模塊:當串行輸入5 bit的信號時經(jīng)過該模塊輸出并行的5 bit信號[8]。
并串轉(zhuǎn)換模塊:由編碼模塊轉(zhuǎn)換輸出的6 bit并行信號進入該模塊轉(zhuǎn)換成串行輸出,得到所需要的6B碼[9]。
2.4 狀態(tài)控制模塊
狀態(tài)控制模塊的原理是當輸出的6B碼為“+”組時,若WDS=0,則下一個flag不變,若WDS=+2,則令flag=1,從而跳轉(zhuǎn)到“-”組碼;當輸出的6B碼為“-”組時,若WDS=0,則下一個flag不變,若WDS=-2,則令flag=0,從而跳轉(zhuǎn)到“+”組碼。這就實現(xiàn)了6B碼兩種狀態(tài)“+”組和“-”組模式碼的交替,減小了5B6B碼的累計不均。
2.5 編碼模塊
圖2 編碼器電路框圖
此模塊是完成5B碼轉(zhuǎn)換成6B碼的核心環(huán)節(jié),在此模塊中串并轉(zhuǎn)換輸出的并行5 bit信號,受到6分頻信號和狀態(tài)控制模塊控制,轉(zhuǎn)換為并行的6 bit信號。此模塊由PROM構(gòu)成,把預先設(shè)計好的碼表存儲在PROM內(nèi),利用并行接收的5bit碼字作為地址碼,查詢存儲的碼表,輸出與之對應(yīng)的并行6B碼。
圖3是5B6B編碼器中主要模塊的仿真波形圖。該仿真是在Quartus II軟件上完成的[10]。
圖4是包括編碼模塊、狀態(tài)控制模塊和串/并轉(zhuǎn)換模塊的仿真波形圖。輸入的串行數(shù)據(jù)data_5bit_in經(jīng)串/并轉(zhuǎn)換變?yōu)?位并行碼,暫時存儲于data_5bit_reg,后經(jīng)編碼變?yōu)? bit并行數(shù)據(jù),暫存于data_6 bit_reg中,最后經(jīng)并/串轉(zhuǎn)換變?yōu)榇袛?shù)據(jù)data_6 bit_out輸出,圖中把rst=1且clk_6_5th為高電平時所對應(yīng)的輸入5bit碼變?yōu)?bit。
flag為組別控制信號,flag=0對應(yīng)于正組,flag=1對應(yīng)于負組。
5B6B譯碼器的功能是把輸入的6B碼流經(jīng)過譯碼正確還原成與5B6B碼編碼前一致的5B碼流。從功能作用來看,5B6B碼的譯碼器變換是5B6B碼編碼的反變換,圖5為5B6B碼譯碼器電路框圖。其中,偽隨機碼發(fā)生器、分頻電路以及串/并轉(zhuǎn)換電路的設(shè)計與5B6B碼編碼器設(shè)計中的類似。
譯碼模塊是將并行輸入的6B碼轉(zhuǎn)換成相應(yīng)的5B碼,與編碼模塊類似,其由PROM構(gòu)成,在5分頻信號的控制下,根據(jù)預先設(shè)計好的碼表完成6B至5B碼的轉(zhuǎn)換。
圖6是5B6B譯碼器中譯碼模塊和串/并轉(zhuǎn)換模塊組成電路的仿真波形圖。其把rst=1且clk_5_6th為高電平時所對應(yīng)的輸入6bit碼變?yōu)榱?bit。
本文論述了5B6B編譯碼器的設(shè)計和實現(xiàn)方法,該方法簡單,且與組合邏輯電路設(shè)計方法相比更加靈活,可根據(jù)需要實現(xiàn)不同碼表的5B與6B碼之間的轉(zhuǎn)換。通過該設(shè)計,既減少了數(shù)字碼流中連“0”或連“1”的數(shù)目,減小了基線漂移,又使得系統(tǒng)的誤碼增值系數(shù)減小,累計不均值降低,從而保證了數(shù)字光纖通信系統(tǒng)傳輸?shù)耐该餍浴?/p>
圖3 5分頻模塊仿真圖
圖4 編碼器仿真圖
圖5 譯碼器電路框圖
圖6 譯碼器仿真圖
[1]劉增基,周洋溢,胡遼林,等.光纖通信[M].2版.西安:西安電子科技大學出版社,2012:93-94.
[2]盧志茂,馮進玫,陳麗娟,等.光纖通信[M].北京:北京大學出版社,2010:102-103.
[3]楊海鋼,孫嘉斌,王慰.FPGA器件設(shè)計技術(shù)發(fā)展綜述[J].電子與信息學報,2010,32(3):714-727.
[4]汪勝蕾.基于線路編碼和RSOA上行再調(diào)制的WDMPON系統(tǒng)研究[D].杭州:浙江大學,2013.
[5]趙嘎,王小軍,宋鳴,等.基于FPGA的可配置偽隨機序列發(fā)生器的設(shè)計與實現(xiàn)[J].云南大學學報:自然科學版,2012,34(2):147-151.
[6]徐杰,曹小虎,張新文,等.5B6B碼的編碼仿真與實現(xiàn)課程設(shè)計報告 [EB/OL].豆丁網(wǎng),2014.http:∥www.docin. com/p-756236169.html.
[7]付秀蘭,孫立宏.基于65nm CMOS工藝的高速串并轉(zhuǎn)換電路設(shè)計[J].中國集成電路,2012(4):57-60.
[8]嚴剛峰,方紅,楊維,等.采用FPGA實現(xiàn)同步串行數(shù)據(jù)的并行采集[J].自動化儀表,2014,35(9):84-86.
[9]孫志雄,謝海霞.基于FPGA的高速串并/并串轉(zhuǎn)換器設(shè)計[J].現(xiàn)代電子技術(shù),2014,37(8):151-152.
[10]Vincent S.Quartus_II軟件使用教程[EB/OL].道客巴巴,2013.http:∥www.doc88.com/p-803993007005.html.
The design and test of 5B6B encoder/decoder based on FPGA
YUAN Yuying1,ZHANG Lianjun1,YUAN Huixiang2,LI Xinlei1,LUO Yonggang3
(1.College of Computer Science and Technology,Shandong University of Technology,Zibo 255049,China;2.China Mobile Dezhou Branch,Dezhou 253013,China;3.School of Electrical and Electronic Engineering,Shandong University of Technology,Zibo 255049,China)
Designing the 5B6B encoder/decoder in the digital optical fiber communication system was to avoid the impact of the simple two-level code to the digital optical fiber communication system transmission.So that we can carry out the code type conversion to the simple two-level code to ensure transparenttransmission.Based on considering the minimum average error multiplication factor,the design was performed taking one of the six kinds of code transformation rules for example,using WDS to select the encoding words,taking the mathod of the positive mode and the negative mode alternation.The design adopted the FPGA design process,used Verilog HDL language to complete the design of each module in the 5B6B encoder/decoder and employed Quartus II software for simulation test.The simulation results show that the functions of the design are correct and the conversion between the 5B code and the corresponding 6B code in the different code tables can be achieved according to the needs,so the design can be realized simply and applied flexibly.The design can also decrease the consecutive-zero or consecutive-one number in the digital stream and the baseline drift.
optical fiber communication;5B6B encoder/decoder;FPGA;Quartus II;mode alternation;simulation test
A
:1674-5124(2015)10-0076-05
10.11857/j.issn.1674-5124.2015.10.017
2015-01-30;
:2015-03-27
2013年山東省淄博市科學技術(shù)發(fā)展計劃項目(2013GG02104)
袁玉英(1979-),女,山東德州市人,講師,碩士,主要從事光纖通信設(shè)備研究。