逐条添加边算法的多进制低密度奇偶校验码编译码方法

文档序号:7508823阅读:153来源:国知局
专利名称:逐条添加边算法的多进制低密度奇偶校验码编译码方法
技术领域
本发明属于数字通信技术领域,具体涉及一种基于逐条添加边(PEG)算法的多进制低密度奇偶校验(LDPC)码编译码方法。
背景技术
1948年Shannon在他的奠基性论文《通信的数学原理》中首次提出了著名的信道编码理论对任意信道容量为C的通信信道,如果通信系统所要求的传输速率R小于C,则存在一个编码方法,当码长n充分大并采用最大似然译码时,系统的错误率可以达到任意小。他的定理有三个基本条件1)采用随机编码;2)编码长度n→∞,即编码长度趋于无限;3)译码采用最佳的最大似然(ML)方法。
在信道编码的研究和发展过程中,基本上是以后两个条件为主要发展方向的。由于在实际中难以实现随机性编码方法,且当编码长度很大时,采用最大似然译码算法难以实现。而在1993年由Berrou C,Glavieux A,Thitimajshima提出新的信道编码方案Turbo码,则很好地应用了编码的随机特性和迭代译码从而获得几乎接近Shannon理论极限的译码性能。有关Turbo码编码和迭代译码的研究很快就成为信道编码理论研究的热点课题,并在3GPP中得到应用。
迭代译码算法在降低了复杂度的同时又具有较好性能,其原理就是通过外信息的迭代直至满足条件后进行硬判决。
纠错码理论发展到今天,特别是90年代以后,以随机编码和迭代译码为基础的高效纠错码成为了业界的主要研究对象,以图论为基础的新的纠错方式蓬勃发展,这就是以tanner图为基础发展起来的编码设计的可视化方法因子图和基于图中边上信息传递的迭代译码算法与和积算法。
LDPC码是1962年由Gallager提出(R.G.Gallager.低密度奇偶校验码[J].IRE Trans.Info.Theory1962IT-8(1)1-28)。当时并没有引起人们太多注意,20世纪90年代,有人发现LDPC码在长帧时采用和积算法迭代译码能够达到近香农限的性能。于是LDPC码迅速成为新的研究热点。
LDPC码是基于稀疏矩阵的奇偶校验码,矩阵H的设计原则是调整码字比特和校验比特之间的关系,从而达到译码过程中信息流动最优化的目的。因此,矩阵H的设计至关重要。通常H采用随机构造并消除长为4的环的方式,而X.Y.Hu等提出了一种能构造尽可能长的环的次最优方法——PEG(Progressive Edge--Growth)方法(X.-Y.Hu,E.Eleftheriou,and D.-M.Arnold,”边逐条增加的泰勒图”IEEE Proc.Globecom’2001,San Antorio,TX,Nov.2001.)。其仿真结果表明基于PEG算法的LDPC码比基于随机方式的好,尤其是在中短帧的时候。但是,现有技术只公开了基于PEG算法的二进制LDPC码。
上述二进制LDPC码还可以一般化成有限域GF(q)(q=2p,p∈Z+)上的多进制LDPC码。其双边图与二进制LDPC码的类似,不同的是变量点有q个可能取值,此外校验点的约束限制也更为复杂。David J.C.Mackay的研究发现,某些多进制LDPC码的性能要略好于二进制LDPC码,同时码率得到了提高(M.C.Davey,D.J.C.Mackay.Q元域上的低密度奇偶校验码[J].IEEE Commun.Lett.,1998,2(6)165-167.)。
多进制LDPC码可以采用BP算法译码,但这样复杂度很高,Richardson和Urbanke建议采用FT(傅立叶变换)算法译码以降低译码复杂度(T.Richardson and R.Urbanke.采用信度传递算法译码的低密度奇偶校验码的容量.Submitted to IEEE Transactions onInformation Theory,1998.)。例如,GF(2)上函数f的傅立叶变换为F0=f0+f1,F1=f0-f1.GF(2p)上的傅立叶变换可以看作一连串2进制变换,每个有p维。因此,GF(4)上的傅立叶变换为
F0=[f0+f1]+[f2+f3]F1=[f0-f1]+[f2-f3]F2=[f0+f1]-[f2+f3]F3=[f0-f1]-[f2-f3]傅立叶逆变换的形式与傅立叶变换相同,只是要多除上2p。
从上述现有技术的状况来看,对于多进制LDPC码而言,由随机方式构造的H矩阵稳定性很差,由此导致相应的码性能有好有坏,所以通常都采用期望来度量其性能。而采用BP算法译码的复杂度太高,这限制了它在实际通信系统中的应用。我们希望能采用比较稳定的H矩阵,从而得到性能稳定的LDPC码,同时采用次优的译码算法以一定的性能损失为代价降低译码复杂度,使编译码算法在保证一定的性能优势前提下同时易于硬件实现。

