一种基于分层置信度传播的LDPC译码方法、系统和介质与流程

文档序号:25436270发布日期:2021-06-11 21:53阅读:136来源:国知局
一种基于分层置信度传播的LDPC译码方法、系统和介质与流程

本发明涉及gnss卫星通信技术领域,尤其涉及一种基于分层置信度传播的ldpc译码方法、系统和介质。



背景技术:

在gnss卫星通信技术领域,ldpc译码通常采用扩展最小和算法来实现。该方法采用并行传递消息的机制,在每一次迭代过程中,所有校验节点同时接收从相连的变量节点传递的消息,更新完毕后,再利用已更新过的所有校验节点的消息同时去更新所有变量节点的消息,最后每个变量节点根据判决条件进行判决,如此反复,直到满足结束条件。

然而,该方法采用的并行传递消息的机制虽然简单,但性能并不是最优的,实际应用中也会占用大量的存储资源,而且往往需要较多的迭代次数才能实现正确的ldpc译码。

此外,由于ldpc译码算法的本质是可以进行消息调度的,调度是指置信度传播的译码过程中变量节点和校验节点之间的消息更新次序,而在扩展最小和算法中,并未涉及节点的更新次序,因此,并未充分利用到置信度传播的消息调度策略,进而无法实现串行传递消息。

因此,需要一种能有效运用到置信度传播的ldpc译码方法,能采用串行传递消息的机制,选择合适的节点更新次序,在每一次迭代过程中,及时利用更新后的信息去计算要传递的消息,直到所有的校验节点或变量节点依次更新完毕,进而提高算法收敛速度,减少存储资源占用。



技术实现要素:

本发明所要解决的技术问题是针对上述现有技术的不足,提供一种基于分层置信度传播的ldpc译码方法、系统和介质,能采用串行传递消息的机制,选择合适的节点更新次序,在每一次迭代过程中,及时利用更新后的信息去计算要传递的消息,直到所有的校验节点或变量节点依次更新完毕,进而提高算法收敛速度,减少存储资源占用。

本发明解决上述技术问题的技术方案如下:

一种基于分层置信度传播的ldpc译码方法,包括以下步骤:

步骤1:获取码元序列对应的校验矩阵和接收信号序列;

步骤2:对所述接收信号序列进行初始硬判决,得到初始硬判决值序列;根据所述校验矩阵和所述初始硬判决值序列判断是否初始化译码成功,若是,则执行步骤3;若否,则自定义迭代串行译码参数后执行步骤4;

步骤3:将所述初始硬判决值序列作为译码输出并终止译码;

步骤4:基于置信度向量传播方法,根据所述接收信号序列、所述校验矩阵和所述迭代串行译码参数进行迭代串行译码,得到每次迭代后的迭代判决值序列;并分别根据所述校验矩阵和每次迭代后的迭代判决值序列逐次判断串行译码在对应的当前迭代次数下是否成功,若是,则将当前迭代次数下的迭代判决值序列作为译码输出并终止译码;若否,则令当前迭代次数加1,继续进行迭代串行译码,直至译码成功或当前迭代次数达到所述迭代串行译码参数中的最大迭代次数;

其中,所述校验矩阵中的每一行对应一个校验节点,所述校验矩阵中的每一列对应一个变量节点,则所述步骤4中,基于置信度向量传播方法,根据所述接收信号序列、所述校验矩阵和所述迭代串行译码参数进行迭代串行译码,得到每次迭代后的迭代判决值序列,具体包括以下步骤:

步骤41:根据所述接收信号序列计算得到原始置信度向量序列;

步骤42:获取当前迭代次数,选取所述校验矩阵中第i行对应的校验节点,令i=0,按照变量节点更新规则对选取的第i行校验节点对应的所有变量节点进行更新;并基于所述置信度向量传播方法,根据所述迭代串行译码参数、所述校验矩阵和所述原始置信度向量序列,分别计算得到在当前迭代次数下选取的第i行校验节点对应的每个更新后的变量节点传递给相连的校验节点的第一目标置信度向量序列;

步骤43:在选取的第i行校验节点对应的所有更新后的变量节点传递出的第一目标置信度向量序列计算完成后,按照校验节点更新规则对选取的第i行验节点进行更新;并基于所述置信度向量传播方法,根据所述迭代串行译码参数、所述校验矩阵以及选取的第i行校验节点接收到的在当前迭代次数下的所有第一目标置信度向量序列,分别计算得到在当前迭代次数下更新后的第i行校验节点传递给相连的变量节点的第二目标置信度向量序列;

步骤44:令i=i+1,并判断i是否达到所述校验矩阵的最大行数,若是,则执行步骤45,若否,则返回所述步骤42;

步骤45:在当前迭代次数下所有校验节点对应的所有变量节点以及所有校验节点均完成更新后,根据所述原始置信度向量序列和所有第二目标置信度向量序列,计算得到当前迭代次数下的迭代判决值序列。

依据本发明的另一方面,还提供了一种基于分层置信度传播的ldpc译码系统,应用于本发明的基于分层置信度传播的ldpc译码方法中,包括信号获取模块、初始化译码模块、串行译码模块和译码输出模块;

所述信号获取模块,用于获取码元序列对应的校验矩阵和接收信号序列;

所述初始化译码模块,用于对所述接收信号序列进行初始硬判决,得到初始硬判决值序列;根据所述校验矩阵和所述初始硬判决值序列判断是否初始化译码成功;

所述译码输出模块,用于当所述初始化译码模块判定初始化译码成功时,将所述初始硬判决值序列作为译码输出并终止译码;

所述串行译码模块,用于当所述初始化译码模块判定初始化译码失败时,基于置信度向量传播方法,根据所述接收信号序列、所述校验矩阵和所述迭代串行译码参数进行迭代串行译码,得到每次迭代后的迭代判决值序列;并分别根据所述校验矩阵和每次迭代后的迭代判决值序列逐次判断串行译码在对应的当前迭代次数下是否成功;

