基于Tanner图边调度策略的BP译码方法与流程

文档序号:13424919阅读:1288来源:国知局
基于Tanner图边调度策略的BP译码方法与流程

本发明涉及通信技术领域,具体涉及一种基于tanner图边调度策略的bp译码(edge-baseddynamicschedulingforbp,edbp)方法。



背景技术:

ldpc码(lowdensityparitycheck,ldpc)是一种线性纠错码,它可以由其校验矩阵唯一确定,且此矩阵是一个稀疏矩阵,因而它的码字之间具有很好的距离特性,它是迄今为止发现的最接近香农限的好码之一。随着计算机技术的飞速发展和硬件集成技术的提高,更由于ldpc码具有优异的纠错性能以及较小的译码错误概率和较低的译码复杂度,因此,国内外学者进行了广泛的研究,并且在很多通信标准中采用了ldpc码作为其中的一种前向纠错码(forwarderrorcorrect,fec),如cmmb、dtmb、dvb-s2和ieee802.16e等。

在译码算法方面,最广泛应用的是llr-bp译码算法。该算法每次迭代包括两部:校验节点的处理和变量节点的处理。在每次迭代中,所有校验节点从其相邻的变量节点处接收信息,处理后,在传回到相邻的变量节点;然后所有的变量节点进行相同的过程,最后变量节点收集所有可以利用的信息进行判决。此llr-bp译码算法具有较好的误码性能,但其校验节点处的计算包含复杂的三角函数运算,硬件实现复杂度高,难以满足未来通信系统的需求。为此,uengyl等人提出一种梳洗(shufflediterative,si)算法采用变量节点逐次更新进行译码,huangh等人提出一种分层置信(layerbeliefpropagation,lbp)传播算法采用校验节点逐次更新进行译码,分析表明改进的这两种算法仅在一定程度上加快了消息迭代收敛速度。为了进一步减少译码迭代时间,aslamca等人分别对si算法和lbp算法进行改进,提出了shuffled-bp(sbp)译码算法,此算法是一种基于变量节点的串行消息传递译码算法,提高了译码收敛速度,但由于在实际工程实现采用的是半并行化处理,其误码性能有所降低。为了降低计算复杂度同时保持较高的误码性能,王亚忠等人提出了flbp算法,引入函数f(x)来简化运算。flbp算法虽然实现了降低lbp算法计算复杂度的目标,但是flbp算法的译码性能也随之降低。故王亚忠等人继续将其改进为nlbp译码算法和olbp误码算法,分别是通过引入校正因子α和偏移因子β改进flbp算法中损失的误码性能。然而nlbp译码算法和olbp译码算法误码性能仍旧有一定的损失。为了进一步提高误码性能,范亚楠等人又提出一种交叠的shuffled-bp(overlappedshuffled-bp,osbp)译码算法,此算法采用若干个相同的子译码器以不同的更新顺序同时进行更新,提高迭代的收敛速度,性能也得到提升,但是实现复杂度仍旧较高。



技术实现要素:

本发明提供一种基于tanner图边调度策略的bp译码方法,其能够在降低复杂度的同时提高译码效率。

为解决上述问题,本发明是通过以下技术方案实现的:

基于tanner图边调度策略的bp译码方法,包括如下步骤:

步骤1、译码参数初始化,即初始化变量节点传递给校验节点的初始化消息、校验节点传递给变量节点的初始化信息、传递信息的边数k=0和迭代次数为l=1;同时设定最大迭代次数lmax和可靠性阈值τ;

步骤2、计算所需更新的最大边数kmax,即

kmax=mdclmax

式中,m为校验节点个数,dc为校验节点的度,lmax为最大迭代次数;

步骤3、当迭代次数l小于最大迭代次数lmax时,转入步骤4;否则,转入步骤9;

步骤4、在第l次迭代更新过程中,tanner图中传递信息的边数k小于最大边数kmax时,转入步骤5;否则,转入步骤8;

步骤5、对tanner图中的所有的校验节点进行消息更新译码;

步骤5.1、对tanner图中的所有的校验节点进行分类,即

①将不满足校验方程的校验节点划归到第一集合中;

②将满足校验方程且校验节点的可靠度小于可靠性阈值τ的校验节点划归到第二集合中;

③将满足校验方程且校验节点的可靠度大于等于可靠性阈值τ的校验节点划归到第三集合中;

步骤5.2、基于步骤5.1的分类,对tanner图中的所有的校验节点进行不同形式的消息更新译码;

①第一集合中的每个校验节点均需要进行全部传递更新,即对每个校验节点进行全部传递更新时,直接将与该校验节点相连的所有的变量节点的信息传递给该校验节点;

