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