首页> 中国专利> 一种低复杂度的列分层LDPC译码器实现方法

一种低复杂度的列分层LDPC译码器实现方法

摘要

一种低复杂度的列分层LDPC译码器实现方法,该方法在常规的LDPC分层译码基础上采用了高效的外信息压缩存储方法并且对损失的最小值和次小值进行补偿计算,译码过程中每个校验节点只需要存储外信息的最小值和次小值组成的信息二元组,有效减少了译码过程中译码器对外信息的存储资源需求量,并且大幅降低了压缩存储计算所需的比较及替换次数,该方法在降低存储和计算资源的同时能够保持优异的译码性能。

著录项

  • 公开/公告号CN105024704A

    专利类型发明专利

  • 公开/公告日2015-11-04

    原文格式PDF

  • 申请/专利权人 西安空间无线电技术研究所;

    申请/专利号CN201510422679.8

  • 发明设计人 袁瑞佳;谢天娇;张国华;杨新权;

    申请日2015-07-17

  • 分类号H03M13/11(20060101);

  • 代理机构11009 中国航天科技专利中心;

  • 代理人马全亮

  • 地址 710100 陕西省西安市长安区西街150号

  • 入库时间 2023-12-18 11:42:56

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-04-10

    授权

    授权

  • 2015-12-02

    实质审查的生效 IPC(主分类):H03M13/11 申请日:20150717

    实质审查的生效

  • 2015-11-04

    公开

    公开

说明书

技术领域

本发明涉及一种低复杂度的列分层LDPC译码器实现方法,属于通信信道译码领域。

背景技术

LDPC码的译码算法通常采用洪水信息传递策略,在每次迭代中所有的变量节点和 校验节点的消息更新都是并行进行的,采用洪水信息传递策略情况下,对于M×N维的 LDPC码,节点的信息更新需要M路校验节点处理单元和N路变量节点处理单元并行工 作,节点处理单元处理的各节点信息采用上一轮迭代产生的结果。以dc表示矩阵中校验 节点的度数,dv表示变量节点的度数,该方法需要并行dv路进行校验节点的更新,每路 要求计算dc个数的最小值及次小值,其运算资源占用量十分庞大。另外,在存储访问上 该方法要求一个时钟周期内同时取出dc·dv个变量节点的信息,对存储资源的带宽要求也 非常高。

分层译码Layered BP(LBP)是一种串行译码算法,在迭代译码中,节点信息的更 新采用串行的工作方式,通过利用本次迭代中已经更新的节点信息,将能够加快译码的 收敛速度。研究表明没有经过顺序优化的分层译码可以节省一半的迭代次数。译码器按 校验矩阵的列的顺序进行信息更新的,即信息更新是以变量节点为单位的算法,称为列 分层译码算法。列分层译码算法,如常见的Shuffled BP算法,为了降低实现的复杂度, 在外信息更新过程中通常采用最小和算法,以最小值和次小值近似计算校验节点的外信 息,但列分层算法由于在外信息更新过程中以列顺序进行信息更新,为了保证译码过程 中外信息更新过程中最小值和次小值的准确性,需要对所有变量的外信息进行保存。针 对该缺陷,一种名为Col-Layer-3min的简化译码算法被提出,该算法将每个校验节点 更新所需的dc个外信息存储单元缩减到两个外信息三元组,能够在译码损失很低的情况 下有效降低译码实现过程中外信息存储所需的硬件资源,但该算法在三元组更新过程中 引入了额外的三元组比较更新计算,在一定程度上增加了译码过程中的数学计算量。

发明内容

本发明的技术解决问题是:克服现有技术的不足,提供了一种低复杂度的列分层 LDPC译码器实现方法,在现有技术Col-Layer-3min算法的基础上进一步降低了译码过 程中每个校验节点更新所需的外信息存储资源,将存储所需的外信息三元组减少为外信 息二元组,与Col-Layer-3min算法的三元组更新计算相比,提出方法的二元组更新计 算复杂度明显降低,且译码性能损失极少。

本发明的技术解决方案是:

一种低复杂度的列分层LDPC译码器实现方法,其特征在于步骤如下:

(1)利用信道接收的似然比LLR信息fj初始化各校验节点的外信息,其中j为接收 比特对应的校验矩阵列标,0≤j<N:对于第i行的外信息,0≤i<M,计算该第i行中 所有非0元素对应的fj的最小值mi和次小值si,记为(mi,si),并记录其列标(imi,isi); 将第i行各校验节点的符号信息sgnij初始化为该列似然比LLR信息fj的符号位,并将所 有sgnij累加后得到该第i行的外信息符号总和sgn_alli,将译码的迭代次数k初始化为1; 其中,N为LDPC校验矩阵的列数,M为LDPC校验矩阵的行数,且N>M。