所述译码输出模块,还用于当所述串行译码模块判定串行译码在对应的当前迭代次数下成功时,将当前迭代次数下的迭代判决值序列作为译码输出并终止译码;

所述串行译码模块,还用于当所述串行译码模块自身判定串行译码在对应的当前迭代次数下失败时,令当前迭代次数加1,继续进行迭代串行译码,直至译码成功或当前迭代次数达到所述迭代串行译码参数中的最大迭代次数;

其中,所述校验矩阵中的每一行对应一个校验节点,所述校验矩阵中的每一列对应一个变量节点,则所述串行译码模块具体用于:

根据所述接收信号序列计算得到原始置信度向量序列;

获取当前迭代次数,选取所述校验矩阵中第i行对应的校验节点,令i=0,按照变量节点更新规则对选取的第i行校验节点对应的所有变量节点进行更新;并基于所述置信度向量传播方法,根据所述迭代串行译码参数、所述校验矩阵和所述原始置信度向量序列,分别计算得到在当前迭代次数下选取的第i行校验节点对应的每个更新后的变量节点传递给相连的校验节点的第一目标置信度向量序列;

在选取的第i行校验节点对应的所有更新后的变量节点传递出的第一目标置信度向量序列计算完成后,按照校验节点更新规则对选取的第i行校验节点进行更新;并基于所述置信度向量传播方法,根据所述迭代串行译码参数、所述校验矩阵以及选取的第i行校验节点接收到的在当前迭代次数下的所有第一目标置信度向量序列,分别计算得到在当前迭代次数下更新后的第i行校验节点传递给相连的变量节点的第二目标置信度向量序列;

令i=i+1,并判断i是否达到所述校验矩阵的最大行数;

若i未达到所述校验矩阵的最大行数,则继续按照所述变量节点更新规则对更新后的第i行校验节点对应的所有变量节点进行更新,并分别计算得到在当前迭代次数下更新后的第i行校验节点对应的每个更新后的变量节点传递给相连的校验节点的第一目标置信度向量序列;以及按照所述校验节点更新规则对更新后的第i行校验节点进行更新,分别计算得到在当前迭代次数下再次更新后的第i行校验节点传递给相连的变量节点的第二目标置信度向量序列;令i=i+1,重复上述判断,直至i达到所述校验矩阵的最大行数;

若i达到所述校验矩阵的最大行数,则在当前迭代次数下所有校验节点对应的变量节点以及所有校验节点均完成更新后,根据所述原始置信度向量序列和所有第二目标置信度向量序列,计算得到当前迭代次数下的迭代判决值序列。

依据本发明的另一方面,提供了一种基于分层置信度传播的ldpc译码系统,包括处理器、存储器和存储在所述存储器中且可运行在所述处理器上的计算机程序,所述计算机程序运行时实现本发明中的基于分层置信度传播的ldpc译码方法中的步骤。

依据本发明的另一方面,提供了一种计算机存储介质,所述计算机存储介质包括:至少一个指令,在所述指令被执行时实现本发明的基于分层置信度传播的ldpc译码方法中的步骤。

本发明的基于分层置信度传播的ldpc译码方法、系统和介质的有益效果是:由于当发送端发出码元序列后,可以得到对应的校验矩阵,以及经信道传输后的接收信号序列,根据校验矩阵可以直接对接收信号序列进行校验,通过对接收信号序列进行初始化硬判决,并根据校验矩阵和初始化硬判决得到的初始硬判决值序列可以判断初始化硬判决值序列是否是正确的译码信息,若是正确的译码信息,即可将其作为译码结果输出,若不是则自定义迭代串行译码参数后进行迭代串行译码,上述初始化译码和校验方法,便于后续确定是否需要迭代串行译码,并为迭代串行译码提供判断依据和数据基础;在迭代串行译码过程中,首先根据接收信号序列得到原始置信度向量序列,然后基于置信度向量传播方法,在每次迭代中,选取所述校验矩阵中第i行对应的校验节点,令i=0,按照变量节点更新规则对第i行校验节点对应的所有变量节点进行更新,并在该行更新过程中,计算出每个更新后的变量节点传递给相连的校验节点的第一目标置信度向量序列,依据该行对应的校验节点接收到与自身相连的变量节点传递过来的第一目标置信度向量序列和校验节点更新规则对该行对应的校验节点进行更新,同样地,可以得到更新后的该行对应的校验节点传递给相连的变量节点的第二目标置信度向量序列;

然后令i=i+1,并判断i是否达到所述校验矩阵的最大行数;

若i未达到所述校验矩阵的最大行数,则继续按照步骤42和步骤43的方法进行更新和计算,令i=i+1,重复上述判断,直至i达到所述校验矩阵的最大行数;

若i达到所述校验矩阵的最大行数,则完成当前迭代次数下的更新和计算;

在每次迭代过程中,且所有变量节点和所有校验节点都完成更新后,依据原始置信度向量序列以及计算出的所有第二目标置信度向量序列,可以得到每次迭代过程中(即每个当前迭代次数下)的迭代判决值序列;按照初始化译码类似的判断方法,同样可以判断出每次串行译码过程中得到的迭代判决值序列是否是正确的译码结果,若是,则将对应的迭代判决值序列作为对应的当前迭代次数下的译码结果进行输出,若不是,则令当前迭代次数加1后,继续进行迭代串行译码,直至得到正确的译码结果并输出或者达到最大迭代次数才终止译码,其中,当达到最大迭代次数还未得到正确的译码结果即为译码失败;

本发明的基于分层置信度传播的ldpc译码方法、系统和介质,通过设置变量节点更新规则进行更新变量节点,同时在每行更新过程中设置校验节点更新规则进行更新校验节点,可以得到合适的节点更新次序,进而充分利用置信度传播的消息调度策略,实现串行传递消息的机制,在每一次迭代过程中,及时利用更新后的信息去计算要传递的消息,直到所有的校验节点或变量节点依次更新完毕,与传统的译码方法(例如扩展最小和方法)相比,没有增加译码复杂度,但是算法收敛所需要的迭代次数能有效减少一半,每次迭代按照顺序依次处理,所消耗的存储资源大大降低了,显著提高了算法收敛速度,大大减少了存储资源占用。

