CN101534128A - 低密度奇偶校验码校验矩阵的构造方法 - Google Patents

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

Info

Publication number
CN101534128A
CN101534128A CN200910031226A CN200910031226A CN101534128A CN 101534128 A CN101534128 A CN 101534128A CN 200910031226 A CN200910031226 A CN 200910031226A CN 200910031226 A CN200910031226 A CN 200910031226A CN 101534128 A CN101534128 A CN 101534128A
Authority
CN
China
Prior art keywords
node
check
matrix
candi
limit
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN200910031226A
Other languages
English (en)
Inventor
赵春明
姜明
林炳
蒋良成
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Southeast University
Original Assignee
Southeast University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Southeast University filed Critical Southeast University
Priority to CN200910031226A priority Critical patent/CN101534128A/zh
Publication of CN101534128A publication Critical patent/CN101534128A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

低密度奇偶校验码校验矩阵的构造方法为,给定所需要构造的LDPC码校验矩阵的维数和列重分布,先设定一个放大倍数Z和约束参数R,其中Z和R均为正整数,取值范围分别为Z∈[24,1024],R∈[12,40];然后通过计算机搜索的方法,联合优化LDPC码校验矩阵的圈长和圈的外信息度大小,最终生成一个性能优异的LDPC码校验矩阵。本发明的构造方法是先通过联合优化的方法获得一个基础矩阵,然后通过对基础矩阵的扩展获得最终所需的校验矩阵。本发明的构造方法可以用来构造一系列不同维数的LDPC码校验矩阵,然后直接或间接地利用构造生成的校验矩阵来编码产生LDPC码码字。所产生的LDPC码的码字性能优异,并且能有效的应用于硬件实现。

Description

