LDPC码简介

LDPC码简介

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

LDPC码的特点
  • 特点一:LDPC码的检验矩阵的稀疏性。LDPC码是一种分组码,其校验矩阵只含有很少量非零元素。正是校验矩阵的这种稀疏性,保证了译码复杂度和最小码距都只随码长呈现线性增加。除了校验矩阵是稀疏矩阵外,码本身与任何其它的分组码并无二致。其实如果现有的分组码可以被稀疏矩阵所表达,那么用于码的迭代译码算法也可以成功的移植到它身上。然而,一般来说,为现有的分组码找到一个稀疏矩阵并不实际。不同的是,码的设计是以构造一个校验矩阵开始的,然后才通过它确定一个生成矩阵进行后续编码。

  • 特点二:LDPC的译码。译码方法是LDPC码与经典的分组码之间的最大区别。经典的分组码一般是用ML类的译码算法进行译码的,所以它们一般码长较小,并通过代数设计以减低译码工作的复杂度。但是LDPC码码长较长,并通过其校验矩阵H的图像表达而进行迭代译码,所以它的设计以校验矩阵的特性为核心考虑之一。

    本篇文章将从上述两个特点来阐述本人对LPDC码的理解。即一部分为lpdc码的构造与编码,解释其检验矩阵特殊在哪里。另一部分为lpdc码的译码和译码算法。

LDPC码的构造

在通信原理这门课程当中,对一种分组码的设计,要先设计一个适合的校验矩阵H,然后根据对偶性,得到其生成矩阵G,再利用信息码组与生成矩阵相乘得到其完整分组码。在LDPC线性分组码,也是同样道理。因为其对校验矩阵稀疏性的要求,H矩阵的构建在LDCP码领域是一个重要的问题,H矩阵的好坏影响着编码解码的性能。H矩阵分为正则H矩阵和非正则H矩阵,Gallager提出LDPC码时构建的H矩阵就是一个正则H矩阵。

Gallager在其论文中给出一种方法-随机构造法,大体内容如下:
Gallager码(n,j,k)(n, j, k)(n,j,k)的构造步骤:

  • 将码集矩阵其分成 j 个子矩阵,每个矩阵每列只有 1 个1;

  • 第一个子矩阵中的1成下降趋势构成,如图1;

  • 其它子矩阵由第一个子矩阵通过随机列置换构成。
    在这里插入图片描述

但是这种方法无法满足无短环要求,故其至少需要消除4环这一步骤,而由于消除4环的效果不理想,则会导致后续的译码性能差(本篇文章不做过多解释)

因此除了这中随机构造法还有以下这些方法:

  • 组合数学完备循环差集构造法:这种方法构造的H是无4环规则码,且同一行列数要求下的H很多。

  • 对角线法:这种方法主要用于构造规则码(也可以用于不规则码)。

LDPC的编码

在得到校验矩阵后,需要进行编码,得到完整码元。编码方法也有如下几种:

  • 一、系统编码法即高斯消元法:

    通过高斯变换将得到的H转化为系统形式,这样编码简单,同样由于破坏了稀疏矩阵的稀疏性导致编码复杂度(主要是高斯变换过程复杂)很高。

  • 二、近似下三角矩阵法:

    –该算法直接通过校验矩阵求取编码码字的校验比特位。

    • 首先,将校验矩阵变换为下图的下三角形式在这里插入图片描述

    • 其中,T为下三角矩阵,然后通过校验矩阵的每一行乘以转置后的码字乘积为0以及下式可以得到后面两个式子:在这里插入图片描述

    • 其中
      -在这里插入图片描述

    • 通过中间的式子求出校验比特部分p1,进而带入最后的式子求得校验比特p2,就得到完整码元,以完成编码。

LDPC码的译码

主流的LPDC译码算法有如下两种,一种是比特翻转算法,另一种是置信传播算法

一、比特翻转算法–BF:

该算法是硬判决译码算法中最主要的一种算法。基本假设是当校验方程不成立时,说明此时必定有比特位发生了错误,而所有可能发生错误的比特中不满足校验方程个数最多的比特发生错误的概率最大。因此,在每次迭代时均翻转发生错误概率最大的比特并用更新之后的码字重新进行译码,直到校验方程成立。具体步骤如下

  • 设置初始迭代次数 k1及其上限kmax 。对获得的码字y=(y1,y2…yn)按照下式展开二元硬判决得到接收码字的硬判决序列Zn 。

    在这里插入图片描述

  • 若k1=kmax ,则译码结束。不然,计算伴随式s=(s0,s1,…sm-1),sm表示第m个校验方程的值。若伴随式的值均为0,说明码字正确,译码成功。否则说明有比特位错误。继续进行步骤3。

  • 对每个比特,统计其不符合校验方程的数量fn (1<=n<=N)

