基于Matlab的LDPC码研究及实现

时间:2022-09-02 11:52:49

基于Matlab的LDPC码研究及实现

摘要 低密度奇偶校验码(LDPC:Low density parity check code)因为其优异的性能,得到了广泛的重视。本文阐述了LDPC码的构造原理,并对其编译码算法进行了研究。进行了LDPC码在加性高斯白噪声(AWGN:additive white Gaussian noise)信道下的仿真实验,验证了LDPC码优异的纠错能力。

关键词 LDPC码;编译码;纠错

中图分类号TP39 文献标识码A 文章编号 1674-6708(2012)72-0234-02

0 引言

Turbo码在1993年被提出后引起了各国学者们对迭代译码算法研究的热潮,从而使人们重新关注到:Gallager早在 1962 年就提出的低密度奇偶校验码(LDPC 码)[1]也是一种性能能够接近 Shannon 限,并且是能够在现实中实现的编码方案,并经过研究发现它具有超过 Turbo 码的性能。

另外, LDPC 码采用了本质上是并行运算的置信传播(BP:belief propagation)的译码算法,这有利于在实际工程中硬件上并行实现,从而可以实现很高速度的译码。

LDPC 码有着很好的应用前景,如在下一代数字卫星广播中已将LDPC码列入DVB-S2标准[2]。

经过各国学者的共同努力在其结构设计,编码,译码以及各方面的具体应用已经取得了较多的成果。

1 LDPC编码原理

从本质上来说LDPC码是属于线性分组码的一种特殊形式。一个用(n,k)表示的线性分组码将长度为k位的信息u映射成为长为n位的码字c。

其中多出来的m=n-k位为检验位。u和c的映射关系可以表示为矩阵形式:c=uG,我们将表达式里的矩阵G定义为生成矩阵,并且它为k行n列。而对于每一个k×n维的生成矩阵G都存在一个m(m=n-k)行n列的矩阵H,满足H和G行正交关系,即GHT=0。

其中H矩阵被称作校验矩阵。编码后的码字c和校验矩阵又满足关系:HcT=0。如果将H分解成,其中A为m×k矩阵,B为m×m满秩矩阵,将c分解成,则有:

即,得到校验位。

因此,构造满足性质的稀疏校验矩阵H是LDPC 码编码的关键所在。

2 LDPC编码算法

一般具体的LDPC 码的编码思路如下:

1)随机产生列重量为 wc 和行重量为wr的 H矩阵,并且尽量使任意两列中同一行为1的元素重叠数目少;

2)利用高斯消去法,将矩阵H变换为,根据式,有,又由于在二元域中,所以有校验位;

3)最后根据得到编码后的码字。

但是,由于上面所述的一般编码方法使用了高斯消元法,它破坏了校验矩阵H原本的稀疏特性。

为了解决出现的问题,Richardson 等人研究出了一个有效的解决方法[3],其中主要的思路是:重新排列矩阵H的列,得到一个如图1所示的近似的下三角形矩阵,将其分成六个稀疏的分块矩阵。

我们可以确切地将图中的校验矩阵写成如下表达式:

其中 A 是 (m-g)行 (n-g)列的矩阵,B是(m-g)行g列的矩阵,T是 (m-g)行 (m-g)列的下三角矩阵,C是g行 (n-m)列的矩阵,D是g行g列的矩阵,E是g行 (m-g)列矩阵,并且这六个矩阵都保持了原矩阵的稀疏性。

对上面表达形式的矩阵H左乘一个矩阵,做线性变换后得到一个下面形式的用于递推校验位的矩阵H1:

将编码后的码字c分解为,u为编码的信息位部分,p1 (长度为g)和p2(长度为m-g)构成了编码的校验位部分,由HcT=0可分解成下面的两个相关等式:

解二元方程得:

其中。

和一般的编码思路比较,由于在Richardson 等人的解决方案中只对矩阵H的列做了重新排列这并没有改变矩阵的稀疏特性,其中p1和p2的计算复杂度可以表示为和[4],因此只要使矩阵g足够小,编码算法的计算复杂程度就能够以近似地达到线性。

