CN101047392A - 一种多码率的ldpc码的译码器装置及译码方法 - Google Patents
一种多码率的ldpc码的译码器装置及译码方法 Download PDFInfo
- Publication number
- CN101047392A CN101047392A CNA200710064695XA CN200710064695A CN101047392A CN 101047392 A CN101047392 A CN 101047392A CN A200710064695X A CNA200710064695X A CN A200710064695XA CN 200710064695 A CN200710064695 A CN 200710064695A CN 101047392 A CN101047392 A CN 101047392A
- Authority
- CN
- China
- Prior art keywords
- check
- cnu
- unit
- row
- node
- 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.)
- Granted
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明提供了一种基于奇偶校验矩阵多码率的LDPC码的译码器装置和译码方法。应用本发明提供的译码器装置和译码方法,可以对多种码率的LDPC码进行译码。首先,将不同码率的校验矩阵进行比较,确定码率的对比关系和行重的对比关系,然后,根据上述对比关系,确定校验节点更新单元(CNU)数目,并对其进行分组,利用这些CNU分组和变量节点更新单元(VNU)来安排不同码率LDPC码字的校验节点更新运算和变量节点更新运算。应用本发明提供的译码器装置和译码方法,不同码率的LDPC码的译码速率相同,而译码器耗费的资源仅与高码率LDPC码率码字单独译码的译码器耗费资源相当。
Description
技术领域
本发明属于通信领域,具体涉及一种译码器装置和译码方法。
背景技术
LDPC码,全称Low Density Parity Check Code,即低密度奇偶校验码。在目前已有的信道编码中,LDPC码在某些情况下已经显示出了接近香农限(Shannon’slimit)的抗差错性能,与同样是长码的Turbo码相比,LDPC码的误码平层(errorfloor)出现在很低的误码率区域,且错误码字无法检测的概率为一个极低的非常接近0的值;LDPC码的奇偶校验矩阵H的绝大多数元素为“0”,此即“低密度”的命名由来,而这样的特性使其能够通过简单易于实现的译码方法进行译码,具有极高的实用价值。由于以上几点原因,使得LDPC在近年来成为研究与应用的热点,例如:第二代卫星数字电视视频广播标准(DVB-S2)以及我国的数字电视地面传输标准都使用LDPC码作为核心的信道编码。在国内外,有相当多的文献讲述了LDPC码的译码方法与结构。
例如:对比文献T.Zhang,“Efficient VLSI Architectures for Error-Correcting Coding”,PH.D Thesis,University of Minnesota,2002。该文献的第四章提出了一种在目前在本领域内通用的部分并行的译码器及译码方法。另一方面,为了适应不同的环境满足不同用户的需求,在有些通信系统中还采用多种码率的信道编码,例如,我国的数字电视地面传输标准就采用了0.4,0.6,0.8三种码率的LDPC码字作为信道编码。但是,如何优化设计多种码率的LDPC码字的统一译码结构,以较小的硬件资源同时实现多种码率码字的译码,就目前公开的技术以及文献而言,在国内外还处于空白。
发明内容
本发明的目的在于,提供一种LDPC码的译码器装置以及译码方法,用以解决多码率下进行译码的硬件资源耗用过多或译码速率降低的问题。
本发明中的译码器装置与译码方法,能够对高,低双码率的LDPC码进行译码,也可以对高,中,低三码率的LDPC码进行译码,这些LDPC码的码长相等,它们所对应的奇偶校验矩阵被划分为若干个大小为a×a的子块,每个子块都用循环行列式或0矩阵填充,并且不同码率对应的子块大小也相等,因此,不同码率对应的奇偶校验矩阵有相同的列块数,记为p。高,中,低三种码率对应的奇偶校验矩阵HH,HM和HL有不相同的行块数,分别记为qH,qM和qL,显然,qH<qM<qL。
本发明提供的一种LDPC码译码器装置包括:校验节点更新单元(以下简称CNU),其对各种码率对应的校验矩阵中各行的校验信息以及用于校验信息计算的中间信息进行计算;变量节点更新单元(以下简称VNU),其对各个新矩阵中各列的变量信息进行计算;初始化存储器,其对译码器初始输入信息进行存储;迭代存储器,其对校验信息、变量信息、和译码结果进行存储;控制器,对校验节点更新单元和变量节点更新单元的运算进行定序,并对它们与存储器间的数据交换进行控制。其中,CNU的个数q被配置为等于所述各个校验矩阵的行块个数的最小公倍数,对于双码率译码器,q为qH和qL的最小公倍数,对于三码率译码器,q为qH,qM和qL的最小公倍数;VNU的个数被配置为等于各个LDPC码对应奇偶校验矩阵的列块个数p;控制器被配置为,根据用户所选需要译码的码率,将q个CNU进行组合,分成c个组,c与用户所选码率对应的校验矩阵的行块数相等,所以每个CNU组有q/c个CNU。控制器控制c个CNU组,每个CNU组对应校验矩阵中一个矩阵行块中的a行,在a次校验信息的计算中进行复用;控制p个VNU,每个VNU对应校验矩阵中一个子矩阵列中的a列,在a次变量信息的计算中进行复用;初始化存储器的个数被配置为等于VNU的个数p,并且与VNU一一对应。迭代存储器被分成若干个行块,行块个数被配置为等于CNU的个数q,并且与CNU一一对应,每个迭代存储器行块又被分成若干个小块,每个行块中的小块的个数mi(i=1,2,…,q)等于其对应的CNU的输入节点数,所以迭代存储器共有∑mi(i=1,2,…,q)个小块。
上述的q个CNU包括:第一查找表单元,其采用查找表方式,将校验矩阵的各行的与同一校验节点相连的变量节点的变量信息转换为概率值,其个数等于此CNU的输入节点数;第一加法器单元,其对第一查找表单元输出的概率值求和,参与加法的个数等于第一查找表单元个数;第二加法器单元,其对其它CNU输入的中间幅度信息进行求和,参与加法的个数等于此CNU所属CNU组中CNU的个数减1;第三加法器单元,其对第一加法器单元和第二加法器单元的输出求和。减法器单元;其个数与第一查找表单元个数相同,均以第三加法器单元的输出为被减数,分别减去第一查找表单元输出的概率值;第二查找表单元,其个数与第一查找表单元及减法器单元的个数相同,其输入与减法器单元的输出相连,以与第一查找表单元相同的方式,将其输入转换为概率值;第一符号运算单元,其对校验矩阵的各行的与同一校验节点相连的变量节点的变量信息的符号进行符号运算,参与符号运算的个数等于第一查找表单元个数;第二符号运算单元,其对其它CNU输入的中间符号信息进行符号运算,参与符号运算的个数等于此CNU所属CNU组中的CNU个数减1;第三符号运算单元,对第一符号运算单元和第二符号运算单元的输出进行符号运算;第四符号运算单元,其个数与第一查找表单元数目相同。其从第三符号运算单元输出的符号运算的结果中,分别剔除掉校验矩阵各行的与同一校验节点相连的变量节点的变量信息的符号。
上述的q个CNU的输入节点数mi(i=1,2,3,…,q)由此CNU所对应的各码率的奇偶校验矩阵各行块的行重综合决定。对于高码率校验矩阵HH,行块数为qH,所以这q个CNU分成qH个组,每组的CNU数为q/qH,记为rH。对于中码率校验矩阵HM,行块数为qM,所以这q个CNU分成qM个组,每组的CNU数为q/qM,记为rM。对于低码率校验矩阵HL,行块数为qL,所以这q个CNU分成qL个组,每组的CNU数为q/qL,记为rL。设高码率下此CNU对应的行块的行重为wH,将wH/rH的结果记为kH;设中码率LDPC对应的校验矩阵对应行的行重为wM,将wM/rM的结果记为kM,设低码率LDPC对应的校验矩阵对应行的行重为wL,将wL/rL的结果记为kL。对于高低双码率译码器,mi取kH和kL的最大值,而对于高中低三码率译码器,mi取kH、kM和kL的最大值。
上述的p个VNU包括:第一加法器单元,其对校验矩阵中各列的与同一个变量节点相连的校验节点的校验信息求和;减法器单元,其以第一加法器单元输出的和为被减数,分别减去校验矩阵中各列的与同一个变量节点相连的校验节点的校验信息;第二加法器单元,其将第一加法器单元的和与译码器输入信息进行相加;判决单元,其对第二加法器单元的输出进行判决,得到译码结果。
上述的p个VNU的输入节点数由此VNU所对应的各码率的奇偶校验矩阵各列块的列重的最大值决定。
作为一种改进,还可以在q个校验节点更新单元或所述p个变量节点更新单元中插入流水线,利用该流水线,可以在同一时刻对q个校验节点更新单元或p个变量节点更新单元实行流水流水线操作,各自进行相应的运算。
作为一种改进,CNU的个数q还可以按照以下方法进行配置:对于高低双码率译码器,将qL加上一个较小的整数b(b=0,1,2,3,…),记为qL′,于是可以求出若干个qH和qL′的最小公倍数,将其中最小值定为q;对于高中低三码率译码器,按照同样方法处理,q为qH,qM′和qL′的若干个最小公倍数中的最小值。
综上所述,应用本发明提供的译码器装置和译码方法,可以对多种码率的LDPC码进行译码,并且不同码率的译码速率相同,而译码器耗费的资源仅与高码率LDPC码率码字单独译码的译码器耗费资源相当。
附图说明
图1为本发明所涉及的LDPC译码所用的奇偶校验矩阵示意图;
图2为本发明所涉及的高低双码率LDPC译码器所用的奇偶校验矩阵一个示例,其中(a)为高码率奇偶校验矩阵,(b)为低码率奇偶校验矩阵;
图3为本发明设计的多码率LDPC译码器一个示例;
图4为校验节点更新单元的一个示例;
图5为变量节点更新单元的一个示例;
图6为LDPC迭代译码中的的第n迭代周期和第n+1迭代周期的具体迭代步骤的示意图;
图7为LDPC译码器译码步骤的流程图;
图8为本发明所涉及的高低双码率LDPC译码器所用的奇偶校验矩阵另一个示例,其中(a)为高码率奇偶校验矩阵,(b)为低码率奇偶校验矩阵;
图9为本发明所涉及的高中低三码率LDPC译码器所用的奇偶校验矩阵的一个示例,其中(a)为高码率奇偶校验矩阵,(b)为中码率奇偶校验矩阵,(c)为低码率奇偶校验矩阵。
具体实施方式
以下,参照附图对本发明的具体实施方式进行解释说明。
首先描述用于本实施例的奇偶校验矩阵。奇偶检验矩阵又称H矩阵,如图1所示,由q×p个Ai,j(1≤i≤q,1≤j≤p)矩阵组成,Ai,j作为H矩阵的子矩阵,是0矩阵或循环行列式构成的a×a方阵,且该循环行列式的重量很小。在本实施例中,Aij为由单位阵循环移位而得的a×a方阵或0矩阵。从图1中可见,每一个子矩阵Ai,j中的斜线表示为矩阵元素为“1”的元素位置的轨迹,而其它空白位置上的元素为“0”。在构成H矩阵的p×q个子矩阵Ai,j的每一行和每一列中,只有一个元素值为“1”的位置。所以,在整个H矩阵的每一行和每一列中,元素值为“1”的位置数分别为m和n,其中m即是H矩阵的一个子矩阵行(Ai,1…Ai,p)中非0矩阵的个数,称为行重;n即是H矩阵的一个子矩阵列(A1,j…Aq,j)中非0矩阵的个数,称为列重。并且,对于H矩阵中每一行的m值可以相同也可以不相同,同样地,每一列的n值可以相同也可以不相同。若H矩阵中每一行的m值相同并且每一列的n值也相同,则此H矩阵对应的LDPC码为规则码否则为非规则码。此H矩阵共有p×a列,那么对应地LDPC码字的码长为p×a;此H矩阵共有q×a行,那么对应LDPC码字的校验位长度为q×a,于是此H矩阵对应LDPC码字的信息位长度为(p-q)×a,所以,对应的LDPC码字的码率(信息位长度/码长)为(p-q)/p。如图2所示,(a)中的H矩阵(标记为H0)的行重为8,列重分别为1、2和3,对应LDPC码字的码率为0.7;(b)中的H矩阵(标记为H1)的行重分别为4或3,列重分别为1、2、3和4,对应LDPC码字的码率为0.4。显然,H0对应一个的高码率LDPC码而H1对应一个低码率的LDPC码。
本领域内公知,H矩阵的每一行可以被视为一个奇偶校验方程,对应于H矩阵的第i行的奇偶校验方程被称为第i奇偶校验方程,对应于该H矩阵的LDPC码字,当且仅当上述码字满足H矩阵的所有奇偶校验方程,也就是q×a个奇偶校验方程,才能译码成功,得到正确的信息。
要使译码算法对每组LDPC码译码,需要迭代运算,反复交替地进行校验节点更新运算和变量节点更新运算。
校验节点更新运算,由校验节点运算单元(CNU)进行,如下式完成更新,即水平过程(行过程):
上式中,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)进行,如下完成更新,即垂直过程(或称“列过程”):
上式中,(-2rj/σ2)为开始迭代前的信道输入,表示第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
本实施例用于图2所示H0和H1所对应的高低双码率的LDPC码的译码。其中,H0对应的是高码率的LDPC码,H1对应的是低码率的LDPC码。
如图3所示,本实施例中的译码器包括以下部分:校验节点运算单元CNU集合30,共包括q个校验节点运算单元,分别为30-1,…,30-x,…,30-q。在本实施例中,H0的行块数q0为3,H1的行块数q1为6,q0和q1的最小公倍数是6,所以q为6。对于H0而言,这q个CNU中的前q/q0个,即第1个和第2个CNU共同完成第1个行块的校验节点更新运算,接着的q/q0个CNU,即第3个和第4个CNU共同完成第2个行块的校验节点更新运算,最后的q/q0个CNU即第5个和第6个CNU共同完成第3个行块的校验节点更新运算。同样地,对于H1而言,由于q/q1为1,因此,这6个CNU分别完成6个行块的校验节点更新运算。CNU集合完成迭代运算中的校验节点更新运算,即对每一行中校验节点信息进行更新;变量节点运算单元VNU集合40,共包括p个变量节点运算单元,分别为40-1,…,40-x,…,40-p,在本实施例中,p为H0与H1的列块数,所以p=10,VNU集合完成变量节点更新运算,即对每一列中变量节点信息进行更新;迭代存储器单元集合10,包括q个存储器行块,与q个CNU相对应,分别为10-1,…10-x,…10-q。每个存储器行块又分别有m1,m2,…,mq个存储器小块,m1,m2,…,mq分别与CNU集合30中的30-1,30-2…,30-q的节点输入数目相等。在本实施例中,按照前述方法,H0的第1个行块的行重w0为8,且q/q0为2,所以k0等于4;另一方面,H1的第1个行块的行重w1为4,且q/q1为1,所以k1等于4,而m1等于k0与k1的最大值,所以m1等于4。同理可求得m2,…,mq也都等于4。初始化存储器单元集合20,包括p个存储器单元,与p个VNU单元相对应,分别为20-1,…20-x,…20-p。其对译码器初始输入信息进行存储;控制器单元0,控制CNU与VNU的输入、输出,对更新、迭代进行定序,并在CNU与VNU的输入、输出时给出其相应的迭代存储器单元集合10与初始存储器单元集合20的读写地址。控制器单元0还用来根据用户所选择译码的码率对CNU集合30进行分组,对于H0,CNU集合30中从前往后每q/q0个CNU分成一组,对于H1,CNU集合30中从前往后每q/q1个CNU分成一组。在本实施例中,对于H0,每2个CNU被分成1组,对于H1,每1个CNU被分成1组。综上所述,本实施例中有CNU的个数为6,VNU的个数为10,迭代存储器行块数为6,个数为24,初始存储器个数为10。
上述迭代存储器单元集合10中的各个存储单元与奇偶校验矩阵中每一个矩阵元素为“1”的节点对应。当与一个校验节点相关的校验信息更新运算结束后,将运算结果写入相应的迭代存储器单元集合10,完成校验节点更新运算;当与一个变量节点相关的变量信息更新运算结束后,将运算结果写入相应的迭代存储器单元集合10,完成变量节点更新运算;
下面描述本发明译码器的校验节点运算单元即CNU。
如图4所示的CNU结构为本实施例所用的CNU结构,CNU30-1到30-6均采用此结构。CNU包括,第一查找表单元集合304,共有x个查找表单元,分别是304-1到304-x;第一加法器单元301,有x个输入项;第二加法器单元302,有y个输入项;第三加法器单元303;减法器单元集合305,共有x个减法器单元,分别是305-1到305-x;第二查找表单元集合306,共有x个查找表单元,分别是306-1到306-x;第一符号运算单元311,参与运算的数目为x,第一符号运算单元实际上就是一个输入数目为x的异或单元;第二符号运算单元312,参与运算的数目为y,第二符号运算单元实际上就是一个输入数目为y的异或单元;第三符号运算单元313,其实际上就是一个输入数目为2的异或单元;第四符号运算单元集合314,共有x个2输入的异或单元。上述代表数值的字母均为整数,下同。
上述CNU单元结构依据前述式(1)至(3)设计,上述x的值为此CNU的输入节点数目。在本实施例中,CNU30-1到30-6中的x都等于4。第一查找表单元304-1到304-x用于式(1)中的Ψ函数运算。第一加法器单元301,第二加法器单元302与第三加法器单元303共同完成式(1)中n∈N(m)的求和。减法器单元305-1到305-x用于完成式(1)中除去n=j的情况。而减法单元305-1到305-x的输出与查找表单元306-1到306-x相连用于式(3)中的Ψ函数运算;上述第一加法器单元与第二加法器单元均是一个多输入的加法器,当然也可以用若干个2输入的加法器实现;第一符号运算单元311,第二符号运算单元312与第三符号运算单元313共同完成式(2)中n∈N(m)的异或运算。第四符号运算单元314-1到314-x用于完成式(2)中除去n=j的情况。上述第一符号运算单元与第二符号运算单元均是一个多输入的异或器,当然也可以用若干个2输入的异或器实现。
下面描述本发明译码器的变量节点运算单元即VNU。
如图5所示的VNU单元结构为本实施例所用的VNU单元结构,VNU单元40-1到40-p均采用此结构。VNU单元具有:第一加法器单元401,第二加法器单元402,减法器单元集合403,包括z个减法器单元403-1至403-z和一个判决单元404。上述VNU结构依据前述式(4)和(5)设计,上述z的值由上述H0矩阵和H1矩阵中各列的列重的最大值决定,在本实施例中,由于如图2所示,H0矩阵和H1矩阵中,相同列块中的列重最大值依次是1、1、2、2、3、3、3、3、4、4,所以将对应的VNU单元40-1到40-p中的z依次定为1、1、2、2、3、3、3、3、4、4;第1加法器单元401是一个多输入加法器,其输入数目为z,与第2加法器单元402共同完成式(4)中的求和加法,当然第1加法器单元也可以用若干个2输入的加法器实现;减法器单元403-1至403-z用于完成式(5)中的减法;判决单元404的输入与第2加法器402的输出相连,实现对L(qj)的判决。
下面描述译码器的译码步骤。
下面,将结合图3所示的译码器结构示意图、图4所示的CNU结构图及图5所示的VNU结构图,对迭代运算顺序和具体计算方法进行说明。
初始化步骤:
当接收到来自信道的LDPC码字后,首先,由控制器单元0控制执行初始化步骤。在初始化步骤中,控制器单元0控制p个VNU 40-1至40-p分别从对应的p个初始化存储器20-1至20-p中将(4)中的-2rj/σ2取出,写到迭代存储器单元10对应的存储器单元中,其中,上述-2rj/σ2为每一个校验节点所属列j对应的从通信信道中接收的一组LDPC码字中每个码字xj对应的概率信息。根据式(4)及式(5),令其参加相应的运算步骤。其值将作为L(qmj)的初始值参加后述的校验节点更新运算。
第一迭代步骤:
在本步骤中,根据用户所选择的码率,控制器单元0控制q个CNU进行校验节点更新运算即对与同一个校验节点相连的所有变量节点的校验信息进行更新。如图3所示的译码器中具有q个CNU单元,它们分别对应q个迭代存储器行块10-1至10-q。对于不同的码率,这q个CNU单元被分成数目与对应的奇偶校验矩阵行块数相等的组,每组CNU共同完成对应行块的校验节点更新运算。在本实施例中,q=6,由于高低码率校验节点更新运算有所不同,所以下面分别描述。
对于高码率的LDPC码,即H0所对应的LDPC码,这6个CNU被分成了3组,每组两个CNU。于是,CNU 30-1与30-2完成H0的第1个行块的校验节点更新运算,CNU 30-3与30-4完成H0的第2个行块的校验节点更新运算,CNU 30-5与30-6完成H0的第3个行块的校验节点更新运算。并且,由于是两个CNU共同完成一个行块的校验节点更新运算,所以两个CNU具有的与同一个校验节点相联系的变量节点输入数目的和即图4中的x的和应不小于此行块的行重,以CNU 30-1与30-2为例,根据前面的计算结果,CNU 30-1与30-2的x的值均为4,故两者对应的与同一个校验节点相连的变量节点的数目和为8,等于H0的第1个行块的行重。CNU30-1负责完成第1个行块前一半即前4个变量节点的校验信息更新,CNU 30-2负责完成第1个行块剩下的即后4个变量节点的校验信息更新。而且,CNU 30-1需要CNU 30-2提供后4个变量节点的幅度信息与符号信息才能完成前4个变量节点的校验信息更新运算,此幅度信息与符号信息分别对应图4中的Ami与Smi(i=1,2…,y),显然在本实施例中y=1;同理,CNU 30-2需要CNU 30-1提供前4个变量节点的幅度信息与符号信息才能完成后4个变量节点的校验信息更新运算。由于每个子矩阵行中具有a行,因此对于上述每一个CNU组而言,需要分别对上述每一行进行校验信息更新运算,才能结束本步骤,而对于这3个CNU组而言,它们之间是并行运算的。但是,由于插入了流水线,设流水线级数为N,工作时钟的周期为t,那么每一行的变量信息从输入CNU单元到更新后的校验信息输出CNU单元就需要Nt的运算时间,显然这是一个群延迟,用T表示。所以,CNU完成本步骤的运算时间应为(a-1)×t+T,如图6所示。在本实施例中,T=4t。
以第一个CNU 30-1为例,在本步骤的第一个运算周期中即T1内,其对用于H0矩阵的行标为1的子矩阵行的第一行内的前4个变量节点上的校验信息进行运算和更新,并求解出CNU 30-2所需的中间信息Amo和Smo。
具体地,译码器进行下述动作S1,如图3所示的控制器单元0在T1运算周期开始后,即控制将H0矩阵的行标为1的子矩阵行中第一行的前4个变量节点对应的存储器单元10中的变量信息读出,将其作为式(1)和(2)中的L(qmj)并行输入至CNU30-1,然后,如图4所示,进行下述运算过程Sc1:将全部L(q11)至L(q1x)的第一位作为符号位单独计算,其余位被送入查找表单元304-1至304-x,分别求出式(1)中的Ψ函数,所述全部L(q01)至L(q0x)的位数一致,均依照希望的量化程度设定;其后,由加法器301完成前x个查找表的输出的求和运算,求和结果一方面输入到加法器303,另一方面以A1o输出给CNU 30-2。同时,CNU 30-2也将加法器301的输出结果输入给CNU 30-1,入口为A11,A11的值经过加法器302后也被输出给加法器303;紧接着,加法器303将301与302的结果相加完成式(1)中的n∈N(m)的求和运算;然后,减法器305完成式(1)中除去n=j的情况,到此,式(1)的计算完成;另一方面,上述全部L(q01)至L(q0x)的第一位,由异或单元311完成异或运算,运算结果一方面输出给异或单元313,另一方面将此结果以S1o输出给CNU30-2。同时,CNU 30-2也将异或单元311的输出结果输入给CNU 30-1,入口为S11,S11的值经过异或单元302后也别输出给异或单元313;然后,异或单元313将311与312的结果相异或完成式(2)中的n∈N(m)的异或运算;然后,异或单元314完成式(2)中除去n=j的情况,到此,式(2)的计算完成;最后,将减法器305的输出结果用查找表单元306-1至306-x完成式(3)的Ψ函数运算,其结果分别与异或单元314-1至至314-x组合便完成了式(3)的运算。CNU 30-1所对应的H0矩阵的行标为1的子矩阵行的第一行内的前4个变量节点上的校验信息便得到了更新。
在第一运算周期T1结束时,由控制器单元0控制,将CNU 30-1输出的数据存入H0矩阵的行标为1的子矩阵行的第一行内的前4个变量节点对应的迭代存储器集合10中的存储单元中,译码器完成动作S1。
与上述第一运算周期T1相同,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上S1的动作,其中,CNU 30-1要在第二运算周期T2至第a运算周期Ta内,分别重复以上运算过程Sc1,由控制器0控制,输入的信息应为H0矩阵中行标为1的子矩阵行中余下的a-1行的前4个变量节点的变量信息,输出的信息应各自对应H0矩阵行标为1的子矩阵行中余下的a-1行的前4个变量节点的校验信息。
根据本领域内的公知技术,在图4所示的CNU单元结构中可以插入流水线,从而,上述T1周期与T2周期的运算在时间上可以有一部分重合,即当T1周期内CNU中的查找表单元304向加法器单元301输出数据开始求和运算后,控制器0可以将H0矩阵的行号为1的子矩阵行中第二行的前4个变量节点对应的存储器10中的存储单元中的信息读出,将其作为式(1)和(2)中的L(qmj)并行输入至CNU 30-1,并再次开始运算过程Sc1,对H0矩阵的行标为1的子矩阵行的第二行内的前4个变量节点上的检验信息进行运算并更新。同理,T2周期与T3周期至Ta-1周期与Ta周期均可在时间上重合,如图6所示。
由于CNU 30-1与30-2至30-q采用相同的结构,且在同一时刻并行运算,因此它们之间的动作特性是相同的,也可以说,在上述的T1周期至Ta周期内进行相同的运算,只不过,30-2至30-q的输入信息应为H0矩阵中相应的的各个变量节点的变量信息,输出的信息应各自对应H0矩阵的各个变量节点的校验信息,对于它们各自具体的运算步骤等,将不再赘述。在后述说明中,也将采取与上述类似的说明方式,只说明一个具有代表性的运算单元的动作特性。
至Ta周期动作结束,完成了第一迭代步骤,对于H0矩阵中的所有变量节点上的校验信息进行了一次更新。
对于低码率的LDPC码,即H1所对应的LDPC码,这6个CNU被分成了6组,每组1个CNU。于是,CNU 30-1至30-6分别完成H1的第1个至第6个行块的校验节点更新运算。并且,由于是1个CNU完成一个行块的校验节点更新运算,所以1个CNU具有的与同一个校验节点相联系的变量节点输入数目即图4中的x应不小于此行块的行重,由于H1的所有行块的行重为3或者4,故要求对应的CNU输入数目不小于3或者4,以CNU 30-1为例,H1的第1个行块的行重为4,因此,CNU30-1的x的值不能小于4,而高码率下要求CNU 30-1的x的值也不能小于4,所以x值取为4。但是对于CNU 30-6,H1的第6个行块的行重为3,因此,CNU 30-6的x的值不能小于3,而高码率下要求CNU 30-6的x的值不能小于4,为了使结构重用,所以x值取为4。CNU 30-1负责完成H1第1个行块所有变量节点的校验信息更新。由于每个子矩阵行中具有a行,因此对于上述每一个CNU组而言,需要分别对上述每一行进行校验信息更新运算,才能结束本步骤,而对于这6个CNU组而言,它们之间是并行运算的。但是,由于插入了流水线,设流水线级数为N,工作时钟的周期为t,那么每一行的变量信息从输入CNU单元到更新后的校验信息输出CNU单元就需要Nt的运算时间,显然这是一个群延迟,用T表示。所以,CNU完成本步骤的运算时间应为(a-1)×t+T,如图6所示。在本实施例中,T=4t。
以第一个CNU 30-1为例,在本步骤的第一个运算周期中即T1内,其对用于H1矩阵的行标为1的子矩阵行的第一行内的所有变量节点上的校验信息进行运算和更新。具体地,译码器进行下述动作S2,如图3所示的控制器单元0在T1运算周期开始后,即控制将H1矩阵的行标为1的子矩阵行中第一行的所有变量节点对应的存储器单元10中的变量信息读出,将其作为式(1)和(2)中的L(qmj)并行输入至CNU 30-1,然后,如图4所示,进行下述运算过程Sc2:将全部L(q11)至L(q1x)的第一位作为符号位单独计算,其余位被送入查找表单元304-1至304-x,分别求出式(1)中的Ψ函数,所述全部L(q01)至L(q0x)的位数一致,均依照希望的量化程度设定;其后,由加法器301完成前x个查找表的输出的求和运算,求和结果一方面输入到加法器303,另一方面以A1o输出。如前所述,A1o的存在是为了一组多个CNU在进行同一行的校验信息更新时相互间传递幅度信息的,但是,此时,一组CNU实际上只有1个,它进行校验信息更新时不需要其它的CNU提供的额外信息,因此,A1o不参与校验节点更新运算。同理,A1i(i=0,…,y)不参与校验节点更新运算,控制器单元0会将A1i(i=0,…,y)置为0,所以加法器302输出恒为0,此结果不会影响运算结果;紧接着,加法器303将301与302的结果相加完成式(1)中的n∈N(m)的求和运算;然后,减法器305完成式(1)中除去n=j的情况,到此,式(1)的计算完成;另一方面,上述全部L(q01)至L(q0x)的第一位,由异或单元311完成异或运算,运算结果输出给异或单元313,而S1o以及S1i(i=0,…,y)也没有意义,控制器单元0会将S1i(i=0,…,y)置为0,所以异或单元312输出恒为0,此结果不会影响运算结果;然后,异或单元313将311与312的结果相异或完成式(2)中的n∈N(m)的异或运算;然后,异或单元314完成式(2)中除去n=j的情况,到此,式(2)的计算完成;最后,将减法器305的输出结果用查找表单元306-1至306-x完成式(3)的Ψ函数运算,其结果分别与以后单元314-1至314-x组合便完成了式(3)的运算。CNU 30-1所对应的H1矩阵的行标为1的子矩阵行的第一行内的所有变量节点上的校验信息便得到了更新。
在第一运算周期T1结束时,由控制器单元0控制,将CNU 30-1输出的数据存入H1矩阵的行标为1的子矩阵行的第一行内的所有变量节点对应的迭代存储器集合10中的存储单元中,译码器完成动作S2。
与上述第一运算周期T1相同,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上S2的动作,其中,CNU 30-1要在第二运算周期T2至第a运算周期Ta内,分别重复以上运算过程Sc2,由控制器0控制,输入的信息应为H1矩阵中行标为1的子矩阵行中余下的a-1行的各个变量节点的变量信息,输出的信息应各自对应H1矩阵行标为1的子矩阵行中余下的a-1行的各个变量节点。
根据本领域内的公知技术,在图4所示的CNU单元结构中可以插入流水线,从而,上述T1周期与T2周期的运算在时间上可以有一部分重合,即当T1周期内CNU中的查找表单元304向加法器单元301输出数据开始求和运算后,控制器0可以将H1矩阵的行号为1的子矩阵行中第二行的所有变量节点对应的存储器10中的存储单元中的信息读出,将其作为式(1)和(2)中的L(qmj)并行输入至CNU 30-1,并再次开始运算过程Sc2,对H1矩阵的行标为1的子矩阵行的第二行内的所有变量节点上的检验信息进行运算并更新。同理,T2周期与T3周期至Ta-1周期与Ta周期均可在时间上重合,如图6所示。
由于CNU 30-1与30-2至30-q采用相同的结构,且在同一时刻并行运算,因此它们之间的动作特性是相同的,也可以说,在上述的T1周期至Ta周期内进行相同的运算,只不过,30-2至30-q的输入信息应为H1矩阵中相应的的各个变量节点的变量信息,输出的信息应各自对应H1矩阵的各个变量节点,对于它们各自具体的运算步骤等,将不再赘述。
至Ta周期动作结束,完成了第一迭代步骤,对于H1矩阵中的所有变量节点上的校验信息进行了一次更新。
第二迭代步骤:
在本步骤中,根据用户所选择的码率,控制器单元0控制p个VNU进行变量节点更新运算。由于对于不同的码率,VNU的处理过程相同,因此统一描述。由于当第一迭代步骤中的Ta周期动作结束时,已经对与H0(或H1)矩阵中各个变量节点对应的存储器单元10的存储单元中的所有Rmj进行了更新,即式(4)和式(5)的运算条件已经满足,因此,在本迭代步骤中,对H0(或H1)矩阵进行变量节点更新运算。
以VNU 40-1为例,具体地,译码器进行下述动作S3,如图3所示的控制器单元0在T1周期开始后,控制将H0(或H1)矩阵的列标为1的子矩阵列中第一列的校验节点对应的初始存储器20中的存储单元中的信息-2rj/σ2和迭代存储器10中由第一迭代步骤中求出的Rmj(m=1、2…、n)读出,将它们分别作为式(4)和式(5)中的变量,如图5所示,并行输入至VNU 40-1,然后,进行下述运算过程Sv1:由加法器401与402完成式(4)中的求和运算,算出L(qj),经判决单元404即输出译码结果xn,由减法器集合403中的减法器单元403-1至403-z完成式(5)的运算,输出L(qmj)。为了便于时序的配合,在本实施例中,变量节点运算单元的运算周期与j校验节点运算单元的运算周期相同。
在上述第一运算周期T1结束时,由控制器单元0控制,将VNU 40-1输出的数据存入与H0(或H1)矩阵列标为1的子矩阵列中第一列的校验节点对应的迭代存储器集合20中的存储器单元中,译码器完成动作S3。
与上述其它迭代步骤相同地,本迭代步骤中,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作S3,其中,VNU 40-1还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作Sv1,但由控制器单元0控制,输入的信息应为H0(或H1)矩阵中列标为1的矩阵列中余下的a-1列的与同一个变量节点相连的各个校验节点的校验信息,输出的信息应各自对应H0矩阵列标为1的子矩阵列中余下的a-1列的与同一个变量节点相连的各个校验节点的变量信息。并且,T2周期与T3周期至Ta-1周期与Ta周期均可在时间上重合,如图6所示。
另外,与上述其它迭代步骤相同地,本迭代步骤中,VNU 40-1与VNU 40-2至VNU 40-p在上述的T1周期至Ta周期内进行相同的运算,其中,VNU 40-2至VNU40-p的输入信息应为H0(或H1)矩阵中列标为2到p的子矩阵列中a列的与同一个变量节点相连的各个校验节点的校验信息,输出的信息应各自对应H0(或H1)矩阵列标为2至p的子矩阵中的a列的与同一个变量节点相连的各个校验节点的变量信息。
在此处,当需运算列的列重小于z,即输入的Rmj的有效个数小于VNU的输入端口个数,则将此外的无效输入端口的输入设为0,亦不影响运算输出结果,对于此种情况,对后述的VNU运算均适用。
至Ta周期动作结束,完成了第二迭代步骤,对于H0(或H1)矩阵中的与同一个变量节点相连的各个校验节点上的变量信息进行了更新。
其它的迭代周期均如上述的第一及第二迭代周期所述,交替对H0(或H1)矩阵的校验节点的校验信息和变量节点的变量信息进行运算更新,其中译码器的更新对象,参照图6的第n迭代周期及第n+1迭代周期的迭代步骤示意图。
以上的迭代运算,由控制器单元0控制,在第m迭代周期的第二迭代步骤中的Ta周期动作结束时停止,其中m为预先设置的最大迭代次数。
并且在该第m迭代周期的第二迭代周期中,控制单元0将各个VNU单元40-1至40-p中的判决单元404对应加法器单元402算出的L(qj)而输出的判决结果xn读出,按照H0(或H1)矩阵的列顺序排列并输出,完成一组LDPC码字的译码。上述译码器译码步骤的流程图如图7所示。
由上述迭代步骤可以看出,对于不同码率,完成一次迭代的时间是相等的。
实施例2:
本实施例用于图8所示H2和H3所对应的高低双码率的LDPC码的译码。其中,H2对应的是高码率的LDPC码,H3对应的是低码率的LDPC码。与实施例1相比,本实施例中仅在CNU个数q的确定方法以及分组有所不同,现描述如下:
在本实施例中,H2的行块数q2为3,H3的行块数q3为5,如前所述,将q3分别加上一个小的整数变成q3′,q3′为5,6,7,8,…。于是,q2与这若干个q3′的最小公倍数分别为15,6,21,24,…,所以,将q取为这些最小公倍数中的最小值6。对于H2而言,这q个CNU中的前q/q2个,即第1个和第2个CNU共同完成第1个行块的校验节点更新运算,接着的q/q2个CNU,即第3个和第4个CNU共同完成第2个行块的校验节点更新运算,最后的q/q2个CNU即第5个和第6个CNU共同完成第3个行块的校验节点更新运算。而对于H3而言,q3为5而q为6,因此,这6个CNU中的前5个分别完成H3前5个行块的校验节点更新运算,第6个CNU不参与H3的校验节点更新运算。
此外,上述的译码器的译码步骤,与实施例1中译码器的译码步骤相同,可参照实施,此处不再赘述。
实施例3:
本实施例用于图9所示H4,H5和H6所对应的高中低三码率的LDPC码的译码。其中,H4对应的是高码率的LDPC码,H5对应的是中码率的LDPC码,H6对应的是低码率的LDPC码。与实施例1相比,本实施例在确定CNU个数q时,还需要考虑中码率的奇偶校验矩阵H5的相关信息。其余部分与实施例1类似。现描述如下:在本实施例中,H4的行块数q4为2,H5的行块数q5为4,H6的行块数q6为6,q4,q5和q6的最小公倍数是12,所以q取为12。对于H4而言,由于q/q4等于6,因此,这12个CNU分成2组,每组6个CNU,这2组CNU从前往后依次完成对应的2个行块的校验节点更新运算;对于H5而言,由于q/q5等于3,因此,这12个CNU分成4组,每组3个CNU,这4组从前往后依次完成对应的4个行块的校验节点更新运算;对于H6而言,由于q/q6为2,因此,这12个CNU分成6组,每组2个CNU,这6组从前往后依次完成对应的6个行块的校验节点更新运算。
此外,上述的译码器的译码步骤,与实施例1中译码器的译码步骤相似,可参照实施,此处不再赘述。
Claims (12)
1.一种多码率的LDPC码的译码器,主要包括:校验节点更新单元CNU,其对各种码率对应的校验矩阵中各行的校验信息以及用于校验信息计算的中间信息进行计算;变量节点更新单元VNU,其对各个新矩阵中各列的变量信息进行计算;初始化存储器,其对译码器初始输入信息进行存储;迭代存储器,其对校验信息、变量信息、和译码结果进行存储;控制器,对校验节点更新单元和变量节点更新单元的运算进行定序,并对它们与存储器间的数据交换进行控制;其特征在于:
所述的译码器能够对不同码率的LDPC码进行译码;
所述的校验节点更新单元CNU的个数q被配置为等于不同码率的校验矩阵的行块个数的最小公倍数;
所述的变量节点更新VNU的个数被配置为等于各个LDPC码对应奇偶校验矩阵的列块个数p;
所述控制器被配置为根据用户所选需要译码的码率,将q个CNU进行组合,分成c个组,c与用户所选码率对应的校验矩阵的行块数相等,每个CNU组有q/c个CNU;控制器控制c个CNU组,每个CNU组对应校验矩阵中一个矩阵行块中的a行,在a次校验信息的计算中进行复用;控制p个VNU,每个VNU对应校验矩阵中一个子矩阵列中的a列,在a次变量信息的计算中进行复用;
所述的初始化存储器的个数被配置为等于VNU的个数p,并且与VNU一一对应;
所述的迭代存储器被分成若干个行块,行块个数被配置为等于CNU的个数q,并且与CNU一一对应,每个迭代存储器行块又被分成若干个小块,每个行块中的小块的个数mi(i=1,2,3,…,q)等于其对应的CNU的输入节点数,所以迭代存储器共有∑mi(i=1,2,…,q)个小块。
2.根据权利要求1所述的一种多码率的LDPC码的译码器,其特征在于:所述q个CNU包括:
第一查找表单元,其采用查找表方式,将校验矩阵的各行的变量节点的变量信息转换为概率值,其个数等于此CNU的输入节点数;
第一加法器单元,其对第一查找表单元输出的概率值求和,参与加法的个数等于第一查找表单元个数;
第二加法器单元,其对其它CNU输入的中间幅度信息进行求和,参与加法的个数等于此CNU所属CNU组中CNU的个数减1;
第三加法器单元,其对第一加法器单元和第二加法器单元的输出求和;
减法器单元;其个数与第一查找表单元个数相同,均以第三加法器单元的输出为被减数,分别减去第一查找表单元输出的概率值;
第二查找表单元,其个数与第一查找表单元及减法器单元的个数相同,其输入与减法器单元的输出相连,以与第一查找表单元相同的方式,将其输入转换为概率值;
第一符号运算单元,其对校验矩阵的各行的的变量节点的变量信息的符号进行符号运算,参与符号运算的个数等于第一查找表单元个数;
第二符号运算单元,其对其它CNU输入的中间符号信息进行符号运算,参与符号运算的个数等于此CNU所属CNU组中的CNU个数减1;
第三符号运算单元,对第一符号运算单元和第二符号运算单元的输出进行符号运算;
第四符号运算单元,其个数与第一查找表单元数目相同,其从第三符号运算单元输出的符号运算的结果中,分别剔除掉校验矩阵各行的变量节点的变量信息的符号。
3.根据权利要求1或2所述的一种多码率的LDPC码的译码器,其特征在于:
所述q个CNU的输入节点数mi(i=1,2,3,…,q)由此CNU所对应的各码率的奇偶校验矩阵各行块的行重综合决定;对于高码率校验矩阵HH,行块数为qH,所以这q个CNU分成qH个组,每组的CNU数为q/qH,记为rH;对于中码率校验矩阵HM,行块数为qM,所以这q个CNU分成qM个组,每组的CNU数为q/qM,记为rM;对于低码率校验矩阵HL,行块数为qL,所以这q个CNU分成qL个组,每组的CNU数为q/qL,记为rL;设高码率下此CNU对应的行块的行重为wH,将wH/rH的结果记为kH;设中码率LDPC对应的校验矩阵对应行的行重为wM,将wM/rM的结果记为kM,设低码率LDPC对应的校验矩阵对应行的行重为wL,将wL/rL的结果记为kL;对于高低双码率译码器,mi取kH和kL的最大值,而对于高中低三码率译码器,mi取kH、kM和kL的最大值。
4.根据权利要求1所述的一种多码率的LDPC码的译码器,其特征在于,所述p个变量节点更新单元包括:
第一加法器单元,其对所述各个新矩阵的各列的校验节点的校验信息求和;
第二加法器单元,其将所述第一加法器单元的和与所述译码器输入信息进行求和;
减法器单元,其以所述第二加法器单元输出的和为被减数,分别减去所述各个新矩阵的各列的校验节点的所述各个校验信息
判决单元,其对所述第二加法器单元的输出进行判决,得到译码结果。
5.根据权利要求1或4所述的一种多码率的LDPC码的译码器,其特征在于:
所述的p个VNU的输入节点数由此VNU所对应的各码率的奇偶校验矩阵各列块的列重的最大值决定。
6.根据权利要求1所述的一种多码率的LDPC码的译码器,其特征在于:CNU的个数q还可以按照以下方法进行配置:
对于高低双码率译码器,将qL加上一个较小的整数b(b=0,1,2,3,…),记为qL′,于是可以求出若干个qH和qL′的最小公倍数,将其中最小值定为q;对于高中低三码率译码器,按照同样方法处理,q为qH,qM′和qL′的若干个最小公倍数中的最小值。
7.一种应用于权利要求1所述的多码率的LDPC码的译码器的译码方法,分为以下步骤:
步骤1:初始化:
分别地、顺序地,控制器单元控制VNU从初始化存储器中将输入的概率信息取出,写到迭代存储器中,其值作为变量节点的变量信息参加后述的校验节点更新运算;
步骤2:校验节点更新运算:
分别地、顺序地,控制器单元控制CNU对奇偶校验矩阵的校验信息进行更新,输入为与同一个校验节点相连的各个变量节点的变量信息,输出为更新后的此校验节点传递给与之相连的变量节点的校验信息;
步骤3:变量节点更新运算:
分别地、顺序地,控制器单元控制VNU对奇偶校验矩阵的变量信息进行更新,输入为与同一个变量节点相连的各个校验节点的校验信息,输出为更新后的此变量节点传递给与之相连的校验节点的变量信息;;
步骤4:重复所述步骤2至步骤3,进行迭代,直到满足迭代停止条件。
其特征在于:
步骤1至步骤3中的完成更新运算的单元需要根据不同的码率进行配置;
步骤1和步骤3中的VNU单元数等于校验矩阵的列块数p,并且控制器控制p个VNU,每个VNU对应校验矩阵中一个子矩阵列中的a列,在a次变量信息的计算中进行复用;
步骤2中的CNU单元数等于不同码率的校验矩阵的行块个数的最小公倍数q;并且控制器根据用户所选需要译码的码率,将q个CNU进行组合,分成c个组,c与用户所选码率对应的校验矩阵的行块数相等;控制器控制c个CNU组,每个CNU组对应校验矩阵中一个矩阵行块中的a行,在a次校验信息的计算中进行复用。
8.根据权利要求7所述的一种多码率的LDPC码的译码方法,其特征在于:其校验节点更新运算按照以下步骤实施:
步骤1:第一查找表单元采用查找表方式,将校验矩阵的各行的变量节点的变量信息转换为概率值,参与查找表运算的个数等于此CNU的输入节点数;
步骤2:第一加法器单元对第一查找表单元输出的概率值求和,参与加法的个数等于第一查找表单元个数;第一符号运算单元对校验矩阵的各行的的与同一个校验节点相连的变量节点的变量信息的符号进行运算,参与符号运算的个数等于第一查找表单元个数;
步骤3:与步骤2同时地,第二加法器单元对其它CNU输入的中间幅度信息进行求和,参与加法的个数等于此CNU所属CNU组中CNU的个数减1;第二符号运算单元对其它CNU输入的中间符号信息进行符号运算,参与符号运算的个数等于此CNU所属CNU组中的CNU个数减1;
步骤4:第三加法器单元对第一加法器单元和第二加法器单元的输出求和;第三符号运算单元对第一符号运算单元和第二符号运算单元的输出进行符号运算;
步骤5:减法器单元以第三加法器单元的输出为被减数,分别减去第一查找表单元输出的概率值,其个数与第一查找表单元个数相同;第四符号运算单元从第三符号运算单元输出的符号运算的结果中,分别剔除掉校验矩阵各行的与同一个校验节点相连的变量节点的变量信息的符号,其个数与第一查找表单元数目相同;
步骤6:第二查找表单元,其个数与第一查找表单元及减法器单元的个数相同,其输入与减法器单元的输出相连,以与第一查找表单元相同的方式,将其输入转换为概率值。
9.根据权利要求7或8中所述的一种多码率的LDPC码的译码方法,其特征在于:
所述的参与校验节点更新运算的输入节点数mi(i=1,2,3,…,q)由完成当前校验节点更新运算的CNU所对应的各码率的奇偶校验矩阵各行块的行重综合决定,对于高码率校验矩阵HH,行块数为qH,所以这q个CNU分成qH个组,每组的CNU数为q/qH,记为rH;对于中码率校验矩阵HM,行块数为qM,所以这q个CNU分成qM个组,每组的CNU数为q/qM,记为rM;对于低码率校验矩阵HL,行块数为qL,所以这q个CNU分成qL个组,每组的CNU数为q/qL,记为rL;设高码率下此CNU对应的行块的行重为wH,将wH/rH的结果记为kH;设中码率LDPC对应的校验矩阵对应行的行重为wM,将wM/rM的结果记为kM,设低码率LDPC对应的校验矩阵对应行的行重为wL,将wL/rL的结果记为kL;对于高低双码率译码器,mi取kH和kL的最大值,而对于高中低三码率译码器,mi取kH、kM和kL的最大值。
10.根据权利要求7所述的一种多码率的LDPC码的译码方法,其特征在于:其变量节点更新运算按照以下步骤实施:
步骤1:第一加法器单元对所述的校验矩阵中各列的与同一个变量节点相连的校验节点的校验信息求和;
步骤2:第二加法器单元将所述第一加法器单元的和与所述译码器输入信息进行求和;
步骤3:减法器单元以所述第二加法器单元输出的和为被减数,分别减去所述与同一个变量节点相连的各个校验节点的校验信息;
步骤4:与步骤3同时地,判决单元对所述第二加法器单元的输出进行判决,得到译码结果。
11.根据权利要求7或10所述的一种多码率的LDPC码的译码方法,其特征在于:
所述的参与变量节点更新运算的节点数由此完成此运算的VNU所对应的各码率的奇偶校验矩阵各列块的列重的最大值决定。
12.根据权利要求7或8所述的一种多码率的LDPC码的译码方法,其特征在于:步骤2中的CNU单元数还可以按照以下方法进行配置:
对于高低双码率译码器,将qL加上一个较小的整数b(b=0,1,2,3,…),记为qL′,于是可以求出若干个qH和qL′的最小公倍数,将其中最小值定为q;对于高中低三码率译码器,按照同样方法处理,q为qH,qM′和qL′的若干个最小公倍数中的最小值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200710064695XA CN100542049C (zh) | 2007-03-23 | 2007-03-23 | 一种多码率的ldpc码的译码器装置及译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB200710064695XA CN100542049C (zh) | 2007-03-23 | 2007-03-23 | 一种多码率的ldpc码的译码器装置及译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101047392A true CN101047392A (zh) | 2007-10-03 |
CN100542049C CN100542049C (zh) | 2009-09-16 |
Family
ID=38771675
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB200710064695XA Expired - Fee Related CN100542049C (zh) | 2007-03-23 | 2007-03-23 | 一种多码率的ldpc码的译码器装置及译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100542049C (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101771421A (zh) * | 2010-03-11 | 2010-07-07 | 复旦大学 | 基于tdmp的超高速低功耗qc-ldpc码解码器 |
CN101931497A (zh) * | 2009-06-26 | 2010-12-29 | 芯光飞株式会社 | 低密度奇偶校验(ldpc)码的译码装置及方法 |
CN101854177B (zh) * | 2009-04-01 | 2013-01-02 | 中国科学院微电子研究所 | 一种高吞吐率的ldpc译码器 |
CN103166648A (zh) * | 2011-12-14 | 2013-06-19 | 联芯科技有限公司 | 一种ldpc解码器及其实现方法 |
CN105656491A (zh) * | 2015-12-29 | 2016-06-08 | 东南大学—无锡集成电路技术研究所 | 一种多码率二元qc-ldpc码译码器及译码方法 |
CN106209114A (zh) * | 2015-04-29 | 2016-12-07 | 联想(北京)有限公司 | 译码方法及装置 |
CN107888199A (zh) * | 2013-05-16 | 2018-04-06 | 韩国电子通信研究院 | 基于低密度奇偶校验编码/解码输入信息的方法和编码器 |
CN110089036A (zh) * | 2016-12-27 | 2019-08-02 | 华为技术有限公司 | 一种数据传输方法、发送设备和接收设备 |
CN112737599A (zh) * | 2021-01-06 | 2021-04-30 | 北京邮电大学 | 一种原模图ldpc码的自学习快速收敛译码方法及装置 |
-
2007
- 2007-03-23 CN CNB200710064695XA patent/CN100542049C/zh not_active Expired - Fee Related
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101854177B (zh) * | 2009-04-01 | 2013-01-02 | 中国科学院微电子研究所 | 一种高吞吐率的ldpc译码器 |
CN101931497B (zh) * | 2009-06-26 | 2014-12-17 | 芯光飞株式会社 | 低密度奇偶校验(ldpc)码的译码装置及方法 |
CN101931497A (zh) * | 2009-06-26 | 2010-12-29 | 芯光飞株式会社 | 低密度奇偶校验(ldpc)码的译码装置及方法 |
CN101771421B (zh) * | 2010-03-11 | 2012-10-17 | 复旦大学 | 基于tdmp的超高速低功耗qc-ldpc码解码器 |
CN101771421A (zh) * | 2010-03-11 | 2010-07-07 | 复旦大学 | 基于tdmp的超高速低功耗qc-ldpc码解码器 |
CN103166648B (zh) * | 2011-12-14 | 2016-03-30 | 联芯科技有限公司 | 一种ldpc解码器及其实现方法 |
CN103166648A (zh) * | 2011-12-14 | 2013-06-19 | 联芯科技有限公司 | 一种ldpc解码器及其实现方法 |
CN107888199A (zh) * | 2013-05-16 | 2018-04-06 | 韩国电子通信研究院 | 基于低密度奇偶校验编码/解码输入信息的方法和编码器 |
CN107888199B (zh) * | 2013-05-16 | 2021-11-09 | 韩国电子通信研究院 | 基于低密度奇偶校验编码/解码输入信息的方法和编码器 |
CN106209114A (zh) * | 2015-04-29 | 2016-12-07 | 联想(北京)有限公司 | 译码方法及装置 |
CN105656491A (zh) * | 2015-12-29 | 2016-06-08 | 东南大学—无锡集成电路技术研究所 | 一种多码率二元qc-ldpc码译码器及译码方法 |
CN110089036A (zh) * | 2016-12-27 | 2019-08-02 | 华为技术有限公司 | 一种数据传输方法、发送设备和接收设备 |
US10944427B2 (en) | 2016-12-27 | 2021-03-09 | Huawei Technologies Co., Ltd. | Data transmission method, sending device, and receiving device |
CN112737599A (zh) * | 2021-01-06 | 2021-04-30 | 北京邮电大学 | 一种原模图ldpc码的自学习快速收敛译码方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN100542049C (zh) | 2009-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101047392A (zh) | 一种多码率的ldpc码的译码器装置及译码方法 | |
CN101232288B (zh) | 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器 | |
CN101350625B (zh) | 一种高效通用的qc-ldpc码译码器及其译码方法 | |
CN1783729A (zh) | 用联合节点处理来解码低密度奇偶校验码的方法和设备 | |
CN1716786A (zh) | 用奇偶校验矩阵对低密度奇偶校验码解码的解码器和方法 | |
CN101079639A (zh) | 基于节点存储器的低密度奇偶校验解码装置和方法 | |
CN101044688A (zh) | 节省存储器的ldpc译码方法和装置 | |
US20090164762A1 (en) | Optimizing xor-based codes | |
CN103929210B (zh) | 一种基于遗传算法与神经网络的硬判决译码方法 | |
WO2007034870A1 (ja) | 復号装置および受信装置 | |
CN1937413A (zh) | 双涡轮结构低密度奇偶校验码解码器 | |
US20170070239A1 (en) | Decoding algorithm with enhanced parity check matrix and re-encoding scheme for ldpc code | |
CN1874164A (zh) | 使用同时存储器存取的消息传递译码装置和方法 | |
CN106936446A (zh) | 一种基于多进制ldpc码的高速译码器及其译码方法 | |
CN101273531B (zh) | 低密度奇偶校验码的改进turbo-译码消息传递方法、设备和系统 | |
CN101594152B (zh) | 实现水平运算和垂直运算同时运行的ldpc码译码方法 | |
Shao et al. | Dispersed array LDPC codes and decoder architecture for NAND flash memory | |
CN1822510A (zh) | 高速的减少存储需求的低密度校验码解码器 | |
CN104811211B (zh) | Turbo码交织器的构造方法及装置 | |
CN110572166B (zh) | 一种基于深度学习的bch码译码方法 | |
CN101867449B (zh) | 基于地面数字电视的高效ldpc译码器 | |
CN105515588B (zh) | 一种ldpc‑cc高速译码器 | |
CN1192486C (zh) | 一种缩短循环码纠错译码算法的集成电路实现方法及电路 | |
CN116707545A (zh) | 低消耗、高吞吐的5gldpc译码器实现方法及装置 | |
CN103475378B (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20090916 Termination date: 20120323 |