发明内容
本发明针对现有技术存在的上述不足,目的在于提供一种基于PEG算法的多进制LDPC码编译码方法,采用PEG设计方式完成对多进制LDPC码的编码设计,采用等效变换,并与傅立叶变换相结合实现多进制LDPC码的译码,显著改善多进制LDPC码的误码率性能,降低译码的复杂度,且性能损失在可以接受范围内,使用在数字通信系统中的中短帧传输条件下,显著优越于常规的随机构造的多进制LDPC码的性能。
本发明的技术方案如下一、编码部分作为本领域的研究人员都知道,LDPC码中随机构造的H矩阵稳定性很差,所以不能保证每次构造出的H性能都很好。于是我们把PEG算法引入多进制LDPC码编码设计中得到了稳定的而且最小环长较长的Tanner图。PEG算法是一种构造尽可能长的环的Tanner图的算法。它采用边逐条添加的方式,应用图论知识,把边逐条加入到Tanner图中去。给定一个符号结点sj,假定其度为dsj,那么在添加dsj条边时应遵循每添加一条新边,应使得当前Tanner图中通过结点sj的最小环长最大化的原则。
编码步骤如下
1、先利用PEG构造出二进制的H。
假定要构造m×n维的H矩阵,那么与之相应的Tanner图有m个变量结点和n个校验结点。我们把Tanner图记为(V,E),V是定点集合且V=Vc∪Vs,Vc={c0,c1,...,cm-1}是校验点的集合,Vs={s0,s1,...,Sn-1}是变量点的集合。E是边集且E=Vc×Vs,当前仅当hij≠0时,边(ci,sj)∈E,hij是H的第i行第j列元素。变量点sj的度记为dsj,与之相关联的所有边构成的集合记为Esj,则有E=Es0∪ES1∪…∪Esn-1。与sj关联的第k条边记为Esjk,0≤k≤dsj-1。如图1所示,我们把sj在其扩展树上的l层内能到达的校验点集合记为Nsjl,与之相应的补集记为 则有N‾sjl=Vc\Nsjl.]]>PEG算法如下for j=0n-1for k=0dsj-1if k=0把边(ci,sj)赋给Esj0,ci是当前的Tanner图Es0∪Es1∪…∪Esj-1中度最小的校验结点。
else在当前Tanner图中从变量结点sj扩展一棵l层树直到满足 但 或者Nsjl的势不再继续增加但仍然小于M。然后我们把边(ci,sj)赋给Esjk,ci是从 中挑选出来的度最小的一个校验点。
endend当两个循环完成时候,Tanner图就建好了,也即相应的H构造好了。
需要注意的是,我们在挑选ci时,选择在当前图中度最小的那个校验结点,是为了让由此生成的Tanner图中校验结点的度分布尽可能均匀。如果有多个度最小的结点,这在构造Tanner图初始时经常出现。对此,有两种处理方式1)随机地挑选其中的一个,2)按照这些结点在c0,c1,...,cm-1中的顺序,始终挑选下标最小的那个结点。这里,我们采用的是第一种方式。
2、然后把H中的非零元素随机地用{1,2,...,q-1}中的元素替代,得到了稳定的而且较优的H。
for i=0m-1for j=0n-1if(hij≠0)hij=rand_int(q-1)+1endend其中,函数rand_int(q)随机产生0~q-1之间的一个整数。
3、根据LU分解可以得到生成矩阵G,然后信息位S与生成矩阵G相乘即可得到码字U。即,U=SG。乘法遵循GF(q)上的乘法规则。
二、译码部分采用上述方法获得了基于PEG算法的多进制LDPC码,同时我们希望译码算法要准确且简单。
假定C是一个许用码字,cj是码字的第j个分量。我们先在GF(2)上分析Σjhijcj=0]]>(hij≠0,hij为H中第i行第j列元素)。由于hij=1,所以有Σjcj=0]]>(j为H中每行的非零元素下标)。而在GF(q)上,由于hij∈{1,2,...,q-1},所以不能将hij省去。如果我们令c′j=hijcj(乘法遵循GF(q)上的乘法规则),则有Σjc′j=0]]>(j为H中每行的非零元素下标)。这样就把H中非零元素对每个校验的贡献转移到了码字中,此时的等效H就是一个二进制的H。这样,我们就可以按照类似二进制译码的方式译码,等效思想由此而来。
BP算法对于二进制LDPC码是一个很好的选择,但是对于多进制LDPC码,其算法复杂度太高(与q2成正比)。我们根据上述的等效思想,提出一种等效变换,它与FT变换相结合可以实现译码。令 为发送的码字矢量,译码就是寻找满足Hx^=0^]]>的 为零矢量。具体译码实现时,等效和解等效都是针对概率信息进行的,变换公式为qmn′a=ET[qmna]=qmna÷hmn]]>(等效变换)
rmna=IET[rmn′a]=rmn′(a⊗hmn)]]>(逆等效变换)其中,“÷”是“”的逆运算(为了方便而引入的),a=0,1,2,...,q-1。qmna(qmn′a)表示x^n=a]]>的概率,rmna(rmn′a)表示当x^n=a]]>时第m个校验被满足的概率, 为 的第n个分量,hmn表示H中第m行第n列的元素。ET表示等效变换,IET表示逆等效变换。
具体的译码算法实现步骤如下1、初始化根据信道模型把qmna初始化为fna,即当x^n=a]]>时的似然值。令N(m)={nhmn≠0}表示参与第m个校验的变量点的集合,M(n)={mhmn≠0}表示第n个变量点所参与的检验的集合。
2、进行ET(等效变换)和FT(傅立叶变换)qmn′a=qmna÷hmn]]>Qmn′a=FT[qmn′0,qmn′1,...,qmn′q-1]]]>3、进行IFT(傅立叶反变换)和IFT(逆等效变换,更新rmna)rmn′a=IFT[(Πj∈N(m)\nQmj′0),...,(Πj∈N(m)\nQmj′q-1)]]]>rmna=rmn′(a⊗hmn)]]>4.、更新qmnaqmna=αmnfnaΠj∈M(n)\mrjna]]>其中αmn是归一化因子,满足Σa=0q-1qmna=1]]>5.、计算qnaqna=αnfnaΠj∈M(n)rjna]]>其中αn是归一化因子,满足Σa=0q-1qna=1.]]>6、译码判决
x^n=argmaxafnaΠj∈M(n)rjna]]>如果Hx^=0^]]>或者迭代次数已经达到预设的最大值,则算法停止,否则回到第2步继续迭代。
上述步骤清晰地说明了多进制LDPC码的译码过程。
我们搭建了仿真平台,参见图2和图3,比较了GF(4)上的分别基于PEG算法和随机构造方式的码的性能,以及都基于PEG算法,相同帧长时,4进制LDPC码与2进制LDPC码的性能。所有的码率都是1/2。由图2.可见在AWGN信道下,基于PEG的4进制LDPC码比随机方式编码的LDPC码性能好。由图3可见,同样基于PEG算法,4进制LDPC码比2进制LDPC码性能要略好。
虽然我们只给出了GF(4)上的仿真结果(如图2和图3),但是译码算法在GF(2p)上是通用的,对其他多进制LDPC码也适用。
发明优点或积极效果通过大量的计算机仿真实验和理论分析证实,利用PEG算法能够显著改善多进制LDPC码的误码率性能,而采用等效变换与傅立叶变换相结合的译码方式又能极大的降低译码复杂度,且性能损失在可以接受范围内。它比常规的随机构造的LDPC码的性能有着显著改善,而且这种优势在中短帧传输情况下非常明显。这表明采用这样的码型在实际的数字通信系统中具有重要的现实意义,在未来数字通信系统中,中短帧传输条件下,基于PEG算法的多进制LDPC码是一个更好的选择。


