CN111371464B - 一种Polar码的译码方法及装置、设备 - Google Patents
一种Polar码的译码方法及装置、设备 Download PDFInfo
- Publication number
- CN111371464B CN111371464B CN201811600879.8A CN201811600879A CN111371464B CN 111371464 B CN111371464 B CN 111371464B CN 201811600879 A CN201811600879 A CN 201811600879A CN 111371464 B CN111371464 B CN 111371464B
- Authority
- CN
- China
- Prior art keywords
- node
- lca
- leaf node
- target leaf
- decoding
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/13—Linear codes
Landscapes
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
Abstract
本申请公开了一种Polar码的译码方法及装置、设备。该方法包括:确定Polar码的第一节点到目标叶子节点之间的冻结节点,所述第一节点为中间节点或根节点;以及在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的对数似然比LLR,其中,所述第一节点到所述目标叶子节点的PSUM为0。还公开了相应的装置及设备。采用本申请的方案,不需要遍历二叉树的各个节点,通过LCA搜索算法,在确定冻结节点后,跳过冻结节点进行LLR计算,可以减少译码复杂度,提高译码效率。
Description
技术领域
本申请涉及通信技术领域,尤其涉及一种Polar码的译码方法及装置、设备。
背景技术
第三代合作伙伴计划(3rdgeneration partnership project,3GPP)标准选定Polar码作为下一代移动通信***(例如,5G NR)的控制信道纠错码方案。
Polar码是一种最近新提出的信道纠错码方案。Polar码是目前唯一已经证明能够在多项式处理复杂度前提下能够达到信道容量的纠错码方案。
Polar码应用广泛的译码算法是串行对消译码器(successive-cancellation,SC)算法和列表串行对消译码器(successive-cancellation list,SCL)算法。SC算法的译码过程:从信道接收的N个对数似然比(log-likelihood ratio,LLR)开始,按照深度优先搜索二叉树的方式递归处理所有节点。
在SC/SCL算法中,译码器对Polar译码树上的所有节点进行了遍历。在处理冻结比特 (frozen bit)时,SC算法不译码,PSUM直接返回0;SCL算法在译码第一个信息比特(infobit)之前的frozen bit时,PSUM直接返回0,其余的frozen bit除PSUM直接返回0外,还需计算根据计算出的frozen bit的LLR值,更新路径的度量值。
为了解决原始SC/SCL算法并行度较低译码速率慢的问题,Bo Yuan等提出了Multibit译码方法,通过穷举M个bit的所有2^M条分支路径的情形,将并行度提升到Mbit。但是由于电路的复杂度限制,一般M做到4。Gross等提出了简化的串行对消译码器(Simplified SC),证明了在中间层的节点上进行译码,与叶子节点上的路径度量结果是相同的,且译码结果 PSUM一致。Gross将证明推广到SCL算法,并提出了Rep,SPC,Rate1,Rate0等译码节点。通过对不同节点的特殊处理,译码并行度可以大幅提高(可以达到的最大并行度取决于节点译码方法的复杂度)。
Simplified SC/SCL算法的应用,使得连续的frozen bit可以被包括在一个节点中被一起译出(或其累积路径度量可被一起算出)。
Simplified算法简化效果首先来源于:1)高并行度带来的分支筛选数量减少带来的复杂度降低;以及2)算法在高层次上进行译码,减少了较低层次上的LLR计算、节点译码和选路的循环。但是,节点的并行度提升受到Simplified算法限制和硬件复杂度限制。即使在SC 算法中,Rate0的并行度也无法无限提升。
如图1所示,在该图N=16的译码树中考察现有算法的缺陷。图1中实心叶子节点为Info bit,空心叶子节点为frozen bit。
图1中标出的圆框1是长度为4的Rate0节点(图中D节点,在S=2层上译码,长度为4bit),圆框2、3是长度为2的Rate0节点(图中F/G节点的左孩子,在S=1层上译码)。可见,在所有frozen bit节点中,有部分frozen bit节点无法跳过,只能被纳入其他节点译码,若无法组成Simplified算法支持的节点,则只能拆分成更小的译码并行度,在更低的层次上译码。这增加了额外的LLR计算,提高了译码的计算量。
进一步的,Simplified算法中,Rate0节点译码的前提是计算出该节点所在层上的LLR,这实际上是不必要的。如图2所示,在一个64bit节点A下,有四个叶子节点D-G,其中D-F为16bit长度的Rate0,G为Rate1节点。在此情形下,Simplified算法需要先计算D节点的 16个LLR,译出D的16bit PSUM,返回B节点,再计算E的16个LLR,以此类推,直到译出G节点。译码效率低。
因此,如何有效减少译码复杂度,提高译码效率,是目前亟待解决的问题。
发明内容
本申请提供一种Polar码的译码方法及装置、设备,以有效减少译码复杂度,提高译码效率。
第一方面,提供了一种Polar码的译码方法,所述方法包括:确定Polar码的第一节点到目标叶子节点之间的冻结节点,所述第一节点为中间节点或根节点;以及在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的对数似然比LLR,其中,所述第一节点到所述目标叶子节点的PSUM为0。
在该方面中,不需要遍历二叉树的各个节点,通过LCA搜索算法,在确定冻结节点后,跳过冻结节点进行LLR计算,可以减少译码复杂度,提高译码效率。
在一个实现方式中,所述冻结节点为所述Polar码的二叉树的开头的一个或多个节点,或者所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述一个或多个节点包括叶子节点。
在该实现方式中,可以跳过二叉树的开头或中间的冻结节点,计算任一节点到目标叶子节点的LLR,这些冻结节点返回的PSUM为0。
在另一个实现方式中,所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的LLR,包括:确定源叶子节点与所述目标叶子节点的最低公共父节点LCA,其中,LCA为第一节点;根据所述LCA的标识和所述目标叶子节点的标识,确定所述标识的非公共部分,所述标识采用二进制表示;确定所述第一节点到所述目标叶子节点的LLR计算路径为所述标识的非公共部分表示的路径,其中,标识的第一取值表示做F运算,标识的第二取值表示做G运算;以及根据所述确定的LLR计算路径,计算所述第一节点到所述目标叶子节点的LLR。
在该实现方式中,给出了跳过二叉树的中间的冻结节点计算LLR的具体的计算方式,不需要遍历二叉树的各个节点,通过LCA搜索算法,在确定冻结节点后,跳过冻结节点进行 LLR计算,可以减少译码复杂度,提高译码效率。
在又一个实现方式中,所述确定源叶子节点与所述目标叶子节点的LCA,包括:计算所述源叶子节点的中序标识与所述目标叶子节点的中序标识的异或结果X;以及从所述X的左边开始计算,所述X的最高位1所在比特为k,则将所述源叶子节点的中序标识右移d-k位,将右移后的标识的最低位置1,再左移d-k位,得到所述LCA的中序标识,其中,d为所述Ploar码的二叉树的高度。
在该实现方式中,给出了LCA的具体的确定方式,根据LCA的中序标识确定LCA,方式简单。
在又一个实现方式中,所述根据所述LCA的标识和所述目标叶子节点的标识,确定所述标识的非公共部分,包括:将所述LCA的标识和所述目标叶子节点的标识左对齐,确定所述目标叶子节点的标识中与所述LCA的标识的非公共部分。
在又一个实现方式中,从所述源叶子节点到所述LCA,任一第二节点的右孩子若是没有经过的节点,则计算所述第二节点的左子树的LLA,所述第二节点的右子树的PSUM结果为 0。
在该实现方式中,给出了求解PSUM过程中跳过的Polar译码子树的高度的求解方法,通过求解该高度,可以了解减小的译码的复杂度。
在又一个实现方式中,将所述LCA的标识和所述源叶子节点的标识左对齐,则所述LCA 的标识和所述源叶子节点的标识非公共部分中为0的比特对应的第二节点,所述第二节点的右孩子为根的子树的PSUM结果为0。
在又一个实现方式中,从所述LCA到所述目的叶子节点,任一第三节点的左孩子若是没有经过的节点,则不计算所述第三节点的左子树的LLR。
在该实现方式中,给出了求解LLR过程中跳过的Polar译码子树的高度的求解方法,通过求解该高度,可以了解减小的译码的复杂度。
在又一个实现方式中,将所述LCA的标识和所述目标叶子节点的标识左对齐,则所述 LCA的标识和所述目标叶子节点的标识非公共部分中为1的比特对应的第三节点,则不计算所述第三节点的左孩子为根的子树的LLR。
第二方面,提供了一种Polar码的译码装置,可以实现上述第一方面或第一方面的任一种可能的实现方式中的译码方法。例如所述Polar码的译码装置可以是芯片或者设备。可以通过软件、硬件、或者通过硬件执行相应的软件实现上述方法。
在一种可能的实现方式中,所述Polar码的译码装置的结构中包括处理器、存储器;所述处理器被配置为支持所述装置执行上述译码方法中相应的功能。存储器用于与处理器耦合,其保存所述装置必要的程序(指令)和/或数据。可选的,所述Polar码的译码装置还可以包括输入/输出接口用于支持所述装置与其他设备之间的通信。
在另一种可能的实现方式中,所述Polar码的译码装置,可以包括执行上述方法中相应动作的单元或者模块。
在又一种可能的实现方式中,所述Polar码的译码装置的结构中包括处理器;所述处理器被配置为支持所述装置执行上述译码方法中相应的功能。
在又一种可能的实现方式中,所述Polar码的译码装置的结构中包括处理器,所述处理器用于与存储器耦合,并读取存储器中的指令,并根据所述指令实现上述方法。
第三方面,提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
第四方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
附图说明
图1为示例的N=16的译码数示意图;
图2为现有的采用Simplified算法进行译码时示例的节点示意图;
图3为示例的Polar码的编码示意图;
图4为对图3进行Polar码编码采用的生成矩阵的示意图;
图5为SC算法的译码过程示意图;
图6为本申请实施例示例的二叉树的不同层上的节点标上R后的示意图;
图7为本申请实施例示例的二叉树的不同层上的节点标上P后的示意图;
图8为本申请实施例提供的一种Polar码的译码方法的流程示意图;
图9为本申请提供的一个实施例中跳过开头frozen bit进行LLR计算和译码的示意图;
图10为本申请提供的一个实施例中跳过中间frozen bit进行LLR计算和译码的示意图;
图11为本申请提供的一个实施例中跳过的Polar译码子树高度求解示意图;
图12为本申请实施例提供的一种Polar码的译码装置的模块结构示意图;
图13为本申请实施例提供的一种Polar码的译码设备的硬件结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。
Polar编码
以下用N表示一个Polar码编码以后的bit数量,K表示编码以前的bit数量。Polar码的码率R=K/N。如图3所示的Polar码的编码方案,在这里,N=8。其生成矩阵如图4所示。
SC算法的译码过程
如图5所示,为SC算法的译码过程:从信道接收的N个LLR开始,按照深度优先搜索二叉树的方式递归处理所有节点。
1)F计算:从上一级(s+1级)接收到本级(s级)的alpha(2^s个LLR)开始,依次计算左子节点的LLR;
2)左子节点译码:从左子节点译码返回判决结果beta_l(2^(s-1)个硬bit),其中,beta_l 即为(s-1级)节点返回的PSUM;
3)G运算:根据beta_l(2^(s-1)个硬bit)计算右子节点的LLR;
4)右子节点译码:从右子节点译码返回判决结果beta_r(2^(s-1)个硬bit)。
返回译码结果:由beta_l(2^(s-1)个硬bit)和beta_r(2^(s-1)个硬bit),计算beta_i(2^s个硬 bit),返回上一级(s+1级),其中,beta_i即为(s级)节点返回的PSUM。
关于带预处理的常识时间最低公共父节点(lowest common ancestor,LCA)搜索算法
LCA,是指两个节点高度最低的共同父节点。
由于Polar译码树都是满二叉树,这里考虑满二叉树(complete binary tree)的情形。将向左的边标上0,向右的边标上1,则每个节点的R是从根节点到该节点经过的边的标号。如图6所示,展示了二叉树的不同层上的节点标上R后的示意图。注意到根节点是没有R的,且每一层的R长度与所在层数相关。
将R后添1,并补足到d位(d为树的总高度,例子中是4)得到P。如图7所示,展示了二叉树的不同层上的节点标上P后的示意图。注意,根节点没有R,其P固定为
从根节点开始,以中序遍历的方法对二叉树进行遍历,每个节点按先后访问的顺序标上序号,这个序号即中序序号。P即中序序号(inorder)。则在一颗满二叉树求解两个节点的LCA 的过程如下:
预处理:对满二叉树进行中序遍历,并依次给节点标号P。
求LCA:任意两个节点(i,j)的LCA(i,j)的过程为:求i,j异或结果X,若X的最高位1所在bit为k(从左边计算,从1开始计数),则将i右移d-k位(非循环移位),将最低位置1,再左移d-k位。
举例:
1)源节点i:0001,目的节点j:1001,X=1001,k=1,d=4,i右移4-1=3位后=0001,最低位置1=0001,左移4-1=3位后1000,所以LCA是根节点(1000)。
2)源节点i:0011,目的节点j:0101,X=0110,k=2,d=4,i右移4-2=2位后=0001,最低位置1=0001,左移4-2=2位后0100,LCA是第二层的左节点。
在如图2所示的64bit译码树中,对于Rate0节点的冗余LLR计算问题,一个朴素的解决方法是,在计算一个节点的LLR之前,检查其子节点是否都是Rate0,如果是则不计算LLR, PSUM直接返回0。实用的方案是不进行树节点遍历快速判断从某个节点出发到另一个节点的LLR计算过程,即要解决的是译码树上两个节点的快速路由问题。
本申请提供一种Polar码的译码方法及装置、设备,不需要遍历二叉树的各个节点,通过 LCA搜索算法,在确定冻结节点后,跳过冻结节点进行LLR计算,可以减少译码复杂度,提高译码效率。
请参阅图8,为本申请实施例提供的一种Polar码的译码方法的流程示意图。其中:
S801、确定Polar码的第一节点到目标叶子节点之间的冻结节点,所述第一节点为中间节点或根节点。
在要计算某一个第一节点到目标叶子节点的LLR之前,首先确定该第一节点到目标叶子节点之间是否存在冻结节点。该第一节点可以是根节点或任一的中间节点。
S802、在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的对数似然比,其中,所述第一节点到所述目标叶子节点的PSUM为0。
然后对第一节点进行译码,需要计算第一节点到目标叶子节点的LLR。计算LLR时,对于每一层的节点,包括F运算和G运算。而进行F运算时,如果该节点的左孩子是冻结节点,因为冻结节点返回的PSUM为0,所以不需要遍历第一节点下的每个节点进行译码,而对于下面的节点为冻结节点的,直接传递向右计算LLR,冻结节点的PSUM为0。
可选地,所述冻结节点为所述Polar码的二叉树的开头的一个或多个节点,或者所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述一个或多个节点包括叶子节点。
在一个实施例中,可以跳过开头frozen bit进行LLR计算和译码。如图9所示,二叉树开头的圆圈4(即节点D以下的节点都是frozen bit),以及圆圈5中的叶子节点是frozenbit。由于叶节点经过边数为d(d为树高度),则叶节点的P(d+1位)的二进制表示中,最低位是1,其余位为R(d位),即:P={R(d-1),R(d-2),…,R(1),1}。如图9中,包括16个叶子节点;二叉树共有5层,则d=5。
根据LCA搜索算法,从根节点到叶节点的LLR计算过程可由叶节点的P得到:R(d-1)是从根节点出发的第一个边,R(d-1)=0表明走左边,R(d-1)=1表明走右边,以此类推到R(1),即可到达目标叶节点。
而若某中间节点D以下的叶节点都是frozen bit,由编码计算过程:
PSUM=uG
其中,G为Polar的生成矩阵,当u=0时,PSUM也为0,则D返回上一层的PSUM都是0。即LLR计算过程中,G运算输入的PSUM为0。因此,计算LLR过程中,G运算过程中不需要等待左孩子返回的PSUM信息(因为必然为0),可直接向右传递G运算得到的LLR。
则如图9所示,在计算B节点到叶子节点的LLR时,则G运算过程中不需要等待左孩子D节点返回的PSUM信息(因为必然为0),可直接向右传递G运算得到的LLR。在计算节点E下的左节点到叶子节点的LLR时,其G运算过程中也不需要等待左孩子返回的PSUM 信息(因为必然为0),可直接向右传递G运算得到的LLR。从而提高了译码效率。
在另一个实施例中,可以跳过中间frozen bit进行LLR计算和译码。所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的LLR,包括:确定源叶子节点与所述目标叶子节点的最低公共父节点LCA,其中,LCA为第一节点;根据所述LCA的标识和所述目标叶子节点的标识,确定所述标识的非公共部分,所述标识采用二进制表示;确定所述第一节点到所述目标叶子节点的LLR计算路径为所述标识的非公共部分表示的路径,其中,标识的第一取值表示做F 运算,标识的第二取值表示做G运算;以及根据所述确定的LLR计算路径,计算所述第一节点到所述目标叶子节点的LLR。
如图10所示,b1和b2之间、以及b2和b3之间存在frozen bit。这些frozen bit位于二叉树的中间。进行LLR计算和译码时,可以跳过中间这一段frozen bit。
首先,需要求得首尾两个信息比特b1、b2的LCA(b1,b2)。可以根据上述的LCA的算法,所述确定源叶子节点与所述目标叶子节点的LCA,包括:计算所述源叶子节点的中序标识与所述目标叶子节点的中序标识的异或结果X;从所述X的左边开始计算,所述X的最高位1 所在比特为k,则将所述源叶子节点的中序标识右移d-k位,将右移后的标识的最低位置1,再左移d-k位,得到所述LCA的中序标识,其中,d为所述Ploar码的二叉树的高度。则从 b1到b2的最短路径为b1->LCA(b1,b2)->b2。b1->LCA(b1,b2)是PSUM结果返回的路径, LCA(b1,b2)->b2是LLR计算的路径。在进行路径表示时,0为做F运算,1为做G运算。
除LCA节点上进行的G运算(LCA节点上进行的必然是G运算,否则该节点不是LCA)输入的PSUM非0外,其余节点(源节点到LCA)的G运算的PSUM都为0。因此,除LCA 节点的G运算需要计算以外(PSUM的计算过程与传统算法的过程是一致的),其他节点的G 运算都可直接向右孩子传递LLR,即跳过了这些节点的PSUM运算,PSUM结果都为0。
然后,描述快速求解LLR的译码路径的方法:
在下面的一个实现方式中,描述了采用中序编号表示,进行快速求解LLR的译码路径的方法:
将两个节点表示成二进制形式并左对齐,取出左边相同的部分记为LCA节点的二进制表示。LCA到目标节点的路径可以根据节点编号获得:将LCA节点和目标节点编号均表示成二进制并左对齐,则非公共部分为从LCA节点出发的路径。
举例:
1)源节点b1的R是0111,P是01111,目的节点b2的R是1011,P是10111。根据前述的LCA的计算方法:X=11000,k=1,01111右移5-1=4位是00000,置1为00001,左移 5-1=4后是10000,所以LCA是10000(根节点)。由于该LCA是根节点,则没有R。将目标节点b2的R(1011)与根节点左对齐,则非公共部分为1011。所以,如图11所示的曲线1,经过b1、b2的LCA到b2的路径就是1011(0为做F运算,1为做G运算),即从根节点,先做G,再做F,再做两次G到b2。
2)源节点b2的R是1011,P是10111,目的节点b3的R是1110,P是11101,X=01010,k=2, 10111右移5-2=3位是00010,置1为00011,左移5-2=3位后是11000,所以LCA是11000(C节点)。R是1。将目标节点b3的R(1110)与LCA的R(1)左对齐,则非公共部分为 110。所以,如图11所示的曲线2,经过b2、b3的LCA到b3的路径就是110(0为做F运算,1为做G运算),即从C节点,先做两次G,再做F到b3。
在下面的一个实现方式中,描述了采用R编号表示,进行快速求解LLR的译码路径的方法:
两个叶节点编号表示成二进制形式(高位不足用0补齐),则左边连续相同的部分长度为 LCA节点高度,连续相同的部分为LCA节点编号。目标节点的非公共部分为从LCA节点出发到目标节点的路径。
以b2、b3之间的LLA计算为例:b2的R是1011,b3的R是1110,左边连续的相同部分是1,所以LCA编号(R)为1,即C节点,LCA高度是5-1=4,b2非公共部分为011,b3非公共部分为110,则从LCA到b3的路径是110,从C节点先做两次G,再做F到b3。
另外,关于跳过的子树高度的计算,例如,在该示例中:b3是LCA右孩子,所以LCA到b3是跳过了LLR计算过程的子树,非公共部分是110,所以高度为2(第一个1所在位置 -1),实际是G的左孩子对应的子树;b2是LCA左孩子,所以b2到LCA是跳过了PSUM计算过程的子树,非公共部分是011,因为右子树是需要经过的节点,所以没有跳过的子树。
基于以上方法,可实现跳过中间的冻结比特的LLR计算、PSUM计算和对应的冻结比特的译码。值得注意的是,该方法适用于SC/SCL,并且兼容Simplified算法的不同类型节点。
在又一个实施例中,描述了跳过的Polar译码子树高度求解方法。为了计算跳过的LLR 计算和节点的译码的复杂度,需要求解跳过的Polar译码子树的高度。
在一个实现方式中,给出了求解PSUM过程跳过的Polar译码子树的高度的求解方法:
开始节点出发到LCA过程中,节点的右孩子若是没有经过的节点,则右子树是被跳过的子树。
快速求解方法(以采用中序编号为例):LCA节点和开始节点编号均表示成二进制并左对齐,则非公共部分中为0的bit对应的节点,该节点的右孩子为根的子树可被跳过。
例如,上述示例中,b1、b2的LCA是根节点,将目标节点b2的R(1011)与根节点左对齐,则非公共部分为1011,非公共部分中为0的bit对应的节点为节点F,则节点F的右孩子为根的子树的PSUM过程可跳过,因为该PSUM结果为0。
在另一个实现方式中,给出了求解LLR计算过程跳过的Polar译码子树的高度的求解方法:
LCA到目的节点过程中,节点的左孩子若是没有经过的节点,则左子树是被跳过的子树。
快速求解方法(以采用中序编号为例):LCA节点和目的节点编号均表示成二进制并左对齐,则非公共部分中为1的bit对应的节点,该节点的左孩子为根的子树可被跳过。
例如,如图11所示,源节点b1的R是0111,目的节点b2的R是1011,LCA是根节点。
从b1到LCA再到b2的路径分为两段,第一段是从b1到LCA,第二段是LCA到b2
1)从b1出发到LCA的路径可由b1的R(0111)得到(因为根节点没有R),B节点是第一个向左的节点,但经过的路径上E节点是B节点的右孩子,所以从b1到LCA的路径上没有跳过子树。
2)从LCA到b2的路径可由b2的R得到(也是因为根节点没有R),第一个向右的方向是从根节点到C节点,但是LCA的左孩子(B节点)是我们经过的路径,所以这一步没有跳过子树,第二个向右的方向是从F节点向F节点的右孩子(2号),这里F节点的左孩子(1号) 我们没有经过,所以F的左孩子(1号)为根节点的子树是可以跳过的子树,子树高度为2。第三个向右的方向是F的右孩子(2号节点)的右孩子(6号节点),这里2号节点的左孩子 (5号节点)也没经过,所以也跳过了一个子树,高度为1。
又例如,如图11所示,b2的R是1011,b3的是1110,左边相同部分是1,所以LCA 节点的编号(R)为1,即C节点,LCA节点的高度是5-1=4,与b2节点的R的非公共部分为 011,与b3节点的R的非公共部分为110,则从LCA节点—C节点到b3的路径是:从C节点先做两次G运算,再做一次F运算到b3。
跳过的子树高度计算:b3是LCA右孩子,所以LCA到b3的非公共部分是110,所以跳过了G的左孩子(7节点)为根节点的子树。
b2是LCA左孩子,所以b2到LCA是跳过了PSUM计算过程的子树,非公共部分是011,因为F的右孩子(2号)是需要经过的节点,所以没有跳过的子树。
根据本申请实施例提供的一种Polar码的译码方法,不需要遍历二叉树的各个节点,通过 LCA搜索算法,在确定冻结节点后,跳过冻结节点进行LLR计算,可以减少译码复杂度,提高译码效率。
上述详细阐述了本申请实施例的方法,下面提供了本申请实施例的装置。
基于上述实施例中的Polar码的译码方法的同一构思,如图12所示,本申请实施例还提供一种Polar码的译码装置1200,该译码装置可应用于上述图8所示的译码方法中。该译码装置1200包括确定单元121和计算单元122。其中:
确定单元121,用于确定Polar码的第一节点到目标叶子节点之间的冻结节点,所述第一节点为中间节点或根节点;
计算单元122,用于在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的对数似然比LLR,其中,所述第一节点到所述目标叶子节点的PSUM为0。
在一个实现方式中,所述冻结节点为所述Polar码的二叉树的开头的一个或多个节点,或者所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述一个或多个节点包括叶子节点。
在另一个实现方式中,所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述计算单元122具体用于:确定源叶子节点与所述目标叶子节点的最低公共父节点LCA,其中,LCA为第一节点;根据所述LCA的标识和所述目标叶子节点的标识,确定所述标识的非公共部分,所述标识采用二进制表示;确定所述第一节点到所述目标叶子节点的LLR计算路径为所述标识的非公共部分表示的路径,其中,标识的第一取值表示做F运算,标识的第二取值表示做G运算;以及根据所述确定的LLR计算路径,计算所述第一节点到所述目标叶子节点的LLR。
在又一个实现方式中,所述确定单元121具体用于:计算所述源叶子节点的中序标识与所述目标叶子节点的中序标识的异或结果X;以及从所述X的左边开始计算,所述X的最高位1所在比特为k,则将所述源叶子节点的中序标识右移d-k位,将右移后的标识的最低位置 1,再左移d-k位,得到所述LCA的中序标识,其中,d为所述Ploar码的二叉树的高度。
在又一个实现方式中,所述确定单元121具体用于:将所述LCA的标识和所述目标叶子节点的标识左对齐,确定所述目标叶子节点的标识中与所述LCA的标识的非公共部分。
有关上述确定单元121和计算单元122更详细的描述可以直接参考上述图8所示的方法实施例中译码装置的相关描述直接得到,这里不加赘述。
图13为本申请实施例提供的一种Polar码的译码设备的硬件结构示意图。如图13所示,该译码设备1300可包括:
输入装置131、输出装置132、存储器133和处理器134(译码设备中的处理器134的数量可以是一个或多个,图13中以一个处理器为例)。在本申请的一些实施例中,输入装置131、输出装置132、存储器133和处理器134可通过总线或其它方式连接,其中,图13中以通过总线连接为例。
其中,处理器134用于执行以下步骤:
确定Polar码的第一节点到目标叶子节点之间的冻结节点,所述第一节点为中间节点或根节点;
在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的对数似然比 LLR,其中,所述第一节点到所述目标叶子节点的PSUM为0。
在一个实现方式中,所述冻结节点为所述Polar码的二叉树的开头的一个或多个节点,或者所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述一个或多个节点包括叶子节点。
在另一个实现方式中,所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述处理器134执行所述在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的LLR的步骤,包括:确定源叶子节点与所述目标叶子节点的最低公共父节点LCA,其中,LCA为第一节点;根据所述LCA的标识和所述目标叶子节点的标识,确定所述标识的非公共部分,所述标识采用二进制表示;确定所述第一节点到所述目标叶子节点的LLR计算路径为所述标识的非公共部分表示的路径,其中,标识的第一取值表示做F运算,标识的第二取值表示做G运算;以及根据所述确定的LLR计算路径,计算所述第一节点到所述目标叶子节点的LLR。
在又一个实现方式中,所述处理器134执行所述确定源叶子节点与所述目标叶子节点的 LCA的步骤,包括:计算所述源叶子节点的中序标识与所述目标叶子节点的中序标识的异或结果X;以及从所述X的左边开始计算,所述X的最高位1所在比特为k,则将所述源叶子节点的中序标识右移d-k位,将右移后的标识的最低位置1,再左移d-k位,得到所述LCA的中序标识,其中,d为所述Ploar码的二叉树的高度。
在又一个实现方式中,所述处理器134执行所述根据所述LCA的标识和所述目标叶子节点的标识,确定所述标识的非公共部分的步骤,包括:将所述LCA的标识和所述目标叶子节点的标识左对齐,确定所述目标叶子节点的标识中与所述LCA的标识的非公共部分。
该Polar码的译码设备用于执行上述Polar码的译码方法。上述Polar码的译码方法中的部分或全部可以通过硬件来实现也可以通过软件来实现。
可选的,Polar码的译码设备在具体实现时可以是芯片或者集成电路。
可选的,当上述实施例的Polar码的译码方法中的部分或全部通过软件来实现时,Polar 码的译码设备包括:存储器,用于存储程序;处理器,用于执行存储器存储的程序,当程序被执行时,使得Polar码的译码设备可以实现上述图8所示实施例中提供的Polar码的译码方法。
可选的,上述存储器可以是物理上独立的单元,也可以与处理器集成在一起。该存储器也可以用于存储数据。
可选的,当上述实施例的Polar码的译码方法中的部分或全部通过软件实现时,Polar码的译码设备也可以只包括处理器。用于存储程序的存储器位于Polar码的译码设备之外,处理器通过电路/电线与存储器连接,用于读取并执行存储器中存储的程序。
处理器可以是中央处理器(central processing unit,CPU),网络处理器(network processor, NP)或者CPU和NP的组合。
处理器还可以进一步包括硬件芯片。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device, PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device, CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。
存储器可以包括易失性存储器(volatile memory),例如随机存取存储器(random-access memory,RAM);存储器也可以包括非易失性存储器(non-volatilememory),例如快闪存储器(flash memory),硬盘(hard disk drive,HDD)或固态硬盘(solid-state drive,SSD);存储器还可以包括上述种类的存储器的组合。
可以理解的是,上述各个Polar码的译码设备实施例中的单元也可以称为模块。
可以理解的是,本实施例的设备1300的各功能模块的功能可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。
需要说明的是,本申请实施例中的术语“***”和“网络”可被互换使用。“多个”是指两个或两个以上,鉴于此,本申请实施例中也可以将“多个”理解为“至少两个”。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的***、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,应该理解到,所揭露的***、装置和方法,可以通过其它的方式实现。例如,该单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个***,或一些特征可以忽略,或不执行。所显示或讨论的相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。该计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行该计算机程序指令时,全部或部分地产生按照本申请实施例的流程或功能。该计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。该计算机指令可以存储在计算机可读存储介质中,或者通过该计算机可读存储介质进行传输。该计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(digital subscriber line,DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。该计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。该可用介质可以是只读存储器(read-onlymemory,ROM),或随机存储存储器(random access memory,RAM),或磁性介质,例如,软盘、硬盘、磁带、磁碟、或光介质,例如,数字通用光盘(digital versatile disc,DVD)、或者半导体介质,例如,固态硬盘(solid state disk,SSD)等。
Claims (11)
1.一种Polar码的译码方法,其特征在于,所述方法包括:
确定Polar码的第一节点到目标叶子节点之间的冻结节点,所述第一节点为中间节点或根节点;
在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的对数似然比LLR,其中,所述第一节点到所述目标叶子节点的PSUM为0;
所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的LLR,包括:
确定源叶子节点与所述目标叶子节点的最低公共父节点LCA,其中,LCA为第一节点;
根据所述LCA的标识和所述目标叶子节点的标识,确定所述标识的非公共部分,所述标识采用二进制表示;
确定所述第一节点到所述目标叶子节点的LLR计算路径为所述标识的非公共部分表示的路径,其中,标识的第一取值表示做F运算,标识的第二取值表示做G运算;
根据所述确定的LLR计算路径,计算所述第一节点到所述目标叶子节点的LLR;
所述确定源叶子节点与所述目标叶子节点的LCA,包括:
计算所述源叶子节点的中序标识与所述目标叶子节点的中序标识的异或结果X;
从所述X的左边开始计算,所述X的最高位1所在比特为k,则将所述源叶子节点的中序标识右移d-k位,将右移后的标识的最低位置1,再左移d-k位,得到所述LCA的中序标识,其中,d为所述Polar码的二叉树的高度。
2.如权利要求1所述的方法,其特征在于,所述根据所述LCA的标识和所述目标叶子节点的标识,确定所述标识的非公共部分,包括:
将所述LCA的标识和所述目标叶子节点的标识左对齐,确定所述目标叶子节点的标识中与所述LCA的标识的非公共部分。
3.如权利要求1或2所述的方法,其特征在于,从所述源叶子节点到所述LCA,任一第二节点的右孩子若是没有经过的节点,则计算所述第二节点的左子树的LLA,所述第二节点的右子树的PSUM结果为0。
4.如权利要求3所述的方法,其特征在于,将所述LCA的标识和所述源叶子节点的标识左对齐,则所述LCA的标识和所述源叶子节点的标识非公共部分中为0的比特对应的第二节点,所述第二节点的右孩子为根的子树的PSUM结果为0。
5.如权利要求1或2所述的方法,其特征在于,从所述LCA到所述目标叶子节点,任一第三节点的左孩子若是没有经过的节点,则不计算所述第三节点的左子树的LLR。
6.如权利要求5所述的方法,其特征在于,将所述LCA的标识和所述目标叶子节点的标识左对齐,则所述LCA的标识和所述目标叶子节点的标识非公共部分中为1的比特对应的第三节点,则不计算所述第三节点的左孩子为根的子树的LLR。
7.一种Polar码的译码装置,其特征在于,所述装置包括:
确定单元,用于确定Polar码的第一节点到目标叶子节点之间的冻结节点,所述第一节点为中间节点或根节点;
计算单元,用于在对所述第一节点进行译码时,计算所述第一节点到所述目标叶子节点的对数似然比LLR,其中,所述第一节点到所述目标叶子节点的PSUM为0;
所述冻结节点为所述Polar码的二叉树的中间的一个或多个节点,所述计算单元具体用于:
确定源叶子节点与所述目标叶子节点的最低公共父节点LCA,其中,LCA为第一节点;
根据所述LCA的标识和所述目标叶子节点的标识,确定所述标识的非公共部分,所述标识采用二进制表示;
确定所述第一节点到所述目标叶子节点的LLR计算路径为所述标识的非公共部分表示的路径,其中,标识的第一取值表示做F运算,标识的第二取值表示做G运算;
根据所述确定的LLR计算路径,计算所述第一节点到所述目标叶子节点的LLR;
所述确定单元具体用于:
计算所述源叶子节点的中序标识与所述目标叶子节点的中序标识的异或结果X;
从所述X的左边开始计算,所述X的最高位1所在比特为k,则将所述源叶子节点的中序标识右移d-k位,将右移后的标识的最低位置1,再左移d-k位,得到所述LCA的中序标识,其中,d为所述Polar码的二叉树的高度。
8.如权利要求7所述的装置,其特征在于,所述确定单元具体用于:
将所述LCA的标识和所述目标叶子节点的标识左对齐,确定所述目标叶子节点的标识中与所述LCA的标识的非公共部分。
9.一种芯片***,该芯片***包括处理器,用于支持终端设备实现权利要求1-6中任一项所述的Polar码的译码方法。
10.一种计算机程序产品,用于当在计算设备上执行时,实现如权利要求1-6中任一项所述的方法。
11.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600879.8A CN111371464B (zh) | 2018-12-26 | 2018-12-26 | 一种Polar码的译码方法及装置、设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811600879.8A CN111371464B (zh) | 2018-12-26 | 2018-12-26 | 一种Polar码的译码方法及装置、设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111371464A CN111371464A (zh) | 2020-07-03 |
CN111371464B true CN111371464B (zh) | 2023-09-08 |
Family
ID=71209820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811600879.8A Active CN111371464B (zh) | 2018-12-26 | 2018-12-26 | 一种Polar码的译码方法及装置、设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111371464B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268460A (zh) * | 2013-06-20 | 2013-08-28 | 北京航空航天大学 | 一种云存储数据完整性验证方法 |
CN105356891A (zh) * | 2015-11-26 | 2016-02-24 | 中国地质大学(武汉) | 一种高资源利用率的极性译码批处理方法 |
CN107248866A (zh) * | 2017-05-31 | 2017-10-13 | 东南大学 | 一种降低极化码译码时延的方法 |
CN107911124A (zh) * | 2017-11-29 | 2018-04-13 | 哈尔滨工业大学 | 一种非递归的sc译码部分和确定方法及装置 |
CN108063649A (zh) * | 2017-12-14 | 2018-05-22 | 东南大学 | 一种低时延低复杂度的极化码译码方法 |
CN108988873A (zh) * | 2017-05-31 | 2018-12-11 | 华为技术有限公司 | 一种Polar码处理方法、译码器和终端 |
-
2018
- 2018-12-26 CN CN201811600879.8A patent/CN111371464B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103268460A (zh) * | 2013-06-20 | 2013-08-28 | 北京航空航天大学 | 一种云存储数据完整性验证方法 |
CN105356891A (zh) * | 2015-11-26 | 2016-02-24 | 中国地质大学(武汉) | 一种高资源利用率的极性译码批处理方法 |
CN107248866A (zh) * | 2017-05-31 | 2017-10-13 | 东南大学 | 一种降低极化码译码时延的方法 |
CN108988873A (zh) * | 2017-05-31 | 2018-12-11 | 华为技术有限公司 | 一种Polar码处理方法、译码器和终端 |
CN107911124A (zh) * | 2017-11-29 | 2018-04-13 | 哈尔滨工业大学 | 一种非递归的sc译码部分和确定方法及装置 |
CN108063649A (zh) * | 2017-12-14 | 2018-05-22 | 东南大学 | 一种低时延低复杂度的极化码译码方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111371464A (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10797826B2 (en) | Polar encoding and rate matching method, apparatus, and device | |
US5432803A (en) | Maximum likelihood convolutional decoder | |
US11025278B2 (en) | Polar coding encoding/decoding method and apparatus | |
CN101635611B (zh) | 一种信道译码方法和装置 | |
CN100517984C (zh) | 用于移动通信***的维特比/涡轮联合译码器 | |
BR112019018177A2 (pt) | Método de codificação/decodificação de código polar e aparelho de codificação/decidificação | |
CN108574494B (zh) | 编译码方法及装置 | |
US20160285476A1 (en) | Method for encoding and decoding of data based on binary reed-solomon codes | |
CN108964671B (zh) | 一种译码方法及译码器 | |
US20120317466A1 (en) | Method and apparatus for data check processing | |
RU2246751C2 (ru) | Высокоскоростной модуль сложения (сравнения) выбора для декодера витерби | |
KR102355082B1 (ko) | 채널 편파 코드의 연속 제거 리스트 디코딩을 위한 효율적인 생존 메모리 아키텍처 | |
CN114598331A (zh) | Polar码的编码方法、编译码方法及装置 | |
Zhang et al. | Spatially coupled split-component codes with iterative algebraic decoding | |
JP7495933B2 (ja) | ソート方法、装置、電子デバイス及びコンピュータプログラム | |
CN111384972B (zh) | 多进制ldpc解码算法的优化方法、装置及解码器 | |
CN111371464B (zh) | 一种Polar码的译码方法及装置、设备 | |
US7404139B2 (en) | Decoder with M-AT-A-Time Traceback | |
CN110380737B (zh) | 一种极化码距离谱分析的方法及装置 | |
CN110022158B (zh) | 一种译码方法及装置 | |
CN110324111B (zh) | 一种译码方法及设备 | |
CN105356893A (zh) | 一种尾码可配置的Viterbi解码方法及解码器 | |
WO2020213152A1 (ja) | 整列処理装置、選別システム、整列処理方法、及び非一時的なコンピュータ可読媒体 | |
CN111404558A (zh) | 一种Polar码译码的方法、译码器及计算机存储介质 | |
CN117713842A (zh) | 译码方法及装置、存储介质及电子装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |