本发明涉及ldpc码译码技术领域,特别涉及一种基于ldpc码的局部动态译码方法。
背景技术:
ldpc码自1996年再次被发现以来,其译码算法(floodingbp算法)以其实现简单,译码复杂度线性增加等特点,成为了编译码领域焦点。而svnf-rbp算法为代表的动态bp译码算法虽然增加了残差计算和搜索复杂度,同时也极大地提升了bp算法的译码性能。
svnf-rbp译码算法是一个异步动态消息迭代算法,每一次根据一个最大的校验节点到变量节点消息残差,定位下一个要更新的校验节点到变量节点消息。消息更新就是根据每次找到的最大残差为序,沿着与ldpc码相对应的tanner图中的边来回传递,其消息传递主要包括了针对每一个变量节点的横向计算和纵向计算两个步骤,其中横向计算就是校验节点ci到变量节点vj的消息传递:
纵向计算就是变量节点vi到校验节点cj的消息传递:
在bp译码算法中,最终是要依靠每个变量节点的最大似然比来做0、1判定。每一个变量节点都将接收来自信道的先验概率(apriori)
似然比消息残差计算公式:r(mk)=||fk(m)-mk||∞,mk∈m;其中m表示计算fk(m)所需的相关消息,mk和fk(m)分别代表校验节点到变量节点更新前和更新后的似然比。
svnf-rbp算法迭代过程在满足以下条件之一时停止:
(1)所有的校验方程都满足。
(2)迭代次数达到设定的最大值。
svnf-rbp算法的具体过程为:
1)初始化所有mc,v=0;
2)初始化所有
3)计算所有r(mc,v);
4)对每一个vj,找出
5)计算
6)计算
7)如果所有校验方程满足或是达到设定的最大迭代次数,则结束译码,否则返回步骤4)
对于bp迭代算法,异步策略一般都是通过加速译码收敛来提升译码性能。svnf-rbp算法能大幅提升bp译码性能,但是增加了大量的计算、搜索复杂度。因此,在提升译码性能的同时降低复杂度显得尤为重要。
技术实现要素:
本发明的目的在于克服上述现有技术的至少一种缺点与不足,提供一种基于ldpc码的局部动态译码方法,该局部动态译码方法降低了残差搜索和存储复杂度,同时提升了译码性能。
本发明的目的通过下述技术方案实现:
一种基于ldpc码的动态bp译码方法,提出残差具有时效性,采用最新产生的局部最大残差确定消息的更新顺序:
选定要更新的校验节点到变量节点消息
具体的局部动态译码算法(lrbp):
1)初始化所有
2)初始化所有
3)计算所有r(mc,v);
4)找出
5)计算
6)计算
7)如果所有校验方程满足或是达到设定的最大迭代次数,则结束译码,否则返回步骤4)
其中:mc,v泛指所有校验节点到变量节点的消息;
似然比消息残差计算公式:r(mk)=||fk(m)-mk||∞,mk∈m;其中m表示计算fk(m)所需的相关消息,mk和fk(m)分别代表校验节点到变量节点更新前和更新后的似然比。
本方法提出残差的产生具有时效性,通过寻找局部最大残差来建立一个校验节点到变量节点消息的更新序列。
因此,本发明相对于现有技术具有如下的优点及效果:
只从最新产生的残差中找出最大的残差,可在计算的同时进行搜索,因此残差不需要存储,减少了存储复杂度;最新产生的残差也就是局部残差,减少了搜索最大残差的复杂度。
相对于svnf-rbp算法,本发明不但能提升了较少迭代次数的译码性能,还有效提升了高信噪比的译码性能。
附图说明
图1是算法lrbp的动态策略示意图。
图2是算法flooding,lbp,nwrbp,svnf-rbp和lrbp在码长1944,码率
图3是算法svnf-rbp和lrbp在码长1944,码率
具体实施方式
下面结合实施例及附图对本发明作进一步详细的描述,但本发明的实施方式不限于此。
本发明是一种基于ldpc码的局部动态译码方法,是针对ldpc码的动态bp译码方法(lrbp),该方法提出残差的产生具有时效性,通过寻找局部最大残差来建立一个校验节点到变量节点消息的更新序列。
设n(vi)代表与变量节点vi相连的所有校验节点,n(vi)\cj则表示与变量节点vi相连的不包括校验节点cj的所有其他校验节点;n(ci)代表与校验节点(校验方程)ci相连的所有变量节点,n(ci)\vj则表示与校验节点ci相连的不包括变量节点vj的所有其他变量节点。互相连接的变量节点和校验节点消息函数可定义为
假设校验节点到变量节点消息
首先,更新消息
其次,更新消息
最后,计算残差
具体而言,本发明的算法迭代过程如下:
1)初始化所有mc,v=0;
2)初始化所有
3)计算所有r(mc,v);
4)找出
5)计算
6)计算
7)如果所有校验方程满足或是达到设定的最大迭代次数,则结束译码,否则返回步骤4)
在动态bp译码算法的一次迭代过程中,要么校验节点到变量节点的消息计算量与bp算法相同,要么变量节点到校验节点的消息计算量与bp算法相同,所有的仿真都将严格遵守这个规则。下表给出对此算法一次迭代过程的消息计算量,其中,
表1一次迭代中的校验节点到变量节点消息计算量
表2一次迭代中的变量节点到校验节点消息计算量
表1、2中,floodingbp算法作为同步消息更新算法,lbp算法作为异步非动态消息更新算法,仅作参考。
动态算法nwrbp算法与svnf-rbp算法都是采用校验节点到变量节点消息最大残差,最大残差计算公式:r(mk)=||fk(m)-mk||∞,其中r(mk)表示最大消息残差,m表示计算fk(m)所需的相关消息,mk和fk(m)分别代表校验节点到变量节点更新前和更新后的似然比,来找出下一个要更新的校验节点到变量节点消息,然后展开一个实质的消息更新过程,两个算法都需要对残差进行存储,所不同的是nwrbp算法是在全部非零校验节点到变量节点消息残差中选取下一个要优先更新的消息,而svnf-rbp算法则是在每个变量节点覆盖范围中的非零校验节点到变量节点消息残差中选取下一个要优先更新的消息。
下面给出相关算法主要特征:
nwrbp算法:
1)、初始化所有mc,v=0;
2)、初始化所有
3)、计算所有r(mc,v);
4)、在所有非零残差中挑选最大残差
5)、对每一个vk∈n(ci),计算
6)、对每一个ca∈n(vk),计算
7)、对每一个vb∈n(ca)\vk,计算
8)、如果所有校验方程满足或是达到设定的最大迭代次数,那么结束译码,否则返回步骤4。
svnf-rbp算法:
1)、初始化所有mc,v=0;
2)、初始化所有
3)、计算所有r(mc,v);
4)、对每一个vi,对所有vb∈n(ca)\vi(ca∈n(vi)),在所有非零残差
5)、计算
6)、对每一个ca∈n(vmax)\cmax,计算
7)、对每一个vb∈n(ca)\vmax,计算
8)、如果所有校验方程满足或是达到设定的最大迭代次数,那么结束译码,否则返回步骤4。
从上述算法描述可看出,该lrbp算法与nwrbp和svnf-rbp算法都采用校验节点到变量节点似然比值绝对残差定位方法,不同的是lrbp算法区别残差产生的时间,只使用最新产生的残差;而nwrbp和svnf-rbp算法对不同时间产生的残差给予的是无差别对待,对所有残差一视同仁。考虑到svnf-rbp是目前动态算法中最具代表性的,因此lrbp算法将主要与svnf-rbp算法进行对比。
如图1所示,黑色圆圈表示已经被更新的变量节点,黑色方框表示已经被更新的校验节点。动态异步消息更新策略步骤如下,首先如图1(a)所示,选出校验节点到变量节点消息
图2列出了包括floodingbp、lbp在内的nwrbp,svnf-rbp和lrbp在码长1944,码率
图3给出了码长1944,码率
本发明公开一种基于ldpc码的动态译码方法——lrbp(localresidualbp),该方法不但能减少残差的搜索和存储复杂度,同时还能提升较小迭代次数内的译码性能(svnf-rbp算法在较小迭代次数内几乎没有性能提升),高信噪比时译码性能也明显优于svnf-rbp算法。
lrbp算法首先提出残差具有时效性,也就是不同时间产生的残差,其作用也不尽相同。lrbp算法只关注最新产生的残差,在最新产生的残差中找出最大残差来建立校验节点到变量节点消息的更新序列。由于最新产生的残差是由最新的消息更新产生,因此总是能用最新的消息去更新下一个消息,这一行为起到加速收敛的效果,提升了译码性能。同时,最新残差中搜索最大残差,可在计算的同时进行,因此不需要存储残差,搜索的范围减小,有效降低了动态译码算法的存储搜索复杂度。
上述实施例为本发明较佳的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。