袁玉英,張連俊,袁慧祥,李鑫磊,羅永剛
(1.山東理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山東 淄博 255049;2.中國(guó)移動(dòng)德州分公司,山東 德州 253013;3.山東理工大學(xué)電氣與電子工程學(xué)院,山東 淄博 255049)
基于FPGA的5B6B編譯碼器的設(shè)計(jì)與測(cè)試
袁玉英1,張連俊1,袁慧祥2,李鑫磊1,羅永剛3
(1.山東理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,山東 淄博 255049;2.中國(guó)移動(dòng)德州分公司,山東 德州 253013;3.山東理工大學(xué)電氣與電子工程學(xué)院,山東 淄博 255049)
為避免簡(jiǎn)單的二電平碼對(duì)數(shù)字光纖通信系統(tǒng)傳輸?shù)挠绊懀O(shè)計(jì)適用于數(shù)字光纖通信系統(tǒng)的5B6B編譯碼器,實(shí)現(xiàn)對(duì)簡(jiǎn)單二電平碼進(jìn)行碼型變換,保證傳輸?shù)耐该餍?。該設(shè)計(jì)利用碼字?jǐn)?shù)字和(WDS)進(jìn)行編碼碼字的選擇,采用正、負(fù)兩種模式交替的方法,在保證平均誤碼增值系數(shù)最小的基礎(chǔ)上,以6種碼變換規(guī)則中的一種為例完成設(shè)計(jì)。該設(shè)計(jì)采用FPGA設(shè)計(jì)流程,運(yùn)用Verilog HDL語(yǔ)言完成5B6B編譯碼器各個(gè)模塊的設(shè)計(jì),并在Quartus II軟件上進(jìn)行仿真測(cè)試。仿真結(jié)果表明:該設(shè)計(jì)功能正確,可根據(jù)需要實(shí)現(xiàn)不同碼表中相應(yīng)5B與6B碼之間的轉(zhuǎn)換,實(shí)現(xiàn)簡(jiǎn)單,應(yīng)用靈活,并能減少數(shù)字碼流中連“0”或連“1”的數(shù)目,減小基線漂移。
光纖通信;5B6B編譯碼器;FPGA;Quartus II;模式交替;仿真測(cè)試
在數(shù)字光纖通信系統(tǒng)中,電發(fā)射機(jī)輸出適于電纜的雙極性碼;但光源不能發(fā)出負(fù)脈沖,因此必須把信號(hào)轉(zhuǎn)變?yōu)閱螛O性碼,才能滿足在光纖中傳輸信號(hào)的要求[1]。但是在簡(jiǎn)單的以二進(jìn)制方式傳輸?shù)碾S機(jī)數(shù)字碼流中,可能會(huì)出現(xiàn)較長(zhǎng)連“0”或連“1”串的情況,這會(huì)帶來(lái)一些問(wèn)題,如導(dǎo)致碼流中的直流分量發(fā)生基線漂移,給定時(shí)提取帶來(lái)一定困難;同時(shí),不能實(shí)現(xiàn)在線誤碼檢測(cè),對(duì)長(zhǎng)途通信系統(tǒng)的維護(hù)也將產(chǎn)生不利影響。因此,在數(shù)字光纖通信系統(tǒng)中,不適合用簡(jiǎn)單的二進(jìn)制碼作為系統(tǒng)的線路碼。為了保證傳輸?shù)耐该餍?,?shù)字光纖通信系統(tǒng)經(jīng)常采用的一種碼型為5B6B碼。國(guó)外的5B6B編譯碼器大多采用組合電路,即把整個(gè)器件集成在一塊芯片上,組成一個(gè)專(zhuān)用集成塊[2]。國(guó)內(nèi)一般采用碼表法:就是把預(yù)先設(shè)計(jì)完的碼表全部存入到一塊可編程只讀存儲(chǔ)器(programmable read-only memory,PROM)內(nèi)。早期的碼表法實(shí)現(xiàn)5B6B編譯碼器基于單片機(jī)完成;近年來(lái),現(xiàn)場(chǎng)可編程門(mén)陣列(field-programmable gate array,F(xiàn)PGA)發(fā)展迅猛。FPGA具有串/并行工作方式、寬口徑適用性、高速度等優(yōu)點(diǎn)[3]。本文介紹基于FPGA設(shè)計(jì)實(shí)現(xiàn)的5B6B編譯碼器,并采用Quartus II軟件完成了功能測(cè)試。該設(shè)計(jì)方法簡(jiǎn)單、易于實(shí)現(xiàn),并且具有靈活性。
5B6B碼屬于mBnB碼,是將輸入的碼流每5bit作為一組,稱(chēng)作一個(gè)碼字,然后通過(guò)編碼把5 bit的輸入碼字在相應(yīng)時(shí)隙內(nèi)轉(zhuǎn)換成6bit的碼字輸出。其碼率提高了6/5倍[4]。在mBnB碼中一般n>m,如果一個(gè)nB碼字中的“0”、“1”個(gè)數(shù)差別比較大,把這樣的nB碼字作為禁字,通常把剩余的可以使用的碼字按照“1”、“0”的個(gè)數(shù)分為正和負(fù)兩種模式(“1”多的為正模式,“0”多的為負(fù)模式),并且兩種模式交替工作。通常使用碼字?jǐn)?shù)字和(WDS)來(lái)判斷碼字是否均勻,并且將選擇WDS最好的碼字在系統(tǒng)中進(jìn)行傳輸,從而確保線路碼傳輸特性等。如果在nB碼碼字中,把“0”碼當(dāng)作“-1”,把“1”碼當(dāng)作“+1”,那么整個(gè)碼字所對(duì)應(yīng)的碼字和即為碼字?jǐn)?shù)字和(WDS)。選取nB碼的原則是:盡量采用最小的碼字,禁止采用最大的。對(duì)于5B6B碼,總共有25,即32個(gè) 5B碼碼字,而6B碼可以組成的碼字共有26,即64個(gè),其中:WDS=0,表示6B碼字中含有3個(gè)“0”和3個(gè)“1”,其碼字?jǐn)?shù)為
同理,WDS=+2的碼字?jǐn)?shù)為15個(gè),WDS=-2的碼字?jǐn)?shù)也為15個(gè),因此可供選擇的具有較小WDS的碼字一共有50個(gè)。然而5B碼僅有32個(gè)碼字,那么只需要從中選擇32個(gè)6B碼碼字。為了減少碼字中連“1”和連“0”的數(shù)目,刪除:000011、110000、001111和111100 4個(gè)碼字,當(dāng)然也禁止使用WDS=±4和WDS=±6的碼字。
5B6B碼有6種碼變換規(guī)則,其中一種碼變換如表1所示的5B6B變換規(guī)則,其平均誤碼增值系數(shù)(error multiplication factor,EMF)最小(EMF=1.28),因此,本文選擇表1所示的碼變換組。表中的“+”組(即模式I)中選用了19個(gè)WDS=0的均等碼字和13個(gè)WDS=+2的不均等碼字。在“-”組(模式II)中選用了19個(gè)WDS=0的均等碼字和13個(gè)WDS=-2的不均等碼字?!?”組和“-”組交替使用,其交替規(guī)則如下:當(dāng)6B碼字為WDS=0的均等碼字時(shí),此時(shí)不論“+”組或“-”組,其下一個(gè)6B碼字在上一個(gè)6B碼字的同組中選擇,即不發(fā)生交替,此時(shí)其下一組欄中標(biāo)以碼字所在組的相同組別符號(hào);例如,“+”組中6B碼字為110010,這個(gè)碼字為WDS=0的均等碼字,所以,其下一組欄標(biāo)“+”,即下一個(gè)6B碼字仍在“+”組中;當(dāng)6B碼字為不均等碼字時(shí),如果6B碼字WDS=+2,即這個(gè)碼字處在“+”組中,其下一個(gè)6B碼字為WDS=-2不均等碼字,下一組欄標(biāo)“-”。這時(shí)6B碼字發(fā)生交替,以減小累計(jì)不均;反之,6B碼字為WDS=-2不均等碼字,表明這個(gè)6B碼字處在“-”組,其下一組欄標(biāo)“+”,即下一個(gè)6B碼字應(yīng)在“+”組,碼字狀態(tài)發(fā)生交替。交替結(jié)果,使6B碼字的不均值達(dá)到平衡。
上面所述的5B6B碼兩種模式的交替,也可以用狀態(tài)圖表示,如圖1所示。
圖1 狀態(tài)轉(zhuǎn)換圖
5B6B編碼器是將輸入的二進(jìn)制碼流按5 bit單元進(jìn)行分組,組成輸入碼字。然后將每組5bit的碼字在相同時(shí)隙內(nèi)變換成模式I(+組)或模式II(-組)的6bit一組的碼流輸出。圖2為5B6B編碼器框圖。
表1 5B6B碼碼表
由圖可知,編碼器電路由偽隨機(jī)碼發(fā)生器、分頻電路、串/并間轉(zhuǎn)換電路、狀態(tài)控制電路及編碼電路組成。
2.1 偽隨機(jī)碼發(fā)生器
偽隨機(jī)碼是確定序列,但具有隨機(jī)序列的基本特性,有預(yù)先可確定性,可重復(fù)產(chǎn)生與處理[5]。偽隨機(jī)碼是利用序列發(fā)生器的輸入時(shí)鐘脈沖產(chǎn)生的,為與總時(shí)鐘同步,在頂層模塊設(shè)計(jì)中先將CLK取反后再輸入偽隨機(jī)發(fā)生器。
2.2 分頻模塊
系統(tǒng)會(huì)產(chǎn)生一個(gè)標(biāo)準(zhǔn)時(shí)鐘信號(hào)clk,此分頻電路產(chǎn)生供編碼電路和譯碼電路工作使用的時(shí)鐘,將分頻成5分頻和6分頻,之間的關(guān)系是:f6b=6/5f5b,分別控制串并轉(zhuǎn)換、編碼和并串轉(zhuǎn)換。
1)5分頻:序列發(fā)生器的輸入時(shí)鐘脈沖5分頻,可實(shí)現(xiàn)每輸入5 bit的串行信號(hào)同步轉(zhuǎn)換輸出5位的并行信號(hào),實(shí)現(xiàn)時(shí)鐘信號(hào)的同步[6]。
2)6分頻:序列發(fā)生器的輸入時(shí)鐘脈沖6分頻,實(shí)現(xiàn)時(shí)鐘信號(hào)的同步。
2.3 串/并轉(zhuǎn)換模塊
此模塊實(shí)現(xiàn)信號(hào)的串行輸入、并行輸出,或?qū)崿F(xiàn)信號(hào)的并行輸入、串行輸出[7]。
串/并轉(zhuǎn)換模塊:當(dāng)串行輸入5 bit的信號(hào)時(shí)經(jīng)過(guò)該模塊輸出并行的5 bit信號(hào)[8]。
并串轉(zhuǎn)換模塊:由編碼模塊轉(zhuǎn)換輸出的6 bit并行信號(hào)進(jìn)入該模塊轉(zhuǎn)換成串行輸出,得到所需要的6B碼[9]。
2.4 狀態(tài)控制模塊
狀態(tài)控制模塊的原理是當(dāng)輸出的6B碼為“+”組時(shí),若WDS=0,則下一個(gè)flag不變,若WDS=+2,則令flag=1,從而跳轉(zhuǎn)到“-”組碼;當(dāng)輸出的6B碼為“-”組時(shí),若WDS=0,則下一個(gè)flag不變,若WDS=-2,則令flag=0,從而跳轉(zhuǎn)到“+”組碼。這就實(shí)現(xiàn)了6B碼兩種狀態(tài)“+”組和“-”組模式碼的交替,減小了5B6B碼的累計(jì)不均。
2.5 編碼模塊
圖2 編碼器電路框圖
此模塊是完成5B碼轉(zhuǎn)換成6B碼的核心環(huán)節(jié),在此模塊中串并轉(zhuǎn)換輸出的并行5 bit信號(hào),受到6分頻信號(hào)和狀態(tài)控制模塊控制,轉(zhuǎn)換為并行的6 bit信號(hào)。此模塊由PROM構(gòu)成,把預(yù)先設(shè)計(jì)好的碼表存儲(chǔ)在PROM內(nèi),利用并行接收的5bit碼字作為地址碼,查詢(xún)存儲(chǔ)的碼表,輸出與之對(duì)應(yīng)的并行6B碼。
圖3是5B6B編碼器中主要模塊的仿真波形圖。該仿真是在Quartus II軟件上完成的[10]。
圖4是包括編碼模塊、狀態(tài)控制模塊和串/并轉(zhuǎn)換模塊的仿真波形圖。輸入的串行數(shù)據(jù)data_5bit_in經(jīng)串/并轉(zhuǎn)換變?yōu)?位并行碼,暫時(shí)存儲(chǔ)于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為高電平時(shí)所對(duì)應(yīng)的輸入5bit碼變?yōu)?bit。
flag為組別控制信號(hào),flag=0對(duì)應(yīng)于正組,flag=1對(duì)應(yīng)于負(fù)組。
5B6B譯碼器的功能是把輸入的6B碼流經(jīng)過(guò)譯碼正確還原成與5B6B碼編碼前一致的5B碼流。從功能作用來(lái)看,5B6B碼的譯碼器變換是5B6B碼編碼的反變換,圖5為5B6B碼譯碼器電路框圖。其中,偽隨機(jī)碼發(fā)生器、分頻電路以及串/并轉(zhuǎn)換電路的設(shè)計(jì)與5B6B碼編碼器設(shè)計(jì)中的類(lèi)似。
譯碼模塊是將并行輸入的6B碼轉(zhuǎn)換成相應(yīng)的5B碼,與編碼模塊類(lèi)似,其由PROM構(gòu)成,在5分頻信號(hào)的控制下,根據(jù)預(yù)先設(shè)計(jì)好的碼表完成6B至5B碼的轉(zhuǎn)換。
圖6是5B6B譯碼器中譯碼模塊和串/并轉(zhuǎn)換模塊組成電路的仿真波形圖。其把rst=1且clk_5_6th為高電平時(shí)所對(duì)應(yīng)的輸入6bit碼變?yōu)榱?bit。
本文論述了5B6B編譯碼器的設(shè)計(jì)和實(shí)現(xiàn)方法,該方法簡(jiǎn)單,且與組合邏輯電路設(shè)計(jì)方法相比更加靈活,可根據(jù)需要實(shí)現(xiàn)不同碼表的5B與6B碼之間的轉(zhuǎn)換。通過(guò)該設(shè)計(jì),既減少了數(shù)字碼流中連“0”或連“1”的數(shù)目,減小了基線漂移,又使得系統(tǒng)的誤碼增值系數(shù)減小,累計(jì)不均值降低,從而保證了數(shù)字光纖通信系統(tǒng)傳輸?shù)耐该餍浴?/p>
圖3 5分頻模塊仿真圖
圖4 編碼器仿真圖
圖5 譯碼器電路框圖
圖6 譯碼器仿真圖
[1]劉增基,周洋溢,胡遼林,等.光纖通信[M].2版.西安:西安電子科技大學(xué)出版社,2012:93-94.
[2]盧志茂,馮進(jìn)玫,陳麗娟,等.光纖通信[M].北京:北京大學(xué)出版社,2010:102-103.
[3]楊海鋼,孫嘉斌,王慰.FPGA器件設(shè)計(jì)技術(shù)發(fā)展綜述[J].電子與信息學(xué)報(bào),2010,32(3):714-727.
[4]汪勝蕾.基于線路編碼和RSOA上行再調(diào)制的WDMPON系統(tǒng)研究[D].杭州:浙江大學(xué),2013.
[5]趙嘎,王小軍,宋鳴,等.基于FPGA的可配置偽隨機(jī)序列發(fā)生器的設(shè)計(jì)與實(shí)現(xiàn)[J].云南大學(xué)學(xué)報(bào):自然科學(xué)版,2012,34(2):147-151.
[6]徐杰,曹小虎,張新文,等.5B6B碼的編碼仿真與實(shí)現(xiàn)課程設(shè)計(jì)報(bào)告 [EB/OL].豆丁網(wǎng),2014.http:∥www.docin. com/p-756236169.html.
[7]付秀蘭,孫立宏.基于65nm CMOS工藝的高速串并轉(zhuǎn)換電路設(shè)計(jì)[J].中國(guó)集成電路,2012(4):57-60.
[8]嚴(yán)剛峰,方紅,楊維,等.采用FPGA實(shí)現(xiàn)同步串行數(shù)據(jù)的并行采集[J].自動(dòng)化儀表,2014,35(9):84-86.
[9]孫志雄,謝海霞.基于FPGA的高速串并/并串轉(zhuǎn)換器設(shè)計(jì)[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年山東省淄博市科學(xué)技術(shù)發(fā)展計(jì)劃項(xiàng)目(2013GG02104)
袁玉英(1979-),女,山東德州市人,講師,碩士,主要從事光纖通信設(shè)備研究。