APP下载

基于MATLAB/Simulink的LDPC码研究与设计

2017-10-12罗正华任小平方安成

关键词:比特率信源译码

廖 雄, 喻 娜, 罗正华, 任小平, 方安成

(成都大学 信息科学与工程学院, 四川 成都 610106)

基于MATLAB/Simulink的LDPC码研究与设计

廖 雄, 喻 娜, 罗正华, 任小平, 方安成

(成都大学 信息科学与工程学院, 四川 成都 610106)

低密度奇偶校验码是一类性能接近香农限的具有稀疏校验矩阵的线性分组码,译码复杂度较低, 结构灵活,是现今信道编码领域的研究热点.通过MATLAB/Simulink对所设计的低密度奇偶校验码在AWGN信道下进行了性能仿真,分析了所设计低密度奇偶校验码的编译码性能、误比特率和误码率.仿真测试结果表明,该低密度奇偶校验码具有较低的译码复杂度和良好的性能,可满足基本的数字通信系统编解码要求.

LDPC码;MATLAB/Simulink;AWGN信道;性能仿真

0 引 言

低密度奇偶校验码(low density parity check code,LDPC)是一类具有稀疏矩阵的性能接近香农限的线性分组码,其具有较大的灵活性和较低的错误平层,而且译码复杂度较低,结构十分灵活,且可实现完全的并行操作,硬件实现复杂度也较低,吞吐量较大,具有高速译码潜力,在突发状况下,具有良好的纠错性能,在编码和译码时也不需要相关性,一个单一的LDPC码可广泛用于一系列信道,且对严格的理论分析具有可验证性[1-3].和Turbo码相比,LDPC码在良好的距离性、低复杂度和高并行译码方法上都显示其更优越的性能[4-5].

目前,LDPC码是信道编码领域的研究热点之一,在数字通信系统信道编解码领域中,占据着极其重要的地位,因此对LDPC码的研究具有非常重要的理论意义和实际意义[6-7].本研究通过设计LDPC码并在MATLAB/Simulink上进行仿真实现,进而分析所设计LDPC码的编译码性能、误比特率和误码率.仿真结果表明,该LDPC码具有较低的译码复杂度和良好的性能,可满足基本的数字通信系统编解码要求.

1 系统整体结构设计

1.1 数字通信系统基本组成

一个简单的数字通信系统基本组成框图如图1所示,主要包括信源、信源编码、信道编码、调制器、发送设备、信道(介质)、接收设备、解调器、信道译码、信源译码和信宿.

图1数字通信系统基本组成框图

数字通信系统的整个通信过程可概括为:从信源输出的信号经过信源编码后,得到二进制数字信息序列;在信道编码中二进制信息序列以受控的方式引入一些冗余信息,以便在接收设备中用来克服信息序列在信道传输过程中所接收噪声和干扰的影响;加入冗余后的信息序列经过调制器映射成传输信号的波形,直接输送到发送设备进行信号的传输;在接收设备接收到信号后,通过解调器处理信号波形,将其还原成二进制信息序列;所得到的二进制信息序列中还夹杂有噪声、干扰和冗余等,经过信道译码后能重构初始信息序列,初始信息序列经过信源译码后能够得到原始的发送信号,继而传送到信宿端,完成整个通信系统的信息传输功能[8].

1.2 AWGN信道上LDPC码仿真系统组成

本研究设计的在AWGN信道上LDPC码的仿真系统原理框图如图2所示.LDPC码编译码仿真系统由信源、LDPC码编码器、BPSK调制器、AWGN信道、BPSK解调器、LDPC码译码器、

信宿和误比特率统计模块组成.信源输出一个二进制信息序列传送到LDPC码编码器,信息经过信道编码后就进行BPSK调制,然后进入信道进行传输,信号在接收端先经过BPSK解调,后经过LDPC码译码器进行译码操作,最后输出信号到接收端.为了检验LDPC码的性能,在信号接收端采用误比特率统计模块对译码器输出码字和发送的信源码字进行比较,以此得出系统的误比特率和误码率,进而分析译码性能[9].

图2 AWGN信道上LDPC码仿真原理框图

2 LDPC码编解码

2.1 LDPC码编码

本研究设计的LDPC码编码器的内部结构如图3所示,其中码长为256,码率为0.5,采用准循环LDPC码(QC-LDPC)的结构.

图3 LDPC码编码器内部结构框图

编码器对外接口信号包括输入信号和输出信号2部分:输入信号包括系统工作时钟clk1与clk2,其中clk2的时钟频率是clk1的2倍,系统复位信号reset,输入开始指示信号start和输入信息序列msg.输出信号包括输出开始指示信号over、输出编码结果codeout.在start指示有效后的128个时钟周期内,msg信号输入码长为128的信息序列,完成1帧输入后可以立即接收后面的帧,输入和编码运算由clk1驱动.输出信号codeout是由信息序列codesys和校验序列codepar经过并串转换以后得到的结果,在over指示有效后的256个时钟周期内输出编码结果,由时钟clk2驱动[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);

2.2 LDPC码译码

本研究所用的TPMP(two-phase message passing)算法为Gallager提出LDPC码时给出的软判决译码算法,通过变量节点和校验节点之间来回传递消息进行译码.译码过程主要包括校验节点更新和变量节点更新2个步骤.BP译码的实质是根据接收到的实数矢量R计算发送比特序列的后验概率,并根据其所参与的校验约束尽可能准确地对发送序列X进行译码[1-2].最小和算法是BP算法的一个简化近似.

TPMP译码算法的全并行译码结构如图4所示,TPMP译码算法的串行译码结构如图5所示.

