本发明属于无线通信领域,特别涉及一种并行的极化码译码方法。
背景技术:
作为首个理论证明可达shannon限的编码方法,polar码在无线通信和存储系统中将发挥巨大的作用,而且高性能的polar码编、译码器及高效硬件架构的实现引起工业界和学术界的广泛关注。
当码长趋近于无穷大时,串行抵消算法(successivecancellation,sc)是一种可使极化码纠错性能达到信道容量的低复杂度译码算法。学者gabisarkis和warrenj.gross考虑到ssc算法中的rate-r节点依旧需要对其相应子树进行遍历,提出ml-ssc和fast-ssc算法,将rate-r节点组合分为rep和spc节点。rep和spc节点的估值步骤与rate0、rate1相同,可以直接在子树根部对其估值,无需对子树进行遍历。上述译码算法都是对单棵译码树进行译码,为提高译码算法并行性进而提高吞吐率,南京大学林军和山东科技大学张小军分别提出并行sc和并行fast-ssc译码算法。为进一步对纠错性能进行提高,gabisarkis在fast-ssc译码算法的基础上设置路径数量阈值l提出对应的列表译码算法(list-fast-ssc),但list-fast-ssc译码算法产生的候选路径数量远超scl算法,该算法中spc节点需要扩展八条候选路径,从而导致更多的排序资源消耗和由于排序网络造成的高译码延迟。相关文献提出简化scl(simplifiedscl,sscl)译码算法,该算法不再像list-fast-ssc译码算法那样对rep、rate1和spc分别扩展2、4、8条路径,而是对每个节点包含的信息位扩展两条路径,可以使用与scl完全兼容的排序网络对候选路径进行选择。该算法虽然完美继承list算法的高译码性能,改进了复杂的排序网络架构,对纠错性能和复杂度有一个很好的折中,但每个叶子节点译码需要多个时钟周期,译码延迟有待降低。sscl算法对rate1节点译码过程中存在冗余的路径分裂操作,为此相关文献提出一种针对rate1节点的快速译码方法——fast-sscl,与sscl相比需要更少的译码步骤。后来,学者分别提出基于sscl译码算法的fast-sscl和基于sscl-spc译码算法的fast-sscl-spc译码算法,分别消除rate1和spc节点的冗余计算,进一步降低译码延迟,提高吞吐率。上述算法可能在节点译码方法有一定改进,但能保证纠错性能又能提高吞吐率的姨妈方法有待研究。
技术实现要素:
针对上述技术问题,本发明的目的在于提供一种解决上述技术问题的并行的极化码译码方法。
为解决上述技术问题,本发明并行的极化码译码方法,包括如下步骤:
步骤1,根据位置信息奇、偶位,获取左二叉树tl和右二叉树tr;
步骤2,将奇、偶位置的对数似然比值分别给左二叉树tl和右二叉树tr;
步骤3,译码器对左二叉树tl和右二叉树tr进行并行遍历;
步骤4,获取叶子节点估值并保留候选路径;
步骤5,对估值进行处理;
步骤6,获取译码结果;返回步骤3,直到译码树最后一个叶子节点被激活。
优选地,步骤1包括:
步骤1.1,根据位置信息序列奇、偶位置拆分为两个子序列,并由位置信息作为叶子节点构造两棵满二叉树;
步骤1.2,对满二叉树裁剪,裁剪后的二叉树分别记为左二叉树tl和右二叉树tr。
优选地,步骤3中,译码器根据左二叉树tl和右二叉树tr的结构按照深度优先的顺序同时对左二叉树tl和右二叉树tr进行并行遍历。
优选地,步骤4中,当前激活节点为叶子节点类型时,根据步骤3所述路径扩展及译码方式得到叶子节点估值β,并对扩展的候选路径排序选取其中最可靠的l条候选路径进行保留。
优选地,步骤5中,
若激活节点为左孩子节点,将对应的激活节点叶子估值返回至父节点做g运算;
若激活节点为右孩子节点,将联合当前激活节点的兄弟节点估值做c运算。
优选地,步骤6中,当译码器激活节点为叶子节点类型,叶子节点局部译码器输出经过kronekcer积转换获取最终译码结果。
优选地,还包括步骤7,选取通过crc校验并最可靠的一条路径,对叶子节点估值进行拼接,并输出最终译码结果。
一种并行的极化码译码方法系统,包括:
位置模块,据位置信息奇、偶位,获取左二叉树tl和右二叉树tr;
赋值模块,将奇、偶位置的对数似然比值分别给左二叉树tl和右二叉树tr;
遍历模块,译码器对左二叉树tl和右二叉树tr进行并行遍历;
保留模块,获取叶子节点估值并保留候选路径;
处理模块,对估值进行处理;
译码模块,获取译码结果。
本发明公开的极化码的译码方法是对list-fast-ssc算法、fast-sscl算法并行化,节点数量有大量缩减,误码率无差。本发明对不同算法译码性能进行分析,分别从如下两方面进行对比,其一在译码节点数量相同的前提下与并行fast-ssc算法对比误码率,l=32时,误块率在10-3位置提升约为1.5db;其二在误码率相同前提下与list-fast-ssc算法对比节点数量,比list-fast-ssc算法、fast-sscl节点数量并行度提高40%左右。
附图说明
图1为并行list-fast-ssc译码流程图;
图2(a)为译码二叉树示意图;
图2(b)为并行译码二叉树示意图;
图3为drate0节点示意图;
图4为drate1节点示意图;
图5为crep节点示意图;
图6为cspc节点示意图;
图7为drep节点示意图;
图8为rep_spc节点示意图;
图9为rep_rate1节点示意图;
图10为误码率曲线示意图;
图11为误块率曲线示意图。
具体实施方式
下面结合附图对本发明并行的极化码译码方法作进一步详细说明。
本发明根据极化码的并行性设计并行list-fast-ssc译码算法算法,本发明所述极化码根据克罗内克积的特点,码长为n的极化码可以由两个码长为n/2短码构成,两短码间只需额外执行一阶运算即可。
克罗内克积
对式(2)中等号右侧部分进行约分可得:
至此
根据极化码编码性质,
本发明所述译码算法按照位置信息奇、偶位拆分为两棵二叉树,左树为奇数标号位置信息,右树为偶数标号位置信息,根据本发明所提叶子节点类型对两棵二叉树裁剪。同理信道接收信息亦是如此,将接收到的llr值奇数标号部分赋值给左树根节点,偶数标号赋值给右树根节点。除叶子节点外两棵树独立、并行译码,每遇叶子节点两树根据本发明给出的不同叶子节点译码方式联合译码。
本发明中所提出的并行的极化码译码方法具体步骤如下:
步骤一、根据位置信息序列奇、偶位置拆分为两个子序列,并由位置信息作为叶子节点构造两棵满二叉树,根据本发明所述叶子节点类型对满二叉树裁剪,裁剪后的二叉树作为译码模型,分别记为tl和tr。所构建的两棵二叉树分别对应两个并行子译码器,叶子节点类型定义如下:若一组位置信息全部为固定位,则裁剪后的叶子节点称为rate0节点;若叶子节点组合为全1序列,裁剪后的节点称为rate1节点;若节点组合仅有第一位为固定位,称为spc节点;若节点组合仅有最后一位为信息位,称为rep节点。左、右树对应节点均为rate0称为drate0节点;左、右树对应节点均为rate1称为drate1节点;左、右树对应节点联合为rep称为crep节点;左、右树对应节点联合为spc称为cspc节点;左、右树对应节点均为rep称为drep节点;左、右树对应节点均为spc称为dspc节点;左、右树对应节点分别为rep、spc称为rep_spc节点;左、右树对应节点分别为rep、rate1称为rep_rate1节点;其它节点为other节点。
步骤二、将译码器接收的llr值序列根据位置信息分配到两个译码器根节点,即奇、偶位置的llr值分别给左、右两棵子树。
步骤三、译码器根据tl和tr两棵树的结构按照深度优先的顺序同时对两棵译码树进行并行遍历。当前激活节点得到中间α值,然后激活左孩子节点用f运算,如式(5)所示,计算输出左孩子节点的α值。其中αv[i]为节点v对应的llr值序列,0≤i≤nv-1。
αl[i]=f(αv[2*i],αv[2*i+1])
=sign(αv[2*i])sign(αv[2*i+1])min(|αv[2*i]|,|αv[2*i+1]|),0≤i<nv/2
(5)
激活右孩子节点用g运算如式(6),计算输出右孩子节点的α值。
式(5)和式(6)中,αv表示当前激活节点的α值,αl表示下一个激活节点即左孩子的中间α值,αr表示当前激活节点右孩子的中间值α。如果下一激活节点为other类型节点则根据公式(5)和(6)所示的f、g运算进行计算,若下一激活节点为叶子节点类型,则按照下述方式对其译码。
1)当节点类型为drate0节点,与原始译码方式相同。已知rate0节点由固定位组合而成,因此译码结果为约定好的固定信息,所以在本发明所述并行算法中,如果遇到date0节点,局部译码器直接输出译码结果为0。drate0节点无需生成新路径,但译码过程中路径度量值需要像scl译码算法一样更新,其计算方式如式(7)。其中
该计算方式还可以写成式(8)。
由式(7)或(8)可知,在译码算法遇到drate0时,局部译码器只对左右树节点对应的α值做一次减法运算更新pm值。
2)当左、右树对应叶子节点全部为rate1的节点类型称为drate1,即所传输全部为信息位。可以使用下述两种方法对drate1节点译码。
方法一:参考list-fast-ssc算法,本文中drate1节点译码方法设计如下:令
其中
方法二:虽然可以通过上述译码方式对drate1节点进行译码,由于对生成的路径排序所需排序网络比较大,故也可采用如下译码方式。
定理1:在rate1译码过程中,只需对sdrate1=min(l-1,nv)进行路径扩展,其余位置可直接对llr值进行硬判决。
根据定理1,首先组合左、右译码树对应叶子节点的llr值为
其中i≤sdrate1,为便于硬件实现式(11)可写为
这样就可以完全兼容scl译码算法中的排序网络,只需从2l条路径中选l可靠路径,以便降低译码延迟。
3)crep节点只包含最右边唯一的信息位,故译码结果只有两种,0或1。译码方式与list-fast-ssc译码算法方式相同,将左右子树对应叶子节点组合
该叶子节点路径扩展分两步,首先计算叶子节点对应llr值之和,
4)cspc节点中只有左树第一个叶子节点为固定位,其它全部为信息位,所以cspc节点译码结果满足偶校验,即
方法一:左、右子树对应节点进行联合译码,令
令parity表示校验位,即
该扩展路径方式需要在8l条候选路径中选出l条最可靠(路径度量值绝对值最小)的路径,在译码器中排序网络处于关键路径。
方法二:为降低排序网络复杂度,cspc节点译码方式可逐位译码,首先选scspc=min(l,nv)。
选择cspc节点中最不可靠的位置
然后计算奇偶校验位
γ为每条路径对应llr值的校验结果,将路径度量值初始化为
至此,每条路径都有一个初始化的度量值,其它位路径度量值扩展如下
其中i按照llr绝对值大小排列,首先对绝对值较小的位置进行路径扩展,只需扩展scspc位置,其它位置直接进行硬判决。最后,当全部位置估值完毕,为满足校验限制,根据估值对最不可靠的位置进行比特翻转如下:
使用第二种方法对cspc节点进行译码,排序网络可与scl译码算法中排序网络兼容,硬件复杂度降低。
5)左、右树对应叶子节点各为rep节点的联合节点为drep,共包含两个信息位,故该两个信息位估值包括:00、01、10和11四种情况。局部译码器对四种情况进行全部扩展,方式如下:
经过上述计算,共得到4l条候选路径,其中只需保留l条最可靠的路径,根据所保留的路径对相应估值进行运算。
6)dspc节点对应左、右子树节点分别为spc节点,两节点译码结果分别满足奇偶校验。首先将两节点llr值奇偶交叉组合,对组合结果进行联合译码,即
然后计算左、右子树的校验位
初始化pm值为
设定阈值sdspc=min(l,nv-1),根据llr绝对值排序,选出较小的sdspc个位置,遍历i=2,3…sdspc-1个位置记为flip[i],进行路径扩展,对每次扩展的2l条候选路径进行排序,选出l条较可靠的路径,扩展路径计算方式如(23)。
其中情形1表示flip[i]%2=0且
上述译码方式中的排序网络是从2l条候选路径中选l条最可靠的路径,可直接兼容scl中的排序网络。
7)rep_spc节点即左树对应rep、右树对应节点。对接收的左、右子树llr值进行奇偶交叉联合译码,即
8)当左树对应rep节点,右树对应rate1节点时称为rep_rate1节点。对于rep_rate1节点,采用联合译码的方式,首先将左、右树奇偶交叉合并,合并方式如
此时z=0或1。
通过
至此,得到2l条候选路径,在这2l条候选路径中选出最可靠的l条路径,并根据该l条路径中z的取值对输出值进行翻转,
对扩展后的路径进行排序选择,选择最可靠的l条路径,并更新其输出值及校验位。
步骤四、当前激活节点为叶子节点类型时,根据步骤三所述路径扩展及译码方式得到叶子节点估值β,并对扩展的候选路径排序选取其中最可靠的l条候选路径进行保留。
步骤五、若步骤四中激活节点为左孩子节点,将对应的激活节点叶子估值返回至父节点做g运算,如式(6);若为右孩子节点,将联合当前激活节点的兄弟节点估值做c运算,如式(27)。
步骤六、当译码器激活节点为叶子节点类型,叶子节点局部译码器输出需要经过kronekcer积转换才可以得到最终译码结果,以8码长叶子节点为例,最终译码估值为
步骤七、重复步骤三至六,直到译码树最后一个叶子节点被激活。
步骤八、选取通过crc校验并最可靠的一条路径,对叶子节点估值进行拼接,并输出最终译码结果。至此,一帧译码过程结束。
本实施案例中以所提出的并行的极化码译码方法,如图1所示,具体步骤如下:
本实施案例码长n=1024,码率r=0.5;位置信息
a=[0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000100000000000101110001011101111111000000000000000000000000000000000000000000000000000000000000011100000000000000000000000100010111000000010001011100111111111111110000000000000001000000010001111100000011011111110111111111111111000101110111111101111111111111110111111111111111111111111111111100000000000000000000000000000000000000000000000100000001000101110000000000000001000000010111111100000111011111110111111111111111000000000000011100010111011111110001011101111111111111111111111100011111111111111111111111111111111111111111111111111111111111110000000100010111000101111111111100111111111111111111111111111111011111111111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111];
步骤一、构建译码树,将序列a按奇偶位拆分成两个序列
aa=[00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010111000000000000000000000000000000010000000000000001000000010111111100000000000000110001011101111111000101110111111101111111111111110000000000000000000000000000000100000000000001110001011101111111000000010001011100010111111111110011111111111111111111111111111100000001000111110111111111111111011111111111111111111111111111110111111111111111111111111111111111111111111111111111111111111111];
ab=[00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010111000000000000000000000000000000010000000000000001000000010111111100000000000000110001011101111111000101110111111101111111111111110000000000000000000000000000000100000000000001110001011101111111000000010001011100010111111111110011111111111111111111111111111100000001000111110111111111111111011111111111111111111111111111110111111111111111111111111111111111111111111111111111111111111111];
位置信息序列中的0表示固定位,1表示信息位,在二叉树中分别用空心圆、黑色实心圆表示。根据位置信息分别建立图2(b)所示的并行二叉树。并且根据表1对二叉树进行裁剪。
表1
步骤二、译码器接收一帧信道llr值序列,所述序列为一组浮点型数据序列,该数据序列包括1024个浮点型数据,记为llr1,llr2,…,llr1024。
步骤三、利用信道llr值的奇数序列llr1,llr3,…,llr1023初始化译码树tl,作为二叉树根节点位置的α值;利用偶数序列数据llr2,llr4,…,llr1024初始化译码树tr。
步骤四、左、右译码器分别由两棵二叉树的根节点开始,按照深度优先的顺序同时激活两棵译码树的节点;
首先为由根节点α值序列经过式(5)所示的f运算得到左孩子节点α值,若左孩子节点不是叶子类型节点,继续向下遍历;反之,若左孩子为叶子类型节点,则根据叶子节点类型,根据相应的叶子节点类型译码方式进行译码,译码方式见式(7)至(26)。
1)当节点类型为drate0节点,其计算方式如式(7)。
该计算方式还可以写成式(8)。
由式(7)或(8)可知,在译码算法遇到drate0时,局部译码器只对左右树节点对应的α值做一次减法运算更新pm值。
2)当节点类型为drate1,即所传输全部为信息位。可以使用下述两种方法对drate1节点译码。
方法一:令
其中
方法二:组合左、右译码树对应叶子节点的llr值为
其中i≤sdrate1,为便于硬件实现式(11)可写为
这样就可以完全兼容scl译码算法中的排序网络,只需要2l选l,以便降低译码延迟。
3)若节点类型为crep节点,将左右子树对应叶子节点组合为
该叶子节点路径扩展分两步,首先计算叶子节点对应llr值之和,
4)若节点类型为cspc节点,有以下两种方法:
方法一:左、右子树对应节点进行联合译码,令
令parity表示校验位,即
该扩展路径方式需要在8l条候选路径中选出l条最可靠(路径度量值绝对值最小)的路径,在译码器中排序网络处于关键路径。
方法二:cspc节点译码可逐位译码,首先选scspc=min(l,nv)。
选择cspc节点中最不可靠的位置
然后计算奇偶校验位
γ为每条路径对应llr值的校验结果,将路径度量值初始化为
至此,每条路径都有一个初始化的度量值,其它位路径度量值扩展如下
其中i按照llr绝对值大小排列,首先对绝对值较小的位置进行路径扩展,只需扩展scspc位置,其它位置直接进行硬判决。最后,当全部位置估值完毕,为满足校验限制,根据估值对最不可靠的位置进行比特翻转如下:
5)若节点类型为drep。局部译码器对四种情况进行全部扩展,方式如下:
经过上述计算,共得到4l条候选路径,其中只需保留l条最可靠的路径,根据所保留的路径对相应估值进行运算。
6)若节点类型为dspc节点。首先将两节点llr值奇偶交叉组合,对组合结果进行联合译码,即
然后计算左、右子树的校验位
初始化pm值为
设定阈值sdspc=min(l,nv-1),根据llr绝对值排序,选出较小的sdspc个位置,遍历i=2,3…sdspc-1个位置记为flip[i],进行路径扩展,对每次扩展的2l条候选路径进行排序,选出l条较可靠的路径,扩展路径计算方式如(23)。
其中情形1表示flip[i]%2=0且
7)若节点类型为rep_spc,对接收的左、右子树llr值进行奇偶交叉联合译码,即
8)若节点类型为rep_rate1节点。采用联合译码的方式,首先将左、右树奇偶交叉合并,合并方式如
此时z=0或1。
通过
至此,得到2l条候选路径,在这2l条候选路径中选出最可靠的l条路径,并根据该l条路径中z的取值对输出值进行翻转,
对扩展后的路径进行排序选择,选择最可靠的l条路径,并更新其输出值及校验位。
步骤五、对步骤四中叶子节点扩展的多种候选路径进行选择,利用排序网络对路径度量值进行排序,选取绝对值较小的l条路径进行译码,将对应叶子节点估值返回至父节点进行g运算得到右兄弟节点的α值。
若右兄弟节点为叶子节点,则利用c运算式(27)计算父节点的估值,得到父节点估值后继续根据g运算计算父节点的右兄弟节点α,当其父节点本身为上一级的右孩子节点时,则继续利用c运算计算上一级的估值。
当译码器激活节点为叶子节点类型,叶子节点局部译码器输出需要经过kronekcer积转换才可以得到最终译码结果,以8码长叶子节点为例,最终译码估值为
步骤七、重复步骤四至六,直到译码树最后一个叶子节点被激活。
步骤八、选取通过crc校验并且最可靠的一条路径,对叶子节点估值进行拼接,并输出最终译码结果
效果验证
本发明两棵二叉树可并行执行,因此只需计算单棵二叉树的节点数量,利用节点数量进行对比,本节定义并行度对比式如(28)。
由表1可知,对于码率r=1/2,码长分别为1024、2048、4096码字的译码树节点数量统计中,本发明所提算法比list-fast-ssc算法(list-fast-ssc与fast-sscl节点数量相同)并行度提高40%左右。
实验数据如图10、11,在误比特率10-6位置,所提算法采用方法二译码方式比已有的list-fast-ssc译码算法性能增益小于0.1db,经分析,该性能损失发生在list-fast-ssc对rate1与spc节点的路径扩展方式,当spc节点长度限制长度为4,无性能损失,当长度变大,该估值方式会舍弃部分译码估值组合,故造成一定比特损失。图10、11中显示,所提算法相比并行fast-ssc译码算法误码率提升很大,误块率在10-3位置提升约为1.5db。
表1不同译码算法节点数量对比
以上已对本发明创造的较佳实施例进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明创造精神的前提下还可作出种种的等同的变型或替换,这些等同的变型或替换均包含在本申请权利要求所限定的范围内。