低密度奇偶校验码校验矩阵的构造方法
技术领域
本发明涉及低密度奇偶校验码,具体来说是涉及一种低密度奇偶校验码校验矩阵的构造方法。
背景技术
信道编码技术是移动通信系统不可或缺的一项关键技术,而信道编码技术中的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矩阵相乘的结果,称为校验位。
下面以一个示例进一步说明,例如:
校验矩阵 H 0 4 × 7 = 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 1 0 0 0 1 0 0 1 1 0 0 0 1 ;
线性转换为典型校验矩阵 H 4 × 7 = 1 0 1 1 1 1 1 1 0 0 1 1 , 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 = [ P T , I ] ;
则构造出的生成矩阵 G 3 × 7 = [ I , P ] = 1 0 0 0 1 0 0 0 1 , 1 1 1 0 0 1 1 1 1 1 0 1 ;
若待编码的信源比特序列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)图,变量节点和校验节点是校验矩阵转化为二分图后的标识,变量节点对应于校验矩阵的列,校验节点对应于校验矩阵的行。
以校验矩阵H1 4×8为例,其中V和C分别标识对应的变量节点和校验节点:
H 1 4 × 8 = V 1 V 2 V 3 V 4 V 5 V 6 V 7 V 8 1 0 1 0 1 0 1 0 C 1 1 0 0 1 0 1 0 1 C 2 0 1 1 0 0 1 1 0 C 3 0 1 0 1 1 0 0 1 C 4
转化的二分图如图4所示,有8个变量节点V1,V2,...,V8,4个校验节点C1,C2,C3,C4。以方框标识校验节点,圆圈标识变量节点,连接对应行和列的交叉元素为1的校验节点和变量节点,例如V1和C1、V1和C2,这样在二分图中会形成很多循环,例如其中粗线标识的(C1,V3,C3,V7)。我们称这样一个循环为一个圈(Cycle),圈的长度为圈所包含的校验节点和变量节点的总数。以上例来说,圈长即为4。对任意一个圈来说,它所包含的校验节点和变量节点的个数总是相等的。
对校验矩阵来说,每一列中的1的个数我们称为该列的列重,校验矩阵的列和二分图中的变量节点一一对应,因此又称为该列对应的变量节点的度。以上述校验矩阵H1 4×8为例,每列的列重均为2,对应的每个变量节点的度也均为2。同理我们定义校验矩阵中每行的1的个数称为该行的行重,相应的也称为对应校验节点的度。上述校验矩阵H1 4×8中每行的行重均为4,对应的每个校验节点的度也均为2。对二分图中的任意一个长度为2n圈来说,定义如下一个近似圈的外信息度(Approximate Cycle Extrinsic Message Degree,简写为ACE)值:
C A = Σ i = 1 n ( d i - 2 ) - - - ( 4 )
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个变量节点,按照行列序号,分别以
Figure A200910031226D00101
Figure A200910031226D00102
来表示以上节点。给Hb中的第i行、第j列的元素赋一个非-1的值等效于将基础矩阵Hb对应的二分图中的Ci和Vj连接起来。
根据预设的参数构造一个mb×nb维的基础矩阵Hb的步骤如下:
步骤一:初始化基础矩阵Hb
步骤二:判断变量节点序号i是否小于Hb1的列数kb,Hb1为基础矩阵左侧维数为mb×kb的子矩阵,如果i>kb,转到步骤九;否则转到步骤三;
步骤三:判断边序号j是否小于变量节点Vi的度
Figure A200910031226D00103
变量节点Vi与基础矩阵Hb的第i列相对应,变量节点Vi的度
Figure A200910031226D00104
与基础矩阵Hb的第i列的列重di相等,如果 j > d V i , 将变量节点序号加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表示为两个部分, H b = [ ( H b 1 ) m b × k b | ( H b 2 ) m b × m b ] , Hb2是个预置矩阵,采用双对角的形式来实现,即对Hb2中的元素赋值如下: P t , k b + t = P t , k b + t + 1 = 0 , t = 2,3 , . . . , m b - 1 , P 1 , k b + 2 = P m b , n b = 0 , P 1 , k b + 1 = P m b , k b + 1 = 1 ,
Figure A200910031226D00116
表示取一个浮点数的整数部分,其他位置元素的值均赋值为-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个校验节点,分别记为
Figure A200910031226D00117
第1层的节点集合为 N 1 = { C n 1 , C n 2 , . . . C n j - 1 } ; 第2层为与第1层的节点集合中的元素已有连接的节点,记与Cn1已有连接的变量节点数为m1,分别记为Vn1,1,Vn1,2,...Vn1,m1,记与Cn2已有连接的变量节点数为m2,分别记为Vn2,1,Vn2,2,...Vn2,m2,以同样的方式得到所有与集合中的元素相连接的节点组成的集合 { V n 1,1 , V n 1,2 , . . . V n 1 , m 1 , V n 2,1 , V n 2,2 , . . . V n 2 , m 2 , . . . , V n j - 1 , 1 , V n j - 1 , 2 , . . . V n j - 1 , m j - 1 } , 在这个得到的集合中删除掉上层中已有的节点,对求N2来说,即删除N0和N1中已有的节点,便可得到第2层的节点集合N2;重复以上的展开过程,如果展开到第(2L+1)层时不再有新的校验节点出现,但并不是所有校验节点都已经出现,即
Figure A200910031226D00121
且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个变量节点,定义每条路径的圈近似外信息度值为:
P A = Σ k = 1 L ( d V u k - 2 )
表示路径上的第k个变量节点的度。定义Vi和Ch之间的路径总数为Kall,每条路径均可计算得到一个PA值,定义其中最小的一个为
Figure A200910031226D00124
定义所有路径中PA值与相等的路径总数为Kmin,定义当前二分图中与Ch相连的边的总数为Enum;计算N2L-1中的每一个校验节点的4个参数:
Figure A200910031226D00126
KMin、Kall、Enum,转到步骤五;
步骤五:从N2L-1中选择出具有最大
Figure A200910031226D00127
的校验节点组成候选节点集合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)的圈为 ( V j 0 , C j 0 , V j 1 , C j 1 , . . . , V j l - 1 , C j l - 1 , V j 0 ) ;
步骤二:定义圈的移位参数和长度扩张系数分别为
P = P c j 0 , v j 0 - P c j 0 , v j 1 + P c j 1 , v j 1 - P c j 2 , v j 1 + . . . + P c j n - 1 , v j n - 1 - P c j n - 1 , v j 0 mod Z 和Clef=Z/gcd(Z,P)
gcd(Z,P)是求两者的最大公约数,若P为0,定义Clef为1;圈的近似圈外信息度值为 C A = Σ k = 1 l ( d k - 2 ) , dk为圈中第k个变量节点的度;CL=2l表示圈的长度;
步骤三:验证二分图上所有包含Vi的且长度不大于10的圈是否满足下式,如果全部满足,则表示与Vi相关的移位参数满足码字构造的约束条件,否则为不满足
(CL+CA)×Clef≥R
构造基础矩阵Hb的步骤七中,尝试搜索一组合适的移位参数的步骤如下:
步骤一:记当前二分图中与Vi相连的校验节点个数为n个,分别记为相应的n个移位参数分别
Figure A200910031226D00135
Figure A200910031226D00136
看做一个长为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为校验矩阵H1 4×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可表示为两个部分, H b = [ ( H b 1 ) m b &times; k b | ( H b 2 ) m b &times; m b ] , 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,记它的度为
Figure A200910031226D00154
步骤S02可细分为以下若干个小的步骤进行。
步骤S021:初始化Hb1,将其中的每个元素均置为-1。将变量节点序号i初始化为1,相当于从二分图中的第一个变量节点开始添加边。将当前变量节点正在添加的边的序号j初始化为1,相当于从第一条边开始添加。
步骤S022:判断i<kb是否成立,kb为Hb1的列数,即判断构造是否完成。如果i>kb,程序结束,构造完成;否则跳转到S023。
步骤S023:判断 j < d V i 是否成立,即判断Vi的所有边是否都添加完毕。如果 j > d V i , 表示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个校验节点,分别记为
Figure A200910031226D00163
以同样的方式对第1层的j-1个校验节点分别进行展开,例如对
Figure A200910031226D00164
从它展开后得到的第2层的节点为现有的与相连接的变量节点,这里需要除掉Vi,因为这个已经在之前出现过。定义第l层上的节点集合为Nl,奇数层上的都为校验节点,偶数层上的都为变量节点。不同层上的节点不会重复,因为在展开节点时已经把出现过的节点去掉了。重复以上展开过程直到出现以下两种情况。假设展开过程到第(2L-1)层结束,用Call表示所有校验节点的集合。
情况一:后面不再有新的校验节点出现,但并不是所有校验节点都已经出现,即
Figure A200910031226D00166
且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值为:
P A = &Sigma; k = 1 L ( d V k - 2 ) - - - ( 7 )
表示路径上的第k个变量节点的度。定义Vi和Ch之间的路径总数为Kall,每条路径均有一个路径ACE值,定义其中最小的一个为定义所有路径中路径ACE值与
Figure A200910031226D00174
相等的路径总数为Kmin,定义当前二分图中与Ch相连的边的总数为Enum。这样对N2L-1中的每一个校验节点来说,均有4个参数,
Figure A200910031226D00175
Kmin、Kall、Enum,边的选择算法就是基于这4个参数所得。
情况二下给Vi添加边的选择算法如下:首先从N2L-1中选择出具有最大
Figure A200910031226D00176
的校验节点组成候选节点集合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个移位参数分别
Figure A200910031226D00178
Figure A200910031226D00179
看做一个长为n位的Z进制数,用Pnz表示。将二分图上所有包含Vi的且长度不大于10的圈都统计出来,记其中任意一个长度为2l(l≤5)的圈为 ( V j 0 , C j 0 , V j 1 , C j 1 , . . . , V j l - 1 , C j l - 1 , V j 0 ) , 定义圈的移位参数和为
P = P c j 0 , v j 0 - P c j 0 , v j 1 + P c j 1 , v j 1 - P c j 2 , v j 1 + . . . + P c j n - 1 , v j n - 1 - P c j n - 1 , v j 0 mod Z - - - ( 8 )
定义圈的长度扩张系数为
Clef=Z/gcd(Z,P)      (9)
gcd(Z,P)是求两者的最大公约数,若P为0,定义Clef为1。圈的近似圈外信息度值为
C A = &Sigma; k = 1 l ( d k - 2 ) - - - ( 10 )
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
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (10)

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个变量节点,按照行列序号,分别以
Figure A200910031226C00022
Figure A200910031226C00023
来表示以上节点。给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的度
Figure A200910031226C00025
与基础矩阵Hb的第i列的列重di相等,如果
Figure A200910031226C00026
将变量节点序号加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表示为两个部分, H b = [ ( H b 1 ) m b &times; k b | ( H b 2 ) m b &times; m b ] , Hb2是个预置矩阵,采用双对角的形式来实现,即对Hb2中的元素赋值如下: P t , k b + t = P t , k b + t + 1 = 0 , t=2,3,...,mb-1, P 1 , k b + 2 = P m b , n b = 0 , P 1 , k b + 1 = P m b , k b + 1 = 1 ,
Figure A200910031226C00036
表示取一个浮点数的整数部分,其他位置元素的值均赋值为-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个校验节点,分别记为
Figure A200910031226C00037
第1层的节点集合为 N 1 = { C n 1 , C n 2 , . . . C n j - 1 } ; 第2层为与第1层的节点集合中的元素已有连接的节点,记与Cn1已有连接的变量节点数为m1,分别记为Vn1,1,Vn1,2,...Vn1,m1,记与Cn2已有连接的变量节点数为m2,分别记为Vn2,1,Vn2,2,...Vn2,m2,以同样的方式得到所有与集合
Figure A200910031226C00042
中的元素相连接的节点组成的集合 { V n 1,1 , V n 1,2 , . . . V n 1 , m 1 , V n 2,1 , V n 2,2 , . . . V n 2 , m 2 , . . . , V n j - 1 , 1 , V n j - 1 , 2 , . . . V n j - 1 , m j - 1 } , 在这个得到的集合中删除掉上层中已有的节点,对求N2来说,即删除N0和N1中已有的节点,便可得到第2层的节点集合N2;重复以上的展开过程,如果展开到第(2L+1)层时不再有新的校验节点出现,但并不是所有校验节点都已经出现,即
Figure A200910031226C00044
且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个变量节点,定义每条路径的圈近似外信息度值为:
P A = &Sigma; k = 1 L ( d V u k - 2 )
Figure A200910031226C00046
表示该路径上的第k个变量节点的度。定义Vi和Ch之间的路径总数为Kall,每条路径均可计算得到一个PA值,定义其中最小的一个为
Figure A200910031226C00047
定义所有路径中PA值与
Figure A200910031226C00048
相等的路径总数为Kmin,定义当前二分图中与Ch相连的边的总数为Enum;计算N2L-1中的每一个校验节点的4个参数:
Figure A200910031226C00049
Kmin、Kall、Enum,转到步骤五;
步骤五:从N2L-1中选择出具有最大
Figure A200910031226C000410
的校验节点组成候选节点集合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)的圈为 ( V j 0 , C j 0 , V j 1 , C j 1 , . . . , V j l - 1 , C j l - 1 , V j 0 ) ;
步骤二:定义圈的移位参数和长度扩张系数分别为
P = P c j 0 , v j 0 - P c j 0 , v j 1 + P c j 1 , v j 1 - P c j 2 , v j 1 + &CenterDot; &CenterDot; &CenterDot; + P c j n - 1 , v j n - 1 - P c j 0 - 1 , v j 0 mod Z 和Clef=Z/gcd(Z,P)
gcd(Z,P)是求两者的最大公约数,若P为0,定义Clef为1;圈的近似圈外信息度值为 C A = &Sigma; k = 1 l ( d k - 2 ) , dk为圈中第k个变量节点的度;CL=2l表示圈的长度;
步骤三:验证二分图上所有包含Vi的且长度不大于10的圈是否满足下式,如果全部满足,则表示与Vi相关的移位参数满足码字构造的约束条件,否则为不满足
(CL+CA)×Clef≥R
7.如权利要求3所述的低密度奇偶校验码校验矩阵的构造方法,其特征在于构造基础矩阵Hb的步骤七中,尝试搜索一组合适的移位参数的步骤如下:
步骤一:记当前二分图中与Vi相连的校验节点个数为n个,分别记为
Figure A200910031226C00054
相应的n个移位参数分别
Figure A200910031226C00055
Figure A200910031226C00056
看做一个长为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表示成稀疏形式,具体是指仅仅给出校验矩阵中的非零元素的具体位置,即它的行索引值和列索引值。稀疏形式按行索引或按列索引。
CN200910031226A 2009-04-27 2009-04-27 低密度奇偶校验码校验矩阵的构造方法 Pending CN101534128A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN200910031226A CN101534128A (zh) 2009-04-27 2009-04-27 低密度奇偶校验码校验矩阵的构造方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN200910031226A CN101534128A (zh) 2009-04-27 2009-04-27 低密度奇偶校验码校验矩阵的构造方法