②第二集合中的每个校验节点均需要进行部分传递更新,即对每个校验节点进行部分传递更新时,首先需要将与该校验节点相连的所有的变量节点的最大似然概率值进行排序,然后将前w个最大似然概率值比较小的变量节点的信息传递给该校验节点;其中w为设定值;

③第三集合中的每个校验节点均无需进行更新,即无需将与该校验节点相连的所有的变量节点的信息传递给该校验节点;

步骤6、对tanner图中的所有变量节点进行消息更新译码;

在对每个变量节点进行消息更新时,直接将与该变量节点相连的所有的校验节点的信息传递给该变量节点;

步骤7、令tanner图中传递信息的边数k加1,并返回步骤4;

步骤8、令迭代迭代次数l加1,并返回步骤3;

步骤9、执行译码判决,对于所有的变量节点计算硬判决信息,直至所有的校验方程都满足时停止译码。

上述步骤1中,变量节点传递给校验节点的初始化消息mv→c=2y/σ2,其中y为接收到的序列,σ2为噪声方差。

上述步骤1中,校验节点传递给变量节点的初始化信息mc→v=0。

上述步骤1中,传递信息的边数k即为变量节点传递给校验节点所需更新的边数,也为校验节点传递给变量节点所需更新的边数,其中变量节点传递给校验节点所需更新的边数和校验节点传递给变量节点所需更新的边数相等。

上述步骤5和9中,当校验方程s=0时,则说明满足校验方程;当校验方程s≠0时,则说明不满足校验方程。

上述步骤5和9中,校验方程s为:

其中,h为校验矩阵,为译码序列,t表示转置。

上述步骤5中,校验节点的可靠度等于与该校验节点相邻的所有变量节点的最大似然概率值的绝对值中的最小值。

与现有技术相比,本发明在译码过程中采用基于tanner图边调度,进行并行传递,加快译码迭代速度。在校验节点更新部分,采用分集处理的方式,经过几次迭代译码之后,当校验方程不成立时,校验节点通过与其相邻的所有节点进行信息传递,提高校验节点的可靠度;当校验方程成立、校验节点可靠度小于可靠性阈值时,仅需与其相邻前w个llr(loglikelihoodratio最大似然概率)信息比较小的节点进行信息传递,降低部分计算复杂度;其余校验节点不再进行信息传递,算法的计算复杂度进一步降低,同时抑制llr信息沿环的传播,误码性能得到提高。仿真结果表明,在信噪比为3.0db时,edbp算法的计算复杂度仅为bp算法的42%,计算复杂度得到了降低,且edbp算法的误码性能优于flooding算法。

附图说明

图1为校验节点分集处理后边的信息传递的示意图;图中,→表示需更新的边,表示不需更新的边。

图2为可靠性阈值τ的选取的示意图。

图3为变化率k值的确定的示意图。

图4为行重为16的mackay码,本发明中的算法与flooding译码性能比较的示意图。

图5为行重为24的mackay码,本发明中的算法与flooding译码性能比较的示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实例,并参照附图,对本发明进一步详细说明。

基于tanner图边调度策略的bp译码方法,包括如下步骤:

步骤1、译码参数初始化,即初始化变量节点传递给校验节点的初始化消息mv→c=2y/σ2,y为接收到的序列,σ2为噪声方差;校验节点传递给变量节点的初始化信息mc→v=0;初始化传递信息的边数k=0,在本发明中,传递信息的边数k即为变量节点传递给校验节点所需更新的边数,也为校验节点传递给变量节点所需更新的边数,其中变量节点传递给校验节点所需更新的边数和校验节点传递给变量节点所需更新的边数相等;初始化迭代次数为l=1;同时设定最大迭代次数lmax和可靠性阈值τ;

步骤2、计算所需更新的最大边数kmax,即

kmax=mdclmax

式中,m为校验节点个数,dc为校验节点的度,lmax为最大迭代次数;

步骤3、当迭代次数l小于最大迭代次数lmax时,转入步骤4;否则,转入步骤9;

步骤4、在第l次迭代更新过程中,tanner图中传递信息的边数k小于最大边数kmax时,转入步骤5;否则,转入步骤8;

步骤5、对tanner图中的所有的校验节点进行消息更新译码;

步骤5.1、对tanner图中的所有的校验节点进行分类,即

①将不满足校验方程的校验节点划归到第一集合中;

②将满足校验方程且校验节点的可靠度小于可靠性阈值的校验节点划归到第二集合中;

③将满足校验方程且校验节点的可靠度大于等于可靠性阈值的校验节点划归到第三集合中;

