一种适用于极化码译码路径分裂的排序方法
技术领域
本发明属于通信技术领域,涉及系统中的信道编译码技术,更为具体的说,是涉及基于串行抵消列表的极化码译码中一种低时延低复杂度的路径排序改进方法。
背景技术
极化码是一种新型编码方式,是目前唯一可理论证明在二进制离散无记忆信道下达到香农极限,并且具有可实用的线性复杂度编译码能力的信道编码技术,成为第五代通信系统(5G)中信道编码方案的强有力候选者。串行抵消(SC,Successive Cancellation)译码是一种低复杂度的译码方法。串行抵消列表(SCL,Successive Cancellation List)译码方法是串行抵消译码方法的改进方法,能够实现更好的误码率性能。SCL的译码路径列表中有L个译码路径,每条译码路径都有一个评价路径优劣的度量值PM(Path Metric)。每译码一个比特时,每一个译码路径都要分裂为两个,需要对2L个路径排序,选择PM值最小的L个路径保留下来。SCL译码方法每译一个比特都要进行一次排序,大量的排序操作导致译码时延和复杂度都很高。因此低时延、低复杂度的排序方法是降低极化码译码时延和复杂度的关键。
发明内容
为解决上述问题,本发明公开了一种有效降低译码路径的排序时延和复杂度的方法,利用列表中原有路径已经有序的特点,对新生成的L个路径执行并行的二分插入,插入到路径列表的空隙中,再对插入到同一空隙的路径进行排序。由于插入的每个位置的路径平均数量较少,并且各个位置内的路径可以并行进行排序,本方法能显著降低排序方法的平均时延和排序复杂度(比较和交换操作的次数)。
为了达到上述目的,本发明提供如下技术方案:
一种适用于极化码译码路径分裂的排序方法,包括如下步骤:
步骤1:将待排序路径的PM值用向量表示
路径Pl的PM值记为ml,列表中的所有路径的PM值记为如下向量:
m′=[m′1,m′2,...,m′L] (1)
其中,L表示路径,上述向量按照PM值升序排列;
路径Pl分裂后变为Pl和PL+l两个路径,其PM值分别为:
ml=m′l
mL+l=m′l+|αi| (2)
其中,|αi|表示第i个比特的对数似然比LLR(LLR,log-likelihood ratio)的绝对值,在SCL遍历译码树的过程中由父节点传递得到,路径分裂之后的待排序向量如下:
m=[m1,m2,...,mL,mL+1,...,m2L] (3)
且满足以下条件:
步骤2:路径并行插入
将L个新生成的路径的PM值插入到已排序的向量m′头尾及各元素之间的L+1个空隙中,所述L+1个空隙记为s=[s1,s2,...,sL,sL+1],将mL+1,...,m2L这L个值并行执行二分插入法,插入到L+1个空隙中,找个每个路径应该插入到的空隙的位置;
步骤3:各个空隙中的元素执行并行排序
对各个空隙中的路径并行执行排序,各个空隙s1,s2,...,sL中的路径同时根据双调排序方法进行排序,所述空隙sL+1中的路径直接丢弃;
步骤4:输出PM值最小的L个路径
将[m1,m2,...,mL]和各个空隙中排序好的数据连接起来,空隙si中的路径的PM值经过步骤3排序后结果记为矢量中的元素代表空隙si中各个路径的PM值,最终的排序结果为从msort元素中选择最小的L个元素所代表的路径作为最终排序的输出结果。
进一步的,所述步骤2中二分插入法过程如下:
先取m′中的最中间元素,如果待插入的元素小于该中间元素,则需要插入到m′的前一半元素的空隙中,否则插入到m′的后一半元素的空隙中,然后对需要插入的前一半或者后一半元素以同样的方式取中间值,比较然后判断需要插入的位置,直到判定待插入元素能够插入到某两个元素之间的空隙中。
进一步的,所述步骤2需要的时延为clk1=log2L,需要的比较次数为cmp1=Llog2L。
进一步的,所述步骤3需要的时延为:
其中,nmax=max{n1,n2,...,nL},ni为空隙si中路径的数量;
需要的比较次数为:
与现有技术相比,本发明具有如下优点和有益效果:
本发明在极化码译码路径分裂后的排序过程中,利用列表中原有路径已经有序的特点,将新生成的L个路径执行并行的二分插入排序,再对插入到同一位置的路径进行排序;由于插入的每个位置的路径平均数量较少,并且各个位置内的路径可以并行进行排序,从而能够显著降低基于串行抵消的译码中所需要的排序时延和比较次数,同时也能够降低极化码译码的整体时延。
附图说明
图1为码长N=8,信息位长度K=4的一个极化码译码树实例,图中v表示译码树上的一个节点,αv为该节点从父节点接收的对数似然比LLR(LLR,log-likelihood ratio)值序列,αl、αr分别为该节点要传递给左右子节点的LLR值序列,βl、βr分别为该节点从左右子节点接收到的比特序列,βv为返回给父节点的比特序列。
具体实施方式
以下将结合具体实施例对本发明提供的技术方案进行详细说明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。
本发明的排序方法适用于基于串行抵消列表(SCL)的极化码译码方法。SCL译码的简要过程如下:
极化码的SCL译码可以采用树形译码结构来表示,对于一个码长为N,信息位长度为K的极化码,其译码树为深度为n=log2N的二叉树。图1给出了N=8、K=4一个译码树实例,图中白色叶节点表示休眠位比特,黑色叶节点表示信息位比特。SCL方法从根节点开始递归遍历整个译码树,遍历过程中需要在节点之间传递待译符号的对数似然比(LLR,log-likelihood ratio)。当遍历到译码树的叶节点时,则需要根据该节点的LLR值进行门限判决译码,每个叶节点都代表一个比特位,如果该叶节点对应的比特位表示信息位(在极化码中,休眠位传输的是固定的零值,信息位用来传输有效比特信息)比特,则需要将一个译码路径分裂为两个。SCL的译码路径列表中有L个译码路径,分裂为路径列表中就有2L个路径。需要对2L个路径按照PM值排序,选择PM值最小的L个路径保留下来。然后继续执行译码树的遍历,直到到达译码树最后一个叶节点。
本发明是对上述SCL译码过程中的路径排序方法的技术改进方案,以下以终端接收设备为例来给出一种译码器中排序模块实例,本发明方法具体包括如下步骤:
第一步:将待排序路径的PM值用向量表示。
SCL译码在叶节点进行译码时,路径列表中已经有L个路径,在上一个比特译码时,路径列表中的L个路径是已经按照PM值升序排列的。路径Pl的PM值记为ml,列表中的所有路径的PM值记为向量
m′=[m′1,m′2,...,m′L] (1)
路径Pl分裂后变为Pl和PL+l两个路径,其PM值分别为
ml=m′l
mL+l=m′l+|αi| (2)
|αi|表示第i个比特的LLR的绝对值,在SCL遍历译码树的过程中由父节点传递得到。所以,路径分裂之后的待排序向量为
m=[m1,m2,...,mL,mL+1,...,m2L] (3)
且满足
极化码路径排序可以归结为满足公式(4)的条件下对公式(3)表示的向量进行排序。
第二步:路径并行插入。
将L个新生成的路径的PM值插入到已排序的向量m′中,m′中共L个元素,相邻两个元素之间有一个空隙,共有L-1个空隙,并且m1前面和mL后面分别有一个空隙,所以有L+1个空隙可以插入数据。这L+1个空隙记为s=[s1,s2,...,sL,sL+1]。将mL+1,...,m2L这L个值并行执行二分插入法,插入到L+1个空隙中,找个每个路径应该插入到的空隙的位置。二分插入法是先取m′中的最中间元素,如果待插入的元素小于该中间元素,则需要插入到m′的前一半元素的空隙中,否则插入到m′的后一半元素的空隙中,然后对前一半或者后一半元素以同样的方式取中间值,比较然后判断需要插入的位置,直到可以判定待插入元素可以插入到某两个元素之间的空隙中。由于这L个插入可以并行执行,所以需要的时延为clk1=log2L,需要的比较次数为cmp1=Llog2L。
排序的目的是为了选出PM值最小的L个路径。对于空隙sL+1中的任意路径pj,其PM值mj≥mL,而[m1,m2,...,mL]是升序排列的,所以至少有L个路径的PM值小于等于mj。因此空隙sL+1的任意路径必然不在排序后的输出结果中,空隙sL+1中的路径可以直接丢弃。
第三步:各个空隙中的元素执行并行排序。
上一步执行完插入操作后,每个空隙si中可能会有多个路径的PM值,所以需要对每个空隙中的路径进行一次排序。各个空隙之间的排序没有相关性,因此各个空隙中的路径可以并行执行排序。各个空隙s1,s2,...,sL中的路径同时根据双调排序(BS,BitonicSorter)方法进行排序。
每个空隙si中可能会有多个路径,s1,s2,...,sL的路径数量分别记为n=[n1,n2,...,nL],ni对应空隙si中路径的数量,此步骤并行排序需要的时延由n的元素中的最大值决定:
其中,nmax=max{n1,n2,...,nL}。需要的比较次数为:
第四步:输出PM值最小的L个路径。
将[m1,m2,...,mL]和各个空隙中排序好的数据连接起来,空隙si中的路径的PM值经过上一步排序后结果记为矢量中的元素代表空隙si中各个路径的PM值。中的元素小于m1且已经排序,中的元素大于m1且小于m2,依次列推。最终的排序结果为从msort元素中选择最小的L个所代表的路径作为最终排序的输出结果。
本发明方案所公开的技术手段不仅限于上述实施方式所公开的技术手段,还包括由以上技术特征任意组合所组成的技术方案。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。