文獻(xiàn)標(biāo)識碼: A
DOI:10.16157/j.issn.0258-7998.190901
中文引用格式: 李錦明,劉夢欣,成乃朋. RS編碼算法的優(yōu)化與FPGA實(shí)現(xiàn)[J].電子技術(shù)應(yīng)用,2020,46(2):76-79,83.
英文引用格式: Li Jinming,Liu Mengxin,Cheng Naipeng. Optimization and FPGA implementation of RS coding algorithm[J]. Application of Electronic Technique,2020,46(2):76-79,83.
0 引言
里得-所羅門碼(Reed-Solomon,RS)是由REED I S和SOLOMON G在1960年提出的一種特殊的非二進(jìn)制BCH碼[1],是所有(n,k)線性分組碼中糾錯能力最強(qiáng)的碼型,可同時糾正隨機(jī)錯誤和突發(fā)錯誤。隨著大規(guī)模集成電路技術(shù)的發(fā)展,RS碼憑借其優(yōu)異的性能廣泛應(yīng)用于深空通信、移動通信、軍用通信、光纖通信、磁盤陣列及光存儲等領(lǐng)域,另外RS編碼也可應(yīng)用于保密通信中[2-8]。
1 RS編碼原理
對于碼長為n=2m-1(n>2)的RS(n,k)碼,其碼元符號均取GF(2m),其信息段具有k個符號,監(jiān)督段具有n-k個符號,可糾正t個突發(fā)錯誤,其生成多項式為:
RS(n,k)編碼的碼多項式為:
其中,r(x)為RS(n,k)編碼的校驗(yàn)多項式。
在實(shí)際應(yīng)用中采用的RS碼均為系統(tǒng)碼,c(x)可被g(x)整除,mod為求余運(yùn)算,則:
2 RS編碼電路
根據(jù)RS編碼原理可知,RS碼的編碼電路主要根據(jù)生成多項式g(x)進(jìn)行設(shè)計,實(shí)際應(yīng)用中的常用RS編碼電路[10-14]如圖1所示。
圖1中, g2t-1,g2t-2,…,g1,g0為生成多項式g(x)的系數(shù):
電路工作前將所有寄存器清零,開關(guān)SW1接至mr處,開關(guān)SW2接至m處,信息碼mk-1,…,m1,m0依次進(jìn)入編碼電路,并同時由輸出端進(jìn)行輸出。當(dāng)m(x)送入電路后,開關(guān)SW1接至0處,開關(guān)SW2接至r處,依次輸出寄存器R2t-1,…,R1,R0的值,即校驗(yàn)子rn-k-1,…,r1,r0的值,從而完成RS(n,k)編碼。
3 基于FPGA的RS編碼優(yōu)化
其中,矩陣C為乘法器因子矩陣。觀察RS編碼電路可知,每個乘法器的系數(shù)gk為固定值,即RS編碼電路每個乘法器的乘法器因子為固定值。因此,可以在編碼前根據(jù)生成多項式g(x)的系數(shù)g2t-1,g2t-2,…,g1,g0的值生成乘法器因子矩陣C2t-1,C2t-2,…,C1,C0用于后續(xù)的RS編碼。例如,RS(255,239)的生成多項式系數(shù)g15=118,對應(yīng)的乘法器因子矩陣C15為:
由此證明通過乘法器因子矩陣可以把RS編碼中信息碼與生成多項式系數(shù)gk在伽羅華域上的乘法轉(zhuǎn)換轉(zhuǎn)為信息碼數(shù)據(jù)位之間的加法運(yùn)算。根據(jù)伽羅華域的加法運(yùn)算法則,信息碼數(shù)據(jù)位之間的伽羅華域加法運(yùn)算在FPGA實(shí)現(xiàn)時可由異或操作(^)完成,從而使得FPGA實(shí)現(xiàn)伽羅華域的乘法運(yùn)算簡化,數(shù)據(jù)運(yùn)算量減少。
4 RS編碼優(yōu)化后的FPGA實(shí)現(xiàn)
4.1 乘法器因子求取模塊的FPGA實(shí)現(xiàn)
在FPGA中實(shí)現(xiàn)GF(28)域中RS(255,239)乘法器因子求取的結(jié)果如圖3所示。
4.2 RS編碼的FPGA實(shí)現(xiàn)
為了驗(yàn)證乘法器因子模塊的有效性,采用所得的乘法器因子進(jìn)行RS編碼,將編碼結(jié)果與MATLAB計算的理論結(jié)果進(jìn)行對比驗(yàn)證[15]。
RS編碼的RTL原理圖如圖4所示,包括信息碼數(shù)據(jù)緩存模塊m_fifo、控制模塊control、校驗(yàn)碼生成模塊R_top、編碼數(shù)據(jù)輸出模塊c_fifo。其中,校驗(yàn)碼生成模塊R_top中包含乘法器因子求取模塊,由其完成乘法器因子的求取。
采用乘法器因子模塊所得的乘法器因子實(shí)現(xiàn)的RS(255,239)編碼的測試結(jié)果如圖5所示。當(dāng)輸入信息碼data_in為(1,2,3,…,238,239)時,校驗(yàn)碼生成模塊R_top生成的16個校驗(yàn)子為(37,133,225,126,37,59,132,133,56,168,179,4,9,99,79,148)。圖6為MATLAB對(1,2,…,239)進(jìn)行RS(255,239)編碼輸出的計算結(jié)果,將圖6的輸出結(jié)果與圖5的輸出碼字c進(jìn)行對比,可以驗(yàn)證采用乘法器因子求取模塊實(shí)現(xiàn)的RS編碼無誤。
4.3 乘法器因子求取模塊的適應(yīng)性驗(yàn)證
為了驗(yàn)證乘法器因子求取模塊的適應(yīng)性,采用乘法器因子求取模塊完成RS(255,223)的乘法器因子求取,輸入data_in為(0,1,2,…,222),RS(255,223)編碼測試結(jié)果如圖7所示,編碼輸出的32個校驗(yàn)子為(102,212,116,164,159,61,229,39,17,244,245,67,253,18,156,217,115,73,31,174,27,140,69,159,104,219,254,187,173,169,10,116)。將編碼輸出與圖8所示RS(255,223)編碼計算結(jié)果進(jìn)行比對,可驗(yàn)證編碼無誤,證明采用乘法器因子求取模塊優(yōu)化的基于FPGA的RS編碼可適應(yīng)不同的生成多項式,完成有效RS編碼。
5 結(jié)論
RS編碼是一類很好線性糾錯碼,在工程實(shí)踐中有著廣泛應(yīng)用。本文通過設(shè)計乘法器因子求取模塊,將RS編碼中信息碼與乘法器系數(shù)在伽羅華域上乘法轉(zhuǎn)換轉(zhuǎn)為信息碼數(shù)據(jù)位之間的加法運(yùn)算,降低FPGA實(shí)現(xiàn)時的運(yùn)算復(fù)雜度、減少運(yùn)算量,且可根據(jù)不同的乘法器系數(shù)生成相應(yīng)的乘法器因子,完成不同碼長和校驗(yàn)子的RS編碼,可廣泛應(yīng)用于短碼及中長碼通信領(lǐng)域,具有很好的實(shí)際應(yīng)用價值。
參考文獻(xiàn)
[1] REED I S,SOLOMON G.Polynomial codes over certain finite fields[J].Journal of the Society for Industrial and Applied Mathematics,1960,6(8):300-304.
[2] 張春生,蘇開友.FPGA數(shù)字信號處理與工程應(yīng)用實(shí)踐[M].北京:中國鐵道出版社,2013.
[3] 于劍.基于FPGA的衛(wèi)星通信信道編碼設(shè)計與工程實(shí)現(xiàn)[D].石家莊:河北科技大學(xué),2015.
[4] 胡曉莉,王麗雪,錢永杰,等.基于H-PPM的可見光通信系統(tǒng)RS編碼性能分析[J].應(yīng)用光學(xué),2017,38(5):751-757.
[5] 張翔.無線光通信中的編碼與調(diào)制技術(shù)研究及應(yīng)用[D].北京:北京郵電大學(xué),2015.
[6] 楊家旺,曹陽,彭小峰,等.RS編碼與交織級聯(lián)在室內(nèi)VLC中的應(yīng)用研究[J].光通信技術(shù),2016,40(2):37-39.
[7] 董光亮,崔健雄,李海濤,等.物理層網(wǎng)絡(luò)編碼在深空通信中的應(yīng)用展望[J].電子技術(shù)應(yīng)用,2016,42(5):21-23,31.
[8] 單慧琳,張銀勝.基于改進(jìn)DEA算法的聲波加密傳輸系統(tǒng)[J].電子技術(shù)應(yīng)用,2019,45(4):104-108.
[9] 周炯槃,龐沁華.通信原理[M].北京:北京郵電大學(xué)出版社,2008:382-383.
[10] 袁志東.基于Verilog語言的RS(255,247)編譯碼器設(shè)計[D].合肥:安徽大學(xué),2015.
[11] 胡智寬.基于RS編譯碼的數(shù)字通信電路FPGA設(shè)計研究[D].北京:北京理工大學(xué),2015.
[12] 楊曉玲,郭烜.基于FPGA的RS編碼的設(shè)計與實(shí)現(xiàn)[J].河南機(jī)電高等??茖W(xué)校學(xué)報,2016,24(4):11-14.
[13] 孫健,張輝,王宇飛,等.一種基于RS(24,20)的編譯碼器設(shè)計[J].微電子學(xué)與計算機(jī),2016,33(12):75-79.
[14] 俞旋.RS編碼算法及FPGA實(shí)現(xiàn)[J].科技咨詢導(dǎo)報,2007(28):27-28.
[15] 翟勇,唐凡.利用Matlab仿真RS編碼[J].有線電視技術(shù),2010,17(11):41-44.
作者信息:
李錦明,劉夢欣,成乃朋
(中北大學(xué) 儀器與電子學(xué)院,山西 太原030051)