步骤5.2、基于步骤5.1的分类,对tanner图中的所有的校验节点进行不同形式的消息更新译码;

①第一集合中的每个校验节点均需要进行全部传递更新,即对每个校验节点进行全部传递更新时,直接将与该校验节点相连的所有的变量节点的信息传递给该校验节点;

②第二集合中的每个校验节点均需要进行部分传递更新,即对每个校验节点进行部分传递更新时,首先需要将与该校验节点相连的所有的变量节点的llr值进行排序,然后将前w个llr值比较小的变量节点的信息传递给该校验节点;其中w为设定值;

③第三集合中的每个校验节点均无需进行更新,即无需将与该校验节点相连的所有的变量节点的信息传递给该校验节点;

步骤6、对tanner图中的所有变量节点进行消息更新译码;

在对每个变量节点进行消息更新时,直接将与该变量节点相连的所有的校验节点的信息传递给该变量节点;

步骤7、令tanner图中传递信息的边数k加1,并返回步骤4;

步骤8、令迭代迭代次数l加1,并返回步骤3;

步骤9、执行译码判决,对于所有的变量节点计算硬判决信息,直至所有校验方程都满足时停止译码。

本发明提出了一种基于tanner图边调度策略的bp(edgebasedontannerdynamicschedulingforbp,edbp)算法。首先,在译码过程中采用基于tanner图边调度,实行并行传递,加快译码迭代速度。然后,针对校验节点更新复杂度高这一问题,提出根据校验方程是否满足、校验节点可靠度是否达到可靠性阈值,对校验节点的更新进行不同处理,减少计算复杂度,同时抑制llr信息沿tanner图环的传播,误码性能得到提高。

由于本发明是在现有llr-bp译码算法的基础上进行改进,因此先介绍llr-bp译码算法步骤。

以bpsk调制,awgn信道中传输信息为例,调制后的码字c=(c1,c2,...,cn,)映射为传输序列x=(x1,x2,...,xn),接收到的序列为y=(y1,y2,...,yn)。根据y,译码得到的译码序列为以下是算法所用的到的一些变量的意义:

l(l)(qij):在第l次译码迭代过程中从变量节点i传送给校验节点j当xi=a时的外部概率信息;

l(l)(rji):在第l次译码迭代过程中从校验节点j传送给变量节点i当xi=a时的外部概率信息;

l(l)(qi):第l次译码迭代后变量节点i输出的xi=a的后验概率信息;

c(i):与变量节点i相连的所有校验节点;

r(j):与校验节点相连的的所有变量节点;

c(i)\j:变量节点i相连的除了校验节点j之外的其他校验节点;

r(j)\i:校验节点j相连的除了变量节点i之外的变量节点。

首先定义:

可靠度概念:校验节点cj的可靠度定义为其中表示与该校验节点cj相邻的所有变量节点vn的llr值(概率信息值)的绝对值的最小值为该校验节点的可靠度。

llr--bp算法的具体步骤:

(1)初始化,计算信道传递给变量节点的初始概率似然比l(pi),i=1,2,...,n。然后对于每一个变量节点i和与其相邻的校验节点j∈c(i),设定变量节点传向校验节点的初始化消息:

由式(1)、(2)可得:

(2)迭待处理(第l次)

校验节点消息处理,对于所有的校验节点j和其相邻的变量节点i∈r(j),第l次迭代时,计算变量节点传递给校验节点的消息:

其中,

变量节点消息处理:对于所有的变量节点i和其相邻的变量节点j∈c(i),第l次迭代时,计算校验节点传递给变量节点的消息:

(3)译码判决

计算经过本次迭代后所有变量节点i的后验概率:

对得到的消息进行硬判决:

(4)判决:

式中,h为校验矩阵,为译码序列,t表示转置。

在ldpc码中,gf(2)域上的ldpc码可以由其校验矩阵h唯一定义。校验矩阵h的维数是m×n,每一行对应一个校验方程,每一列对应码字的一位。每一行中非零元素的个数为行重,每一列中非零元素的个数为列重。如式(10)译码判决所示,如果s=0,表示满足校验方程,说明译码无误,由此结束译码;若s≠0,表示不满足校验方程,需要再一次进行迭代更新,当译码迭代次数大于初始化的最大迭代次数时,则ldpc码译码失败,并将最后的结果输出。

由于llr-bp算法中校验节点更新部分存在双曲正切函数,计算复杂度很高,因此本发明从理论考虑到如下几点:

第一:在每次迭代运算过程中,llr-bp算法需利用所有的节点进行信息更新,即利用tanner图中所有的边进行信息传递。经过几次迭代译码之后,有部分校验节点llr信息上下波动不大,已达到稳定状态;