(2)迭代译码,计算步骤如下:

a)将LDPC校验矩阵的第一行设定为初始更新行,即标记当前行为i,且令i=0;

b)将与当前行对应的校验节点i相连接的所有dv个变量节点的集合记为Vi;dv为 LDPC码的行重;

c)从Vi中取出一个变量节点,令该节点下标为j,将与变量节点j相连的所有校验 节点组成集合Cj,读出集合Cj中所有行的外信息二元组(mx,sx)、(imx,isx)、对 应的符号信息sgnxj和sgn_allj,x∈Cj

d)利用外信息二元组(mx,sx)还原第k-1次迭代的变量节点外信息prxjk-1,x∈Cj,其计 算如下:

e)计算第k-1次迭代的校验节点外信息lrxjk-1,x∈Cj,α为归一化因子,公式如 下:

lrxjk-1=prxjk-1·α·(sgn_allj xor sgnxj);

f)读出似然比LLR信息fj,更新计算后验概率信息pr_allj并对第j个码字做 判决处理,计算关系如下:

pr_allj=ΣxCj1rxjk-1+fj;

如果pr_allj≥0,判决结果为码字cj=0,否则码字cj=1;

g)更新计算第k次迭代的变量节点信息prijk,计算如下:

prijk=pr_allj-lrijk-1

h)更新外信息二元组(mi,si)、(imi,isi)、对应的符号信息sgnij和sgn_alli,并 写入存储器;

具体为:

1)当prijk≥0时,sgnij取值为0;当prijk<0时,sgnij取值为1;

2)当pr_allj≥0时,sgn_alli取值为0;当pr_allj<0时,sgn_alli取值为1;

3)当j=imi时,将|prijk|与si进行比较,若|prijk|≤si,将mi值更新为|prijk|, 否则,将mi值更新为原si值,imi更新为原isi值,si值更新为(|prijk|+si)/2,isi值更新为j;

当j=isi时,将|prijk|与mi进行比较,若|prijk|≤mi,则将mi值更新为|prijk|,imi更新为j,si值更新为原mi值,isi值更新为原imi值,否则,将si值更新为 (|prijk|+mi)/2,isi值更新为j;

当时,将|prijk|与(mi,si)进行比较,若|prijk|≤mi,则将mi值更新为 |prijk|,imi更新为j,将si值更新为原mi值,isi值更新为原imi值,若mi<|prijk|≤si, 则将si值更新为|prijk|,isi值更新为j,若|prijk|>si,则mi,和si维持原值不变;

i)将变量节点j从Vi中移除,若Vi为非空集合,跳转至步骤c)进行第i行的下一个 变量节点的更新计算;若Vi为空集,则将当前行的下标i加1,若此时i≠M,跳转至步 骤d)进行下一行的变量节点更新,否则进入(3)进行判决处理;

(3)判决:检查本次的迭代次数k是否已达到预设的最大迭代次数itmax,若k=itmax, 迭代停止,跳转至步骤(4);若k<itmax,将c=[c0,c1,…,cj,…,cN-1]代入LDPC校验矩阵H进 行校验计算,若cHT=0,则表示译码结果满足校验方程,迭代停止,跳转至步骤(4), 若cHT≠0,将迭代次数k加1,返回步骤(2)进行下一次的迭代运算;

(4)将所有判决码字c=[c0,c1,…,cj,…,cN-1]作为译码结果输出,完成LDPC译码。

本发明与现有技术相比的有益效果是:

(1)本发明在Col-Layer-3min算法的基础上进一步减少译码过程中外信息存储 的资源需求量,并且可以大幅降低Col-Layer-3min算法在压缩存储上所需的比较及替 换次数。

(2)本发明提出方法通过对最小值损失的补偿计算,能够在降低存储和计算资源 的同时保持优异的译码性能。

附图说明

图1为本发明流程图;

图2是j=imi时|prijk|的取值与二元组的取值关系;

图3是j=isi时|prijk|的取值与二元组的取值关系;

图4是时|prijk|的取值与二元组的取值关系。

图5为本发明和现有译码算法的性能比较。

具体实施方式

本发明提出的一种低复杂度列分层LDPC译码器实现方法属于串行的LDPC译码方法, 其特点是译码器的译码计算单元复用程度高,迭代收敛速度快,适合应用于各种速率要 求不高的数字通信信道传输纠错中。

