廖 雄, 喻 娜, 羅正華, 任小平, 方安成
(成都大學(xué) 信息科學(xué)與工程學(xué)院, 四川 成都 610106)
基于MATLAB/Simulink的LDPC碼研究與設(shè)計
廖 雄, 喻 娜, 羅正華, 任小平, 方安成
(成都大學(xué) 信息科學(xué)與工程學(xué)院, 四川 成都 610106)
低密度奇偶校驗碼是一類性能接近香農(nóng)限的具有稀疏校驗矩陣的線性分組碼,譯碼復(fù)雜度較低, 結(jié)構(gòu)靈活,是現(xiàn)今信道編碼領(lǐng)域的研究熱點(diǎn).通過MATLAB/Simulink對所設(shè)計的低密度奇偶校驗碼在AWGN信道下進(jìn)行了性能仿真,分析了所設(shè)計低密度奇偶校驗碼的編譯碼性能、誤比特率和誤碼率.仿真測試結(jié)果表明,該低密度奇偶校驗碼具有較低的譯碼復(fù)雜度和良好的性能,可滿足基本的數(shù)字通信系統(tǒng)編解碼要求.
LDPC碼;MATLAB/Simulink;AWGN信道;性能仿真
低密度奇偶校驗碼(low density parity check code,LDPC)是一類具有稀疏矩陣的性能接近香農(nóng)限的線性分組碼,其具有較大的靈活性和較低的錯誤平層,而且譯碼復(fù)雜度較低,結(jié)構(gòu)十分靈活,且可實(shí)現(xiàn)完全的并行操作,硬件實(shí)現(xiàn)復(fù)雜度也較低,吞吐量較大,具有高速譯碼潛力,在突發(fā)狀況下,具有良好的糾錯性能,在編碼和譯碼時也不需要相關(guān)性,一個單一的LDPC碼可廣泛用于一系列信道,且對嚴(yán)格的理論分析具有可驗證性[1-3].和Turbo碼相比,LDPC碼在良好的距離性、低復(fù)雜度和高并行譯碼方法上都顯示其更優(yōu)越的性能[4-5].
目前,LDPC碼是信道編碼領(lǐng)域的研究熱點(diǎn)之一,在數(shù)字通信系統(tǒng)信道編解碼領(lǐng)域中,占據(jù)著極其重要的地位,因此對LDPC碼的研究具有非常重要的理論意義和實(shí)際意義[6-7].本研究通過設(shè)計LDPC碼并在MATLAB/Simulink上進(jìn)行仿真實(shí)現(xiàn),進(jìn)而分析所設(shè)計LDPC碼的編譯碼性能、誤比特率和誤碼率.仿真結(jié)果表明,該LDPC碼具有較低的譯碼復(fù)雜度和良好的性能,可滿足基本的數(shù)字通信系統(tǒng)編解碼要求.
一個簡單的數(shù)字通信系統(tǒng)基本組成框圖如圖1所示,主要包括信源、信源編碼、信道編碼、調(diào)制器、發(fā)送設(shè)備、信道(介質(zhì))、接收設(shè)備、解調(diào)器、信道譯碼、信源譯碼和信宿.
圖1數(shù)字通信系統(tǒng)基本組成框圖
數(shù)字通信系統(tǒng)的整個通信過程可概括為:從信源輸出的信號經(jīng)過信源編碼后,得到二進(jìn)制數(shù)字信息序列;在信道編碼中二進(jìn)制信息序列以受控的方式引入一些冗余信息,以便在接收設(shè)備中用來克服信息序列在信道傳輸過程中所接收噪聲和干擾的影響;加入冗余后的信息序列經(jīng)過調(diào)制器映射成傳輸信號的波形,直接輸送到發(fā)送設(shè)備進(jìn)行信號的傳輸;在接收設(shè)備接收到信號后,通過解調(diào)器處理信號波形,將其還原成二進(jìn)制信息序列;所得到的二進(jìn)制信息序列中還夾雜有噪聲、干擾和冗余等,經(jīng)過信道譯碼后能重構(gòu)初始信息序列,初始信息序列經(jīng)過信源譯碼后能夠得到原始的發(fā)送信號,繼而傳送到信宿端,完成整個通信系統(tǒng)的信息傳輸功能[8].
本研究設(shè)計的在AWGN信道上LDPC碼的仿真系統(tǒng)原理框圖如圖2所示.LDPC碼編譯碼仿真系統(tǒng)由信源、LDPC碼編碼器、BPSK調(diào)制器、AWGN信道、BPSK解調(diào)器、LDPC碼譯碼器、
信宿和誤比特率統(tǒng)計模塊組成.信源輸出一個二進(jìn)制信息序列傳送到LDPC碼編碼器,信息經(jīng)過信道編碼后就進(jìn)行BPSK調(diào)制,然后進(jìn)入信道進(jìn)行傳輸,信號在接收端先經(jīng)過BPSK解調(diào),后經(jīng)過LDPC碼譯碼器進(jìn)行譯碼操作,最后輸出信號到接收端.為了檢驗LDPC碼的性能,在信號接收端采用誤比特率統(tǒng)計模塊對譯碼器輸出碼字和發(fā)送的信源碼字進(jìn)行比較,以此得出系統(tǒng)的誤比特率和誤碼率,進(jìn)而分析譯碼性能[9].
圖2 AWGN信道上LDPC碼仿真原理框圖
本研究設(shè)計的LDPC碼編碼器的內(nèi)部結(jié)構(gòu)如圖3所示,其中碼長為256,碼率為0.5,采用準(zhǔn)循環(huán)LDPC碼(QC-LDPC)的結(jié)構(gòu).
圖3 LDPC碼編碼器內(nèi)部結(jié)構(gòu)框圖
編碼器對外接口信號包括輸入信號和輸出信號2部分:輸入信號包括系統(tǒng)工作時鐘clk1與clk2,其中clk2的時鐘頻率是clk1的2倍,系統(tǒng)復(fù)位信號reset,輸入開始指示信號start和輸入信息序列msg.輸出信號包括輸出開始指示信號over、輸出編碼結(jié)果codeout.在start指示有效后的128個時鐘周期內(nèi),msg信號輸入碼長為128的信息序列,完成1幀輸入后可以立即接收后面的幀,輸入和編碼運(yùn)算由clk1驅(qū)動.輸出信號codeout是由信息序列codesys和校驗序列codepar經(jīng)過并串轉(zhuǎn)換以后得到的結(jié)果,在over指示有效后的256個時鐘周期內(nèi)輸出編碼結(jié)果,由時鐘clk2驅(qū)動[3-4].
LDPC碼編碼器主要程序代碼如下(ldpc-encode):
function [u,P,rearranged-cols]=ldpc-encode(s,H)
dim=size(H);
rows=dim(1);
cols=dim(2);
[P,rearranged-cols]=H2P(H);
c=mul-GF2(P,s');
u1=[c' s];
u=reorder-bits(u1,rearranged-cols);
本研究所用的TPMP(two-phase message passing)算法為Gallager提出LDPC碼時給出的軟判決譯碼算法,通過變量節(jié)點(diǎn)和校驗節(jié)點(diǎn)之間來回傳遞消息進(jìn)行譯碼.譯碼過程主要包括校驗節(jié)點(diǎn)更新和變量節(jié)點(diǎn)更新2個步驟.BP譯碼的實(shí)質(zhì)是根據(jù)接收到的實(shí)數(shù)矢量R計算發(fā)送比特序列的后驗概率,并根據(jù)其所參與的校驗約束盡可能準(zhǔn)確地對發(fā)送序列X進(jìn)行譯碼[1-2].最小和算法是BP算法的一個簡化近似.
TPMP譯碼算法的全并行譯碼結(jié)構(gòu)如圖4所示,TPMP譯碼算法的串行譯碼結(jié)構(gòu)如圖5所示.
圖4 TPMP譯碼算法的全并行譯碼結(jié)構(gòu)圖
圖5 TPMP譯碼算法的串行譯碼結(jié)構(gòu)圖
譯碼器的核心單元為SISO譯碼器(也稱單校驗碼處理單元)和Q函數(shù)實(shí)現(xiàn)單元.單校驗碼譯1幀數(shù)據(jù)的總體結(jié)構(gòu)如圖6所示,Q函數(shù)模塊電路結(jié)構(gòu)框圖如圖7所示.
本LDPC碼譯碼器主要程序代碼如下(ldpc-decode):
圖6 1個SISO譯碼器譯1幀數(shù)據(jù)的原理框圖
圖7 Q函數(shù)模塊電路結(jié)構(gòu)框圖
……
for i=1:h1num
newh(h1i(i),h1j(i)).dqmn=newh(h1i(i),h1j(i)).qmn0-newh(h1i(i),h1j(i)).qmn1;
end
for i=1:rows
colind=find(h1i==i);
colnum=length(colind);
for j=1:colnum
drmn=1;
for k=1:colnum
if k~=j
drmn=drmn*newh(i,h1j(colind(k))).dqmn;
end
end
newh(i,h1j(colind(j))).rmn0=(1+drmn)/2;
newh(i,h1j(colind(j))).rmn1=(1-drmn)/2;
end
end
for j=1:cols
rowind=find(h1j==j);
rownum=length(rowind);
for i=1:rownum
prod-rmn0=1;
prod-rmn1=1;
for k=1:rownum
if k~=j
prod-rmn0=prod-rmn0*newh(h1i(rowind(k)),j).rmn0;
prod-rmn1=prod-rmn1*newh(h1i(rowind(k)),j).rmn1;
end
end
const1=pl0(j)*prod-rmn0;
const2=pl1(j)*prod-rmn1;
newh(h1i(rowind(i)),j).alphamn=1/(const1+const2);
newh(h1i(rowind(i)),j).qmn0=newh(h1i(rowind(i)),
j).alphamn*const1;
newh(h1i(rowind(i)),j).qmn1=newh(h1i(rowind(i)),
j).alphamn*const2;
%update pseudo posterior probability
……
本研究設(shè)計的基于MATLAB/Simulink的LDPC碼仿真系統(tǒng)如圖8所示.系統(tǒng)主要由7部分組成:信源模塊、編碼模塊、調(diào)制模塊、信道傳輸模塊、解調(diào)模塊、譯碼模塊及誤比特率統(tǒng)計模塊.
圖8基于MATLAB/Simulink的LDPC碼編譯碼仿真系統(tǒng)框圖
在本LDPC碼編譯碼仿真系統(tǒng)中,Bernoulli Binary Generator(貝努利二進(jìn)制序列生成器)產(chǎn)生一個128-bit數(shù)據(jù)幀作為系統(tǒng)的信源輸入.To Sample模塊的主要作用是把幀格式的輸入數(shù)據(jù)轉(zhuǎn)換成抽樣格式以便下一模塊進(jìn)行操作.誤比特率統(tǒng)計模塊產(chǎn)生的數(shù)據(jù)是一個三維向量(誤碼率、誤碼個數(shù)和信號總數(shù)),以便進(jìn)行最后的誤碼率和誤比特率的計算,獲取相關(guān)數(shù)據(jù).
LDPC碼仿真系統(tǒng)中各個模塊的主要參數(shù)設(shè)置如下:
1)信源模塊.貝努利二進(jìn)制序列產(chǎn)生器生成系列隨機(jī)的二進(jìn)制數(shù),生成二進(jìn)制數(shù)1和0的概率均為0.5,隨機(jī)設(shè)定初始數(shù)值為61,設(shè)置數(shù)據(jù)采樣周期為1/128 s,輸出為double雙精度類型的數(shù)據(jù).
2)調(diào)制模塊.采用二進(jìn)制相移鍵控BPSK調(diào)制輸入信號,此時設(shè)置相應(yīng)偏移角為0,同時輸出數(shù)據(jù)類型設(shè)置為double雙精度型.
BPSK模塊主要程序代碼如下:
function [waveform]=bpsk(bitseq,amplitude)
for i=i:length(gitseq)
if bitseq(i)==1
waveform(i)=amplitude;
else
waveform(i)=-amplitude;
end
End
3)信道模塊.采用AWGN信道傳輸經(jīng)過BPSK調(diào)制后的信號,加性高斯白噪聲AWGN是最基本的噪聲與干擾模型,此時信號唯一的減損來自寬帶的線性加成與高斯分布振幅的白噪聲.在使用復(fù)雜輸入的任一方差模式時,方差值在輸入信號的實(shí)部和虛部之間平均分配,對輸入信號選擇列作為通道(幀)處理,隨機(jī)設(shè)定初始數(shù)值為61,設(shè)定方差值為1.3.
4)解調(diào)模塊.采用二進(jìn)制相移鍵控DBPSK解調(diào)輸出信號,設(shè)置相位移角度為0.輸出數(shù)據(jù)類型遵循系統(tǒng)的設(shè)定規(guī)則,以便解調(diào)信號能夠迅速進(jìn)入譯碼進(jìn)程.
5)誤比特率計算模塊.系統(tǒng)仿真的衡量主要通過誤比特率、誤碼率和信噪比來表現(xiàn).考慮到實(shí)際的仿真環(huán)境設(shè)置模塊中的延時均為1,數(shù)據(jù)的計算選擇系統(tǒng)框架模式,輸出數(shù)據(jù)選用端口模式,目標(biāo)錯誤指數(shù)設(shè)定值為100,可輸出的最大符號數(shù)為106.
本研究基于MATLAB/Simulink的(256,128)LDPC 碼的糾錯性能仿真結(jié)果如圖9所示.
圖9 LDPC碼誤碼率仿真曲線
由圖9可知,(256,128)LDPC碼的譯碼性能在信噪比界于2 dB間時,誤碼率值接近0.6且變化非常緩慢;信噪比大于2 dB后,其誤碼率隨著信噪比的增大呈現(xiàn)出下降趨勢;信噪比大于3 dB后,誤碼率小于0.1并一直呈現(xiàn)出下降趨勢;信噪比介于4~6 dB間時,誤碼率值在0.02附近出現(xiàn)小幅波動;信噪比大于6 dB后,誤碼率值接近并小于0.01,此時LDPC碼的譯碼性能可滿足數(shù)字通信系統(tǒng)編解碼的需求.
LDPC碼雖然在眾多領(lǐng)域得到了廣泛的應(yīng)用,但目前LDPC碼的構(gòu)造和編譯碼算法方面研究仍有一定的不足,應(yīng)用不同的構(gòu)造方法、編譯碼算法都會使所得到的LDPC碼在性能上具有較大的差異,同時現(xiàn)有LDPC碼的構(gòu)造方法也較為復(fù)雜且譯碼算法未能達(dá)到最大優(yōu)化,沒有充分應(yīng)用LDPC碼極具優(yōu)勢的性能特點(diǎn).因此,對LDPC碼的深入研究具有非常重要的理論意義和現(xiàn)實(shí)意義,能夠進(jìn)一步推動LDPC碼在數(shù)字通信領(lǐng)域的應(yīng)用,充分合理地設(shè)計LDPC碼奇偶校驗矩陣和生成矩陣,能夠減小編譯碼算法的復(fù)雜度,盡可能地提高LDPC碼的性能,將其充分應(yīng)用在現(xiàn)有數(shù)字通信系統(tǒng)編解碼領(lǐng)域,進(jìn)而推動數(shù)字通信技術(shù)的發(fā)展.
[1]崔俊云.LDPC碼的構(gòu)造及其譯碼算法研究[D].西安:西安電子科技大學(xué),2012.
[2]胡樹楷.LDPC碼構(gòu)造及低復(fù)雜度譯碼算法研究[D].西安:西安電子科技大學(xué),2012.
[3]王麗麗.星間通信信道編碼算法研究[D].哈爾濱:哈爾濱工業(yè)大學(xué),2009.
[4]王鵬.LDPC碼的編碼原理及編碼設(shè)計[D].西安:西安電子科技大學(xué),2003.
[5]肖揚(yáng).Turbo與LDPC編解碼及其應(yīng)用[M].北京:人民郵電出版社,2010.
[6]陳友淦,許肖梅.LDPC碼在淺海水聲通信中的應(yīng)用研究[J].通信技術(shù),2009,42(4):41-42,45.
[7]袁東風(fēng),張海剛.LDPC理論與應(yīng)用[M].北京:人民郵電出版社,2008.
[8]Moon T K.Eerrorcorrectioncoding:mathematicalmehtodsandalgorithms[M].New Jersey,USA:JOHN WILEY & SONS,INC.,2005.
[9]Richardson T J,Shokrollahi M A,Urbanke R L.DesignofCapacity-approachingirregularLow-densityParity-checkcode[J].IEEE trans Inf Theory,2001,47(2):619-637.
Abstract:LDPC code is a linear block code with sparse parity check matrix,whose performance is close to the Shannon limit.With low coding complexity and flexible structure,it is a hotspot in the field of channel coding.Performance simulation of the designed LDPC code in AWGN channel by MATLAB/Simulink is done.This paper analyzes the encoding and decoding performance,bit error rate and code error rate of the designed LDPC code.The simulation results show that LDPC code has low decoding complexity and good performance,which can meet basic requirements of encoding and decoding in the digital communication systems.
Keywords:LDPC code;MATLAB/Simulink;AWGN channel;performance simulation
ResearchandDesignofLDPCCodeBasedonMATLAB/Simulink
LIAOXiong,YUNa,LUOZhenghua,RENXiaoping,FANGAncheng
(School of Information Science and Engineering, Chengdu University, Chengdu 610106, China)
TN911.22;TN919.81
A
1004-5422(2017)03-0272-04
2017-07-26.
四川省科技廳創(chuàng)新苗子工程(2016022)資助項目.
廖 雄(1993 — ), 男, 碩士研究生, 從事計算機(jī)通信與信息系統(tǒng)研究.