第二:又因为在llr-bp算法中,节点间的信息传递是相互独立的,故对这类校验节点即便不进行信息传递,影响也不大。

第三:如果部分校验节点即将可靠,只需要与llr信息较小的部分变量节点传递消息,传递影响度较大的节点信息,忽略影响度较小的节点信息。

第四:当校验节点和与其相邻的节点可靠度都足够高时,可以避免这个校验节点与其相邻节点通过连接的边传递信息。

第五:由于llr-bp算法译码过程中陷阱集的存在,使得译码时易出现振荡现象,所需的译码迭代次数过多,故本发明节点llr信息主要采用并行处理的方式,并将校验节点的置可靠度定义为与其相邻的节点llr信息的最小值。

第六:校验节点稳定则其对应的校验方程成立,且校验节点的可靠度必须要大于可靠性阈值(此可靠性阈值的选择由我们在以下仿真实验中获得)。下一次迭代过程中,仅在tanner图中选择不可靠的边进行传递信息,降低计算复杂度,从而抑制llr信息沿着环的传播,降低了环对性能的影响,误码性能得到提高。

为此,本发明的译码算法核心改进点是对于校验节点更新部分的改进。

首先,对校验节点分集处理:

为了减少不必要的信息传播,在每一次迭代更新过程中,都需判定tanner图中不可靠的边,且仅对不可靠边进行信息传递,减少算法的计算复杂度。由于ldpc码在译码过程中存在陷阱集,易造成码字错误,故在迭代更新中即便某个校验方程成立,仍不能说明校验节点可靠。则必须对校验节点的消息设置一个可靠性阈值,当校验方程成立且该校验节点可靠度大于等于可靠性阈值,则认定这个校验节点稳定,否则,还需对与该节点相连的边进行选择更新。因此将校验节点分为以下三集:

集1:校验方程不满足的校验节点划归到集1,并定义于sc≠0。集1内的校验节点在下一次迭代更新中,并与之相连的变量节点间的所有边传递信息,直到码字正确结束传递。

集2:满足校验方程的校验节点,定以于sc=0,且校验节点的可靠度小于可靠性阈值,则把这种校验节点划归到集2。集2中的校验节点可靠度较低,易导致变量节点信息震荡,形成集2极大可能是因为少数相邻变量节点错误译码,其他大部分相邻变量节点正确译码,故集2中的节点只需进行部分迭代更新。为了减少不必要的边传递信息,只需判定集2中某个节点的信息主要是由与其相邻的哪些变量节点决定,因此定义nw-min(c)表示与集2中的节点c相邻的变量节点信息llr中前w个比较小的信息集,即主要决定校验节点c可靠性的w个变量节点。当与节点c相邻的某个变量节点属于nw-min(c)时,那么这个变量节点极有可能出错,则需要对这条边继续传播信息。当与集2相连的变量节点不属于nw-min(c)时,与之相连的边不需要传递信息。

集3:校验方程满足且节点的可靠度大于等于可靠性阈值,则这种校验节点划归到集3。与集3的校验节点相邻的变量节点拥有较高的可靠性,因此,在下一次迭代中将不会在与集3相邻的边上传递信息。

表1:边分类标准

表1表示的是tanner图中边的分类,εm,n∈(0,1)表示在译码迭代中,边是否还需要进一步更新,当εm,n=0时,表示边收敛,不需要在下一次迭代中更新,当εm,n=1时,表示还需在下一次迭代中更新。如果校验节点属于集2,则更新对校验节点可靠性影响较大的那w个变量节点,其余对应的变量节点不更新,即只需运行那w条影响较大的边。

如图1所示,基于本发明提出校验节点的三种类型,其中集1的校验节点所连接的变量节点都需要进行信息传递,还需进行下一次迭代更新;集2的校验节点所连接的边需要进行分类,只需找出w条影响较大的边进行信息传递即可,也就是说看变量节点更新的信息是否对集2的校验节点可靠性起决定作用,如果是则需要在下一次迭代更新中进行信息传递,如若不是,则不需要对这条边进行信息传递;集3的校验节点属于可靠节点,与之相连的边不需要进行信息传递。

其次,对于可靠性阈值τ的选取:

集2的校验节点虽然满足校验方程,但是依然不能说明校验节点可靠,校验节点的可靠性必须高于一个值,在本发明中称之为可靠性阈值。可靠性阈值既可以根据人为经验进行设定,也可以由校验方程是通过多个变量节点信息模2和得到,而其主要由矩阵中的行重决定。在本发明优选实施例中,可靠性阈值的设定可以校验节点的度呈线性相关:

