精华内容
下载资源
问答
  • (15,7)循环码编译码方法

    千次阅读 2021-05-14 21:45:14
    此次课程设计题目是(15,7)循环码的编译码方法,首先介绍了线性分组码的编译码原理;其次在matlab平台下,完成了任意码的编码和译码,并求出该码的最小码距以及其纠错能力;最后分析了该码在高斯信道下的误码性能。...

    (15,7)循环码的编译码方法

    论文+代码+仿真结果下载地址:下载地址

    摘要
    提高信息传输的有效性和可靠性始终是通信技术所追求的目标,而信道编码能够显著的提升信息传输的可靠性。此次课程设计题目是(15,7)循环码的编译码方法,首先介绍了线性分组码的编译码原理;其次在matlab平台下,完成了任意码的编码和译码,并求出该码的最小码距以及其纠错能力;最后分析了该码在高斯信道下的误码性能。
    关键词:循环码;编码;译码

    在这里插入图片描述
    前言
    随着社会经济的迅速发展和科学技术的全面进步,计算机事业的飞速发展,以计算机与通信技术为基础的信息系统正处于蓬勃发展的时期。随着经济文化水平的显著提高,人们对生活质量及工作软件的要求也越来越高。在计算机通信信息码中循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它有许多特殊的代数性质,它使计算机通信以一种以数据通信形式出现,实现了在计算机与计算机之间或计算机与终端设备之间进行有效的与正确地信息传递,它使得现代通信的可靠性与有效性实现了质的飞跃。它是现代计算机技术与通信技术飞速发展的产物,在日常生活通信领域、武器控制系统等领域都被广泛应用。
    数字信号在传输中往往由于各种原因,使得在传送的数据流中产生误码,从而使接收端产生图象跳跃、不连续、出现马赛克等现象。所以通过信道编码这一环节,对数码流进行相应的处理,使系统具有一定的纠错能力和抗干扰能力,可极大地避免码流传送中误码的发生。误码的处理技术有纠错、交织、线性内插等。提高数据传输效率,降低误码率是信道编码的任务。信道编码的本质是增加通信的可靠性。此次课程设计题目是(15,7)循环码的编译码方法,首先学习掌握了线性分组码的编译码原理;其次在matlab平台下,完成了任意码的编码和译码,并可求出该码的最小码距以及其纠错能力;最后分析了该码在高斯信道下的误码性能。

    一 基本原理
    1.1循环码的定义

    循环码是线性分组码的一种,所以它具有线性分组码的一般特性,此外还具有循环性。循环码的编码和解码设备都不太复杂,且检(纠)错能力强。它不但可以检测随机的错误,还可以检错突发的错误。(n,k)循环码可以检测长为n-k或更短的任何突发错误,包括首尾相接突发错误。
    循环码是一种无权码,循环码编排的特点是相邻两个数码之间符合卡诺图中的邻接条件,即相邻两个数码之间只有一位码元不同,码元就是组成数码的单元。符合这个特点的有多种方案,但循环码只能是表中的那种。循环码的优点是没有瞬时错误,因为在数码变换过程中,在速度上会有快有慢,中间经过其它一些数码形式,称它们为瞬时错误。这在某些数字系统中是不允许的,为此希望相邻两个数码之间仅有一位码元不同,即满足邻接条件,这样就不会产生瞬时错误。循环码就是这样一种编码,它可以在卡诺图中依次循环得到。循环码又称格雷码。
    循环码最大的特点就是码字的循环特性,所谓循环特性是指:循环码中任一许用码组经过循环移位后,所得到的码组仍然是许用码组。若( )为一循环码组,则( )、( )……还是许用码组。也就是说,不论是左移还是右移,也不论移多少位,仍然是许用的循环码组。

    编码流程
    在这里插入图片描述
    译码流程
    在这里插入图片描述
    仿真结果:
    在这里插入图片描述
    实验分析
    此次课程设计题目是(15,7)循环码的编译码方法,首先学习掌握了线性分组码的编译码原理;其次在matlab平台下,完成了任意码的编码和译码,并求出该码的最小码距以及其纠错能力;最后分析了该码在高斯信道下的误码性能。但由于所学知识有限,在设计过程中困难有很多,其主要表现在不熟练软件编程。

    **参考文献**
    [1]樊昌信,曹丽娜.通信原理(第六版).北京:国防工业出版社.2007
    [2]徐明远,邵玉斌.MATLAB仿真在通信与电子工程中的应用.西安:西安电子科技大学学出版社.2005
    [3]唐向宏,岳恒立,郑雪峰等. MATLAB及在电子信息类课程中的应用(第二版) .北京:电子工业出版社,2009
    [4] 沈保锁等.《现代通信原理》.天津科学技术出版社.2000	
    [5] 李乐民等.《数字通信传输系统》.人民邮电出版社.2006 
    [6] 惠高潮,王辉.论文《基于单片机(7,4)循环码编码与译码的研究》.南京
    工业大学.2005
    
    
    展开全文
  • (7,3)循环码编译码及纠检错功能的实现,是用c语言实现的.
  • 循环码原理

    2012-06-27 10:53:00
    转载于:https://www.cnblogs.com/kayfans/archive/2012/06/27/2565433.html

    循环码

    转载于:https://www.cnblogs.com/kayfans/archive/2012/06/27/2565433.html

    展开全文
  • LDPC编译码原理

    万次阅读 多人点赞 2019-08-01 20:45:32
    LDPC简介 LDPC编码 LDPC译码 结语

    LDPC码简介

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

    • LDPC码的特点
      LDPC码是一种分组码,其校验矩阵只含有很少量非零元素。正是校验矩阵的这种稀疏性,保证了译码复杂度和最小码距都只随码长呈现线性增加。除了校验矩阵是稀疏矩阵外,码本身与任何其它的分组码并无二致。其实如果现有的分组码可以被稀疏矩阵所表达,那么用于码的迭代译码算法也可以成功的移植到它身上。然而,一般来说,为现有的分组码找到一个稀疏矩阵并不实际。不同的是,码的设计是以构造一个校验矩阵开始的,然后才通过它确定一个生成矩阵进行后续编码。而LDPC的编码就是本文所要讨论的主体内容。对于LDPC码而言,校验矩阵的选取十分关键,不仅影响LDPC码的纠错性能力,也影响LDPC编译码的复杂度及硬件实现的复杂度。准循环 LDPC 码(Quasi-Cycle,QC-LDPC)是 LDPC 码中重要的一类,是指一个码字以右移或左移固定位数的符号位得到的仍是一个码字。QC-LDPC 码的校验矩阵是由循环子矩阵的阵列组成,相对于其他类型的 LDPC 码,在编码和解码的硬件实现上具有许多优点。编码可以通过反馈移位寄存器有效实现,采用串行算法,编码的复杂度与校验比特位数成正比,而采用并行算法,编码复杂度与码字长度成正比。对硬件解码实现,准循环的结构简化了消息传递的路径,可以部分并行解码,实现了解码复杂度和速率的折中。这些优点,使得 QC-LDPC 码作为未来通信和存储系统应用的主要 LDPC 码。

    • 译码算法的选择
      译码方法是LDPC码与经典的分组码之间的最大区别。经典的分组码一般是用ML类的译码算法进行译码的,所以它们一般码长较小,并通过代数设计以减低译码工作的复杂度。但是LDPC码码长较长,并通过其校验矩阵H的图像表达而进行迭代译码,所以它的设计以校验矩阵的特性为核心考虑之一。由于 LDPC 码校验矩阵的稀疏性,其译码复杂度与码长不是指数关系,而是线性关系,因而 LDPC 码的码长可以很长,可以达到几千到几万甚至更高,这样带来的一个好处是:一个码字内各比特之间的关联长度比较长,一般通过迭代译码方法进行译码,充分利用码字内各比特的关联性以提高译码准确度,并且还充分利用了信道的特征。本课题采用的译码算法为置信传播(BP)译码算法,置信传播算法是基于 Tanner 图的迭代译码算法。在迭代过程中,可靠性信息,即“消息”通过 Tanner图上的边在变量节点和校验节点中来回传递,经多次迭代后趋于稳定值,然后据此进行最佳判决,BP译码算法有着非常好译码性能。

    • Tanner图
      LDPC码常常通过图来表示,而Tanner图所表示的其实是LDPC码的校验矩阵。Tanner图包含两类顶点:n个码字比特顶点(称为比特节点),分别与校验矩阵的各列相对应和m个校验方程顶点(称为校验节点),分别与校验矩阵的各行对应。校验矩阵的每行代表一个校验方程,每列代表一个码字比特。所以,如果一个码字比特包含在相应的校验方程中,那么就用一条连线将所涉及的比特节点和校验节点连起来,所以Tanner图中的连线数与校验矩阵中的1的个数相同。以下图是矩阵的Tanner图,其中比特节点用圆形节点表示,校验节点用方形节点表示,加黑线显示的是一个6循环:
      ​​​​​​在这里插入图片描述
      Tanner图中的循环是由图中的一群相互连接在一起的顶点所组成的,循环以这群顶点中的一个同时作为起点和终点,且只经过每个顶点一次。循环的长度定义为它所包含的连线的数量,而图形的围长,也可叫做图形的尺寸,定义为图中最小的循环长度。如上图中,图形的尺寸,即围长为6,如加黑线所示。
      在这里插入图片描述

    LDPC编码

    • 基于校验矩阵H直接编码方案
      首先推导出根据校验矩阵直接编码的等式。将尺寸为(m,n)校验矩阵写成如下形式:
      H=[H1 H2] H=[H_1 \ H_2]
      其中H1H_1 的大小为mkm*kH2H_2 的大小为mmm*m 。设编码后的码字行向量为cc ,它的长度为n,把它写成如下形式
      c=[s p]c=[s \ p]
      其中s是信息码的行向量,长度为k,p为检验行向量,长度为m,根据校验公式
      HcT=0H*c^T=0
      上式展开得
      [H1 H2][sTpT]=0[H_1 \ H_2] \begin{bmatrix} s^T \\ p^T \\ \end{bmatrix}=0
      展开该矩阵方程,并考虑到运算是在GF(2)中进行的,得到
      pH2T=sH1T p*H^T_2=s*H^T_1
      如果校验矩阵H是非奇异的,则满秩,所以有
      p=sH1TH2T p=s*H^T_1*H^{-T}_2
      这样就把码字的校验位计算出来了,这种方法需要保证H2H_2 是可逆的,而准循环LDPC码因其结构化的特点可以保证这一条件。
    • 基于生成矩阵G的编码方案
      令LDPC码的校验矩阵H分为两部分:
      H=[Qcm Pcc]H=[Q_{c*m} \ P_{c*c}]
      其中子矩阵P的大小为c×c,Q的大小为c×m。计算
      W=(Pcc1 Qcm)T W=(P^{-1}_{c*c} \ Q_{c*m})^T
      其中的矩阵运算为模二运算。求得的m×c矩阵W必定是一个稠密的准循环结构矩阵。由稠密的准循环结构矩阵W可以求得生成矩阵:
      G=[Imm W]G=[I_{m*m }\ W]
      其中II是m×m的单位矩阵。可以看出生成矩阵具有准循环结构特性。得到生成矩阵G后将码字X与其相乘C=X*G,获得编码后的码字C。这里的乘法要满足有限域的乘法法则。

    LDPC译码

    Gallager 在描述 LDPC 码的时候,分别提出了硬判决译码算法和软判决译码算法两种。经过不断发展,如今的硬判决算法已在 Gallager 算法基础上进展很多,包含许多种加权比特翻转译码算法及其改进形式。硬判决和软判决各有优劣,可以适用于不同的应用场合。

    • 比特翻转算法(BF)
      硬判决译码算法最早是 Gallager 在提出 LDPC 码软判决算法时的一种补充。硬判决译码的基本假设是当校验方程不成立时,说明此时必定有比特位发生了错误,而所有可能发生错误的比特中不满足校验方程个数最多的比特发生错误的概率最大。在每次迭代时均翻转发生错误概率最大的比特并用更新之后的码字重新进行译码。具体步骤如下:
    1. 设置初始迭代次数 k1及其上限kmax 。对获得的码字y=(y1,y2…yn)按照下式展开二元硬判决得到接收码字的硬判决序列Zn 。
      在这里插入图片描述
    2. k1=kmaxk_1=k_{max} ,则译码结束。不然,计算伴随式s=(s0,s1,…sm-1),sm表示第m个校验方程的值。若伴随式的值均为 0,说明码字正确,译码成功。否则说明有比特位错误。继续进行步骤3。
    3. 对每个比特,统计其不符合校验方程的数量fn (1<=n<=N)

    在这里插入图片描述
    4. 将最大fnf_n所对应的比特进行翻转,然后k=k+1,返回步骤2。

          BF 算法的理论假设是若某个比特不满足校验方程的个数最多,则此比特是最有可能出错的比特,因此,选择这个比特进行翻转。BF 算法舍弃了每个比特位的可靠度信息,单纯的对码字进行硬判决,理论最为简单,实现起来最容易,但是性能也最差。当连续两次迭代翻转函数判断同一个比特位为最易出错的比特时,BF 算法会陷入死循环,大大降低了译码性能。

    • 置信传播算法(BP)
      置信传播(Belief Propagation)译码算法是消息传递(Message Passing)算法在 LDPC译码中的运用。消息传递算法是一个算法类,最初运用于人工智能领域,人们将其运用到 LDPC 码的译码算法中,提出了LDPC 码的置信传播算法。置信传播算法是基于 Tanner 图的迭代译码算法。在迭代过程中,可靠性信息,即“消息”通过 Tanner图上的边在变量节点和校验节点中来回传递,经多次迭代后趋于稳定值,然后据此进行最佳判决。

    在介绍BP译码算法之前需要先了解一下Tanner图的概念。

          Tanner图是一种表示LDPC码的双向图,图的下面每个节点表示码字的一个比特位,称比特节点(bit nodes)。上面每个节点称为校验节点(check nodes)。校验矩阵中为1的元素,表示Tanner图中比特节点和校验节点之间存在连接边,这条边可称为两端节点的相邻边,相邻边两端的节点称为相邻节点,每个节点相邻边数称为该节点的度数。Tanner图是用来描述LDPC码结构的有效工具,同时也是迭代译码算法的参考工具。在Tanner图中校验节点和变量节点之间可以进行消息的可靠传递,首先变量节点接收初始化后验概率进行计算,将得到的可靠信息传递给相邻的校验节点;经过校验节点更新算法的计算,再将得到的运算结果传回至与其相邻的变量节点处,随后变量节点再将由校验节点得到的可靠信息以及初始化后验概率信息进行处理;将最后得到的有效信息进行判决得到译码结果。
          LDPC码的译码较为复杂,下面以置信传播算法举一个简单的例子来说明一下。
          发送码字C=(C9,C8,C7,C6,C5,C4,C3,C2,C1),其监督矩阵H是
    在这里插入图片描述
          则C必然满足线性方程组HCT=0HC^T=0,即
    在这里插入图片描述
          通过信道后接收到的码字Y=(Y0,Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8,Y9)可能包含错误,因此伴随式S=HYT0S=HY^T≠0。将此线性方程组用如图所示的Tanner图来表示。
    在这里插入图片描述
    图中的X0,X1…X9称为变量节点,代表10个比特C0,C1,C2…C9,它们是译码器待求解的未知变量。图中的成为校验节点,代表线性方程组中的每一个校验方程,连线就代表方程中此变量的系数为1。
          译码过程是在变量节点和校验节点之间传递信息。每个变量节点告诉它所连接的校验节点“我认为该变量是什么”,而校验节点告诉它所连接的变量节点“我认为该变量应该是什么”。经过反复的消息传递后,变量节点和校验节点不断改变自己对各个变量是什么的看法,最终能形成一个满足校验方程的码字,这就是译码的结果。如果经过充分的迭代后仍然不能形成一个满足校验方程的码字,则译码器宣布它无法译出这个码字,即译码失败。

    置信传播译码算法的基本流程如下:
          在迭代前,译码器接收到信道传送过来的实值序列y=(y1,y2,….yn),所有变量节点bi接收到对应的接收值yi。
          第一次迭代:每个变量节点给所有与之相邻的校验节点传送一个可靠性消息,这个可靠性消息就是信道传送过来的值;每个校验节点接收到变量节点传送过来的可靠性消息之后,进行处理,然后返回一个新的可靠性信息给与之相邻的变量节点,这样就完成了第一次迭代;此时可以进行判决,如果满足校验方程,则不需要再迭代,直接输出判决结果,否则进行第二次迭代。
          第二次迭代:每个变量节点处理第一次迭代完成时校验节点传送过来的可靠性消息,处理完成后新的消息发送给校验节点,同理,校验节点处理完后返回给变量节点,这样就完成了第二次迭代。完成后同样进行判决,如果满足校验方程则结束译码,否则如此反复多次迭代,每次都进行判决,直到达到设定的最大迭代次数,译码失败。在每次迭代过程中,无论是变量节点传送给校验节点的信息或者校验节点传送给变量节点的信息,都不应该包括前次迭代中接收方发送给发送方的信息,这样是为了保证发送的信息与接收节点已得到的信息相互对立。
          假设在 AWGN 信道中,信道编码后的码字C=(c1,c2,…,cn)通过调制映射为调制序列X=(x1,x2…,xn),然后经信道传输,接收的序列为y=(y1,y2…,yn)。
    为后面章节的推导方便,先介绍一引理。

    引理:

    一个独立的比特序列,其长度为m,假设第i个比特为 1 的概率为pip_i,则整个序列中出现偶数个1的概率为
    在这里插入图片描述)
    出现奇数个 1 的概率为
    在这里插入图片描述
    这是信道编码领域中经常使用的一个定理,故直接使用。

    Gallager 定理:对于(n,j,k)(n, j, k)规则 LDPC 码,PilP_{il}ii个校验方程中第ll校特为1的概率,则
    在这里插入图片描述
    其中:
    Pr(xi=0{y},S)P_r(x_i=0|\{y\},S)表示在程组为SS,接收序列为yy 的条件下判断发送帧中的第i个比特为0的概率
    Pr(xi=1{y},S)P_r(x_i=1|\{y\},S)表示在程组为SS,接收序列为 yy 的条件下判断发送帧中的第i个比特为0的概率
    pip_i表示发送序列的第 i位为1的先验概率;
    M(i)M(i) 表示校验节点的集合,集合中的节点均与变量节点ii相邻;
    N(j)N( j) 表示变量节点的集合,集合中的节点均与校验节点 jj 相邻。

    由上节介绍的 BP 算法的原理及 Gallager 定理中的描述可知,变量节点ii传递给校验节点jj的可靠性信息qij(1)q_{ij} (1)就是Pr(Xj=1{y},S)Pr⁡(X_j=1|\{y\},S),于是定义
    在这里插入图片描述
    表示变量节点ii传递给校验节点jj 的外部概率信息,即在得到除校验节点jj 以外的其他所有校验比特和信道的外部信息后,判断变量节点ci=1c_i=1的概率。
    再定义
    在这里插入图片描述
    表示变量节点ii传递给校验节点 jj 的外部概率信息,即在得到除jj 以外的其他所有校验比特和信道的外部信息后,判断变量节点ci=0c_i=0的概率。
    另一方面,校验节点 jj 传递给变量节点ii 的可靠性信息应该为在给定信息位和其他信息位具有独立概率分布条件下,校验方程 jj 满足的概率。将此可靠性信息记为rjir_{ji},则
    在这里插入图片描述
    将上式代入
    在这里插入图片描述
    根据以上的描述和符号定义,概率 BP 译码算法流程可以归纳为如下几个步骤:
    (1) 初始化
    计算经信道传输后各变量节点的初始概率pi(1)p_i(1)pi(0)p_i(0)。然后对每个变量节点求传递给与其相邻的校验节点的可靠性信息
    在这里插入图片描述
    其中的上标(0)表示迭代次数。
    2) 校验节点处理过程(rij(r_{ij}的计算)
    求出第ll次迭代过程中校验节点i递给与之相邻的变量节点jj可靠性信息
    在这里插入图片描述
    其中的上标(l)(l)(l1)(l −1)均表示迭代次数。
    (3)变量节点处理过程(qijq_{ij}的计算)
    求出第ll 次迭代过程中变量节点jj 传递给与之相邻的校验节点ii的可靠性信息
    在这里插入图片描述
    其中的KijK_{ij}是校正因子,使每次计算出的qij(l)(1)+qij(l)(0)=1q^{(l)}_{ij}(1)+q^{(l)}_{ij}(0)=1
    (4)译码判决
    在本次迭代过程处理最后,重新计算各变量节点的可靠性信息
    在这里插入图片描述
    其中的 KjK_j也为校正因子,目的是使qj(l)(1)+qj(l)(0)=1q^{(l)}_{j}(1)+q^{(l)}_{j}(0)=1
    如果qj(l)(1)qj(l))(0)q^{(l)}_j (1)>q^{(l)}_j)(0),那么这一点的估计值时ci=1c_i=1,否则估计值为ci=0c_i=0。如果估计值满足奇偶校验方程,那么终止算法,否则算法继续运行,直到达到预先设置的最大迭代次数。

    • 仿真验证
    LDPC码 基于IEEE 802.16e标准
    码长 1440
    码率 1/2
    有限域 四元
    迭代次数 20
    调制方式 QPSK
    单一信噪比下仿真次数 10^5
    最小误码总数 不少于200
    信道 高斯信道

    仿真说明如下:
    下图是在高斯信道下,码字经过LDPC编码和未编码的译码结果对比图,为了保证对比的有效性,仿真中LDPC码与未编码的码字等长,同为1440,LDPC码通过BP译码算法译码,而未编码的码字通过解调硬判决译码。
    在这里插入图片描述
    仿真结果分析:从图可以看出码字经过LDPC编译码之后其抵抗噪声的能力极大加强,与未编码的码字相比,在误码率都为1e-4时,其性能提高了9.5dB左右,从而验证了LDPC码是一种性能极佳的信道纠错码。

    • 结束语

    目前LDPC码研究领域的主要工作集中在译码算法的性能分析、编码方法、码的优化算法等,经过研究人员的努力,LDPC码的研究取得很大进展,但仍有许多问题需要进一步研究:

    (1)LDPC码校验矩阵的构造,尽管在构造最优的LDPC码方面取得了一些进步,但目前还没有一套系统的办法来构造所需要的好码,特别是在码字长度有限、码率一定的条件下,构造性能优异的好码是一个非常具有挑战性的课题。

    (2)LDPC编码系统的联合优化设计,将编码技术与调制技术、均衡技术、时空编码技术、OFDM技术结合进行性能优化是当前及将来的发展方向之一。

    (3)无线衰落信道及MIMO技术下LDPC码的性能分析方法及优化设计准则。目前LDPC码字的优化设计主要在加性高斯白噪声信道下得到的,而无线衰落信道下,特别是时变信道非线性环境下码字的性能分析方法、优化设计准则和信道估计的影响也是非常关键的课题,需要进一步的研究探索。

    此外,基于LDPC码的链路自适应技术,LDPC码在集成通信网物理层、应用层联合优化系统中的应用,LDPC码在无线局域网和深空宇航中的应用,基于LDPC码的图像传输、图像数字水印系统中的应用以及寻找更适合硬件实现的LDPC码编译码方法等都是非常值得研究的课题。

    展开全文
  • LDPC编译码原理介绍

    千次阅读 2020-07-18 16:43:29
    在系统的信息传输速率小于信道容量时,LDPC编译码技术可以在较高传输速率下将有噪信道下的突发错误尽可能无限减小,从而将系统的传输容量可以无限地逼近香农容限。由于 LDPC码校验矩阵的稀疏性使得相应编码及迭代...

    引言

           LDPC编码中文全称叫做低密度奇偶校验码,是众多信道纠错编码中的一种。在系统的信息传输速率小于信道容量时,LDPC编译码技术可以在较高传输速率下将有噪信道下的突发错误尽可能无限减小,从而将系统的传输容量可以无限地逼近香农容限。由于 LDPC码校验矩阵的稀疏性使得相应编码及迭代译码算法复杂度降低,硬件实现较容易,具有很好的应用前景,在业界广受欢迎。本文将从LDPC编译码基本工作流程,校验矩阵的构造方法,硬判决译码方法,置信传播软判决译码方法等四个方面展开介绍。

    1、LDPC编译码基本工作流程

           LDPC码作为线性分组码中的一种,其发送码字是由信息码元和监督码元组成的,在接收端利用监督码元与信息码元之间的规律来进行纠错和译码,如下图所示。

            其中,发送码字是由信息码字与生成矩阵相乘得到的,生成矩阵可由校验矩阵经过变换而得来,因此,整个LDPC编码过程其实就是一个校验矩阵的构造过程,如下图所示。

     2、校验矩阵的构造方法

           (1)Gallager 随机构造法 

              Gallager 随机构造法是使用确定的固定行重和列重(每行或每列所含 1 的个数)的稀疏矩阵进行随机置换和组合来构造 LDPC 码的校验矩阵。假若要使用 Gallager 随机构造法构造 m*n维,且行重和列重分别为 w_{r}^{}w_{c}^{}的校验矩阵 H,此时行重和列重应尽可能小以保证校验矩阵的稀疏性,降低 LDPC 码编码及迭代译码复杂度。将校验矩阵 H 的行数平分成每 m/w_{c}^{}行为一块,列数为(m/w_{c}^{})*w_{r}^{}}。在第一块子矩阵的构造中只有第 i 行(i-1)*w_{r}+1列到i*w_{r}列的连续 w_{r}^{}个元素为 1,其余位置上元素取 0 即完成了校验矩阵的基础子矩阵,之后将基础子矩阵按列随机置换得到其余部分矩阵并组合成最终的校验矩阵 H。

            (2)准循环构造法

             准循环构造法使用一组循环矩阵构造 LDPC 码的校验矩阵,一般选用单位阵为准循环 LDPC(QC-LDPC)码基矩阵。将基矩阵向左循环移位形成循环置换单位子矩阵,然后各子矩阵构成最终的校验矩阵。

             得到校验矩阵后就可根据1中所提及的方法得到生成矩阵,然后生成发送码字。

    3、硬判决译码方法

           LDPC 迭代译码过程即是通过校验码元和信息码元之间的校验规律在变量节点与校验节点之间不停进行消息迭代直至找到满足 C*H^{^{T}}=0 的码字,输出 C 即为解码后的码字。 当在校验节点及变量节点之间传递的是 0,1 的硬解调信息时称作硬判决译码。

           假设我们的校验矩阵构造如下图矩阵H,其Tanner图也如下图所示。

            假设经过编码后发送的码字 C=[ 1 0 0 1 0 1 0 1],经过噪声污染接受码字为 Y=[ 1 1 0 1 0 1 0 1],整个译码过程简述如下:

            (1)变量节点向校验节点传递消息:变量节点收到信息Y后认定C1,C2,C3,C4,C5,C6,C7,C8分别为1 1 0 1 0 1 0 1,然后变量节点根据Tanner图分别将值传给与之相连的校验节点,如 C1传递给 f2和 f4“C1=1”,C2传递给 f1和 f2“C2=1”。

            (2)校验节点向变量节点传递消息:校验节点在上一轮接收到变量节点传递给它的信息,它综合信息根据校验规律对这些信息做出判断来确定C1,C2,C3,C4,C5,C6,C7,C8 的值。如要确定C2的值,就需要根据f1和f2在上一轮接收到的消息来进行判断,由f1=C2+C4+C5+C8=0及接收到的C2=1,C4=1,C5=0,C8=1,对C2做出判断就需要依据C4,C5,C8传递来的信息,然后可以确定C2=0,然后将C2=0传递给f2节点,由f2=C1+C2+C3+C6=0及接收到的C1=1,C3=0,C6=1,可知C2=0,最终根据多数意见可以取C2=0。

            (3)对新码字验证 C*H^{^{T}}=0 是否满足,若满足输出 C,上述新码字经过验证即为纠正后的码字,若不满足则重复上述迭代过程直到满足(或者达到最大迭代次数输出错误)。 

    4、置信传播软判决译码

          当校验节点及变量节点之间传递的是似然概率软解调信息时称作置信传播译码(或者软判决译码),LDPC 码译码一般用置信传播算法,算法复杂度相对较低。 软判决译码流程介绍如下图所示。

          变量定义:

           基本定理: 

           译码过程:

     5、参考文献

          [1] 周佳颖. 基于LDPC技术轨道角动量光通信的仿真研究[D]. 华中科技大学. 2015.

          [2] https://wenku.baidu.com/view/da81feb2b6360b4c2e3f5727a5e9856a57122670.html

         

    展开全文
  • 重复码编译码

    千次阅读 2013-06-04 18:15:54
    实验原理  一般的通信信道中总是不可避免的存在噪声或者干扰,因此在信息传输的过程中也就必然会造成信息的损失,或者说,信源符号在有噪信道中的传输过程中会产生失真。为了降低这种信息损失,就需要我们在信源...
  • 循环码

    万次阅读 2016-09-19 13:47:34
    循环码     循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它有许多特殊的代数性质,这些 性质有助于按所要求的纠错能力系统地构造这类码,且易于实现;同时循环码的性能也较好,具有较强的...
  • 循环码生成原理与FPGA实现

    千次阅读 2016-05-20 21:58:13
    近日,因为项目的需要,重新拾起编码理论,项目当中,发送端的信息序列添加了CRC码字,好在接收端进行CRC校验,检测接收端的信息序列是否在传输过程中出现了...CRC编码作为循环码字的一种,通常用在数据传输的检错中。
  • 编译原理编译原理简单介绍

    万次阅读 多人点赞 2017-05-07 13:27:20
    编译原理简单介绍编译原理简单介绍 什么叫编译程序 翻译程序 编译程序 翻译和编译的区别 编译的过程 词法分析 语法分析 语义分析和中间代码的产生 优化 目标代码生成 编译程序的结构 编译程序总框 表格与表格的管理 ...
  • 编译原理

    千次阅读 2018-10-19 20:09:10
     代码段:用来存放可执行文件完整的操作指令(机器)和只读数据,为了防止代码段被非法修改,代码段的特点是只读不写的。如果一个程序有多个运行实体,则这些实体共享同一个代码段。  数据段:用来存放可执行...
  • BCH(26,16)码取(31,21)循环码中的前5位信息位为0的码字作为码字,构成(21-5)维的线性子空间,它最多能够纠正t=2位错误(,其中m是GF(p^m)中的m,这里的m=5,n=31,k=21)。对于铁路在800M频段上的数据业务,它采用的生成...
  • BCH信道编译码

    千次阅读 2020-09-22 21:17:48
    本文对BCH原理进行深入分析,介绍BCH的编解码原理。重点介绍了BCH编码解码的计算方法以及BCH编码的性能分析。最后,本文采用MATLAB编写相应的BCH编解码代码进行仿真和误码率分析,并在Simulink中搭建BCH模块进行...
  • java编译原理

    千次阅读 2018-03-27 16:47:31
    4.Java编译原理1.javac是什么?(1)javac是一种编译器,能够将一种语言规范转换成另一种用语言规范,通常编译器是将便于人们理解的语言规范成机器容易理解的语言规范。(2)javac的任务就是将java源代码语言转换成jvm...
  • 编译原理书籍推荐

    千次阅读 多人点赞 2018-09-28 13:44:20
    大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学考试的必考内容。编译原理及...
  • Javac编译原理

    千次阅读 2017-02-25 17:24:17
    Javac编译原理 转载来源:http://www.cnblogs.com/wade-luffy/p/5925728.html 1概述   java源代码(符合语言规范)-->javac-->.class(二进制文件)-->jvm-->机器语言(不同平台不同种类) 如何让java的语法规则...
  • 循环码的概念以及拓展

    千次阅读 2016-11-20 22:33:53
    循环码是线性分组码的一个重要子集,是目前研究得最成熟的一类码。它有许多特殊的代数性质,这些 性质有助于按所要求的纠错能力系统地构造这类码,且易于实现;同时循环码的性能也较好,具有较强的检错 和纠错能力...
  • Java的编译原理

    万次阅读 2019-10-21 21:22:41
    语义分析与字节生成 Java中的后端编译 编译器与解释器 编译对象与触发条件 编译过程 Java的后端编译优化技术 公共子表达式消除 数组边界检查消除 方法内联 逃逸分析 参考资料 概述 java...
  • 编译原理简单介绍

    千次阅读 2014-12-19 22:24:43
    编译原理学习导论 大学课程为什么要开设编译原理呢?这门课程关注的是编译器方面的产生原理和技术问题,似乎和计算机的基础领域不沾边,可是编译原理却一直作为大学本科的必修课程,同时也成为了研究生入学...
  • 编译原理:总结

    万次阅读 多人点赞 2019-01-08 09:34:59
    类型错误(声明void f()和调用aa = f()) 逻辑:无限循环/递归调用( == → = ) 错误处理目标 清楚、准确地检测、报告错误及其发生位置 快速恢复,继续编译,以便发现后续错误 不能对正确程序的编译速度造成很大影响 ...
  • 编译原理知识点

    千次阅读 多人点赞 2019-05-16 09:15:52
    1. 编译程序(编译器):先将源程序翻译成汇编语言程序或机器语言程序(称为目标程序),然后再执行它。 2. 解释程序(解释器):按解释方式进行翻译的翻译程序称为解释程序。解释程序的主要优点是便于对源程序进行...
  • 线性码和循环码

    千次阅读 2011-11-07 20:21:02
    汉明重量:  在信道编码中,非零码元的数目称为汉明重量。 ...距(汉明距离): ... 两个等长码组之间相应位取值不同的数目称为这两个码组的汉明距离,简称距。... ×为了检测出e个错: d-min >= e + 1
  • 2,字节码编译成本地机器码(符合本地系统专属的指令) 解释执行也包括两种情况: 1,源码解释执行 2,字节码解释执行 解释和编译执行的区别是:是否产生中间本地机器码。 一、编译过程: 大部分的程序代码从开始...
  • 编译原理 期末复习

    万次阅读 多人点赞 2020-08-26 21:55:18
    编译原理 第一章 概述 1 一个典型的编译系统通常由哪些部分组成 2 编译程序前端包括……阶段?每部分的功能? 第二章 1 基本概念 2 文法的二义性 第三章 词法分析 第四章 自顶向下语法分析法 `推导` 1 文法的改写 LL...
  • 编译原理知识汇总

    千次阅读 多人点赞 2019-05-04 00:12:00
    编译原理 第一章 引言 1.从面向机器的语言到面向人类的语言 汇编指令:用符号表示的指令被称为汇编指令 汇编语言:汇编指令的集合称为汇编语言 2.语言之间的翻译 转换(也被称为预处理):高级语言之间的翻译,...
  • (7,3)循环码编码译码

    万次阅读 2011-11-22 10:30:31
    /*(7,3)循环码编译及纠检错实现*/ #include #include #include /*函数声明*/ void Begin(); void Code(); void Decoding(); /*主函数*/ main() { printf("\n (7,3)循环码的编码和译码\n "); Begin(); } /*进行...
  • for-each循环是jdk1.5引入的新的语法功能。并不是所有东西都可以使用这个循环的。可以看下Iterable接口的注释,它说明了除了数组外,其他类想要使用for-each循环必须实现这个接口。这一点表明除了数组外的for-each...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 63,228
精华内容 25,291
关键字:

循环码编译码原理