基于单位阵及其循环移位阵的ldpc码向量译码装置和方法

文档序号:7509531阅读:194来源:国知局

专利名称::基于单位阵及其循环移位阵的ldpc码向量译码装置和方法
技术领域
:本发明涉及一种数字通信系统中用于数据传输纠错的译码器及其译码方法,特别是涉及数字通信领域纠错技术中结构化的低密度奇偶校验码(LDPC码)的译码器及其译码方法。
背景技术
:所有的数字通信系统如通信、雷达、遥控遥测、数字计算机的存储系统和内部运算以及计算机之间的数据传输等都可以归结为如图1所示的模型。其中的信源编码器是为了提高传输的有效性,信道编码器是为了抗击传输过程中各种各样的噪声和干扰,通过人为地增加冗余信息,使得系统具有自动纠正差错的能力,从而保证数字传输的可靠性。低密度奇偶校验码是一类可以用非常稀疏的奇偶校验矩阵或者二分图定义的线性分组码,最初由Gallager发现,所以称为Gallager码。经过数十年的沉寂,随着计算机硬件和相关理论的发展,MacKay和Neal重新发现了它,并证明了它具有逼近香农限的性能。最新研究表明,低密奇偶校验码码具有以下特点低译码复杂度,可线性时间编码,具有逼近香农限的性能,可并行译码,以及在长码长条件下性能优于Turbo码。LDPC码是一种基于稀疏校验矩阵的线性分组码,正是利用它的校验矩阵的稀疏性,才能实现低复杂度的编译码,从而使得LDPC码走向实用化。前面提到的Gallager码是一种正则的LDPC码(regularldpcc),而Luby和Mitzenmacher等人对Gallager码进行了推广,提出非正则的LDPC码(irregularldpcc)。LDPC码具有很多译码算法,其中,信息传递算法(MessagePassingalgorithm)或者置信度传播算法(BeliefPropagationalgorithm,BP算法)是LDPC码的主流和基础算法,很多算法都是基于此算法的改进。信息传递译码算法和概率域的BP算法信息传递算法是一种工作在图论基础上的译码算法,由于在算法的运行过程中,可靠性信息在二分图的变量节点和校验节点之间来回的传送,因此称为MessagePassing算法。当MessagePassing算法中的信道输出符号集和译码过程中发送消息的符号集相同,都为实数集R,即采用连续性的MessagePassing时,适当地选择消息映射函数,算法将等价于著名的BP算法,也就是和积算法(SumProductalgorithm)。先对BP算法中三种常用的具体算法介绍如下概率域的BP算法若编码的校验矩阵为H,将参与第m个校验的变量节点集合记为N(m)={n:Hmn=1}。类似的,将第n个变量节点参与的校验节点集合记为M(n)={m:Hnn=1}。算法中有两个交替执行的部分,与校验矩阵中非零元相关的数值qmn和rmn在算法的迭代中逐次更新。数值qmnx是指在已知除第m个校验节点外其它所有校验节点的消息时,发送的码字的第n个变量节点取值为x(取值为“0”或“1”)的概率。数值rmnx是指在已知发送的码字的第n个变量节点值为x,其它变量节点满足概率分布{qmn′:n′∈N(m)\n}时第m个校验节点得到满足的概率。如果矩阵H所对应的二分图没有环,在经过一定次数的迭代后,该算法将给出每一变量节点取值的精确后验概率。概率域的BP算法包括以下步骤a)初始化变量qmn0和qmn1对应于矩阵H中每一个满足Hmn=1的元素(n,m),变量节点的qmn0和qmn1分别被初始化为fn0和fn1。yn是时刻n信道的输出,σ2为噪声方差。forn=0,…,N-1form∈M(n)qmn0=fn0=P(xn=0|yn)=11+e-2yn/σ2qmn1=fn1=P(xn=1|yn)=1-fn0=11+e2yn/σ2]]>上述代码表示的是双重循环的流程,外循环变量为n,内循环变量为m。b)校验节点更新(paritynodeupdate)这一步对每一校验节点m及相应的每一个变量节点n∈N(m)计算两个概率测度第一个,当xn=0,其它的变量节点{xn′:n′≠n}服从相互独立的概率分布{qmn′0,qmn′1}时,校验节点m得到满足的概率rmn0;第二个,相应地,当xn=1时,校验节点m得到满足的概率rmn1。对于任意m和n,令δqmn=qmn0-qmn1,]]>其中H(m,n)=1。form=0,…,M-1forn∈N(m)δrmn=Πn′∈N(m)\nδqmn′rmn0=(1+δrmn)/2,rmn1=1-rmn0=(1-δrmn)/2]]>式中,“\”斜线表示排除某个元素。N(m)\n表示N(m)在排除了某一个列索引n后的集合,它是一个差集。c)变量节点更新(variablenodeinformationupdate)这一步利用计算所得值rmn0和rmn1更新概率值qmn0和qmn1。forn=0,…,N-1form∈M(n)qmn0=αmnfn0Πm′∈M(n)\mrm′n0qmn1=βmnfn1Πm′∈M(n)\mrm′n1]]>其中αmn和βmn为归一化系数使得qmn0+qmn1=1.]]>为变量节点取值为0时所有子校验节点得到满足的概率,为变量节点取值为1时所有子校验节点得到满足的概率。在任何一次迭代后,可依照下式计算变量节点n取值为0和1的伪后验概率qn0和qn1forn=0,…,N-1qn0=αnpn0Πm∈M(n)rmn0qn1=βnpn1Πm∈M(n)rmn1]]>d)译码迭代终止检测对这些伪后验概率qn0和qn1进行硬判决生成试验译码结果,用HT=0来判断译码是否成功,如果成功,则译码结束,输出码字;否则再判断迭代次数是否少于某预先设定的最大值,如果是,重复b)和c)继续迭代,如果迭代次数达到最大值而译码仍未成功,则宣告译码失败。对数域的BP算法如果将BP算法转换到对数域上进行,可以极大地减少乘法运算的次数,适合于实际应用。此时,译码消息看成是对码字中的信息比特的估计,包括符号(sign)和可信度(reliability)两部分①消息的符号,表示对信道中传输的信息比特的估计是(-)还是(+),;②消息的绝对值,即可信度,表示该消息对信息比特估计的可靠程度;③消息集中的0表示可抹符号(erasure),表示信息比特取(+1)或(-1)的概率相等,(+1)或(-1)分别对应于“1”和“0”。对数域的BP算法中作以下定义Lmn=LLR(rmn)=logrmn0rmn1]]>Zmn=LLR(qmn)=logqmn0qmn1]]>LLRn=LLR(qn)=logqn0qn1]]>其中Lmn表示从校验节点m发往变量节点n的校验节点到变量节点信息(extrinsicinformation),Zmn表示从变量节点n发往校验节点m的变量节点到校验节点信息,LLRn表示第n个码字比特的对数似然比。对数域的BP算法包括以下步骤a)初始化forn=0,…,N-1form∈M(n){Zmn(0)=LLRn(0)=2yn/σ2}]]>b)校验节点更新form=0,…,M-1forn∈N(m){Lmn(k)=2tanh-1Πn′∈N(m)\ntanh(Zmn′(k-1)2)}]]>c)变量节点更新forn=0,…,N-1form∈M(n){Zmn(k)=LLRn(0)+Σm′∈M(n)\mLm′n(k)}]]>码字比特的对数似然比为forn=0,…,N-1{LLRn(k)=LLRn(0)+Σm′∈M(n)Lm′n(k)}]]>d)然后对码字对数似然比LLR(qn)进行硬判决生成试验译码结果用HT=0来判断译码是否成功,如果成功则译码结束,输出码字;否则再判断迭代次数是否少于某预先设定的最大值,如果是,重复b)和c)继续迭代,如果迭代次数达到最大值译码仍未成功,则宣告译码失败。上述公式中的上标(k)中的k为译码迭代次数,对BIAWGN(二进制输入、高斯加性白噪声-BinaryInputAdditiveWhiteGaussianNoise)信道而言,yn为信道输出,σ2为噪声方差。简化形式的对数域BP算法将b)和c)进行合并消去Zmn后就得到如下等同的简化形式的对数域BP算法。a)初始化forn=0,…,N-1{LLRn(0)=2yn/σ2}]]>forn=0,…,N-1form∈M(n){Lmn(0)=0}]]>b)节点更新form=0,…,M-1forn∈N(m){Lmn(k)=2tanh-1Πn′∈N(m)\ntanh(LLRn(k-1)Lmn′(k-1)2)}]]>c)计算码字的对数似然比forn=0,…,N-1LLRn(k)=LLRn(0)+Σm′∈M(n)Lm′n(k)]]>d)判决检测,内容同上。采用信息传递算法(MessagePassingalgorithm)或者BP算法时,译码器的设计难度主要出现在稀疏校验矩阵的存储和访问上。针对任何一个稀疏矩阵的非零元素,我们都要存储指示它的索引或者存储指向它的指针,所以存储容量很大,进而阻碍了LDPC码的应用。当不同的码长采用不同的稀疏校验矩阵的时候,此问题将变得更加突出。此外,对于传统的译码算法,译码器都需要将基础矩阵扩展成为很大的奇偶校验矩阵,存储这么大的矩阵是一个问题。如果以此奇偶校验矩阵来设计硬件结构,连接数将很大,拓扑将很复杂,而且针对不同码长还需要设计出不同的硬件拓扑结构。这些缺点严重阻碍了结构化的LDPC码走向实际应用,成为此类低密度奇偶校验码的发展瓶颈。在IEEE802.16e标准中,LDPC码都是基于单位阵及循环移位矩阵的LDPC码,每一种码率的LDPC码都有一个基础矩阵,以下称为原始基础矩阵,不同码长的LDPC码的基础矩阵仅仅是对基础矩阵的取值进行修正的结果,以下称为修正后的基础矩阵。此时对于某个特定码率的LDPC码,仅仅需要存储一个很小的基础矩阵。这种结构化的奇偶校验矩阵的LDPC码将成为主流设计。但是,目前针对这种结构的LDPC码,还缺少一种能充分利用其特点的有效的译码算法和译码器。
发明内容本发明要解决的技术问题提出一种基于单位阵及其循环移位阵的LDPC码向量译码方法,不需存储LDPC码的奇偶校验矩阵,也不需要对基础矩阵进行扩展就可以实现译码。本发明还要提供一种实现该方法的装置。为了解决上述技术问题,本发明译码方法采用和传统低密度奇偶校验码相同的流程和原理,但在具体实现方式和数据结构上有变化,在译码的所有运算中最小运算单位都是长度为z的向量。从而将m×n的矩阵运算简化为大小为mb×nb的矩阵运算,仅需要基础矩阵而不是奇偶校验码就可以完成译码。译码器的硬件拓扑也从m×n的矩阵降到mb×nb的矩阵,极大地降低了硬件的连接数。更加重要的是,当特定码率下码长可变时,不同的LDPC码可以采用同一种拓扑结构的译码器。基于上述构思,本发明提供了一种基于单位阵及其循环移位阵的LDPC码向量译码方法,采用校验矩阵H={(Pij)z×z}mb×nb,]]>唯一对应于基础矩阵Hb={hijb}mb×nb,]]>i∈,j∈,迭代次数为k,扩展因子为z,Iset(j)是Hb中第j列非-1元素行索引集合,Jset(i)是Hb中第i行非-1元素列索引集合,该方法包括以下步骤(a)将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组,令接收序列向量数组R={Rj}1×nb]]>中的元素Rj=[yjz,yjz+1,…,y(j+1)z-1];(b)令k=0,根据接收序列向量数组R得到可信度向量数组(如码字对数似然比或后验概率的向量数组)的初始值,并得到传递信息(指变量节点到向量节点的信息或向量节点到变量节点的信息)向量矩阵的初始值,所述向量均为1×z软比特的向量;(c)利用k-1次迭代得到的所述传递信息向量矩阵、可信度向量数组以及基础矩阵的非-1元素值hij进行更新运算,得到第k次迭代后的传递信息向量矩阵和可信度向量数组,所有运算中的最小运算单位都是1×z软比特的向量;(d)对所述可信度向量数组进行硬判决得到硬判决向量数组S={Sj}1×nb,]]>Sj为1×z行向量,然后根据Ti=Σj=1nbPij-1SjT]]>计算得到奇偶校验向量数组T={Ti}mb×1;]]>(e)判断向量数组T是否为全0,若是,则译码成功,输出硬判决码字,结束;否则,令k=k+1,再判断k是否少于最大迭代次数,如果是,返回步骤(c),否则,译码失败,结束。进一步地,上述向量译码方法还有具有以下特点该方法为简化形式的对数域向量译码方法,其中所述步骤(b)中,利用接收数据向量数组R完成校验节点到变量节点信息向量矩阵U={uij}mb×nb]]>和码字对数似然比向量数组Q={Qj}1×nb]]>中所有非零向量初始值的运算,该步通过以下循环运算完成外循环j=0,…,nb-1,内循环i∈Iset(j),算式为uij(0)=0,Qj(0)=2Rj/σ2,]]>σ2为噪声方差;所述步骤(c)中进一步分为以下步骤(c1)根据上一次迭代的校验节点到变量节点信息向量矩阵U(k-1)和码字对数似然比向量数组Q(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(k)中所有的非零向量,实现节点更新,该步通过以下循环运算完成外循环i=0,…,mb-1,内循环j∈Jset(i),算式为uij(k)=Pij2tanh-1Πj′∈Jset(i)\jtanh(Pij-1Qj(k-1)-Pij′-1uij′(k-1)2)]]>(c2)根据最初对数似然比向量数据Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的码字对数似然比向量数组Q(k)中所有的非零向量,即对任一个j=0,…,nb-1,计算Qj(k)=Qj(0)+Σi′∈Iset(j)ui′j(k);]]>且所述步骤(d)中,是对码字对数似然比向量数组Q(k)进行硬判决。进一步地,上述向量译码方法还有具有以下特点该方法为一般形式的对数域向量译码方法,其中所述步骤(b)中,利用接收数据向量数组R完成对变量节点到校验节点信息向量矩阵V={vij}mb×nb]]>和码字对数似然比向量数组Q={Qj}1×nb]]>中所有非零向量初始值的计算,该步通过以下循环运算完成外循环j=0,…,nb-1,内循环i∈Iset(j),算式为vij(0)=Qj(0)=2Rj/σ2,]]>σ2为噪声方差;所述步骤(c)中进一步分为以下步骤(c1)根据上一次迭代的V(k-1)和R(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(k)中所有的非零向量,实现校验节点更新,该步通过以下循环运算完成外循环i=0,…,mb-1,内循环j∈Jset(i),算式为uij(k)=Pij2tanh-1Πj′∈Jset(i)\jtanh(Pij′-1vij′(k-1)2)]]>(c2)根据最初对数似然比向量数组Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的变量节点到校验节点信息向量矩阵V(k)中所有的非零向量,实现变量节点更新,通过以下循环运算完成外循环j=0,…,nb-1,内循环i=0,…,mb-1,算式为vij(k)=Qj(0)+Σi′∈Iset(j)\iui′j(k)]]>同时计算本次迭代的码字对数似然比数组Q(k)中所有的非零向量,即对任一个j=0,…,nb-1,计算Qj(k)=Qj(0)+Σi′∈Iset(j)ui′j(k);]]>且所述步骤(d)中,是对码字对数似然比向量数组Q(k)进行硬判决。进一步地,上述向量译码方法还有具有以下特点该方法为概率域向量译码方法,其中所述步骤(b)中,是利用接收数据数组R,计算变量节点到校验节点信息向量矩阵Q0={Qij0}mb×nb,Q1={Qij1}mb×nb]]>和向量矩阵ΔQ={ΔQij}mb×nb,]]>以及码字概率向量数组F0={Fj0}1×nb]]>和F1={Fj1}1×nb]]>中所有非零向量的初始值,通过以下循环运算完成外循环j=0,…,nb-1,内循环i∈Iset(j),算式为{Qij0=Fj0=11+e-2Rj/σ2,Qij1=Fj1=1-Qij0,ΔQij=Qij0-Qij1}]]>所述步骤(c)中进一步分为以下步骤(c1)根据上一次迭代的ΔQ(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k)中所有的非零向量,实现校验节点更新,通过以下循环运算完成外循环i=0,…,mb-1,内循环j∈Jset(i),算式为ΔRij(k)=PijΠj′∈Jset(i)\jPij′-1ΔQij′(k-1),Rij0(k)=(1+ΔRij(k))/2,Rij1(k)=1-rmn0=(1-ΔRij(k))/2]]>(c2)根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算本次迭代的变量节点到校验节点信息向量矩阵Q0(k),Q1(k)中所有的非零向量,实现变量节点更新,通过以下循环运算完成外循环j=0,…,nb-1,内循环i∈Iset(j),算式为{Qij0(k)=αijFj0Πi′∈Iset(j)\iRi′j0(k),Qij1(k)=βijFj1Πi′∈Iset(j)\iRi′j1(k)}]]>同时,根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算变量节点n取值为0和1的伪后验概率向量数组F0(k),F1(k)中所有的非零向量,即对任一j=0,…,nb-1,计算{Fj0(k)=αjFj0Πi′∈Iset(j)Ri′j0(k),Fj1(k)=βjFj1Πi′∈Iset(j)Ri′j1(k)}]]>其中αmn和βmn为归一化系数使得qmn0+qmn1=1;]]>且所述步骤(d)中,是根据F0(k),F1(k)的大小硬判决得到向量数组S。进一步地,上述向量译码方法还有具有以下特点所述对向量的运算包括向量四则运算、向量循环移位和向量的函数运算,向量的四则运算通过两个向量相对应元素的四则运算来完成,向量与Pij′和Pij′-1相乘通过对向量元素的循环右移或左移hijb位来完成,向量的函数运算可以通过对向量中每个元素求函数来完成。进一步地,上述向量译码方法还有具有以下特点所述校验节点到变量节点信息向量和变量节点到校验节点信息向量用定点表示,每个向量包括z个软比特,每个软比特定点为6个二进制比特。进一步地,上述向量译码方法还有具有以下特点所述迭代解码的校验节点更新处理,是采用上述标准化的置信度传播算法或者该算法的以下近似算法中的一种来实现的BP-Based算法、APP-based算法、均匀的最大置信度传播算法,最小和算法以及最小和查找表算法。本发明提供的基于单位阵及其循环移位阵的LDPC码向量译码装置包括基础矩阵处理模块、初始值运算模块、迭代运算模块、硬判决检测模块和控制模块,其中所述基础矩阵处理模块包括基础矩阵存储单元,该单元具有L个存储块,每个存储块用于存储基础矩阵Hb={hijb}mb×nb]]>中的一个非-1元素值hijb≠-1,]]>L为基础矩阵中非-1元素的个数,i∈,j∈;所述初始值运算模块用于接收输入数据Y=[y0,y1,…,yN-1]并缓存在nb个存储块中,然后计算出可信度向量数组的初始值,存储在nb个存储块中,并得到传递信息向量矩阵的初始值;所述迭代运算模块用于利用上一次迭代得到的传递信息向量矩阵、可信度向量数组以及基础矩阵的非-1元素值hij进行更新运算,得到本次迭代后的传递信息向量矩阵和可信度向量数组;所述硬判决检测模块用于对迭代得到的可信度向量数组进行硬判决得到硬判决向量数组S={Sj}1×nb,]]>存储在nb个存储块中,然后根据Ti=Σj=1nbPij-1SjT]]>计算,并判决得到的奇偶校验向量数组T={Ti}mb×1]]>是否为全0;所述控制模块用于控制其它模块完成初始值运算、迭代运算和硬判决检测,在数组T为全0时,输出硬判决码字,译码成功,结束;T不为全0时,再判断迭代次数是否小于最大迭代次数,如是,继续下一次迭代,如达到最大迭代次数,则译码失败,结束;并且,所有存储块均为可以存储z个软比特的存储块,各数组和矩阵元素间的运算均为大小为z个软比特的向量运算,各模块的计算单元从相应的存储块直接读取和写入数据,每次传输的信息数据总是z个软比特的整数倍,其中,z为扩展因子。进一步地,上述向量译码装置还可具有以下特点所述存储块的大小为zmax个软比特,其中,zmax是特定码率最大码长的低密度奇偶校验码对应的扩展因子。进一步地,上述向量译码装置还可具有以下特点所述各个计算单元与相应的存储块之间是用硬件建立固定的连接,实现对数据的寻址。进一步地,上述向量译码装置还可具有以下特点所述基础矩阵处理模块中的基础矩阵存储单元中存储的是原始基础矩阵的元素值;或者,所述基础矩阵处理模块中的基础矩阵存储单元是指修正后的基础矩阵存储单元,该处理模块还包括原始基础矩阵存储单元和基础矩阵修正单元,且所述迭代运算模块的计算单元还与该修正后的基础矩阵存储单元的相应存储块中相连以读取数据。进一步地,上述向量译码装置还可具有以下特点所述初始值运算模块包括接收码字向量存储单元,用于缓存接收的码字序列Y=[y0,y1,…,yN-1],以接收序列向量数组R={Rj}1×nb]]>的形式存储在nb个存储块中,每个存储块存储一个向量Rj=[yjz,yjz+1,…,y(j+1)z-1];向量初始值计算单元,用于读出接收序列向量Rj,计算出初始对数似然比向量数组Q={Qj}1×nb,Qj(0)=2Rj/σ2,]]>σ2为噪声方差;初始对数似然比向量存储单元,包括nb个存储块,分别存储所述初始对数似然比向量数组的nb个向量Qj。进一步地,上述向量译码装置还可具有以下特点所述迭代运算模块包括校验节点到变量节点信息向量存储单元、节点更新处理阵列、由读网络和写网络组成的双向缓冲网络和码字对数似然比计算单元,其中所述校验节点到变量节点信息向量存储单元包括L个存储块,每个存储块用于存储节点更新处理阵列输出的要传递的L个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素;所述节点更新处理阵列由Mb个分别对应于基础矩阵Mb行的计算单元组成,每个计算单元又包括分别对应于基础矩阵该行中所有非-1元素的多个计算子单元,共有L个,各计算子单元通过读网络从校验节点到变量节点信息向量存储单元和码字对数似然比向量存储单元的相应存储块中读取数据,完成一次节点更新运算,然后通过写网络将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块;所述双向缓冲网络中,对于所述节点更新处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在码字对数似然比向量存储单元中对应的存储块与其相连;所述码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。进一步地,上述向量译码装置还可具有以下特点所述迭代运算模块包括校验节点到变量节点信息向量存储单元,变量节点到校验节点信息向量存储单元,变量节点处理阵列,校验节点处理阵列,包括读网络A、写网络A、读网络B和写网络B的双向缓冲网络,以及码字对数似然比计算单元,其中所述校验节点到变量节点信息向量存储单元,包括L个存储块,每个存储块用于存储一个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素;所述变量节点到校验节点信息向量存储单元,包括L个存储块,每个存储块用于存储一个变量节点到校验节点信息向量,每个变量节点到校验节点信息向量对应于基础矩阵中的一个非-1元素;所述变量节点处理阵列由Nb个变量节点计算单元组成,每个计算单元包括多个对应于基础矩阵中该变量节点对应列中所有非-1元素的计算子单元,各计算子单元通过读网络B从校验节点到变量节点信息向量存储单元和初始对数似然比向量存储单元的相应存储块中读取数据,完成变量节点更新运算,然后通过写网络B将此次更新后的变量节点到校验节点信息向量写入到变量节点到校验节点信息向量存储单元相应的存储块;所述校验节点处理阵列由Mb个校验节点计算单元组成,每个计算单元包括多个对应于基础矩阵中该校验节点对应行中所有非-1元素的计算子单元组成,各计算个子单元通过读网络A从变量节点到校验节点信息向量存储单元相应的存储块中读取数据,并结合基础矩阵中对应于该计算子单元的元素的值,完成校验节点更新运算,然后通过写网络A将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块;对于校验节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,所述读网络A将该元素所在基础矩阵的行中除该元素外所有其它非-1元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连,所述写网络A将该元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连;对于变量节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,所述读网络B将该元素所在基础矩阵的列中除该元素外所有其它非-1元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,还将该元素所在基础矩阵的列在初始对数似然比向量存储单元对应的存储块与其相连,写网络B将该元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连;所述码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。进一步地,上述向量译码装置还可具有以下特点所述硬判决检测模块包括码字对数似然比向量存储单元,包括nb个存储块,用于存储每次迭代得到的nb个码字对数似然比向量Qj(k);硬判决检测单元,用于对译码产生的码字对数似然比向量数组Q进行硬判决得到nb个的硬判决码字向量,并判断奇偶校验向量数组T是否为全0;硬判决码字向量存储单元,包括nb个存储块,用于存储硬判决得到的nb个硬判决码字向量。由上可知,本发明针对变码长LDPC码的特有码结构提出了向量BP译码方法及其装置,和传统的BP译码方法及译码装置比较有以下特点1)不需要存储和访问LDPC码的奇偶校验矩阵H,避免了存储奇偶校验矩阵中节点的地址信息,所以本发明译码器所需存储容量显著减少。2)将基于比特的M×N的矩阵运算转化为基于z比特向量的mb×nb的矩阵运算,译码阵列的节点的连接数减少了z倍,具有简单的拓扑结构。3)对于特定码率的LDPC码,针对不同的码长具有统一的拓扑结构和译码处理流程,更加适合并行实现。4)译码拓扑只和基础矩阵Hb相关,与扩展矩阵H无关,不需要扩展。因此,本发明提供的向量BP译码方法对于基于单位阵及其循环移位矩阵的LDPC码意义重大,必将成为此类LDPC码的主流译码方法,这种译码方法使得基于单位阵以及循环移位矩阵LDPC码走向实用,有效地推动此类LDPC码成为当前LDPC码主要形式。图1是一个数字通信系统的结构图。图2是本发明向量BP方法第一实施例的流程图。图3是本发明译码装置第一实施例的硬件结构图。图4是本发明应用实例中校验节点到变量节点信息向量存储块与两个节点处理阵列的连接关系图。图5是本发明应用实例中变量节点到校验节点信息向量存储块与两个节点处理阵列的连接关系图。图6A和图6B是应用实例对应于基础矩阵第一行的校验节点处理阵列的结构图。图7A和图7B是应用实例对应于基础矩阵第一列的变量节点处理阵列的结构图。图8是现有译码器存储和访问奇偶校验矩阵的稀疏矩阵存储结构图。图9是本发明译码装置第二实施例的硬件结构图。具体实施例方式本发明的研究对象是基于单位阵及其循环移位矩阵的低密度奇偶校验码,现在先介绍一下这些基本概念。基于单位阵以及其循环移位矩阵的LDPC码和基础矩阵的定义任何一个具有特定码率和码长的LDPC码都有一个m×n奇偶校验矩阵H,通过这个m×n奇偶校验矩阵可以确定此LDPC码的编码器和译码器,在这里,n是码字的长度,m是校验比特的数目,k=m-n是系统比特数目。基于单位阵及循环移位矩阵的LDPC码的校验矩阵H是许多大小相同的z×z分块方阵Pi,j构成的。H定义如下H=P0,0P0,1P0,2···P0,nb-2P0,nb-1P1,0P1,1P1,2···P1,nb-2P1,nb-1P2,0P2,1P2,2···P2,nb-2P0,nb-1··················Pmb-1,0Pmb-1,1Pmb-1,2···Pmb-1,nb-2Pmb-1,nb-1=PHb---(1)]]>这些方块阵Pi,j是单位阵或者单位阵的循环移位矩阵或者零矩阵。H由一个大小为mb×nb的基础矩阵Hb(basematrix)扩展得到,其中n=z·nb,m=z·mb,z称为扩展因子,根据码长除以基础矩阵的列数N计算得到,是一个大于1的正整数。Hb可以被划分为两个部分,设Hb1对应于信息比特,Hb2对应于校验比特,有Hb=[(Hb1)mb×kb|(Hb2)mb×mb].]]>在H中,定义基本置换矩阵为单位阵循环右移一位的矩阵,每个非零分块矩阵都是z×z的基本置换矩阵的不同幂次,它们都是单位阵的循环移位矩阵(文中默认为右移)。这样通过幂次j就可以唯一标识每一个分块矩阵,单位矩阵的幂次用0表示,单位矩阵循环右移1位的矩阵的幂次用1表示,依此类推。零矩阵一般用“-1”来表示。将H的每个分块矩阵都用它的幂次代替,就得到一个mb×nb的幂次矩阵Hb,定义该Hb为H的基础矩阵。例如,矩阵唯一对应于下面的参数z和一个2×4的基础矩阵Hbz=3和Hb=010-12121]]>通过用z×z的单位阵及其循环移位矩阵或者零矩阵替代基础矩阵的非零元素,就可以将基础矩阵Hb扩展成为奇偶校验矩阵H。本发明译码算法的第一实施例下面将基于现有简化形式的对数域BP译码方法,构造和推导出一简化形式的对数域向量BP方法,具体推导过程描述如下设某个结构化的LDPC码有M×N奇偶校验矩阵H,M是校验比特的数目,N是码字比特的数目,K=N-M是信息比特的数目。H具有式(1)中的结构,H={(Pij)z×z}mb×nb,]]>即H是由mb×nb个z×z零方阵、单位方阵以及其循环移位矩阵构成的。H唯一对应一个基础矩阵Hb={hijb}mb×nb,]]>hijb为基础矩阵中的元素,i∈和j∈。定义基础矩阵行索引集合Iset(j)和列索引集合Jset(i)基础矩阵第j列非-1元素行索引集合Iset(j)={i|i∈andhijb≠-1}]]>基础矩阵第i行非-1元素列索引集合Jset(i)={j|j∈andhijb≠-1}]]>定义接收序列向量数组R将输入译码器的1×N软接收序列Y=[y0,y1,…,yN-1]划分为nb组有z个软比特的1×z行向量,用向量数组R表示,R=[R0,R1,···,Rnb-1].]]>R中任一元素Rj=[yjz,yjz+1,…,y(j+1)z-1],j∈。定义码字对数似然比向量数组Q将译码器的1×N的码字对数似然比序列LLR=[LLR0,LLR1,…,LLRN-1]划分为nb组1×z行向量,用向量数组Q表示,Q=[Q0,Q1,···,Q(nb-1)],]]>Q中每一个元素Qj=[LLRjz,LLRjz+1,…,LLR(j+1)z-1],j∈。所以Qj(l)=LLRjz+1。l∈定义函数(x,a)定义一个函数其中,a和x都是任意整数,z为扩展因子。定义H中某行非零元素列索引集合N(m)在奇偶校验矩阵H中,固定i和l,可以推导得到第iz+l行的所有非零元素构成的集合为在H中,第iz+l行的所有非零元素列索引构成的集合为相应地,可以得出,在H中,第zj+l列的所有非零元素行索引构成的集合为定义校验节点到变量节点信息向量矩阵U定义校验节点到变量节点信息向量矩阵U={uij}mb×nb,]]>i∈和j∈。U中每一个元素uij都是1×z行向量。uij用来记录和H中分块阵Pij位置对应的z个从校验节点到变量节点的校验节点到变量节点信息Lmn值,并且这种记录是按照列的顺序进行的,利用上述推导出的M(zj+l)的表达式,对于任一元素uij(l),总有实际上,校验节点到变量节点信息矩阵与基础矩阵在大小、形状和非零元素位置方面是完全一致的。定义校验节点到变量节点信息向量矩阵W定义矩阵W={wij}nb×mb,]]>W的任意元素Wij是一1×z行向量,定义wij=Pij-1uij,]]>H中置换矩阵Pij和Hb中非零元素hijb是对应的,Pijuij表示将1×z向量uij循环右移hijb位,定义z×z方阵Pij-1满足PijPij-1=Iz*z,]]>Iz×z是一个大小z×z的单位阵,所以Pij-1uij表示将1×z向量uij循环左移hijb位。根据上面的定义及推导出的N(iz+l)的表达式,对于任一元素Wij(l),总有分析物理含义,可知wij同样用来记录和H中分块阵Pij位置对应的z个从校验节点到变量节点的校验节点到变量节点信息Lmn值,但记录是按行的顺序进行的。定义向量数组Λ令Λ=[Λ0,Λ1,···,Λnb-1].]]>其中,Λ中每一个元素是一个1×z行向量,并且Λj=Pij-1Qj,]]>∀j∈,]]>向量Λj是将向量Qj循环左移hijb位的结果。记录的也是码字对数似然比序列,但记录在分块阵中是按行的顺序进行的。向量Λj中任意元素基于上述定义,下面将对数域BP译码算法校验节点更新公式转换为向量形式。根据Lmn(k)=2tanh-1Πn′∈N(m)\ntanh(LLRn(k-1)-Lmn′(k-1)2)]]>令l∈,则对数域BP算法的校验点更新公式变为其中根据wij和Λj定义,有wij(k)(l)=2tanh-1Πj′∈Jset(i)\jtanh(Λj(k-1)(l)-wij′(k-1)(l)2)]]>上式对l∈成立,故wij(k)(l)=2tanh-1Πj′∈Jset(i)\jtanh(Λj(k-1)-wij′(k-1)2)]]>根据wij和Λj定义,有Pij-1uij(k)=2tanh-1Πj′∈Jset(i)\jtanh(Pij-1Qj(k-1)-Pij′-1uij′(k-1)2)]]>所以有uij(k)=Pij2tanh-1Πj′∈Jset(i)\jtanh(Pij-1Qj(k-1)-Pij′-1uij′(k-1)2)---(2)]]>根据计算码字的对数似然比LLRn(k)=LLRn(0)+Σm′∈M(n)Lm′n(k)]]>故有Qj(k)=Qj(0)+Σi′∈Iset(j)ui′j(k)---(3)]]>其中uij是Lmn的1×z行向量记录形式,Qj是LLRn的1×z行向量记录形式,Pij是H中z×z的分块方阵。分析式(2)和(3),算法是以1×z行向量为最小基本运算元素。定义硬判决向量数组S将对数似然比LLR(qn)经过硬判决得到1×N序列X^=[x^0,x^1,···,x^n,···x^N-1]]]>划分为nb组z比特的1×z行向量,用向量数组S表示,S=[S0,S1,···,Snb-1],]]>S中每一个元素Sj是一个1×z行向量,有Sj=[x^jz,x^jz+1,···,x^(j+1)z-1],]]>j∈。定义奇偶校验向量数组T定义向量数组T={Ti}mb×1,]]>Tj是一个z×1的列向量。令T=H·ST。则有Ti=Σj=1nbPij-1SjT.]]>若T为全0,则H·ST=0。下面将描述本实施例简化形式的对数域向量BP算法的流程,先重复一下以上定义译码方法采用的校验矩阵H={(Pij)z×z}mb×nb,]]>对应基础矩阵Hb={hijb}mb×nb,]]>i∈,j∈,迭代次数为k;定义接收序列向量数组R={Rj}1×nb,]]>元素Rj是1×z行向量;定义校验节点到变量节点信息向量矩阵U={uij}mb×nb,]]>元素uij均是1×z行向量;定义码字对数似然比向量数组Q={Qj}1×nb,]]>元素Qj均是1×z行向量;定义一个硬判决向量数组S={Sj}1×nb,]]>元素Sj均是1×z行向量;;定义一个奇偶校验向量数组T={Ti}mb×1]]>元素Ti=Σj=1nbPij-1SjT.]]>其流程如图2所示,包括以下步骤步骤110,将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组,令接收序列向量数组R的元素Rj=[yjz,yjz+1,y(j+1)+z-1],j∈;步骤120,令k=0,利用接收序列向量数组R完成对校验节点到变量节点信息向量矩阵U和码字对数似然比向量数组Q中所有非零向量初始值的运算forj=0,…,nb-1fori∈Iset(j)uij(0)=0,Qj(0)=2Rj/σ2,]]>Iset(j)是Hb第j列非-1元素行索引集合,σ2为噪声方差。步骤130,根据上一次迭代的校验节点到变量节点信息向量矩阵U(k-1)和码字对数似然比向量数组Q(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(K)中所有的非零向量,实现节点更新;fori=0,…,mb-1forj∈Jset(i)uij(k)=Pij2tanh-1Πj′∈Jset(i)\jtanh(Pij-1Qj(k-1)-Pij′-1uij′(k-1)2)---(4)]]>其中,Jset(i)是Hb第i行非0元素列索引集合。式(4)的更新公式可分为求绝对值和求符号两步来完成|uij(k)|=Pijφ(Σj′∈Jset(i)\jφ(Pij-1Qj(k-1)-Pij′-1uij′(k-1)))]]>sign(uij(k))=-Πj′∈Jset(i)\jsign(Pij-1Qj(k-1)-Pij′-1uij′(k-1))]]>其中,定义φ(x)=-log(tanh(x/2))=log(coth(x/2)),x是大于零的实数。步骤140,根据最初对数似然比向量数据Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的码字对数似然比向量数组Q(k)中所有的非零向量;forj=0,…,nb-1Qj(k)=Qj(0)+Σi′∈Iset(j)ui′j(k)---(5)]]>步骤150,对Q(k)进行硬判决得到硬判决向量数组S,根据Ti=Σj=1nbPij-1SjT]]>计算奇偶校验向量数组T=HST;步骤160,判定T是否全0,若是,执行步骤190,否则,执行下一步;步骤170,令k=k+1,判断迭代次数“k”是否少于某预先设定的最大值Kmax,如果是,则返回步骤130,否则,执行下一步;步骤180,宣告译码失败,结束;步骤190,判定译码成功,输出硬判决码字序列,结束。可以看出,本实施例算法的最小运算单位是1×z的行向量,算法的加减乘除就是向量的加减乘除,Pij乘某个向量表示对这个向量循环右移hijb位,Pij-1乘某个向量表示对这个向量循环左移hijb位,某个向量的f函数就是该向量每个元素的f函数重新构成的向量。由于所有的运算都是基于向量运算,所以我们把本发明的算法称为向量BP算法。综上所述,由于整个译码方法是基于mb×nb基础矩阵来运算的,而不是M×N的矩阵运算,而基础矩阵很小,因而避免了非常繁杂的稀疏矩阵数据结构,并且由于特定码率的基于单位阵的低密度奇偶校验码通常只有一个基础矩阵,不同码长下修正得到的基础矩阵的非零元素位置相同,因此可以采用相同的拓扑结构,从而极大地降低硬件实现的复杂度,极大地降低了译码器内部的连接数。本发明译码算法的第二实施例本实施例针对一般形式的对数域译码方法,给出对应的向量译码算法。本实施例将校验节点更新和变量节点更新分成两步完成,在第一实施例的基础上,只需要多定义一个存储Zmn的变量节点到校验节点信息向量矩阵V。定义变量节点到校验节点信息向量矩阵V={vij}mb×nb,]]>i∈和∈。V中每一个元素vij都是1×z行向量。vij是用来记录和H中分块阵Pij位置对应的z个Zmn值,并且这种记录是按照列的顺序。对于vij的任意元素vij(l),总有其中,l∈重复一下所作的定义译码方法采用的校验矩阵H={(Pij)z×z}mb×nb,]]>基础矩阵Hb={hijb}mb×nb,]]>i∈,j∈,迭代次数为k;对接收序列向量数组R、校验节点到变量节点信息向量矩阵U={uij}mb×nb,]]>码字对数似然比向量数组Q={Qj}1×nb,]]>硬判决向量数组S={Sj}1×nb,]]>奇偶校验向量数组T={Tj}1×nb]]>的定义与第一实施例相同,这里不再赘述。一般形式的对数域向量译码方法的流程包括以下步骤步骤A,将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组,令接收序列向量数组R的元素Rj=[yjz,yjz+1,…,y(j+1)z-1],j∈;步骤B,令k=0,利用接收数据向量数组R完成对变量节点到校验节点信息向量矩阵V和码字对数似然比向量数组Q中所有非零向量初始值的计算;forj=0,…,nb-1fori∈Iset(j)vij(0)=Qj(0)=2Rj/σ2]]>式中,Iset(j)是Hb第j列非-1元素行索引集合,σ2为噪声方差。步骤C,根据上一次迭代的V(k-1)和R(l-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(K)中所有的非零向量,实现校验节点更新;fori=0,…,mb-1forj∈Jset(i)uij(k)=Pij2tanh-1Πj′∈Jset(i)\jtanh(Pij′-1vij′(k-1)2)---(6)]]>式中,Jset(i)是HB第i行非0元素列索引集合。同样地,该步也可以通过求绝对值和求符号两步来完成。步骤D,根据最初对数似然比向量数组Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(K),计算本次迭代的变量节点到校验节点信息向量矩阵V(k)中所有的非零向量,实现变量节点更新;forj=0,…,nb-1fori=0,…,mb-1vij(k)=Qj(0)+Σi′∈Iset(j)\iui′j(k)---(7)]]>同时计算本次迭代的码字对数似然比数组Q(k)中所有的非零向量;forj=0,…,nb-1Qj(k)=Qj(0)+Σi′∈Iset(j)ui′j(k)---(8)]]>步骤E~步骤I的后续的硬判决,对译码结果的判断、处理等与第一实施例的步骤150~190完全相同,这里不再重复。上述两个实施例的对数域的向量译码算法,在迭代解码过程中使用了Log函数和正切tanh函数,在实际中可以采用M.Fossorieretal.提出的BP算法的近似算法——BP-Based算法和APP-based算法。以及在IEEEtrans.Commun.第47卷,第673-680页,1999年5月,题目为“REDUCEDCOMPLEXITYITERATIVEDECODINGOFLOWDENSITYPARITYCHECKCODESBASEDONBELIFEPORPAGATION”的研究报告中,chen和Fossorier等人提出了UMP-BP(UniformalyMostPowerful-BeliefPropagation,均匀的最大置信度传播)算法和标准化-BP(Normalized-BeliefPropagation,标准化的置信度传播)算法来实现对Log函数和正切tanh函数的近似运算。这样可以减少迭代译码的复杂度,而性能降低较小。另外,也可以采用三星公司公开的题目为“在通信系统中解码低密度奇偶校验码的装置和方法”中提出的对标准化-BP算法的改进算法、最小和算法以及最小和查找表算法等近似算法。本发明译码方法与传统译码方法的核心差别在于将z个比特封装一个向量,以向量为基本运算单位来实现。本发明译码算法的第三实施例本实施例对照普通概率域的BP算法,引用它的qn0、qn1、qmn0、qmn1、rmn0和rmn1,构造和推导出相应的概率域向量BP算法,具体推导过程描述如下与第一实施例相同的定义如下i∈,j∈,校验矩阵H={(Pij)z×z}mb×nb,]]>基础矩阵Hb={hijb}mb×nb]]>接收序列向量数组R的元素Rj都是1×z行向量,Rj=[yjz,yjz+1,…,y(y+1)z-1]基础矩阵第j列非-1元素行索引集合Iset(j)={i|i∈andhijb≠-1}]]>基础矩阵第i行非-1元素列索引集合Jset(i)={j|j∈andhijb≠-1}]]>硬判决序列X^=[x^0,x^1,···,x^n,···x^N],]]>硬判决向量数组S的元素Sj都是1×z行向量,Sj=[x^jz,x^jz+1,···,x^(j+1)z-1].]]>奇偶校验向量数组元素Ti=Σj=1nbPij-1SjT.]]>另外,需补充以下向量数组和向量矩阵的定义定义码字概率向量数组F0和F1将译码器的1×N的码字比特为0的概率序列{qn0}1×n分为nb组1×z行向量,用F0表示,F0=[F00,F10,···F(nb-1)0],]]>在这里,F0中每一个元素是一个1×z行向量,如下所示对于,Fj0=[qjz0,qjz+10,···,q(j+1)z-10].]]>j∈其中,Fj0(l)=qjz+l0.]]>l∈。同样,将{qn1}1×n分为nb组1×z行向量,用F1表示,F1=[F01,F11,···F(nb-1)1].]]>所以,Fj1=[qjz1,qjz+11,···,q(j+1)z-11].]]>j∈定义校验节点到变量节点信息向量矩阵R0和R1定义一个矩阵R0={Rij0}mb×nb,]]>i∈和j∈。R0中每一个元素Rij0都是1×z行向量。Rij0是用来记录和H中分块阵Pij位置对应的z个rmn0值,并且这种记录是按照列的顺序。对于Rij0的任意元素Rij0(l),总有其中,l∈定义一个矩阵R1={Rij1}mb×nb,]]>i∈和j∈。R1中每一个元素Rij1都是1×z行向量。Rij1用来记录和H中分块阵Pij位置对应的z个rmn1值,并且这种记录是按照列的顺序。对于Rij1的任意元素Rij1(l),总有其中,l∈定义向量矩阵Q0、Q1、ΔQ和ΔR定义变量节点到校验节点信息向量矩阵Q0={Qij0}mb×nb,]]>i∈和j∈。Q0中每一个元素Qij0都是1×z行向量。Qij0是用来记录和H中分块阵Pij位置对应的z个qmn0值,并且这种记录是按照列的顺序。对于Qij0的任意元素Qij0(l),总有其中,l∈定义变量节点到校验节点信息向量矩阵Q1={Qij1}mb×nb,]]>i∈和j∈。Q1中每一个元素Qij1都是1×z行向量。Qij1是用来记录和H中分块阵Pij位置对应的z个qmn1值,并且这种记录是按照列的顺序。对于Qij1的任意元素Qij1(l),总有其中,l∈定义一个矩阵ΔQ={ΔQij}mb×nb,]]>i∈和j∈。ΔQ中每一个元素ΔQij都是1×z行向量。对于ΔQij的任意元素ΔQij(l),有ΔQij(l)=Q0ij(j)-Q1ij(l),l∈定义一个矩阵ΔR={ΔRij}mb×nb,]]>i∈和j∈。ΔR中每一个元素ΔRij都是1×z行向量。对于ΔRij的任意元素ΔRij(l),有ΔRij(l)=R0ij(l)-R1ij(l),l∈。根据对数域算法的类似推导,可以得到下面概率域形式的向量BP算法流程的步骤步骤一,将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组z比特的1×z行向量数组R=[R0,R1,···,Rnb-1],]]>R的任意元素Rj=[yjz,yjz+1,…,y(j+1)z-1];步骤二,利用接收数据数组R,计算变量节点到校验节点信息向量矩阵Q0={Qij0}mb×nb,Q1={Qij1}mb×nb]]>和ΔQ={ΔQij}mb×nb]]>以及码字概率向量数组F0={Fj0}1×nb]]>和F1={Fj1}1×nb]]>中所有非零向量的初始值;forj=0,…,nb-1fori∈Iset(j){Qij0=Fj0=11+e-2Rj/σ2,Qij1=Fj1=1-Qij0,ΔQij=Qij0-Qij1}]]>步骤三,根据上一次迭代的ΔQ(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k)中所有的非零向量,实现校验节点更新;fori=0,…,mb-1forj∈Jset(i)ΔRij(k)=PijΠj′∈Jset(i)\jPij′-1ΔQij′(k-1),Rij0(k)=(1+ΔRij(k))/2,Rij1(k)=1-rmn0=(1-ΔRij(k))/2]]>步骤四,根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(K),R1(K),计算本次迭代的变量节点到校验节点信息向量矩阵Q0(k),Q1(k)中所有的非零向量,实现变量节点更新;forj=0,…,nb-1fori∈Iset(j){Qij0(k)=αijFj0Πi′∈Iset(j)\iRi′j0(k),Qij1(k)=βijFj1Πi′∈Iset(j)\iRi′j1(k)}]]>步骤五,根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算变量节点n取值为0和1的伪后验概率向量数组F0(k),F1(k)中所有的非零向量;forj=0,…,nb-1{Fj0(k)=αjFj0Πi′∈Iset(j)Ri′j0(k),Fj1(k)=βjFj1Πi′∈Iset(j)Ri′j1(k)}]]>步骤六,根据F0(k),F1(K)的大小,硬判决得到向量数组S,根据T=HST,判定T是否全0,若是,则译码成功,输出硬判决码字,结束;否则,继续判断迭代次数是否少于某预先设定的最大值,如果少于,则返回步骤三,否则,宣告译码失败,结束。本实施例译码方法的最小运算单位也是1×z的向量,向量算法的规则与前两个实施例都是一样的,由于所有的运算都是基于向量运算,所以我们把本实施例译码方法所采用的算法称为概率域向量BP算法。综上所述,本发明的向量译码方法的计算原理和处理流程与传统算法是相同的,只是实现时将总是将z比特数据封装成向量,译码实现总是基于大小为mb×nb基础矩阵Hb,不需要奇偶校验矩阵H,是一个大小为mb×nb的矩阵运算。新的矩阵运算总是以z比特(如其中的码字向量、变量节点到校验节点信息向量和校验节点到变量节点信息向量等)的向量为基本运算单元,所有可能运算包括向量加减乘除、向量移位运算和向量的函数运算。按向量译码方法设计的译码器的拓扑依赖于基础矩阵,和奇偶校验矩阵没有直接的关系。本发明译码装置的第一实施例根据本发明提出的LDPC码译码方法可以设计出的一个优秀的LDPC码译码器,它的拓扑结构只和基础矩阵有关,而与奇偶校验矩阵无关,所以特别适合于变码长的结构化的LDPC码。本实施例用于实现向量BP算法的并行向量译码器是针对第二实施例中一般形式的对数域向量BP算法设计的,其硬件结构如图3所示,并行向量译码器主要是由控制部分(controlunit),运算处理部分、存储部分和双向缓冲网络部分构成,它等最重要的特征是所有数据的传输、存储和计算的最小单位都是一个大小为z的向量。即所有存储单元都是由可以存储z个软比特的存储块构成,通常每个软比特需要6比特进行定点描述。最小运算单元也是大小为z个软比特的向量,经过读写网络每次传输的信息数据总是z个软比特的整数倍。存储模块包括原始基础矩阵存储单元(Hb_MEM)、修正后的基础矩阵存储单元(Hbz_MEM)、接收码字向量存储单元(IN_MEM)、初始对数似然比向量存储单元、硬判决码字向量存储单元(OUT_MEM)、码字对数似然比向量存储单元、变量节点到校验节点信息向量存储单元(VNOD_MEM)和校验节点到变量节点信息向量存储单元(CNOD_MEM)。其中原始基础矩阵存储单元,包括多个存储块,分别用于存储原始基础矩阵中的一个非-1元素,以下将对应于原始基础矩阵(或修正后的基础矩阵)中一个非-1元素的一个存储块称为一个节点,每个存储块占有8比特。修正后的基础矩阵存储单元也包括多个存储块,分别用于存储经基础矩阵修正单元修正后的基础矩阵中的一个非-1元素,该元素将被用于参与校验节点更新运算。公式中,Pij或Pij-1乘一个长度为z向量的向量,就是对该向量进行向右或向左的hijb的循环移位。所以校验节点处理阵列中的循环移位操作与基础矩阵的元素取值是相关的。修正算法可以采用取模(mod)、取整(scale+floor)或舍入(scale+round)等。接收码字向量存储单元,用于缓存接收的码字序列,并输出到向量初始值计算单元,有nb个存储块,每个存储块存储一个大小为z的行向量。初始对数似然比向量存储单元,用于存储向量初始值计算单元计算出的nb个初始对数似然比向量,供变量节点处理单元和码字对数似然比计算单元使用。码字对数似然比向量存储单元,用于存储码字对数似然比计算单元输出的每次迭代后的nb个码字对数似然比向量。硬判决码字向量存储单元,用于存储硬判决检测单元得到的每次迭代后的nb个硬判决码字向量。校验节点到变量节点信息向量存储单元,包括L个存储块,每个存储块用于存储校验节点处理阵列输出的从校验节点传递到变量节点的L个校验节点到变量节点信息向量,L为基础矩阵中非-1元素的个数,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素。校验节点到变量节点信息向量一般定点表示,一个校验节点到变量节点信息向量包括z个软比特,每个软比特定点为6个二进制比特,1比特表示符号,5比特表示绝对值部分。变量节点到校验节点信息向量存储单元,包括L个存储块,每个存储块用于存储变量节点处理阵列输出的从变量节点传递到校验节点的L个变量节点到校验节点信息向量,每个变量节点到校验节点信息向量对应于基础矩阵中的一个非-1元素,也用定点表示。运算处理模块包括变量节点处理阵列(VNUs)、校验节点处理阵列(CNUs)、向量初始值计算单元、码字对数似然比计算单元、基础矩阵修正单元(Hb_Fix)和硬判决检测单元(HDC)。其中变量节点处理阵列由Nb个变量节点计算单元VNU_j组成。每个计算单元由若干对应于基础矩阵中该变量节点对应列中所有非-1元素的计算子单元组成,各子单元通过读网络B从校验节点到变量节点信息向量存储单元和初始对数似然比向量存储单元的相应存储块中读取数据,完成变量节点更新运算(见式(7)),然后通过写网络B将此次更新后的变量节点到校验节点信息向量写入到变量节点到校验节点信息向量存储单元相应的存储块。校验节点处理阵列由Mb个校验节点计算单元CNU_i组成。每个计算单元由若干对应于基础矩阵中该校验节点对应行中所有非-1元素的计算子单元组成,各个子单元通过读网络A从变量节点到校验节点信息向量存储单元相应的存储块中读出变量节点到校验节点信息向量,并结合基础矩阵中对应于该计算子单元的元素的值,完成校验节点更新运算(见式(6)),然后通过写网络A将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块。向量初始值计算单元,用于根据接收码字向量和噪声方差,计算出nb个初始对数似然比向量写入初始对数似然比向量存储单元,同时还计算出L个变量节点到校验节点信息向量的初始值写入到变量节点到校验节点信息向量存储单元。基础矩降修正单元(Hb_Fix)用于根据不同的码长对基础矩阵进行修正,并将修正后的基础矩阵存储到修正后的基础矩阵存储单元。码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。硬判决检测单元(HDC)用于对译码产生的码字对数似然比向量进行硬判决,将得到的硬判决码字向量硬判决码字向量存储单元,并判断奇偶校验向量数组T是否为全0,如果为全0,则译码成功。各个计算单元中进行的运算都可以分为向量间运算和向量内部运算。向量间运算的基本处理单位是向量;向量内部运算是指各计算单元或子单元的每个运算操作内部的运算,它的基本处理单位是比特,一般都是z个软比特的处理。向量运算包括向量四则运算、向量循环移位和向量的函数运算等。向量的四则运算可以通过两个1×zmax寄存器的相对应元素的四则运算来完成,向量的循环移位可以通过1×zmax寄存器的循环移位来完成,向量的函数运算可以通过对1×zmax寄存器中每个元素求函数来完成。其中,zmax是特定码率最大码长的低密度奇偶校验码对应的扩展因子。用zmax作为向量的大小来设计,就可以适用于任何一种码长下的译码的需要,不必改变译码器的拓扑结构。向量运算用硬件很容易实现,具体的运算逻辑应当根据选用的实现方法来确定,例如,可以采用多种逻辑来实现Log函数和正切tanh函数。双向缓冲网络部分包括缓冲网络A和B网络A又分为读网络A和写网络A,网络B又分为读网络B和写网络B。读网络A提供校验节点处理阵列从变量节点到校验节点信息向量存储单元读取变量节点到校验节点信息向量时的读地址,写网络A提供校验节点处理阵列将校验节点到变量节点信息向量写入校验节点到变量节点信息向量存储单元时的写地址,读网络B提供变量节点处理阵列从校验节点到变量节点信息向量存储单元读取校验节点到变量节点信息向量时的读地址,写网络B提供变量节点处理阵列将变量节点到校验节点信息向量写入变量节点到校验节点信息向量存储单元时的写地址。由上文已经知道,变量节点到校验节点信息向量存储单元的L个存储块,校验节点到变量节点信息存储单元的L个存储块,Nb个变量节点计算单元中的L个计算子单元,Mb个校验节点计算单元中的L个计算子单元都分别对应于基础矩阵中的一个非-1元素。根据本发明译码方法第二实施例中的变量节点和校验节点更新公式,可以得出以下结论对于校验节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络A将该元素所在基础矩阵的行中除该元素外所有其它非-1元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连。写网络A将该元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连。另外,读网络A还将该元素在修正后的基础矩阵存储单元中对应的存储块与该计算子单元相连。对于变量节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络B将该元素所在基础矩阵的列中除该元素外所有其它非-1元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,还将该元素所在基础矩阵的列在初始对数似然比向量存储单元对应的存储块与其相连。写网络B将该元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连。此外,在校验节点到变量节点信息向量存储单元的L个存储块和码字对数似然比计算单元的nb个计算子单元之间也存在以下寻址关系对于基础矩阵某一列的码字对数似然比计算子单元与该列中所有非-1元素对应的校验节点到变量节点信息向量存储单元中的存储块相连接。可以看出,上述对应关系只与基础矩阵中非-1元素的位置有关且十分简单。缓冲网络建立运算单元与存储单元的连接关系,可以用硬件建立固定的连接,也可以建立可变的寻址。对于图中的寻址关系,本实施例是用FPGA等可编程阵列将各计算子单元与相应存储块按上述的对应关系直接连接生成读写网络,当然也可以在DPS中用编程实现上述寻址关系,即系统在工作时再根据基础矩阵中非-1元素的位置建立上述存储块与计算子单元间的寻址关系,此时由于涉及的存储块和相应的向量很少,可以直接访问,因而无需存储指示它的索引或指向它的指针。以上寻址关系还将在下文中的应用实例中加以更直观的说明。传统的译码算法是基于奇偶校验矩阵的,它需要如图8所示的稀疏矩阵存储结构,该结构是一个二维的双向链表。除了需要存储译码需要的软比特信息,还需要存储访问节点的地址信息,即指向上下左右节点的地址指针。这些地址信息一般都是32位的。所以,对于每个节点,不仅仅需要存储2个软比特译码数据,还需要存储4个地址指针。而本发明避免了存储上述的4个地址指针,故存储空间至少节约了2/3。控制模块(controlunit)主要用于控制、协调各个单元完成以下译码流程第一步,初始化当数据在输入端准备好时,译码器在每个时钟周期,读入来自I/O口的码字软比特(即接收的码字序列),保存在接收码字向量存储单元。当整块数据得到存储后,向量初始值计算单元根据读入的接收码字向量计算出对数似然比向量的初始值写入初始对数似然比向量存储单元,还计算出变量节点到校验节点信息向量的初始值写入变量节点到校验节点信息向量存储单元。第二步,迭代译码,由以下两个子步骤实现在第一个子步骤中,译码器的校验节点处理阵列将进行校验节点更新的计算,完成水平方向的迭代译码。在每一个时钟周期,从变量节点到校验节点信息向量存储单元的每一存储块中读出一个变量节点到校验节点信息向量,送到相应的校验节点子计算单元完成校验节点更新运算,然后将得到的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元相应的存储块中。在第二个子步骤中,译码器的变量节点处理阵列将进行变量节点更新的计算,完成垂直方向的迭代译码。在每一个时钟周期,从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元的每一个存储块中读出一个初始对数似然比向量或变量节点到校验节点信息向量,送到相应的变量节点计算子单元完成变量节点更新运算,然后将得到的变量节点到校验节点信息向量写入到变量节点到校验节点信息向量存储单元相应的存储块;同时,在每一个时钟周期,从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元的每一个存储块中读出一个初始对数似然比向量和校验节点到变量节点信息向量,送到相应的码字对数似然比计算子单元,计算出此次迭代的码字对数似然比向量,再写入到码字对数似然比向量存储单元相应的存储块。第三步,译码检测和输出硬判决检测单元(HDC)对存储的码字对数似然比向量进行硬判决,存储得到的硬判决码字序列并对硬判决结果进行检测,若正确,则结束译码,输出硬判决码字序列;若错误,再判断是否达到最大的迭代次数,如果达到,则译码失败,结束,否则返回第二步继续迭代译码。下面将以一个比较简单的应用实例对本实施例采用对数域向量BP算法的译码器进行说明。假设基础矩阵为上本文举出的实例,即Hb=010-12121]]>那么,其译码器的整体结构如图3所示,其变量节点数nb=4,校验节点数mb=2,基础矩阵中非“-1”元素有7个,假定扩展因子z=2,因此该应用实例中所有信息存储和运算的基本单位均为1*2个软比特的向量。相应地,变量节点计算单元的个数也为4,在对应于第1,2,3列的每个变量节点计算单元中包括2个计算子单元,对应于第4列的变量节点计算单元包括1个计算子单元。校验节点计算单元的个数也为2,而在对应于第1、2行的校验节点计算单元中分别包括3个和4个计算子单元。应用实例中,校验节点到变量节点信息向量存储单元和变量节点到校验节点信息向量存储单元中各有7个存储块CNOD_MEMij和VNOD_MEMij,分别用于存储对应于7个基础矩阵节点的变量节点到校验节点信息向量和校验节点到变量节点信息向量。而接收序列向量存储单元、硬判决码字向量存储单元、初始对数似然比向量存储单元、码字对数似然比向量存储单元中均有4个存储块,分别存储对应于基础矩阵nb个列的向量信息。下面介绍其译码方法的实现。在接收到软判决比特后,先计算对数似然比向量数组Q和校验节点到变量节点信息向量矩阵U的初始值,得到Q0(0),Q1(0),Q2(0),Q3(0),以及大小、非零元素位置和基础矩阵相对应的信息矩阵V的7个元素的初始值v00(0),v01(0),v02(0),v10(0),v11(0),v12(0),v13(0)(无v03(0));然后在校验节点处理阵列更新本次迭代的校验节点到变量节点信息矩阵U(k),公式是对于i=0,…,mb-1对于j∈Jset(i)uij(k)=Pij2tanh-1Πj′∈Jset(i)\jtanh(Pij′-1vij′(k-1)2)]]>其中,第一个检验节点(对应于第一行)包括了3个节点的运算,例如第一次迭代时u00(1)=P002tanh-1{tanhP01-1v01(0)2×tanhP02-1v02(0)2}]]>校验节点的更新公式分为求绝对值和求符号两个过程来完成,如下|uij(k)|=Pijφ(Σj′∈Jset\jφ(Pij′-1·vij′(k-1)))]]>sign(uij(k))=-PijΠj′∈Jset\jsign(Pij′-1·vij′(k-1))]]>对于绝对值运算,有|u00(k)|=P00φ(φ(P01-1·v01(k-1)))+φ(P02-1·v02(k-1))))]]>|u01(k)|=P00φ(φ(P00-1·v00(k-1)))+φ(P02-1·v02(k-1))))]]>|u02(k)|=P02φ(φ(P00-1·v00(k-1)))+φ(P01-1·v01(k-1))))]]>其中,定义φ(x)=-log(tanh(x/2))=log(coth(x/2)),x是大于0的实数。符号运算可以用与门来实现。这里每个量都是一个由z个软比特构成的向量,当绝对值和符号分开后,符号向量用z×1二进制比特表示,绝对值向量用z×5个二进制比特表示。每个软二进制比特定点化后,符号用1比特二进制表示,绝对值用5比特二进制表示。该运算用函数表示就是u00(1)=F(v01(0),v02(0)),u01(1)=F(v00(0),v02(0)),]]>u02(1)=F(v00(0),v01(0)).]]>因此,在第一校验节点计算单元CNU1中又包括3个并行计算的计算子单元,分别用于计算校验节点到变量节点信息向量u00,u01,u02,相应地,第二校验节点计算单元CNU1应包括4个计算子单元,分别用于计算校验节点到变量节点信息向量u10,u11,u12,u13。整个校验节点处理阵列共有7个计算子单元CNUij,分别对应于基础矩阵的7个节点。请同时参照图4和图5,示出了校验节点处理阵列与校验节点到变量节点信息向量存储单元、变量节点到校验节点信息向量存储单元的连接关系,即寻址关系。从图4可以看出,每个校验节点计算单元是从对应基础矩阵行中非-1元素对应的变量节点到校验节点信息向量存储单元中的存储块中读数据的。图中虽然没有示出校验节点计算单元中的计算子单元,但从校验节点的更新公式可以看出,每个计算子单元是从相应行中除该子单元对应元素外其它非-1元素在变量节点到校验节点信息向量存储单元中对应的存储块中读数据的,如计算子单元CNU00是从存储块VNOD_MEM_01、VNOD_MEM_02中取数据。从图5可以看出,每个校验节点计算单元是输出到对应基础矩阵行中非-1元素在校验节点到变量节点信息向量存储单元中对应的存储块。图中虽然没有示出校验节点计算单元中的计算子单元,但从校验节点的更新公式可以看出,两者是通过各自对应的基础矩阵中非-1元素而关联并一一对应连接的,即计算子单元CNUij输出到存储块CNOD_MEMij。图6A和图6B示出了应用实例中,对应基础矩阵第一行的校验节点处理单元的结构。在图6A中,CLS是循环左移(circularleftshift)的缩写,CLShb(ij)表示对于一个z个软比特的向量循环左移hb(ij)位,其中hb(ij)是基础矩阵Hb的第i行第j列元素,可以从基础矩阵中相应的存储块读取。同理,CRShb(ij)表示对于一个z个软比特的向量循环右移hb(ij)位。模块LUT是查找表(Lookuptable),主要用来实现函数φ(x),可以采用3比特的分段函数线性近似(8阶量化),同时可以采用非均匀量化来减小量化误差,这由采用的具体实现算法决定。上述所有的运算都是以大小为z个软比特的向量为基本单位,LUT实现了对向量的每个元素的查找表运算。同理,对应基础矩阵第二行的校验节点计算单元结构类似。这两个校验节点处理阵列共同构成了此译码器的校验节点处理阵列(CNUs)。图6B显示了对应基础矩阵第一行的校验节点处理单元通过“与门”来实现符号运算的结构。下面继续讨论应用实例中变量节点的更新,由下面的公式来表示forj=0,…,nb-1fori=0,…,mb-1vij(k)=Qj(0)+Σi′∈Iset/jui′j(k-1)]]>forj=0,…,nb-1Qj(k)=Qj(0)+Σi′∈Isetui′j(k)]]>对应于基础矩阵第1列的变量节点包括两个计算子单元,运算如下v00(k)=Q0(0)+u10(k-1)]]>v10(k)=Q0(0)+u00(k-1)]]>而本次迭代中对应基础矩阵第一列的接收码字对数似然比Q0(k)=Q0(0)+u00(k)+u10(k)]]>图7示出了对应基础矩阵第一列的变量节点处理阵列的结构,该处理机由一些加法器组成,所有的加法运算都是大小为z个软比特的向量加。对应基础矩阵的第2到第4列的变量节点处理阵列结构和运算均类似,它们一起构成了本应用实例译码器的变量节点处理阵列。从寻址关系上,从图4可以看出,每个变量节点计算单元是从对应基础矩阵列中非-1元素对应的校验节点到变量节点信息向量存储单元中的存储块中读数据的。图中虽然没有示出变量节点计算单元中的计算子单元,但从变量节点的更新公式可以看出,每个计算子单元是从基础矩阵相应列中除该子单元对应元素外其它非-1元素在变量节点到校验节点信息向量存储单元中所对应的存储块中读数据的,如计算子单元VNU00是从存储块CNOD_MEM_10中取数据。从图5可以看出,每个变量节点计算单元是输出到对应基础矩阵列中非-1元素对应的变量节点到校验节点信息向量存储单元中的存储块。图中虽然没有示出变量节点计算单元中的计算子单元,但从变量节点的更新公式可以看出,两者是通过各自对应的基础矩阵中非-1元素而关联并一一对应连接的,即计算子单元VNUij输出到存储块VNOD_MEMij。图7A和图7B中示出了用加法器和减法器实现上述变量节点更新公式的结构,一个用于完成绝对值运算,另一个用于完成符号运算。码字对数似然比计算单元也分为nb个子计算单元,分别对应于基础矩阵中的一列,每一个子计算单元除接收初始对数似然比向量存储单元中对应于该节点所在列的存储块中的初始对数似然比向量外,还要获取校验节点到变量节点信息向量存储单元中该列所有节点对应的存储块的校验节点到变量节点信息向量。本发明译码装置的第二实施例本实施例的译码装置的硬件结构对应于简化形式的对数域向量译码方法,如图9所示。本实施例与第一实施例要实现的功能是一致的。但由于对应于不同的算法,所以在结构上有所差异。为了说明两者的异同,可以把图3中的结构单元按另一种方式进行划分,即划分为由接收码字向量存储单元、向量初始值计算单元、初始对数似然比向量存储单元组成的初始值运算模块;由双向网络A和B、变量节点到校验节点信息向量存储单元、校验节点到变量节点信息向量存储单元、校验节点处理阵列、变量节点处理阵列、码字对数似然比计算单元组成的迭代运算模块;由原始基础矩阵存储单元、基础矩阵修正单元、修正后的基础矩阵存储单元组成的基础矩阵处理模块;由码字对数似然比向量存储单元、硬判决检测单元和硬判决码字向量存储单元组成的硬判决检测模块;以及控制模块。对比图3和图9,可以看出,本实施例初始值运算模块、基础矩阵处理模块和硬判决检测模块所包括的单元、单元的功能以及单元间的连接关系与第一实施例都是相同的,唯一的差别是向量初始值计算单元不必计算变量节点到校验节点信息向量的初始值。对于这3个模块的各个单元,在此不再赘述。如图9所示,本实施例译码装置的迭代运算模块包括节点更新处理阵列(MPUs)、由读网络和写网络组成的双向网络、校验节点到变量节点信息向量存储单元和码字对数似然比计算单元。其中校验节点到变量节点信息向量存储单元包括L个存储块,L为基础矩阵中非-1元素的数量,每个存储块用于存储节点更新处理阵列输出的要传递的L个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素。节点更新处理阵列由Mb个分别对应于基础矩阵Mb行的计算单元组成。每个计算单元又包括分别对应于基础矩阵该行中所有非-1元素的若干计算子单元,共有L个计算子单元,各个子单元通过读网络从校验节点到变量节点信息向量存储单元相应的存储块中读出校验节点到变量节点信息向量,从码字对数似然比向量存储单元相应的存储块中读出码字对数似然比向量,从修正后的基础矩阵存储单元中读出相应元素值,完成一次节点更新运算(见式(4)),然后通过写网络将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块。双向缓冲网络中,读网络提供节点更新处理阵列从校验节点到变量节点信息向量存储单元、码字对数似然比向量存储单元及修正后的基础矩阵存储单元中读取相应向量的读地址,写网络提供节点更新阵列将校验节点到变量节点信息向量写入校验节点到变量节点信息向量存储单元时的写地址。更具体地,对于节点更新处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在码字对数似然比向量存储单元中对应的存储块与其相连,还将该元素在修正后的基础矩阵存储单元中对应的存储块与其相连。码字对数似然比计算单元的功能与第一实施例相同,不再重复。本实施例的控制模块用于控制、协调各个单元完成的译码流程也包括初始化的步骤、迭代译码的步骤和译码检测和输出的步骤,其中初始化的步骤和译码检测和输出的步骤与第一实施例基本相同,差别仅在于不需计算出变量节点到校验节点信息向量的初始值,对该两个步骤不再重复。迭代译码步骤由以下操作实现译码器的节点更新处理阵列在每一个时钟周期,从校验节点到变量节点信息向量存储单元中读出校验节点到变量节点信息向量,从码字对数似然比向量存储单元中读出码字对数似然比向量,从修正后的基础矩阵存储单元中读出基础矩阵的元素值,送到相应的子计算单元完成节点更新运算,然后将得到的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元相应的存储块中。同时,在每一个时钟周期,从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元的每一个存储块中读出一个初始对数似然比向量和校验节点到变量节点信息向量,送到相应的码字对数似然比计算子单元,计算出此次迭代的码字对数似然比向量,再写入到码字对数似然比向量存储单元相应的存储块。综上所述,本发明对于不同的码长可以采用相同的上述译码器结构。不同之处只是因为修正的原因使保存hijb的寄存器的内容不同,因为扩展因子不同的原因使每个节点的循环移位寄存器中有效向量长度不同。在运算方面,向量间运算和译码流程都完全相同;只是节点内向量运算的向量长度不同,循环移位的位数不同。因此,本发明提供的译码器基于向量译码算法,对于同一码率不同码长的LDPC码,具有相同的硬件拓扑结构,对于普通BP算法而言,所需要的存储空间达到最小,硬件实现复杂度低,适合并行实现。本发明的译码器,适合在大规模集成电路或者FPGA(硬件实现)中使用,也可以在DSP(软件实现)中使用。因此,本发明提供的算法和译码器不需要存储和访问很大的奇偶校验矩阵,只需要基础矩阵,所以实现复杂度大大降低;由于不需要存储奇偶校验矩阵,所以不需要存储稀疏矩阵元素的访问索引,所以显著地减少存储容量的需要;由于只需要基础矩阵就可以完成运算,所以省略了矩阵扩展这个步骤;由于译码器的拓扑只依赖于基础矩阵,所以特定码率不同码长的LDPC码可以采用统一的译码器。由于算法是基于向量运算的,所以非常适合于并行运算。总之,本算法和译码器是基于单位阵以及循环移位矩阵LDPC码的最佳方案,尤其对于变码长情况意义较大。编码器也可以用类似的向量运算完成,此时这种基于单位阵以及循环移位矩阵的LDPC码就可以变成为向量LDPC码。本发明在以上实施例的基础上,还可以有各种变换,例如,在另一实施例中,当译码器只对应于一种码长时,可以不需要基础矩阵修正单元,直接从基础矩阵存储单元中读出元素值,或者将相应数据直接配置到相应的节点运算阵列即可。权利要求1.一种基于单位阵及其循环移位阵的LDPC码向量译码方法,采用校验矩阵H={(Pij)z×z}mb×nb]]>,唯一对应于基础矩阵Hb={hijb}mb×nb,]]>i∈,j∈,迭代次数为k,扩展因子为z,Iset(j)是Hb中第j列非-1元素行索引集合,Jset(i)是Hb中第i行非-1元素列索引集合,该方法包括以下步骤(a)将输入译码器的接收数据Y=[y0,y1,…,yN-1]划分为nb组,令接收序列向量数组R={Rj}1×nb]]>中的元素Rj=[yjz,yjz+1,…,y(j+1)z-1];(b)令k=0,根据接收序列向量数组R得到可信度向量数组的初始值,并得到传递信息向量矩阵的初始值,所述向量均为1×z软比特的向量;(c)利用k-1次迭代得到的所述传递信息向量矩阵、可信度向量数组以及基础矩阵的非-1元素值hij进行更新运算,得到第k次迭代后的传递信息向量矩阵和可信度向量数组,所有运算中的最小运算单位都是1×z软比特的向量(d)对所述可信度向量数组进行硬判决得到硬判决向量数组S={Sj}1×nb,]]>Sj为1×z行向量,然后根据Ti=Σj=1nbPij-1SjT]]>计算得到奇偶校验向量数组T={Ti}mb×1;]]>(e)判断向量数组T是否为全0,若是,则译码成功,输出硬判决码字,结束;否则,令k=k+1,再判断k是否少于最大迭代次数,如果是,返回步骤(c),否则,译码失败,结束。2.如权利要求1所述的向量译码方法,其特征在于,该方法为简化形式的对数域向量译码方法,其中所述步骤(b)中,利用接收数据向量数组R完成校验节点到变量节点信息向量矩阵U={uij}mb×nb]]>和码字对数似然比向量数组Q={Qj}1×nb]]>中所有非零向量初始值的运算,该步通过以下循环运算完成外循环j=0,…,nb-1,内循环i∈Iset(j),算式为uij(0)=0,]]>Qj(0)=2Rj/σ2,]]>σ2为噪声方差;所述步骤(c)中进一步分为以下步骤(c1)根据上一次迭代的校验节点到变量节点信息向量矩阵U(k-1)和码字对数似然比向量数组Q(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(k)中所有的非零向量,实现节点更新,该步通过以下循环运算完成外循环i=0,…,mb-1,内循环j∈Jseet(i),算式为uij(k)=Pij2tanh-1Πj′∈Jset(i)\jtanh(Pij-1Qj(k-1)-Pij′-1uij′(k-1)2)]]>(c2)根据最初对数似然比向量数据Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的码字对数似然比向量数组Q(k)中所有的非零向量,即对任一个j=0,…,nb-1,计算Qj(k)=Qj(0)+Σi′∈Iset(j)ui′j(k);]]>且所述步骤(d)中,是对码字对数似然比向量数组Q(k)进行硬判决。3.如权利要求1所述的向量译码方法,其特征在于,该方法为一般形式的对数域向量译码方法,其中所述步骤(b)中,利用接收数据向量数组R完成对变量节点到校验节点信息向量矩阵V={vij}mb×nb]]>和码字对数似然比向量数组Q={Qj}1×nb]]>中所有非零向量初始值的计算,该步通过以下循环运算完成外循环j=0,…,nb-1,内循环i∈Iset(j),算式为vij(0)=Qj(0)=2Rj/σ2,]]>σ2为噪声方差;所述步骤(c)中进一步分为以下步骤(c1)根据上一次迭代的V(k-1)和R(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵U(k)中所有的非零向量,实现校验节点更新,该步通过以下循环运算完成外循环i=0,…,mb-1,内循环j∈Jset(i),算式为uij(k)=Pij2tanh-1Πj′∈Jset(i)\jtanh(Pij′-1vij′(k-1)2)]]>(c2)根据最初对数似然比向量数组Q(0)和本次迭代的校验节点到变量节点信息向量矩阵U(k),计算本次迭代的变量节点到校验节点信息向量矩阵V(k)中所有的非零向量,实现变量节点更新,通过以下循环运算完成外循环j=0,…,nb-1,内循环i=0,…,mb-1,算式为vij(k)=Qj(0)+Σi′∈Iset(j)\iui′j(k)]]>同时计算本次迭代的码字对数似然比数组Q(k)中所有的非零向量,即对任一个j=0,…,nb-1,计算Qj(k)=Qj(0)+Σi′∈Iset(j)ui′j(k);]]>且所述步骤(d)中,是对码字对数似然比向量数组Q(k)进行硬判决。4.如权利要求1所述的向量译码方法,其特征在于,该方法为概率域向量译码方法,其中所述步骤(b)中,是利用接收数据数组R,计算变量节点到校验节点信息向量矩阵Q0={Qij0}mb×nb,]]>Q1={Qij1}mb×nb]]>和向量矩阵ΔQ={ΔQij}mb×nb,]]>以及码字概率向量数组F0={Fj0}1×nb]]>和F1={Fj1}1×nb]]>中所有非零向量的初始值,通过以下循环运算完成外循环j=0,…,nb-1,内循环i∈Iset(j),算式为{Qij0=Fj0=11+e-2Rj/σ2,Qij1=Fj1=1-Qij0,ΔQij=Qij0-Qij1}]]>所述步骤(c)中进一步分为以下步骤(c1)根据上一次迭代的ΔQ(k-1),更新本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k)中所有的非零向量,实现校验节点更新,通过以下循环运算完成外循环i=0,…,mb-1,内循环j∈Jset(i),算式为ΔRij(k)=PijΠj′∈Jset(i)\jPij′-1ΔQij′(k-1),Rij0(k)=(1+ΔRij(k))/2,Rij1(k)=1-rmn0=(1-ΔRij(k))/2]]>(c2)根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算本次迭代的变量节点到校验节点信息向量矩阵Q0(k),Q1(k)中所有的非零向量,实现变量节点更新,通过以下循环运算完成外循环j=0,…,nb-1,内循环i∈Iset(j),算式为{Qij0(k)=αijFj0Πi′∈Iset(j)\iRi′j0(k),Qij1(k)=βijFj1Πi′∈Iset(j)\iRi′j1(k)}]]>同时,根据最初的码字概率向量数组F0、F1和本次迭代的校验节点到变量节点信息向量矩阵R0(k),R1(k),计算变量节点n取值为0和1的伪后验概率向量数组F0(k),F1(k)中所有的非零向量,即对任一j=0,…,nb-1,计算{Fj0(k)=αjFj0Πi′∈Iset(j)Ri′j0(k),Fj1(k)=βjFj1Πi′∈Iset(j)Ri′j1(k)}]]>其中αmn和βmn为归一化系数使得qmn0+qmn1=1;]]>且所述步骤(d)中,是根据F0(k),F1(k)的大小硬判决得到向量数组S。5.如权利要求1所述的向量译码方法,其特征在于,所述对向量的运算包括向量四则运算、向量循环移位和向量的函数运算,向量的四则运算通过两个向量相对应元素的四则运算来完成,向量与Pij′和Pij′-1相乘通过对向量元素的循环右移或左移hijb位来完成,向量的函数运算可以通过对向量中每个元素求函数来完成。6.如权利要求2或3所述的向量译码方法,其特征在于,所述校验节点到变量节点信息向量和变量节点到校验节点信息向量用定点表示,每个向量包括z个软比特,每个软比特定点为6个二进制比特。7.如权利要求2、3或4所述的向量译码方法,其特征在于,所述迭代解码的校验节点更新处理,是采用上述标准化的置信度传播算法或者该算法的以下近似算法中的一种来实现的BP-Based算法、APP-based算法、均匀的最大置信度传播算法,最小和算法以及最小和查找表算法。8.一种基于单位阵及其循环移位阵的LDPC码向量译码装置,其特征在于,包括基础矩阵处理模块、初始值运算模块、迭代运算模块、硬判决检测模块和控制模块,其中所述基础矩阵处理模块包括基础矩阵存储单元,该单元具有L个存储块,每个存储块用于存储基础矩阵Hb={hijb}mb×nb]]>中的一个非-1元素值hijb≠-1,]]>L为基础矩阵中非-1元素的个数,i∈,i∈;所述初始值运算模块用于接收输入数据Y=[y0,y1,…,yN-1]并缓存在nb个存储块中,然后计算出可信度向量数组的初始值,存储在nb个存储块中,并得到传递信息向量矩阵的初始值;所述迭代运算模块用于利用上一次迭代得到的传递信息向量矩阵、可信度向量数组以及基础矩阵的非-1元素值hij进行更新运算,得到本次迭代后的传递信息向量矩阵和可信度向量数组;所述硬判决检测模块用于对迭代得到的可信度向量数组进行硬判决得到硬判决向量数组S={Sj}1×nb,]]>存储在nb个存储块中,然后根据Ti=Σj=1nbPij-1SjT]]>计算,并判决得到的奇偶校验向量数组T={Ti}mb×1]]>是否为全0;所述控制模块用于控制其它模块完成初始值运算、迭代运算和硬判决检测,在数组T为全0时,输出硬判决码字,译码成功,结束;T不为全0时,再判断迭代次数是否小于最大迭代次数,如是,继续下一次迭代,如达到最大迭代次数,则译码失败,结束;并且,所有存储块均为可以存储z个软比特的存储块,各数组和矩阵元素间的运算均为大小为z个软比特的向量运算,各模块的计算单元从相应的存储块直接读取和写入数据,每次传输的信息数据总是z个软比特的整数倍,其中,z为扩展因子。9.如权利要求8所述的向量译码装置,其特征在于,所述存储块的大小为zmax个软比特,其中,zmax是特定码率最大码长的低密度奇偶校验码对应的扩展因子。10.如权利要求8所述的向量译码装置,其特征在于,所述各个计算单元与相应的存储块之间是用硬件建立固定的连接,实现对数据的寻址。11.如权利要求8所述的向量译码装置,其特征在于,所述基础矩阵处理模块中的基础矩阵存储单元中存储的是原始基础矩阵的元素值;或者,所述基础矩阵处理模块中的基础矩阵存储单元是指修正后的基础矩阵存储单元,该处理模块还包括原始基础矩阵存储单元和基础矩阵修正单元,且所述迭代运算模块的计算单元还与该修正后的基础矩阵存储单元的相应存储块中相连以读取数据。12.如权利要求8所述的向量译码装置,其特征在于,所述初始值运算模块包括接收码字向量存储单元,用于缓存接收的码字序列Y=[y0,y1,…,yN-1],以接收序列向量数组R={Rj}1×nb]]>的形式存储在nb个存储块中,每个存储块存储一个向量Rj=[yjz,yjz+1,…,y(j+1)z-1];向量初始值计算单元,用于读出接收序列向量Rj,计算出初始对数似然比向量数组Q={Qj}1×nb,]]>Qj(0)=2Rj/σ2,]]>σ2为噪声方差;初始对数似然比向量存储单元,包括nb个存储块,分别存储所述初始对数似然比向量数组的nb个向量Qj。13.如权利要求12所述的向量译码装置,其特征在于,所述迭代运算模块包括校验节点到变量节点信息向量存储单元、节点更新处理阵列、由读网络和写网络组成的双向缓冲网络和码字对数似然比计算单元,其中所述校验节点到变量节点信息向量存储单元包括L个存储块,每个存储块用于存储节点更新处理阵列输出的要传递的L个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素;所述节点更新处理阵列由Mb个分别对应于基础矩阵Mb行的计算单元组成,每个计算单元又包括分别对应于基础矩阵该行中所有非-1元素的多个计算子单元,共有L个,各计算子单元通过读网络从校验节点到变量节点信息向量存储单元和码字对数似然比向量存储单元的相应存储块中读取数据,完成一次节点更新运算,然后通过写网络将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块;所述双向缓冲网络中,对于所述节点更新处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,读网络将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,将该元素所在基础矩阵的行中除该元素外所有其它非“-1”元素在码字对数似然比向量存储单元中对应的存储块与其相连;所述码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。14.如权利要求12所述的向量译码装置,其特征在于,所述迭代运算模块包括校验节点到变量节点信息向量存储单元,变量节点到校验节点信息向量存储单元,变量节点处理阵列,校验节点处理阵列,包括读网络A、写网络A、读网络B和写网络B的双向缓冲网络,以及码字对数似然比计算单元,其中所述校验节点到变量节点信息向量存储单元,包括L个存储块,每个存储块用于存储一个校验节点到变量节点信息向量,每个校验节点到变量节点信息向量对应于基础矩阵中的一个非-1元素;所述变量节点到校验节点信息向量存储单元,包括L个存储块,每个存储块用于存储一个变量节点到校验节点信息向量,每个变量节点到校验节点信息向量对应于基础矩阵中的一个非-1元素;所述变量节点处理阵列由Nb个变量节点计算单元组成,每个计算单元包括多个对应于基础矩阵中该变量节点对应列中所有非-1元素的计算子单元,各计算子单元通过读网络B从校验节点到变量节点信息向量存储单元和初始对数似然比向量存储单元的相应存储块中读取数据,完成变量节点更新运算,然后通过写网络B将此次更新后的变量节点到校验节点信息向量写入到变量节点到校验节点信息向量存储单元相应的存储块;所述校验节点处理阵列由Mb个校验节点计算单元组成,每个计算单元包括多个对应于基础矩阵中该校验节点对应行中所有非-1元素的计算子单元组成,各计算个子单元通过读网络A从变量节点到校验节点信息向量存储单元相应的存储块中读取数据,并结合基础矩阵中对应于该计算子单元的元素的值,完成校验节点更新运算,然后通过写网络A将更新后的校验节点到变量节点信息向量写入到校验节点到变量节点信息向量存储单元中相应的存储块;对于校验节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,所述读网络A将该元素所在基础矩阵的行中除该元素外所有其它非-1元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连,所述写网络A将该元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连;对于变量节点处理阵列中对应于基础矩阵某个非“-1”元素的计算子单元,所述读网络B将该元素所在基础矩阵的列中除该元素外所有其它非-1元素在校验节点到变量节点信息向量存储单元中对应的存储块与其相连,还将该元素所在基础矩阵的列在初始对数似然比向量存储单元对应的存储块与其相连,写网络B将该元素在变量节点到校验节点信息向量存储单元中对应的存储块与其相连;所述码字对数似然比计算单元由nb个计算子单元组成,每个计算子单元从初始对数似然比向量存储单元和校验节点到变量节点信息向量存储单元中相应的存储块获取对数似然比向量初始值和此次迭代后的校验节点到变量节点信息向量,计算出此次迭代的一个码字对数似然比向量。15.如权利要求13和14所述的向量译码装置,其特征在于,所述硬判决检测模块包括码字对数似然比向量存储单元,包括nb个存储块,用于存储每次迭代得到的nb个码字对数似然比向量Qj(k);硬判决检测单元,用于对译码产生的码字对数似然比向量数组Q进行硬判决得到nb个的硬判决码字向量,并判断奇偶校验向量数组T是否为全0;硬判决码字向量存储单元,包括nb个存储块,用于存储硬判决得到的nb个硬判决码字向量。全文摘要一种基于单位阵及其循环移位阵的LDPC码向量译码方法及其装置,先将接收数据划分为包含n文档编号H03M13/00GK1956368SQ200510114589公开日2007年5月2日申请日期2005年10月26日优先权日2005年10月26日发明者徐俊申请人:中兴通讯股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1