附图说明

图1为本发明实施例一中一种基于分层置信度传播的ldpc译码方法的流程示意图;

图2为本发明实施例一中步骤4的流程示意图;

图3为本发明实施例一中基于分层置信度传播的ldpc译码的完整步骤的流程示意图;

图4为本发明实施例二中一种基于分层置信度传播的ldpc译码系统的结构示意图。

具体实施方式

以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。

下面结合附图,对本发明进行说明。

实施例一、如图1所示,一种基于分层置信度传播的ldpc译码方法,包括以下步骤:

s1:获取码元序列对应的校验矩阵和接收信号序列;

s2:对所述接收信号序列进行初始硬判决,得到初始硬判决值序列;根据所述校验矩阵和所述初始硬判决值序列判断是否初始化译码成功,若是,则执行s3;若否,则自定义迭代串行译码参数后执行s4;

s3:将所述初始硬判决值序列作为译码输出并终止译码;

s4:基于置信度向量传播方法,根据所述接收信号序列、所述校验矩阵和所述迭代串行译码参数进行迭代串行译码,得到每次迭代后的迭代判决值序列;并分别根据所述校验矩阵和每次迭代后的迭代判决值序列逐次判断串行译码在对应的当前迭代次数下是否成功,若是,则将当前迭代次数下的迭代判决值序列作为译码输出并终止译码;若否,则令当前迭代次数加1,继续进行迭代串行译码,直至译码成功或当前迭代次数达到所述迭代串行译码参数中的最大迭代次数;

其中,所述校验矩阵中的每一行对应一个校验节点,所述校验矩阵中的每一列对应一个变量节点,如图2所示,则s4中,基于置信度向量传播方法,根据所述接收信号序列、所述校验矩阵和所述迭代串行译码参数进行迭代串行译码,得到每次迭代后的迭代判决值序列,具体包括以下步骤:

s41:根据所述接收信号序列计算得到原始置信度向量序列;

s42:获取当前迭代次数,选取所述校验矩阵中第i行对应的校验节点,令i=0,按照变量节点更新规则对选取的第i行校验节点对应的所有变量节点进行更新;并基于所述置信度向量传播方法,根据所述迭代串行译码参数、所述校验矩阵和所述原始置信度向量序列,分别计算得到在当前迭代次数下选取的第i行校验节点对应的每个更新后的变量节点传递给相连的校验节点的第一目标置信度向量序列;

s43:在选取的第i行校验节点对应的所有更新后的变量节点传递出的第一目标置信度向量序列计算完成后,按照校验节点更新规则对选取的第i行校验节点进行更新;并基于所述置信度向量传播方法,根据所述迭代串行译码参数、所述校验矩阵以及选取的第i行校验节点接收到的在当前迭代次数下的所有第一目标置信度向量序列,分别计算得到在当前迭代次数下更新后的第i行校验节点传递给相连的变量节点的第二目标置信度向量序列;

s44:令i=i+1,并判断i是否达到所述校验矩阵的最大行数,若是,则执行s45,若否,则返回s42;

s45:在当前迭代次数下所有校验节点对应的所有变量节点以及所有校验节点均完成更新后,根据所述原始置信度向量序列和所有第二目标置信度向量序列,计算得到当前迭代次数下的迭代判决值序列。

ldpc(lowdensityparitycheckcode,低密度奇偶校验码)译码是一种最接近于香农限的纠错码译码方法,其典型的译码方法主要是置信传播译码方法,即基于置信度向量所进行的译码方法。

本实施例的基于分层置信度传播的ldpc译码方法,通过设置变量节点更新规则进行更新变量节点,同时在每行更新过程中设置校验节点更新规则进行更新校验节点,可以得到合适的节点更新次序,进而充分利用置信度传播的消息调度策略,实现串行传递消息的机制,在每一次迭代过程中,及时利用更新后的信息去计算要传递的消息,直到所有的校验节点或变量节点依次更新完毕,与传统的译码方法(例如扩展最小和方法)相比,没有增加译码复杂度,但是算法收敛所需要的迭代次数能有效减少一半,每次迭代按照顺序依次处理,所消耗的存储资源大大降低了,显著提高了算法收敛速度,大大减少了存储资源占用。

需要说明的是,发送端发出的码元序列中为经过ldpc编码生成的序列信号,即导航电文,其中包含多个发送码元,而每个发送码元均包含多个发送信息比特;因此,获取的接收信号序列中包含与发送码元数量相同的接收符号(每个接收符号均包含一组符号信息),每个接收符号均包含与发送信息比特数量相同的符号信息。对应地,后续得到的初始硬判决值序列中的初始硬判决向量的数量与接收符号的数量相同。

优选地,在s1中,获取所述码元序列对应的接收信号序列,具体实现为:

对所述码元序列进行调制后再经信道传输,得到所述接收信号序列;

所述码元序列的表达式具体为:

c=(c0,c1,...cj,...,cn-1),cj∈gf(q),q=2r,0≤j<n;

其中,c为所述码元序列,c0,c1,...cj,...,cn-1均为所述码元序列中的发送码元,cn-m,cn-m+1,...,cn-1均为所述码元序列中的校验码元,n为所述码元序列的长度,m为校验码元序列的长度,gf(q)代表有限域,q代表所述码元序列中发送码元所有可能取值的个数,r为所述码元序列中发送码元所占的位宽;

所述校验矩阵的表达式具体为:

hi,j∈gf(q),0≤i<m,0≤j<n;

其中,h为所述校验矩阵,hi,j为所述校验矩阵h中第i行第j列的元素;在所述校验矩阵h中,有m个校验节点cni和n个变量节点vnj,则所述校验矩阵h中与校验节点cni相连的所有变量节点所属列的集合为校验节点cni对应的列序号集合,所述校验矩阵h中与变量节点vnj相连的所有校验节点所属行的集合为变量节点vnj对应的行序号集合;

