CN1996764A - 基于奇偶校验矩阵的ldpc码的译码方法及译码器 - Google Patents

基于奇偶校验矩阵的ldpc码的译码方法及译码器 Download PDF

Info

Publication number
CN1996764A
CN1996764A CN 200710063390 CN200710063390A CN1996764A CN 1996764 A CN1996764 A CN 1996764A CN 200710063390 CN200710063390 CN 200710063390 CN 200710063390 A CN200710063390 A CN 200710063390A CN 1996764 A CN1996764 A CN 1996764A
Authority
CN
China
Prior art keywords
matrix
check
information
node
row
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
CN 200710063390
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.)
Beihang University
Original Assignee
Beihang 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 Beihang University filed Critical Beihang University
Priority to CN 200710063390 priority Critical patent/CN1996764A/zh
Publication of CN1996764A publication Critical patent/CN1996764A/zh
Priority to CN2008100009462A priority patent/CN101232288B/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Error Detection And Correction (AREA)

Abstract

本发明提供了一种基于对奇偶校验矩阵进行矩阵分裂的LDPC译码方法和译码器。首先,将矩阵进行分裂;基于分裂后的单个新矩阵配置校验节点更新单元(CNU)和变量节点更新单元(VNU),并安排校验节点更新运算和变量节点更新运算,使其分别对各个新矩阵进行中间信息的运算后,更新原来整个的奇偶校验矩阵的校验节点信息和变量节点信息,并重复以上运算步骤进行迭代,直至译码成功或达最大迭代次数时结束。应用本发明提供的译码方法和译码器进行LDPC码译码时,与进行矩阵分裂前的译码方案相比,在按照奇偶方式分裂时,在相同的码速率下,硬件资源规模减小接近1/3;在相同的硬件资源下,译码速率提高接近1/3。

Description

基于奇偶校验矩阵的LDPC码的译码方法及译码器
技术领域
本发明属于通信领域,具体涉及一种译码方法和译码器。
背景技术
LDPC码,全称Low Density Parity Check Code,即低密度奇偶校验码。在目前已有的编码方法中,LDPC码的编码方法在某些情况下已经显示出了接近香农限(Shannon’s limit)的编码性能;在译码方面,与同样是长码的Turbo码相比,LDPC码的误码平层(error floor)出现在很低的误码率区域,且错误码字无法检测的概率为一个极低的非常接近0的值;LDPC码的奇偶校验矩阵H的绝大多数元素为“0”,此即“低密度”的命名由来,而这样的特性使其能够通过简单易于实现的译码方法进行译码,具有极高的实用价值。由于以上几点原因,使得LDPC在近年来成为研究与应用的热点,例如:第二代卫星数字电视视频广播标准(DVB-S2)以及我国的数字电视地面传输标准都使用LDPC码作为核心的信道编码,但就其译码方法的应用而言,还存着很多值得研究的问题。
例如:对比文献1:CN200510081842.5公开的LDPC码译码器和方法提供了一种可以在同一时间段内,对奇偶校验矩阵的行和列进行两种不同更新的译码方案,但其对于奇偶校验矩阵的各行采取全并行的译码器结果,因此,其将耗费巨大的资源,对于一些码长较长、矩阵规模较大的LDPC码(例如,中国数字电视地面传输标准中所使用的LDPC码)而言显然是不适合的。
又例如:对比文献2:T.Zhang and K.K Parhi,“A54MBPS(3,6)-regularFPGA LDPC decoder”,IEEE Proc.Of ICC,May 2003。该文献中提出一种在目前在本领域内通用的部分并行的译码器及译码方法,但其更适用于规则码,而且对监督矩阵的行重和列重有特殊的要求,因此该译码方案对于非规则码在译码效率方面尚不能使人满意,且对于码长较长、矩阵规模较大的LDPC码,仍存在耗费资源较大的瓶颈。
发明内容
本发明的目的在于,提供一种低密度奇偶校验码的译码方法,本发明的另一个目的在于提供一种LDPC码译码器装置;用以解决节约硬件资源或提高译码速率的问题。
本发明中的低密度奇偶校验码的译码方法,其所应用的奇偶校验矩阵被划分为p×q个大小为a×a的子块,每个子块都用循环行列式或0矩阵填充,此方法具有下列步骤:将奇偶校验矩阵进行矩阵分裂,得到多个新矩阵;基于矩阵分裂后的多个新矩阵进行译码。
该基于多个新矩阵的概率译码优选为迭代译码,具有以下步骤:步骤1:分别地、顺序地对各个新矩阵的用于更新校验信息的中间信息进行更新,该校验信息为与各个新矩阵的各检验节点相关的变量节点上的信息,其中,各行中的变量节点为各个新矩阵中的各行中数值为“1”的位置;步骤2:根据各个新矩阵更新后的全部中间信息,顺序对各个新矩阵的校验信息进行更新;步骤3:根据各个新矩阵更新后的校验信息,顺序对各个新矩阵中的变量信息进行更新,该变量信息为与各个新矩阵的各变量节点相关的校验节点上的信息,其中,各行中的校验节点为各个新矩阵中的各列中数值为“1”的位置;步骤4:重复上述步骤1至步骤3,进行迭代,直到译码成功或满足迭代停止条件。
该基于多个新矩阵的概率译码还可以具有以下步骤:步骤1:分别地、顺序地对各个新矩阵的用于更新校验信息的中间信息进行更新,该校验信息为与各个新矩阵的各检验节点相关的变量节点上的信息;步骤2:根据该各个新矩阵更新后的全部中间信息,顺序对各个新矩阵的校验信息进行更新;步骤3:根据每个新矩阵更新后的校验信息,在步骤2顺序对其它新矩阵的校验信息进行更新的同时,对已更新了校验信息的新矩阵中的变量信息进行更新;步骤4:重复步骤1至步骤3,进行迭代,直到译码成功或满足迭代停止条件。
本发明的另一个目的即提供一种LDPC码译码器装置,该装置包括:校验节点更新单元(以下简称CNU),其对各个新矩阵中各行的校验信息以及用于校验信息计算的中间信息进行计算;变量节点更新单元(以下简称VNU),其对各个新矩阵中各列的变量信息进行计算;存储器,其对各个新矩阵的所有校验节点和变量节点,存储校验信息、变量信息、译码器输入信息、用于译码的中间信息和译码结果进行存储;控制器,其对校验节点更新单元和变量节点更新单元的运算进行定序,并对它们与存储器间的数据交换进行控制。其中,校验节点更新单元的个数被配置为等于所述各个新矩阵的行块个数q;变量节点更新单元的个数被配置为等于各个新矩阵的列块个数的最大值r;存储器还存储用于译码的中间信息;控制器被配置为,控制q个校验节点更新单元,对应各个新矩阵中q个子矩阵行中的a行,在a次校验信息和用于校验信息计算的中间信息的计算中进行复用;控制r个变量节点更新单元,对应所述各个新矩阵中r个子矩阵行中的a列,在a次变量信息的计算中进行复用。
上述的q个校验节点更新单元包括:第一查找表单元,其采用查找表方式,将各个新矩阵的各行的变量节点的变量信息转换为概率值,其个数由所属各个新矩阵的各行的变量节点的个数决定;加法器单元,其对第一查找表单元输出的概率值求和;减法器单元;其个数与第一查找表单元个数相同,均以加法器单元输出的概率值的和为被减数,分别减去第一查找表单元输出的概率值;第二查找表单元,其个数与第一查找表单元及减法器单元的个数相同,其输入与减法器单元的输出相连,以与第一查找表单元相同的方式,将其输入转换为概率值;第一符号运算单元,其对各个新矩阵各行的变量节点的变量信息的符号进行符号运算;第二符号运算单元,其个数与减法器单元的个数相同,其从第一符号运算单元输出的符号运算的结果中,分别剔除掉各个新矩阵各行的变量节点的变量信息的符号。
上述的r个变量节点更新单元包括:第一加法器单元,其对各个新矩阵的各列的校验节点的校验信息求和;减法器单元,其以第一加法器单元输出的和为被减数,分别减去各个新矩阵的各列的校验节点的各个校验信息;第二加法器单元,其将第一加法器单元的和与译码器输入信息进行相加;判决单元,其对第二加法器单元的输出进行判决,得到译码结果。
作为一种改进,译码器中的校验节点更新单元还可以包括验算单元,其对当前译码结果是否正确进行验算;所述控制器根据该验算单元的结果,控制译码器继续进行译码计算或者停止译码,输出所述译码结果。
作为另一种改进,还可以在q个校验节点更新单元或所述r个变量节点更新单元中插入流水线,利用该流水线,可以在同一时刻对q个校验节点更新单元或r个变量节点更新单元实行流水流水线操作,各自进行相应的运算。
综上所述,应用本发明提供的译码方法和译码器进行LDPC码译码时,与现有技术所提供的译码方案相比,在相同的码速率下,硬件资源规模减小1/3或在相同的硬件资源下,译码速率提高1/3。
附图说明
图1为本发明所涉及的对LDPC译码所用的奇偶校验矩阵进行奇偶分裂的矩阵分裂方法的示意图。
图2的上半部分为本发明所涉及的LDPC译码所用的奇偶校验矩阵的一个示例,图2的下半部分为根据图1的奇偶分裂方法对该矩阵进行奇偶分裂后的示意图。
图3为以图2中的进行奇偶分裂后的矩阵为基础的LDPC译码器的一个示例。
图4为校验节点更新单元的一个示例。
图5为变量节点更新单元的一个示例。
图6为LDPC迭代译码中的的第n迭代周期和第n+1迭代周期的具体迭代步骤的示意图。
图7为图6的迭代步骤所属的迭代运算的时序简图。
图8为LDPC译码器译码步骤的流程图。
图9为LDPC译码器译码步骤的另一个流程图。
图10的上半部分与图2的上半部分相同,图10的下半部分为对该矩阵进行另一种矩阵分裂方法后的示意图。
图11为基于图10的矩阵分裂方法的LDPC译码器迭代运算的时序简图。
具体实施方式
以下,参照附图对本发明的具体实施方式进行解释说明。
首先描述用于本实施例的奇偶校验矩阵。奇偶检验矩阵又称H矩阵,如图1所示,由(p+1)×(q+1)个Aij(0≤i≤q,0≤j≤p)矩阵组成,Aij作为H矩阵的子矩阵,是0矩阵或循环行列式构成的a×a方阵,且该循环行列式的重量很小。在本实施例中,Aij为由单位阵循环移位而得的a×a方阵或0矩阵。从图2中可见,每一个子矩阵Aij中的斜线表示为矩阵元素为“1”的元素位置的轨迹,而其它空白位置上的元素为“0”。以图2的H矩阵为例,可知,在构成H矩阵的4×10个子矩阵Aij的每一行和每一列中,只有一个元素值为“1”的位置。所以,在整个H矩阵的每一行和每一列中,元素值为“1”的位置数分别为m和n,其中m即是H矩阵的一个子矩阵行(Ai0 Ai1  Aip)中非0矩阵的个数,称为行重;n即是H矩阵的一个子矩阵列(A0j A1j  Aqj)-1中非0矩阵的个数,称为列重。m和n满足n<m,以图2为例,H矩阵的行重为6,列重分别为1、2和4。并且,对于H矩阵中每一行的m值可以不相同,每一列的n值也可以不相同。
对应全部的每行所具有的m,H矩阵包含M(M=a×(m0+m1+L+mi+L+mq))个变量节点;对应全部的每列所具有的n,H矩阵包含N(N=a×(n0+n1+L+nj+L+np))个校验节点。且,必然有M=N。本领域内公知,H矩阵的每一行可以被视为一个奇偶校验方程,对应于H矩阵的第i行的奇偶校验方程被称为第i奇偶校验方程,对于对应于该H矩阵的a×(p+1)个LDPC码字,当且仅当上述码字满足H矩阵的所有奇偶校验方程,也就是a×(q+1)个奇偶校验方程,才能译码成功,得到正确的信息。
要使译码算法对每组LDPC码译码,需要迭代运算,反复交替地进行校验节点更新运算和变量节点更新运算。
校验节点更新运算,由校验节点运算单元(CNU)进行,如下式完成更新,即水平过程(行过程):
A mj = Σ n ∈ N ( m ) n ≠ j Ψ ( L ( q mn ) ) S mj = Π n ∈ N ( m ) n ≠ j sign ( L ( q mn ) ) R mj = - S mj Ψ ( A mj )
上式中,Rij是通过将对应的变量信息L(qmn)传递给H矩阵的第i行的除了第j个外的每一个校验节点而获得的,而Rij是表示与第i个变量节点相关的第j个校验节点所对应的一个LDPC码字位置的校验信息。式中的Rmj和qmn是为了简便对Rij和qij的统一写法。N(m)表示H矩阵中与一个检验节点m相关的所有变量节点的集合。
此外,上式中的sign()表示符号函数,ψ(x)=ln(tanh(|x/2|))=ln((1-e|x|)/(1+e|x|))为概率计算函数,后述,简称为ψ函数。
而迭代运算中的另一部分,变量节点更新运算,由变量节点运算单元(VNU)进行,如下完成更新,即垂直过程(或称“列过程”):
L ( q j ) = Σ m ∈ M ( j ) R mj + ( - 2 r j / σ 2 ) L ( q mj ) = L ( q j ) - R mj
上式中,(-2rj2)为开始迭代前的信道输入,表示第j位xj为1或0的概率信息,它是LDPC码字经信道输出后估计得到的。由此可知,L(qj)在迭代中亦是概率信息,表示在迭代中对应的第j位xj为1或0的概率大小。M(j)表示H矩阵中与一个变量节点j相关的所有检验节点的集合。
其后,对L(qj)判决,判决其对应的xj为0或1。再利用H矩阵中每一行的校验方程进行检验,若H×x=0,译码正确;否则继续迭代直至最大迭代次数。其中x为关于xj(0≤j≤(a×p))的列向量。
实施例1:
首先叙述本发明的一种奇偶校验矩阵的分裂方法
图1为对LDPC译码所用的奇偶校验矩阵(以下简称“H矩阵”)进行奇偶分裂的分裂方法。
图1中的奇偶分裂方法,将H矩阵分为两个矩阵,即H0矩阵和H1矩阵。具体的分割方法为,将H矩阵中列标为0的子矩阵列(A00A100  Aq0)-1抽出作为H0矩阵的第一个子矩阵列,将H矩阵中列标为1的子矩阵列(A01 A11  Aq1)-1抽出作为H1矩阵的第一个子矩阵列;按照相同方法,顺序地将H矩阵中的子矩阵列抽出交替地放入H0矩阵及H1矩阵,上述子矩阵列依照H矩阵中的原有顺序,分别在新矩阵H0及H1中排列。由此,对完成分裂后的H0矩阵及H1矩阵而言,它们各自的行数保持不变与原H矩阵相同,而列数各为原H矩阵的一半,具体地说,若H矩阵的列数为偶数,则H0矩阵和H1矩阵的列数分别为它的1/2;若H矩阵的列数为奇数,则H0矩阵的列数为(p+2)/2,H1矩阵的列数为p/2,其中H矩阵的列数为p+1。
在图1中,为了简便表示,对H0矩阵和H1矩阵中的子矩阵列的列标仍延用其在H矩阵的列标,而对于H0矩阵和H1矩阵中子矩阵列的最后一列的列标a和b,若H矩阵中p为奇数,a=p-1,b=p;若p为偶数,a=p,b=p-1。
图2中上半部分所示的矩阵为本实施例所用的H矩阵,如图所示,该矩阵具有四个子矩阵行和十个子矩阵列,每个子矩阵为a×a的方阵。图2下半部分所示为将上述H矩阵奇偶分裂为H0矩阵和H1矩阵后的情况。
然后叙述奇偶校验矩阵分裂后的一种译码方法。
由于对原矩阵H进行了分裂,并根据分裂后的H0矩阵和H1矩阵重新构造了相应的译码器结构,因此需要对前面所述的迭代步骤进行修改,即在保证达到上述两个算式迭代效果的情况下,对应矩阵分裂后的矩阵结构和译码器结构,重新组织迭代中的计算更新步骤。
下面,对照算式,说明对原迭代算式进行修改后的计算顺序。
具体,将需要完成的水平过程(校验节点更新运算)分为三步:
a.对H0矩阵进行校验节点更新运算,计算出用于后述的H1矩阵的校验节点更新运算的相关信息AmH0和SmH0。对H0矩阵所有m、n,计算:
A mH 0 = Σ n ∈ N ( m ) Ψ ( L ( q mn ) ) 式(1)
S mH 0 = Π n ∈ N ( m ) sign ( L ( q mn ) ) 式(2)
b.对H1矩阵进行校验节点更新运算,一方面计算出原H矩阵的奇数列块中校验节点的信息,另一方面计算出用于H0矩阵的校验节点更新运算的相关信息AmH1和SmH1。对H1矩阵所有m、n,计算:
A mH 1 = Σ n ∈ N ( m ) Ψ ( L ( q mn ) ) 式(3)
A mj = Σ n ∈ N ( m ) n ≠ j Ψ ( L ( q mn ) ) + A mH 0 式(4)
S mH 1 = Π n ∈ N ( m ) sign ( L ( q mn ) ) 式(5)
S mj = Π n ∈ N ( m ) n ≠ j sign ( L ( q mn ) ) × S mH 0 式(6)
R mj = S mj Ψ ( A mj ) 式(7)
c.对H0矩阵进行校验节点更新运算,计算出原H矩阵的奇数列块中校验节点的信息:
A mj = Σ n ∈ N ( m ) n ≠ j Ψ ( L ( q mn ) ) + A mH 1 式(8)
S mj = Π n ∈ N ( m ) n ≠ j sign ( L ( q mn ) ) × S mH 1 式(9)
Rmj/=Smjψ(Amj)    式(10)
另一方面,竖直过程的处理(变量节点更新运算)不变,对H0矩阵和H1矩阵的处理方法相同,只是在不同时间段内,分别对H0矩阵和H1矩阵进行变量节点更新运算,对所有m、n,计算:
( q j ) = Σ m ∈ M ( j ) R mj + ( - 2 r j / σ 2 ) 式(11)
L(qmj)=L(qj)-Rmj    式(12)
最后描述的是根据基于奇偶校验矩阵分裂的译码方法设计的一种译码器及其译码步骤。
对检验矩阵完成奇偶分裂后,根据分裂后的H0矩阵和H1矩阵构造相应的LDPC译码器结构。如图3所示,本实施例中的译码器包括以下部分:存储器单元10、20,分别对应H0矩阵和H1矩阵,用于存储LDPC译码迭代中的信息;校验节点运算单元(CNU)集合30,共包括q个校验节点运算单元,本实施例中,如图3所示,q为4,分别为校验节点运算单元31,32,,34,CNU集合完成校验节点更新运算,即对每一行中校验节点的校验信息进行更新;变量节点运算单元(VNU)集合40,共包括r个变量节点运算单元,在本实施例中如图3所示,r为5,分别为变量节点运算单元41,42,,45,VNU集合完成变量节点更新运算,即对每一列中变量节点的变量信息进行更新;控制器单元0,控制CNU与VNU的输入、输出,对更新、迭代进行定序,并在CNU与VNU的输入、输出时给出其相应的存储器单元10与存储器单元20的读写地址。如上所述,关于本实施例中CNU和VNU的个数的确定:q为H0矩阵、H1矩阵和H矩阵中子矩阵行的数量,本实施例中有q=4,r为H0矩阵、H1矩阵各自的子矩阵列的数量的最大值,本实施例中有r=5,因此,在本实施例中CNU的个数为4,VNU的个数均为5。
上述存储器单元10中的各个存储单元与H0矩阵中每一个矩阵元素为“1”的节点对应,上述存储器单元20中的各个存储单元与H1矩阵中每一个矩阵元素为“1”的节点对应。当与一个校验节点相关的校验节点更新运算结束后,将运算结果写入相应的存储器单元10,完成校验信息更新;当与一个变量节点相关的变量节点更新运算结束后,将运算结果写入相应的存储器单元20,完成变量信息更新;
下面描述本发明译码器的检验节点运算单元。
如图4所示的CNU单元结构为本实施例所用的CNU单元结构,CNU单元31到34均采用此结构。CNU单元包括,x个查找表单元即图4中的LUT301到30x,y个加法器单元311到31y,x个减法器单元321到32x,x个查找表单元331到33x,z个异或单元341到34z以及x个异或单元351到35z。上述代表数值的字母均为整数,下同。
上述CNU单元结构依据式(1)至(10)设计,上述x的值由上述H0矩阵和H1矩阵中各行的行重的最大值决定,在本实施例中,由于如图2所示,H0矩阵和H1矩阵中,行标为2的子矩阵行中各行行重的最大值为4,其余各行行重皆为3,所以将对应行标为2的子矩阵行的检验节点运算单元3中的x定为4,其余的检验节点运算单元1、2、4中的x定为3,查找表单元301到30x用于式(1)、(3)、(4)、(8)中的ψ函数运算,并且,其输出与加法器单元311到31(y-1)的输入相连用于式(1)、(3)、(4)、(8)中的求和,与减法器单元321到32x的输入相连用于式(6)和(8)中除去n=j的情况,而减法单元12(1)到12(x)的输出与查找表单元331到33x相连用于式(7)和(10)中的ψ函数运算;上述y为不大于x的值,仅有加法器单元的个数为y,其用于式(1)、(3)、(4)、(8)中的求和与加法运算,因此,上述y应取不大于x的某值,可以分为几级完成全部求和,当然该求和也可以用一个较复杂的多输入加法器一次完成;上述z为异或单元341至34z的个数,其用于式(2)、(5)、(6)、(9)的符号运算,这些异或单元341到34z可以采取与上述加法器单元311到31y相同的排列结构,这是应有z=y,当然,z也可以取任意不大于x的值,异或单元351到35x用于式(6)和(9)中除去n=j的情况。
下面描述本发明译码器的变量节点运算单元。
如图5所示的VNU单元结构为本实施例所用的VNU单元结构,VNU单元41到4r均采用此结构。VNU单元具有:w个加法器单元401至40w,n个减法器单元411至41n和一个判决单元420。
上述VNU结构依据式(11)和(12)设计,上述n的值由上述H0矩阵和H1矩阵中各列的列重的最大值决定,在本实施例中,由于如图2所示,H0矩阵和H1矩阵中,各子矩阵列中的列重最大值依次是1、2、2、4、4,所以将对应的VNU单元41到4r中的n依次定为1、2、2、4、4;加法器单元20的个数w为不大于n的值,其用于式(11)中的求和加法,因此,上述w应取不大于n的某值,可以分为几级完成全部求和,当然该求和也可以用一个较复杂的多输入加法器一次完成;上述n为减法器单元的个数,其用于式(12)中的减法;判决单元420的输入与加法器40w的输出相连,实现对L(qj)的判决。
下面描述译码器的译码步骤。
下面,将结合图3所示的译码器结构示意图、图4所示的CNU单元结构图及图5所示的VNU单元结构图,对迭代运算顺序和具体计算方法进行说明。
初始化H0部分的步骤:
当接收到来自信道的LDPC码字后,首先,由控制器单元0控制执行初始化步骤。在H0部分的初始化步骤中,控制器单元0在存储器单元10的每一个存储器单元中存储式(13)中的-2rj2,其中,上述-2rj2为每一个校验节点所属列j对应的从通信信道中接收的一组LDPC码字中每个码字xj对应的概率信息。根据式(11)及式(12),令其参加相应的运算步骤。其值将作为L(qmj)的初始值参加后述的校验节点更新运算。并且,作为译码计算的第一个步骤,在H0部分的初始化步骤中,控制器单元0还将对CNU单元31至3q和VNU单元41至单元4r复位。
第一迭代步骤:
这一部分的第一项任务是初始化H1部分。与上述H0部分的初始化步骤类似,由控制器单元0控制执行初始化,控制器单元0在存储器单元20的每一个存储器单元中存储式(13)中的-2rj2。其值将作为L(qmj)的初始值参加后述的CNU运算。另一方面,由于在上述初始化H0部分的步骤中,已经完成了对应H0矩阵的所有校验节点nmj的L(qmj)的初始化,因此可以在本步骤中,在进行初始化H1部分的步骤的同时,可以进行与H0矩阵对应的CNU运算。
如图3所示的译码器中具有q个CNU单元,它们分别对应H0矩阵和H1矩阵中的q个子矩阵行,而上述每个子矩阵行中具有α行,因此对于上述每一个CNU单元而言,需要分别对上述每一行进行校验节点更新运算,才能结束本步骤,而对于这q个CNU而言,它们之间是并行运算的。但是,由于插入了流水线,设流水线级数为N,那么每一行的校验节点信息从输入CNU单元到输出CNU单元就需要Nt的运算时间,显然这是一个群延迟,用T表示。所以,CNU完成本步骤的运算时间应为(a-1)×t+T,如图6所示。在本实施例中,T=4t。
以第一个CNU单元31为例,在本步骤的第一个运算周期中即T1内,其对用于H0矩阵的行标为0的子矩阵行的第一行内的所有变量节点上的检验信息求解的中间信息A0H0和S0H0进行运算并更新。
具体地,译码器进行下述动作S1,如图3所示的控制器单元0在T1运算周期开始后,即控制将H0矩阵的行标为0的子矩阵行中第一行的变量节点对应的存储器单元10中的信息-2rj2(j=1、2…、x)读出,将其作为式(1)和(2)中的L(qmj)并行输入至CNU单元31,然后,如图4所示,进行下述运算过程Sc1:将全部L(q01)至L(q0x)的第一位作为符号位单独计算,其余位被送入查找表单元301至30x,分别求出式(1)中的ψ函数,所述全部L(q01)至L(q0x)的位数一致,均依照希望的量化程度设定;其后,由加法器311至31y完成式(1)中的求和运算,由于在本第一迭代步骤中,A0H1尚无数值,所以控制器0将其输入0,其不影响求和结果,因此该加法器31y的输出即为式(1)所求的A0H0;另一方面,上述全部L(q01)至L(q0x)的第一位,由异或单元341至34z完成式(2)中的符号运算,与上所述同理,S0H1的输入被置0,不影响异或结果,因此该异或单元34z的输出即为式(2)所求的S0H0
由于该CNU单元的结构将在后述迭代步骤中被重用,因此其结构为式(1)、(2)、式(3)至式(7)、式(8)至式(10)的通用结构,从而,对于本第一迭代步骤中,其减法器321至32x、查找表单元331至33x、异或单元351至35x是不必要的。因此,对于经减法器321至32x和查找表单元331至33x输出的Rmj,无论将其存入存储器10或20,或者不存入存储器10或20,其均不介入后续运算中。从而,在第一运算周期T1结束时,由控制器单元0控制,将CNU单元31输出的数据存入H0矩阵行标为0的子矩阵行中第一行的变量节点对应的存储器单元10中的存储单元中,译码器完成动作S1。
与上述第一运算周期T1相同,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上S1的动作,其中,CNU31要在第二运算周期T2至第a运算周期Ta内,分别重复以上运算过程Sc1,由控制器0控制,输入的信息应为H0矩阵中行标为0的子矩阵行中余下的a-1行的各个变量节点的变量信息,输出的信息应各自对应H0矩阵行标为0的子矩阵行中余下的a-1行的各个变量节点。
根据本领域内的公知技术,在图4所示的CNU单元结构中可以插入流水线,从而,上述T1周期与T2周期的运算在时间上可以有一部分重合,即当T1周期内CNU中的查找表单元301向加法器单元311输出数据开始求和运算后,控制器0可以将H0矩阵的行号为0的子矩阵行中第二行的变量节点对应的存储器10中的存储单元中的信息-2rj2(j=1、2…、x)读出,将其作为式(1)和(2)中的L(qmj)并行输入至CNU单元31,并再次开始运算过程Sc1,对用于H0矩阵的行标为0的子矩阵行的第二行内的所有变量节点上的检验信息求解的中间信息AmH0(m=1、2…、a-1)和SmH0(m=1、2…、α-1)进行运算并更新。同理,T2周期与T3周期至Ta-1周期与Ta周期均可在时间上重合,如图6所示。
由于CNU单元31与CNU单元32至CNU单元3q采用相同的结构,且在同一时刻并行运算,因此它们之间的动作特性是相同的,也可以说,在上述的T1周期至Ta周期内进行相同的运算,只不过,CNU单元32至CNU单元3q的输入信息应为H0矩阵中行标为1至q的子矩阵行中a行的各个变量节点的变量信息,输出的信息应各自对应H0矩阵行标为1至q的子矩阵行中的a行的各个变量节点,对于它们各自具体的运算步骤等,将不再赘述。在后述说明中,也将采取与上述类似的说明方式,只说明一个具有代表性的运算单元的动作特性。
至Ta周期动作结束,完成了第一迭代步骤,对于用于后述检验信息求解的中间信息进行了更新。
第二迭代步骤:
以CNU单元31为例,在本步骤的第一个运算周期中即T1内,其对H1矩阵的行标为0的子矩阵行的第一行内的所有变量节点的校验信息R0j和中间信息A0H1、S0H1进行运算并更新。
具体地,译码器进行下述动作S2,如图3所示的控制器单元0在T1运算周期开始后,即控制将H1矩阵的行标为0的子矩阵行中第一行的变量节点对应的存储器单元20中的信息-2rj2(j=1、2…、x)和第一迭代步骤中求出的A0H0、S0H0读出,将它们分别作为式(3)至式(6)中的变量L(qmj)和式(4)及式(6)中的AmH0、SmH0并行输入至CNU单元31,然后,如图4所示,进行下述运算过程Sc2:与运算过程Sc1类似地,将全部L(q01)至L(q0x)的第一位与S0H0作为符号位单独计算,其余位被送入查找表单元301至30x,分别求出式(3)中的ψ函数,所述全部L(q01)至L(q0x)与A0H0的位数均依照希望的量化程度设定。其后,由加法器311至31(y-1)完成式(3)中的求和运算,由加法器31y和减法器321至32x分别完成式(4)中的加法和n≠j的运算,加法器31(y-1)的输出即为式(3)所求AmH1,加法器321至32x分别输出式(4)所求的Amj(j=1、2、…、x);另一方面,上述全部L(q01)至L(q0x)的第一位与S0H0,由异或单元341至34(z-1)完成式(6)中的符号运算,由异或单元34z和异或单元351至35x分别完成式(6)中的符号运算和n≠j的运算,异或单元34(z-1)的输出即为式(5)所求SmH1(m=0),异或单元351至35x分别输出式(6)所求的Smj(m=0;j=1、2、…、x);并且,最后将S0j(j=1、2、…、x)与其对应的经查找表单元331至33x输出的各ψ(A0j)合并,作为式(7)中的各Rmj(m=0;j=1、2、…、x)输出,其中,Smj为与之相对应的Rmj的第一位。
在第一运算周期T1结束时,由控制器单元0控制,将CNU单元31输出的数据存入H1矩阵行标为0的子矩阵行中第一行的变量节点对应的存储器单元20中的存储单元。同时,CNU单元31产生的中间信息A0H1和S0H1也存入到对应的存储器单元20的存储单元中,译码器完成动作S2。
与上述第一迭代步骤相同地,本迭代步骤中,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作S2,其中,CNU单元31要在第二运算周期T2至第a运算周期Ta内,分别重复上述运算过程Sc2,但由控制器单元0控制,输入的信息应为H1矩阵中行标为0的子矩阵行中余下的a-1行的各个变量节点的变量信息与H0矩阵中行标为0的子矩阵行中余下的a-1行中的用于校验信息求解的中间信息AmH0(m=1、2…、a-1)和SmH0(m=1、2…、a-1),输出的信息应各自对应H1矩阵行标为0的子矩阵行中余下的a-1行的各个变量节点。并且,T2周期与T3周期至Ta-1周期与Ta周期均可在时间上重合,如图6所示。
另外,与上述第一迭代步骤相同地,本迭代步骤中,CNU单元31与CNU单元32至CNU单元3q在上述的T1周期至Ta周期内进行相同的运算,其中,CNU单元32至CNU单元3q的输入信息应为H1矩阵中行标为1至q的子矩阵行中a行的各个变量节点的变量信息与H0矩阵中行标为1至q的子矩阵行中a行的用于校验信息求解的中间信息,输出的信息应各自对应H1矩阵行标为1至q的子矩阵行中的a行的各个变量节点。
至Ta周期动作结束,完成了第二迭代步骤,对于H1矩阵中的所有变量节点上的校验信息进行了更新,并且更新了用于后述检验信息求解的中间信息。
第三迭代步骤:
以CNU单元31为例,在本步骤的第一个运算周期中即T1内,其对H0矩阵的行标为0子矩阵行的第一行内的所有变量节点的校验信息R0j进行运算并更新。
具体地,译码器进行下述动作S3,如图3所示的控制器0在T1运算周期开始后,即控制将H0矩阵的行号为0的子矩阵行中第一行的变量节点对应的存储器单元10中的存储单元中的信息-2rj2(j=1、2…、x)和第二迭代步骤中求出的A0H1、S0H1读出,将它们分别作为式(8)和式(9)中的变量L(qmj)和AmH1、SmH1并行输入至CNU单元31,然后,如图4所示,进行下述运算过程Sc3:与运算过程Sc1、Sc2类似地,将全部L(q01)至L(q0x)的第一位与S0H1作为符号位单独计算,其余位被送入查找表单元301至30x,分别求出式(8)中的ψ函数,所述全部L(q01)至L(q0x)与A0H1的位数均依照希望的量化程度设定。其后,由加法器311至31(y-1)完成式(8)中的求和运算,由加法器31y和减法器321至32x分别完成式(8)中的加法和n≠j的运算,减法器321至32x分别输出式(10)所求的Amj(m=0;j=1、2、…、x);另一方面,上述全部L(q01)至L(q0x)的第一位与S0H1,由异或单元341至34z和异或单元351至35x完成式(9)中的符号运算和n≠j的运算,异或单元351至35x分别输出式(9)所求的Smj(m=0;j=1、2、…、x);并且,最后将S0j与其对应的经查找表单元331至33x输出的各ψ(A0j)合并,作为式(10)中的各Rmj(m=0;j=1、2、…、x)输出,上述各Smj分别为与之相对应的各Rmj的第一位。
在第一运算周期T1结束时,由控制器单元0控制,将CNU单元31输出的数据存入H0矩阵行标为0的子矩阵中第一行的变量节点对应的存储器单元10中的存储单元,译码器完成动作S3。
与上述第一迭代步骤和第二迭代步骤相同地,本迭代步骤中,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作S3,其中CNU单元31要在第二运算周期T2至第a运算周期Ta内,分别重复上述运算过程Sc3,但由控制器单元0控制,输入的信息应为H0矩阵中行标为0的子矩阵行中余下的a-1行的各个变量节点的变量信息与H1矩阵中行标为0的子矩阵行中余下的a-1行中的用于校验信息求解的中间信息,输出的信息应各自对应H0矩阵行标为0的子矩阵行中余下的a-1行的各个变量节点。并且,T2周期与T3周期至Ta-1周期与Ta周期均可在时间上重合,如图6所示。
另外,与上述第一迭代步骤相同地,本迭代步骤中,CNU单元31与CNU单元32至CNU单元3q在上述的T1周期至Ta周期内进行相同的运算,其中,CNU单元32至CNU单元3q的输入信息应为H0矩阵中行标为1至q的子矩阵行中a行的各个变量节点的变量信息与H1矩阵中行标为1至q的子矩阵行中a行的用于校验信息求解的中间信息,输出的信息应各自对应H0矩阵行标为1至q的子矩阵行中的a行的各个变量节点。
至Ta周期动作结束,对于H0矩阵中的各个校变量点上的校验信息进行了更新。至此,也完成了H矩阵各个变量节点上的所有检验信息的第一次更新。另一方面,由于当第二迭代步骤中的Ta周期动作结束时,已经对与H1矩阵中各个变量节点对应的存储器单元20的存储单元中的所有Rmj进行了更新,即式(11)和式(12)的运算条件已经满足,因此,在本迭代步骤中,对H0矩阵进行校验节点更新运算的同时,可以并行地对H1矩阵进行变量节点更新运算。
以VNU单元41为例,具体地,译码器进行下述动作S4,如图3所示的控制器单元0在T1周期开始后,控制将H1矩阵的列标为1的子矩阵列中第一列的校验节点对应的存储器单元20中的存储单元中的信息-2rj2和第二迭代步骤中求出的Rmj(m=1、2…、n)读出,将它们分别作为式(11)和式(12)中的变量,如图5所示,并行输入至VNU单元41,然后,进行下述运算过程Sv1:由加法器401至40(w-1)完成式(11)中的求和运算,由加法器40w完成式(13)的加法运算,算出L(qj),经判决单元420即输出译码结果xn,由减法器411至41n完成式(12)的运算,输出L(qmj)。为了便于时序的配合,在本实施例中,变量节点运算单元的运算周期与检验节点运算单元的运算周期相同。
在上述第一运算周期T1结束时,由控制器单元0控制,将VNU单元41输出的数据存入H1矩阵列标为1的子矩阵列中第一列的校验节点对应的存储器单元20中的存储单元中,译码器完成动作S4。
与上述其它迭代步骤相同地,本迭代步骤中,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作S4,其中,VNU单元4还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作Sv1,但由控制器单元0控制,输入的信息应为H1矩阵中列标为1的子矩阵列中余下的a-1列的各个校验节点的校验信息,输出的信息应各自对应H1矩阵列标为1的子矩阵列中余下的a-1列的各个校验节点。并且,T2周期与T3周期至Ta-1周期与Ta周期均可在时间上重合,如图6所示。
另外,与上述其它迭代步骤相同地,本迭代步骤中,VNU单元41与VNU单元42至VNU单元4r在上述的T1周期至Ta周期内进行相同的运算,其中,VNU单元42至VNU单元4r的输入信息应为H1矩阵中列标为3到b(b为奇数)的子矩阵列中a列的各个校验节点的校验信息,输出的信息应各自对应H1矩阵列标为3至b的子矩阵中的a列的各个校验节点。
在此处,当需运算列的列重小于n,即输入的Rmj的有效个数小于VNU的输入端口个数,则将此外的无效输入端口的输入设为0,亦不影响运算输出结果,对于此种情况,对后述的VNU运算均适用。
至Ta周期动作结束,完成了第三迭代步骤,对于H1矩阵中的各个校验节点上的变量信息进行了更新。
第四迭代步骤:
由于当第三迭代步骤中的校验节点更新运算的Ta周期动作结束时,已经对与H0矩阵中各个变量节点对应的存储器单元10的存储单元中的所有Rmj进行了更新,即式(11)和式(12)的计算条件已经满足,并且,VNU单元的流水线机构使其有能力开始新的运算。因此,在本迭代步骤中,进行对H0矩阵的变量节点更新运算。以VNU单元41为例,具体地,译码器进行下述动作S5,如图3所示的控制器单元0在T1周期开始后,控制将H0矩阵的列号为0的子矩阵列中第一列的变量节点对应的存储器单元10中的存储单元中的信息-2rj2和第三迭代步骤中求出的Rmj(m=1、2…、n)读出,将它们分别作为式(11)和式(12)中的变量,如图5所示,并行输入至VNU单元41,然后,进行运算过程Sv2,其动作特性与运算过程Sv1相同。
在上述第一运算周期T1结束时,由控制器单元0控制,将VNU单元41输出的数据存入H1矩阵列标为0的子矩阵列中第一列的变量节点对应的存储器单元10中的存储单元中。
与上述其它迭代步骤相同地,本迭代步骤中,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作S5,其中VNU单元41还要在第二运算周期T2至第a运算周期Ta内,顺序重复以上动作Sv2,但由控制器单元0控制,输入的信息应为H0矩阵列标为0的子矩阵列中余下的a-1列的各个校验节点的校验信息,输出的信息应各自对应H1矩阵列标为1的子矩阵列中余下的a-1列的各个校验节点。并且,T2周期与T3周期至Ta-1周期与Ta周期均可在时间上重合,如图6所示。
另外,与上述其它迭代步骤相同地,本迭代步骤中,VNU单元41与VNU单元42至单元4r在上述的T1周期至Ta周期内进行相同的运算,其中,VNU单元42至单元4r的输入信息应为H0矩阵中列标为2到a(a为偶数)的子矩阵列中a列的各个校验节点的校验信息,输出的信息应各自对应H0矩阵列标为2到a的子矩阵列的a列的各个校验节点。
至Ta周期动作结束,完成了第四迭代步骤,对于H0矩阵中的各个校验节点上的变量信息进行了更新。
从第一迭代步骤开始至此,完成了第一个迭代周期。
其它迭代步骤及迭代周期:
另一方面,由于当第三迭代步骤中的变量节点更新的Ta周期动作结束时,已经对与H1矩阵中各个校验节点对应的存储器单元20的存储单元中的所有L(qmj)进行了更新,即式(1)和式(2)的运算条件已经满足,因此,可以开始对H1矩阵进行CNU运算,具体地,对H1矩阵进行水平过程的a步运算,在此也即开始了第二迭代周期。并且,由上可知,第一迭代周期与第二迭代周期在时间上也是有重合的。第二迭代周期中的各迭代步骤仍参照第一迭代周期中的各迭代步骤,但译码器的具体操作对象将对应已完成的变量节点更新运算或校验节点更新运算的H1矩阵或H0矩阵,具体地,在第二迭代周期中:第一迭代步骤,译码器的动作依照第一运算周期中的动作S1,各CNU单元的运算过程Sc1不变,只是对于各CNU单元的输入输出信息,由控制器单元0控制,输入信息应为H1矩阵中各子矩阵行的a行的各变量节点的变量信息,输出的信息应各自对应H1矩阵中各子矩阵行的a行的各个变量节点;第二迭代步骤,译码器的动作依照第一运算周期中的动作S2,各CNU单元的运算过程Sc2不变,只是对于各CNU单元的输入输出信息,由控制器0控制,输入信息应为H0矩阵中各子矩阵行的a行的各变量节点的变量信息与H1矩阵中各子矩阵行中a行的用于校验信息求解的中间信息,输出的信息应各自对应H0矩阵中各子矩阵行的a行的各个变量节点;第三迭代步骤,译码器的动作依照第一运算周期中的动作S3,各CNU单元的运算过程Sc3不变,只是对于各CNU单元的输入输出信息,由控制器单元0控制,输入信息应为H1矩阵中各子矩阵行的a行的各变量节点的变量信息与H0矩阵中各子矩阵行中a行的用于校验信息求解的中间信息,输出的信息应各自对应H1矩阵中各子矩阵行的a行的各个变量节点;而对于并行进行的变量节点更新运算,译码器的动作依照第一运算周期中的动作S4,各VNU单元的运算过程Sv1不变,只是对于各VNU单元的输入输出信息,由控制器单元0控制,输入信息应为H0矩阵中列标为0到a(a为偶数)的子矩阵列中a列的各个校验节点的校验信息,输出的信息应各自对应H0矩阵列标为0到a的子矩阵列的a列的各个校验节点;第四迭代步骤,译码器的动作依照第一运算周期中的动作S5,各VNU单元的运算过程Sv2不变,只是对于各VNU单元的输入输出信息,由控制器0控制,输入信息应为H1矩阵中列标为1到b(b为奇数)的子矩阵列中a列的各个校验节点的校验信息,输出的信息应各自对应H1矩阵列标为1到b的子矩阵列的a列的各个校验节点。
其它的迭代周期均如上述的第一及第二迭代周期所述,交替对H0矩阵和H1矩阵中的校验节点和变量节点的变量信息和校验信息进行运算更新,其中译码器的更新对象,参照图6的第n迭代周期及第n+1迭代周期的迭代步骤示意图及图7的迭代顺序示意图。
以上的迭代运算,由控制器单元0控制,在第m迭代周期的第四迭代步骤中的Ta周期动作结束时停止,其中m为预先设置的最大迭代次数。并且在该第m迭代周期的第三、第四迭代周期中,控制单元0将各个VNU单元41至4r中的判决单元420对应加法器单元40w算出的L(qj)而输出的判决结果xn读出,按照原H矩阵的列顺序排列并输出,完成一组LDPC码字的译码。上述译码器译码步骤的流程图如图8所示。
实施例2:
在实施例1所述的译码器的CNU单元结构的基础上,加入了计算H×x=0的单元。具体地,在保持实施例2的CNU单元结构不变的情况下,加入了s个异或单元,如原CNU的实施例2中的z个异或单元的排列结构而排列,目的在于对输入CNU的x+1个一位信息进行异或,并输出一位的异或结果。
根据实施例2对实施例1的CNU单元结构的修改,需对译码器的控制器单元0的控制进行一定调整,即在保持译码器译码步骤的实施例?的时序不变的情况下,在后一个迭代周期的CNU运算的同时,对前一个迭代周期求出的xn,进行H×x=0计算,若该等式成立,则由控制器单元0发出指令停止当前迭代,输出前一个迭代周期的xn,作为译码结果。
具体地,在前一个迭代周期中,由控制器单元0控制,将VNU在第三、第四迭代步骤中输出的xn分别存入存储器单元10、20中与xn所在列对应的存储单元中;在后一个迭代周期的第一个迭代周期中,在进行H0矩阵或H1矩阵校验节点更新运算的同时,利用上述的本实施例3的CNU结构中增加的异或单元,对存储于存储器单元10或存储器单元20中的需进行校验节点更新运算的H0矩阵或H1矩阵的一行的变量节点对应的xn进行异或计算,并在运算周期T结束时,由控制器单元0对异或计算的结果进行寄存;在第二迭代周期中,对与上述的进行校验节点更新处理的H0矩阵或H1矩阵的一行对应的H1矩阵或H0矩阵的该行,进行CNU运算的同时,对存储于存储器单元20或单元10中的该行的变量节点对应的xn,和由控制器单元0寄存的异或计算的结果,进行异或计算,完成原H矩阵中该行的所有变量节点对应的xn的异或计算。如上所述,通过上述异或计算,从后一迭代周期的第二迭代步骤中的T1周期到Ta周期,即完成了H×x=0的计算,若所有行的异或结果均为0,则说明等式成立,符合迭代停止条件。从而,由控制器单元0控制CNU单元与VNU单元的所有迭代运算停止,并按原H矩阵的列顺序取出存储器单元20和单元10的xn,作为译码结果输出。
上述译码器译码步骤的流程图如图9所示。
实施例3:
此实施例描述了矩阵分裂的另一种方式以及相应的译码步骤。
图10为对LDPC译码所用的奇偶校验矩阵,即H矩阵分裂为三个新矩阵的分裂方法。具体的分割方法为,将H矩阵中列标为0的子矩阵列(A00A10Aq0)-1抽出作为H0矩阵的第一个子矩阵列,将H矩阵中列标为1的子矩阵列(A01 A11 Aq1)-1抽出作为H1矩阵的第一个子矩阵列,将H矩阵中列标为2的子矩阵列(A02 A12Aq2)-1抽出作为H2矩阵的第一个子矩阵列;按照相同方法,顺序地将H矩阵中的子矩阵列抽出交替地放入H0矩阵、H1矩阵及H2矩阵,上述子矩阵列依照H矩阵中的原有顺序,分别在新矩阵H0、H1和H2中排列。由此,对完成分裂后的H0矩阵、H1矩阵和H2矩阵而言,它们各自的行数保持不变与原H矩阵相同,而列数各为原H矩阵的1/3左右,其各自的具体列数如图10所示,其中H0的列数是4,其中H1的列数是3,其中H2的列数是3。
根据本实施例3中的矩阵分裂方法,对译码器中的CNU的个数为4,VNU的个数为4,分别对应H0矩阵、H1矩阵和H2矩阵的子矩阵行的行数和H0矩阵、H1矩阵和H2矩阵的子矩阵列的列数最大值。此外,CNU单元的结构中,具体运算单元的个数,可参照实施例1中的相应部分设置;VNU单元的结构中,具体运算单元的个数,可参照实施例1中的相应部分设置进行设置。
此外,上述的译码器的译码步骤,以矩阵的分裂方法为依据,可参照实施例1中译码器的译码步骤实施,一个迭代周期共有六个迭代步骤,迭代步骤的更新对象如图11所示。译码器及其译码步骤的设计方案是本领域内普通技术人员依据上述说明很容易想到的,不再赘述。