如图1所示,本发明提供的一种低复杂度的列分层LDPC译码器实现方法,步骤如下:

(1)利用信道接收的似然比LLR信息fj初始化各校验节点的外信息,其中j为接收 比特对应的校验矩阵列标,0≤j<N:对于第i行的外信息,0≤i<M,计算该第i行中 所有非0元素对应的fj的最小值mi和次小值si,记为(mi,si),并记录其列标(imi,isi); 将第i行各校验节点的符号信息sgnij初始化为该列似然比LLR信息fj的符号位,并将所 有sgnij累加后得到该第i行的外信息符号总和sgn_alli,将译码的迭代次数k初始化为1; 其中,N为LDPC校验矩阵的列数,M为LDPC校验矩阵的行数,且N>M。

(2)迭代译码,计算步骤如下:

a)将LDPC校验矩阵的第一行设定为初始更新行,即标记当前行为i,且令i=0;

b)将与当前行对应的校验节点i相连接的所有dv个变量节点的集合记为Vi;dv为 LDPC码的行重;

c)从Vi中取出一个变量节点,令该节点下标为j,将与变量节点j相连的所有校验 节点组成集合Cj,读出集合Cj中所有行的外信息二元组(mx,sx)、(imx,isx)、对 应的符号信息sgnxj和sgn_allj,x∈Cj

d)利用外信息二元组(mx,sx)还原第k-1次迭代的变量节点外信息prxjk-1,x∈Cj,其计 算如下:

prxjk-1=sx,j=imxprxjk-1=mx,jimx;

e)计算第k-1次迭代的校验节点外信息lrxjk-1,x∈Cj,公式如下:

lrxjk-1=prxjk-1·α·(sgn_allj xor sgnxj);

α为归一化最小和算法中的归一化因子,用于补偿最小和算法中近似计算 导致的损失部分,其取值为常数,常见取值范围在0.7到0.9之间,其具体取 值与采用的LDPC码矩阵有关。

f)读出似然比LLR信息fj,更新计算后验概率信息pr_allj并对第j个码字做 判决处理,计算关系如下:

pr_allj=ΣxCj1rxjk-1+fj;

如果pr_allj≥0,判决结果为码字cj=0,否则码字cj=1;

g)更新计算第k次迭代的变量节点信息prijk,计算如下:

prijk=pr_allj-lrijk-1

h)更新外信息二元组(mi,si)、(imi,isi)、对应的符号信息sgnij和sgn_alli,并 写入存储器;

具体为:

1)当prijk≥0时,sgnij取值为0;当prijk<0时,sgnij取值为1;

2)当pr_allj≥0时,sgn_alli取值为0;当pr_allj<0时,sgn_alli取值为1;

3)当j=imi时,将|prijk|与si进行比较,若|prijk|≤si,将mi值更新为|prijk|, 否则,将mi值更新为原si值,imi更新为原isi值,si值更新为(|prijk|+si)/2,isi值更新为j,j=imi时|prijk|的取值与二元组的取值关系如附图2所示;

当j=isi时,将|prijk|与mi进行比较,若|prijk|≤mi,则将mi值更新为|prijk|,imi更新为j,si值更新为原mi值,isi值更新为原imi值,否则,将si值更新为 (|prijk|+mi)/2,isi值更新为j,j=isi时|prijk|的取值与二元组的取值关系如附图3 所示;

当时,将|prijk|与(mi,si)进行比较,若|prijk|≤mi,则将mi值更新为 |prijk|,imi更新为j,将si值更新为原mi值,isi值更新为原imi值,若mi<|prijk|≤si, 则将si值更新为|prijk|,isi值更新为j,若|prijk|>si,则mi,和si维持原值不变j, 时|prijk|的取值与二元组的取值关系如附图4所示;

i)将变量节点j从Vi中移除,若Vi为非空集合,跳转至步骤c)进行第i行的下一个 变量节点的更新计算;若Vi为空集,则将当前行的下标i加1,若此时i≠M,跳转至步 骤d)进行下一行的变量节点更新,否则进入(3)进行判决处理;

(3)判决:检查本次的迭代次数k是否已达到预设的最大迭代次数itmax,若k=itmax, 迭代停止,跳转至步骤(4);若k<itmax,将c=[c0,c1,…,cj,…,cN-1]代入LDPC校验矩阵H进 行校验计算,若cHT=0,则表示译码结果满足校验方程,迭代停止,跳转至步骤(4), 若cHT≠0,将迭代次数k加1,返回步骤(2)进行下一次的迭代运算;