校验节点cni对应的列序号集合和变量节点vnj对应的行序号集合的表达式分别为:

其中,ni为校验节点cni对应的列序号集合,mj为变量节点vnj对应的行序号集合,hi,j≠0代表校验节点cni与变量节点vnj相连;

所述接收信号序列的表达式具体为:

其中,y为所述接收信号序列,y0,y1,…,yj,…,yn-1均为所述接收信号序列中的接收符号,mod(c)代表对所述码元序列进行调制,nnoise为所述接收信号序列中的噪声信号序列,yj,0,yj,1,…,yj,b,…,yj,r-1均为所述接收信号序列的第j个接收符号中的符号信息。

码元序列为发送端的发送信号经过ldpc编码后的信号序列,再经过调制和信道传输得到接收信号序列,后续接收端计算初始硬判决值序列或迭代判决值序列,进而实现译码。

校验矩阵中的每一行代表一个校验节点,每一列代表一个变量节点,因此有m个校验节点cni和n个变量节点vnj,当校验矩阵中某一个元素hi,j≠0(即非零元素)则代表校验节点cni与变量节点vnj相连,因此将校验矩阵h中与任一校验节点cni相连的所有变量节点所属列的集合作为一个集合,即校验节点cni对应的列序号集合,校验矩阵h中与任一变量节点vnj相连的所有校验节点所属行的集合作为另一个集合,即变量节点vnj对应的行序号集合,能帮助后续得到合适的节点更新次数,进而按照合适的节点更新次序进行节点更新,实现充分利用置信度传播的消息调度策略,实现串行传递消息的机制,在每一次迭代过程中,对于任一节点,及时利用按照节点更新次序中先更新的节点所传输的信息去计算该任一节点所要传递的消息,进而直到所有的校验节点或变量节点依次更新完毕,并为下一次迭代传递所有更新后的信息,有效提高收敛速度和减小资源占用;克服传统的译码方法中,只能利用上一次迭代过程中的信息,而无法利用本次迭代中在前更新的节点所传输的信息的弊端。

具体地,以北斗三号卫星的b1c为例,子帧2使用的gf(64)-ldpc编码的校验矩阵为h(100,200),即m=100,n=200,h矩阵有100个校验节点,200个变量节点,其行重dr=4,列重dc=2;在发送端,码字序列c中包含n=200个发送码元,每个发送码元有r=6个发送码元信息,且第j个发送码元cj可以表示为0~63(000000~111111),是有限域或伽罗华域gf(64)中的元素;则在接收端,其对应的接收信号序列为y,接收信号序列的第j个所述原始接收符号yj中有6个符号信息yj,b,yj表示为(yj,0,yj,1,…,yj,r-1),其中r=6。

优选地,在s2中,根据所述校验矩阵和所述初始硬判决值序列判断是否译码成功,具体包括以下步骤:

s21:根据所述校验矩阵和所述初始硬判决值序列计算得到初始校验和;

计算所述初始校验和的第一公式为:

其中,vinitial为所述初始校验和,为所述初始硬判决值序列,ht为所述校验矩阵的转置矩阵;

s22:将所述初始校验和作为目标校验和代入译码成功判据中,判断所述目标校验和是否满足所述译码成功判据,若是,则判定初始化译码成功,并执行s3;若否,则判定初始化译码不成功,并执行s4;

所述译码成功判据具体为:v=0;其中,v为所述目标校验和;

在s2中,所述迭代串行译码参数包括最大迭代次数以及每个校验节点传递给相连的变量节点的初始分层置信度向量,且每个初始分层置信度向量均为零向量。

通过计算初始校验和,并结合译码成功判据能有效判断初始化译码是否正确译码,一方面能在初始化译码正确的时候,简单直接地输出对应的译码结果;另一方面能在初始化译码不正确的时候,为后续的迭代串行译码提供数据基础;其中,通过自定义迭代串行译码参数,便于提供迭代串行译码的终止条件和初始化条件,便于迭代串行译码的顺利进行;将迭代串行译码参数中的每个校验节点传递给相连的变量节点的初始分层置信度向量均设为零向量,便于后续依次计算每次迭代过程中的更新后的变量节点传递给相连的校验节点的信息,进而依据传递的信息再次对校验节点进行更新,保证迭代串行译码的顺利进行。

具体地,本实施例中初始硬判决值序列的表达式具体为:

其中,为所述初始硬判决值序列,均为所述初始硬判决值序列中的初始硬判决码元。

优选地,s41具体包括以下步骤:

s411:在所述接收信号序列中任选一个接收符号,并获取选取的接收符号中每个符号信息一一对应的信息幅值;

s412:根据所述有限域获取有限域元素序列,在所述有限域元素序列中任选一个有限域元素,根据选取的有限域元素以及与选取的接收符号对应的所有信息幅值,计算得到选取的接收符号在选取的有限域元素下的对数似然比;

s413:遍历所述有限域元素序列中的每个有限域元素,得到选取的接收符号在每个有限域元素下的对数似然比;

s414:根据所有有限域元素和选取的接收符号的所有对数似然比,得到选取的接收符号对应的原始置信度向量;

s415:遍历所述接收信号序列中的每个接收符号,得到每个接收符号一一对应的原始置信度向量,并根据所有原始置信度向量得到所述原始置信度向量序列。

假设加性高斯白噪声信道的噪声均值为0,方差为σ2,由于每个修正接收符号对应的置信度向量是由有限域元素及其对应的对数似然比组成,而在有限域元素序列中,包含多个有限域元素,因此对于任一个接收符号,均需要在有限域元素序列中,计算出该选取的接收符号在每个有限域元素下一一对应的对数似然比,最后根据所有有限域元素和所有的对数似然比得到该选取的接收符号对应的置信度向量;基于接收符号中的符号信息,计算出的对数似然比更为准确,提高置信度向量的准确性和ldpc译码性能,从而降低译码后的误码率。

