低密度奇偶校验码校验矩阵的构造方法

文档序号:7525369阅读:415来源:国知局
专利名称:低密度奇偶校验码校验矩阵的构造方法
技术领域
本发明涉及低密度奇偶校验码,具体来说是涉及一种低密度奇偶校验码校验矩阵的构造方法。

背景技术
信道编码技术是移动通信系统不可或缺的一项关键技术,而信道编码技术中的LDPC(LowDensity Parity Check,低密度奇偶校验)码则被普遍认为是一种性能优越的信道编码方法。它以逼近香浓极限的性能引起了广泛的关注,并且在第四代移动通信系统的研究中得到了应用。
LDPC码是一种比较特殊的线性分组码,特殊性就在于它的奇偶校验矩阵中1的数目远远小于0的数目,称为稀疏性,也称为低密度。LDPC码可以用生成矩阵或校验矩阵来表征。
一、LDPC码的编码过程 第一步为了方便求出生成矩阵G,从而在编码时能够方便的解出校验比特,可通过算法,如高斯消去算法,对任意一个校验矩阵H0可以线性变换为典型校验矩阵H,校验矩阵H0的列数代表码字的长度,行数代表奇偶校验位的数目。典型校验矩阵H如式1所示 H=[PT,I](1) 典型校验矩阵H可以划分为两部分,其中一部分为单位阵I,另一部分PT为P矩阵的转置矩阵。
第二步再利用该典型校验矩阵H方便的构造出如下式2所示的典型生成矩阵G G=[I,P]; (2) 利用典型校验矩阵H构造的典型生成矩阵G同样可以划分为两部分,其中一部分为一个单位阵I,另一部分即为P矩阵。
第三步在分组编码时,根据生成矩阵G的行数对信源比特u进行分组,每一个分组中包括的信源比特数为生成矩阵G的行数。每一个分组分别和生成矩阵G相乘得到编码后的输出码字,各组输出码字根据分组顺序组成输出码字序列。
其中第i组ui和生成矩阵G相乘得到的输出码字ci为 ci=uiG=[ui,uiP]    (3) 其中每一组输出码字ci中包括两部分,前一部分该组信源比特ui和典型生成矩阵G中的单位阵I相乘的结果,称为系统位;另一部分uiP为该组信源比特ui和典型生成矩阵G中的P矩阵相乘的结果,称为校验位。
下面以一个示例进一步说明,例如 校验矩阵 线性转换为典型校验矩阵 则构造出的生成矩阵 若待编码的信源比特序列m为(0,1,0,1,1,1),利用上述H4×7校验阵完成编码的过程包括如下步骤 1、根据典型生成矩阵的行数,将(0,1,0,1,1,1)分成(0,1,0)和(1,1,1)两组; 2、分别编码后两组输出码字为(0,1,0)×G3×7=(0,1,0,0,1,1,1);(1,1,1)×G3×7=(1,1,1,0,1,0,0); 3、根据分组顺序组合成输出的编码数据c为(0,1,0,0,1,1,1,1,1,1,0,1,0,0)。
二、LDPC码的二分图表示 任何一个LDPC码的校验矩阵都可以转化为一张对应的二分(Tanner)图,变量节点和校验节点是校验矩阵转化为二分图后的标识,变量节点对应于校验矩阵的列,校验节点对应于校验矩阵的行。
以校验矩阵H14×8为例,其中V和C分别标识对应的变量节点和校验节点 转化的二分图如图4所示,有8个变量节点V1,V2,...,V8,4个校验节点C1,C2,C3,C4。以方框标识校验节点,圆圈标识变量节点,连接对应行和列的交叉元素为1的校验节点和变量节点,例如V1和C1、V1和C2,这样在二分图中会形成很多循环,例如其中粗线标识的(C1,V3,C3,V7)。我们称这样一个循环为一个圈(Cycle),圈的长度为圈所包含的校验节点和变量节点的总数。以上例来说,圈长即为4。对任意一个圈来说,它所包含的校验节点和变量节点的个数总是相等的。
对校验矩阵来说,每一列中的1的个数我们称为该列的列重,校验矩阵的列和二分图中的变量节点一一对应,因此又称为该列对应的变量节点的度。以上述校验矩阵H14×8为例,每列的列重均为2,对应的每个变量节点的度也均为2。同理我们定义校验矩阵中每行的1的个数称为该行的行重,相应的也称为对应校验节点的度。上述校验矩阵H14×8中每行的行重均为4,对应的每个校验节点的度也均为2。对二分图中的任意一个长度为2n圈来说,定义如下一个近似圈的外信息度(Approximate Cycle Extrinsic Message Degree,简写为ACE)值 di表示该圈中第i个变量节点的度,CA表示圈的ACE值大小。以图4中的(C1,V3,C3,V7)构成的圈为例,变量节点V3、V7的度均为2,因此该圈的ACE值为0。
三、LDPC码的性能表现 LDPC码字对应的二分图中存在的短圈对其在置信传播(BP,Belief Propagation)算法下的迭代译码性能有较大的影响。二分图中最短圈的圈长我们称之为最小圈长(Girth)。消除短圈,增大Girth的大小有助于提升LDPC在BP算法下的译码性能。进一步研究表明,并非所有的短圈对译码性能都有较大的损害,损害较大的往往是外信息度小的圈。近似圈的外信息度(Approximate Cycle ExtrinsicMessage Degree,简写为ACE)值的大小是码字构造中同样需要考虑的一个重要方面。
已有的LDPC码校验矩阵构造,一般通过以最大化圈长或ACE分布为准则的构造方案,如PEG(Progress Edge Growth)方法按照设定的节点分布构造基础矩阵。再将基础矩阵对模板做掩膜,或者对基础矩阵中的非零点按照最大化圈长或者ACE准则做扩展,得到最终的校验矩阵。构造方案通常将圈长和ACE单独优化,特别是基础矩阵和扩展两部也是分步优化构造设计,最终得到的矩阵不能有效的均衡圈长和ACE分布。
本发明在已有的校验矩阵构造方法基础上,提出了一种新的LDPC码校验矩阵构造方法,通过一个统一的PEG构造框架,将基础矩阵构造和基础矩阵扩展有机结合起来。我们以联合优化圈长分布和ACE为目标,按照PEG的构造流程,同时确定基础矩阵中非零元素位置和取值。新构造方法能够产生任意码率,任意度分布的非规则校验矩阵,并且最大限度的消除容易产生较小维数停止集的短圈,提高码字的性能。由于基础矩阵维数较小,校验矩阵的圈长分布和ACE与基础矩阵参数有简单的线性映射关系,我们的构造方案可以方便的产生性能优异的LDPC码校验矩阵。


发明内容
技术问题本发明的目的是提供一种低密度奇偶校验码校验矩阵的构造方法,该构造方法可以用来构造一系列不同维数的LDPC码校验矩阵,然后直接或间接地利用构造生成的校验矩阵来编码产生LDPC码码字。所产生的LDPC码的码字性能优异,并且能有效的应用于硬件实现。
技术方案本发明提供的低密度奇偶校验码校验矩阵的构造方法,其特征在于,构造一个维数为M×N的低密度奇偶校验码校验矩阵的步骤包括 步骤一选择一个放大倍数Z、校验矩阵列重分布和构造约束参数R作为预设参数; 步骤二根据预设的参数构造一个mb×nb维的基础矩阵Hb,其中mb=M/Z,nb=N/Z; 步骤三将基础矩阵Hb扩展成为M×N维的校验矩阵H; 其中放大倍数Z和约束参数R均为正整数,取值范围分别为Z∈[24,1024],R∈[12,40];校验矩阵的列重分布为一组向量{d1,d2,...,dkb},kb=nb-mb,其中每个元素均为一个正整数,其取值范围为di∈[1,mb],i=1,2,...,kb。
根据预设的参数构造一个mb×nb维的基础矩阵Hb的过程,等效于给一个二分图添加边的过程;一个二分图中由两类节点组成校验节点和变量节点,将Hb用二分图的形式表示,二分图的每个校验节点对应Hb中的一行,每个变量节点对应Hb中的一列,共有mb个校验节点和nb个变量节点,按照行列序号,分别以



来表示以上节点。给Hb中的第i行、第j列的元素赋一个非-1的值等效于将基础矩阵Hb对应的二分图中的Ci和Vj连接起来。
根据预设的参数构造一个mb×nb维的基础矩阵Hb的步骤如下 步骤一初始化基础矩阵Hb; 步骤二判断变量节点序号i是否小于Hb1的列数kb,Hb1为基础矩阵左侧维数为mb×kb的子矩阵,如果i>kb,转到步骤九;否则转到步骤三; 步骤三判断边序号j是否小于变量节点Vi的度

变量节点Vi与基础矩阵Hb的第i列相对应,变量节点Vi的度

与基础矩阵Hb的第i列的列重di相等,如果将变量节点序号加1,i=i+1,转到步骤二;否则转到步骤四; 步骤四判断边序号j是否为1,如果j=1,转到步骤五;否则转到步骤六; 步骤五随机从当前二分图中连接边最少的校验节点组成的集合中选择一个校验节点,并将它和变量节点Vi连接。两者相连形成的边对应基础矩阵Hb中的一个元素,其横坐标为i,纵坐标为所选择的校验节点的序号;从集合{0,1,2,...,Z-1}随机选择一个数值并赋值给该元素,然后将边序号加1,j=j+1,转到步骤三; 步骤六对当前的二分图进行宽度优先的展开,选择一个校验节点与Vi相连接;两者相连形成的边对应基础矩阵Hb中的一个元素,其横坐标为i,纵坐标为所选择的校验节点的序号;从集合{0,1,2,...,Z-1}随机选择一个数值并赋值给该元素,然后转到步骤七; 步骤七验证与Vi相关的移位参数是否满足校验矩阵构造的约束条件,如果不符合,尝试搜索一组合适的移位参数;如果搜索到了一组合适的移位参数,将边序号加1,j=j+1,然后转到步骤三;如果没有找到一组合适的移位参数,搜索失败,转到步骤八; 步骤八判断在搜索与Vi相关的移位参数时搜索失败的次数是否超过上限,如果超过上限,转到步骤一,删除所有已添加的边,重新构造基础矩阵;否则根据在搜索与Vi相关的移位参数时搜索失败的次数的不同,选择部分变量节点,删除与它们相连的所有边,并重新设置变量节点序号,然后转到步骤七; 步骤九所有变量节点的边均已添加完毕,移位参数也已经选择完毕,能满足基础矩阵构造的要求,基础矩阵构造完成。
根据预设的参数构造一个mb×nb维的基础矩阵Hb中,初始化基础矩阵Hb包括以下步骤 步骤一将Hb中位于第i行、第j列的元素,记为Pi,j,称为一个移位参数。i和j均为整数,其取值范围为1≤i≤mb,1≤j≤nb;Pi,j是一个整数,且其取值范围为Pi,j∈{-1,0,1,2,...,Z-1},共Z+1种取值可能; 步骤二将Hb表示为两个部分,Hb2是个预置矩阵,采用双对角的形式来实现,即对Hb2中的元素赋值如下


表示取一个浮点数的整数部分,其他位置元素的值均赋值为-1; 步骤三将Hb1中所有元素初始化为-1,将变量节点序号i初始化为1,边序号j初始化为1;对每个变量节点设定一个重试计数器retry_counter一个重试次数上限retrymax、一个搜索失败次数计数器Fi,和三个搜索失败参数Fdel1、Fdel2、Fmax,retrymax、Fdel1、Fdel2、Fmax取值范围均为正整数,将retry-counter和Fi初始为0。
构造基础矩阵Hb的步骤六中,对当前的二分图进行宽度优先的展开,选择一个校验节点与Vi相连接的步骤如下 步骤一二分图从变量节点Vi开始展开,展开中按层分割所有节点,定义第l层上的节点集合为Nl,奇数层上的都为校验节点,偶数层上的都为变量节点;第0层的节点集合为N0={Vi};第1层为与Vi已有连接的j-1个校验节点,分别记为

第1层的节点集合为第2层为与第1层的节点集合中的元素已有连接的节点,记与Cn1已有连接的变量节点数为m1,分别记为Vn1,1,Vn1,2,...Vn1,m1,记与Cn2已有连接的变量节点数为m2,分别记为Vn2,1,Vn2,2,...Vn2,m2,以同样的方式得到所有与集合

中的元素相连接的节点组成的集合在这个得到的集合中删除掉上层中已有的节点,对求N2来说,即删除N0和N1中已有的节点,便可得到第2层的节点集合N2;重复以上的展开过程,如果展开到第(2L+1)层时不再有新的校验节点出现,但并不是所有校验节点都已经出现,即

且N1∪N3∪N5...∪N2L-1≠Call,Call表示所有校验节点的集合,转到步骤二;如果展开到第(2L-1)层发现所有的校验节点均已出现,即N1∪N3∪N5...∪N2L-1=Call,转到步骤四; 步骤二记Nrest=Call\(N1∪N3∪N5...∪N2L-1),Ch为Nrest中的任意一个校验节点,Enum表示当前二分图中与Ch相连的边的总数,计算Nrest中所有校验节点的Enum,转到步骤三。
步骤三从Nrest中选择出具有最小Enum的校验节点组成候选节点集合Ncandi,若Ncandi中只有一个校验节点,则选择该校验节点;否则随机从Ncandi中选择一个校验节点;记最终选择的校验节点为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束; 步骤四定义Ch为N2L-1中的任意一个校验节点来说,它和Vi之间存在一条或多条路径,路径是指通过边相连接起来的且中间无节点重复出现的通路,从步骤一可知每条路径上均包含L个变量节点,定义每条路径的圈近似外信息度值为

表示路径上的第k个变量节点的度。定义Vi和Ch之间的路径总数为Kall,每条路径均可计算得到一个PA值,定义其中最小的一个为

定义所有路径中PA值与

相等的路径总数为Kmin,定义当前二分图中与Ch相连的边的总数为Enum;计算N2L-1中的每一个校验节点的4个参数

KMin、Kall、Enum,转到步骤五; 步骤五从N2L-1中选择出具有最大

的校验节点组成候选节点集合Ncandi,如果Ncandi中仅有一个元素,记其为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束,否则转到步骤六; 步骤六从Ncandi中选择出具有最小Nmin的校验节点组成新的候选节点集合,并用其覆盖Ncandi,如果Ncandi中仅有一个元素,记其为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束,否则转到步骤七; 步骤七从Ncandi中选择出具有最小Nall的校验节点组成新的候选节点集合,并用其覆盖Ncandi,如果Ncandi中仅有一个元素,记其为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束,否则转到步骤八; 步骤八从Ncandi中选择出具有最小Enum的校验节点组成新的候选节点集合,并用其覆盖Ncandi,如果Ncandi中仅有一个元素,记其为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束,否则随机从中选择一个。记最终选择的校验节点为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束。
构造基础矩阵Hb的步骤七中,验证与Vi相关的移位参数是否满足校验矩阵构造的约束条件步骤如下 步骤一将二分图上所有包含Vi的且长度不大于10的圈都统计出来,记其中任意一个长度为2l(l≤5)的圈为 步骤二定义圈的移位参数和长度扩张系数分别为 和Clef=Z/gcd(Z,P) gcd(Z,P)是求两者的最大公约数,若P为0,定义Clef为1;圈的近似圈外信息度值为dk为圈中第k个变量节点的度;CL=2l表示圈的长度; 步骤三验证二分图上所有包含Vi的且长度不大于10的圈是否满足下式,如果全部满足,则表示与Vi相关的移位参数满足码字构造的约束条件,否则为不满足 (CL+CA)×Clef≥R 构造基础矩阵Hb的步骤七中,尝试搜索一组合适的移位参数的步骤如下 步骤一记当前二分图中与Vi相连的校验节点个数为n个,分别记为

相应的n个移位参数分别



看做一个长为n位的Z进制数,用Pnz表示;初始化retry_counter=0; 步骤二判断retry_counter大小,若retry_counter<retrymax,执行Pnz=(Pnz+1)mod Zn,retry_counter=retry_counter+1,转到步骤三;否则,执行Fi=Fi+1,尝试搜索结束; 步骤三重新验证与Vi相关的移位参数是否满足校验矩阵构造的约束条件,如果仍不满足,转到步骤二,如果满足,尝试搜索结束。
构造基础矩阵Hb的步骤八中,根据在搜索与Vi相关的移位参数时搜索失败的次数的不同,选择部分变量节点,删除与它们相连的所有边,并重新设置变量节点序号的步骤如下 步骤一判断Fi的大小,若Fi≤Fdel1,转到步骤二;若Fdel1<Fi≤Fdel2,转到步骤三;若Fdel2<Fi≤Fmax,转到步骤四; 步骤二将与Vi相连的所有边都删除,重置Fi=0,设置节点序号i=i-1; 步骤三将与Vi、Vi-1相连的所有边都删除,重置Fi=0,Fi-1=0,设置节点序号i=i-2; 步骤四将与Vi、Vi-1、Vi-2相连的所有边都删除,重置Fi=0,Fi-1=0,Fi-2=0,设置节点序号i=i-3。
构造基础矩阵Hb的步骤八中,判断在搜索与Vi相关的移位参数时搜索失败的次数是否超过上限是指判断Fi>Fmax是否成立。
基础矩阵Hb扩张为校验矩阵H的步骤如下 步骤一Hb中位于第i行、第j列的元素,Pi,j,将其用一个Z×Z的矩阵I(Pi,j)代替,I(Pi,j)是由一个Z×Z的单位矩阵的每一行都循环向右移动Pi,j个位置所得,若Pi,j=-1,则I(Pi,j)表示一个Z×Z的全零矩阵; 步骤二将产生的校验矩阵H表示成稀疏形式,具体是指仅仅给出校验矩阵中的非零元素的具体位置,即它的行索引值和列索引值。稀疏形式按行索引或按列索引。
有益效果已有的LDPC码校验矩阵构造,一般通过以最大化圈长或ACE分布为准则的构造方案,如PEG(Progress Edge Growth)方法按照设定的节点分布构造基础矩阵。再将基础矩阵对模板做掩膜,或者对基础矩阵中的非零点按照最大化圈长或者ACE准则做扩展,得到最终的校验矩阵。构造方案通常将圈长和ACE单独优化,特别是基础矩阵和扩展两部也是分步优化构造设计,最终得到的矩阵不能有效的均衡圈长和ACE分布。
本发明在已有的校验矩阵构造方法基础上,提出了一种新的LDPC码校验矩阵构造方法,通过一个统一的PEG构造框架,将基础矩阵构造和基础矩阵扩展有机结合起来。我们以联合优化圈长分布和ACE为目标,按照PEG的构造流程,同时确定基础矩阵中非零元素位置和取值。新构造方法能够产生任意码率,任意度分布的非规则校验矩阵,并且最大限度的消除容易产生较小维数停止集的短圈,提高码字的性能。由于基础矩阵维数较小,校验矩阵的圈长分布和ACE与基础矩阵参数有简单的线性映射关系,我们的构造方案可以方便的产生性能优异的LDPC码校验矩阵。



图1为本发明码字构造方法的流程示意图; 图2为本发明构造产生的码字性能仿真图; 图3为本发明码字构造中基础矩阵的预置矩阵部分; 图4为校验矩阵H14×8对应的Tanner示意图; 图5为二分图中的节点扩展示意图。

具体实施例方式 本发明提供了一种LDPC码的构造方法。下面结合流程图给出本发明的具体实现方式,并给出几个具体实施例。
如图1所示,本发明的具体实现方式包括以下几个步骤 步骤S01读取预设的码构造参数,这其中包括,所需要构造的LDPC码字的码长N、码率Rate、校验矩阵的列重分布、放大倍数Z以及约束参数R。
校验位个数由下式求得 M=N×(1-Rate)   (5) 所需要生成的校验矩阵维数为M×N,所要先构造的基础矩阵的维数是mb×nb,其中M=mb×Z,N=nb×Z。校验矩阵的列重分布可由密度进化方法获得,用来保证生成的码字有个优异的理论性能界。校验矩阵可表示成二分图的形式,条件限制R用来限制二分图中存在的各个长度不大于10的圈,均必须满足 CL+CA≥R(6) CL表示圈的长度,CA表示近似圈的外信息度大小(Approximate Cycle Extrinsic MessageDegree,简写为ACE)。合理设定一个R的大小,可以使得码字构造的时间在可接受的范围内,同时又能保证获得的LDPC码字性能优异。
步骤S02根据所读入的预设的码构造参数,构造一个mb×nb维的基础矩阵。
基础矩阵有如下特点 特点一将基础矩阵用Hb表示,Hb中位于第i行、第j列的元素,记为Pi,j,称为一个移位参数,它是一个整数,且其取值范围为Pi,j∈{-1,0,1,2,...,Z-1},共Z+1种取值可能; 特点二Hb可表示为两个部分,Hb2是个预置矩阵,采用双对角的形式,具体参照附图3所示,第一列中间的0位于第[mb/2]行,[·]表示取一个浮点数的整数部分,其他空白地方的值均为-1。Hb1由kb=nb-mb列组成,每列中共有mb个元素。
特点三可将Hb用二分图的形式表示,共有mb个校验节点和nb个变量节点,按照行列序号,分别以



来表示以上节点。若Pi,j≠-1,则对应二分图中Vi和Cj之间有连线,否则没有连线。在构造开始前,Hb1的元素全为-1,Hb2为预置矩阵,形式如图3,因此初始的二分图已经有一定量的连线。
特点四构造基础矩阵Hb实际上可以等效为给它对应的二分图上的变量节点添加边(即在变量节点和校验节点之间添加连线)的过程,一旦添加了某条连线,例如Vi和Cj之间,相当于确定Pi,j≠-1,然后再合理选择Pi,j的取值。由于Hb2是预置矩阵,因此具体构造来说就是给Hb1中的变量节点添加边的过程。Hb1中每个变量节点所能添加的边的数目即为该变量节点的度,对Vi,记它的度为
步骤S02可细分为以下若干个小的步骤进行。
步骤S021初始化Hb1,将其中的每个元素均置为-1。将变量节点序号i初始化为1,相当于从二分图中的第一个变量节点开始添加边。将当前变量节点正在添加的边的序号j初始化为1,相当于从第一条边开始添加。
步骤S022判断i<kb是否成立,kb为Hb1的列数,即判断构造是否完成。如果i>kb,程序结束,构造完成;否则跳转到S023。
步骤S023判断是否成立,即判断Vi的所有边是否都添加完毕。如果表示Vi的边都已经添加完毕,将变量节点序号加1,i=i+1,然后跳转到S022;否则跳转到S024。
步骤S024判断j=1是否成立,即判断是否是添加Vi的第一条边。如果j=1,表示当前是添加第一条边,跳转到S025,否则跳转到S026。
步骤S025将当前的二分图中连接边最少的校验节点组成一个候选子集Nc,然后随机从Nc中选择一个校验节点,记为Csurvive,并连接Vi与Csurvive,再从移位参数的值域{-1,0,1,2,...,Z-1}中随机选择一个非-1的数赋给Pi,survive。将边序号加1,j=j+1,然后跳转到S023。
步骤S026对当前的二分图进行宽度优先的展开,运用边选择算法选择最终幸存集合中的某个校验节点与Vi相连接,并随机选择一个移位参数值。
二分图宽度优先的展开形式如图5所示,从Vi开始展开,第1层为与Vi已有连接的j-1个校验节点,分别记为