Claims (10)

1.一种基于奇偶检验矩阵的LDPC码的译码方法,其所应用的奇偶校验矩阵被划分为p×q个大小为a×a的子块,每个子块都用循环行列式或O矩阵填充,其特征在于:
首先,将所述奇偶校验矩阵进行分裂,得到多个新矩阵;
其次,对所述多个新矩阵进行译码,即基于分裂后的单个新矩阵配置校验节点更新单元CNU和变量节点更新单元VNU,并安排校验节点更新运算和变量节点更新运算,使其分别对各个新矩阵进行中间信息的运算后,更新原来整个的奇偶校验矩阵的校验节点信息和变量节点信息,并重复以上运算步骤进行迭代,直至译码成功或达最大迭代次数时结束。
2.根据权利要求1所述的一种基于奇偶检验矩阵的LDPC码的译码方法,其特征在于:
所述基于矩阵分裂后的多个新矩阵进行的译码,为迭代译码,分为以下步骤:
步骤1:分别地、顺序地对各个新矩阵的用于更新校验信息的中间信息进行更新,所述校验信息为与各个新矩阵的各检验节点相关的变量节点上的信息,所述各行中的变量节点为各个新矩阵中的各行中数值为“1”的位置;
步骤2:根据所述的各个新矩阵更新后的全部中间信息,顺序对各个新矩阵的校验信息进行更新;
步骤3:根据各个新矩阵更新后的校验信息,顺序对各个新矩阵中的变量信息进行更新,所述变量信息为与各个新矩阵的各变量节点相关的校验节点上的信息,所述各行中的校验节点为各个新矩阵中的各列中数值为“1”的位置;
步骤4:重复所述步骤1至步骤3,进行迭代,直到译码成功或满足迭代停止条件。
3.根据权利要求1所述的一种基于奇偶检验矩阵的LDPC码的译码方法,其特征在于:
所述基于矩阵分裂后的多个新矩阵进行的译码,为迭代译码,具有以下步骤:
步骤1:分别地、顺序地对各个新矩阵的用于更新校验信息的中间信息进行更新,所述校验信息为与各个新矩阵的各检验节点相关的变量节点上的信息,所述各行中的变量节点为各个新矩阵中的各行中数值为“1”的位置;
步骤2:根据所述的各个新矩阵更新后的全部中间信息,顺序对各个新矩阵的校验信息进行更新;
步骤3:根据每个新矩阵更新后的校验信息,在步骤2顺序对其它新矩阵的校验信息进行更新的同时,对已更新了校验信息的新矩阵中的变量信息进行更新,所述变量信息为与各个新矩阵的各变量节点相关的校验节点上的信息,所述各行中的校验节点为各个新矩阵中的各列中数值为“1”的位置;
步骤4:重复所述步骤1至步骤3,进行迭代,直到译码成功或满足迭代停止条件。
4.根据权利要求1或2、3所述的一种基于奇偶检验矩阵的LDPC码的译码方法,其特征在于,所述的矩阵分裂为将奇偶校验矩阵的奇数列块和偶数列块分块,并分别组成两个新矩阵的奇偶分裂方法,所述列块为具有相同列位置的子块的集合。
5.根据权利要求1或2、3所述的一种基于奇偶检验矩阵的LDPC码的译码方法,其特征在于,所述的矩阵分裂为将校验矩阵的列块分别按0、1、2顺序循环编号,并将编号为0、1、2的列块分别组成三个新矩阵的分裂方法,所述列块为具有相同列位置的子块的集合。
6.一种应用权利要求1所述基于奇偶检验矩阵的LDPC码的译码方法的译码器,主要包括:校验节点更新单元CNU,其对所述各个新矩阵中各行的校验信息以及用于所述校验信息计算的中间信息进行计算;变量节点更新单元VNU,其对所述各个新矩阵中各列的变量信息进行计算;存储器,其对应所述各个新矩阵的所有校验节点和变量节点,存储校验信息、变量信息、译码器输入信息和译码结果;控制器,其对所述校验节点更新单元和变量节点更新单元的运算进行定序,并对它们与存储器间的数据交换进行控制;其特征在于:
所述校验节点更新单元的个数被配置为等于所述各个新矩阵的行块个数q;
所述变量节点更新单元的个数被配置为等于各个新矩阵的列块个数的最大值r;
所述存储器还存储用于译码的中间信息;
所述控制器被配置为,控制q个校验节点更新单元,对应所述各个新矩阵中q个子矩阵行中的a行,在a次校验信息和用于校验信息计算的中间信息的计算中进行复用;控制r个变量节点更新单元,对应所述各个新矩阵中r个子矩阵行中的a列,在a次变量信息的计算中进行复用。
7.根据权利要求6所述的一种基于奇偶检验矩阵的LDPC码的译码器,其特征在于,所述q个校验节点更新单元包括:
第一查找表单元,其采用查找表方式,将所述各个新矩阵的各行的变量节点的变量信息转换为概率值,其个数由所属各个新矩阵的各行的变量节点的个数决定;
加法器单元,其对所述第一查找表单元输出的概率值求和;
减法器单元;其个数与所述第一查找表单元个数相同,均以所述加法器单元输出的所述概率值的和为被减数,分别减去所述第一查找表单元输出的所述概率值;
第二查找表单元,其个数与所述第一查找表单元及所述减法器单元的个数相同,其输入与所述减法器单元的输出相连,以与第一查找表相同的方式,将其输入转换为概率值;
第一符号运算单元,其对所述各个新矩阵各行的变量节点的变量信息的符号为进行符号运算;
第二符号运算单元,其个数与所述减法器单元的个数相同,其从所述第一符号运算单元输出的符号运算的结果中,分别剔除掉所述各个新矩阵各行的变量节点的变量信息的符号。
8.根据权利要求6或7所述的一种基于奇偶检验矩阵的LDPC码的译码器,其特征在于,所述译码器中的校验节点更新单元还具有验算单元,其对当前译码结果是否正确进行验算;所述控制器根据所述验算单元的结果,控制译码器继续进行译码计算或者停止译码,输出所述译码结果。
9.根据权利要求6所述的一种基于奇偶检验矩阵的LDPC码的译码器,其特征在于,所述r个变量节点更新单元包括:
第一加法器单元,其对所述各个新矩阵的各列的校验节点的校验信息求和;
减法器单元,其以所述第一加法器单元输出的和为被减数,分别减去所述各个新矩阵的各列的校验节点的所述各个校验信息;
第二加法器单元,其将所述第一加法器单元的和与所述译码器输入信息进行加法;
判决单元,其对所述第二加法器单元的输出进行判决,得到译码结果。
10.根据权利要求6或7、9所述的一种基于奇偶检验矩阵的LDPC码的译码器,其特征在于,所述q个校验节点更新单元或所述r个变量节点更新单元中被配置插入了流水线,利用所述流水线,可以在同一时刻对所述q个校验节点更新单元或所述r个变量节点更新单元进行流水线操作,各自进行相应的运算。
CN 200710063390 2007-01-10 2007-01-10 基于奇偶校验矩阵的ldpc码的译码方法及译码器 Pending CN1996764A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN 200710063390 CN1996764A (zh) 2007-01-10 2007-01-10 基于奇偶校验矩阵的ldpc码的译码方法及译码器
CN2008100009462A CN101232288B (zh) 2007-01-10 2008-01-09 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 200710063390 CN1996764A (zh) 2007-01-10 2007-01-10 基于奇偶校验矩阵的ldpc码的译码方法及译码器

