发明内容
(一)要解决的技术问题
本发明要解决的技术问题是:最大化QC-LDPC码的最小环周值,从而提高QC-LDPC码的性能,包括可以更快的收敛以及具有更低的错误地板。
(二)技术方案
为实现上述目的,本发明提供了一种QC-LDPC码构建方法,该方法包括步骤:
S1.初始化基础矩阵的所有非零单元对应的扩展矩阵的行位移值为零;
S2.按照从左至右的顺序,遍历所述基础矩阵的所有列,针对当前列的每个非零单元,通过环形搜索算法找出包含该非零单元的所有环形;
S3.遍历所有环形,针对当前环形,依次设置该环形所包含的每一个非零单元对应的行位移值,使其满足设定的约束条件;
S4.选定每个所述环形中具有最小行位移值的非零单元,并保留其对应的最小行位移值的改变,所述环形中其他的非零单元的行位移值恢复原值;
S5.遍历所有列后,确定所有非零单元的行位移值,并根据所有非零单元的位置及其行位移值构建QC-LDPC码矩阵。
其中,所述设定的约束条件为:使得当前环形的所有水平或垂直方向的行位移增加值总和不等于k×L,其中,k=0,±1,±2,...,±g,g为目标最小环周值的一半,L为扩展矩阵的大小。
其中,所述环形搜索算法为:从基础矩阵中位于坐标(i,j)的非零单元开始,将其作为父单元,找到其位于基础矩阵右边部分且与其在同一行的非零单元,作为所述父单元的第一代子孙;从第一代子孙开始,找到与其位于同一列的非零单元,称为所述父单元的第二代子孙;依此找到所述父单元的第n代子孙,若所述第n代子孙与所述父单元在同一列,则找到长度为n+1的环形。
其中,在步骤S3中,若设置的行位移值不能使所在环形的所有水平或垂直方向的行位移增加值总和不等于k×L,则重新设置行位移值为所述行位移值加1。
其中,若行位移值超过L-1,则根据当前所有非零单元对应的行位移值构建QC-LDPC码,或者重新设定目标最小环周值并返回执行步骤S1。
(三)有益效果
本发明的方法利用环形消除算法生成的QC-LDPC矩阵具有较大的最小环周,因而具有收敛迅速以及低错误地板等优点,此外,由于本发明方法构造的QC-LDPC码还具有高纠错增益,适合硬件实现,可以适用于深衰落的信道传输等比较恶劣无线传输环境。
具体实施方式
本发明提出的QC-LDPC码构建方法,结合附图和实施例详细说明如下。
QC-LDPC是由基础矩阵里面的每一个非零单元扩展成为一个循环矩阵而成,本发明的方法旨在确定每一个循环矩阵的行位移值,从而最大化QC-LDPC码的最小环周。为了说明本发明的实现方案,从一个Mb×Nb(Mb=6,Nb=12)的基本矩阵开始,该矩阵包含环周为4、6、8的环形,如图1所示。如果采用前面描述的基本矩阵扩展算法(即为了构建一个M×N的QC-LDPC矩阵,先构建一个小的基本矩阵Mb×Nb,在小矩阵中间的每一个非零单元(x,y)最后被扩展成一个行循环位移的单位矩阵L×L(M=Mb×L,N=Nb×L)),其中的每个非零单元“1”被扩展成为L×L(L=453)的行循环位移的单位矩阵,这样最终得到的矩阵M×N为2718×5436。
为提高生成矩阵M×N的最小环周,必须研究基本矩阵中的环形与生成矩阵中环形的关系。可以看到,在从基本矩阵向生成矩阵的扩展过程中,在基础矩阵中环周为2g的环将在生成矩阵中生成L个环周为2g的矩阵。例如一个环周为4的环在扩展成为L=5的生成矩阵的过程中,会生成5个环周为4的环形,如图2所示。
考虑在基础矩阵中位于同一行的两个“1”,其坐标分别为(i,j)和(i,m),在矩阵扩展过程中,每个“1”都将被扩展成为行循环位移的单位矩阵Hi,j和Hi,m,每个位移单位矩阵的行位移值为Pi,j和Pi,m。将ΔPi,j->im=Pi,j-Pi,m定义为从Hi,j到Hi,m行位移的增加值。同时,同在一行的“1”扩展后的行位移增加值ΔPi,j->im定义为水平方向的行位移增加值,同在一列的“1”扩展后的行位移增加值被定义为垂直方向的行位移增加值。
在基础矩阵包含的环形中,定义∑H(ΔP)为所有水平方向的行位移增加值的总和,∑v(ΔP)为所有垂直方向的行位移增加值总和。在图3中,左图的∑v(ΔP)=(3)+(-3)=0,右图的∑v(ΔP)=(-1)+(-1)+(2)=0。计算结果指示出下面的定理。
定理:在基础矩阵中任何环周为2g的环形在扩展过程中将导致L个环周为2g的环形,其充分和必要条件是基础矩阵的所有水平(垂直)方向的行位置增加值总和等于k×L,这里k=0,±1,±2...±g。
基于如上定理,本发明的方法通过遍历基础矩阵的每一列,针对当前列的每一个非零单元“1”,找到包含这个“1”的所有环形,通过设置环形中“1”对应的扩展行循环位移值P,从而使得存在于基础矩阵的环形在生成矩阵中不再出现。具体地,首先将每一个“1”的行位移值初始化为0,遍历整个基础矩阵每一列中的每个“1”,找到包含该“1”的所有环形,通过设置每一个扩展单位阵的行位移值P,从而将这些基础阵中具有低于目标最小环周的环周的小环形在扩展阵中打破,从而使这些小环周的环形在生成矩阵中不再出现,直至P值达到其最大的上限值L-1。整个方法的结果可保证扩展生成的QC-LDPC矩阵有着最大的最小环周值。
如图4所示,依照本发明一种实施方式的QC-LDPC码构建方法具体实施步骤如下:
S1.初始化基础矩阵的所有非零单元“1”对应的扩展单位阵行位移值P为0,由于每个基础矩阵的“1”可能被包含在多个环形之中,每一个环形将根据上述定理生成一个环形约束,这样每个“1”将生成一个约束列表,列表中的每个约束对应一个环形。
S2.按照从左至右的顺序,遍历基础矩阵的所有列,针对当前列的每一个“1”,通过环形搜索算法找出包含该“1”的所有环形,从而可以再后续的步骤中通过设置这个“1”对应的单位阵行位移值P,达到在扩展矩阵中打破环形的目的。
其中,环形搜索算法可以通过图5所示的示例进行描述:从基础矩阵中位于坐标(i,j)的非零单元开始,将其作为父单元,如图中的坐标(1,1)的“1”,把它表示为H(1,1),开始找到其位于基础矩阵右边部分且与其在同一行的非零单元,作为父单元的第一代子孙,如图中的H(1,2);从第一代子孙开始,找到与其位于同一列的非零单元,称为父单元的第二代子孙,如图中的H(3,2);接着往下寻找并且找到H(3,4),H(2,4),以及H(2,1),直至找到父单元的第n代子孙,若第n代子孙与所述父单元在同一列,则找到长度为n+1的环形。如图中所示,如果第三代子孙和H(1,1)本身处于同一列,一个长度为4的环形将被找到,如果第五代子孙和H(1,1)处于同一列,一个长度为6的环形将会被找到。基于这个环形搜索算法,所有基础矩阵右边部分所有包含H(1,1)的环形都将被找到。
S3.找到相关的环形之后,遍历所有环形,当前环形路径上包含的所有“1”将依次被检查,依次设置当前环形包含的每一个非零单元对应的行位移值,因为每个“1”都包含一个约束列表,如果其对应的行位移值P不能满足约束列表中的所有设定的约束条件,即使得包含该“1”的当前环形的所有水平或垂直方向的行位移增加值总和不等于k×L,其中,k=0,±1,±2,...,±g,则把这个P值依次加一直到所有约束条件都被满足。
S4.检查本环形路径上所有“1”对应的P值,选定每个环形中具有最小行位移值的非零单元,并保留其对应的行位移值得改变,该环形中其他的非零单元的行位移值恢复至原值,直至遍历每个环形后确定所有非零单元的行位移值;
S5.最后,把所有列遍历完之后,根据所有非零单元的位置及其确定的行位移值构建QC-LDPC码矩阵。
本发明的方法可保证通过改变P值在生成矩阵中打破基础矩阵中对应的环周小于目标最小环周的环形,但是P值又不会增长太快。不过,在环形搜索算法的搜索过程中,所找到的与包含当前“1”的环形的数目也将随着设置的目标最小环周的变大而呈指数增长,但是每一个扩展行循环位移单元阵的P值是有最大值L-1的限制的。例如,在一个实例中,一个18×36的基础矩阵,如果设置的目标最小环周为8,矩阵中的每一个“1”对应的相关矩阵数目平均值为1174个,在整个方法中,所有基础矩阵中环周为4、6、8的矩阵将会被消除,如果P值达到最大值L-1,则整个方法将会随着P值达到最大值而结束,根据当前所有非零单元对应的行位移值构建QC-LDPC码,在这种情况下,也可以重新设置目标最小环周,并返回步骤S1重新构建QC-LDPC码。
以下通过设计三种码率的LDPC矩阵,验证本发明的有益效果。三种码率的LDPC矩阵分别是:码率为1/2的非规则LDPC码、码率为5/8的规则LDPC码、以及码率为7/8的规则LDPC码。为了与本发明的方法做对比,可使用了另外一种构造QC-LDPC码的方法,简称ZP方法,这种方法描述在文献:T.Zhang and K.K.Parhi,“VLSIImplementation-Oriented(3,k)-Regular Low-Density Parity-CheckCodes,”IEEE Workshop on Signal Processing Systems,pp.25-36,Sep.2001中。这些码的具体情况如下表所示:
表1.本发明方法与ZP算法构造的QC-LDPC码参数
码率 |
1/2 |
5/8 |
7/8 |
可变节点码重 |
2、3或7 |
3 |
3 |
校验节点码重 |
5或6 |
8 |
24 |
码长 |
9036 |
9536 |
9782 |
基础矩阵大小 |
18×36 |
24×64 |
72×576 |
扩展单元阵大小 |
251 |
149 |
17 |
ZP方法构造LDPC码的平均最小环周 |
8.0556 |
8.25 |
5.9132 |
本发明方法构造LDPC码的平均最小环周 |
10 |
10 |
8 |
从上表可以看出,使用ZP方法构造的三种码的平均最小环周达到8.0556,8.25以及5.9132;然而使用本发明的方法构造的三种码的码率提高到10、10、8。为了比较两种方法构造的码的性能结果。用硬件描述语言VHDL实现了这些QC-LDPC码的解码器,并在XilinxVirtex-II XC2V4000进行了实现,5/8和7/8解码器的最大数据速率达到了66Mbps,1/2码率解码器的最大数据速率达到了30Mbps。
环形消除算法和ZP方法构造的QC-LDPC码的硬件测试结果如图6所示,在图中,几种QC-LDPC码的误包率曲线被画出来。从测试结果中可以看出,用ZP方法以及本发明方法构造的QC-LDPC码在误包率并没有大的区别,然后ZP方法构造的码率为1/2和7/8的LDPC码在10-4的地方发生了错误地板的现象。这种错误地板的现象可以从图7中得到解释,在图7中可以看出,因为5/8码的基础矩阵的最小环周为8,因此在此基础上无论用ZP还是本发明方法生成的最终的QC-LDPC码的最小环周都是8,因此不会发生严重的错误地板情况。而在码率1/2和7/8的实例中,使用本发明方法构造的QC-LDPC码因为具有更小的最小环周,因此比ZP方法构建的QC-LDPC码具有更低的错误地板。
同时用本发明方法构造的QC-LDPC码与ZP方法构造的QC-LDPC码相比在纠错性能方面不会有太大的差异,其差异都在0.1dB之内。由于本发明方法构造的QC-LDPC码不仅具有高纠错增益,适合硬件实现,还具有低错误地板,可以适用于深衰落的信道传输等比较恶劣无线传输环境。
以上实施方式仅用于说明本发明,而并非对本发明的限制,有关技术领域的普通技术人员,在不脱离本发明的精神和范围的情况下,还可以做出各种变化和变型,因此所有等同的技术方案也属于本发明的范畴,本发明的专利保护范围应由权利要求限定。