τ=τ1+λ(dc-10)(11)

如式(11)所表示的可靠性阈值的计算公式,其中τ表示校验节点度为dc的可靠性阈值,τ1是行重为10的初始化可靠性阈值,dc为规则ldpc码的行重,或校验节点的度,λ为一固定常量参数,由公式(11)可知,可靠性阈值τ为一组以校验矩阵行重为差值的等差数列。由此可知可靠性阈值是随着行重的改变而改变。为了得到校验节点度为10的可靠性阈值,用mackay构造法随机构造一个校验节点度为10,码长为1024,码率为0.5的规则ldpc码,其中w等于2,主要是在ms算法中使用最小值与次小值进行校验更新。

通过matlab仿真得到图2,由图2可知,度为10的ldpc码对应较优的可靠性阈值为2.7,即可靠性阈值的初始值为2.7。图2所示阈值为2.4的误码性能最差,那是因为当假定可靠性阈值是2.4时,即大于2.4时,被误认为是可靠的,不再进行节点更新,而此时的节点并非一定收敛,容易造成码字错误,误码性能降低。同理当设定可靠性阈值等于2.8时,收敛的节点数会相对减少,需要进行消息传递的节点增多,其计算复杂度比可靠性阈值为2.7时增加了56%,但是误码性能增加不明显,为了降低算法的计算复杂度本发明将可靠性阈值定为2.7,即τ1=2.7。

由式(11)可知,对于不同奇偶校验度的ldpc码而言,需要知道λ的值即可求出不同度ldpc码的可靠性阈值。用mackay构造法随机构造校验节点度分别为15、20、25、30、35,码率为0.5,码长为1024的规则ldpc码,在信噪比为2.8db的条件下通过仿真,并确定最佳λ值。

由图3可知,当变化率λ等于0.05时,码字的误码性能比较好。当λ值等于0.04时,认定的可靠性阈值比较低,许多非可靠的节点被认定为可靠节点,降低了误码性能;当λ值等于0.06时,可靠性阈值取值过大,本应可靠的节点被认为是非可靠的,在迭代次数有限的条件下,有些节点尚未达到收敛,并增加了计算复杂度。可靠性阈值表达式为

τ=2.7+0.05(dc-10)(12)

由式(12)可以轻松求得不同行重条件下奇偶校验矩阵中校验节点对应的可靠性阈值,使得计算更简单,有利于算法在工程上的应用。有上述过程得到本发明的可靠性阈值。

下面通过仿真对本发明的译码效果分析,其仿真条件如下:awgn信道,bpsk调制,最大迭代次数为30,λ等于2。

图4和图5分别是采用行重为16的(1024,512)mackay码和行重为24的(1024,512)mackay码对flooding算法以及本发明提出的edbp算法的误码性能进行了仿真比较。由图4和图5可见,使用本发明的译码算法,行重为24的mackay码的误码性能优于行重为16的mackay码,原因是行重为24的ldpc码在单个校验节点接收到的信息比行重为16的ldpc码多,能够纠正更多的码字错误,故误码性能会比行重为16的ldpc码优异。

不管是图4所示的误码性能比较图还是图5所示的比较图,都能清晰地看到:①当信噪比低于1.8db时,本发明提出的edbp算法与flooding算法误码性能相似,原因是当信噪比比较低时,节点的可靠度也较低,tanner图中的边达到稳定的数量较少,基本上tanner图中所有的边都在进行信息传递,则edbp算法与flooding算法基本相似。②当信噪比大于1.8db时,随着译码的进行,节点信息的可靠度加大,可靠的校验节点也增多,tanner图中边稳定的数量增多,在本发明提出的edbp算法中,传递信息的边会随着译码的进行而慢慢减少,抑制了环对误码性能的影响,改善误码性能加。综上,本发明提出的edbp算法具有可实施性。

由于随着信噪比的增加和译码的进行,校验方程成立的数目不断增多,且校验节点的可靠度大于可靠性阈值的数目也不断增多,tanner图中趋于稳定的边也越来越多,传递信息的边减少计算复杂度得到降低。因此本发明的算法整体复杂度低于flooding算法,在信噪比为3.0db时,在每一次迭代更新过程中,flooding译码算法的计算复杂度为dc×m,经过统计,edbp算法的计算复杂度约为0.42×dc×m,计算复杂度大幅度地降低。

需要说明的是,尽管以上本发明所述的实施例是说明性的,但这并非是对本发明的限制,因此本发明并不局限于上述具体实施方式中。在不脱离本发明原理的情况下,凡是本领域技术人员在本发明的启示下获得的其它实施方式,均视为在本发明的保护之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1