一种低复杂度的列分层ldpc译码器实现方法
【技术领域】
[0001] 本发明涉及一种低复杂度的列分层LDPC译码器实现方法,属于通信信道译码领 域。
【背景技术】
[0002] LDPC码的译码算法通常采用洪水信息传递策略,在每次迭代中所有的变量节点和 校验节点的消息更新都是并行进行的,采用洪水信息传递策略情况下,对于MXN维的LDPC 码,节点的信息更新需要M路校验节点处理单元和N路变量节点处理单元并行工作,节点处 理单元处理的各节点信息采用上一轮迭代产生的结果。以d。表示矩阵中校验节点的度数, dv表示变量节点的度数,该方法需要并行d¥路进行校验节点的更新,每路要求计算d。个数 的最小值及次小值,其运算资源占用量十分庞大。另外,在存储访问上该方法要求一个时钟 周期内同时取出d。?dv个变量节点的信息,对存储资源的带宽要求也非常高。
[0003] 分层译码LayeredBP(LBP)是一种串行译码算法,在迭代译码中,节点信息的更新 采用串行的工作方式,通过利用本次迭代中已经更新的节点信息,将能够加快译码的收敛 速度。研究表明没有经过顺序优化的分层译码可以节省一半的迭代次数。译码器按校验矩 阵的列的顺序进行信息更新的,即信息更新是以变量节点为单位的算法,称为列分层译码 算法。列分层译码算法,如常见的ShuffledBP算法,为了降低实现的复杂度,在外信息更 新过程中通常采用最小和算法,以最小值和次小值近似计算校验节点的外信息,但列分层 算法由于在外信息更新过程中以列顺序进行信息更新,为了保证译码过程中外信息更新过 程中最小值和次小值的准确性,需要对所有变量的外信息进行保存。针对该缺陷,一种名为 Col-Layer-3min的简化译码算法被提出,该算法将每个校验节点更新所需的d。个外信息存 储单元缩减到两个外信息三元组,能够在译码损失很低的情况下有效降低译码实现过程中 外信息存储所需的硬件资源,但该算法在三元组更新过程中引入了额外的三元组比较更新 计算,在一定程度上增加了译码过程中的数学计算量。
【发明内容】
[0004] 本发明的技术解决问题是:克服现有技术的不足,提供了一种低复杂度的列分层 LDPC译码器实现方法,在现有技术Col-Layer-3min算法的基础上进一步降低了译码过程 中每个校验节点更新所需的外信息存储资源,将存储所需的外信息三元组减少为外信息二 元组,与Col-Layer-3min算法的三元组更新计算相比,提出方法的二元组更新计算复杂度 明显降低,且译码性能损失极少。
[0005] 本发明的技术解决方案是:
[0006] -种低复杂度的列分层LDPC译码器实现方法,其特征在于步骤如下:
[0007] (1)利用信道接收的似然比LLR信息f,初始化各校验节点的外信息,其中j为接 收比特对应的校验矩阵列标,0 <j〈N:对于第i行的外信息,0 <i〈M,计算该第i行中所有 非0元素对应的fj的最小值Hii和次小值s;,记为Oiii,Si),并记录其列标Qmi,is;);将第i 行各校验节点的符号信息Sgni]初始化为该列似然比LLR信息^,的符号位,并将所有sgnu累加后得到该第i行的外信息符号总和Sgruall1,将译码的迭代次数k初始化为1 ;其中,N 为LDPC校验矩阵的列数,M为LDPC校验矩阵的行数,且N>M。
[0008] (2)迭代译码,计算步骤如下:
[0009] a)将LDPC校验矩阵的第一行设定为初始更新行,即标记当前行为i,且令i= 0 ;
[0010] b)将与当前行对应的校验节点i相连接的所有山个变量节点的集合记为Vi;d¥为 LDPC码的行重;
[0011] c)从Vi中取出一个变量节点,令该节点下标为j,将与变量节点j相连的所有校 验节点组成集合Cj,读出集合Cj中所有行的外信息二元组(mx,sx)、(imx,isx)、对应的符号 信息sgnXJ和sgn_all.j,XGCj;
[0012] d)利用外信息二元组(mx,sx)还原第k-1次迭代的变量节点外信息prx/ \xGCj, 其计算如下:
[0013]
[0014] e)计算第k-1次迭代的校验节点外信息lrx]k \XG&a为归一化因子,公式如 下:
[0015] lrxjk1=prxjk1 ?a? (sgn_alljxorsgnxj);
[0016]f)读出似然比LLR信息&,更新计算后验概率信息Ptallj并对第j个码字做判 决处理,计算关系如下:
[0018] 如果prjlip〇,判决结果为码字cj= 〇,否则码字cj= 1 ;
[0019] g)更新计算第k次迭代的变量节点信息pr;/,计算如下:
[0020] Pi^jk=pr_allrlrif1
[0021] h)更新外信息二元组Oiii,Si)、Qmi,is;)、对应的符号信息Sgnij和sgn_all;,并写 入存储器;
[0022] 具体为:
[0023] 1)当Pri/^= 0 时,sgnu取值为 0 ;当pr;/〈0 时,Sgnu取值为 1 ;
[0024] 2)当pr_all.j彡 0 时,sgn_all;取值为 0 ;当pr_all』〈0 时,sgn_alli取值为 1 ;
[0025] 3)当j=imjt,将IprI与s;:?行比较,若IprJI<Si,将Ini值更ff为IprI, 否则,将Hii值更新为原s;值,im;更新为原is;值,s;值更新为(IprJI+Si) /2,isj:t更新 为j;
[0026] 当j=is^,将IprjI与叫进行比较,若IprI<Ini,则将叫值更新为 IprukI,inii更新为j,s;值更新为原m;值,is;值更新为原im;值,否则,将s;值更新为 (Ipri/l+nO/%isj:t更新为j;
[0027] 当7' $忉",.A.丨时,将IPri/I与Oiii,Si)进行比较,若IPri/I彡nv则将叫值更新为 Pri/1,in!;更新为j,将s;值更新为原m;值,is;值更新为原im;值,若m;〈IPri/I彡Si, 则将sj:t更新为|pri/l,isji;更新为j,若|pri/pSi,则IIii,和Si维持原值不变;
[0028] i)将变量节点」从V1中移除,若V1为非空集合,跳转至步骤c)进行第i行的下 一个变量节点的更新计算;若V1为空集,则将当前行的下标i加1,若此时i辛M,跳转至步 骤d)进行下一行的变量节点更新,否则进入(3)进行判决处理;
[0029] (3)判决:检查本次的迭代次数k是否已达到预设的最大迭代次数it_,若k= itmax,迭代停止,跳转至步骤⑷;若Kitmax,将c= [c。,C1,…,Cj,…,cNJ代入LDPC校验矩 阵H进行校验计算,若CHt= 0,则表示译码结果满足校验方程,迭代停止,跳转至步骤(4), 若cHT辛0,将迭代次数k加1,返回步骤⑵进行下一次的迭代运算;
[0030] ⑷将所有判决码字C= [c。,C1,…,Cj,…,cNJ作为译码结果输出,完成LDPC译 码。
[0031] 本发明与现有技术相比的有益效果是:
[0032] (1)本发明在Col-Layer_3min算法的基础上进一步减少译码过程中外信息存储 的资源需求量,并且可以大幅降低Col-Layer-3min算法在压缩存储上所需的比较及替换 次数。
[0033] (2)本发明提出方法通过对最小值损失的补偿计算,能够在降低存储和计算资源 的同时保持优异的译码性能。
【附图说明】
[0034] 图1为本发明流程图;
[0035] 图2是j=imjt|pr^1的取值与二元组的取值关系;
[0036] 图3是j=isjt|pr^1的取值与二元组的取值关系;
[0037] 图4是./?彳/叫,/.V,.丨时IprjI的取值与二元组的取值关系。
[0038] 图5为本发明和现有译码算法的性能比较。
【具体实施方式】
[0039] 本发明提出的一种低复杂度列分层LDPC译码器实现方法属于串行的LDPC译码方 法,其特点是译码器的译码计算单元复用程度高,迭代收敛速度快,适合应用于各种速率要 求不高的数字通信信道传输纠错中。
[0040] 如图1所示,本发明提供的一种低复杂度的列分层LDPC译码器实现方法,步骤如 下:
[0041] (1)利用信道接收的似然比LLR信息f,初始化各校验节点的外信息,其中j为接 收比特对应的校验矩阵列标,0 <j〈N:对于第i行的外信息,0 <i〈M,计算该第i行中所有 非0元素对应的fj的最小值Hii和次小值s;,记为Oiii,Si),并记录其列标Qmi,is;);将第i 行各校验节点的符号信息Sgni]初始化为该列似然比LLR信息^,的符号位,并将所有sgnu 累加后得到该第i行的外信息符号总和Sgruall1,将译码的迭代次数k初始化为1 ;其中,N 为LDPC校验矩阵的列数,M为LDPC校验矩阵的行数,且N>M。
[0042] (2)迭代译码,计算步骤如下:
[0043] a)将LDPC校验矩阵的第一行设定为初始更新行,即标记当前行为i,且令i= 0 ;
[0044] b)将与当前行对应的校验节点i相连接的所有山个变量节点的集合记为Vi;d¥为 LDPC码的行重;
[0045] c)从Vi中取出一个变量节点,令该节点下标为j,将与变量节点j相连的所有校 验节点组成集合Cj,读出集合Cj中所有行的外信息二元组(mx,sx)、(imx,isx)、对应的符号 信息sgnXJ和sgn_all.j,XGCj;
[0046] d)利用外信息二元组(mx,sx)还原第k-1次迭代的变量节点外信息prx/ \xGCj, 其计算如下:
[0048] e)计算第k-1次迭代的校验节点外信息Irx/ \XGCj,公式如下:
[0049] lrxjk1=prxjk1 ?a? (sgn_alljxorSgnxj);
[0050] a为归一化最小和算法中的归一化因子,用于补偿最小和算法中近似计算导致的 损失部分,其取值为常数,常见取值范围在〇. 7到0. 9之间,其具体取值与采用的LDPC码矩 阵有关。
[0051] f)读出似然比LLR信息&,更新计算后验概率信息Ptallj并对第j个码字做判 决处理,计算关系如下:
[0053] 如果prjlip〇,判决结果为码字cj= 〇,否则码字cj= 1 ;
[0054] g)更新计算第k次迭代的变量节点信息pr;/,计算如下:
[0055] Pi^jk=pr_allrlrif1
[0056]h)更新外信息二元组Oiii,Si)、Qmi,is;)、对应的符号信息Sgnij和sgn_all;,并写 入存储器;
[0057] 具体为:
[0058] 1)当pr;/》0时,sgnu取值为0 ;当pr;/〈0时,Sgnu取值为1 ;
[0059] 2)当pr_all.j彡 0 时,sgn_all;取值为 0 ;当pr_all.j〈0 时,sgn_alli取值为 1 ;
[0060] 3)当j=imjt,将IprI与s;:?行比较,若IprJI<Si,将Ini值更ff为IprI, 否则,将Hii值更新为原s;值,im;更新为原is;值,s;值更新为(Ip