Publications (1)

Publication Number Publication Date
CN1996764A true CN1996764A (zh) 2007-07-11

Family

ID=38251731

Family Applications (2)

Application Number Title Priority Date Filing Date
CN 200710063390 Pending CN1996764A (zh) 2007-01-10 2007-01-10 基于奇偶校验矩阵的ldpc码的译码方法及译码器
CN2008100009462A Expired - Fee Related CN101232288B (zh) 2007-01-10 2008-01-09 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN2008100009462A Expired - Fee Related CN101232288B (zh) 2007-01-10 2008-01-09 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器

Country Status (1)

Country Link
CN (2) CN1996764A (zh)

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102130745A (zh) * 2011-04-07 2011-07-20 山东大学 一种改进的ldpc码的线性规划译码方法
CN101262231B (zh) * 2008-04-25 2011-09-28 浙江大学 一种块状低密度校验码的译码方法及可重构多模式译码器
CN102347774A (zh) * 2010-07-29 2012-02-08 国立清华大学 低密度奇偶检查码编解码方法
CN106464268A (zh) * 2014-01-07 2017-02-22 南布列塔尼大学 非二进制ldpc码的解码
CN106849959A (zh) * 2016-12-30 2017-06-13 北京联想核芯科技有限公司 数据处理方法及译码器
CN106877880A (zh) * 2016-12-30 2017-06-20 北京联想核芯科技有限公司 数据处理方法及译码器
US10447300B2 (en) 2015-10-13 2019-10-15 Hauwei Technologies Co., Ltd. Decoding device, decoding method, and signal transmission system

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102739346B (zh) * 2011-04-08 2015-03-11 晨星软件研发(深圳)有限公司 用于准循环低密度奇偶校验码的再定址解码器与解码方法
CN106209114B (zh) * 2015-04-29 2019-11-12 深圳忆联信息系统有限公司 译码方法及装置
CN108462496B (zh) * 2018-04-24 2021-04-02 成都吉纬科技有限公司 一种基于随机比特流更新的ldpc译码器
CN115842558B (zh) * 2023-02-22 2023-05-05 华中科技大学 基于hls的qc-ldpc译码器的设计方法及qc-ldpc译码器

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100364237C (zh) * 2004-02-09 2008-01-23 清华大学 非规则低密度奇偶校验码的系统码设计方法及其通信系统
CN100550655C (zh) * 2004-11-04 2009-10-14 中兴通讯股份有限公司 一种低密度奇偶校验码的编码器/译码器及其生成方法
CN100486150C (zh) * 2005-01-23 2009-05-06 中兴通讯股份有限公司 基于非正则低密度奇偶校验码的编译码器及其生成方法

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101262231B (zh) * 2008-04-25 2011-09-28 浙江大学 一种块状低密度校验码的译码方法及可重构多模式译码器
CN102347774A (zh) * 2010-07-29 2012-02-08 国立清华大学 低密度奇偶检查码编解码方法
CN102130745A (zh) * 2011-04-07 2011-07-20 山东大学 一种改进的ldpc码的线性规划译码方法
CN102130745B (zh) * 2011-04-07 2013-04-17 山东大学 一种改进的ldpc码的线性规划译码方法
CN106464268A (zh) * 2014-01-07 2017-02-22 南布列塔尼大学 非二进制ldpc码的解码
CN106464268B (zh) * 2014-01-07 2020-03-10 南布列塔尼大学 用于管理校验节点计算装置的方法以及实施该方法的装置和软件
US10447300B2 (en) 2015-10-13 2019-10-15 Hauwei Technologies Co., Ltd. Decoding device, decoding method, and signal transmission system
CN106849959A (zh) * 2016-12-30 2017-06-13 北京联想核芯科技有限公司 数据处理方法及译码器
CN106877880A (zh) * 2016-12-30 2017-06-20 北京联想核芯科技有限公司 数据处理方法及译码器
CN106849959B (zh) * 2016-12-30 2020-08-11 深圳忆联信息系统有限公司 数据处理方法及译码器

