李淑婧 王蕾 任寶祥 李哲 尚耀波
摘 ?要: 隨著通信速率的提高,有噪信道的可靠通信通過信道編碼來實現(xiàn)。文中設(shè)計的(25,20)線性分組編譯碼器結(jié)合漢明碼能糾正一位錯誤且具有編碼效率較高、譯碼電路簡單、譯碼延時小等優(yōu)點。分析伴隨式與錯誤圖樣的對應(yīng)關(guān)系,采用并行處理的方式,使用硬件描述語言VHDL在Xilinx公司的Vivado 2016.1環(huán)境下編程實現(xiàn)。通過ModelSim仿真平臺驗證,降低了實現(xiàn)的復(fù)雜度。在工程實踐中將編譯碼器加入某實測通信系統(tǒng),實現(xiàn)了在Artix?7系列xc7z030fbg676?1的芯片上占用較少的硬件資源實現(xiàn)(25,20)線性分組編譯碼,提高系統(tǒng)傳輸?shù)目煽啃裕炞C了該設(shè)計的優(yōu)良性能。
關(guān)鍵詞: 信道編碼; (25,20)線性分組碼; 漢明碼; 伴隨式; 錯誤圖樣; 并行處理
中圖分類號: TN911.22?34 ? ? ? ? ? ? ? ? ? ? ? ? 文獻標(biāo)識碼: A ? ? ? ? ? ? ? ? ? ? ?文章編號: 1004?373X(2019)11?0007?04
Abstract: With the increase of signal transmission speed, the reliable communication of noisy channel is realized by means of channel coding. The (25,20) linear block codec is designed, and combined with the advantages of Hamming code which can correct the error of one bit and has high encoding efficiency, simple decoding circuit and short decoding delay. The corresponding relationship between syndrome and error pattern is analyzed. The parallel processing mode and hardware description language VHDL are used for programming implementation in Vivado 2016.1 environment. The codec is verified with Modelsim simulation platform, and the simulation results show that the complexity is reduced. The (25,20) linear block codec is applied to a certain actual measurement communication system, which can realize the (25,20) linear block coding and decoding with little hardware resources on the chip xc7z030fbg676?1 of Artix?7 series, improve the system transmission reliability, and verify the excellent performance of the design.
Keywords: channel coding; (25,20) linear block code; Hamming code; syndrome; error pattern; parallel processing
0 ?引 ?言
無線傳輸信道中由于噪聲、時延、多徑衰落等各種因素的影響,造成傳輸信號到達接收端失真,接收序列存在誤碼的情況不可避免。信道編碼是以提高傳輸可靠性為主要目的,通過增加冗余碼元來提高不同碼字間的差異程度,從而獲得編碼增益[1?2]。對于分組碼的情況,信源數(shù)據(jù)被分割成大小為[k]個數(shù)據(jù)比特的分組,編碼器將每[k]比特的數(shù)據(jù)分組轉(zhuǎn)換成一個更大的包含[n]比特的數(shù)據(jù)分組,每個分組附加的[n-k]比特稱為冗余比特[3?4]。
線性分組碼是把信息序列以[k]個碼元劃分為一段,通過一定的線性運算得出[r]個監(jiān)督碼元,輸出碼長為[n=k+r]的一個碼組[5]。(7,4)漢明碼屬于線性分組編碼,用于糾正單個錯誤,在工程上較易實現(xiàn),因此在軟件無線電中得到廣泛應(yīng)用[6]。對線性分組進行譯碼時,由接收信息碼元計算監(jiān)督碼元,伴隨式由計算的監(jiān)督碼元和接收的監(jiān)督碼元相加共同確定,譯碼只檢測信息碼元的錯誤,此方法極大地降低了計算量,而且同樣適用于其他信道編碼[7]。文獻[8]運用C++Builder和CCS實現(xiàn)了(7,4)漢明碼編譯碼系統(tǒng),但由于CCS內(nèi)部信號采取串行處理的方式,導(dǎo)致譯碼延時增大。文獻[9]將漢明碼與交織相結(jié)合,設(shè)計了一種交織漢明碼,提高了漢明碼的糾錯能力。本文通過對信道糾錯編碼漢明碼的研究,分析伴隨式與錯誤圖樣之間的關(guān)系,結(jié)合FPGA內(nèi)部信號運算速度快的優(yōu)點,采用并行處理的方式實現(xiàn)(25,20)線性分組編解碼,提高了(25,20)線性分組編解碼的自動糾錯和檢錯功能。
1 ?(25,20)線性分組編譯碼器原理
1.1 ?(25,20)線性分組編碼器原理
1.2 ?(25,20)線性分組譯碼器原理
因此,在接收碼元中發(fā)生在不同位置上的單個錯誤,可以得到不同的非零伴隨式,由這些不同的非零伴隨式可求得不同的錯誤圖樣[E],由錯誤圖樣可確定錯誤位置并進行糾正,若發(fā)生兩個錯誤,則伴隨式[ST]也不為0,但是不能糾正。伴隨式完全由[E]決定,充分反映了信道的干擾情況,譯碼器的主要工作就是從[S]中得到錯誤圖樣[E],從而得出[[10]][C=Y-E]。伴隨式[S]與錯誤圖樣的對應(yīng)關(guān)系如表1所示。
2 ?(25,20)線性分組碼仿真及實現(xiàn)
(25,20)線性分組編譯碼器采用硬件描述語言VHDL在Xilinx公司的Vivado 2016.1環(huán)境下編程實現(xiàn),采用的FPGA是Artix?7系列的xc7z030fbg676?1。下面首先詳細說明線性分組編碼器的實現(xiàn)方法,再給出線性分組譯碼框圖,并對譯碼流程進行介紹,結(jié)合ModelSim仿真結(jié)果驗證線性分組編譯碼器是否滿足設(shè)計需求。(25,20)線性分組譯碼器在實現(xiàn)過程中要注意搜索值與搜索位置的對應(yīng)關(guān)系,伴隨式找到對應(yīng)的搜索值后,計算此搜索值的單位向量中“1”的位置即為錯誤碼元位置。
2.1 ?(25,20)線性分組編碼器設(shè)計
由[C=U?G],其中[G=I20A]為生成矩陣,(25,20)線性分組碼的輸入碼組為20個信息碼元,即[1×20]的矩陣與[G]([20×25]的矩陣)做乘法。矩陣與矩陣之間的運算是模二加或模二乘運算,輸入行向量分別與生成矩陣[G]的25個列向量相乘,即找出列向量非零位置所對應(yīng)的輸入行向量的信息碼元,再將這些對應(yīng)的信息碼元進行異或,編碼輸出的前20個為信息碼元,后5個為監(jiān)督碼元[11]。
圖1為線性分組編碼器的仿真波形。圖中各個參數(shù)的含義如下:clk為系統(tǒng)時鐘輸入;reset為系統(tǒng)復(fù)位輸入信號,高電平有效;Training_FEC_in[19:0]為并行輸入的20個信息碼元,由時隙號和發(fā)送數(shù)據(jù)長度這兩個信號組成;Training_FEC_out_r[4:0]為5個監(jiān)督碼元的并行輸出;Training_FEC_out_25為線性分組編碼并行輸出的25個碼元。一個系統(tǒng)時鐘后,并行輸入的20個信息碼元根據(jù)式(8)~式(12)可同時得出5個監(jiān)督碼元Training_FEC_out_r,將輸入的20個信息碼元與計算得出的監(jiān)督碼元拼接得到25個信息碼元輸出[12]。
2.2 ?(25,20)線性分組碼譯碼器設(shè)計
根據(jù)線性分組譯碼原理以及式(10),搜索接收碼組中出現(xiàn)錯誤的信息碼元,并進行糾正。圖2為(25,20)線性分組譯碼框圖,主要由五個模塊組成,分別為求伴隨式、求搜索值、搜索錯誤位置、糾正錯誤碼元、譯碼串行輸出。
譯碼流程如下:
1) 求伴隨式[S]:監(jiān)督矩陣[H=ATI5],根據(jù)式(12)將接收碼組[1×25]的矩陣和[HT]相乘, 將[HT]每列中“1”位置相對應(yīng)的接收碼組中的信息碼元進行模二加運算,一個時鐘后并行輸出[S],即[1×5]的行向量。
2) 求搜索值:單位矩陣[I25]與[HT]相乘,可將單位矩陣[I25]分解為25個行向量與[HT]相乘,每個單位行向量與[HT]相乘結(jié)果為[1×5]的行向量,一個時鐘后同時得出25個[1×5]的行向量,統(tǒng)稱為搜索值。
3) 搜索錯誤位置:將25個搜索值與伴隨式[S]作對比,若伴隨式[S]與25個搜索值中的某一搜索值相同,則可確定計算搜索值對應(yīng)的單位行向量,此單位行向量中“1”的位置即為接收碼組中信息碼元的錯誤位置,此時記錄下錯誤位置index,并將錯誤計數(shù)器累加一次。
4) 糾正錯誤碼元:若伴隨式[S]的結(jié)果為零,則表明接收碼組的信息比特沒有錯誤;若伴隨式[S]的結(jié)果不為零,則根據(jù)找出的錯誤位置index進行糾正,即對錯誤位置的信息碼元取反。
5) 譯碼輸出:糾正完信息碼元后啟動輸出使能,高電平有效,持續(xù)時間為20個時鐘,按計數(shù)器累加值串行將糾正后的前20個信息碼元輸出。
圖3為線性分組碼譯碼仿真波形([S=0]),圖中各主要參數(shù)含義如下:Training_FEC_in[24:0]為接收碼組包含25個信息碼元;syndrome[4:0]為伴隨式;search_0~ search_24為25個搜索值;err_cnt為碼元錯誤指示信號;index為碼元錯誤位置;correctedcode[24:0]為糾正后的信息碼元;msg_deTraining_fec_en為信息碼元輸出使能;msg_deTraining_fec[19:0]為譯碼輸出信息碼元。
由圖3可知,syndrome參數(shù)值為0,表明此接收碼組中的碼元沒有錯誤,譯碼輸出即為接收碼組的前20個碼元,輸出使能啟動以后,按計數(shù)器值串行輸出。
如圖4所示,syndrome參數(shù)值不為0,表明此接收碼組中碼元有錯誤,將伴隨式的值與25個搜索值進行對比,與伴隨式值相同的搜索值為search_13,對應(yīng)的單位向量為“0000000000000100000000000”,此單位向量中“1”對應(yīng)的位置即為錯誤碼元位置index=11,接收碼組為“0010001100001100000010000”,糾正后的接收碼組correctedcode為“0010001100001000000010000”,下一步啟動譯碼輸出使能msg_deTraining_fec_en高電平有效,持續(xù)20個時鐘周期,將糾正后接收碼組的前20個信息碼元串行輸出。
將此(25,20)線性分組編譯碼器加入到某通信實測系統(tǒng)中,在接收終端通過對接收信息比特與發(fā)送信息比特進行統(tǒng)計,結(jié)果表明通信解調(diào)信噪比下降2 dB。
3 ?結(jié) ?語
本文基于Xilinx的Vivado2016.1平臺,設(shè)計實現(xiàn)了(25,20)線性分組編譯碼器。通過ModelSim仿真平臺驗證,并將此編譯碼器應(yīng)用于某實測通信系統(tǒng)中,經(jīng)過反復(fù)多次測試驗證表明,此(25,20)線性分組編譯碼器可實現(xiàn)良好的糾錯性能,也進一步表明了此編譯碼器的有效性,但是其只能糾正一個信息碼元的錯誤,對于接收信息中存在多個錯誤碼元并進行糾正有待進一步研究。
參考文獻
[1] 樊昌信,曹麗娜.通信原理 [M]. 第7版.北京:國防工業(yè)出版社,2017:331?332.
FAN Changxin, CAO Lina. Principles of communications [M]. 7th ed. Beijing: National Defense Industry Press, 2017: 331?332.
[2] 樓才義,徐建良,楊小牛.軟件無線電原理與應(yīng)用 [M]. 第2版.北京:電子工業(yè)出版社,2014:272?273.
LOU Caiyi, XU Jianliang, YANG Xiaoniu. Software?defined radio: principles and practice [M]. 2nd ed. Beijing: Publishing House of Electronics Industry, 2014: 272?273
[3] SKLAR B.數(shù)字通信:基礎(chǔ)與應(yīng)用[M].徐平平,譯.2版.北京:電子工業(yè)出版社,2015:275?276.
SKLAR B. Digital communications fundamentals and applications [M]. XU Pingping, Translation. 2nd ed. Beijing: Electronic Industry Publishing, 2015: 275?276.
[4] MOLISCH A F.無線通信 [M].田斌,帖翊,任光亮,譯.2版.北京:電子工業(yè)出版社,2015.
MOLISCH A F. Wireless communications [M]. TIAN Bin, ZHAN Yi, REN Guangliang, Translation. 2nd ed. Beijing: Electronic Industry Publishing, 2015.
[5] 劉愛蓮.糾錯編碼原理及MATLAB實現(xiàn)[M].北京:清華大學(xué)出版社,2013.
LIU Ailian. Error correction coding principle and Matlab implementation [M]. Beijing: Tsinghua University Press, 2013.
[6] 孫志雄,謝海霞.基于VHDL的漢明碼編解碼實現(xiàn)[J].微型機與應(yīng)用,2014,33(24):72?77.
SUN Zhixiong, XIE Haixia. Implementation of Hamming code encoder and decoder based on VHDL [J]. Microcomputer & its applications, 2014, 33(24): 72?77.
[7] 江寶安.一種新的線性分組碼譯碼算法[J].空間電子技術(shù),2017(2):89?93.
JIANG Baoan. A new decoding algorithm of linear error correc?ting coding [J]. Space electronic technology, 2017(2): 89?93.
[8] 夏志達,李麗華,張龍.基于CCS的(7,4)漢明碼的編譯碼設(shè)計[J].艦船電子工程,2016,36(4):66?67.
XIA Zhida, LI Lihua, ZHANG Long. Design of encoding and decoding of (7,4) Hamming code based on CCS [J]. Ship electronic engineering, 2016, 36(4): 66?67.
[9] 莊燦,石和榮,齊永.一種交織漢明碼編譯碼器設(shè)計及其FPGA實現(xiàn)[J].電子測量技術(shù),2017,40(1):114?117.
ZHUANG Can, SHI Herong, QI Yong. Design of interleaved hamming code′s encoder and decoder and FPGA implementation [J]. Electronic measurement technology, 2017, 40(1): 114?117.
[10] 王新梅,肖國振.糾錯碼:原理和方法[M].西安:西安電子科技大學(xué)出版社,2011.
WANG Xinmei, XIAO Guozhen. Error correction coding: principles and methods [M]. Xian: Xidian University Press, 2011.
[11] 孫麗華,陳榮伶.信息論與編碼[M].4版.北京:電子工業(yè)出版社,2016.
SUN Lihua, CHEN Rongling. Information theory and coding [M]. 4th ed. Beijing: Electronic Industry Publishing, 2016.
[12] 徐文波,田耘.Xilinx FPGA開發(fā)實用教程[M].2版.北京:清華大學(xué)出版社,2012.
XU Wenbo, TIAN Yun. Xilinx FPGA: development and application [M]. 2nd ed. Beijing: Tsinghua University Press, 2012.