以同样的方式对第1层的j-1个校验节点分别进行展开,例如对

从它展开后得到的第2层的节点为现有的与

相连接的变量节点,这里需要除掉Vi,因为这个已经在之前出现过。定义第l层上的节点集合为Nl,奇数层上的都为校验节点,偶数层上的都为变量节点。不同层上的节点不会重复,因为在展开节点时已经把出现过的节点去掉了。重复以上展开过程直到出现以下两种情况。假设展开过程到第(2L-1)层结束,用Call表示所有校验节点的集合。
情况一后面不再有新的校验节点出现,但并不是所有校验节点都已经出现,即

且N1∪N3∪N5...∪N2L-1≠Call; 情况二所有的校验节点都已经出现过,即N1∪N3∪N5...∪N2L-1=Call。
针对以上两种不同的情况,我们应用不同的边选择算法。
对情况一,给Vi添加边的选择算法如下记Nrest=Call\(N1∪N3∪N5...∪N2L-1),Ch为Nrest中的任意一个校验节点,Enum表示当前二分图中与Ch相连的边的总数。任意一个校验节点均有一个参数Enum,边选择算法就是以此为依据进行。从Nrest中选择出具有最小Enum的校验节点组成候选节点集合Ncandi,若Ncandi中只有一个校验节点,则选择该校验节点;否则随机从Ncandi中选择一个校验节点。记最终选择的校验节点为Csurvive,连接Vi与Csurvive,再从移位参数的值域{-1,0,1,2,...,Z-1}中随机选择一个非-1的数赋给Pi,survive,然后跳转到S027。
对情况二,先给出如下几个定义。如图5,对N2L-1中的任意一个校验节点来说,例如Ch,它和Vi之间存在一条或多条路径,易知每条路径上均包含L个变量节点,定义每条路径的ACE值为

表示路径上的第k个变量节点的度。定义Vi和Ch之间的路径总数为Kall,每条路径均有一个路径ACE值,定义其中最小的一个为

定义所有路径中路径ACE值与

相等的路径总数为Kmin,定义当前二分图中与Ch相连的边的总数为Enum。这样对N2L-1中的每一个校验节点来说,均有4个参数,

Kmin、Kall、Enum,边的选择算法就是基于这4个参数所得。
情况二下给Vi添加边的选择算法如下首先从N2L-1中选择出具有最大

的校验节点组成候选节点集合Ncandi;然后从Ncandi中选择出具有最小Nmin的校验节点组成新的候选节点集合,更新Ncandi;接着从Ncandi中选择出具有最小Nall的校验节点组成新的候选节点集合,更新Ncandi;最后从Ncandi中选择出具有最小Enum的校验节点组成新的候选节点集合,更新Ncandi。以上各个步骤中,若出现Ncandi中仅有一个校验节点,则选择该校验节点,并中止执行后面的节点选择以及更新Ncandi;若执行到最后一步,Ncandi中仍存在多个校验节点,则随机从中选择一个。记最终选择的校验节点为Csurvive,连接Vi与Csurvive,再从移位参数的值域{-1,0,1,2,...,Z-1}中随机选择一个非-1的数赋给Pi,survive,然后跳转到S027。
步骤S027验证与Vi相关的移位参数是否满足码字构造的要求,如果不符合,在一定的重试次数内搜索一组合适的移位参数。
假设当前二分图中与Vi相连的校验节点有n个,分别为

相应的n个移位参数分别