Also Published As

Publication number Publication date
CN101232288A (zh) 2008-07-30
CN101232288B (zh) 2010-06-09

Similar Documents

Publication Publication Date Title
CN101232288B (zh) 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器
CN101106381B (zh) 分层的低密度校验码译码器及译码处理方法
CN102412847B (zh) 用联合节点处理来解码低密度奇偶校验码的方法和设备
CN104868925B (zh) 结构化ldpc码的编码方法、译码方法、编码装置和译码装置
US8321747B2 (en) QC-LDPC code decoder and corresponding decoding method
CN106160752B (zh) 用于分层ldpc译码器的提早退出的系统和方法
CN105846830B (zh) 数据处理装置
CN102075198B (zh) 准循环低密度奇偶校验卷积码编译码系统及其编译码方法
CN100542049C (zh) 一种多码率的ldpc码的译码器装置及译码方法
CN106330203A (zh) 一种ldpc的解码方法
US9413390B1 (en) High throughput low-density parity-check (LDPC) decoder via rescheduling
CN102664638A (zh) 基于分层nms算法的多码长ldpc码译码器的fpga实现方法
CN104426554A (zh) 用于低密度奇偶校验码的改善的解码器
CN106936446A (zh) 一种基于多进制ldpc码的高速译码器及其译码方法
CN1937413A (zh) 双涡轮结构低密度奇偶校验码解码器
CN102291153B (zh) Cmmb中ldpc码的译码方法及部分并行译码器
CN101478314A (zh) 一种里德-所罗门编码译码器及其译码的方法
US20170163288A1 (en) On-the-fly evaluation of the number of errors corrected in iterative ecc decoding
CN100544212C (zh) 高速的减少存储需求的低密度校验码解码器
CN101478312A (zh) 一种ldpc译码器及其实现译码的方法
CN100578945C (zh) 一种ldpc码的译码器装置及译码方法
CN101958718B (zh) 用于ldpc码的改进型半并行译码器和译码方法
CN101777920B (zh) 低密度奇偶校验码的编码方法和编码译码装置
CN111525931B (zh) Ldpc译码器、ldpc译码方法、存储介质和电子设备
CN102185615A (zh) 适于并行译码实现的ldpc码构造方法

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