具体地,对于任一选取的接收符号yj,计算选取的接收符号yj在选取的有限域元素xt下的对数似然比的具体公式为:

其中,为选取的接收符号yj在选取的有限域元素xt下的对数似然比,xt,0,xt,1,...xt,b,...xt,r-1均为选取的有限域元素xt中的元素比特,为选取的接收符号yj中的符号信息yj,b对应的硬判决比特,xor为异或运算,σ2为噪声方差;

当计算出选取的接收符号yj在选取的有限域元素xt下的对数似然比,遍历有限域元素序列中的每个有限域元素,得到选取的接收符号在每个有限域元素下的对数似然比,然后根据所有有限域元素和选取的接收符号的所有对数似然比,得到选取的接收符号yj对应的包含q个元素的原始置信度向量为lj,具体如下:

lj=(x,llr(x));

所有接收符号的原始置信度向量即构成原始置信度向量序列;通过上述原始置信度向量,便于后续计算每次迭代过程中,更新后的变量节点传递给相连的校验节点的第一分层置信度向量,还便于后续依据对数似然比的数值大小对第一分层置信度向量进行筛选、排序等处理,进而得到较为准确的更新后的变量节点vnj传递给相连的校验节点的第一目标置信度向量序列,实现变量节点的有序更新,并为后续实现校验节点的有序更新和分层次的置信度传播以及置信度向量的计算,提供数据基础。

优选地,s42具体包括以下步骤:

s421:选取所述校验矩阵中第i行对应的校验节点,令i=0,对于选取的第i行校验节点对应的任一变量节点vnj,将变量节点vnj对应的行序号集合进行升序排序,得到变量节点vnj对应的变量节点更新序列;

s422:获取当前迭代次数itr,根据当前迭代次数itr和变量节点vnj对应的变量节点更新序列获取在滑动迭代次数下与变量节点vnj相连的所有检验节点传递的传播置信度向量;并按照变量节点vnj对应的变量节点更新序列,根据变量节点vnj接收到的所有传播置信度向量对变量节点vnj进行更新;

s423:根据所述原始置信度向量序列、变量节点vnj对应的变量节点更新序列以及变量节点vnj接收到的所有传播置信度向量,计算得到在当前迭代次数下,更新后的变量节点vnj传递给每个相连的校验节点的第一分层置信度向量;

计算在当前迭代次数下更新后的变量节点vnj传递给相连的校验节点cni的第一分层置信度向量的第二公式为:

其中,itr为当前迭代次数,v2citr,j→i为在当前迭代次数下更新后的变量节点vnj传递给相连的校验节点cni的第一分层置信度向量,fs为变量节点vnj对应的变量节点更新序列中的第s个行序号,dc为所述校验矩阵的列重,itr′为取决于当前迭代次数和变量节点更新序列的滑动迭代次数,c2vitr′,fs→j为在滑动迭代次数下,与变量节点vnj相连的检验节点向变量节点vnj传递的传播置信度向量,lj为所述原始置信度向量序列中与第j个接收符号对应的原始置信度向量;

s424:按照在有限域元素下的对数似然比的值的大小,将在当前迭代次数下更新后的变量节点vnj传递的每个第一分层置信度向量中的元素分别进行升序排列,并按照预设元素数量,从每个排列后的第一分层置信度向量的前端分别截取元素,得到每个第一分层置信度向量一一对应的第一筛选置信度向量;

计算在当前迭代次数下更新后的变量节点vnj传递给相连的校验节点cni的第一分层置信度向量所对应的第一筛选置信度向量的第三公式为:

其中,tv2citr,j→i为在当前迭代次数下更新后的变量节点vnj传递给相连的校验节点cni的第一分层置信度向量v2citr,j→i所对应的第一筛选置信度向量;代表将第一分层置信度向量v2citr,j→i中的元素按照在有限域元素下的对数似然比的值的大小进行升序排列后,并截取排列后的第一分层置信度向量v2citr,j→i前端nm个元素的操作运算;

s425:分别获取每个第一筛选置信度向量中元素的最小对数似然比,分别根据每个最小对数似然比,得到每个第一筛选置信度向量一一对应的第一目标置信度向量;并根据所有第一目标置信度向量,得到在当前迭代次数下更新后的变量节点vnj传递给相连的校验节点的第一目标置信度向量序列;

s426:遍历所述校验矩阵中选取的第i行校验节点对应的每个变量节点,得到在当前迭代次数下选取的第i行校验节点对应的每个更新后的变量节点传递给相连的校验节点的第一目标置信度向量序列。

在s421中,对任一变量节点对应的行序号集合进行升序排列,能使得该任一变量节点中的每个元素都是按照行号从小到大的顺序进行更新,即得到该变量节点合适的变量节点更新序列以便按照该合适的变量节点更新序列进行更新和消息的传递;

同时,由于任一变量节点的更新需要应用与其相连的所有校验节点的信息,若与其相连的校验节点在其自身的更新过程中已经发生更新,则需要应用已经更新的信息,若未发生更新,则依据上一次迭代中的信息或初始化信息(在当前迭代次数为1时依据初始化信息);当将该任一变量节点中的每个元素都是按照行号从小到大的顺序排列后,能依据排序后的变量节点更新序列实现分层次的置信度向量传播,基于置信度传播的理论知识,能便于获取后续在计算更新后的变量节点向自身相连的校验节点传播的第一分层置信度向量时的数据,该数据具体为变量节点在滑动迭代次数下,其相连的每个校验节点传递过来的传播置信度向量;

