发明内容
发明目的:为了克服现有技术中存在的不足,本发明提供一种减少译码路径分裂的极化码译码方法,本发明在保证极化码译码器误码率性能的情况下,能够使串行抵消列表译码方法有效减少译码路径的平均数量,提高译码器吞吐量的极化码译码。该方法在进行比特判决时,以该比特的对数似然比为置信度,当该比特位的置信度达到一定的门限时,不需要分裂出新的译码路径,以减少列表中待选译码路径的数量,从而降低译码复杂度。译码时根据译码置信度是否超过门限值、以及译码节点的类型确定译码路径的分裂策略。由于置信度门限值计算过一次之后可以存到表格中待查,本方法在译码器实时译码时不会增加额外的计算复杂度;得益于该方法的自适应特性,该译码方法能够降低译码复杂度,提高译码器的吞吐量,在信噪比较高时性能增益尤为明显。
技术方案:为实现上述目的,本发明采用的技术方案为:
一种减少译码路径分裂的极化码译码方法,包括以下步骤:
步骤1,递归遍历译码树:对于一个码长为N,信息位长度为K的极化码,其译码树为深度为n=log2N的二叉树,采用基于串行抵消的译码方法从根节点开始递归遍历整个译码树。其中,左子节点和右子节点以同样的方式向其子节点遍历,如果遇到以下4种类型的节点,则不再向下递归而直接译码后返回。这4种节点类型分别是:若其包含的叶节点全是休眠位比特,则记为Rate-0节点。若其包含的叶节点全是信息位比特,则记为Rate-1节点。若其包含的叶节点只有最后一位是信息位比特,则记为REP节点。若其包含的叶节点只有第一位是休眠位比特,则记为SPC节点。
步骤2,对步骤1中提到的4种类型的节点根据节点类型分别给出相应的译码策略,得到各节点相应的译码结果。
步骤3,根据译码时节点之间传递待译符号的对数似然比计算译码路径分裂门限,根据译码路径分裂门限决定是否分裂新的译码路径。译码时先估计信噪比Eb/No,当前Eb/No对应的译码路径分裂门限计算过一次之后就将译码路径分裂门限存入一张列表中。下一个码块译码时,如果Eb/No对应的译码路径分裂门限已存在则直接找到对应的列表待查,如果不存在则重新计算存到对应的列表中。
步骤4,译码路径分裂策略:译码开始时,列表里只有一条译码路径,每条译码路径都有一个评价路径优劣的度量值PM,初始路径的PM值设为0。第2步在译码时,根据当前信噪比估计值Eb/No,结合步骤3列表中的分裂门限,根据步骤1所述的节点类型确定不同的译码路径分裂策略,同时更新路径的PM值。分裂后产生的新路径添加到同一列表中,如果列表中路径数量多于设定的最大值Lmax,则只保留PM值最大的Lmax个路径。
步骤5,根据循环冗余校验选择最终译码结果:
如果译码树从根节点返回,对于列表中的第l个译码路径Pl,其返回的比特序列βv记为βv (l),为译码结果,则路径Pl的译码结果为:
其中,Gn为码长为n的极化码生成矩阵。如果满足循环冗余校验,则将选为最终译码结果。如果所有存活路径的译码结果均不满足循环冗余校验,则选择路径度量值PM最小的路径所得到的作为最终译码结果,整个译码过程结束。
优选的:所述采用基于串行抵消的译码方法如下:
译码时需要在节点之间传递待译符号的对数似然比LLR,对数似然比LLR初始值通过如下方式计算得到:
其中,L(ui)表示ui的对数似然比,ui表示发送比特,yi为译码器接收到的待译码的符号,Pr(yi|ui)表示发送符号为ui时接收到符号yi的概率。
对于译码树上的一个节点v,其包含的叶节点的个数为Nv,该节点从父节点接收一个长度为Nv的LLR值序列,记为av。译码开始时,由公式(1)计算接收符号的对数似然比并传递给根节点,然后由av计算要传递给左子节点的LLR值序列al:
al[i]=sgn(av[i])sgn(av[i+Nv/2])min(|av[i]|,|av[i+Nv/2]|),0≤i<Nv/2 (2)
其中,i是向量av的位置索引,av[i]表示av的第i个元素,
以递归的方式遍历左子节点,返回后从左子节点接收到长度为Nv/2的比特序列βl,
然后计算要传递给右子节点的LLR值序列ar:
ar[i]=av[i+Nv/2]-(2βl[i]-1)av[i],0≤i<Nv/2 (3)
以递归的方式遍历右子节点,返回后从右字节点接收到长度为Nv的比特序列βr,然后计算要返回给父节点的比特序列βv:
其中,为二进制异或运算。
优选的:所述步骤2中的译码策略如下:
如果是Rate-0节点,则:
βv[i]=0,0≤i<Nv (5)
如果是Rate-1节点,则:
βv[i]=h(αv[i]),0≤i<Nv (6)
其中,
如果是REP节点,则:
如果是SPC节点,则:
βv[i]=h(αv[i]),0≤i<Nv (9)
如果SPC节点的译码结果βv不满足奇偶校验,则找到序列αv中绝对值最小的,记为αv[min],min是其在序列αv中的索引,然后将βv[min]中的比特位反转。
优选的:译码路径分裂门限的计算方法:
对于一个码长为N的极化码,第i个极化子信道记为子信道的截止速率为通过如下方式递推计算得到:
其中,
K为信息位长度,N为码长,Eb/No为接收端信噪比的估计值。
码长为N的第i个比特,决定是否进行路径分裂的判决门限为
如果则令T为门限常数。
优选的:所述步骤4中根据节点类型确定不同的译码路径分裂策略,同时更新路径的PM值的方法:
当前节点深度为d,令N=2d。当前信噪比估计值为Eb/No,按第3步所述方法找到Eb/No对应的列表待查。
如果是Rate-0节点,不产生新的译码路径,更新当前路径的度量值PM:
其中,h(·)为式(7)。
如果是Rate-1节点,原有路径的度量值PM不变。找到序列av中绝对值最小的两个,记为av[min 1],av[min 2],min 1、min 2为其分别在序列av中的位置索引,在该列表中查询判断式(14)(15)是否成立:
若式(14)成立将当前路径复制一份新路径P1,复制时路径中的av、βv、PM都要复制,P1的度量值为PM1,将其βv[min 1]比特位反转,更新PM1:
PM1=PM1-|αv[min 1]| (16)
若式(15)成立将当前路径复制一份新路径P2,将其βv[min 2]比特位反转,更新路径P2的度量值PM2:
PM2=PM2-|αy[min 2]| (17)
若式(14)、式(15)同时成立,将当前路径复制一份新路径P3,将其βv[min 1],βv[min 2]两个比特位反转,更新路径P3的度量值PM3:
PM3=PM3-|av[min 1]|-|αv[min 2]| (18)
如果是REP节点,在该列表中查询门限值如果则不产生新路径,且路径的度量值PM不变。否则将当前路径复制一份新路径P1,将新路径中βv所有比特反转,新路径与原路径都按如下方式更新PM:
如果是SPC节点,若满足奇偶校验令q=1,否则q=0。更新原路径PM值:
PM=PM-(1-q)|αv[min 1]| (20)
找到av中绝对值最小的4个,记为av[min 1],av[min 2],av[min 3],av[min 4],min1~min4分别为其在av中的位置索引,在列表中查询判断式(21)-(23)是否成立:
若式(21)成立将当前路径复制一份新路径P1,将βv[min 1],βv[min 2]比特位反转,更新路径P1的度量值PM1:
PM1=PM1-q|αv[min 1]|-|αv[min 2]| (24)
若式(22)成立将当前路径复制一份新路径P2,将βv[min 1],βv[min 3]比特位反转,更新路径P2的度量值PM2:
PM2=PM2-q|αv[min 1]|-|αv[min 3]| (25)
若式(23)成立将当前路径复制一份新路径P3,将βv[min 1],βv[min 4]比特位反转,更新路径P3的度量值PM3:
PM3=PM3-q|αv[min 1]|-|αv[min 4]| (26)
对于列表中的每条译码路径,都需要独立进行译码和路径分裂,分裂后产生的新路径添加到同一列表中,如果列表中路径数量多于设定的最大值Lmax,则只保留PM值最大的Lmax个路径。
优选的:所述门限常数T大于等于10。
优选的:所述信噪比估计值Eb/No以dB为单位并四舍五入近似为整数。
本发明相比现有技术,具有以下有益效果:
本发明以每个比特判决时的置信度作为译码路径是否分裂的依据,设计了一整套适合各种类型译码树节点的译码方案。与现有技术相比,本发明具有如下增益效果:当置信度很高时,既可以保证误码率性能几乎不损失,又能够减少译码路径分裂次数,从而减少列表中译码路径的数量,降低了极化码译码器的计算复杂度,从而提高译码器的吞吐量;当信噪比越高时,本方法的性能增益越明显,可以极大提高译码器的吞吐量。
具体实施方式
下面结合附图和具体实施例,进一步阐明本发明,应理解这些实例仅用于说明本发明而不用于限制本发明的范围,在阅读了本发明之后,本领域技术人员对本发明的各种等价形式的修改均落于本申请所附权利要求所限定的范围。
本发明提出的基于串行抵消列表的减少译码路径分裂的极化码译码方法,以终端接收设备为例来给出一种译码器实施例:
如图1所述,包括如下步骤:
第一步:递归遍历译码树。
本发明采用树形译码结构,对于一个码长为N,信息位长度为K的极化码,其译码树为深度为n=log2N的二叉树。图1给出了N=8、K=4一个译码树实例,图中白色叶节点表示休眠位比特,黑色叶节点表示信息位比特。基于串行抵消的译码方法从根节点开始递归遍历整个译码树。
译码时需要在节点之间传递待译符号的对数似然比(LLR,log-likelihoodratio),LLR初始值通过如下方式计算得到:
其中,ui表示发送比特,L(ui)表示ui的对数似然比,yi为译码器接收到的待译码的符号,Pr(yi|ui)表示发送符号为ui时,接收到符号yi的概率。Pr(yi|ui)可从解调器的软判决信息中得到。
如图1所示,对于译码树上的一个节点v,其包含的叶节点的个数为Nv,该节点从父节点接收一个长度为Nv的LLR值序列,记为av。译码开始时,由公式(1)计算接收符号的对数似然比并传递给根节点,然后由av计算要传递给左子节点的LLR值序列al:
al[i]=sgn(av[i])sgn(av[i+Nv/2])min(|av[i]|,|av[i+Nv/2]|),0≤i<Nv/2 (2)
其中,i是向量av的位置索引,av[i]表示av的第i个元素,
以递归的方式遍历左子节点,返回后从左子节点接收到长度为Nv/2的比特序列βl,然后计算要传递给右子节点的LLR值序列ar:
ar[i]=av[i+Nv/2]-(2βl[i]-1)av[i],0≤i<Nv/2 (3)
以递归的方式遍历右子节点,返回后从右字节点接收到长度为Nv的比特序列βr,然后计算要返回给父节点的比特序列βv:
其中,为二进制异或运算。
在本步骤中,左子节点和右子节点以同样的方式向其子节点遍历。如果遇到以下几种类型的节点,则不再向下递归而直接译码后返回。这几种节点类型分别是:若其包含的叶节点全是休眠位比特,则记为Rate-0节点;若其包含的叶节点全是信息位比特,则记为Rate-1节点;若其包含的叶节点只有最后一位是信息位比特,则记为REP(RepetitionNodes)节点;若其包含的叶节点只有第一位是休眠位比特,则记为SPC(Single ParityCheck Nodes)节点。
第二步:针对第一步中提到的4种类型的节点分别给出相应的译码策略。
本步骤中Nv、av、βv的定义同第一步。
如果是Rate-0节点,则:
βv[i]=0,0≤i<Nv (5)
如果是Rate-1节点,则:
βv[i]=h(αv[i]),0≤i<Nv (6)
其中,
如果是REP节点,则:
如果是SPC节点,则:
βv[i]=h(αv[i]),0≤i<Nv (9)
如果SPC节点的译码结果βv不满足奇偶校验,则找到序列αv中绝对值最小的,记为αv[min],min是其在序列αv中的索引,然后将βv[min]中的比特位反转。
第三步:计算译码路径分裂门限。
在上一步中每次进行译码时,接收到的LLR值的绝对值的大小可以看作该比特译码置信度的高低,因此对该节点从父节点接收到LLR值序列av进行门限判别,以决定是否分裂新的译码路径。首先对决定是否进行路径分裂的LLR门限值进行计算:
对于一个码长为N的极化码,第i个极化子信道记为于信道的截止速率为可以看做是该子信道极化程度的度量标准,因此我们用计算出一个与信道优劣有关的动态门限。可以通过如下方式递推计算得到:
其中,
K为信息位长度,N为码块长度,Eb/No为接收端信噪比的估计值,可由常用的信道估计算法得到。
码长为N的第i个比特,决定是否进行路径分裂的判决门限为
如果则令(T为门限常数,运营商可以根据网络运行情况自行确定,推荐取值10以上)。当某个子信道极化程度越高时,就越小,门限值越大,因此是一个与子信道优劣有关的动态门限。
译码时先估计信噪比Eb/No(以dB为单位并四舍五入近似为整数),当前Eb/No对应的门限值计算过一次之后就将存入一张表格中。下一个码块译码时,如果Eb/No对应的门限值已存在则直接找到对应的表格待查,如果不存在则重新计算存到对应的表格中。当有足够多的码块被译码后,系统工作范围内的所有Eb/No对应的门限都会存在于表格中,因而不会增加译码的实时复杂度。
第四步:译码路径分裂策略。
译码开始时,列表里只有一条译码路径,每条译码路径都有一个评价路径优劣的度量值PM(Path Metric),初始路径的PM值设为0。第二步在译码时根据节点类型选择不同的译码路径分裂策略,要同时更新路径的PM值。
本步骤中Nv、av、βv的定义同第一步,当前节点深度为d,令N=2d。当前信噪比估计值为Eb/No,按第三步所述方法找到Eb/No对应的表格待查。
如果是Rate-0节点,不产生新的译码路径,更新当前路径的度量值PM:
其中,h(·)为式(7)。
如果是Rate-1节点,原有路径的度量值PM不变;找到序列av中绝对值最小的两个,记为av[min 1],av[min 2],min 1、min 2为其分别在序列av中的位置索引,在该表格中查询判断式(14)(15)是否成立:
若(14)成立将当前路径复制一份新路径P1(复制时路径中的av、βv、PM都要复制),P1的度量值为PM1,将其βv[min 1]比特位反转,更新PM1:
PM1=PM1-|αv[min 1]| (16)
若(15)成立将当前路径复制一份新路径P2,将其βv[min 2]比特位反转,更新路径P2的度量值PM2:
PM2=PM2-|αv[min 2]| (17)
若(14)(15)同时成立,将当前路径复制一份新路径P3,将其βv[min 1],βv[min 2]两个比特位反转,更新路径P3的度量值PM3:
PM3=PM3-|αv[min 1]|-|αv[min 2]| (18)
如果是REP节点,在该表格中查询门限值如果则不产生新路径,且路径的度量值PM不变;否则将当前路径复制一份新路径P1,将新路径中βv所有比特反转,新路径与原路径都按如下方式更新PM:
如果是SPC节点,若满足奇偶校验令q=1,否则q=0;更新原路径PM值:
PM=PM-(1-q)|αv[min 1]| (20)
找到av中绝对值最小的4个,记为av[min 1],av[min 2],av[min 3],av[min 4],min1~min4分别为其在av中的位置索引,在表格中查询判断式(21)-(23)是否成立:
若(21)成立将当前路径复制一份新路径P1,将βv[min 1],βv[min 2]比特位反转,更新路径P1的度量值PM1:
PM1=PM1-q|αv[min 1]|-|αv[min 2]| (24)
若(22)成立将当前路径复制一份新路径P2,将βv[min 1],βv[min 3]比特位反转,更新路径P2的度量值PM2:
PM2=PM2-q|αv[min 1]|-|αv[min 3]| (25)
若(23)成立将当前路径复制一份新路径P3,将βv[min 1],βv[min 4]比特位反转,更新路径P3的度量值PM3:
PM3=PM3-q|αv[min 1]|-|αv[min 4]| (26)
对于列表中的每条译码路径,都需要独立进行译码和路径分裂,分裂后产生的新路径添加到同一列表中,如果列表中路径数量多于设定的最大值Lmax(Lmax取值为常整数,该取值可由运营商根据误码率要求情况自行确定,Lmax越大,误码率越低),则只保留PM值最大的Lmax个路径。
第五步:根据循环冗余校验选择最终译码结果。
如果译码树从根节点返回,对于列表中的第l个译码路径Pl,其返回的比特序列βv记为βv (l),为译码结果,则路径Pl的译码结果为:
其中,Gn为码长为n的极化码生成矩阵。如果满足循环冗余校验,则将选为最终译码结果。如果所有存活路径的译码结果均不满足循环冗余校验,则选择路径度量值PM最小的路径所得到的作为最终译码结果,整个译码过程结束。
如图2所示,为本发明的流程图,包括以下步骤:
S1,计算LLR初始值并赋值给根节点,进入步骤S2。
S2,判断节点是否为需要译码的节点,若不是需要译码的节点,进入步骤S3;若是需要译码的节点,进入步骤S4。
S3,计算左子节点LLR值,计算出的左子节点LLR值赋值给当前节点的左子节点,进入步骤S2。
S4,根据节点类型进行译码和路径分裂,进入步骤S5。
S5,返回上一层节点,并判断上一层节点是否为根节点,若不是根节点,进入步骤S6;若是根节点,进入步骤S7。
S6,判断节点从哪个子节点返回,若是从右子节点返回,合并左右节点返回的比特序列,进入步骤S5;若是从左子节点返回,计算右子节点LLR值,计算出的右子节点LLR值赋值给当前节点的右子节点,进入步骤S2。
S7,根据循环冗余校验从待选路径选择最终译码结果。
本发明以串行抵消列表方法为基础,提出了一种提高译码器吞吐量并且保证误码率性能的极化码译码方法。该方法考虑了译码时的置信度水平,在比特位置信度很高的情况下可以不分裂新的译码路径,又不会损失误码率性能。该方法能够自适应信道噪声条件,当信噪比越高时,译码器性能增益越明。
以上所述仅是本发明的优选实施方式,应当指出:对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。