图4 TPMP译码算法的全并行译码结构图

图5 TPMP译码算法的串行译码结构图

译码器的核心单元为SISO译码器(也称单校验码处理单元)和Q函数实现单元.单校验码译1帧数据的总体结构如图6所示,Q函数模块电路结构框图如图7所示.

本LDPC码译码器主要程序代码如下(ldpc-decode):

图6 1个SISO译码器译1帧数据的原理框图

图7 Q函数模块电路结构框图

……

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

……

3 基于MATLAB/Simulink的LDPC码仿真

3.1 基于MATLAB/Simulink的LDPC码仿真设计

本研究设计的基于MATLAB/Simulink的LDPC码仿真系统如图8所示.系统主要由7部分组成:信源模块、编码模块、调制模块、信道传输模块、解调模块、译码模块及误比特率统计模块.

图8基于MATLAB/Simulink的LDPC码编译码仿真系统框图

在本LDPC码编译码仿真系统中,Bernoulli Binary Generator(贝努利二进制序列生成器)产生一个128-bit数据帧作为系统的信源输入.To Sample模块的主要作用是把帧格式的输入数据转换成抽样格式以便下一模块进行操作.误比特率统计模块产生的数据是一个三维向量(误码率、误码个数和信号总数),以便进行最后的误码率和误比特率的计算,获取相关数据.

LDPC码仿真系统中各个模块的主要参数设置如下:

1)信源模块.贝努利二进制序列产生器生成系列随机的二进制数,生成二进制数1和0的概率均为0.5,随机设定初始数值为61,设置数据采样周期为1/128 s,输出为double双精度类型的数据.

2)调制模块.采用二进制相移键控BPSK调制输入信号,此时设置相应偏移角为0,同时输出数据类型设置为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信道传输经过BPSK调制后的信号,加性高斯白噪声AWGN是最基本的噪声与干扰模型,此时信号唯一的减损来自宽带的线性加成与高斯分布振幅的白噪声.在使用复杂输入的任一方差模式时,方差值在输入信号的实部和虚部之间平均分配,对输入信号选择列作为通道(帧)处理,随机设定初始数值为61,设定方差值为1.3.

4)解调模块.采用二进制相移键控DBPSK解调输出信号,设置相位移角度为0.输出数据类型遵循系统的设定规则,以便解调信号能够迅速进入译码进程.

5)误比特率计算模块.系统仿真的衡量主要通过误比特率、误码率和信噪比来表现.考虑到实际的仿真环境设置模块中的延时均为1,数据的计算选择系统框架模式,输出数据选用端口模式,目标错误指数设定值为100,可输出的最大符号数为106.

3.2 基于MATLAB/Simulink的LDPC码仿真实现

本研究基于MATLAB/Simulink的(256,128)LDPC 码的纠错性能仿真结果如图9所示.

图9 LDPC码误码率仿真曲线

由图9可知,(256,128)LDPC码的译码性能在信噪比界于2 dB间时,误码率值接近0.6且变化非常缓慢;信噪比大于2 dB后,其误码率随着信噪比的增大呈现出下降趋势;信噪比大于3 dB后,误码率小于0.1并一直呈现出下降趋势;信噪比介于4~6 dB间时,误码率值在0.02附近出现小幅波动;信噪比大于6 dB后,误码率值接近并小于0.01,此时LDPC码的译码性能可满足数字通信系统编解码的需求.

4 结 语

LDPC码虽然在众多领域得到了广泛的应用,但目前LDPC码的构造和编译码算法方面研究仍有一定的不足,应用不同的构造方法、编译码算法都会使所得到的LDPC码在性能上具有较大的差异,同时现有LDPC码的构造方法也较为复杂且译码算法未能达到最大优化,没有充分应用LDPC码极具优势的性能特点.因此,对LDPC码的深入研究具有非常重要的理论意义和现实意义,能够进一步推动LDPC码在数字通信领域的应用,充分合理地设计LDPC码奇偶校验矩阵和生成矩阵,能够减小编译码算法的复杂度,尽可能地提高LDPC码的性能,将其充分应用在现有数字通信系统编解码领域,进而推动数字通信技术的发展.

[1]崔俊云.LDPC码的构造及其译码算法研究[D].西安:西安电子科技大学,2012.

[2]胡树楷.LDPC码构造及低复杂度译码算法研究[D].西安:西安电子科技大学,2012.

[3]王丽丽.星间通信信道编码算法研究[D].哈尔滨:哈尔滨工业大学,2009.

[4]王鹏.LDPC码的编码原理及编码设计[D].西安:西安电子科技大学,2003.

[5]肖扬.Turbo与LDPC编解码及其应用[M].北京:人民邮电出版社,2010.

[6]陈友淦,许肖梅.LDPC码在浅海水声通信中的应用研究[J].通信技术,2009,42(4):41-42,45.

[7]袁东风,张海刚.LDPC理论与应用[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.

四川省科技厅创新苗子工程(2016022)资助项目.

廖 雄(1993 — ), 男, 硕士研究生, 从事计算机通信与信息系统研究.

猜你喜欢

比特率信源译码
基于极化码的分布式多信源信道联合编码
分段CRC 辅助极化码SCL 比特翻转译码算法
基于校正搜索宽度的极化码译码算法研究
基于多个网络接口的DASH系统设计与实现
相同比特率的MPEG视频双压缩检测*
从霍尔的编码译码理论看弹幕的译码
信源自动切换装置的设计及控制原理
灾难传播中的媒体人微博的信源结构分析
——以鲁甸地震相关新浪微博为例
LDPC 码改进高速译码算法
分布式不等差错保护LT码*