例如变量节点vnj,当变量节点vnj对应的变量节点更新序列中的第s个行序号fs大于i时,依据变量节点更新序列,在当前迭代次数下,与变量节点vnj相连的其中一个检验节点向变量节点vnj传递的传播置信度向量还未发生更新,则在该变量节点vnj的更新和置信度传播的过程中,需要依据上一次迭代过程中相连的检验节点传递过来的传播置信度向量,即将滑动迭代次数取当前迭代次数减1;而当变量节点vnj对应的变量节点更新序列中的第s个行序号fs小于i时,同样依据变量节点更新序列,在当前迭代次数下,与变量节点vnj相连的检验节点向变量节点vnj传递的传播置信度向量已经发生更新,则需要依据当前迭代过程中相连的检验节点传递过来的传播置信度向量,即将滑动迭代次数与当前迭代次数相同;上述过程中,在每个当前迭代次数下,本次迭代中在先已经发生更新的节点所传递的信息需要参与本次迭代中在后更新的节点的更新过程;因此,通过s421中的变量节点更新序列一方面能便于按照合适的更新顺序进行更新节点,另一方面能便于获取s422中滑动迭代次数下的传播置信度向量,实现当前迭代中在先更新的节点向在后待更新的节点传播信息,进而便于s423计算出准确的第一分层置信度向量;与传统的基于置信度向量传播的译码方法相比,在每次迭代中都能充分利用已经更新的信息,充分实现串行的消息调度策略,真正实现串行译码,通过提高收敛速度来提高译码效率;

在s423中的第二公式中,中的加和运算(包括∑及+)均为变量节点基本运算,具体过程为将各置信度向量中相同元素的llr值(对数似然比的值)进行相加,再将求和算出来的结果与lj中相同元素的llr值进行相加,运算结果v2citr,j→i中的元素按照有限域元素符号值的大小进行升序排列;

在s424中的第三公式中,代表将第一分层置信度向量v2citr,j→i中的元素按照在有限域元素下的对数似然比的值的大小进行升序排列后,并截取排列后的第一分层置信度向量v2citr,j→i前端nm个元素的操作运算,这截取的nm个元素为有限域元素,且这nm个有限域元素互不相同;

在s425中,当获取每个第一筛选置信度向量tv2citr,j→i之后,找到每个tv2citr,j→i其中llr的最小值,为llrmin,并将每个第一筛选置信度向量tv2citr,j→i中的元素分别减去llrmin之后,即得到每个第一筛选置信度向量tv2citr,j→i一一对应的第一目标置信度向量,具体为tv2c′itr,j→i。

优选地,s43具体包括以下步骤:

s431:对于选取的第i行校验节点cni,根据校验节点cni对应的列序号集合得到校验节点cni对应的校验节点更新序列;并按照校验节点cni对应的校验节点更新序列,根据所有与校验节点cni相连的更新后的变量节点传递的第一目标置信度向量对校验节点cni进行更新;

s432:根据所述校验矩阵、校验节点cni对应的校验节点更新序列以及校验节点cni接收到的所有第一目标置信度向量,计算得到在当前迭代次数下,更新后的校验节点cni传递给每个相连的变量节点的第二分层置信度向量;

计算在当前迭代次数下更新后的校验节点cni传递给每个相连的更新后的变量节点的第二分层置信度向量的第四公式为:

其中,tc2vitr,i→j为在当前迭代次数下更新后的校验节点cni传递给每个相连的更新后的变量节点的第二分层置信度向量,γ为校验节点cni对应的校验节点更新序列中的列序号,且满足γ≠j;hi,γ为所述校验矩阵h中第i行第γ列的元素,tv2c′itr,γ→i为与校验节点cni的相连的更新后的变量节点vnγ传递的第一目标置信度向量,为元素hi,j的逆元,tv2c′itr,γ→i·hi,γ中的运算为tv2c′itr,γ→i的q个元素的对数似然比的值不变,而tv2c′itr,γ→i的q个有限域元素分别与hi,γ进行有限域乘法的运算;

s433:对在当前迭代次数下更新后的校验节点cni传递给每个相连的更新后的变量节点的第二分层置信度向量分别进行处理,得到每个第二分层置信度向量一一对应的第二目标置信度向量;并根据所有第二目标置信度向量,得到在当前迭代次数下更新后的校验节点cni传递给相连的更新后的变量节点的第二目标置信度向量序列;

计算在当前迭代次数下更新后的校验节点cni传递给每个相连的更新后的变量节点的第二分层置信度向量所对应的第二目标置信度向量的第五公式为:

c2vitr,i→j=[(tc2vitr,i→j)α]ext;

其中,c2vitr,i→j为在当前迭代次数下更新后的校验节点cni传递给每个相连的更新后的变量节点的第二分层置信度向量所对应的第二目标置信度向量;(·)α代表将第二分层置信度向量tc2vitr,i→j中nm个元素的对数似然比的值均分别乘上归一化因子α的操作运算;[·]ext代表获取(tc2vitr,i→j)α中元素的最大对数似然比,按照最大对数似然比和预设偏移量扩展得到q-nm个元素后,将乘上归一化因子α后的nm个元素和扩展得到的q-nm个元素按照元素符号值的大小进行升序排列的操作运算。

在选取的第i行校验节点cni的更新过程中,需要应用到与其相连的所有更新后的变量节点传递过来的信息,即第一目标置信度向量tv2c′itr,γ→i;因此在s431中,对于任一校验节点cni,同样可以依据校验节点cni对应的列序号集合,得到校验节点更新序列,从而获取合适的校验节点更新的次序,实现校验节点的分层次的置信度传播;再在s432中,结合校验矩阵以及所有接收到的第一目标置信度向量,对校验节点进行更新,进而计算出更新后的校验节点cni传递给每个相连的变量节点的第二分层置信度向量,便于后续的处理过程,得到第二目标置信度向量;在s433中,当计算出更新后的校验节点cni对应的每个第二分层置信度向量tc2vitr,i→j时,对每个第二分层置信度向量分别进行合适的处理,得到每个第二分层置信度向量一一对应的第二目标置信度向量c2vitr,i→j,进而便于根据所有第二目标置信度向量c2vitr,i→j构成第二目标置信度向量序列。

