王景煜, 景曉軍
(北京郵電大學(xué) 信息與通信工程學(xué)院,北京 100876)
RS(Reed-Solomon)碼是一類具有優(yōu)良性能的極大距離糾錯碼,RS碼廣泛地應(yīng)用在衛(wèi)星通信領(lǐng)域和地面無線移動通信領(lǐng)域。本文設(shè)計了RS(18,10),RS(18,10)是RS(255,247)的縮短碼,和RS(255,247)相比糾錯能力更強。本文在對譯碼原理研究基礎(chǔ)上,提出了一種RS(18,10)譯碼器的matlab解決方案。RS譯碼仿真程序為以后的算法驗證和硬件設(shè)計調(diào)試中起著至關(guān)重要的作用。
RS譯碼方法很多,根據(jù)關(guān)鍵方程的不同,可分為:BM迭代算法和Euclid迭代算法。還有人提出軟入軟出[1]的迭代譯碼算法。本文主要研究BM迭代算法硬判譯碼。
RS(18,10)是 RS(255,247)的縮短碼,所在的有限域是GF(2^8)。每個碼字有8個信息位,進行一次編碼需要10個碼字,生成8個碼子的冗余信息。這18個碼字中任意四個碼字發(fā)生錯誤均可以糾錯[2]。該碼的本原多項式為:
該碼的生成多項式為:
設(shè)R(x)是接收多項式,因為是RS(18,10),所以一次編碼完成會產(chǎn)生18個碼字,可以表示為:
譯碼算法首先計算伴隨多項式iS,i=1,2,3…8,如果伴隨多項式的值為 0,則證明傳輸沒有發(fā)生錯誤,如果有任何一位不為0,則在傳輸中發(fā)生錯誤了。
伴隨多項式為:
式(2)可以寫為 :
這樣根據(jù)式(3)就可以用硬件設(shè)計電路設(shè)計 8條同時處理的電路,這樣在18個處理時鐘就可以計算出8個伴隨值了。相應(yīng)的在進行matlab設(shè)計rs_bansui.m模塊的時候,只要在m函數(shù)里做一個18次的循環(huán)就可以計算出伴隨式。
錯誤位置多項式可以表示為:
求解關(guān)鍵方程是RS碼解碼器設(shè)計實現(xiàn)中最復(fù)雜的一個模塊(rs_bm.m)。在此用BM算法迭代求解。迭代算法就是首先選擇一組或者兩組合理的初始值0()xσ,然后進行第一次迭代運算求解出1()xσ,簡言之用0()xσ表示1()xσ。這樣一直迭代下去,最終迭代出的各個系數(shù)。
迭代過程步驟:
① 初始化合理值,令:② 計算jd,如果jd為0,則:
如果jd不為0,則找出j之前某一行i,i行在j行之前的i-D(i)最大,且,然后按照:計算出()x;
③ 計算1jd+,然后重復(fù)步驟②,迭代進行8次,即可求解出錯誤位置多項式的系數(shù)。
譯碼算法的最后一個步驟就是計算錯誤值,在1.3中我們已經(jīng)求出在 R(x)的那些位置發(fā)生了錯誤,現(xiàn)在我們只需求出對應(yīng)位置上的錯誤值就可以了。還是假設(shè)發(fā)生了v個錯誤,根據(jù)式子:
可以求出第j個錯誤值。其中的:
求出錯誤值jw之后,然后根據(jù)1.3步驟中記錄的第j個錯誤的位置和相應(yīng)位置的接收值進行有限域的加法就可以恢復(fù)出正確值。
RS碼的運算全部都是在有限域內(nèi)進行的,所以進行有限域的基本運算的設(shè)計是非常要的[3]。只要這些基本模塊編寫完成之后,按照上述的步驟即可進行譯碼軟件代碼的編寫。
rs_add.m模塊:y=rs_add(a,b)入口參數(shù)a,b均為模255的十進制數(shù),進入函數(shù)后先進行十進制到二進制的轉(zhuǎn)換,然后按比特異或,將結(jié)果進行二進制到十進制的轉(zhuǎn)換并賦值給y。
rs_multi.m模塊:y=rs_multi(a,b) 口參數(shù)a,b均為模255的十進制數(shù),進入函數(shù)后先進行十進制到二進制的轉(zhuǎn)換,然后按比特進行GF(2^8)域RS(18,10)的簡化的運算。這樣硬件處理在一個運算周期就可以完成乘法。
rs_invers.m模塊:求逆運算比較復(fù)雜,為了加速譯碼速度,考慮到該有限域的元素數(shù)目總數(shù)不多,采用查找表法。在硬件實現(xiàn)時做一個rom的查找表即可。
圖1是對RS(18,10)碼在AWGN信道下的性能仿真,調(diào)制方式為bpsk,發(fā)送端和接收端對數(shù)據(jù)采用8倍過采樣根升余弦滾降濾波進行成形濾波,假設(shè)接收端理想同步。‘*’為沒有加RS碼的性能曲線圖,‘o’為加了RS碼的性能曲線。橫軸為Eb/N0(單位為dB),縱軸為誤比特率。
圖1 性能曲線
本文對RS(18,10)的譯碼算法進行了分析,并給出了進行 matlab軟件實現(xiàn)的方法,其中算法考慮到硬件算法的設(shè)計,設(shè)計了很多基本運算的m函數(shù)和算法各個模塊的m函數(shù),這些都給算法驗證和硬件設(shè)計提供了參考和指導(dǎo)。并且對該RS碼進行了在AWGN信道下的性能仿真,可以看出,在Eb/N0比較小的時候RS碼的作用不是很顯著,但是隨著Eb/N0的提高,RS(18,10)可以顯著的提高誤比特率,在誤比特率為10-3的時候有3 dB的增益。
[1] 李國靜,鄒永忠,李道本.一種適用于RS的低復(fù)雜度軟入軟出譯碼方法[C]//第十二屆全國青年通信學(xué)術(shù)會議.北京:北方工業(yè)大學(xué),2007.
[2] [美] Schwarts M. Mobile Wireless Communications[M].許希斌,李云洲譯.北京:電子工業(yè)出版社,2006:120-130.
[3] [美] Proakis J P, Salehi M, Bauch G. Contemporary Communication Systems Using MATLAB and Simulink[M].劉樹棠譯.第2版.北京:電子工業(yè)出版社,2005:285-296.