CN100578945C - 一种ldpc码的译码器装置及译码方法 - Google Patents
一种ldpc码的译码器装置及译码方法 Download PDFInfo
- Publication number
- CN100578945C CN100578945C CN200710118461A CN200710118461A CN100578945C CN 100578945 C CN100578945 C CN 100578945C CN 200710118461 A CN200710118461 A CN 200710118461A CN 200710118461 A CN200710118461 A CN 200710118461A CN 100578945 C CN100578945 C CN 100578945C
- Authority
- CN
- China
- Prior art keywords
- unit
- node
- output
- nau
- check
- 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.)
- Expired - Fee Related
Links
Images
Landscapes
- Error Detection And Correction (AREA)
Abstract
本发明公开了一种高效的LDPC码的译码器装置和译码方法。首先,对LDPC码的校验矩阵进行分析,找出行重与列重之间的对比关系,然后,根据上述对比关系,确定校验节点更新单元(CNU)与变量节点更新单元的复用程度,并对它们进行分组,形成统一的节点更新单元(NU),利用统一的节点更新单元处理校验节点更新运算与变量节点更新运算。本发明提供的译码器装置和译码方法既适用于非规则码也适用于规则码,而且译码器耗费的逻辑资源与存储器资源比传统的译码器要小得多。
Description
技术领域
本发明属于通信领域,具体涉及一种译码器装置和译码方法。
背景技术
LDPC码,全称Low Density Parity Check Code,即低密度奇偶校验码。在目前已有的信道编码中,LDPC码在某些情况下已经显示出了接近香农限(Shannon’s limit)的抗差错性能,与同样是长码的Turbo码相比,LDPC码的误码平层(error floor)出现在很低的误码率区域,且错误码字无法检测的概率为一个极低的非常接近0的值;LDPC码的奇偶校验矩阵H的绝大多数元素为“0”,此即“低密度”的命名由来,而这样的特性使其能够通过简单易于实现的译码方法进行译码,具有极高的实用价值。由于以上几点原因,使得LDPC在近年来成为研究与应用的热点,例如:第二代卫星数字电视视频广播标准(DVB-S2)以及我国的数字电视地面传输标准都使用LDPC码作为核心的信道编码。在国内外,有相当多的文献讲述了LDPC码的译码方法与结构。
例如:对比文献Zhongfeng Wang,Yanni Chen,Keshab K.Parhi,Areaefficient decoding of quasi-cyclic lowdensity parity check codes,IEEE conf.ICASSP,2004.该文献提出了一种变量节点运算单元与校验节点运算单元统一处理的方法,但是,此方法仅仅适用于规则码。
另一方面,已经有研究表明,非规则码的抗差错性能要略好于规则码,而且,非规则码具有“波浪效应”,能使列重大的节点尽快收敛,从而提高译码速率。所以,使用非规则LDPC码是通信系统的一种需求,例如,我国的数字电视地面传输标准就采用了0.4,0.6,0.8三种码率的非规则LDPC码字作为信道编码。但是,非规则码的译码较规则码更复杂,所以如何优化设计非规则LDPC码的译码结构,具有很大的研究价值。
发明内容
本发明的目的在于,提供一种LDPC码的译码器装置以及译码方法,用以解决译码的硬件资源耗用过多的问题。
本发明中的译码器装置与译码方法,能够对非规则的LDPC码进行译码,也可以对规则的LDPC码进行译码,这些LDPC码所对应的奇偶校验矩阵被划分为若干个大小为a×a的子块,每个子块都用循环行列式或0矩阵填充。
本发明提供的一种LDPC码译码器装置包括:节点更新核心单元(以下简称NU),其对对应的校验矩阵中各行的校验信息以及对校验矩阵中各列的变量信息进行计算;节点更新辅助单元(以下简称NAU),其对节点更新核心单元NU输出的中间信息以及初始化信息进行求和;初始化存储器,其对译码器初始输入信息进行存储;迭代存储器,其对校验信息、变量信息、和译码结果进行存储;控制器,根据迭代的进程,当需要进行校验节点更新运算时,将节点更新核心单元NU和节点更新辅助单元NAU配置为校验节点更新单元;当需要进行变量节点更新运算时,将节点更新核心单元NU和节点更新辅助单元NAU配置为变量节点更新单元,并对它们与存储器间的数据交换进行控制。
上述NU被分成m个NU组,每个NU组包括n个NU和1个NAU。NU组的数目m按照以下方法确定:假设校验矩阵有p个列块,各个列块的列重分别为CW1到CWp,假设校验矩阵有q个行块,各个行块的行重分别为RW1到RWq。通过观察近似可以得到RWi=(CWj+CWj+1+…+CWj+n),(n≥0),或者得到CWi=(RWj+RWj+1+…+RWj+n),(n≥0),其中i表示第i个校验矩阵行块,1≤i≤q,j表示第j个校验矩阵列块,1≤j≤p,构成了一个NU组,这个NU组里包含n个NU和1个NAU。依此类推,直到将所有的行块和列块遍历。
上述的NU包括:第一数据变换单元,将输入的数据由二进制补码形式变换成二进制原码形式,结果输出到第一数据选择器单元;第一数据选择器单元,选择第一数据变换单元的输入或者第一数据变换单元的输出输入到第一查找表单元和第二数据变换单元;第一查找表单元,其采用查找表方式,将输入的节点的信息转换为概率值,第一查找表单元的个数等于第一查找表单元所在的NU的输入节点数,概率值输出到第二数据变换单元和第二数据选择器单元;第二数据变换单元,将第一数据选择器单元的输出和第一查找表单元的输出由二进制原码形式变换成二进制补码形式,结果输出到第二数据选择器单元;第二数据选择器单元,选择第二数据变换单元的输出或者第一查找表单元的输出输入到第一加法器单元和减法器单元;第一加法器单元,其对第二数据选择器单元输出的概率值求和,参与加法的概率值的个数等于第二数据选择器单元个数,结果输出到NAU;减法器单元,以NAU中的第二加法器单元输出为被减数,分别减去第二数据选择器单元的输出,结果输出到第三数据选择器单元;第一符号运算单元,对NU的输入数据的符号进行符号运算,参与符号运算的NU的输入数据的符号个数等于第一符号运算单元所在的NU单元的输入节点数,结果输出到NAU;第二符号运算单元,从NAU中的第一符号运算单元的输出中,分别剔除NU的输入数据的符号,结果输出到第三数据选择器单元;第三数据选择器单元,选择将减法器单元的结果直接输出或者是将由减法器单元与第二符号运算单元的输出组成的结果输出到NAU。
上述的NAU包括:第一选择器单元,选择是否将NU单元输入的幅度求和信息传递给第一加法器参与运算;第二选择器单元,选择是否将初始化信息传递给第一加法器参与运算;第一加法器单元,对第一选择器单元的输出与第二选择器单元的输出进行求和,结果输出到第二加法器单元;第二加法器单元,对第一加法器单元的输出进行求和,结果输出到NU;判决器单元,根据第一加法器单元的输出结果进行判决,得到迭代的结果;第三选择器单元,选择是否将NU单元输入的符号求和信息传递给第一符号运算单元参与运算,结果输出到第一符号运算单元;第一符号运算单元,对第三选择器单元的输出结果进行异或运算,结果输出到NU。
综上所述,应用本发明提供的译码器装置和译码方法,可以对规则的或者不规则的LDPC码进行译码,并且译码时的变量节点更新运算与校验节点更新运算可以用同一套硬件结构完成,所以本译码器装置在译码速率相同的前提下,大大的节省了耗费的硬件资源。
附图说明
图1为本发明所涉及的LDPC译码所用的奇偶校验矩阵示意图;
图2为本发明所涉及的LDPC译码器所用的规则奇偶校验矩阵一个示例;
图3为本发明设计的LDPC译码器一个示例;
图4为节点更新核心单元的一个示例;
图5为节点更新核心单元简化为校验节点更新单元的一个示例;
图6为节点更新核心单元简化为变量节点更新单元的一个示例;
图7为节点更新辅助单元的一个示例;
图8为节点更新辅助单元简化为校验节点辅助单元的一个示例;
图9为节点更新辅助单元简化为变量节点辅助单元的一个示例;
图10为LDPC译码器译码步骤的流程图;
图11为本发明所涉及的LDPC译码器所用的非规则奇偶校验矩阵的一个示例。
图中:
具体实施方式
以下,参照附图对本发明的具体实施方式进行解释说明。
首先描述用于本实施例的奇偶校验矩阵。奇偶检验矩阵又称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。图2所示为一个具体的校验矩阵(标记为H0),其中p=6,q=3。并且H0的行重均为6,列重均为3,所以H0对应一个规则的LDPC码。
本领域内公知,H矩阵的每一行可以被视为一个奇偶校验方程,对应于H矩阵的第行的奇偶校验方程被称为第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所对应的规则LDPC码的译码。
首先叙述如何确定NU个数,每个NU的输入节点数以及对NU进行分组的方法。
按照传统的部分并行结构,此译码器需要3个CNU,分别为CNU1到CNU3对应的输入节点数目均为6,与对应的行块的行重相同;需要6个VNU,分别为VNU1到VNU6,对应输入节点数目均为3,与对应的列块的列重相同。显然,VNU1和VNU2的总规模和CNU1相当,VNU3和VNU4的总规模和CNU2相当,VNU5和VNU6的总规模和CNU3相当。所以,此译码器可以设置3个NU组,分别为NU组1到NU组3。每个NU组包含两个3输入的NU和一个NAU。
因此,此译码器共包含6个NU和3个NAU,分成了3个NU组。
接着叙述译码器的整体结构。
如图3所示,本实施例中的译码器包括以下部分:节点运算核心单元NU集合30,共包括p个节点运算核心单元,分别为30-1,…,30-x,…,30-p。在本实施例中p为6,单个NU的输入节点数为3,这6个NU单元分别为30-1到30-6,这6个NU能与后面的节点运算辅助单元NAU配合完成6个列块的变量节点更新运算,以及完成3个行块的校验节点更新运算。节点运算辅助单元NAU集合40,共包括y个节点运算辅助单元,分别为40-1,…,40-x,…,40-y,由于前述的6个NU分成3组,所以共有3个NAU,分别为40-1,40-2,40-3;迭代存储器单元集合10,包括18个存储器行块,与NU总的输入节点数相对应。分别为10-1到10-18。初始化存储器单元集合20,包括6个存储器单元,与校验矩阵的列块数目相对应,分别为20-1到20-6。其对译码器初始输入信息进行存储;控制器单元0,控制NU与NAU的输入、输出以及选通开关,对更新、迭代进行定序,并在NU的输入、输出时给出其相应的迭代存储器单元集合10与初始存储器单元集合20的读写地址。综上所述,本实施例中有NU的个数为6,NAU的个数为3,迭代存储器个数为18,初始存储器个数为6。
上述迭代存储器单元集合10中的各个存储单元与奇偶校验矩阵中每一个矩阵元素为“1”的节点对应。当与一个校验节点相关的校验信息更新运算结束后,将运算结果写入相应的迭代存储器单元集合10,完成校验节点更新运算;当与一个变量节点相关的变量信息更新运算结束后,将运算结果写入相应的迭代存储器单元集合10,完成变量节点更新运算;
下面描述本发明译码器的节点运算核心单元即NU。
如图4所示的NU结构为本实施例所用的NU结构,NU30-1到30-6均采用此结构。NU包括,第一数据变换单元集合301,共有x个数据变换单元,分别是301-1到301-x;第一数据选择器单元集合302,共有x个数据选择器单元,分别是302-1到302-x;第一查找表单元集合303,共有x个查找表单元,分别是303-1到303-x;第二数据变换单元集合304,共有x个数据变换单元,分别是304-1到304-x;第二数据选择器单元集合305,共有x个数据选择器单元,分别是305-1到305-x;第一加法器单元306,有x个输入项;减法器单元集合307,共有x个减法器单元,分别是307-1到307-x;第三数据选择器单元集合308,共有x个数据选择器单元,分别是308-1到308-x;第一符号运算单元310,其对输入的节点信息的符号进行符号运算,参与符号运算的个数等于该NU单元的输入节点数x;第二符号运算单元集合311,共有x个符号运算单元,分别为311-1到311-x,其实际上就是一个输入数目为2的异或单元。上述代表数值的字母均为整数,下同。
上述NU单元结构依据前述式(1)至(5)设计,上述x的值为此NU的输入节点数目。在本实施例中,NU30-1到30-6中的x都等于3。
当图4中的数据选择器的控制信号为0时,NU的结构如图5所示,此时,NU变成了CNU,用于处理校验矩阵的校验信息。第一查找表单元303-1到303-x用于式(1)中的Ψ函数运算。第一加法器单元306与后面所述的加法器单元403共同完成式(1)中n∈N(m)的求和。减法器单元307-1到307-x用于完成式(1)中除去n=j的情况。上述第一加法器单元306是一个多输入的加法器,当然也可以用若干个2输入的加法器实现;第一符号运算单元310与后面所述的符号运算单元406共同完成式(2)中n∈N(m)的异或运算。第二符号运算单元311-1到311-x用于完成式(2)中除去n=j的情况。上述第一符号运算单元310是一个多输入的异或器,当然也可以用若干个2输入的异或器实现。
当图4中的数据选择器的控制信号为1时,NU的结构如图6所示,此时,NU变成了VNU,用于处理校验矩阵的变量信息。第一查找表单元303-1到303-x用于式(4)中的Ψ函数运算。第一加法器单元306与后面所述的加法器单元403,404共同完成式(4)中m∈M(j)的求和。减法器单元307-1到307-x用于完成式(5)中的减法。
下面描述本发明译码器的节点运算辅助单元即NAU。
如图7所示的NAU单元结构为本实施例所用的NAU单元结构,NAU单元40-1到40-3均采用此结构。NAU单元具有:第一数据选择器单元集合401,共有y个数据选择器单元,分别是401-1到401-y;第二数据选择器单元集合402,共有y个数据选择器单元,分别是402-1到402-y;;第一加法器单元集合403,共有y个加法器器单元,分别是403-1到403-y;第二加法器单元404;判决器单元集合405,共有y个判决器单元,分别是405-1到405-y;第三数据选择器单元集合407,共有y个数据选择器单元,分别是407-1到407-y;第一符号运算单元406,参与符号运算的输入数目为y。
上述y的值为此每组NU内的NU的个数。在本实施例中,NU30-1到30-6中的y都等于2。
下面描述译码器的译码步骤。
下面,将结合图3所示的译码器结构示意图、图4,图5,图6所示的NU结构图及图7所示的NAU结构图,对迭代运算顺序和具体计算方法进行说明。
初始化步骤:
当接收到来自信道的LDPC码字后,首先,由控制器单元0控制执行初始化步骤。在初始化步骤中,控制器单元0控制6个NU 30-1至30-6和3个NAU分别从对应的6个初始化存储器20-1至20-6中将(4)中的-2rj/σ2取出,写到迭代存储器单元10对应的存储器单元中,其中,上述-2rj/σ2为每一个校验节点所属列对应的从通信信道中接收的一组LDPC码字中每个码字xj对应的概率信息。根据式(4)及式(5),令其参加相应的运算步骤。其值将作为L(qmj)的初始值参加后述的校验节点更新运算。
第一迭代步骤:
在本步骤中,控制器单元0将图4中的control信号设置成0,控制6个NU以及3个NAU进行校验节点更新运算即对与同一个校验节点相连的所有变量节点的校验信息进行更新。
如前所述,对于H0,6个NU和3个NAU被分成了3组,每组2个NU和1个NAU。于是,NU 30-1,30-2与NAU 40-1完成H0的第1个行块的校验节点更新运算,CNU 30-3,30-4与NAU 40-2完成H0的第2个行块的校验节点更新运算,CNU 30-5,30-6与NAU 40-3完成H0的第3个行块的校验节点更新运算。
在第一迭代步骤开始前,控制器单元0控制NU单元结构中的control信号变成0,于是图4所示的NU单元结构图便简化成了图5。同时,控制器单元0控制NAU单元结构中的controlz为1,controld为0,controls为0,于是图7所示的NAU单元结构图便简化成了图8。
以第一组为例,NU30-1在本步骤的第一个运算周期中即T1内,其对用于H0矩阵的行标为1的子矩阵行的第一行内的前3个变量节点上的校验信息进行运算,并求解出用于更新所需的辅助信息ADout1与ASout1;NU 30-2在本步骤的第一个运算周期中即T1内,其对用于H0矩阵的行标为1的子矩阵行的第一行内的后3个变量节点上的校验信息进行运算,并求解出用于更新所需的辅助信息ADout2与ASout2;NAU 40-1对NU 30-1和NU 30-2输出的辅助信息ADout进行求和,对ASout进行异或运算,并输出运算后的结果ADin与ASin;NU 30-1和NU 30-2根据NAU的输出结果进行减法运算从而更新所有的校验信息。
具体地,译码器进行下述动作S1,如图3所示的控制器单元0在T1运算周期开始后,即控制将H0矩阵的行标为1的子矩阵行中第一行的前3个变量节点对应的存储器单元10中的变量信息读出,将其作为式(1)和(2)中的L(qmj)并行输入至NU 30-1,即此时图5中的Dinx为L(qmj)。然后,如图5所示,进行下述运算过程:将全部Din1至Dinx的第一位作为符号位单独计算,同时Din1至Dinx被送入第一数据变换单元301-1至301-3,从二进制补码形式变换成二进制原码形式,接着Din1至Dinx的除去最高位符号位的其余位被送入第一查找表单元303-1至303-3,分别求出式(1)中的Ψ函数;其后,由第一加法器306完成这3个查找表的输出的求和运算,求和结果ADout0输出给NAU 40-1。另一方面,上述全部Din1至Dinx的第一位,由异或单元310完成异或运算,运算结果ASout0输出给NAU 40-1。
同时,控制器单元0在T1运算周期开始后,即控制将H0矩阵的行标为1的子矩阵行中第一行的后3个变量节点对应的存储器单元10中的变量信息读出,将其作为式(1)和(2)中的并行输入至NU30-2,经过与NU30-1相同的步骤,NU30-2产生ADout2和ASout2输出给NAU40-1。
此时,如图7所示,第一数据选择器401-1和401-2分别选择将ADout1和ADout2输入给第一加法器403;第二数据选择器402选择将0输入给第二加法器404;第三数据选择器407-1和407-2选择将ASout1和ASout2输入给第一符号运算单元406。如图8所示,于是第一加法器集合403以及第二加法器单元404完成ADout1和ADout2的求和得到结果ADin;第一符号运算单元406完成ASout1和ASout2的异或运算得到结果ASin。
NAU40-1将辅助信息ADin与ASin输入给NU30-1与NU30-2后,减法器307-1到307-3完成式(1)中除去n=j的情况,到此,式(1)的计算完成;同时,第二符号运算单元311-1到311-3完成式(2)中除去n=j的情况,到此,式(2)的计算完成。最后,将减法器集合307的输出结果与异或单元集合311的输出结果组合便完成了式(3)的运算。NU30-1与30-2所对应的H0矩阵的行标为1的子矩阵行的第一行内的6个变量节点上的校验信息便得到了更新。
在第一运算周期T1结束时,由控制器单元0控制,将NU 30-1输出的数据存入H0矩阵的行标为1的子矩阵行的第一行内的前3个变量节点对应的迭代存储器集合10中的存储单元中,将NU 30-2输出的数据存入H0矩阵的行标为1的子矩阵行的第一行内的后3个变量节点对应的迭代存储器集合10中的存储单元中,译码器完成动作S1。
与上述第一运算周期T1相同,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上S1的动作,其中,NU30-1在第二运算周期T2至第a运算周期Ta内,分别重复以上运算过程,由控制器0控制,输入的信息应为H0矩阵中行标为1的子矩阵行中余下的行的前3个变量节点的变量信息,输出的信息应各自对应H0矩阵行标为1的子矩阵行中余下的行的前3个变量节点的校验信息。NU30-2在第二运算周期T2至第a运算周期Ta内,分别重复以上运算过程,由控制器0控制,输入的信息应为H0矩阵中行标为1的子矩阵行中余下的a-1行的后3个变量节点的变量信息,输出的信息应各自对应H0矩阵行标为1的子矩阵行中余下的a-1行的后3个变量节点的校验信息。NAU 40-1在第二运算周期T2至第a运算周期Ta内,分别重复以上运算过程,由控制器0控制,对NU30-1与NU30-2输出的辅助信息ADout进行求和,对ASout进行异或运算,并将运算结果输入回NU30-1与NU30-2。
根据本领域内的公知技术,在图4所示的NU单元结构中可以插入流水线,从而改善时钟性能。
由于每一组的NU与NAU采用相同的结构,且在同一时刻并行运算,因此它们之间的动作特性是相同的,也可以说,在上述的T1周期至Ta周期内进行相同的运算,只不过,不同组的输入信息应为H0矩阵中相应的的各个变量节点的变量信息,输出的信息应各自对应H0矩阵的各个变量节点的校验信息,对于它们各自具体的运算步骤等,将不再赘述。在后述说明中,也将采取与上述类似的说明方式,只说明一个具有代表性的运算单元的动作特性。
至Ta周期动作结束,完成了第一迭代步骤,对于H0矩阵中的所有变量节点上的校验信息进行了一次更新。
第二迭代步骤:
在本步骤中,控制器单元0控制6个NU与3个NAU进行变量节点更新运算。
如前所述,对于H0,6个NU和3个NAU被分成了3组,每组2个NU和1个NAU。于是,NU 30-1与NAU 40-1完成H0的第1个列块的变量节点更新运算,NU 30-2与NAU 40-1完成H0的第2个行块的变量节点更新运算,CNU 30-3与NAU 40-2完成H0的第3个列块的变量节点更新运算,依次类推,NU30-6与NAU30-3完成H0的第6个列块的校验节点更新运算。
由于当第一迭代步骤中的Ta周期动作结束时,已经对与H0矩阵中各个变量节点对应的存储器单元10的存储单元中的所有进行了更新,即式(4)和式(5)的运算条件已经满足,因此,在本迭代步骤中,对H0矩阵进行变量节点更新运算。
在第二迭代步骤开始前,控制器单元0控制NU单元结构中的control信号变成1,于是图4所示的NU单元结构图便简化成了图6。同时,控制器单元0控制NAU单元结构中的controlz为0,controld为0,controls为1,于是图7所示的NAU单元结构图便简化成了图9。
以第一组的NU30-1,30-2以及NAU40-1为例,具体地,译码器进行下述动作S2,如图3所示的控制器单元0在T1周期开始后,控制将H0矩阵的列标为1的子矩阵列中第一列的校验节点对应的迭代存储器10中由第一迭代步骤中求出的Rmj(m=1、2…、n)读出,将它们分别作为式(4)和式(5)中的变量,如图4所示,并行输入至NU30-1,然后,进行下述运算过程:将全部Din1至Dinx的除掉最高位符号位的其余位送入第一查找表单元303-1至303-3,分别求出式(4)和式(5)中的Ψ函数;接着,将第一查找表单元的输出结果与对应的之前符号位组合并输入到第二数据变换单元304-1至304-3,从二进制原码形式变换成二进制补码形式,然后,由第一加法器306完成这3个数据类型转换后的数据的求和运算,求和结果ADout1输出给NAU 40-1。
同时,NU30-2完成与NU30-1相同的动作,并将产生的求和结果ADout2输出给NAU 40-1。
同时,控制器单元0在T1周期开始后,控制将H0矩阵的列标为1和2的子矩阵列中第一列的校验节点对应的初始存储器20中的存储单元中的信息-2rj/σ2读出,并将它们分别作为Zv1和Zv2输入给NAU 40-1。
在NAU40-1中,如图9所示,由加法器403-1与403-2完成式(4)中的求和运算,算出L(qj),经判决单元集合405即输出译码结果sign1与sign2。同时,NAU40-1将加法器403-1与403-2的输出分别送给NU30-1与30-2。NU30-1与30-2中的减法器集合307中的减法器单元307-1至307-3完成式(5)的运算,输出L(qmj)。
在上述第一运算周期T1结束时,由控制器单元0控制,将NU 30-1与30-2输出的数据分别存入与H0矩阵列标为1与2的子矩阵列中第一列的校验节点对应的迭代存储器集合20中的存储器单元中,译码器完成动作S3。
与上述其它迭代步骤相同地,本迭代步骤中,译码器还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作S2,其中,NU 30-1还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作,但由控制器单元0控制,输入的信息应为H0矩阵中列标为1的矩阵列中余下的a-1列的与同一个变量节点相连的各个校验节点的校验信息,输出的信息应各自对应H0矩阵列标为1的子矩阵列中余下的a-1列的与同一个变量节点相连的各个校验节点的变量信息。NU 30-2还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作,但由控制器单元0控制,输入的信息应为H0矩阵中列标为2的矩阵列中余下的列的与同一个变量节点相连的各个校验节点的校验信息,输出的信息应各自对应H0矩阵列标为1的子矩阵列中余下的列的与同一个变量节点相连的各个校验节点的变量信息。NAU40-1还要在第二运算周期T2至第a运算周期Ta内,分别重复以上动作,由控制器单元0控制,对初始化信息以及NU30-1和NU30-2的辅助信息进行求和。
另外,与上述其它迭代步骤相同地,本迭代步骤中,其它两组NU与NAU在上述的T1周期至Ta周期内进行相同的运算,其中,NU 30-3至NU 30-6的输入信息应为H0矩阵中列标为3到6的子矩阵列中a列的与同一个变量节点相连的各个校验节点的校验信息,输出的信息应各自对应H0矩阵列标为2至6的子矩阵中的a列的与同一个变量节点相连的各个校验节点的变量信息。
至Ta周期动作结束,完成了第二迭代步骤,对于H0矩阵中的与同一个变量节点相连的各个校验节点上的变量信息进行了更新。
其它的迭代周期均如上述的第一及第二迭代周期所述,交替对H0(或H1)矩阵的校验节点的校验信息和变量节点的变量信息进行运算更新,以上的迭代运算,由控制器单元0控制,在第m迭代周期的第二迭代步骤中的Ta周期动作结束时停止,其中m为预先设置的最大迭代次数。
并且在该第m迭代周期的第二迭代周期中,控制单元0将各个NAU单元40-1至40-3中的判决单元集合405输出的判决结果signn读出,按照H0矩阵的列顺序排列并输出,完成一组LDPC码字的译码。
上述译码器译码步骤的流程图如图10所示。
实施例2:
本实施例用于图11所示非规则LDPC码的译码。如图11所示,H1的行块数为6,行重从上到下依次是6,6,7,7,7,7。列块数为10,列重从左到右依次是3,3,3,3,4,4,4,4,6,6。与实施例1相比,本实施例中仅在NU个数,NU的输入节点数以及分组的确定方法上有所不同,现描述如下:
按照传统的部分并行结构,此译码器需要6个CNU,分别为CNU1到CNU6对应的输入节点数目分别为6,6,7,7,7,7,与对应的行块的行重相同;需要10个VNU,分别为VNU1到VNU10,对应输入节点数目分别为3,3,3,3,4,4,4,4,6,6,与对应的列块的列重相同。显然,VNU1和VNU2的总规模和CNU1相当,VNU3和VNU4的总规模和CNU2相当,VNU5和VNU6的总规模和CNU3相当,VNU7和VNU8的总规模和CNU4相当,VNU9和VNU10的规模分别和CNU5和CNU6相当。所以,此译码器可以设置6个NU组,分别为NU组1到NU组6。在NU组1和NU组2中,分别包含两个3输入的NU和一个NAU,在NU组3和NU组4中,分别包含两个4输入的NU和一个NAU,在NU组5和NU组6中,分别包含一个7输入的NU与一个NAU。
在进行迭代译码时,NU组1和NU组2和实施例1中的NU组没有区别,但是NU组3和NU组4在进行校验节点更新运算时,总的输入节点数为8,大于所需的输入节点数7,此时只需要将多余的输入节点设置成0即可。同理,NU组5和NU组6在进行变量节点更新运算时,也需要将多余的输入节点设置成无效即可。
此外,上述的译码器的译码步骤,与实施例1中译码器的译码步骤相同,可参照实施,此处不再赘述。
Claims (7)
1、一种LDPC码的译码器,主要包括:节点更新核心单元NU;节点更新辅助单元NAU;初始化存储器,其对译码器初始输入信息进行存储;迭代存储器,其对校验信息、变量信息、和译码结果进行存储;控制器,对节点更新核心单元NU和节点更新辅助单元NAU进行控制,控制它们进行校验节点更新运算或者进行变量节点更新运算,并对它们与存储器间的数据交换进行控制;其特征在于:
所述的节点更新核心单元NU能对对应的校验矩阵中各行的校验信息以及对校验矩阵中各列的变量信息进行计算,并求出NAU单元所需的幅度求和信息以及符号求和信息;
所述的节点更新辅助单元NAU能对节点更新核心单元NU输出的幅度求和信息以及初始化信息的幅度进行求和,以及对节点更新核心单元NU输出的符号求和信息以及初始化信息的符号进行求和;
所述控制器被配置为根据迭代的进程,当需要进行校验节点更新运算时,将节点更新核心单元NU和节点更新辅助单元NAU配置为校验节点更新单元;当需要进行变量节点更新运算时,将节点更新核心单元NU和节点更新辅助单元NAU配置为变量节点更新单元。
2、根据权利要求1所述的一种LDPC码的译码器,其特征在于:上述NU被分成若干个NU组,每个NU组包括若干个NU和1个NAU。NU组的数目m按照以下方法确定:假设校验矩阵有p个列块,各个列块的列重分别为CW1到CWp,假设校验矩阵有q个行块,各个行块的行重分别为RW1到RWq。通过观察近似可以得到RWi=(CWj+CWj+1+…+CWj+n),(n≥0),或者得到CWi=(RWj+RWj+1+…+RWj+n),(n≥0),其中i表示第i个校验矩阵行块,1≤i≤q,j表示第j个校验矩阵列块,1≤j≤p,构成了一个NU组,这个NU组里包含n个NU和1个NAU。依此类推,直到将所有的行块和列块遍历。
3、根据权利要求1所述的一种LDPC码的译码器,其特征在于:所述的NU包括:
第一数据变换单元,将输入的数据由二进制补码形式变换成二进制原码形式,结果输出到第一数据选择器单元;
第一数据选择器单元,选择第一数据变换单元的输入或者第一数据变换单元的输出输入到第一查找表单元和第二数据变换单元;
第一查找表单元,其采用查找表方式,将输入的节点的信息转换为概率值,第一查找表单元的个数等于第一查找表单元所在的NU的输入节点数,概率值输出到第二数据变换单元和第二数据选择器单元;
第二数据变换单元,将第一数据选择器单元的输出和第一查找表单元的输出由二进制原码形式变换成二进制补码形式,结果输出到第二数据选择器单元;
第二数据选择器单元,选择第二数据变换单元的输出或者第一查找表单元的输出输入到第一加法器单元和减法器单元;
第一加法器单元,其对第二数据选择器单元输出的概率值求和,参与加法的概率值的个数等于第二数据选择器单元个数,结果输出到NAU;
减法器单元,以NAU中的第二加法器单元输出为被减数,分别减去第二数据选择器单元的输出,结果输出到第三数据选择器单元;
第一符号运算单元,对NU的输入数据的符号进行符号运算,参与符号运算的NU的输入数据的符号个数等于第一符号运算单元所在的NU单元的输入节点数,结果输出到NAU;
第二符号运算单元,从NAU中的第一符号运算单元的输出中,分别剔除NU的输入数据的符号,结果输出到第三数据选择器单元;
第三数据选择器单元,选择将减法器单元的结果直接输出或者是将由减法器单元与第二符号运算单元的输出组成的结果输出到NAU。
4、根据权利要求1所述的一种LDPC码的译码器,其特征在于:所述的NAU包括:
第一选择器单元,选择是否将辅助信息传递给第一加法器参与运算;
第二选择器单元,选择是否将初始化信息传递给第一加法器参与运算;
第一加法器单元,对第一选择器单元的输出与第二选择器单元的输出进行求和,结果输出到第二加法器单元;
第二加法器单元,对第一加法器单元的输出进行求和,结果输出到NU;
判决器单元,根据第一加法器单元的输出结果进行判决,得到迭代的结果;
第三选择器单元,选择参与第一符号运算单元的参数的数目,结果输出到第一符号运算单元;
第一符号运算单元,对第三选择器单元的输出结果进行异或运算,结果输出到NU。
5、一种应用于权利要求1所述的LDPC码的译码器的译码方法,分为以下步骤:
步骤1:初始化:
分别地和顺序地,控制器控制NU与NAU从初始化存储器中将输入的概率信息取出,写到迭代存储器中,其值作为变量节点的变量信息参加后述的校验节点更新运算;
步骤2:校验节点更新运算:
分别地和顺序地,控制器控制NU组对奇偶校验矩阵的校验信息进行更新,输入为与同一个校验节点相连的各个变量节点的变量信息,输出为更新后的此校验节点传递给与之相连的变量节点的校验信息;
步骤3:变量节点更新运算:
分别地和顺序地,控制器控制NU组对奇偶校验矩阵的变量信息进行更新,输入为与同一个变量节点相连的各个校验节点的校验信息,输出为更新后的此变量节点传递给与之相连的校验节点的变量信息;
步骤4:重复所述步骤2至步骤3,进行迭代,直到满足迭代停止条件。
其特征在于:
步骤1至步骤3中的完成更新运算的NU单元与NAU单元需要控制器进行控制,使之分别工作在校验节点更新状态与变量节点更新状态;
步骤1和步骤3中的更新运算以NU组为单位进行,完成更新运算需要组内的NU单元与NAU单元之间相互配合。
6、根据权利要求5所述的译码方法,其特征在于:其校验节点更新运算按照以下步骤实施:
步骤1:控制器控制NU组中NU的第一数据变换单元将校验矩阵的各行的变量节点的变量信息由二进制补码形式变换成二进制原码形式,参与此运算的变量节点的变量信息个数等于NU的输入节点数;
步骤2:控制器控制NU组中NU的第一查找表单元采用查找表方式,将第一数据变换单元输出的校验矩阵的各行的变量节点的变量信息转换为概率值,参与查找表运算的第一数据变换单元输出的校验矩阵的各行的变量节点的变量信息个数等于NU的输入节点数;
步骤3:控制器控制NU组中NU的第一加法器单元对第一查找表单元输出的概率值求和,参与加法的概率值个数等于第一查找表单元个数;第一符号运算单元对校验矩阵的各行与同一个校验节点相连的变量节点的变量信息的符号进行运算,参与符号运算的变量节点的变量信息的符号个数等于第一查找表单元个数;
步骤4:控制器控制NU组中NAU的第一加法器单元以及第二加法器单元对NU的第一加法器单元的输出进行求和,并将结果送回NU减法器的输入端。与此同时,NAU的第一符号运算单元对NU的第一符号运算单元的输出结果进行异或运算,并将结果送回NU第二符号运算单元的输入端。
步骤5:控制器控制NU组中NU的减法器单元以NAU的第二加法器单元的输出为被减数,分别减去第一查找表单元输出的概率值,NU的减法器单元的个数与第一查找表单元个数相同;第二符号运算单元从NAU第一符号运算单元输出的符号运算的结果中,分别剔除掉校验矩阵各行的与同一个校验节点相连的变量节点的变量信息的符号,第二符号运算单元的个数与第一查找表单元数目相同。
7、根据权利要求5所述的译码方法,其特征在于:其变量节点更新运算按照以下步骤实施:
步骤1:控制器控制NU组中NU的第一查找表单元采用查找表方式,将输入转换为概率值,参与查找表运算的输入数据个数等于此NU的输入节点数;
步骤2:控制器控制NU组中NU的第二数据变换单元将第一查找表单元的输出结果与之前的符号位组合成的数据从二进制原码形式变换成二进制补码形式。
步骤3:控制器控制NU组中NU的第一加法器单元对第二数据变换单元的输出结果进行求和,并将结果作为输入传递给NAU的第一加法器单元。
步骤4:控制器控制NU组中NAU中的第一加法器单元完成初始化信息与NU的第一加法器单元的输出的求和运算,并将结果作为输入传递给NU的减法器单元。与此同时,NAU中的判决单元对第一加法器单元的输出进行判决,得到译码结果。
步骤5:控制器控制NU组中NU的减法器单元以NAU的第一加法器的输出为被减数,分别减去与同一个变量节点相连的各个校验节点的校验信息。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710118461A CN100578945C (zh) | 2007-07-06 | 2007-07-06 | 一种ldpc码的译码器装置及译码方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN200710118461A CN100578945C (zh) | 2007-07-06 | 2007-07-06 | 一种ldpc码的译码器装置及译码方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101094001A CN101094001A (zh) | 2007-12-26 |
CN100578945C true CN100578945C (zh) | 2010-01-06 |
Family
ID=38992071
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200710118461A Expired - Fee Related CN100578945C (zh) | 2007-07-06 | 2007-07-06 | 一种ldpc码的译码器装置及译码方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN100578945C (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101262231B (zh) * | 2008-04-25 | 2011-09-28 | 浙江大学 | 一种块状低密度校验码的译码方法及可重构多模式译码器 |
CN102195740B (zh) * | 2010-03-05 | 2013-06-19 | 华东师范大学 | 低密度奇偶校验码的简化译码校验方法及装置 |
CN102970047B (zh) * | 2012-12-01 | 2016-02-24 | 电子科技大学 | 基于平均幅度的ldpc码加权梯度下降比特翻转译码算法 |
CN106301389B (zh) * | 2015-06-05 | 2019-09-20 | 华为技术有限公司 | 译码方法和设备 |
US10574274B2 (en) * | 2017-09-29 | 2020-02-25 | Nyquist Semiconductor Limited | Systems and methods for decoding error correcting codes |
-
2007
- 2007-07-06 CN CN200710118461A patent/CN100578945C/zh not_active Expired - Fee Related
Also Published As
Publication number | Publication date |
---|---|
CN101094001A (zh) | 2007-12-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101232288B (zh) | 一种基于奇偶校验矩阵的ldpc码的译码方法及译码器 | |
CN104868925B (zh) | 结构化ldpc码的编码方法、译码方法、编码装置和译码装置 | |
CN101106381B (zh) | 分层的低密度校验码译码器及译码处理方法 | |
CN100542049C (zh) | 一种多码率的ldpc码的译码器装置及译码方法 | |
CN102394661B (zh) | 基于层译码处理的ldpc译码器及译码方法 | |
CN102412847B (zh) | 用联合节点处理来解码低密度奇偶校验码的方法和设备 | |
CN101662290B (zh) | 生成准循环ldpc码及编码的方法与装置 | |
CN105846830B (zh) | 数据处理装置 | |
CN102281125B (zh) | 分层分块非规则低密度校验码译码器及译码方法 | |
CN102075198B (zh) | 准循环低密度奇偶校验卷积码编译码系统及其编译码方法 | |
CN101771421B (zh) | 基于tdmp的超高速低功耗qc-ldpc码解码器 | |
CN106160752A (zh) | 用于分层ldpc译码器的提早退出的系统和方法 | |
CN100578945C (zh) | 一种ldpc码的译码器装置及译码方法 | |
CN103155421A (zh) | Ldpc多解码器架构 | |
CN102664638A (zh) | 基于分层nms算法的多码长ldpc码译码器的fpga实现方法 | |
CN1937413A (zh) | 双涡轮结构低密度奇偶校验码解码器 | |
CN101604975A (zh) | 一种低功耗多模qc-ldpc码解码器及其工作方法 | |
CN101594152B (zh) | 实现水平运算和垂直运算同时运行的ldpc码译码方法 | |
CN100544212C (zh) | 高速的减少存储需求的低密度校验码解码器 | |
CN113783576A (zh) | 用于从循环置换矩阵的集群构建的准循环低密度奇偶校验码的垂直分层解码的方法及设备 | |
CN109802688A (zh) | 一种多进制ldpc译码系统和方法 | |
CN102291153A (zh) | Cmmb中ldpc码的译码算法及部分并行译码器 | |
CN101924564A (zh) | 行列节点同步更新的部分并行准循环ldpc码译码器结构 | |
CN101420279B (zh) | 用于移动多媒体广播中的高速ldpc译码器及译码方法 | |
CN101478312A (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: 20100106 Termination date: 20100706 |