LDPC 码

来源:互联网 发布:佛山网络推广方法 编辑:程序博客网 时间:2024/05/19 03:22


       LDPC码即低密度奇偶校验码(Low Density Parity Check Code,LDPC)


       LDPC码最早在20世纪60年代由Gallager在他的博士论文中提出,但限于当时的技术条件,缺乏可行的译码算法,此后的35年间基本上被人们忽略,其间由Tanner在1981年推广了LDPC码并给出了LDPC码的图表示,即后来所称的Tanner图。1993年Berrou等人发现了Turbo码,在此基础上,1995年前后MacKay和Neal等人对LDPC码重新进行了研究,提出了可行的译码算法,从而进一步发现了LDPC码所具有的良好性能,迅速引起强烈反响和极大关注。经过十几年来的研究和发展,研究人员在各方面都取得了突破性的进展,LDPC码的相关技术也日趋成熟,甚至已经开始有了商业化的应用成果,并进入了无线通信等相关领域的标准。

LDPC码是通过校验矩阵定义的一类线性码,为使译码可行,在码长较长时需要校验矩阵满足“稀疏性”,即校验矩阵中1的密度比较低,也就是要求校验矩阵中1的个数远小于0的个数,并且码长越长,密度就要越低。
LDPC码即低密度奇偶校验码(Low Density Parity Check Code,LDPC),它由Robert G.Gallager博士于1963年提出的一类具有稀疏校验矩阵的线性分组码,不仅有逼近Shannon限的良好性能,而且译码复杂度较低, 结构灵活,是近年信道编码领域的研究热点,目前已广泛应用于深空通信、光纤通信、卫星数字视频和音频广播等领域。LDPC码已成为第四代通信系统(4G)强有力的竞争者,而基于LDPC码的编码方案已经被下一代卫星数字视频广播标准DVB-S2采纳。
对同样的LDPC码来说,采用不同的译码算法可以获得不同的误码性能。优秀的译码算法可以获得很好的误码性能,反之,采用普通的译码算法,误码性能则表现一般。
LDPC码的译码算法包括以下三大类:硬判决译码,软判决译码和混合译码。
1. 硬判决译码将接收的实数序列先通过解调器进行解调,再进行硬判决,得到硬判决0,1序列,最后将得到的硬判决序列输送到硬判决译码器进行译码。这种方式的计算复杂度固然很低,但是硬判决操作会损失掉大部分的信道信息,导致信道信息利用率很低,硬判决译码的信道信息利用率和译码复杂度是三大类译码中最低的。常见的硬判决译码算法有比特翻转(bit-flipping, BF)算法、一步大数逻辑(one-step majority-logic, OSMLG)译码算法。
2. 软判决译码可以看成是无穷比特量化译码,它充分利用接收的信道信息(软信息),信道信息利用率得到了极大的提高,软判决译码利用的信道信息不仅包括信道信息的符号,也包括信道信息的幅度值。信道信息的充分利用,极大地提高了译码性能,使得译码可以迭代进行,充分挖掘接收的信道信息,最终获得出色的误码性能。软判决译码的信道信息利用率和译码复杂度是三大类译码中最高的。最常用的软判决译码算法是和积译码算法,又称置信传播 (belief propagation, BP)算法。
3. 与上述的硬判决译码和软判决译码相比,混合译码结合了软判决译码和硬判决译码的特点,是一类基于可靠度的译码算法,它在硬判决译码的基础上,利用部分信道信息进行可靠度的计算。常用的混合译码算法有、加权比特翻转(weighted BF, WBF)算法、加权OSMLG(weighted OSMLG, WMLG)译码算法。