图1.sj的扩展树上l层内能到达的校验结点集合Nsjl。
图2.基于PEG算法和随机构造方式的四进制LDPC码的误码率曲线,帧长分别为1000,4000,20000bits。
图3基于PEG算法的相同帧长下二进制LDPC码和四进制LDPC码的误码率曲线,帧长为别为1000,4000bits.
具体实施例方式
以下我们以一个具体的编码和译码过程为例,进一步详细说明本发明方法的实现。
我们以GF(4)上的(3,6)码为例。为了便于理解,可以先采用随机方式的H,理解译码是怎样实现的。然后把随机方式的H换成由PEG方式构造的H,其他地方完全一样。
假定码字长度为N,则H为一M×N的矩阵,M=N/2。hij为H中第i行第j列元素。函数rand_int(n)产生0——n-1之间的一个随机整数。生成矩阵记为G,码字记为 信息位记为.GF(4)上的运算如表1,其中的除法表是根据乘法表构造的,除法是乘法的逆运算。
01230 01231 10322 23013 3210表1.1 GF(4)上的加法表01230 00001 01232 02313 0312表1.2 GF(4)上的乘法表÷ 01230 × ×××1 01232 03123 0231表1.3 GF(4)上的除法表,行是被除数,列是处数我们先产生二进制的H,然后把H中的‘1’随机的用{1,2,3}中的一个元素替代for i=0M-1for j=0N-1if(hij=1)hij=rand_int(3)+1endend然后我们利用LU分解找到G,然后利用公式
u^=s^⊗G]]>得到码字。
我们采用二进制的信道来传送码字。将GF(4)上的码字 映射为GF(2)上的码字 经BPSK调制后送入AWGN信道,信道的噪声方差为σ2。 为信道输出,y[i]为其第i个分量。p0[2*N),p1[2*N]分别存储码字 中每个分量为0或者为1的后验概率pn0[N],pn1[N],pn2[N],pn3[N]分别存储码字 中每个分量为0,1,2,3的后验概率。即for i=02*N-1p1[i]=1/(1+exp(-2*y[i]/σ2))p0[i]=1-p1[i]end将二进制码字 的后验概率逆映射成四进制码字 的后验概率。
for i=0N-1pn0[i]=p0[2*i]*p0[2*i+1]pn1[i]=p0[2*i]*p1[2*i+1]pn2[i]=p1[2*i]*p0[2*i+1]pn3[i]=p1[2*i]*p1[2*i+1]end下面就可以用等效变换与傅立叶变换结合的方式进行译码了。
*初始化for m=0M-1for n=N(m)qmn0=pn0[n]]]>qmn1=pn1[n]]]>qmn2=pn2[n]]]>qmn3=pn3[n]]]>endend*开始迭代译码,iter_num是预设的最大迭代次数。
for c=1iter_num
for m=0M-1/*******计算Qmn′a********/for n=N(m)/********等效变换********/qmn′0=qmn0÷hmn]]>qmn′1=qmn1÷hmn]]>qmn′2=qmn2÷hmn]]>qmn′3=qmn3÷hmn]]>/*********傅立叶变换**********/Qmn′0=[qmn′0+qmn′1]+[qmn′2+qmn′3]]]>Qmn′1=[qmn′0-qmn′1]+[qmn′2-q′mn3]]]>Qmn′2=[qmn′0+qmn′1]-[qmn′2+qmn′3]]]>Qmn′3=[qmn′0-qmn′1]-[qmn′2-qmn′3]]]>end/*********计算rmna*********/for n=N(m)/*************逆傅立叶变换*********/rmn′0=([Πj∈N(m)\nQmj′0+Πj∈N(m)\nQmj′1]+[Πj∈N(m)\nQmj′2+Πj∈N(m)\nQmj′3])/4]]>rmn′1=([Πj∈N(m)\nQmj′0-Πj∈N(m)\nQmj′1]+[Πj∈N(m)\nQmj′2-Πj∈N(m)\nQmj′3])/4]]>rmn′2=([Πj∈N(m)\nQmj′0+Πj∈N(m)\nQmj′1]-[Πj∈N(m)\nQmj′2+Πj∈N(m)\nQmj′3])/4]]>rmn′3=([Πj∈N(m)\nQmj′0-Πj∈N(m)\nQmj′1]-[Πj∈N(m)\nQmj′2-Πj∈N(m)\nQmj′3])/4]]>/********逆等效变换**********/rmn0=rmn′(0⊗hmn)]]>rmn1=rmn′(1⊗hmn)]]>rmn2=rmn′(2⊗hmn)]]>rmn3=rmn′(3⊗hmn)]]>end
end/*******更新qmna,同时作译码判决*******/for n=0N-1for m=M(n)qmn0=αmnpn0[n]Πj∈M(n)\mrjn0]]>qmn1=αmnpn1[n]Πj∈M(n)\mrjn1]]>qmn2=αmnpn2[n]Πj∈M(n)\mrjn2]]>qmn3=αmnpn3[n]Πj∈M(n)\mrjn3]]>/*****其中αmn满足Σa=03qmna=1]]>********//**********计算qna**********/qn0=αnpn0[n]Πj∈M(n)rjn0]]>qn1=αnpn1[n]Πj∈M(n)rjn1]]>qn2=αnpn2[n]Πj∈M(n)rjn2]]>qn3=αnpn3[n]Πj∈M(n)rjn3]]>/******其中αn满足Σa=03qna=1]]>*******//******译码判决*******/x^n=argmaxaqna]]>endend/*******若译码成功,则跳出循环,否则继续迭代直到循环中止*******/if(Hx^=0^)]]>break;end上面给出了GF(4)上的LDPC码的编译码伪代码。只要对于二进制LDPC码有一定的基础,根据伪代码将很容易正确的模拟出GF(4)以及其他GF(2m)域上的LDPC码在AWGN信道上的仿真。
权利要求
1.逐条添加边算法的多进制低密度奇偶校验码编译码方法,包括编码部分和对应的译码部分,方法是采用逐条添加边即PEG算法进行多进制低密度奇偶校验即LDPC码的编码,获得稳定的而且最小环长较长的Taner图,同时采用等效变换并与傅立叶变换相结合进行多进制LDPC码的译码。
2.根据权利要求1所述的PEG算法的多进制LDPC码编译码方法,其特征在于编码步骤如下(1)先利用PEG构造出二进制的矩阵H(2)然后把H中的非零元素随机地用{1,2,...,q-1}中的元素替代,得到了稳定的而且较优的H;(3)根据LU分解得到生成矩阵G,假定信息位记为S,码字记为U,则有U=SG乘法遵循GF(q)上的乘法规则;译码步骤如下(1)初始化根据信道模型把qmnα初始化为fnα,即,当=α时的似然值;令N(m)∶={n∶hmn≠0},表示参与第m个校验的变量点的集合,M(n)∶={m∶hmn≠0},表示第n个变量点所参与的检验的集合;(2)进行ET即等效变换和FT即傅立叶变换qmnα′=qmnα÷hmn]]>Qmnα′=FT[qmn0′,qmn1′,...,qmnq-1′]]]>(3)进行IFT即傅立叶反变换和IET即逆等效变换,以计算rmnαrmnα′=IFT[(Πj∈N(m)\nQmj0′),...,(Πj∈N(m)\nQmjq-1′)]]]>rmnα=rmn(α⊗hmn)′]]>(4)更新qmnαqmnα=αmnfnαΠj∈M(n)\mrjnα]]>其中αmn满足Σα=0q-1qmnα=1]]>(5)计算qnαqnα=αnfnαΠj∈M(n)rjnα]]>其中αn满足Σα=0q-1qnα=1;]]>(6)译码判决x^n=argmaxαqnα]]>如果Hx^=0^]]>或者迭代次数已经达到预设的最大值,则算法停止,否则回到第(2)步继续迭代。
全文摘要
本发明公开了一种基于逐条添加边算法的多进制低密度奇偶校验码编译码方法,包括编码部分和对应的译码部分,它采用PEG设计方式完成对多进制LDPC码的编码设计,采用等效变换,并与傅立叶变换相结合实现多进制LDPC码的译码,显著改善多进制LDPC码的误码率性能,降低译码的复杂度,且性能损失在可以接受范围内。将其使用在数字通信系统中的中短帧传输条件下,显著优越于常规的随机构造的LDPC码的性能。
文档编号H03M13/11GK1697330SQ20051005710
公开日2005年11月16日 申请日期2005年6月6日 优先权日2005年6月6日
发明者王琳, 黎勇, 徐位凯, 陈岗 申请人:重庆市成鑫机电制造有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1