看做一个长为n位的Z进制数,用Pnz表示。将二分图上所有包含Vi的且长度不大于10的圈都统计出来,记其中任意一个长度为2l(l≤5)的圈为定义圈的移位参数和为 定义圈的长度扩张系数为 Clef=Z/gcd(Z,P) (9) gcd(Z,P)是求两者的最大公约数,若P为0,定义Clef为1。圈的近似圈外信息度值为 dk为圈中第k个变量节点的度。CL=2l表示圈的长度。码字构造的要求就是对基础矩阵中所有长度不大于10的圈,必须满足式(11) (CL+CA)×Clef之R。
(11) 步骤S027有两个入口步骤S026和步骤S028,两者有些小的区别。若程序是从步骤S026跳转而来,则先验证移位参数是否满足要求,若不满足再尝试改变移位参数;若程序是从步骤S028跳转而来,则先改变移位参数,然后再验证移位参数是否满足要求,若不满足再尝试改变移位参数。实际执行中,两者的区别只是程序若从步骤S028跳转而来,则先执行一次Pnz=Pnz+1mod Zn,即一定要改变一次现有的移位参数,其余的两者都相同。下面的叙述假定程序是从步骤S026跳转而来。
验证与Vi相关的移位参数是否满足码字构造的要求的过程如下依次检查所有包含Vi且长度不大于10的圈,一旦其中一个不能满足式(11),改变一次现有的移位参数,Pnz=Pnz+1mod Zn,然后再重新检查所有包含Vi且长度不大于10的圈是否都满足式(11)。同时设定一个改变次数的上限,若改变次数超过上限后,仍未找到一组移位参数能使所有包含Vi且长度不大于10的圈都满足式(11),则表示搜索合适的移位参数失败;若成功找到一组参数使所有包含Vi且长度不大于10的圈都满足式(11)则将边序号加1,j=j+1,然后跳转到S023。对所有的变量节点定义一个参数,例如对Vi,定义Fi,表示在搜索关于Vi的移位参数时搜索失败的次数,初始设置为0。若搜索移位参数失败,将它加1,Fi=Fi+1。定义移位参数搜索时最大容许的失败次数为Fmax,若Fi>Fmax,跳转到S021,码字构造重新开始,否则跳转到S028。
步骤S028定义两个参数,Fdel1、Edel2,它们的意义如下。若Fi≤Fdel1,将与Vi相连的所有边都删除,重新设置节点序号i=i-1,表示在搜索合适的与Vi相关的移位参数时比较困难,所以删除已经添加好的边,然后跳转到S027去改变一下与Vi-1相关的移位参数,之后再重新添加Vi的边,选择与Vi相关的移位参数;若Fdel1<Fi≤Fdel2,将与Vi、Vi-1相连的所有边都删除,重新设置节点序号i=i-2,意义同上,这里表示在搜索与Vi相关的移位参数时失败次数变得更多了,多删除一些已有的边,并重新添加可能有助于更好的找到合适的移位参数;;若Fdel2<Fi≤Fmax,将与Vi、Vi-1、Vi-2相连的所有边都删除,重新设置节点序号i=i-3,意义同上,这里选择删除当前及前两个变量节点相关的所有边,然后重新添加。
步骤S029所有边添加完毕,码字构造结束。
步骤S03将基础矩阵扩展成为校验矩阵。具体的扩张步骤如下 步骤一Hb中位于第i行、第j列的元素,Pi,j,将其用一个Z×Z的矩阵I(Pi,j)代替,I(Pi,j)是由一个Z×Z的单位矩阵的每一行都向右循环移动Pi,j个位置所得,若Pi,j=-1,则I(Pi,j)表示一个Z×Z的全零矩阵; 步骤二将产生的校验矩阵H表示成稀疏形式,具体是指仅仅给出校验矩阵中的非零元素的具体位置,即它的行索引值和列索引值。稀疏形式可按行索引也可按列索引。
依据本发明提出的LDPC码的构造方法,现例举一个具体实施例来详细说明本发明。
我们需要设计一个码字,码长N=648,码率Rate=1/2,放大倍数Z=27,基础矩阵中左边部分的列重分布为{12,3,3,3,12,3,3,3,12,3,3,3},约束参数R=17。校验位个数M=N×(1-Rate)=324,mb=M/Z=12,nb=N/Z=24。中间变量设定为Fdel1=5,Fdel2=10,Fmax=15。依据本发明提供的基础矩阵的构造方法,可以得到基础矩阵结果如下 4 -1 -1 19 8 -1 -1 -1 23 16 -1 -1 1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 6 0 -1 -1 6 -1 -1 8 2 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 24 -1 20 -1 24 -1 -1 -1 10 0 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1 -1 -1 3 -1 -1 -1 16 14 -1 1 3 -1 3 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1 -1 10 -1 1 -1 23 -1 5 -1 22 -1 -1 25 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 -1 19 -1 -1 -1 5 -1 -1 -1 7 -1 13 -1 0 -1 -1 -1 -1 0 0 -1 -1 -1 -1 -1 21 25 -1 -1 12 -1 25 -1 9 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -1 -1 7 -1 -1 -1 17 16 -1 -1 11 21 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 -1 20 -1 -1 15 1 -1 -1 7 26 -1 -1 7 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 -1 1 -1 15 -1 18 -1 -1 -1 8 -1 4 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 -1 16 -1 -1 12 7 -1 10 -1 19 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 0 5 1 -1 -1 4 5 -1 -1 24 -1 -1 15 1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种低密度奇偶校验码校验矩阵的构造方法,其特征在于,构造一个维数为M×N的低密度奇偶校验码校验矩阵的步骤包括
步骤一选择一个放大倍数Z、校验矩阵列重分布和构造约束参数R作为预设参数;
步骤二根据预设的参数构造一个mb×nb维的基础矩阵Hb,其中mb=M/Z,nb=N/Z;
步骤三将基础矩阵Hb扩展成为M×N维的校验矩阵H;
其中放大倍数Z和约束参数R均为正整数,取值范围分别为Z∈[24,1024],R∈[12,40];校验矩阵的列重分布为一组向量
kb=nb-mb,其中每个元素均为一个正整数,其取值范围为di∈[1,mb],i=1,2,...,kb。
2.如权利要求1所述的低密度奇偶校验码校验矩阵的构造方法,其特征在于,根据预设的参数构造一个mb×nb维的基础矩阵Hb的过程,等效于给一个二分图添加边的过程;一个二分图中由两类节点组成校验节点和变量节点,将Hb用二分图的形式表示,二分图的每个校验节点对应Hb中的一行,每个变量节点对应Hb中的一列,共有mb个校验节点和nb个变量节点,按照行列序号,分别以