Publications (1)

Publication Number Publication Date
CN101534128A true CN101534128A (zh) 2009-09-16

Family

ID=41104549

Family Applications (1)

Application Number Title Priority Date Filing Date
CN200910031226A Pending CN101534128A (zh) 2009-04-27 2009-04-27 低密度奇偶校验码校验矩阵的构造方法

Country Status (1)

Country Link
CN (1) CN101534128A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571103A (zh) * 2010-12-21 2012-07-11 华为技术有限公司 矩阵构造方法及设备、编解码方法及设备
CN104821831A (zh) * 2015-03-24 2015-08-05 东南大学 一种适用于高码率qc-ldpc码的双循环构造方法
WO2017080249A1 (zh) * 2015-11-11 2017-05-18 华为技术有限公司 生成用于在信道中传输的低密度奇偶校验码的方法及设备
CN107294649A (zh) * 2016-04-11 2017-10-24 中兴通讯股份有限公司 编码方法及装置,译码方法及装置
CN107359881A (zh) * 2017-07-10 2017-11-17 重庆邮电大学 一种利用大衍数列构造多码率原模图qc‑ldpc码的方法
CN108234064A (zh) * 2016-12-09 2018-06-29 中兴通讯股份有限公司 准循环ldpc码数据处理装置及处理方法
WO2018126914A1 (zh) * 2017-01-09 2018-07-12 中兴通讯股份有限公司 准循环低密度奇偶校验码的编码方法及装置、存储介质
CN109120374A (zh) * 2017-06-26 2019-01-01 中兴通讯股份有限公司 准循环低密度奇偶校验编码设计方法及装置
CN109217879A (zh) * 2018-08-06 2019-01-15 中国科学院计算技术研究所 一种多速率低密度校验码的构造方法和装置
CN110719108A (zh) * 2019-08-26 2020-01-21 北京大学 基于环的连通性的qc-ldpc码字扩展方法及系统

