陳遠(yuǎn)友
(中國(guó)電子科技集團(tuán)公司第五十四研究所,河北石家莊050081)
LDPC碼是Gallager在1962年提出的利用稀疏校驗(yàn)矩陣的信道編碼方案[1],是一種可以接近Shannon限的“非常好”的分組碼[2],為了追求優(yōu)異的性能,采用隨機(jī)化方法構(gòu)造的校驗(yàn)矩陣[1-3]使得編碼器的設(shè)計(jì)十分困難,譯碼器的存儲(chǔ)復(fù)雜度也高,實(shí)現(xiàn)困難。為了構(gòu)造易于實(shí)現(xiàn)、性能優(yōu)良的編碼方法,人們提出了很多改進(jìn)方法[4-11],針對(duì)具體應(yīng)用的文獻(xiàn)也很多[12-15]。
一般來(lái)說(shuō),碼字長(zhǎng)度越長(zhǎng),LDPC的編碼性能越好,因此,通常設(shè)計(jì)的LDPC的碼字都較長(zhǎng),達(dá)到數(shù)千位。但在某些應(yīng)用場(chǎng)合,如在短猝發(fā)隱蔽通信中,由于通信時(shí)間非常短,數(shù)據(jù)量較少,不可能采用碼字較長(zhǎng)的編碼方案,必須設(shè)計(jì)針對(duì)這種特殊應(yīng)用場(chǎng)合的短碼。
準(zhǔn)循環(huán)LDPC(quasi-cyclic LDPC)碼是一種可以使用簡(jiǎn)單移位寄存器實(shí)現(xiàn)的結(jié)構(gòu)化LDPC碼,精心設(shè)計(jì)的準(zhǔn)循環(huán)LDPC碼在比特差錯(cuò)率、塊差錯(cuò)率以及差錯(cuò)平底等方面可以達(dá)到計(jì)算機(jī)隨機(jī)構(gòu)造碼的性能。
在給定長(zhǎng)度和度分布對(duì)的情況下,通過(guò)隨機(jī)連接二分圖的變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn),就可以得到一個(gè)隨機(jī)LDPC碼集。由于LDPC碼主要采用置信度傳播(BP)迭代譯碼算法,在無(wú)短環(huán)情況下才能獲得最佳性能。就長(zhǎng)碼而言,碼集平均性能隨碼長(zhǎng)增加,碼集中的單個(gè)碼性能趨近于平均性能。而對(duì)于短碼,因?yàn)榇a長(zhǎng)有限,二分圖中的短環(huán)明顯增多,特別容易出現(xiàn)四環(huán),導(dǎo)致有限次迭代之后軟信息出現(xiàn)相關(guān),算法無(wú)法收斂或收斂速度減慢,造成性能下降。為此需要通過(guò)調(diào)整校驗(yàn)矩陣中環(huán)的分布情況,避免出現(xiàn)四和六環(huán),增大短環(huán)的圍長(zhǎng)[9],從而構(gòu)造性能較好的LDPC碼字。
PEG(Progressive Edge-Growth)[4]是隨機(jī)構(gòu)造LDPC碼的一種相對(duì)簡(jiǎn)單但有效的算法,它按某種規(guī)則逐步向Tanner圖添加連接變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)的邊,選擇合適的規(guī)則使Tanner圖中的環(huán)最大。仿真顯示使用PEG算法構(gòu)造的短碼長(zhǎng)LDPC碼比隨機(jī)構(gòu)造的碼字有很大的性能提升[5]。
PEG算法通過(guò)展開(kāi)Tanner圖,按照逐節(jié)點(diǎn)的方式在校驗(yàn)節(jié)點(diǎn)和變量節(jié)點(diǎn)之間建立邊的連接,在增加新邊時(shí)盡可能減少對(duì)已有Tanner圖圍長(zhǎng)的影響,充分考慮使Tanner圖的圍長(zhǎng)達(dá)到最大以避免短環(huán)的存在,最終獲得性能較好的LDPC碼。
對(duì)給定的雙向圖參數(shù),包括變量節(jié)點(diǎn)數(shù)N、校驗(yàn)節(jié)點(diǎn)數(shù)M、變量節(jié)點(diǎn)度序列Dv,常規(guī)PEG算法如下[4]:
令第i個(gè)變量節(jié)點(diǎn)為vi,第j個(gè)校驗(yàn)節(jié)點(diǎn)為cj;
對(duì)于第i個(gè)變量節(jié)點(diǎn):i=0到 N-1;
增加第i個(gè)變量節(jié)點(diǎn)的第k條邊:k=0到dvi-1;
其中,dvi表示第i個(gè)變量節(jié)點(diǎn)vi的度數(shù)。
如果 k=0,則邊(vi,cj)→,其中是變量節(jié)點(diǎn)vi的第一條入射邊,cj是在當(dāng)前圖集合Ev0∪Ev1∪…∪Evi-1中具有最低度數(shù)的校驗(yàn)節(jié)點(diǎn)之一。
否則,在當(dāng)前圖集合的基礎(chǔ)上,將變量節(jié)點(diǎn)vi展開(kāi)成深度為l的子圖,直到集合的元素?cái)?shù)目達(dá)到 M,或
然后,(vi,cj)→,其中是變量節(jié)點(diǎn)vi第k條入射的邊,cj是集合中具有最低度數(shù)的校驗(yàn)節(jié)點(diǎn)。
第3步:對(duì)任意的若滿足RSθ,η(Reduct{a},D)?RSθ,η(A,D),則轉(zhuǎn)下一步;若中不存在a使得RSθ,η(Reduct{a},D)?RSθ,η(A,D),則算法結(jié)束,返回Reduct;
常規(guī)PEG算法需要對(duì)每一個(gè)變量節(jié)點(diǎn)都展開(kāi)成樹(shù)圖結(jié)構(gòu),以逐點(diǎn)的次序添加邊,這樣不但耗費(fèi)時(shí)間和內(nèi)存資源,而且構(gòu)造的矩陣也沒(méi)有規(guī)律,給編譯碼的硬件實(shí)現(xiàn)帶來(lái)困難。改進(jìn)的QC-PEG-LDPC算法構(gòu)造的準(zhǔn)循環(huán)校驗(yàn)矩陣是由多個(gè)循環(huán)子矩陣構(gòu)成,在構(gòu)造時(shí)首先把變量節(jié)點(diǎn)和校驗(yàn)節(jié)點(diǎn)分成多個(gè)小組,然后對(duì)于每組變量節(jié)點(diǎn),只需對(duì)其中第一個(gè)變量節(jié)點(diǎn)尋找最優(yōu)邊,最后根據(jù)循環(huán)矩陣的約束關(guān)系,同組其他節(jié)點(diǎn)相連的邊也隨之確定。
下面以構(gòu)造一個(gè)碼長(zhǎng)為700,碼率為3/7的準(zhǔn)循環(huán)LDPC碼字為例說(shuō)明改進(jìn)的PEG算法。
該準(zhǔn)循環(huán)矩陣用HM×N表示,每個(gè)子矩陣用Ark表示,該校驗(yàn)矩陣的子矩陣維數(shù)為100×100,有28個(gè)循環(huán)子矩陣,M=b×c=100×4,N=b×t=100×7,0≤r<c,0≤k<t。矩陣的行重和列重分別為dc=5和dv=3,即校驗(yàn)節(jié)點(diǎn)的度為5,變量節(jié)點(diǎn)的度為3。
文獻(xiàn)[9]專門(mén)研究了設(shè)計(jì)準(zhǔn)循環(huán)LDPC碼時(shí)如何避免短環(huán)問(wèn)題與校驗(yàn)矩陣的行相關(guān)問(wèn)題,提出了避免短環(huán)的準(zhǔn)循環(huán)LDPC碼的設(shè)計(jì)約束條件。
已證明構(gòu)造的校驗(yàn)矩陣H所對(duì)應(yīng)的LDPC碼不包含長(zhǎng)度為4的環(huán)的必要條件為[6]:
因此為了避免4環(huán)的出現(xiàn),需要遍歷準(zhǔn)循環(huán)矩陣HM×N中的元素,對(duì)不滿足條件的元素進(jìn)行修正處理,使修正后的擴(kuò)展矩陣中所有元素的值都小于LDPC碼的擴(kuò)展因子z。
為了定量分析所設(shè)計(jì)的短碼性能,以 LDPC(700,300)為例對(duì)其進(jìn)行了性能仿真,并在通用調(diào)制解調(diào)器硬件平臺(tái)上進(jìn)行了性能測(cè)試。
仿真條件:
譯碼方式:修正最小和譯碼算法;迭代次數(shù):50次;
信道條件:高斯白噪聲,編碼環(huán)。
如圖1所示,仿真結(jié)果顯示,基于QC-PEG-LDPC算法構(gòu)造的準(zhǔn)循環(huán)LDPC碼性能優(yōu)良,在歸一化最小和譯碼算法下,Eb/N0值為 2.9 dB,BER≤10-5。且因?yàn)槠渚哂袦?zhǔn)循環(huán)結(jié)構(gòu),譯碼器結(jié)構(gòu)簡(jiǎn)單,便于硬件實(shí)現(xiàn)。
圖1 LDPC(700,300)編碼環(huán)仿真誤碼曲線
測(cè)試條件:
信息幀長(zhǎng):300 bit;
LDPC(700,300):碼率 3/7;
猝發(fā)調(diào)制方式:BPSK+擴(kuò)頻;
譯碼方式:修正最小和譯碼算法;
迭代次數(shù):50次;
信道條件:高斯白噪聲,中頻環(huán)。
硬件資源需求情況如下:
邏輯單元:10 280;
寄存器:16 224;
存儲(chǔ)器:1 693 234;
乘法器:71。
占用資源較少,具有很好的可實(shí)現(xiàn)性。
測(cè)試結(jié)果如圖2所示,由此可見(jiàn),Eb/N0值為4.3 dB,BER≤10-5。
圖2 LDPC(700,300)中頻環(huán)測(cè)試誤碼曲線
針對(duì)短猝發(fā)隱蔽通信的通信時(shí)間非常短、數(shù)據(jù)量較少但對(duì)數(shù)據(jù)傳輸可靠性要求又很高的需求,提出了采用改進(jìn)的PEG方法構(gòu)建準(zhǔn)循環(huán)LDPC短碼的方法,計(jì)算機(jī)仿真和電路性能測(cè)試表明,構(gòu)造的短碼具有優(yōu)良的性能,并且其電路實(shí)現(xiàn)復(fù)雜度較低,占用硬件資源較少,譯碼延時(shí)較小,便于工程實(shí)現(xiàn)。
[1]GALLAGER R G.Low Density Parity Check Codes[J].IRETrans.Inf.Theory,1962,8(1):21 - 28.
[2]MACKAY D J C.Good Error-correcting Codes Based on Very Sparse Matrices[J].IEEE Trans.Inf.Theory,1999,45(2):399 -431.
[3]PRABHAKAR A,NARAYANAN K.Pseudorandom Construction of Low-density Parity-check Codes Using Linear Congruential sequences[J].IEEE Trans.on Commun.,2002,50(9):1389 -1396.
[4]HU X Y,ELEFTHERIOU E,ARNOLD D M.Progressive Edge Growth Tanner Graphs[C]∥San Antonio,TX:GLOBECOM.01.IEEE,2001:995 -1001.
[5]HU X Y,ELEFTHERIOU E,ARNOLD D M.Regular and Irregular Progressive Edge-growth Tanner Graphs[J].IEEE Trans.Inf.Theory,2005,51(1):386 -398.
[6]傅婷婷,吳湛擊,王文博.基于PEG算法的準(zhǔn)循環(huán)LDPC碼的編碼構(gòu)造方法[J].數(shù)據(jù)采集與處理,2009(B10):182 -186.
[7]敬龍江.低密度校驗(yàn)碼的構(gòu)造和設(shè)計(jì)研究[D].成都:電子科技大學(xué),2007:25 -85.
[8]焦治克.刪除信道下的LDPC碼與PEG算法研究[D].西安:西安電子科技大學(xué),2008:37 -59.
[9]肖揚(yáng),徐丹.準(zhǔn)循環(huán)LDPC好碼設(shè)計(jì)[J].系統(tǒng)工程與電子技術(shù),2009,31(5):1011 -1017.
[10]范俊,肖揚(yáng).可快速編碼的準(zhǔn)循環(huán)LDPC碼設(shè)計(jì)[J].應(yīng)用科學(xué)學(xué)報(bào),2010,28(1):1 -8.
[11]王啟瑋,戰(zhàn)興群,嚴(yán)凱.LDPC碼的編譯碼設(shè)計(jì)與研究[J].計(jì)算機(jī)測(cè)量與控制,2013,21(3):728 -731.
[12]李志勇,李文鐸.一種高速LDPC編譯碼器的設(shè)計(jì)與實(shí)現(xiàn)[J].無(wú)線電工程,2009,39(7):17 -19.
[13]劉波,李旭東.LDPC碼在深空探測(cè)中的應(yīng)用[J].無(wú)線電工程,2009,39(10):13 -15.
[14]魏瑞剛,陳暉,邱金蕙,等.高速數(shù)據(jù)傳輸中的LDPC碼譯碼算法研究[J].無(wú)線電工程,2011,41(3):20 -22.
[15]趙建功,劉香玲.準(zhǔn)循環(huán)LDPC碼的部分并行譯碼算法[J].無(wú)線電工程,2012,42(2):55 -57.