来表示以上节点。给Hb中的第i行、第j列的元素赋一个非-1的值等效于将基础矩阵Hb对应的二分图中的Ci和Vj连接起来。
3.如权利要求1所述的低密度奇偶校验码校验矩阵的构造方法,其特征在于,根据预设的参数构造一个mb×nb维的基础矩阵Hb的步骤如下
步骤一初始化基础矩阵Hb;
步骤二判断变量节点序号i是否小于Hb1的列数kb,Hb1为基础矩阵左侧维数为mb×kb的子矩阵,如果i>kb,转到步骤九;否则转到步骤三;
步骤三判断边序号j是否小于变量节点Vi的度
变量节点Vi与基础矩阵Hb的第i列相对应,变量节点Vi的度
与基础矩阵Hb的第i列的列重di相等,如果
将变量节点序号加1,i=i+1,转到步骤二;否则转到步骤四;
步骤四判断边序号j是否为1,如果j=1,转到步骤五;否则转到步骤六;
步骤五随机从当前二分图中连接边最少的校验节点组成的集合中选择一个校验节点,并将它和变量节点Vi连接。两者相连形成的边对应基础矩阵Hb中的一个元素,其横坐标为i,纵坐标为所选择的校验节点的序号;从集合{0,1,2,...,Z-1}随机选择一个数值并赋值给该元素,然后将边序号加1,j=j+1,转到步骤三;
步骤六对当前的二分图进行宽度优先的展开,选择一个校验节点与Vi相连接;两者相连形成的边对应基础矩阵Hb中的一个元素,其横坐标为i,纵坐标为所选择的校验节点的序号;从集合{0,1,2,...,Z-1}随机选择一个数值并赋值给该元素,然后转到步骤七;
步骤七验证与Vi相关的移位参数是否满足校验矩阵构造的约束条件,如果不符合,尝试搜索一组合适的移位参数;如果搜索到了一组合适的移位参数,将边序号加1,j=j+1,然后转到步骤三;如果没有找到一组合适的移位参数,搜索失败,转到步骤八;
步骤八判断在搜索与Vi相关的移位参数时搜索失败的次数是否超过上限,如果超过上限,转到步骤一,删除所有已添加的边,重新构造基础矩阵;否则根据在搜索与Vi相关的移位参数时搜索失败的次数的不同,选择部分变量节点,删除与它们相连的所有边,并重新设置变量节点序号,然后转到步骤七;
步骤九所有变量节点的边均已添加完毕,移位参数也已经选择完毕,能满足基础矩阵构造的要求,基础矩阵构造完成。
4.如权利要求3所述低密度奇偶校验码校验矩阵的构造方法,其特征在于根据预设的参数构造一个mb×nb维的基础矩阵Hb中,初始化基础矩阵Hb包括以下步骤
步骤一将Hb中位于第i行、第j列的元素,记为Pi,j,称为一个移位参数。i和j均为整数,其取值范围为1≤i≤mb,1≤j≤nb;Pi,j是一个整数,且其取值范围为Pi,j∈{-1,0,1,2,...,Z-1},共Z+1种取值可能;
步骤二将Hb表示为两个部分,Hb2是个预置矩阵,采用双对角的形式来实现,即对Hb2中的元素赋值如下t=2,3,...,mb-1,
表示取一个浮点数的整数部分,其他位置元素的值均赋值为-1;
步骤三将Hb1中所有元素初始化为-1,将变量节点序号i初始化为1,边序号j初始化为1;对每个变量节点设定一个重试计数器retry_counter、一个重试次数上限retrymax、一个搜索失败次数计数器Fi,和三个搜索失败参数Fdel1、Fdel2、Fmax,retrymax、Fdel1、Fdel2、Fmax取值范围均为正整数,将retry_counter和Fi初始为0。
5.如权利要求3所述的低密度奇偶校验码校验矩阵的构造方法,其特征在于构造基础矩阵Hb的步骤六中,对当前的二分图进行宽度优先的展开,选择一个校验节点与Vi相连接的步骤如下
步骤一二分图从变量节点Vi开始展开,展开中按层分割所有节点,定义第l层上的节点集合为Nl,奇数层上的都为校验节点,偶数层上的都为变量节点;第0层的节点集合为N0={Vi};第1层为与Vi已有连接的j-1个校验节点,分别记为
第1层的节点集合为第2层为与第1层的节点集合中的元素已有连接的节点,记与Cn1已有连接的变量节点数为m1,分别记为Vn1,1,Vn1,2,...Vn1,m1,记与Cn2已有连接的变量节点数为m2,分别记为Vn2,1,Vn2,2,...Vn2,m2,以同样的方式得到所有与集合
中的元素相连接的节点组成的集合在这个得到的集合中删除掉上层中已有的节点,对求N2来说,即删除N0和N1中已有的节点,便可得到第2层的节点集合N2;重复以上的展开过程,如果展开到第(2L+1)层时不再有新的校验节点出现,但并不是所有校验节点都已经出现,即
且N1∪N3∪N5...∪N2L-1≠Call,Call表示所有校验节点的集合,转到步骤二;如果展开到第(2L-1)层发现所有的校验节点均已出现,即N1∪N3∪N5...∪N2L-1=Call,转到步骤四;
步骤二记Nrest=Call\(N1∪N3∪N5...∪N2L-1),Ch为Nrest中的任意一个校验节点,Enum表示当前二分图中与Ch相连的边的总数,计算Nrest中所有校验节点的Enum,转到步骤三。
步骤三从Nrest中选择出具有最小Enum的校验节点组成候选节点集合Ncandi,若Ncandi中只有一个校验节点,则选择该校验节点;否则随机从Ncandi中选择一个校验节点;记最终选择的校验节点为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束;
步骤四定义Ch为N2L-1中的任意一个校验节点,它和Vi之间存在一条或多条路径,路径是指通过边相连接起来的且中间无节点重复出现的通路,从步骤一可知每条路径上均包含L个变量节点,定义每条路径的圈近似外信息度值为
表示该路径上的第k个变量节点的度。定义Vi和Ch之间的路径总数为Kall,每条路径均可计算得到一个PA值,定义其中最小的一个为
定义所有路径中PA值与
相等的路径总数为Kmin,定义当前二分图中与Ch相连的边的总数为Enum;计算N2L-1中的每一个校验节点的4个参数
Kmin、Kall、Enum,转到步骤五;
步骤五从N2L-1中选择出具有最大
的校验节点组成候选节点集合Ncandi,如果Ncandi中仅有一个元素,记其为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束,否则转到步骤六;
步骤六从Ncandi中选择出具有最小Nmin的校验节点组成新的候选节点集合,并用其覆盖Ncandi,如果Ncandi中仅有一个元素,记其为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束,否则转到步骤七;
步骤七从Ncandi中选择出具有最小Nall的校验节点组成新的候选节点集合,并用其覆盖Ncandi,如果Ncandi中仅有一个元素,记其为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束,否则转到步骤八;
步骤八从Ncandj中选择出具有最小Enum的校验节点组成新的候选节点集合,并用其覆盖Ncandi,如果Ncandi中仅有一个元素,记其为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束,否则随机从中选择一个。记最终选择的校验节点为Csurvive,连接Vi与Csurvive,选择校验节点步骤结束。
6.如权利要求3所述的低密度奇偶校验码校验矩阵的构造方法,其特征在于构造基础矩阵Hb的步骤七中,验证与Vi相关的移位参数是否满足校验矩阵构造的约束条件步骤如下
步骤一将二分图上所有包含Vi的且长度不大于10的圈都统计出来,记其中任意一个长度为2l(l≤5)的圈为
步骤二定义圈的移位参数和长度扩张系数分别为
和Clef=Z/gcd(Z,P)
gcd(Z,P)是求两者的最大公约数,若P为0,定义Clef为1;圈的近似圈外信息度值为dk为圈中第k个变量节点的度;CL=2l表示圈的长度;
步骤三验证二分图上所有包含Vi的且长度不大于10的圈是否满足下式,如果全部满足,则表示与Vi相关的移位参数满足码字构造的约束条件,否则为不满足
(CL+CA)×Clef≥R
7.如权利要求3所述的低密度奇偶校验码校验矩阵的构造方法,其特征在于构造基础矩阵Hb的步骤七中,尝试搜索一组合适的移位参数的步骤如下
步骤一记当前二分图中与Vi相连的校验节点个数为n个,分别记为
相应的n个移位参数分别