简单介绍一下LDPC码的基本原理,先说一下编码。学过通信原理的人应该有些印象,我们通过构建一个生成矩阵G,就可以进行编码了,当然这里仅仅介绍理论部分,硬件部分暂不介绍,我还没有学习到。具体如何利用生成矩阵编码在一般意义上不是很复杂的事情(只能说一般意义上,后面会提到非课本内容的部分),简单的说就是生成矩阵G和信息码的相乘,结果即为编码过后的码字,包括信息码和校验码。这样的码字在信道上传输可靠性会增大,虽然校验码增加了码长,降低了信息传输速率,可增加了纠错检错的能力,更加有利于解码的正确率即信息的正确传输(具体内容参考信息论的理论)。就我目前看到的为止,LDPC码的编码的问题主要有两类,第一类是校验矩阵H的构建(H矩阵是与G矩阵对偶的一个矩阵,代表了校验特征,也就是LDPC),第二类是编码的实现。H矩阵的构建在LDCP码领域是一个重要的问题,H矩阵的好坏影响着编码解码的性能。H矩阵分为正则H矩阵和非正则H矩阵,Gallager提出LDPC码时构建的H矩阵就是一个正则H矩阵,而理论和事实都证明非正则的H矩阵具有更加优良的特性。构建H矩阵的方法在Gallager第一次提出LDPC码的时候就已经给出一种方法,这在他1963年的那篇文章中给出了,具体内容就不介绍了,有兴趣的同学可以参考刚才提到的那篇文章。接下来就到了1996年,Mac Key开始接管LDPC领域的研究。他提出了一种随机构建H矩阵的方法,有1A、2A、1B、2B四种不同的方面,其实核心是一样的,每种方法有些许改进。这两种方法用于构建正则H矩阵。而随着后来的研究者越来越多,各种方法也都涌现出来,基本都是基于代数方法,也有基于启发式搜索的,有Xiao Yu Hu的PEG方法,这是被认为构建中、短码长低密度校验码当前所知具有参数最好的码,而这句话是Mac Key说得。还有Bit filling法等一系列方法,都是构建H矩阵最为常见的方法,后两者可以构建非正则H矩阵。后面两种方法还没有时间学习,但是构建H矩阵的核心即是围绕避免短的围长和增加码间距离展开,而这两者也有一定关系。从构建低密度校验矩阵方面看来,正则H矩阵的构建已经有了一定理论,而如何构建非正则H矩阵目前还没有严格的理论基础,这是一个值得研究的方面。

       编码研究的另一个方面就是具体编码的实现。课本上的原理前面已经介绍过了,通过H矩阵经过高斯消去很容易得到生成矩阵G,然后就很容易编码。而看到的文章提到由H到G消除了低密度的优点,然后就有不同的编码方法提出,也就引出了不同的理论和硬件实现。这方面暂时还没有开始看,才刚开始看,接触的都是最基本的,以后也许会做这方面的研究,现在先搞清楚有这个方向可以研究这个概念,为以后作准备。

       信道传输略过,这不是我们考虑的问题。再开始介绍解码。Gallager那篇经典文章中提到了两种方法,一种是比特翻转法(Gallager硬判决法),另一种是基于最大后验概率的解码方法(Gallager软判决法)。课本上介绍的解码方法是通过校验矩阵进行解码的,收到的码字和校验矩阵作相乘,如果结果为零矩阵,则收到的是正确码字,反之则不正确,再利用相乘的结果进行分析,进行纠错检错。比特翻转法,和常规的方法类似,主要就是设立门限,某一码字错误超过门限即翻转一次,然后反复迭代,直到解码正确或者超过迭代次数。第二种方法是利用码字每一比特的条件概率计算出另一码字的条件概率,然后又计算出另一个码字的条件概率,通过反复迭代直到每一比特为1的概率趋近于0或者1则译码输出。而迭代期间码字的选择可以通过奇偶校验树进行寻找,具体方法这里又不介绍了,有兴趣还可以参考前面提到的文章。还有基于Turner图的消息传播算法,其中的一种BP(置信传播)算法经过证明和Gallager的软判决算法等价的,可考虑问题的方法是不同的,很多思想是能够借鉴的。这种方法也是最好的最常用的方法,基于后验概率的解码在信息论的很多领域都一样的。不过需要说明的是,这是在BSC无记忆信道下推导出来一些理论,在高斯白噪声信道下以及记忆信道的理论暂时还没有涉及,前者有资料还没看,后者还没看到资料,这都是后期的工作了,既然工作总结就不再说了。

下来就总结一些学习方法方面的问题。首先对于未知知识的学习应该先从最基本的入门做起,搜索资料的时候没有目标和条理,应该先搜索introduction,然后循序渐进,看资料也应该先看入门的东西,刚开始就看深入的东西真是要被打击死,幸好后来找到了思路。其次,对于经典的态度,对于经典的东西还是应该阅读一下的,看到这一类的文章的参考文献都是某几篇文章,看过之后也惊呼经典就是经典啊。记录下来构建H矩阵的经典文章,解码方法的经典文章,以后要是深入学习还是要阅读一下的。然后就是英语能力和数学能力,英语能力体现在对某些语句的理解方面,很多时候真是不能理解文章中的关键字,百思不得其解,只好通过其他资料进行理解,数学能力体现在对大师们的数学的崇拜,那些费劲才能看懂或者看不懂的东西,大师们可是想出来的啊,先驱就是先驱,再一次惊呼自己的平时接触的数学真是太简单了,数学能力有待提高这就是以后的任务了。最后就说对时间的利用,每天都在浪费时间,不能抓紧时间学习,其实这些东西原本很快就能看完的,拖到了现在。


0 0
原创粉丝点击