李淑婧 王蕾 任寶祥 李哲 尚耀波
摘 ?要: 隨著通信速率的提高,有噪信道的可靠通信通過(guò)信道編碼來(lái)實(shí)現(xiàn)。文中設(shè)計(jì)的(25,20)線性分組編譯碼器結(jié)合漢明碼能糾正一位錯(cuò)誤且具有編碼效率較高、譯碼電路簡(jiǎn)單、譯碼延時(shí)小等優(yōu)點(diǎn)。分析伴隨式與錯(cuò)誤圖樣的對(duì)應(yīng)關(guān)系,采用并行處理的方式,使用硬件描述語(yǔ)言VHDL在Xilinx公司的Vivado 2016.1環(huán)境下編程實(shí)現(xiàn)。通過(guò)ModelSim仿真平臺(tái)驗(yàn)證,降低了實(shí)現(xiàn)的復(fù)雜度。在工程實(shí)踐中將編譯碼器加入某實(shí)測(cè)通信系統(tǒng),實(shí)現(xiàn)了在Artix?7系列xc7z030fbg676?1的芯片上占用較少的硬件資源實(shí)現(xiàn)(25,20)線性分組編譯碼,提高系統(tǒng)傳輸?shù)目煽啃裕?yàn)證了該設(shè)計(jì)的優(yōu)良性能。
關(guān)鍵詞: 信道編碼; (25,20)線性分組碼; 漢明碼; 伴隨式; 錯(cuò)誤圖樣; 并行處理
中圖分類號(hào): TN911.22?34 ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼: A ? ? ? ? ? ? ? ? ? ? ?文章編號(hào): 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 ?引 ?言
無(wú)線傳輸信道中由于噪聲、時(shí)延、多徑衰落等各種因素的影響,造成傳輸信號(hào)到達(dá)接收端失真,接收序列存在誤碼的情況不可避免。信道編碼是以提高傳輸可靠性為主要目的,通過(guò)增加冗余碼元來(lái)提高不同碼字間的差異程度,從而獲得編碼增益[1?2]。對(duì)于分組碼的情況,信源數(shù)據(jù)被分割成大小為[k]個(gè)數(shù)據(jù)比特的分組,編碼器將每[k]比特的數(shù)據(jù)分組轉(zhuǎn)換成一個(gè)更大的包含[n]比特的數(shù)據(jù)分組,每個(gè)分組附加的[n-k]比特稱為冗余比特[3?4]。
線性分組碼是把信息序列以[k]個(gè)碼元?jiǎng)澐譃橐欢危ㄟ^(guò)一定的線性運(yùn)算得出[r]個(gè)監(jiān)督碼元,輸出碼長(zhǎng)為[n=k+r]的一個(gè)碼組[5]。(7,4)漢明碼屬于線性分組編碼,用于糾正單個(gè)錯(cuò)誤,在工程上較易實(shí)現(xiàn),因此在軟件無(wú)線電中得到廣泛應(yīng)用[6]。對(duì)線性分組進(jìn)行譯碼時(shí),由接收信息碼元計(jì)算監(jiān)督碼元,伴隨式由計(jì)算的監(jiān)督碼元和接收的監(jiān)督碼元相加共同確定,譯碼只檢測(cè)信息碼元的錯(cuò)誤,此方法極大地降低了計(jì)算量,而且同樣適用于其他信道編碼[7]。文獻(xiàn)[8]運(yùn)用C++Builder和CCS實(shí)現(xiàn)了(7,4)漢明碼編譯碼系統(tǒng),但由于CCS內(nèi)部信號(hào)采取串行處理的方式,導(dǎo)致譯碼延時(shí)增大。文獻(xiàn)[9]將漢明碼與交織相結(jié)合,設(shè)計(jì)了一種交織漢明碼,提高了漢明碼的糾錯(cuò)能力。本文通過(guò)對(duì)信道糾錯(cuò)編碼漢明碼的研究,分析伴隨式與錯(cuò)誤圖樣之間的關(guān)系,結(jié)合FPGA內(nèi)部信號(hào)運(yùn)算速度快的優(yōu)點(diǎn),采用并行處理的方式實(shí)現(xiàn)(25,20)線性分組編解碼,提高了(25,20)線性分組編解碼的自動(dòng)糾錯(cuò)和檢錯(cuò)功能。
1 ?(25,20)線性分組編譯碼器原理
1.1 ?(25,20)線性分組編碼器原理
1.2 ?(25,20)線性分組譯碼器原理
因此,在接收碼元中發(fā)生在不同位置上的單個(gè)錯(cuò)誤,可以得到不同的非零伴隨式,由這些不同的非零伴隨式可求得不同的錯(cuò)誤圖樣[E],由錯(cuò)誤圖樣可確定錯(cuò)誤位置并進(jìn)行糾正,若發(fā)生兩個(gè)錯(cuò)誤,則伴隨式[ST]也不為0,但是不能糾正。伴隨式完全由[E]決定,充分反映了信道的干擾情況,譯碼器的主要工作就是從[S]中得到錯(cuò)誤圖樣[E],從而得出[[10]][C=Y-E]。伴隨式[S]與錯(cuò)誤圖樣的對(duì)應(yīng)關(guān)系如表1所示。
2 ?(25,20)線性分組碼仿真及實(shí)現(xiàn)
(25,20)線性分組編譯碼器采用硬件描述語(yǔ)言VHDL在Xilinx公司的Vivado 2016.1環(huán)境下編程實(shí)現(xiàn),采用的FPGA是Artix?7系列的xc7z030fbg676?1。下面首先詳細(xì)說(shuō)明線性分組編碼器的實(shí)現(xiàn)方法,再給出線性分組譯碼框圖,并對(duì)譯碼流程進(jìn)行介紹,結(jié)合ModelSim仿真結(jié)果驗(yàn)證線性分組編譯碼器是否滿足設(shè)計(jì)需求。(25,20)線性分組譯碼器在實(shí)現(xiàn)過(guò)程中要注意搜索值與搜索位置的對(duì)應(yīng)關(guān)系,伴隨式找到對(duì)應(yīng)的搜索值后,計(jì)算此搜索值的單位向量中“1”的位置即為錯(cuò)誤碼元位置。
2.1 ?(25,20)線性分組編碼器設(shè)計(jì)
由[C=U?G],其中[G=I20A]為生成矩陣,(25,20)線性分組碼的輸入碼組為20個(gè)信息碼元,即[1×20]的矩陣與[G]([20×25]的矩陣)做乘法。矩陣與矩陣之間的運(yùn)算是模二加或模二乘運(yùn)算,輸入行向量分別與生成矩陣[G]的25個(gè)列向量相乘,即找出列向量非零位置所對(duì)應(yīng)的輸入行向量的信息碼元,再將這些對(duì)應(yīng)的信息碼元進(jìn)行異或,編碼輸出的前20個(gè)為信息碼元,后5個(gè)為監(jiān)督碼元[11]。
圖1為線性分組編碼器的仿真波形。圖中各個(gè)參數(shù)的含義如下:clk為系統(tǒng)時(shí)鐘輸入;reset為系統(tǒng)復(fù)位輸入信號(hào),高電平有效;Training_FEC_in[19:0]為并行輸入的20個(gè)信息碼元,由時(shí)隙號(hào)和發(fā)送數(shù)據(jù)長(zhǎng)度這兩個(gè)信號(hào)組成;Training_FEC_out_r[4:0]為5個(gè)監(jiān)督碼元的并行輸出;Training_FEC_out_25為線性分組編碼并行輸出的25個(gè)碼元。一個(gè)系統(tǒng)時(shí)鐘后,并行輸入的20個(gè)信息碼元根據(jù)式(8)~式(12)可同時(shí)得出5個(gè)監(jiān)督碼元Training_FEC_out_r,將輸入的20個(gè)信息碼元與計(jì)算得出的監(jiān)督碼元拼接得到25個(gè)信息碼元輸出[12]。
2.2 ?(25,20)線性分組碼譯碼器設(shè)計(jì)
根據(jù)線性分組譯碼原理以及式(10),搜索接收碼組中出現(xiàn)錯(cuò)誤的信息碼元,并進(jìn)行糾正。圖2為(25,20)線性分組譯碼框圖,主要由五個(gè)模塊組成,分別為求伴隨式、求搜索值、搜索錯(cuò)誤位置、糾正錯(cuò)誤碼元、譯碼串行輸出。
譯碼流程如下:
1) 求伴隨式[S]:監(jiān)督矩陣[H=ATI5],根據(jù)式(12)將接收碼組[1×25]的矩陣和[HT]相乘, 將[HT]每列中“1”位置相對(duì)應(yīng)的接收碼組中的信息碼元進(jìn)行模二加運(yùn)算,一個(gè)時(shí)鐘后并行輸出[S],即[1×5]的行向量。
2) 求搜索值:?jiǎn)挝痪仃嘯I25]與[HT]相乘,可將單位矩陣[I25]分解為25個(gè)行向量與[HT]相乘,每個(gè)單位行向量與[HT]相乘結(jié)果為[1×5]的行向量,一個(gè)時(shí)鐘后同時(shí)得出25個(gè)[1×5]的行向量,統(tǒng)稱為搜索值。
3) 搜索錯(cuò)誤位置:將25個(gè)搜索值與伴隨式[S]作對(duì)比,若伴隨式[S]與25個(gè)搜索值中的某一搜索值相同,則可確定計(jì)算搜索值對(duì)應(yīng)的單位行向量,此單位行向量中“1”的位置即為接收碼組中信息碼元的錯(cuò)誤位置,此時(shí)記錄下錯(cuò)誤位置index,并將錯(cuò)誤計(jì)數(shù)器累加一次。
4) 糾正錯(cuò)誤碼元:若伴隨式[S]的結(jié)果為零,則表明接收碼組的信息比特沒(méi)有錯(cuò)誤;若伴隨式[S]的結(jié)果不為零,則根據(jù)找出的錯(cuò)誤位置index進(jìn)行糾正,即對(duì)錯(cuò)誤位置的信息碼元取反。
5) 譯碼輸出:糾正完信息碼元后啟動(dòng)輸出使能,高電平有效,持續(xù)時(shí)間為20個(gè)時(shí)鐘,按計(jì)數(shù)器累加值串行將糾正后的前20個(gè)信息碼元輸出。
圖3為線性分組碼譯碼仿真波形([S=0]),圖中各主要參數(shù)含義如下:Training_FEC_in[24:0]為接收碼組包含25個(gè)信息碼元;syndrome[4:0]為伴隨式;search_0~ search_24為25個(gè)搜索值;err_cnt為碼元錯(cuò)誤指示信號(hào);index為碼元錯(cuò)誤位置;correctedcode[24:0]為糾正后的信息碼元;msg_deTraining_fec_en為信息碼元輸出使能;msg_deTraining_fec[19:0]為譯碼輸出信息碼元。
由圖3可知,syndrome參數(shù)值為0,表明此接收碼組中的碼元沒(méi)有錯(cuò)誤,譯碼輸出即為接收碼組的前20個(gè)碼元,輸出使能啟動(dòng)以后,按計(jì)數(shù)器值串行輸出。
如圖4所示,syndrome參數(shù)值不為0,表明此接收碼組中碼元有錯(cuò)誤,將伴隨式的值與25個(gè)搜索值進(jìn)行對(duì)比,與伴隨式值相同的搜索值為search_13,對(duì)應(yīng)的單位向量為“0000000000000100000000000”,此單位向量中“1”對(duì)應(yīng)的位置即為錯(cuò)誤碼元位置index=11,接收碼組為“0010001100001100000010000”,糾正后的接收碼組correctedcode為“0010001100001000000010000”,下一步啟動(dòng)譯碼輸出使能msg_deTraining_fec_en高電平有效,持續(xù)20個(gè)時(shí)鐘周期,將糾正后接收碼組的前20個(gè)信息碼元串行輸出。
將此(25,20)線性分組編譯碼器加入到某通信實(shí)測(cè)系統(tǒng)中,在接收終端通過(guò)對(duì)接收信息比特與發(fā)送信息比特進(jìn)行統(tǒng)計(jì),結(jié)果表明通信解調(diào)信噪比下降2 dB。
3 ?結(jié) ?語(yǔ)
本文基于Xilinx的Vivado2016.1平臺(tái),設(shè)計(jì)實(shí)現(xiàn)了(25,20)線性分組編譯碼器。通過(guò)ModelSim仿真平臺(tái)驗(yàn)證,并將此編譯碼器應(yīng)用于某實(shí)測(cè)通信系統(tǒng)中,經(jīng)過(guò)反復(fù)多次測(cè)試驗(yàn)證表明,此(25,20)線性分組編譯碼器可實(shí)現(xiàn)良好的糾錯(cuò)性能,也進(jìn)一步表明了此編譯碼器的有效性,但是其只能糾正一個(gè)信息碼元的錯(cuò)誤,對(duì)于接收信息中存在多個(gè)錯(cuò)誤碼元并進(jìn)行糾正有待進(jìn)一步研究。
參考文獻(xiàn)
[1] 樊昌信,曹麗娜.通信原理 [M]. 第7版.北京:國(guó)防工業(yè)出版社,2017:331?332.
FAN Changxin, CAO Lina. Principles of communications [M]. 7th ed. Beijing: National Defense Industry Press, 2017: 331?332.
[2] 樓才義,徐建良,楊小牛.軟件無(wú)線電原理與應(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.無(wú)線通信 [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] 劉愛(ài)蓮.糾錯(cuò)編碼原理及MATLAB實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2013.
LIU Ailian. Error correction coding principle and Matlab implementation [M]. Beijing: Tsinghua University Press, 2013.
[6] 孫志雄,謝海霞.基于VHDL的漢明碼編解碼實(shí)現(xiàn)[J].微型機(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] 夏志達(dá),李麗華,張龍.基于CCS的(7,4)漢明碼的編譯碼設(shè)計(jì)[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è)計(jì)及其FPGA實(shí)現(xiàn)[J].電子測(cè)量技術(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] 王新梅,肖國(guó)振.糾錯(cuò)碼:原理和方法[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ā)實(shí)用教程[M].2版.北京:清華大學(xué)出版社,2012.
XU Wenbo, TIAN Yun. Xilinx FPGA: development and application [M]. 2nd ed. Beijing: Tsinghua University Press, 2012.