魯芳旭 劉翠海



摘要:主要介紹RS碼的編譯碼原理,并基于Matlab進行仿真實現,同時構建了含有BPSK調制的通信系統,對有無編碼的通信系統進行仿真和性能分析,發現該碼型對通信系統的傳輸特性有一定程度的改善。通過比較分析,對該碼型的糾錯性能有了更全面的認識,有利于更好的研究和應用RS碼。
關鍵詞:信道編碼;RS碼;糾錯性能
中圖分類號:TN911.22 文獻標識碼:A 文章編號:1007-9416(2020)08-0025-03
0 引言
RS碼是一類糾錯能力很強的多進制BCH碼[1],其糾錯能力和編碼效率在線性分組碼中是最高的。RS碼特別適合用于多進制調制的場合[2],同樣適用于在衰落信道中糾正突發性錯碼[3]。與此同時,RS碼能用來構造其他碼類,如級聯碼。由于其具有以上優良性能,目前已被廣泛應用在各種通信系統和計算機存儲系統中。
1 RS碼的編譯碼原理及數學模型構建
RS碼是一種特殊的多進制BCH碼。設p為素數,q=pm,那么由伽羅華域GF(q)產生的碼就稱作q進制碼。二進制BCH碼的碼長為n=2m-1,若要糾正t個錯碼,則需要2t個監督碼元。同理在q進制碼中,碼長為n=qs-1,若要糾正t個錯碼,則需要2st個監督碼元,當s=1時的q元BCH碼稱為RS碼,屬于非二元BCH碼。
1.1 RS碼的編碼
RS碼是循環碼的一種,因此其編碼方式與一般循環碼的編碼方式一致。
一個(n,k)RS碼的生成多項式g(x)為:
g(x)=(x-α)(x-α2)…(x-a2t)=(x-αi)
其中αi是伽羅華域GF(2m)={0,α0,α1,…,α2m-2}中的一個元素,t為RS碼能夠糾正的錯碼個數。
信息多項式m(x)為:
m(x)=mk-1xk-1+mk-2xk-2+…+m1x1+m0
用m(x)除以g(x),所得余式為校驗多項式h(x),將h(x)置于m(x)之后,即生成了RS碼。
編碼后的碼字多項式c(x)為:
c(x)=xn-km(x)+h(x)=xn-km(x)+[xn-km(x)]modg(x)
1.2 RS碼的譯碼
RS碼是一種非二元循環碼,它不再具備特征為2的域運算等性質[4],本文RS碼譯碼算法基于PGZ譯碼算法,主要分為以下4步:
1.2.1 計算伴隨式sk
RS碼的伴隨式是接收碼字r(x)除以生成式g(x)所得的余式。對于RS碼共有2t個伴隨式。
假設r(x)=r0+r1x+…+rnxn-1
則錯誤圖樣為:
e(x)=r(x)-c(x)=e0+e1x+…+en-1xn-1
設e(x)含有v個錯誤(非零元素)且分別位于 ,則e(x)=++…+
RS碼的2t個伴隨式通過把αi代入r(x)得出,即:
若sk=0,則認為接收無誤,否則由sk找出錯誤圖樣。
1.2.2 計算錯誤位置多項式σ(x)
由于上式直接求解比較困難,故轉化為-組線性方程進行求解。令Xi=αji(i=1,2,…,v)表示第i個錯誤位置數,e1,e2,…,ev表示錯誤值。定義錯誤位置多項式σ(x),它的根是錯誤位置數的倒數,即:
σ(x)=(1+X1x)(1+X2x)…(1+Xvx)=σ0+σ1x+ σ2x2+…+σvxv
計算σ(x)的通用方法是BM迭代算法,通過Matlab編程即可實現。
1.2.3 確定錯誤位置
計算得到上式的系數后,令σ(x)=0求得其根,就可以得到錯誤位置。由于分解因式的復雜性,一般通過錢氏搜索法求解σ(x)的根,得到錯誤位置數,確定出錯誤位置。
接受碼字由高位至低位逐位譯碼,為了譯rn-1,碼器測試αn-1是否為錯誤位置數,也就是檢查其倒數α是否為σ(x)的根,若α是σ(x)的根,則:
1+σ1α+σ2α2+…+σvαv=0
因此,譯碼器計算σ1α,σ2α2,…,σvαv,若滿足上式,則αn-1為錯誤位置數,rn-1為錯誤碼元,這樣就由錯誤位置數確定了錯誤位置。
1.2.4 計算錯誤數值
上一步確定了錯誤位置,接下來需要計算錯誤數值,設z(x)=1+(s1+σ1)x+(s1+σ1s1+σ2)x2+…+(sv+σ1sv-1+ …+σv-1s1+σv)xv
求解后根據錯誤位置和錯誤數值得出錯誤圖樣e(x),根據發送碼字c(x)=e(x)+r(x),完成譯碼。
2 仿真實現
2.1 伽羅華域及其基本運算的仿真實現
前面介紹的RS碼的編譯碼數學模型都是在伽羅華域內進行,因此在仿真實現中首先要構造伽羅華域。由于RS碼的編譯碼進行了大量多項式元素的加法、乘法、倒數運算,這些運算均在伽羅華域GF(2m)中進行,因此其加法運算對應的是模2運算,其乘法運算對應的是指數模2m相加,上述運算可以通過編程實現。
2.2 RS碼編碼的仿真實現
編碼方式選擇RS(15,11),利用11個符號得到長度為n=15能糾正t=2個錯誤的編碼,碼元符號取自域GF(24),即m=4。其編碼的仿真實現調用了Matab函數polydiv_rs,該函數的矢量參數表示多項式各項的系數,按照多項式次數從低到高的順序排列。
2.3 RS碼譯碼的仿真實現
相較于編碼,RS 碼的譯碼過程較為復雜,通過前文介紹已知主要分為四個步驟:(1)計算伴隨式sk;(2)計算錯誤位置多項式σ(x);(3)確定錯誤位置;(4)計算錯誤數值。其中第(2)步的實現基于BM算法,第(3)步的實現基于錢氏搜索法,均可通過Matlab編程來完成。
2.4 仿真結果
本文選擇了二進制相位調制(BPSK),用高斯信號源仿真噪聲,在該通信系統下,觀察有無RS碼兩種條件下的信噪比-誤碼率(SNR-BER)曲線圖,得到仿真結果由圖2所示。
3 結語
本文較為詳盡的介紹了RS碼的編譯碼原理,通過構建數學模型,利用Matlab平臺完成了RS碼編譯碼的仿真實現。與此同時,構建了含有BPSK調制的通信系統,通過對有無RS碼的通信系統進行仿真和性能分析,發現在相同SNR條件下,有RS碼的BER明顯低于無RS碼的BER,說明RS碼能有效提高信號傳輸的可靠性,這為合理設計RS碼的編譯碼方案提供了理論基礎,更為進一步研究和利用RS碼的抗突發干擾能力提供了有益參考。
參考文獻
[1] 樊昌信,曹麗娜.通信原理(第7版)[M].北京:國防工業出版社.2014:375.
[2] 劉翠海,溫東,姜波.無線電通信系統仿真及軍事應用[M].北京:國防工業出版社,2013:141.
[3] 鄭相全,段文.Reed-Solomon碼性能增強譯碼算法[J].無線電工程,2019,49(2):128-132.
[4] 郭潔,唐磊.Reed-Solomon碼的編譯碼實現及仿真[J].中國科技縱橫,2009(11):622-625.