朱 博,孟李林,李小龍,邵瑞瑞
(西安郵電大學(xué)計(jì)算機(jī)學(xué)院,陜西西安 710061)
隨著通信系統(tǒng)向高速率、高容量方向發(fā)展,光傳輸網(wǎng)絡(luò)(Optical Transport Network,OTN)得到了廣泛應(yīng)用。OTN是通過(guò)G.709等一系列ITU-T的建議所規(guī)范的新一代“數(shù)字傳送體系”和“光傳送體系”。但由于信道中光信號(hào)的衰減、各路光信號(hào)之間的串?dāng)_以及色散等原因,不可避免地會(huì)產(chǎn)生誤碼。
在G.709[1]中定義的OTN幀結(jié)構(gòu)采用數(shù)據(jù)交織與 Reed-Solomon(255,239)碼實(shí)現(xiàn) FEC(Forward Error Correction,前向糾錯(cuò))功能,以此糾正傳輸中出現(xiàn)的誤碼。FEC方式與反饋重傳糾錯(cuò)方式相比,無(wú)需反饋信道,避免了反復(fù)重發(fā)而延誤傳輸時(shí)間。
在G.709定義的OTN中,OTU2的幀結(jié)構(gòu)由4行×4080列組成,每一行的前3 824列作為信息部分,后256列作為校驗(yàn)信息部分。OTN中FEC的實(shí)現(xiàn)過(guò)程就是在發(fā)送端根據(jù)前3 824列的數(shù)據(jù),利用數(shù)據(jù)交織和RS編碼相結(jié)合的方法產(chǎn)生后256列的校驗(yàn)信息,并在接收端根據(jù)校驗(yàn)信息最大限度地糾正信號(hào)在傳輸中產(chǎn)生的誤碼。
根據(jù)G.709,研究了OTN中數(shù)據(jù)交織方法和RS編解碼算法,并完成了FEC電路設(shè)計(jì)。
采用數(shù)據(jù)交織的目的是把一個(gè)較長(zhǎng)的突發(fā)差錯(cuò)離散成隨機(jī)差錯(cuò),再用糾錯(cuò)碼技術(shù)消除隨機(jī)差錯(cuò)。交織的深度越大,則離散度越大,抗突發(fā)差錯(cuò)能力也越強(qiáng)。
G.709中采用以1 Byte為單位、深度為16的交織方式。其方法是將OTU2每一行的信息使用字節(jié)間插方法拆分成16個(gè)子行,每一路編碼器或解碼器負(fù)責(zé)處理其中的一個(gè)子行[2]。
在發(fā)送端,數(shù)據(jù)交織的過(guò)程如圖1所示,當(dāng)幀頭指示信號(hào)到來(lái)時(shí),選擇開(kāi)關(guān)打到0,1~8路編碼器使能設(shè)為有效,并將收到的64位數(shù)據(jù) Din[63:0]的低8位Din[7:0]給第 1 路編碼器,將 Din[15:8]給第 2 路編碼器,以此類推,Din[63:56]給第8路編碼器。8路編碼器同時(shí)工作,當(dāng)?shù)诙€(gè)時(shí)鐘到來(lái)時(shí),選擇開(kāi)關(guān)打到1,1~8路編碼器使能設(shè)為禁止,9~16路編碼器使能設(shè)為有效,數(shù)據(jù)按上述方法給第9~16路編碼電路,之后的節(jié)拍依次循環(huán)。
圖1 數(shù)據(jù)交織過(guò)程
接收端的數(shù)據(jù)交織方法與發(fā)送端類似,這里不再重復(fù)。
在G.709中,采用 RS(255,239)碼,即信息數(shù)據(jù)為239 Byte,校驗(yàn)數(shù)據(jù)為16 Byte,共255 Byte,糾錯(cuò)能力為8 Byte。
對(duì)于RS(255,239)碼的編碼器,將輸入的信息數(shù)據(jù)以多項(xiàng)式形式表示為m(x)=(m238x238+…+m1x+m0),其中每個(gè)系數(shù)均是一個(gè)8 bit的碼元符號(hào),m238是信息數(shù)據(jù)的第一位。因?yàn)镽S碼為系統(tǒng)循環(huán)碼,所以編碼后的信息C(x)可表示為C(x)=x16m(x)+r(x),其中r(x)即校驗(yàn)數(shù)據(jù)多項(xiàng)式,是x16m(x)除以生成多項(xiàng)式g(x)的余式。編碼器可采用LFSR(Linear Feedback Shift Register,線性反饋移位寄存器)電路實(shí)現(xiàn),如圖2所示。
圖2 編碼器電路
圖2中“?”是有限域乘法器;“⊕”是有限域加法器;R0,R1,…,R15是 m -bit寄存器。當(dāng)幀頭指示信號(hào)到來(lái)時(shí),計(jì)數(shù)器從1開(kāi)始計(jì)數(shù),在使能為有效的情況下,每個(gè)時(shí)鐘節(jié)拍加1。計(jì)數(shù)器數(shù)值在1~239時(shí),編碼電路中的兩個(gè)選擇器均為1,此時(shí)編碼器的輸出即輸入;計(jì)數(shù)器數(shù)值在240~255時(shí),選擇器為0,此時(shí)編碼器輸入為0,將16個(gè)寄存器中的數(shù)值依次輸出,完成編碼過(guò)程。
RS解碼方法分為時(shí)域解碼和頻域解碼,頻域解碼需要的硬件開(kāi)銷比時(shí)域解碼多,因此本文只研究時(shí)域解碼方法。時(shí)域解碼器結(jié)構(gòu)框圖如圖3所示。
圖3 RS解碼器結(jié)構(gòu)框圖
RS碼的解碼過(guò)程分為4步:(1)由接收到的信息計(jì)算伴隨式S(x)。(2)利用S(x)解關(guān)鍵方程得到Λ(x)。(3)利用Λ(x)和步驟(1)計(jì)算得出的S(x),通過(guò)Chien搜索算法找到錯(cuò)誤位置,并由Forney算法計(jì)算出錯(cuò)誤數(shù)值。(4)更正錯(cuò)誤數(shù)據(jù)并將其輸出。
定義接收碼字多項(xiàng)式R(x)除以碼的生成多項(xiàng)式g(x)的余式為伴隨式多項(xiàng)式S(x)
根據(jù)霍納(Horner)準(zhǔn)則,對(duì)于RS(255,239)碼,將式(1)改寫(xiě)為嵌套算法
計(jì)算電路如圖4所示。
圖4 伴隨式計(jì)算電路
初始化時(shí),將16個(gè)寄存器全部置0,輸入第一個(gè)碼元符號(hào)時(shí),先與寄存器中的零值相加,再經(jīng)過(guò)常數(shù)乘法器后和下一碼元符號(hào)相加,如此循環(huán)直到接收第255個(gè)碼元符號(hào)后,就可以得到全部16個(gè)伴隨式,最后通過(guò)選擇器依次從16個(gè)寄存器中讀出數(shù)據(jù)。
該模塊的功能是根據(jù)前一模塊得出的伴隨式S(x)求解錯(cuò)誤位置多項(xiàng)式Λ(x),是整個(gè)譯碼電路中最復(fù)雜也是最耗資源的一個(gè)模塊。文中采用改進(jìn)的無(wú)逆IBM算法,其步驟是從式(2)到式(7)循環(huán)迭代,直到滿足 k=15[3]
初始化時(shí),各變量的值為:
式中,k是迭代次數(shù);Δ(k)(x)是待求的錯(cuò)誤位置多項(xiàng)式;L(k)是Δ(k)(x)的階;T(k)(x)和γ(k)(x)是輔助計(jì)算的中間變量。
式(2)即為計(jì)算Λ(x)和S(x)的卷積和,可以采用FIR濾波器電路實(shí)現(xiàn),如圖5所示。
圖5 Δ(x)計(jì)算電路
Chien搜索算法的目的是找出錯(cuò)誤碼元符號(hào)的位置,并輸出錯(cuò)誤指示信號(hào)。其方法是將a-i(i=1,2,3,…,254)代入 Λ(x)=1+Λ1x+Λ2x2+… +Λ8x8,若Λ(a-i)=0,則說(shuō)明接收到的第 i個(gè)碼元符號(hào)出現(xiàn)錯(cuò)誤[4]。
圖6 Chien搜索電路
首先根據(jù)之前計(jì)算得出的S(x),先計(jì)算得出Forney算法所需的Ω(x)。對(duì)Ω(x)的計(jì)算其實(shí)就是計(jì)算S(x)和Λ(x)的卷積和,因此,也可采用計(jì)算Δ(x)的電路實(shí)現(xiàn)。
在計(jì)算Ω(x)的電路中,寄存器在初始化時(shí)全部置0,之后使16個(gè)伴隨式依次通過(guò)寄存器,當(dāng)所有伴隨式通過(guò)寄存器后,便可得到Ω(x)。
圖7 糾錯(cuò)電路
設(shè)計(jì)的解碼器延遲為275時(shí)鐘節(jié)拍,因此FIFO的深度設(shè)為275。
從上文中可看出,RS編解碼電路中大量用到了有限域乘法器,由于RS碼是定義在有限域上的多進(jìn)制碼,因此電路中的乘法器并不是普通的二進(jìn)制乘法器,其實(shí)現(xiàn)較為復(fù)雜。本文重點(diǎn)研究基于弱對(duì)偶基的比特并行乘法器和標(biāo)準(zhǔn)基乘法器。
在設(shè)計(jì)基于弱對(duì)偶基的比特并行乘法器時(shí),首先根據(jù)式(8)將自然基下的輸入b[7:0]變換到弱對(duì)偶基下的 b*[7:0]。
在求得對(duì)偶基下的系數(shù)后,還要求出弱對(duì)偶基下的擴(kuò)展系數(shù),計(jì)算公式為
然后根據(jù)式(9)計(jì)算弱對(duì)偶基下的乘法
最后,根據(jù)式(10)將計(jì)算結(jié)果從弱對(duì)偶基轉(zhuǎn)化為自然基,完成乘法運(yùn)算。
基于弱對(duì)偶基的比特并行乘法器在實(shí)現(xiàn)步驟上比較復(fù)雜,需要在乘法器的輸入端和輸出端加上基變換電路,但其優(yōu)點(diǎn)是電路結(jié)構(gòu)規(guī)整。
標(biāo)準(zhǔn)基乘法器較為直觀,根據(jù)文獻(xiàn)[5],先將兩個(gè)因子按多項(xiàng)式乘法相乘得到一個(gè)次數(shù)不高于14的多項(xiàng)式,再將得到的多項(xiàng)式對(duì)生成多項(xiàng)式求模。
值得注意的是,在編碼器和伴隨式計(jì)算電路、Chien搜索電路和Forney算法電路中出現(xiàn)了常數(shù)乘法器。對(duì)于常數(shù)乘法器,由于其中一個(gè)因子是固定的,因此可在推導(dǎo)輸出與輸入因子的關(guān)系是直接將常數(shù)代入,以乘以59的乘法器為例,59(十進(jìn)制)=111011(二進(jìn)制),用標(biāo)準(zhǔn)基表示為a5+a4+a3+a1+a0,并將輸入因子m[7:0]寫(xiě)為
兩式按有限域乘法運(yùn)算法則相乘后,按位整理便可得到乘積q[7:0]與輸入因子的關(guān)系:
也就是說(shuō),乘以59的乘法器只由異或門組合即可實(shí)現(xiàn),大幅降低了電路復(fù)雜度。
通過(guò)觀察不難發(fā)現(xiàn),乘以59的乘法器電路中多次出現(xiàn)了m[7]^m[2],所以可將其作為一個(gè)整體進(jìn)行運(yùn)算,當(dāng)再次出現(xiàn)時(shí)便可直接使用。利用這個(gè)思想將乘以59的乘法器改寫(xiě)為
通過(guò)改寫(xiě),(m[7]^m[2])在代碼中雖然出現(xiàn)了4次,但在軟件綜合時(shí),則是將其綜合成同一個(gè)模塊,因此電路可得到進(jìn)一步優(yōu)化。
為驗(yàn)證編碼器,在Matlab軟件中調(diào)用rsenc(msg,n,k)函數(shù),輸入數(shù)據(jù)為238個(gè)0,1個(gè)1,計(jì)算得出的校驗(yàn)數(shù)據(jù)為 118,52,103,31,104,126,187,232,17,56,183,49,100,81,44,79。圖 9 上半部分為編碼器的仿真結(jié)果,可看出,兩者輸出數(shù)據(jù)相同,說(shuō)明編碼器設(shè)計(jì)正確。
對(duì)于解碼器,根據(jù)編碼器結(jié)果,將信息數(shù)據(jù)的后8 Byte改為1,2,3,4,5,6,7,8,其輸出結(jié)果應(yīng)為 238 個(gè)0,1個(gè)1。仿真結(jié)果如圖9下半部分所示,與預(yù)期結(jié)果一致。
圖8 仿真結(jié)果
在QuartusII中,分別對(duì)采用弱對(duì)偶基乘法器、標(biāo)準(zhǔn)基乘法器以及含有經(jīng)過(guò)優(yōu)化的常數(shù)乘法器的FEC電路,選用Altera CycloneIII EP3C120F780I7系列開(kāi)發(fā)板進(jìn)行綜合,結(jié)果如表1所示。結(jié)果表明,采用含經(jīng)優(yōu)化的常數(shù)乘法器的方案占用資源最少,速率最高;本文研究的FEC電路速率均高于167.3 MHz,能夠滿足OTU2數(shù)據(jù)流的速率要求。
表1 不同方案綜合結(jié)果
根據(jù)G.709協(xié)議,針對(duì)OTU2數(shù)據(jù)流,用數(shù)據(jù)交織和RS碼設(shè)計(jì)并實(shí)現(xiàn)了OTN中的FEC電路。設(shè)計(jì)中采用數(shù)據(jù)交織,增大了FEC的糾錯(cuò)性能;還對(duì)有限域乘法器的3種實(shí)現(xiàn)方案做了對(duì)比,選出最佳方案。經(jīng)過(guò)驗(yàn)證,所設(shè)計(jì)的FEC電路能夠高速實(shí)現(xiàn)OTN中的FEC功能。所設(shè)計(jì)的FEC電路已經(jīng)應(yīng)用于陜西省“13115”科技創(chuàng)新工程重大科技專項(xiàng)的項(xiàng)目之中。
[1]ITU -T -Recommendation-G.709(version2.0).Y.1331-2003,interface for the optical transport network(OTN)[S].USA:ITU -T -R -G,2003.
[2]謝軍,馮浩,蔣旭.OTN中FEC技術(shù)的應(yīng)用[J].光通信研究,2005(3):24-27.
[3]顧艷麗,周洪敏.基于FPGA的高速RS編解碼器設(shè)計(jì)與實(shí)現(xiàn)[J].通信與廣播電視,2008(1):12-16.
[4]江藤良純,金子敏信.糾錯(cuò)碼及其應(yīng)用[M].北京:科學(xué)出版社,2003.
[5]俞旋.RS編解碼的FPGA實(shí)現(xiàn)[D].南京:東南大學(xué),2008.
[6]韓雪,蔣旭平.RS編解碼過(guò)程及軟件實(shí)現(xiàn)[J].電子科技,2010,23(12):88 -91.