Cited By (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102571103B (zh) * 2010-12-21 2015-01-21 华为技术有限公司 矩阵构造方法及设备、编解码方法及设备
CN102571103A (zh) * 2010-12-21 2012-07-11 华为技术有限公司 矩阵构造方法及设备、编解码方法及设备
CN104821831B (zh) * 2015-03-24 2019-03-05 东南大学 一种适用于高码率qc-ldpc码的双循环构造方法
CN104821831A (zh) * 2015-03-24 2015-08-05 东南大学 一种适用于高码率qc-ldpc码的双循环构造方法
WO2017080249A1 (zh) * 2015-11-11 2017-05-18 华为技术有限公司 生成用于在信道中传输的低密度奇偶校验码的方法及设备
CN107294649A (zh) * 2016-04-11 2017-10-24 中兴通讯股份有限公司 编码方法及装置,译码方法及装置
CN108234064B (zh) * 2016-12-09 2022-05-03 中兴通讯股份有限公司 准循环ldpc码数据处理装置及处理方法
CN108234064A (zh) * 2016-12-09 2018-06-29 中兴通讯股份有限公司 准循环ldpc码数据处理装置及处理方法
WO2018126914A1 (zh) * 2017-01-09 2018-07-12 中兴通讯股份有限公司 准循环低密度奇偶校验码的编码方法及装置、存储介质
CN109120374A (zh) * 2017-06-26 2019-01-01 中兴通讯股份有限公司 准循环低密度奇偶校验编码设计方法及装置
CN109120374B (zh) * 2017-06-26 2022-11-18 中兴通讯股份有限公司 准循环低密度奇偶校验编码设计方法及装置
US11626888B2 (en) 2017-06-26 2023-04-11 Zte Corporation Method and apparatus for quasi-cyclic low-density parity-check
CN107359881A (zh) * 2017-07-10 2017-11-17 重庆邮电大学 一种利用大衍数列构造多码率原模图qc‑ldpc码的方法
CN109217879A (zh) * 2018-08-06 2019-01-15 中国科学院计算技术研究所 一种多速率低密度校验码的构造方法和装置
CN110719108A (zh) * 2019-08-26 2020-01-21 北京大学 基于环的连通性的qc-ldpc码字扩展方法及系统
CN110719108B (zh) * 2019-08-26 2021-08-20 北京大学 基于环的连通性的qc-ldpc码字扩展方法及系统

Similar Documents

Publication Publication Date Title
CN101534128A (zh) 低密度奇偶校验码校验矩阵的构造方法
CN102394659B (zh) Ldpc码校验矩阵构造方法及对应矩阵乘法运算装置
US8433972B2 (en) Systems and methods for constructing the base matrix of quasi-cyclic low-density parity-check codes
CN103152056B (zh) 一种基于原模图的准循环ldpc码构造方法及装置
US8347170B2 (en) Method and apparatus for performing decoding using LDPC code
CN110114978B (zh) 高效可解码qc-ldpc码
EP2503698B1 (en) Error correction method and device, and communication system using the same
CN101032082B (zh) 编码和解码数据的方法和设备
CN106685586B (zh) 生成用于在信道中传输的低密度奇偶校验码的方法及设备
CN101741396B (zh) 可变码长ldpc码编码或译码的方法与装置及编码器和译码器
CN104821831B (zh) 一种适用于高码率qc-ldpc码的双循环构造方法
EP2567462B1 (en) Method and apparatus for channel coding and decoding in a communication system using a low-density parity-check code
KR20070058480A (ko) 저밀도 패리티 체크 행렬을 이용한 부호화 및 복호화 방법
CN101753149A (zh) 一种准循环低密度奇偶校验码的构造方法
CN101764620B (zh) 用于使用信道代码解码的装置和方法
CN101373976A (zh) 生成ldpc校验矩阵的方法和设备
CN101072035A (zh) 一种算法复杂度低的准循环ldpc码的构造方法
WO2006106841A1 (ja) 誤り訂正符号化装置
CN101252360A (zh) 一种高围长低码率多进制ldpc码的结构化构造方法
CN110739976A (zh) 一种无短环qc-ldpc码的快速生成方法
EP1782540A2 (en) Method of encoding and decoding using low density parity check code
EP1775839B1 (en) Method for constructing a parity check matrix of a low density parity check code
CN107947802B (zh) 速率兼容低密度奇偶校验码编译码的方法及编译码器
CN101577554A (zh) 多码长多码率的低密度奇偶校验码的编码方法
CN112367088B (zh) 一种基于索引矩阵的编码方法及装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C02 Deemed withdrawal of patent application after publication (patent law 2001)
WD01 Invention patent application deemed withdrawn after publication

Open date: 20090916