3 LDPC译码

LDPC码之所以性能优异其中重要的因素之一就是:它所采用的译码算法是基于置信传播(BP:Belief Propagation)的迭代算法,这就是它和一般传统纠错码的重要不同所在。

根据传递信息的表示形式不同可以将BP 译码算法分为:概率域BP 算法,即在算法中消息的表示方式是概率,这是该算法的一般通用表达方式,也能够在其它非二进制的 LDPC 译码中适用;对数域 LLR(Log-Likelihood Ratio)-BP 算法,即使用对数似然比形式表示二进制译码过程中的消息[5]。

由于本文的仿真实验是对二进制数据进行的LDPC编译码仿真,并且两种算法性能相差不大,但对数域算法要简单得多,所以本文以下给出的算法是LLR-BP译码算法。

一个比特形式的变量 x 的对数似然比可以定义为如下形式:

其含义为:如果L(x)的符号为正就表示这个变量值为 0 ,如果符号为负就表示这个变量值为 1,并且L(x)的绝对值越大该变量取0 或 1 的置信度就越大。

对数译码算法的步骤可以概括为以下:

1)初始化:对每一个接收到的含噪信息位yi ,计算信道信息:,其中,,其中为高斯白噪声信号方差。对于每一个满足的,计算:。

2)校验节点的更新(横向步骤):对于每一个校验节点j,根据以下式子计算:

,其中表示矩阵H第j行中除第i列外值为1的所有元素。

3)变量节点的更新(纵向步骤):对于每一个变量节点i,根据下面式子计算:

4)后验对数似然比率的计算:,其中M(i)表示矩阵H第i列中值为1的所有元素。

5)尝试译码判决:根据前面几步得到的执行硬判决,得到,判决准则为:如果,则;若,则。然后将得到的估计值代入校验方程,如果满足方程,结束迭代过程;否则,回到步骤(2)中继续进行迭代计算,直到满足校验方程为止或达到程序所设置的迭代次数上限。

4 LDPC码的仿真

本文在matlab|simulink环境对LDPC码在高斯信道下进行了仿真,其仿真模型图如图2所示。

首先由二进制随机序列发生器生成一个长度为256的二进制数后,由LDPC编码函数模块接收这个二进制数并对其进行编码,经过编码后用BPSK调制模块将得到的数据进行调制,之后调制后的数据进入AWGN信道模块中产生加噪信号,这就完成了信号的产生和发送过程的模拟,接着在接收端对加噪信号使用BPSK解调模块进行解调,然后将解调后的信号数据经过译码模块译码,从而完成了信号由发送到接收的整个过程。为了检验 LDPC 码的编译码性能,使用两个位错误统计模块得到译码和不译码前后的误码率对比图,其图形如图3所示。

从图3中能够看到经过译码后误码率得到了很好的改善,基本达到了通信系统误码率要求,这说明LDPC码具有很好的特性。

5 结论

本文重点介绍了LDPC的码原理及其编译码算法的实现过程。最后通过matlab对LDPC码做了简单的验证性仿真实验,并得到了较好的结果。

本文主要对LDPC 在加性高斯白噪声的信道中实现进行了研究,想要将 LDPC 码广泛地应用于实际,对其在无线衰落信道特别是时变信道下的性能研究就显得尤为重要了,这也将是作者下一步的研究重点。

参考文献

[1]R G Gallager.Low-Density Parity-Check Codes[J].IRE Transactions on Information Theory,1962, 8: 21-28.

[2]陈和香,苗东,等.DVB-S2标准LDPC码的算法研究和仿真[J].中国有线电视,2007,9(10):863-866.

[3]徐华.LDPC码设计方法研究进展[J].科技创新导报,2007,33:1-3.

[4]宫晓妍,刘建伟.LDPC码编码方案研究与发展[J].通信技术,2008,10(41):64-66.

[5]陈宁.LDPC码编译码技术的研究及仿真平台的设计[D].武汉理工大学,2007,5:39-40.

上一篇:TDMA技术以及应用特征分析 下一篇:公路工程中对于地震液化有关规定的对比分析