看做一个长为n位的Z进制数,用Pnz表示;初始化retry_counter=0;
步骤二判断retry_counter大小,若retry_counter<retrymax,执行Pnz=(Pnz+1)mod Zn,retry_counter=retry_counter+1,转到步骤三;否则,执行Fi=Fi+1,尝试搜索结束;
步骤三重新验证与Vi相关的移位参数是否满足校验矩阵构造的约束条件,如果仍不满足,转到步骤二,如果满足,尝试搜索结束。
8.如权利要求3所述的低密度奇偶校验码校验矩阵的构造方法,其特征在于构造基础矩阵Hb的步骤八中,根据在搜索与Vi相关的移位参数时搜索失败的次数的不同,选择部分变量节点,删除与它们相连的所有边,并重新设置变量节点序号的步骤如下
步骤一判断Fi的大小,若Fi≤Fdel1,转到步骤二;若Fdel1<Fi≤Fdel2,转到步骤三;若Fdel2<Fi≤Fmax,转到步骤四;
步骤二将与Vi相连的所有边都删除,重置Fi=0,设置节点序号i=i-1;
步骤三将与Vi、Vi-1相连的所有边都删除,重置Fi=0,Fi-1=0,设置节点序号i=i-2;
步骤四将与Vi、Vi-1、Vi-2相连的所有边都删除,重置Fi=0,Fi-1=0,Fi-2=0,设置节点序号i=i-3。
9.如权利要求3所述的低密度奇偶校验码校验矩阵的构造方法,其特征在于构造基础矩阵Hb的步骤八中,判断在搜索与Vi相关的移位参数时搜索失败的次数是否超过上限是指判断Fi>Fmax是否成立。
10.如权利要求1所述的低密度奇偶校验码校验矩阵的构造方法,其特征在于,基础矩阵Hb扩张为校验矩阵H的步骤如下
步骤一Hb中位于第i行、第j列的元素,Pi,j,将其用一个Z×Z的矩阵I(Pi,j)代替,I(Pi,j)是由一个Z×Z的单位矩阵的每一行都循环向右移动Pi,j个位置所得,若Pi,j=-1,则I(-1)表示一个Z×Z的全零矩阵;
步骤二将产生的校验矩阵H表示成稀疏形式,具体是指仅仅给出校验矩阵中的非零元素的具体位置,即它的行索引值和列索引值。稀疏形式按行索引或按列索引。
全文摘要
低密度奇偶校验码校验矩阵的构造方法为,给定所需要构造的LDPC码校验矩阵的维数和列重分布,先设定一个放大倍数Z和约束参数R,其中Z和R均为正整数,取值范围分别为Z∈[24,1024],R∈[12,40];然后通过计算机搜索的方法,联合优化LDPC码校验矩阵的圈长和圈的外信息度大小,最终生成一个性能优异的LDPC码校验矩阵。本发明的构造方法是先通过联合优化的方法获得一个基础矩阵,然后通过对基础矩阵的扩展获得最终所需的校验矩阵。本发明的构造方法可以用来构造一系列不同维数的LDPC码校验矩阵,然后直接或间接地利用构造生成的校验矩阵来编码产生LDPC码码字。所产生的LDPC码的码字性能优异,并且能有效的应用于硬件实现。
文档编号H03M13/00GK101534128SQ20091003122
公开日2009年9月16日 申请日期2009年4月27日 优先权日2009年4月27日
发明者赵春明, 明 姜, 炳 林, 蒋良成 申请人:东南大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1