在这里插入图片描述

  • 将最大fn所对应的比特进行翻转,然后k=k+1,返回步骤2。

BF算法的优点在于单纯的对码字进行硬判决,理论最为简单,实现起来最容易。缺点是舍弃了每个比特位的可靠度信息,,性能也最差。当连续两次迭代翻转函数判断同一个比特位为最易出错的比特时,BF算法会陷入死循环,大大降低了译码性能。

疑问:

  1. 为什么这里通过计算表达式fn就可以得到哪个比特不满足校验方程的个数最多即最有可能出错。
  2. 当同时有两个及两个以上的比特不满足校验方程的数目一样多时,该算法如何处理。
二、置信传播算法–BP

–置信传播(Belief Propagation)译码算法是消息传递(Message Passing)算法在 LDPC译码中的运用。

Tanner图

首先了解一下Tanner图的概念,Tanner图是迭代译码算法的参考工具,具体的定义这里不给出,以一个例子来说明Tanner图。设发送码字C=(C9,C8,C7,C6,C5,C4,C3,C2,C1),一个监督矩阵H为

在这里插入图片描述
则用Tanner来表示校验子S

在这里插入图片描述

图中的X0,X1…X9称为变量节点,代表10个比特C0,C1,C2…C9,它们是译码器待求解的未知变量。图中的□成为校验节点,代表线性方程组中的每一个校验方程,连线就代表方程中此变量的系数为1。

注:此前提到的环可以理解为:一个节点经过多少条线回到该节点的条数。

置信传播译码算法的基本流程:
  • 在迭代前,译码器接收到信道传送过来的实值序列y=(y1,y2,….yn),所有变量节点bi接收到对应的接收值yi。
    第一次迭代:每个变量节点给所有与之相邻的校验节点传送一个可靠性消息,这个可靠性消息就是信道传送过来的值;每个校验节点接收到变量节点传送过来的可靠性消息之后,进行处理,然后返回一个新的可靠性信息给与之相邻的变量节点,这样就完成了第一次迭代;此时可以进行判决,如果满足校验方程,则不需要再迭代,直接输出判决结果,否则进行第二次迭代。
  • 第二次迭代:每个变量节点处理第一次迭代完成时校验节点传送过来的可靠性消息,处理完成后新的消息发送给校验节点,同理,校验节点处理完后返回给变量节点,这样就完成了第二次迭代。完成后同样进行判决,如果满足校验方程则结束译码,否则如此反复多次迭代,每次都进行判决,直到达到设定的最大迭代次数,译码失败。

注意:在每次迭代过程中,为保证每次节点接受与发送的信息相互独立,无论是变量节点传送给校验节点的信息或者校验节点传送给变量节点的信息,都不应该包括前次迭代中接收方发送给发送方的信息。

在上述所说的在节点间传递的可靠信消息中,肯定包含错误比特信息(在S校验子不为0的前提下),但是这个错误信息,与其他节点的正确信息共同传递至某一校验节点,在我看来是一种‘平均’,经过若干次‘平均之后’,所得的到值就为正确的信息。

关于BP的推导公式较为复杂,参考链接

非规则LDPC码–qc-LDPC(准循环LDPC码)
  • 非规则矩阵:不满足校验矩阵每行列重相同,每列列重也相同,并且校验矩阵中任意两列中元素1位置相同的个数不能多于1个,这样的LDPC称为不规则LPDC

  • LDPC校验矩阵主要有随机化生成法和结构化生成法,准循环LDPC就是通过循环置换矩阵的结构化构造方法构造出的一类LDPC,更有利于编码和译码。现已被用在5G和eMBB场景中采用。

  • 其构造校验矩阵,编译码原理同规则LPDC码。

DC

  • LDPC校验矩阵主要有随机化生成法和结构化生成法,准循环LDPC就是通过循环置换矩阵的结构化构造方法构造出的一类LDPC,更有利于编码和译码。现已被用在5G和eMBB场景中采用。

  • 其构造校验矩阵,编译码原理同规则LPDC码。

  • 8
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值