(4)将所有判决码字c=[c0,c1,…,cj,…,cN-1]作为译码结果输出,完成LDPC译码。

在基于最小和算法的LDPC码译过程中,同一个校验节点传递给所有变量节点的外信 息只有两个取值(最小值及次小值),本发明提出方法正是利用了该特点对译码器的存 储进行压缩处理,但由于列分层译码时校验节点的外信息是分次传递给不同的变量节点 的,并且每更新一个变量节点的外信息后,由变量节点反馈给校验节点的外信息需要更 新原有该节点的最小和次小值,当更新的外信息刚好是最小值或次小值对应的节点时, 原最小或次小值变为无效,此时由于没有存储所有变量节点传来的外信息(只存储最小 及次小值),导致无法精确计算新的次小值,可能引入误差使得译码性能下降。

Col-Layer-3min算法为了减少次小值被更新时引入的误差,在计算保存最小次小值 时引入了第三小的外信息值ti。在初始状态下,译码过程中更新最小次小值时,当发生 以下情况1)j=imi且|prijk|>ti时;或2)当j=isi且|prijk|>ti时,或3)当j=iti且|prijk|>si时, ti值将更新为|prijk|,此时ti的值简单采用|prijk|的值来代替,虽然不能保证第三小值ti的准 确性,但此时次小值si的值是准确的,因为它是原有的第三小值ti和新的外信息|prijk|中 的较小者。但当以上情况发生后,ti将不能再是准确的第三小值,若再遇到1)j=imi且 |prijk|>ti或2)j=isi且|prijk|>ti的情况,次小值将更新为ti,由于ti本身不能保证是准确的 第三小值,因此此时si也不是精确的次小值。同样,后面每次遇到1)j=imi且|prijk|>ti或 2)j=isi且|prijk|>ti的更新情况,都可能引入译码性能损失。

本发明提出方法直接保存译码外信息的最小和次小值,没有引入第三小的外信息值 ti。当译码过程中更新最小和次小值时发生以下情况1)j=imi且|prijk|>ti;或2)当j=isi且|prijk|>ti,译码的次小值将无法精确计算,若此时简单地将更新节点的外信息|prijk|作为 次小值将引入较大的误差,因为此时的|prijk|值可能与实际的次小值之间存在一个较大的 差值,本算法采用近似计算的方式来减少更新后的次小值与实际次小值之间的误差,从 而保证译码性能。当遇到1)j=imi且|prijk|>ti的情况,此时精确的次小值s必满足 si<s≤|prijk|,根据不同的码字特点更新后的次小值si可以使用相乘修正系数的方法来获 得一个mi到|prijk|之间的数值来近似代替精确的次小值s,系数的选取可结合校验矩阵的 特性选取性能较优异的系数,其原理和修正最小和算法相同。考虑到硬件实现的便利性, 此处si更新值的计算使用公式(|prijk|+si)/2,在实际硬件实现中只需要进行一次|prijk|和si的加法,然后舍去最低位即可得到新的次小值,硬件消耗量极低,并且后面的仿真验证 证明,该近似计算方法可以获得优异的近似结果;当遇到2)当j=isi且|prijk|>ti情况时, 其情况相似,此时精确的次小值s必满足以下关系:mi<s≤|prijk|,si更新值的计算可使 用公式(|prijk|+mi)/2。

下面是Col-Layer-3min算法和本发明方法在一次变量节点更新中计算外信息最小 次小值的计算复杂度比较。

表1Col-Layer-3min算法和本发明方法最小次小值更新复杂度比较

从表1可见本发明提出方法较Col-Layer-3min算法在每次校验节点更新过程中计算 最小次小值的工作复杂度约有50%的降低,并且在迭代译码过程中该算法将原来存储的 外信息三元组更换为外信息二元组,对存储资源的需求也降低了50%。

本发明使用DVB-S2标准的7/9码率LDPC码,对提出方法算法进行了性能验证,调 制方式使用16APSK,迭代次数为15次,仿真结果如附图5所示。

从图中可见,本发明提出方法和Col-Layer-3min算法对比原始的列分层最小和算 法,其性能损失均较小,本发明提出方法性能与Col-Layer-3min算法相比性能稍差, 但总体性能损失不大,即使与列分层的最小和算法译码相比,其性能损失也远小于 0.05dB。

本发明未详细说明部分属本领域技术人员公知常识。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号