需要说明的是,在s432中的第四公式中,∑(tv2c′itr,γ→i·hi,γ)中的加和运算(∑)为校验节点基本运算,具体过程为,对于两个nm长的置信度向量(各包含nm个有限域元素和nm个对应的llr值),将来自不同置信度向量的有限域元素做有限域加法得到候选元素,对应的llr值做实数加法得到候选元素的llr值,再对加和结果按照所有候选元素的llr值升序排列,并截取前端nm个元素作为运算结果。

具体地,在s433中,对每个第二分层置信度向量tc2vitr,i→j时所进行的处理是:

在任一个第二分层置信度向量tc2vitr,i→j中,将其nm个元素的llr值均分别乘上归一化因子α,做归一化处理;再在归一化后的nm个元素的llr值中获取最大值,为llrmax,并预先设置一个预设偏移量,为llrset,扩展出q-nm个有限域元素,且这q-nm个有限域元素的llr值均取llrmax+llrset;最后再将已经乘上归一化因子α的nm个元素和均取llrmax+llrset的q-nm个元素按照有限域元素的符号值的大小进行升序排列,得到最终的第二目标置信度向量c2vitr,i→j。

上述引入归一化因子对llr进行修正,可以提高译码性能,在相同的信噪比条件下,有效提高了译码的准确性;同时,上述过程能保证得到准确的第二目标置信度向量以及第二目标置信度向量序列,为后续每个当前迭代次数下的判决提供准确的数据基础,进而便于提高迭代串行译码的准确率,并显著提高了在迭代串行译码中的效率。

优选地,s45具体包括以下步骤:

s451:在当前迭代次数下所有校验节点对应的所有变量节点以及所有校验节点均完成更新后,对每个更新后的变量节点进行一次判决,对于任一更新后的变量节点vnj,根据所述原始置信度向量序列以及更新后的变量节点vnj接收到的所有相连的更新后的校验节点传递的第二目标置信度向量,计算得到更新后的变量节点vnj在当前迭代次数下的迭代判决值;

计算更新后的变量节点vnj在当前迭代次数下的迭代判决值的第六公式为:

其中,为更新后的变量节点vnj在当前迭代次数下的迭代判决值,argmin(·)为取最小值的自变量函数;

s452:遍历所述校验矩阵中每个更新后的变量节点,计算得到每个更新后的变量节点在当前迭代次数下的迭代判决值;并根据所有迭代判决值得到当前迭代次数下的迭代判决值序列;

在s4中,分别根据所述校验矩阵和每次迭代后的迭代判决值序列逐次判断串行译码在对应的当前迭代次数下是否成功,具体包括以下步骤:

s46:对于当前迭代次数itr,根据所述校验矩阵和当前迭代次数itr下的迭代判决值序列,计算得到当前迭代次数itr下的实时校验和;

s47:将当前迭代次数itr下的实时校验和作为所述目标校验和代入所述译码成功判据中,判断所述目标校验和是否满足所述译码成功判据,若是,则判定串行译码在当前迭代次数itr下译码成功,并将当前迭代次数itr下的迭代判决值序列作为译码输出并终止译码;若否,则判定串行译码在当前迭代次数itr下译码失败,并令当前迭代次数itr加1,继续进行迭代串行译码,直至译码成功或当前迭代次数itr达到所述迭代串行译码参数中的最大迭代次数。

对于每个当前迭代次数,在所有变量节点和校验节点都完成更新后,对每个更新后的变量节点进行一次判决,对于任一更新后的变量节点vnj,根据该更新后的变量节点接收到的与其相连的更新后的校验节点传递的所有第二目标置信度向量和原始置信度向量序列来计算迭代判决值;当计算出每个更新后的变量节点的迭代判决值后,根据所有变量节点的迭代判决值得到在当前迭代次数下的迭代判决值序列;在进行校验时,同样地,与初始化译码判断方法类似,计算当前迭代次数下对应的实时校验和,并代入译码正确判据中,可以判定出当前迭代次数下的串行译码是否成功。

具体地,当判定串行译码在当前迭代次数下译码失败时,若当前迭代次数达到最大迭代次数时,输出译码失败信息以声明译码失败。

本实施例中完整的ldpc译码方法流程如图3所示,其完整流程简述如下:

初始化:设置最大迭代次数itrmax,当前迭代次数itr=0。根据每个接收符号yj做初始硬判决并计算初始校验和若v=vinitial=0,则将初始判决值序列作为译码输出并终止译码;否则计算置信度向量lj(0≤j<n),令itr=1,i=0;

第1步:对各变量节点vnj(j∈ni),根据变量节点更新规则计算第一分层置信度向量v2citr,j→i和第一目标置信度向量tv2c′itr,j→i;

第2步:对校验节点cni,对j∈ni,根据校验节点更新规则计算第二分层置信度向量tc2vitr,i→j和第二目标置信度向量c2vitr,i→j。令i=i+1,若i=m,则执行第3步;否则执行第1步;

第3步:计算迭代判决值序列以及实时校验和若v=vitr=0,则将迭代判决值序列作为译码输出并终止译码;否则执行第4步;

第4步:令itr=itr+1,i=0。若itr>itrmax,则终止译码并声明译码失败;否则转至第1步。

传统的扩展最小和算法,每次迭代过程中校验节点更新的消息不能立即传递,所以只能应用于下次迭代;而通过本实施例的基于分层置信度传播的ldpc译码方法,能使每次迭代过程中某个校验节点更新的消息立即传递,在本次迭代就能应用于相连变量节点的消息更新,这种依赖关系改进了消息的收敛特性,没有增加译码复杂度,但是算法收敛所需要的迭代次数比传统的扩展最小和算法减少了一半;且每次迭代按合适的节点更新序列依次处理,以校验矩阵为h(100,200),即m=100,n=200,h矩阵有100个校验节点,200个变量节点,其行重dr=4,列重dc=2为例计算,消耗的存储资源比传统的扩展最小和算法降低了1/4。

实施例二、如图4所示,一种基于分层置信度传播的ldpc译码系统,应用于实施例一的基于分层置信度传播的ldpc译码方法中,包括信号获取模块、初始化译码模块、串行译码模块和译码输出模块;

所述信号获取模块,用于获取码元序列对应的校验矩阵和接收信号序列;

所述初始化译码模块,用于对所述接收信号序列进行初始硬判决,得到初始硬判决值序列;根据所述校验矩阵和所述初始硬判决值序列判断是否初始化译码成功;

所述译码输出模块,用于当所述初始化译码模块判定初始化译码成功时,将所述初始硬判决值序列作为译码输出并终止译码;

所述串行译码模块,用于当所述初始化译码模块判定初始化译码失败时,基于置信度向量传播方法,根据所述接收信号序列、所述校验矩阵和所述迭代串行译码参数进行迭代串行译码,得到每次迭代后的迭代判决值序列;并分别根据所述校验矩阵和每次迭代后的迭代判决值序列逐次判断串行译码在对应的当前迭代次数下是否成功;

所述译码输出模块,还用于当所述串行译码模块判定串行译码在对应的当前迭代次数下成功时,将当前迭代次数下的迭代判决值序列作为译码输出并终止译码;

所述串行译码模块,还用于当所述串行译码模块自身判定串行译码在对应的当前迭代次数下失败时,令当前迭代次数加1,继续进行迭代串行译码,直至译码成功或当前迭代次数达到所述迭代串行译码参数中的最大迭代次数;

其中,所述校验矩阵中的每一行对应一个校验节点,所述校验矩阵中的每一列对应一个变量节点,则所述串行译码模块具体用于:

根据所述接收信号序列计算得到原始置信度向量序列;

获取当前迭代次数,选取所述校验矩阵中第i行对应的校验节点,令i=0,按照变量节点更新规则对选取的第i行校验节点对应的所有变量节点进行更新;并基于所述置信度向量传播方法,根据所述迭代串行译码参数、所述校验矩阵和所述原始置信度向量序列,分别计算得到在当前迭代次数下选取的第i行校验节点对应的每个更新后的变量节点传递给相连的校验节点的第一目标置信度向量序列;

在选取的第i行校验节点对应的所有更新后的变量节点传递出的第一目标置信度向量序列计算完成后,按照校验节点更新规则对选取的第i行校验节点进行更新;并基于所述置信度向量传播方法,根据所述迭代串行译码参数、所述校验矩阵以及选取的第i行校验节点接收到的在当前迭代次数下的所有第一目标置信度向量序列,分别计算得到在当前迭代次数下更新后的第i行校验节点传递给相连的变量节点的第二目标置信度向量序列;

令i=i+1,并判断i是否达到所述校验矩阵的最大行数;

若i未达到所述校验矩阵的最大行数,则继续按照所述变量节点更新规则对更新后的第i行校验节点对应的所有变量节点进行更新,并分别计算得到在当前迭代次数下更新后的第i行校验节点对应的每个更新后的变量节点传递给相连的校验节点的第一目标置信度向量序列;以及按照所述校验节点更新规则对更新后的第i行校验节点进行更新,分别计算得到在当前迭代次数下再次更新后的第i行校验节点传递给相连的变量节点的第二目标置信度向量序列;令i=i+1,重复上述判断,直至i达到所述校验矩阵的最大行数;

若i达到所述校验矩阵的最大行数,则在当前迭代次数下所有校验节点对应的变量节点以及所有校验节点均完成更新后,根据所述原始置信度向量序列和所有第二目标置信度向量序列,计算得到当前迭代次数下的迭代判决值序列。

本实施例的基于分层置信度传播的ldpc译码系统,通过设置变量节点更新规则进行更新变量节点,同时在每行更新过程中设置校验节点更新规则进行更新校验节点,可以得到合适的节点更新次序,进而充分利用置信度传播的消息调度策略,实现串行传递消息的机制,在每一次迭代过程中,及时利用更新后的信息去计算要传递的消息,直到所有的校验节点或变量节点依次更新完毕,与传统的译码方法(例如扩展最小和方法)相比,没有增加译码复杂度,但是算法收敛所需要的迭代次数能有效减少一半,每次迭代按照顺序依次处理,所消耗的存储资源大大降低了,显著提高了算法收敛速度,大大减少了存储资源占用。

本实施例中的未尽细节,详见实施例一以及图1至图3的具体描述内容,此处不再赘述。

实施例三、基于实施例一和实施例二,本实施例还公开了一种基于分层置信度传播的ldpc译码系统,包括处理器、存储器和存储在所述存储器中且可运行在所述处理器上的计算机程序,所述计算机程序运行时实现所述s1至s4的具体步骤。

通过存储在存储器上的计算机程序,并运行在处理器上,充分利用置信度传播的消息调度策略,实现串行传递消息的机制,在每一次迭代过程中,及时利用更新后的信息去计算要传递的消息,直到所有的校验节点或变量节点依次更新完毕,与传统的译码方法(例如扩展最小和方法)相比,没有增加译码复杂度,但是算法收敛所需要的迭代次数能有效减少一半,每次迭代按照顺序依次处理,所消耗的存储资源大大降低了,显著提高了算法收敛速度,大大减少了存储资源占用。

本实施例还提供一种计算机存储介质,所述计算机存储介质上存储有至少一个指令,所述指令被执行时实现所述s1至s4的具体步骤。

通过执行包含至少一个指令的计算机存储介质,充分利用置信度传播的消息调度策略,实现串行传递消息的机制,在每一次迭代过程中,及时利用更新后的信息去计算要传递的消息,直到所有的校验节点或变量节点依次更新完毕,与传统的译码方法(例如扩展最小和方法)相比,没有增加译码复杂度,但是算法收敛所需要的迭代次数能有效减少一半,每次迭代按照顺序依次处理,所消耗的存储资源大大降低了,显著提高了算法收敛速度,大大减少了存储资源占用。

本实施例中的未尽细节,详见实施例一以及图1至图3的具体描述内容,此处不再赘述。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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