CN112737600B - 译码方法和译码器 - Google Patents
译码方法和译码器 Download PDFInfo
- Publication number
- CN112737600B CN112737600B CN201910972581.8A CN201910972581A CN112737600B CN 112737600 B CN112737600 B CN 112737600B CN 201910972581 A CN201910972581 A CN 201910972581A CN 112737600 B CN112737600 B CN 112737600B
- Authority
- CN
- China
- Prior art keywords
- decoder
- llr
- sequence
- decoding
- sequences
- 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
Abstract
本申请涉及通信技术领域,公开了一种级联译码器及译码方法。其中,级联译码器包括并行译码器和串行译码器,最大T次迭代译码,所述并行译码器用于译码一个或多个长度为N的LLR序列,所述串行译码器用于译码一个或多个长度为NS的LLR序列,NS<N,其中,第t次迭代,包括:所述并行译码器对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出LLR序列;所述串行译码器对L(t)个第三输入LLR序列进行译码得到M(t)条译码路径,每个所述第三输入LLR序列分别包括对应的第二输出LLR序列中Ns个LLR;所述串行译码器确定是否终止迭代。采用上述级联译码器,利用并行译码器提高译码的吞吐率,利用串行译码器改善了并行译码的性能,从而使得译码性能和吞吐率整体得到改善。
Description
技术领域
本申请涉及通信领域,并且更具体地,涉及通信领域中极化码的译码方法和译码器。
背景技术
极化(Polar)码于2008年首次被Arikan提出,并且被证明为可以达到香农极限容量。Polar码的编码主要是基于信道极化理论提出的,信道极化过程主要分为信道组合与信道分解。当信道组合的数目趋于无限大的时候将出现信道极化现象。信道极化现象就是信道容量明显趋于两级,一部分趋于信道容量为1的一极,即无噪信道;而另一部分趋于信道容量为0的一极,即全噪信道。由于信道发生极化,我们就可以合理利用极化特征进行编码,在无噪信道上设定信息位,即传输信息比特;而在全噪信道上设定冻结位,即传输无信息的固定比特,例如0或者1,这些比特也可以称为冻结比特。极化码的译码计算复杂度为O(Nlog2N),其中N为码长。
通常可以用P(N,K)表示码长为N=2n,有K个信息比特的极化码。编码器对信息序列进行Polar编码得到编码后序列/>其中极化码的递归生成过程可以用如下矩阵相乘的形式表示:
其中矩阵是极化矩阵/>的n阶克罗内克积得到的矩阵。
在构造极化码时会选择相对可靠的K个比特用于传输信息比特,也就是上述无噪信道对应的比特,用A来表示该集合;而N-K个相对不可靠的比特的值设为一个固定值,例如设为0或1,这些比特被称为冻结比特,这些比特所在的位置也可以称为固定位,也就是上述全噪信道对应的比特。
现阶段,Polar的主要译码方法包括串行译码方法和并行译码方法,串行译码方法包括:串行抵消(successive cancellation,SC)译码方法,列表串行抵消(successivecancellation list,SCL)译码方法以及循环冗余校验(cyclic redundancy check,CRC)辅助的SCL(CRC aided SCL,CA-SCL)译码方法等,并行译码方法包括:置信传播(BeliefPropagation,BP)/最小和(Min-Sum,MS)类译码方法和深度神经网络(deep neutralnetwork,DNN)等。这些译码方法各有所长,从译码性能看,串行译码方法译码性能较好,但是译码延时较大,译码吞吐率受限;而并行类译码方法并行度高,但译码性能往往和串行译码方法相比存在较大差距。
3GPP选定极化码用于5G增强移动宽带(enhance mobile broadband,eMBB)业务的控制信道编码,低密度奇偶校验(low density parity check,LDPC)用于5G eMBB业务数据信道编码。
需要设计Polar码译码器以更好地满足极化码在通信系统中的实际应用需求。
发明内容
有鉴于此,本申请各实施例提供了用于级联译码的并行译码器,级联译码器以及级联译码的方法,用于改善并行译码的译码性能的同时保持较高吞吐率。本申请实施例还提供了一种多级联译码器,可以进一步降低通信设备中多模译码器的硬件开销。
第一方面,本申请实施例提供了一种用于级联译码的并行译码器,用于对一个或多个长度为Nin的对数似然比LLR序列进行最大S次迭代译码,并在每次迭代中向下一级译码器提供一个或多个长度为Nout的输入LLR序列。所述并行译码器包括:第一阶段更新单元和第二阶段更新单元,对于第s次迭代,
s=1,第一阶段更新单元用于对所述并行译码器的输入LLR序列进行第一阶段更新得到输出LLR序列,所述输出LLR序列用于提供下一级译码器的输入LLR序列,其中,所述并行译码器的输入LLR序列包括Nin个LLR,所述输出LLR序列包括Nin个LLR,所述下一级译码器的输入LLR序列包括所述输出LLR序列中Nout个LLR;
第二阶段更新单元用于获取所述下一级译码器的输出LLR序列,所述下一级译码器的输出LLR序列包括Nout个LLR。
s>1,
所述第二阶段更新单元用于对第二更新输入LLR序列进行第二阶段更新得到第二更新输出LLR序列,所述第二更新输入LLR序列为根据获取的第s-1次迭代中所述下一级译码器的输出LLR序列及其对应的第s-1次迭代中的输出LLR序列得到的序列,包括Nin个LLR;
所述第一阶段更新单元用于对所述第二更新输出LLR序列进行第一阶段更新得到输出LLR序列,所述输出LLR序列用于提供下一级译码器的输入LLR序列。
上述并行译码器可以在级联译码中实现大块长的译码计算,可以适配对小块长译码性能较好的下一级译码器,有助于提高整体译码的吞吐率,并且利用下一级译码器的译码性能。
结合第一方面,在第一种可能的实现方式中,所述第二更新输入LLR序列为将第s-1次迭代中所述输出LLR序列中第(s-2)·Nout+1个LLR至第(s-1)·Nout个LLR替换为第s-1次迭代中所述下一级译码器的输出LLR序列中的Nout个LLR得到的。
结合第一方面及上述任一种可能的实现方式,在第二种可能的实现方式中,所述并行译码器将所述输出LLR序列输出给所述下一级译码器,使得所述下一级译码器根据所述输出LLR序列的第(s-1)·Nout+1个LLR至第s·Nout个LLR获取其输入LLR序列。
结合第一方面及上述任一种可能的实现方式,在第三种可能的实现方式中,所述并行译码器从所述输出LLR序列中确定第(s-1)·Nout+1个LLR至第s·Nout个LLR作为所述下一级译码器的输入LLR序列输出给所述下一级译码器。
结合第一方面或上述任一种可能的实现方式,在第四种可能的实现方式中,所述并行译码器至少包括因子图的第nout+1层至第nin+1层nin-nout个译码层。
结合第四种可能的实现方式,在第五种可能的实现方式中,所述第一阶段更新单元具体用于将所述第nin+1层的N个LLR节点更新为所述输入的LLR序列,并从第nin+1层向第nout+1层方向逐层执行软值更新得到第nout+1层的Nin个LLR节点,所述输出LLR序列包括所述第nout+1层的Nin个LLR节点;所述第二阶段更新单元具体用于将所述第nout+1层的N个LLR节点更新为所述第二更新输入LLR序列,并从第nout+1层向第nin+1层方向逐层执行软值更新得到第nin+1层的Nin个LLR节点,所述第二更新输出LLR序列包括所述第nin+1层的Nin个LLR节点。
结合第一方面或上述任一种可能的实现方式,在第六种可能的实现方式中,所述第一阶段更新单元具体还用于确定所述输入LLR序列对应的LDPC校验矩阵,所述第一阶段更新单元以及所述第二阶段更新单元基于所述LDPC校验矩阵对所述输入LLR序列进行更新。这种方式下,利用LDPC码的计算单元对Polar码进行译码,使得与LDPC码共模译码,节省开销成为可能。
结合第一方面或上述任一种可能的实现方式,在第七种可能的实现方式中,所述第二阶段更新单元还用于向上一级译码器返回译码LLR序列,所述译码LLR序列包括所述第二更新输出序列。
在又一种可能的实现方式中,所述并行译码器包括以下一种或多种:BP译码器或者MS译码器或者DNN译码器。
在又一种可能的实现方式中,Nin取值可以是以下任一:8192,4096,2048,1024,512,256,128,64,32;Nout取值可以为以下任一:1024,512,256,128,64,32,16,8,4,2,1128,64,32,16,8,4,2,1。
第二方面,本申请实施例提供了一种级联译码方法,对输入LLR序列进行最大T次迭代级联译码,其中,第t次迭代包括:
采用并行译码算法对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出LLR序列;
采用串行译码算法对L(t)个第三输入LLR序列进行译码得到M(t)条译码路径;
确定继续迭代,或者,确定终止迭代;
其中,每个第二输入LLR序列的长度为N,每个第二输出LLR序列的长度为N,每个所述第三输入LLR序列分别包括对应的第二输出LLR序列中Ns个LLR。
上述方法利用并行译码算法针对大块长进行并行译码计算,提高译码的吞吐率,并且向下一级串行译码算法提供小块长,利用小块长的串行译码算法改善译码性能,结合了二者的优点,使得译码能同时兼顾吞吐率和译码性能。
结合第二方面,在第二方面的第一种可能的实现方式中,每个所述第三输入LLR序列包括对应的第二输出LLR序列中第(t-1)×NS+1个LLR至第t×NS个LLR。
结合第二方面或第二方面的第一种可能的实现方式,在第二方面的第二种可能的实现方式中,所述采用并行译码算法对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出LLR序列,包括:
采用并行译码算法对所述L(t)个第二输入LLR序列分别进行第一阶段更新得到所述L(t)个第二输出LLR序列。
结合第二方面或上述任一种可能的实现方式,在第二方面的第三种可能的实现方式中,
t=1,L(t)=1,所述第二输入LLR序列为所述级联译码器的输入LLR序列。
结合第二方面或上述任一种可能的实现方式,在第二方面的第四种可能的实现方式中,
t>1,第t-1次迭代译码还包括:
根据所述M(t-1)条译码路径得到M(t-1)个第三输出LLR序列,每个所述第三输出LLR序列包括Ns个LLR。
结合第四种可能的实现方式,在第二方面的第五种可能的实现方式中,
所述第t次迭代还包括:
获取与所述M(t-1)个第三输出LLR序列对应的第t-1次迭代的M(t-1)个第二输出LLR序列;
根据所述M(t-1)个第三输出LLR序列和所述M(t-1)个第t-1次迭代的第二输出LLR序列得到L(t)个第t次迭代的第二更新输入LLR序列,L(t)=M(t-1);
采用所述并行译码算法对所述L(t)个第二更新输入LLR序列进行第二阶段更新得到所述L(t)个第二输入LLR序列。
结合第二方面或上述任一种可能的实现方式,在第二方面的第六种可能的实现方式中,所述并行译码算法包括第ns+1至第n+1层n-ns个译码层,每层包括N个LLR节点;所述第一阶段更新包括:
将所述第n+1层的N个LLR节点更新为所述第二输入LLR序列中的N个LLR,
从所述第n+1层向所述第ns+1层方向执行软值更新得到所述第ns+1层的N个LLR节点,所述对应的第二输出LLR序列包括所述第ns+1层的N个LLR节点;
所述第二阶段更新包括:
将所述第ns+1层的N个LLR节点更新为所述第二更新输入LLR序列中的N个LLR,
从所述第ns+1层向所述第n+1层方向执行软值更新得到所述第n+1层的N个LLR节点,所述对应的第二输入LLR序列包括所述第n+1层的N个LLR节点。
结合第二方面或上述任一种可能的实现方式,在第二方面的第七种可能的实现方式中,采用串行译码算法对所述L(t)个第三输入LLR序列进行译码得到M(t)条译码路径,包括:
对所述L(t)个第三输入LLR序列译码得到L(t)*2k条译码路径,k为正整数;
所述M(t)条译码路径为所述L(t)*2k条译码路径中路径度量最大的M(t)条译码路径,或者,所述M(t)条译码路径为所述L(t)*2k条译码路径中路径度量最大且CRC校验通过的M(t)条译码路径。
结合第二方面,在第二方面的第八种可能的实现方式中,所述采用并行译码算法对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出LLR序列,包括:
对L(t)个所述第二输入LLR序列分别确定对应的LDPC校验矩阵;
基于所述LDPC校验矩阵对L(t)个所述第二输入LLR序列进行译码得到L(t)个第二输出序列。
在上述各可能的实现方式中,所述并行译码算法包括:BP译码算法,MS译码算法,或者DNN译码算法;所述串行译码算法包括:SCL译码算法或者CA-SCL译码算法。
在上述各可能的实现方式中,N取值为以下任一项:1024,512,256,128,64,32;Ns取值为以下任一项:128,64,32,16,8,4,2,1。
结合第二方面或上述任一种可能的实现方式,在第二方面的第九种可能的实现方式中,t<T且第t次迭代不满足提前终止条件,所述第t次迭代还包括:
根据所述M(t)条译码路径得到M(t)个第三输出LLR序列。
结合第二方面或上述任一种可能的实现方式,在第二方面的第十种可能的实现方式中,t=T,或者,第t次迭代满足提前终止条件;所述第t次迭代还包括:
所述串行译码器根据所述M(t)条译码路径得到译码结果,并终止迭代。
在上述各可能的实现方式中,输入LLR序列为信息序列对应的LLR序列,所述信息序列包括多个信息比特,或者一个或多个信息比特和一个或多个冻结比特;所述根据所述M(t)条译码路径得到译码结果,包括:对所述M(t)条译码路径中路径度量值最大或者路径度量值最大且CRC校验成功的1条译码路径进行硬判决,得到所述信息序列中的各信息比特。
第三方面,本申请实施例提供了一种级联译码器,所述级联译码器包括串行译码器,和如第一方面或第一方面任一可能的实现方式的第二并行译码器,其中,Nin=N,Nout=NS,S=T,对输入LLR序列进行最大T次迭代译码,所述第二并行译码器用于对一个或多个长度为N的对数似然比LLR序列进行译码,所述串行译码器用于对一个或多个长度为NS的LLR序列,NS<N,其中,第t次迭代译码,包括:
所述第二并行译码器对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出LLR序列,每个第二输入LLR序列的长度为N,每个第二输出LLR序列长度为N;
所述串行译码器对L(t)个第三输入LLR序列进行译码得到M(t)条译码路径,每个所述第三输入LLR序列分别包括对应的第二输出LLR序列中Ns个LLR;
所述串行译码器确定继续迭代,或者,所述串行译码器确定终止迭代。
上述级联译码器利用并行译码器针对大块长进行并行译码计算,提高译码的吞吐率,并且向串行译码器提供小块长译码,利用小块长的串行译码器改善译码性能,结合了二者的优点,使得译码能同时兼顾吞吐率和译码性能。
结合第三方面,在第三方面的第一种可能的实现方式中,每个所述第三输入LLR序列包括对应的第二输出LLR序列中第(t-1)×NS+1个LLR至第t×NS个LLR。
结合第三方面及第一种可能的实现方式,在第三方面的第二种可能的实现方式中,所述第二并行译码器对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出LLR序列,包括:
所述第二并行译码器对所述L(t)个第二输入LLR序列分别进行第一阶段更新得到所述L(t)个第二输出LLR序列。
结合第三方面或上述任一种可能的实现方式,在第三方面的第三种可能的实现方式中,t=1,L(t)=1,所述第二输入LLR序列为所述级联译码器的输入LLR序列。
结合第三方面或上述任一种可能的实现方式,在第三方面的第四种可能的实现方式中,
t>1,第t-1次迭代译码还包括:
所述串行译码器根据所述M(t-1)条译码路径得到M(t-1)个第三输出LLR序列,每个所述第三输出LLR序列包括Ns个LLR。
结合第三方面的第四种可能的实现方式,在第三方面的第五种可能的实现方式中,所述第t次迭代还包括:
所述第二并行译码器获取与所述M(t-1)个第三输出LLR序列对应的第t-1次迭代的M(t-1)个第二输出LLR序列;
所述第二并行译码器根据所述M(t-1)个第三输出LLR序列和所述M(t-1)个第t-1次迭代的第二输出LLR序列得到L(t)个第t次迭代的第二更新输入LLR序列,L(t)=M(t-1);
所述第二并行译码器对所述L(t)个第二更新输入LLR序列进行第二阶段更新得到所述L(t)个第二输入LLR序列。
结合第三方面的第五种可能的实现方式,在第三方面的第六种可能的实现方式中,所述第二并行译码器至少包括第ns+1至第n+1层n-ns个译码层,每层包括N个LLR节点;
所述第二并行译码器对每个第二输入LLR序列进行第一阶段更新得到对应的第二输出LLR序列,包括:
所述第二并行译码器将所述第n+1层的N个LLR节点更新为所述第二输入LLR序列中的N个LLR,
所述第二并行译码器从所述第n+1层向所述第ns+1层方向执行软值更新得到所述第ns+1层的N个LLR节点,所述对应的第二输出LLR序列包括所述第ns+1层的N个LLR节点;
所述第二并行译码器对每个第二更新输入LLR序列进行第二阶段更新得到对应的第二输入LLR序列,包括:
所述第二并行译码器将所述第ns+1层的N个LLR节点更新为所述第二更新输入LLR序列中的N个LLR,
所述第二并行译码器从所述第ns+1层向所述第n+1层方向执行软值更新得到所述第n+1层的N个LLR节点,所述对应的第二输入LLR序列包括所述第n+1层的N个LLR节点。
结合第三方面或上述任一种可能的实现方式,在第三方面的第七种可能的实现方式中,所述串行译码器对所述L(t)个第三输入LLR序列进行译码得到M(t)条译码路径,包括:
所述串行译码器对所述L(t)个第三输入LLR序列译码得到L(t)*2k条译码路径,k为正整数;
所述M(t)条译码路径为所述L(t)*2k条译码路径中路径度量最大的M(t)条译码路径,或者,所述M(t)条译码路径为所述L(t)*2k条译码路径中路径度量最大且CRC校验通过的M(t)条译码路径。
结合第三方面或上述任一种可能的实现方式,在第三方面的第八种可能的实现方式中,所述第二并行译码器用于对L(t)个所述第二输入LLR序列分别确定对应的LDPC校验矩阵;
所述第二并行译码器基于所述LDPC校验矩阵对L(t)个所述第二输入LLR序列进行译码得到L(t)个第二输出序列。
结合第三方面或上述任一种可能的实现方式,在第三方面的第九种可能的实现方式中,所述第二并行译码器包括以下一种或多种:BP译码器或者MS译码器或者DNN译码器,所述串行译码器包括SCL译码器或者CA-SCL译码器。
结合第三方面或上述任一种可能的实现方式,在第三方面的第十种可能的实现方式中,N取值为以下任一项:1024,512,256,128,64,32;Ns取值为以下任一项:128,64,32,16,8,4,2,1。
结合第三方面或上述任一种可能的实现方式,在又一种可能的实现方式中,所述串行译码器确定继续迭代,包括:
所述串行译码器确定t<T且第t次迭代不满足提前终止条件;
所述第t次迭代还包括:
所述串行译码器根据所述M(t)条译码路径得到M(t)个第三输出LLR序列。
结合第三方面或上述任一种可能的实现方式,在又一种可能的实现方式中,所述串行译码器确定终止迭代,包括:
所述串行译码器确定t=T,或者,第t次迭代满足提前终止条件;
所述第t次迭代还包括:
所述串行译码器根据所述M(t)条译码路径得到译码结果,并终止迭代。
其中,所述级联译码器的输入LLR序列为信息序列对应的LLR序列,所述串行译码器对所述M(t)条译码路径中路径度量值最大或者路径度量值最大且CRC校验成功的1条译码路径进行硬判决,得到所述信息序列中的各信息比特。
第四方面,本申请实施例提供了一种多级联译码方法,包括两级迭代译码,其中第1级迭代译码对初始LLR序列进行最大I次迭代,I=Np/N,第2级迭代为如第二方面或第二方面任一可能实现方式的级联译码迭代,最大迭代次数为T,第i次迭代,i<I,包括:
采用第一并行译码算法对K(i)个第一输入LLR序列进行第1级迭代译码得到K(i)个第一输出LLR序列,每个第一输入LLR序列的长度为Np,每个第一输出LLR序列的长度为Np;
采用如第二方面或第二方面任一可能实现方式对K(i)个第二输入LLR序列进行第2级迭代译码,每个所述第二输入LLR序列分别包括对应的第一输出LLR序列中的N个LLR。
由于LDPC码通常采用并行译码算法译码,多级联译码方法还可以进一步共用LDPC码的一部分并行译码单元,节省系统开销。
结合第四方面,在第四方面的第一种可能的实现方式中,每个所述第二输入LLR序列包括对应的所述第一输出LLR序列中第(i-1)×N+1个LLR至第i×N个LLR。
结合第四方面或第第四面的第一种可能的实现方式,在第四五方面的第二种可能的实现方式中,所述采用第一并行译码算法对所述K(i)个第一输入LLR序列进行译码得到K(i)个第一输出LLR序列,包括:
所述第一并行译码算法对所述K(i)第一输入LLR序列分别进行第一阶段更新得到所述K(i)个第一输出LLR序列。
其中,i=1,K(i)=1,所述第一输入LLR序列为初始LLR序列。
i>1,第i-1次迭代译码还包括:
获取M(i-1,t)个第二译码LLR序列,所述第二译码LLR序列包括N个LLR。
所述第i次迭代还包括:
获取与所述第i-1次迭代的M(i-1,t)个第二译码LLR序列对应的第i-1次迭代的M(i-1,t)个第一输出LLR序列;
根据所述M(i-1,t)个第二译码LLR序列和所述M(i-1,t)个第i-1次迭代的第一输出LLR序列得到K(i)个第i次迭代的第二更新输入LLR序列,K(i)=M(i-1,t);
采用所述第一并行译码算法对所述K(i)个第二更新输入LLR序列进行第二阶段更新得到所述L(i,1)个第一输入LLR序列。
在又一种可能的实现方式中,所述第一并行译码算法至少包括第n+1至第np+1层np-n个译码层,每层包括Np个LLR节点;
所述采用所述第一并行译码算法对每个第一输入LLR序列进行第一阶段更新得到对应的第一输出LLR序列,包括:
将所述第np+1层的Np个LLR节点更新为所述第一输入LLR序列中的Np个LLR,
从所述第np+1层向所述第n+1层方向执行软值更新得到所述第n+1层的Np个LLR节点,所述对应的第一输出LLR序列包括所述第n+1层的Np个LLR节点;
所述采用所述第一并行译码算法对每个第二更新输入LLR序列进行第二阶段更新得到对应的第一输入LLR序列,包括:
将所述第n+1层的Np个LLR节点更新为所述第二更新输入LLR序列中的Np个LLR,
从所述第n+1层向所述第np+1层方向执行软值更新得到所述第np+1层的Np个LLR节点,所述对应的第一输入LLR序列包括所述第np+1层的Np个LLR节点。
在又一种可能的实现方式中,t<T且第t次迭代不满足提前终止条件,所述级联译码方法的第t次迭代包括:根据所述M(i,t)条译码路径得到M(i,t)个第三输出LLR序列。
在又一种可能的实现方式中,t=T或者第2级迭代满足提前终止条件,且,i<I且第i次第1级迭代不满足提前终止条件,所述级联译码方法的第t次迭代包括:
根据所述M(i,t)条译码路径得到M(i,t)个第三输出LLR序列。
获取与所述M(i,t)个第三输出LLR序列对应的第t次迭代的M(i,t)个第二输出LLR序列;
根据所述M(i,t)个第三输出LLR序列和所述M(i,t)个第t次迭代的第二输出LLR序列得到M(i,t)个第t次迭代的第二更新输入LLR序列;
对所述M(i,t)个第二更新输入LLR序列进行第二阶段更新得到M(i,t)个第二译码LLR序列。
在又一种可能的实现方式中,i=I,且t=T,或者,第t次迭代满足第2级迭代的提前终止条件且第i次满足第1级迭代提前终止条件,所述级联译码方法的第t次迭代包括:
根据所述M(i,t)条译码路径得到译码结果,并终止迭代。
在又一种可能的实现方式中,所述第一并行译码器算法括以下一种或多种:BP译码算法,或者MS译码算法或者DNN译码算法。
在又一种可能的实现方式中,Np取值包括以下任一:8192,4096,2048,1024,512,256,128。
第五方面,本申请实施例提供了一种多级联译码器,包括如第一方面或者第一方面任一可能的实现方式的第一并行译码器,其中,Nin=Np,Nout=N,S=I,以及第三方面或第三方面第一至第十种任一可能的实现方式的级联译码器。所述级联译码器为所述第一并行译码器的下级译码器,所述第一并行译码器用于对一个或多个长度为Np的LLR序列进行译码,所述第一并行译码器对初始LLR序列进行最大I次迭代,I=Np/N,第i次迭代,i<I,包括:
所述第一并行译码器对K(i)个第一输入LLR序列进行第1级迭代译码得到K(i)个第一输出LLR序列,每个第一输入LLR序列的长度为Np,每个第一输出LLR序列的长度为Np;
所述级联译码器对K(i)个第二输入LLR序列进行第2级迭代译码,每个所述第二输入LLR序列分别包括对应的第一输出LLR序列中的N个LLR。
由于LDPC译码器通常采用并行译码算法译码,多级联译码器还可以进一步共用LDPC译码器的一部分并行译码单元,节省系统开销。
结合第五方面,在第五方面的第一种可能的实现方式中,每个所述第二输入LLR序列包括对应的所述第一输出LLR序列中第(i-1)×N+1个LLR至第i×N个LLR。
结合第五方面或第五方面的第一种可能的实现方式,在第五方面的第二种可能的实现方式中,所述第一并行译码器对所述K(i)个第一输入LLR序列进行译码得到K(i)个第一输出LLR序列,包括:
所述第一并行译码器对所述K(i)第一输入LLR序列分别进行第一阶段更新得到所述K(i)个第一输出LLR序列。
其中,i=1,K(i)=1,所述第一输入LLR序列为初始LLR序列。
i>1,第i-1次迭代译码还包括:
所述级联译码器向所述第一并行译码器输出M(i-1,t)个第二译码LLR序列,所述第二译码LLR序列包括N个LLR。
所述第i次迭代还包括:
所述第一并行译码器获取与所述第i-1次迭代的M(i-1,t)个第二译码LLR序列对应的第i-1次迭代的M(i-1,t)个第一输出LLR序列;
所述第一并行译码器根据所述M(i-1,t)个第二译码LLR序列和所述M(i-1,t)个第i-1次迭代的第一输出LLR序列得到K(i)个第i次迭代的第二更新输入LLR序列,K(i)=M(i-1,t);
所述第一并行译码器对所述K(i)个第二更新输入LLR序列进行第二阶段更新得到所述L(i,1)个第一输入LLR序列。
在又一种可能的实现方式中,所述第一并行译码器至少包括第n+1至第np+1层np-n个译码层,每层包括Np个LLR节点;
所述第一并行译码器对每个第一输入LLR序列进行第一阶段更新得到对应的第一输出LLR序列,包括:
所述第一并行译码器将所述第np+1层的Np个LLR节点更新为所述第一输入LLR序列中的Np个LLR,
所述第一并行译码器从所述第np+1层向所述第n+1层方向执行软值更新得到所述第n+1层的Np个LLR节点,所述对应的第一输出LLR序列包括所述第n+1层的Np个LLR节点;
所述第一并行译码器对每个第二更新输入LLR序列进行第二阶段更新得到对应的第一输入LLR序列,包括:
所述第一并行译码器将所述第n+1层的Np个LLR节点更新为所述第二更新输入LLR序列中的Np个LLR,
所述第一并行译码器从所述第n+1层向所述第np+1层方向执行软值更新得到所述第np+1层的Np个LLR节点,所述对应的第一输入LLR序列包括所述第np+1层的Np个LLR节点。
在又一种可能的实现方式中,所述串行译码器确定t<T且第t次迭代不满足提前终止条件,所述级联译码器的第t次迭代包括:所述串行译码器根据所述M(i,t)条译码路径得到M(i,t)个第三输出LLR序列。
在又一种可能的实现方式中,所述串行译码器确定t=T或者第2级迭代满足提前终止条件,且,i<I且第i次第1级迭代不满足所述多级联译码器提前终止条件,所述级联译码器的第t次迭代包括:
所述串行译码器根据所述M(i,t)条译码路径得到M(i,t)个第三输出LLR序列。
所述第二并行译码器获取与所述M(i,t)个第三输出LLR序列对应的第t次迭代的M(i,t)个第二输出LLR序列;
所述第二并行译码器根据所述M(i,t)个第三输出LLR序列和所述M(i,t)个第t次迭代的第二输出LLR序列得到M(i,t)个第t次迭代的第二更新输入LLR序列;
所述第二并行译码器对所述M(i,t)个第二更新输入LLR序列进行第二阶段更新得到M(i,t)个第二译码LLR序列;
所述第二并行译码器向所述第一并行译码器输出所述M(i,t)个第二译码LLR序列。
在又一种可能的实现方式中,所述串行译码器确定i=I,且t=T,或者,第t次迭代满足所述级联译码器的提前终止条件且第i次第1级迭代满足所述多级联译码器提前终止条件,所述级联译码器的第t次迭代包括:
所述串行译码器根据所述M(i,t)条译码路径得到译码结果,并终止迭代。
在又一种可能的实现方式中,所述第一并行译码器包括以下一种或多种:BP译码器或者MS译码器或者DNN译码器。
在又一种可能的实现方式中,Np取值包括以下任一:8192,4096,2048,1024,512,256,128。
第六方面,本申请实施例提供了一种译码装置,该装置具有实现上述第二方面和第四方面的任一种可能的设计中所述的方法的功能。所述功能可以通过硬件实现,也可以通过硬件执行相应的软件实现。所述硬件或软件包括一个或多个与上述功能相对应的模块或单元。
在一个可能的设计中,当所述功能的部分或全部通过硬件实现时,所述译码装置包括:输入接口电路,用于获取待译码比特序列对应的LLR序列;逻辑电路,用于执行上述第二方面或第四方面或上述两方面的任一种可能的设计中所述的方法;输出接口电路,用于输出信息比特。
可选的,所述译码装置可以是芯片或者集成电路。
在一个可能的设计中,当所述功能的部分或全部通过软件实现时,所述译码装置包括:存储器,用于存储程序;处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述译码装置可以实现如上述第二方面或第四方面或上述两方面的任一种可能的设计中所述的方法。
可选的,上述存储器可以是物理上独立的单元,也可以与处理器集成在一起。
在一个可能的设计中,当所述功能的部分或全部通过软件实现时,所述译码装置包括处理器。用于存储程序的存储器位于所述译码装置之外,处理器通过电路/电线与存储器连接,用于读取并执行所述存储器中存储的程序。
在一个可能的设计中,第六方面提供的通信装置,包括处理器和收发组件,该处理器和收发组件可用于实现上述编码或者译码方法中各部分的功能。在该设计中,如果该通信装置是终端、基站或者其他网络设备,其收发组件可以是收发机,如果该通信装置是基带芯片或基带单板,其收发组件可以是基带芯片或基带单板的输入/输出电路,用于实现输入/输出信号的接收/发送。所述通信装置可选的还可以包括存储器,用于存储数据和/或指令。
第七方面,本申请实施例提供一种网络设备,包括如如上述第一方面或第三方面或第五方面的任一种可能的译码器,或者第六方面的译码装置。
第八方面,本申请实施例提供一种终端设备,包括如如上述第一方面或第三方面或第五方面的任一种可能的译码器,或者第六方面的译码装置。
第九方面,本申请实施例提供一种通信系统,该通信系统包括如第七方面的网络设备和第八方面的终端设备。
第十方面,本申请实施例提供一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述第二方面或第四方面的任一种可能的设计所述的方法的指令。
第十一方面,提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第二方面或第四方面的任一种可能的设计所述的方法。
附图说明
图1为本申请提供的通信系统的架构图;
图2a为本申请提供的一种SCL译码算法的译码路径示意图;
图2b为本申请提供的一种SCL译码算法的译码路径示意图;
图3a为本申请提供的一种并行译码算法的基本处理单元的示意图;
图3b为本申请提供的一种并行译码算法蝶形网络迭代计算的示意图;
图3c为本申请提供的一种DNN译码算法的迭代运算单元的示意图;
图4为本申请实施例提供的一个LDPC码Tanner图示例;
图5为本申请实施例提供的一种并行译码器的结构示意图;
图6为本申请实施例提供的一种级联译码器的结构示意图;
图7为本申请实施例提供的一种级联译码方法的流程图;
图8为本申请实施例提供的一种多级联译码器的结构示意图;
图9为本申请实施例提供的一种级联译码方法的流程图;
图10为本申请实施提供的级联译码方法和其他译码算法的译码性能图;
具体实施方式
本申请实施例可以应用于各种采用Polar编码的领域,例如:数据存储领域、光网络通信领域,无线通信领域等等。其中,本申请实施例涉及的无线通信系统包括但不限于:全球移动通信(global system for mobile communications,GSM)系统、码分多址(codedivision multiple access,CDMA)系统、宽带码分多址(wideband code divisionmultiple access,WCDMA)系统、通用分组无线业务(general packet radio service,GPRS)、长期演进(long term evolution,LTE)系统、LTE频分双工(frequency divisionduplex,FDD)系统、LTE时分双工(time division duplex,TDD)、通用移动通信系统(universal mobile telecommunication system,UMTS)、全球互联微波接入(worldwideinteroperability for microwave access,WiMAX)通信系统、未来的第五代(5thgeneration,5G)系统或新无线(new radio,NR),车到其它设备(Vehicle-to-X V2X),其中V2X可以包括车到互联网(vehicle to network,V2N)、车到车(vehicle to-Vehicle,V2V)、车到基础设施(vehicle to infrastructure,V2I)、车到行人(vehicle to pedestrian,V2P)等、车间通信长期演进技术(Long Term Evolution-Vehicle,LTE-V)、车联网、机器类通信(machine type communication,MTC)、物联网(Internet of Things,IoT)、机器间通信长期演进技术(Long Term Evolution-Machine,LTE-M),机器到机器(Machine toMachine,M2M)等。当然,采用Polar编码的领域还可以为其它,本申请对此不作具体限定。
本申请涉及的通信装置可以是芯片(如基带芯片,或者数据信号处理芯片,或者通用芯片等等),终端,基站,或者其他网络设备。其中,终端是一种具有通信功能的设备,可以经无线接入网(Radio Access Network,RAN)与一个或多个核心网进行通信。终端可以包括具有无线通信功能的手持设备、车载设备、可穿戴设备、计算设备或连接到无线调制解调器的其它处理设备等。在不同的网络中终端可以叫做不同的名称,例如:用户设备(userequipment,UE),移动台(Mobile Station,MS),用户单元,站台,蜂窝电话,个人数字助理,无线调制解调器,无线通信设备,手持设备,膝上型电脑,无绳电话,无线本地环路台等。为描述方便,本申请中简称为终端。基站(base station,BS),也可称为基站设备,是一种部署在无线接入网用以提供无线通信功能的设备。在不同的无线接入系统中基站的叫法可能有所不同,例如在而在通用移动通讯系统(Universal Mobile Telecommunications System,UMTS)网络中基站称为节点B(NodeB),而在LTE网络中的基站称为演进的节点B(evolvedNodeB,eNB或者eNodeB),在新空口(new radio,NR)网络中的基站称为收发点(transmission reception point,TRP)或者下一代节点B(generation nodeB,gNB),或者,基站也可以为中继站、接入点、车载设备、可穿戴设备以及未来演进的公共陆地移动网络(Public Land Mobile Network,PLMN)中的网络设备,或者其他各种演进网络中的基站也可能采用其他叫法。本发明并不限于此。
图1为本申请提供的通信系统的架构图。需要说明的是,图1只是以示例的形式示意一种通信系统的架构图,并非对通信系统的架构图的限定。
请参见图1,包括通信装置101和通信装置102。为了方便描述,本文以通信装置101发送信号,做为发送端装置,通信装置102接收信号,做为接收端装置为例进行说明。当然,通信装置102也可以向通信装置101发送信息,通信装置101相应地接收信号,则通信装置102为发送端装置,通信装置101为接收端装置。本发明实施例并不限于此。发送端装置包括编码器,接收端装置包括译码器,由于通信装置既可以为发送端装置,也可以为接收端装置,因此可以包括编码器和译码器。
通信装置101可以对要发送的信息序列如控制信道上传输的信令等,进行polar编码并输出编码后序列/>编码后序列/>经过速率匹配、交织以及调制后在控制信道上传输至通信装置102。通信装置102对接收到的信号进行解调等处理,得到对数似然比(Likelihood Rate,LLR)序列/>LLR序列/>中包括的LLR软值的个数与信息序列中包括的比特个数相同,都是N个,也可以说其长度为N,N为大于0的正整数。通信装置102根据接收到的LLR序列进行Polar译码。其中,不管通信装置101发比特1还是比特0,通信装置102都可能误判。对于信号r,在接收端装置正确判为0的概率p(r|b=0)与正确判为1的概率p(r|b=1)]的比值就是似然比。为了方便计算处理,对似然比取自然对数,则可以得到对数似然比,也即LLR=ln[p(r|b=0)/p(r|b=1)]。LLR可以是浮点数。
下面对几种译码算法进行描述。
一、串行译码算法
串行译码算法主要包括SC译码算法和SCL译码算法,其中基于SCL译码算法有多种改进的译码算法,例如增加了CRC校验的CA-SCL算法等。
信息序列包括信息比特和冻结比特,Polar编码后通过信道WN发送,输出/>其转移概率为/>SC译码器按顺序从第一个(i=1)至最后一个(i=N)对信息序列中各比特ui相关的LLR值进行判决得到其估计值/>其中,信息比特的索引集合为A,冻结比特的索引集合为Ac。如果i∈Ac,则ui为冻结比特,取值是已知的,例如,固定为0或1,因此可以直接判决/>并且将该比特的判决结果用于下一个比特ui+1的判决;如果i∈A,则ui为信息比特,需要在获取到该比特之前的各比特判决结果/>之后,译码LLR为/>并且对该LLR进行硬判决得到判决结果/>并且将该比特的判决结果用于下一个比特ui+1的判决。上述极化码的判决函数如下:
其中硬判决函数可以表示如下:
为ui对应的译码LLR,定义如下:
是信道WN的序号为i的极化子信道,/>是/>的转移概率函数,表示通过极化子信道/>发送信息比特ui得到输出/>和/>的概率,可通过递归计算得到:
其中,sign(L1,L2)表示L1和L2的符号乘积,|x|表示对x取绝对值,min(x,y,…)表示对括号中的数值取最小值。在公式(5)中
其中,是序列/>中索引为奇数的元素构成的子序列,/>是序列/>中索引为偶数的元素构成的子序列。
可见,长度为N的LLR序列可以缩减为两个长度为N/2的LLR序列进行计算,而根据上述递归过程递推,可以通过多次递减为长度为1的LLR序列进行计算,即对1个LLR软值进行计算。例如:N=8,则第一递归过程可以缩减为两个长度为4的LLR序列计算,而对于每个长度为4的LLR序列,又可以根据上述递归过程,分别缩减成2个长度为2的LLR序列,共4个长度为2的LLR序列计算,进一步递归,缩减成8个长度为1的LLR序列。对于1个LLR软值的计算可以根据下述公式得到:
SC译码过程可以被描述为在一颗码树上进行深度优先的搜索过程,如图2a所示为一个码树的示例,码长N=4,对应一颗深度为N的满二叉树,每一层都分别对应一个信息比特或冻结比特,每个父节点与两个子节点间的两条边,分别被标记为0路径与1路径,共可以扩展2N条路径。SC译码器从根节点u1开始译码,每次根据当前比特的判决结果选择0路径或1路径,到达叶节点后,N个比特判决结束,SC译码器在码树中的路径即是译码结果,如图2a所示,SC译码结果为
SC译码算法在每个节点都根据当前判决结果选择0路径或1路径,每一步都是局部最优的选择。若某一个比特判决错误,之后就会一直沿着该路径拓展下去,当前的错误是无法纠正的,且当前的错误会影响到后续的译码过程。SCL译码算法将SC译码算法中硬判决改为了软判决,即将判决为0或1的L条路径保留下来,其中L为搜索宽度。对于每次路径扩展都要计算路径度量值(path metric,PM)。PM为一条路径所对应的译码序列的概率,常用对数形式表示如下:
每次路径扩展,SCL译码算法对PM值进行排序,输出PM值最大的L条译码路径,在最后一个比特时,选取PM值最大的一条路径作为译码输出录入。
PM的计算过程如下:
若ui为信息比特或正确的冻结比特,且则路径度量值的计算如下:
若ui为信息比特或正确的冻结比特,且则路径度量值的计算如下:
/>
其中的计算与SC译码算法相同。若ui为冻结比特,且取值错误,则路径度量值的计算如下:/>
CA-SCL译码算法是对SCL译码算法的优化,在信息序列中引入CRC,通过CRC辅助判决,选择CRC校验通过且PM值排序最大的路径。在CA-SCL译码算法中,码树中从根节点到任何一个节点所形成的路径,均对应一个路径度量值;每次进行路径扩展时,选择当前层中路径度量值最大的L条路径。到达叶节点后,按度量值从小到大的顺序输出L条路径对应的译码序列,构成候选译码序列集合。对候选译码序列进行CRC校验,选出能通过CRC校验的路径度量值最大的路径作为最后的译码结果。
如图2b为一个码长N=4,L=2的SCL译码算法的路径搜索过程。最终在两条译码路径{0011}和{1000}中输出路径度量值最大的一条路径作为最后的译码结果。如果是采用CA-SCL译码算法,则是在两条译码路径中输出CRC校验通过且路径度量值最大的一条路径作为最后的译码结果。
串行译码算法的译码性能虽然较好,但其译码过程是串行的,无法满足通信系统的吞吐率需求。
二、并行译码算法
并行译码算法包括BP译码算法,MS译码算法以及DNN译码算法等。可以用于Polar码译码,也可以用于LDPC码译码。
1.针对Polar码的并行译码算法是在基于生成矩阵G的因子图进行译码的。下面以BP译码算法为例介绍。
对于P=(N,K)的Polar码,其因子图一般包括n+1层译码层,每层N个节点,总共N×(n+1)个节点构成,n=log2N,其中每层有N/2个基本处理单元PE(process element,PE),如图3a所示,为一个基本处理单元的示意图,包括两个输入变量和两个输出变量,每个节点(i,j)包含有两种信息,从左向右传递的信息,即右信息从右向左传递的信息,左信息其中,j表示层编号,j=1,2,...,n+1,i表示每层中节点的序号,i=1,2,…,N。通常最左边一层,也就是j=1,第1层各节点代表的是信息序列/>中的各个比特u1,u2,…,uN,最右边一层,也就是j=n+1,第n+1层各节点代表的是/>中的各个LLR软值y1,y2,…,yN。
一般将从左向右,也就是从第1层至第n+1层方向逐层传递信息,称为右运算R运算,从右向左,也就是第n+1层至第1层方向逐层传递信息称为左运算L运算。需要说明的是,有时也将逐层传递信息称为信息更新过程。其中,和/>均为LLR,其中t为迭代次数,0≤t≤T,T为BP译码算法最大迭代次数,图3a中输出节点的计算公式如下:
/>
如图3b所示,为对码长N=8的Polar码采用BP译码算法译码过程中其中一次迭代的流程示意图。j表示运算更新的译码层数,总共有log28+1=4层,i表示每层中节点的序号。其中,基本处理单元在图中表示为蝶形运算单元,例如:连接节点(1,1),(1,2),(2,1)和(2,2)的蝶形单元,连接节点(2,2),(2,3),(4,2)和(4,3)的蝶形单元,连接节点(4,3),(4,4),(8,3)和(8,4)的蝶形单元等。BP译码每次迭代先从右往左逐层做LLR L运算更新,到达最左端后,再逐层进行LLR R运算更新,当全部节点都访问一次后,则完成一次迭代运算。每次迭代完成后,将对应信息比特的LLR值进行硬判决并校验CRC,如果CRC通过或者达到最大迭代次数则停止迭代,反之则继续迭代。
从蝶形网络可以发现,第n+1层至第n层更新后,长度为N的LLR序列可以视为缩减为两个长度为N/2的LLR子序列分别进行下一层更新,每往左进行一层更新,LLR子序列的长度可以缩减为前一层的一半。对于第j层,可以视为2n+1-j个长度为2j-1的LLR子序列。
MS译码算法迭代过程和BP译码算法迭代过程类似,下文不区分单独描述,通称为BP/MS译码算法。
DNN的节点更新过程可以模拟BP/MS译码算法中一次或多次迭代的节点更新过程,还可以在更新过程中对每条边赋予不同的权重,以提高译码性能。采用DNN实现Polar译码时,可以仿照BP/MS译码算法结构。如图3c所示,为DNN译码算法的架构,将蝶形单元网络从右往左的L运算和从左往右的R运算级联起来,形成一个迭代运算单元,将T的迭代运算单元级联起来,则可以完成对应T次迭代的DNN译码。
2.针对LDPC码的并行译码算法是基于校验矩阵进行译码的。
针对LDPC码的并行译码算法也可以分为两个阶段更新,对应与Polar码因子图并行译码算法中的L运算和R运算。其中,根据校验矩阵从上往下逐行计算,传递信息对应于Polar码因子图并行译码算法中的L运算;根据校验矩阵从下往上逐行计算,传递信息,对应于Polar码因子图并行译码算法中的R运算。由于LDPC矩阵支持行列交换且不改变其译码性质,所以也可以是对校验矩阵从下往上逐行计算对应R运算,从上往下逐行计算对应L运算。
其中,LDPC校验矩阵可以与Tanner图对应,比如,LDPC码校验矩阵和其对应校验方程的一个示例为:
其中,“+”表示模2加。
该校验矩阵对应的Tanner图可以表示如图4所示,图4中的每个圆形节点为变量节点,代表校验矩阵H中的一列,每个方形节点为校验节点,代表校验矩阵H中的一行,图4中的每条连接校验节点和变量节点的边代表这两个节点所对应的行与列交汇的位置存在一个非零元素。
具体计算时,也可采用BP/MS一类的译码算法,对于BP,其译码公式可写作:
对于MS,其译码公式可写作:
公式中,Rij表示第j个变量节点需要更新的LLR,Qji表示其他变量节点传递给当前校验节点的LLR。
并行译码算法的吞吐率虽然高,但是译码性能较差,和串行译码算法的性能有较大差距。
通信系统对译码提出了较高的性能要求和吞吐率要求,同时由于5G通信系统中要求既能支持Polar译码,也能支持LDPC编码和译码,降低译码器的开销也是一个需要解决的问题。
图5为本申请实施例提供的一种用于级联译码的并行译码器500的结构示意图,用于对一个或多个长度为Nin的对数似然比LLR序列进行译码,并向下一级译码器提供一个或多个长度为Nout的输入LLR序列。其中,Nin和Nout均为整数,Nout<Nin。通常Nout和Nin一般均为2的幂次方,例如:Nin取值可以是以下任一:8192,4096,2048,1024,512,256,128,64,32,而Nout可以取值为以下任一:1024,512,256,128,64,32,16,8,4,2,1128,64,32,16,8,4,2,1。
可以用并行译码器(Nin,Nout)表示并行译码器500的译码输入LLR序列和向下一级提供的输入LLR序列的长度,例如,并行译码器(1024,64)表示译码输入LLR序列的长度为1024,向下一级提供的输入LLR序列的长度为64的并行译码器;并行译码器(8192,512)表示译码输入LLR序列的长度为8192,向下一级提供的输入LLR序列的长度为512的并行译码器。需要说明的是,此处仅为举例,并不限于上述举例。
其中,并行译码器500可以根据前述任一并行译码算法对译码输入LLR序列进行信息更新,其输出LLR序列和译码输入LLR序列的长度通常相等,都为Nin。并行译码器500向下一级译码器提供的长度为Nout的输入LLR序列,可以是由并行译码器500在其长度为Nin的输出LLR序列中确定出Nout个LLR作为下一级译码器的输入LLR序列,也可以是由下一级译码器根据并行译码器500长度为Nin的输出LLR序列中确定出Nout个LLR作为下一级译码器的输入LLR序列,本申请实施例对此不做限制。若进行多次迭代译码,在一种可能的实现方式中,对于第s次迭代译码,下一级译码器的输入LLR序列包括输出LLR序列中第(s-1)×Nout+1个LLR至第s×Nout个LLR。在这种方式下,最大迭代次数为Nin/Nout。
由于并行译码器500向下一级译码器提供的LLR序列是其输出LLR序列的一部分,因此译码过程上也进行相应地调整。
如图5所示:并行译码器500可以包括第一阶段更新单元510和第二阶段更新单元520。其中,对于第s次迭代,0<s≤S,S为最大迭代次数:
第一阶段更新单元510可以用于对并行译码器500的译码输入LLR序列进行第一阶段更新得到并行译码器500的输出LLR序列/>所述输出LLR序列/>用于提供下一级译码器的输入LLR序列/>
s=1,第一阶段更新单元510的输入LLR序列为并行译码器500的译码输入LLR序列。
s>1时,
第二阶段更新单元520可以用于:
根据第s-1次迭代中下一级译码器的输出LLR序列以及并行译码器500的输出LLR序列/>得到第s次迭代的第二更新输入LLR序列/>
对第s次迭代的第二更新输入LLR序列进行第二阶段更新得到第二更新输出LLR序列/>
其中,第二更新输入LLR序列为将/>中第(s-2)·Nout+1个LLR至第(s-1)·Nout个LLR替换为/>中的Nout个LLR得到的LLR序列。
第一阶段更新单元510的输入LLR序列是从第二阶段更新单元520获取的第二更新输出LLR序列,第一阶段更新单元510可以用于对作为其输入的LLR序列进行第一阶段更新得到并行译码器500的输出LLR序列/>所述输出LLR序列用于提供下一级译码器的输入LLR序列。
对于码长为N的Polar码,其因子图为n+1层,N通常为2的幂次方,则n=log2N。并行译码器的输入长度为Nin,则并行译码器500的译码最大层数可以为nin+1层,nin=log2Nin。并行译码器500向下一级译码器提供的输入序列长度为Nout,在并行译码器500的第nout+1层可以得到/>个长度为Nout的LLR子序列,其中/>Nout通常也为2的幂次方,则nout=log2Nout。并行译码器500可以至少包括第nout+1层至第nin+1层译码层。
对于第s次迭代,第nin+1层的Nin个LLR赋值为LLR序列第nout+1层的Nin个LLR记为LLR序列/>
第一阶段更新单元510可以对其输入的LLR序列从第nin+1层开始执行软值更新得到第nout+1层的Nin个LLR节点,将第nout+1层的Nin个LLR节点作为输出LLR序列
在一种可能的实现方式中,第一阶段更新单元510获取作为输入的LLR序列第nin+1层的Nin个LLR节点为该LLR序列中的Nin个LLR,第一阶段更新包括从第nin+1层向第nout+1层方向的nin-nout次LLR软值更新,从第nin+1层向第nout+1层方向更新的计算公式可以参考前述并行译码算法中L运算的公式(10)和(11)或者,从上往下逐行计算的公式(14)或(15)。从第nin+1层开始逐层更新LLR节点,更新至第nout+1层时,得到的Nin个LLR节点为输出LLR序列/>可以包括Nin/Nout个长度为Nout的LLR子序列。
在又一种可能的实现方式中,第一阶段更新单元510获取作为输入的LLR序列第nin+1层的Nin个LLR节点为该LLR序列中的Nin个LLR,第一阶段更新包括m次从第nin+1层向第nout+1层方向以及从第nout+1层向第nin+1层方向的2×m×(nin-nout)次LLR软值更新,以及从第nin+1层向第nout+1层方向的(nin-nout)次LLR软值更新,共(2×m+1)×(nin-nout)次LLR软值更新,m为整数,m≥0。其中从第nout+1层向第nin+1层方向更新的计算公式可以参考前述并行译码算法中R运算的公式(12)和(13)。反复执行一次或多次从第nin+1层向第nout+1层方向以及从第nout+1层向第nin+1层方向的逐层更新,然后再从第nin+1层开始逐层更新LLR节点,更新至第nout+1层时,得到的Nin个LLR节点为输出LLR序列/>可以包括Nin/Nout个长度为Nout的LLR子序列。需要说明的是,在并行译码器500每次迭代过程中,m取值可以不同。
其中,第一阶段更新单元510的输入LLR序列可以是并行译码器500的译码输入LLR序列,也可以是第二阶段更新单元520得到的第二更新输出LLR序列。
在一种可能的实现方式中,第一阶段更新单元510还可用于从输出LLR序列中确定提供给下一级译码器的输入LLR序列。其中,所述提供给下一级译码器的输入LLR序列包括输出LLR序列/>中Nout个LLR。由于输出LLR序列/>可以包括Nin/Nout个长度为Nout的LLR子序列,第一阶段更新单元510可以从/>中确定一个LLR子序列作为提供给下一级译码器的输入LLR序列。例如,对于并行译码器500的第s次迭代,该LLR子序列为所述输出LLR序列/>中第s个子序列,可以包括所述输出LLR序列中第(s-1)×Nout+1个LLR至第s×Nout个LLR,/>
第二阶段更新单元520可以用于对第二更新输入LLR序列从第nout+1层开始执行第二阶段更新得到第nin+1层的Nin个LLR节点,将第nin+1层的Nin个LLR节点作为第二更新输出LLR序列。
在一种可能的实现方式中,第二阶段更新单元520获取作为输入的LLR序列第nout+1层的Nin个LLR节点为该LLR序列中的Nin个LLR,第二阶段更新包括从第nout+1层向第nin+1层方向的nin-nout次LLR软值更新,更新的计算公式可以参考前述并行译码算法中R运算的公式(12)和(13),或者从下往上逐行计算的公式(14)或(15)。第二阶段更新单元520从第nout+1层开始逐层更新LLR节点,更新至第nin+1层时,Nin个LLR节点的值为第二更新输出LLR序列/>其长度为Nin。
在一种可能的实现方式中,并行译码器500也可以与另一并行译码器500级联,例如,第一并行译码器(Nin1,Nout1)和第二并行译码器(Nin2,Nout2)级联,其中第一并行译码器为上一级译码器,第二并行译码器为下一级译码器,Nout1=Nin2,第二并行译码器的译码输入LLR序列来源于第一并行译码器的输入LLR序列,第二并行译码器还用于向上一级译码器,例如,向第一并行译码器返回一个或多个长度为Nin2或Nout1的译码LLR序列。
在一种可能的实现方式中,可以将一个或多个并行译码器500和支持码长较小的串行译码器级联。如图6所示为并行译码器620(N,NS)和支持码长为NS的串行译码器630级联,如图8所示,并行译码器810(NP,N),并行译码器620(N,NS)和支持码长为NS的串行译码器630级联。其中,N可以取值为以下任一项:1024,512,256,128,64,32,Ns可以取值为以下任一项:128,64,32,16,8,4,2,1,Np可以取值以下任一项:8192,4096,2048,1024,512,256,128。需要说明的是,此处仅为举例,并不限于此。为了方便描述,在下文中将并行译码器620称为第二并行译码器,并行译码器810称为第一并行译码器。
本发明实施例提供的并行译码器可以用于级联译码,将较大的码长通过并行译码方式转换为小的码长输出给下一级译码器,既可以提高吞吐率,又可以降低下一级译码器的实现开销。
如图6所示,为本发明一实施例提供的并行译码器620和串行译码器630级联的级联译码器600结构示意图,其中串行译码器630为并行译码器620的下一级译码器。其中,并行译码器620可以采用BP译码算法,MS译码算法或者DNN译码算法,串行译码器630可以采用SCL译码算法,CA-SCL译码算法等。并行译码器620提供给串行译码器630的输入LLR序列长度为NS。例如并行译码器620输入LLR序列的长度为8,提供给串行译码器630的输入LLR序列长度为4。并行译码器620中,Nin=N,Nout=NS。需要说明的是,此处仅为举例,并不以此为限制。
参考图7,为本发明一实施例提供的级联译码器译码的方法流程图。下面结合图6的级联译码器600,对图7所示的级联译码器译码的方法进行说明。其中,级联译码器600的输入LLR序列包括N个输入LLR,对所述输入LLR序列进行最大T次迭代级联译码,其中,第t次迭代的级联译码,0<t≤T,包括如图7所示方法步骤:
步骤710:第二并行译码器620对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出LLR序列。
其中,每个第二输入LLR序列的长度为N,表示为每个第二输出LLR序列的长度为N,表示为/>
对于每个第二输入LLR序列第二并行译码器620每次迭代得到对应的第二输出LLR序列/>用于提供串行译码器630的第三输入LLR序列/>其中,第三输入LLR序列/>包括所述第二输出LLR序列/>中Ns个LLR,例如:cLLR(t-1)·Ns+1,cLLR(t-1)·Ns+2,…,cLLRt·Ns。
第二并行译码器620对第二输入LLR序列的译码过程可以参考前述实施例中对并行译码器的描述,此处不再赘述。
在一种可能的实现方式中,第二并行译码器620根据第二输出LLR序列确定第三输入LLR序列/>并输出给串行译码器器630;在又一种可能的实现方式中,第二并行译码器620将第二输出LLR序列/>输出给串行译码器630,由串行译码器630根据第二输出LLR序列/>确定第三输入LLR序列/>
t=1时,第1次迭代,L(1)=1:第二并行译码器620将级联译码器的初始输入LLR序列,作为第二输入LLR序列即1个第二输入LLR序列/>
当级联译码器用于信道译码时,初始输入LLR序列可以是接收端装置接收信号后,进行解调等处理得到的LLR序列与信息序列/>对应。
第二并行译码器620对第二输入LLR序列进行第一阶段更新,得到第二输出LLR序列/>
当t>1时,第t次迭代:
第二并行译码器620从串行译码器630,获取前一次迭代,也就是第t-1次迭代的M(t-1)个第三输出LLR序列,其中每个第三输出LLR序列包括NS个LLR,记为/>
第二并行译码器620获取第t-1次迭代中与所述M(t-1)个第三输出LLR序列对应的M(t-1)个第二输出LLR序列由于在第t-1次迭代中,第二并行译码器产生L(t-1)个第二输出LLR序列/>而串行译码器630经过路径选择返回M(t-1)个第三输出LLR序列/>第二并行译码器620确定与这些第三输出LLR序列/>所在的父路径对应的第二输出LLR序列,从而得到对应的M(t-1)个第二输出LLR序列
第二并行译码器620将M(t-1)个第三输出LLR序列分别替换对应的第二输出LLR序列/>中对应序号的LLR,cLLR(t-2)·Ns+1,cLLR(t-2)·Ns+2,…,cLLR(t-1)·Ns,得到M(t-1)个序列/>
第二并行译码器620对M(t-1)个序列分别进行第二阶段更新得到M(t-1)个第二更新输出序列,第二并行译码器620将所述M(t-1)个第二更新输出序列作为L(t)个第二输入LLR序列/>L(t)=M(t-1)。
在又一种可能的实现方式中,为了实现和LDPC译码器的共模,第二并行译码器620也可用于对L(t)个第二输入LLR序列分别确定对应的L(t)个LDPC校验矩阵;第二并行译码器620基于所述L(t)个LDPC校验矩阵分别对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出序列。
第二并行译码器620对第二输入LLR序列的译码过程可以参考前述实施例中对并行译码器的描述,此处不再赘述。
步骤720:串行译码器630对L(t)个第三输入LLR序列进行译码得到M(t)条译码路径。其中,每个所述第三输入LLR序列分别包括对应的第二输出LLR序列中Ns个LLR。
串行译码器630的最大保留译码路径数为M,M为大于0的整数。
串行译码器630对L(t)个第三输入LLR序列进行串行译码得到M(t)条译码路径。串行译码器630的最大保留译码路径为M条路径。其中,所述M(t)条译码路径为串行译码器630产生的L(t)*2k条译码路径中路径度量值最大的M(t)条译码路径,或者所述M(t)条译码路径为串行译码器630产生的L(t)*2k条译码路径中路径度量值最大且CRC校验通过的M(t)条译码路径,k为正整数。
其中M(t)为M和L(t)*2k中的最小值。例如,M=8,L(t)*2k=4,则M(t)为4,又例如:M=8,L(t)*2k=16,M(t)=8。
步骤730:串行译码器630确定继续下一次迭代处理,执行步骤740,或者串行译码器630确定终止迭代处理,执行步骤750。
若当前迭代次数未达到最大迭代次数且迭代不提前终止,对于级联译码器800,t<T且第t次迭代不满足提前终止条件,串行译码器630执行步骤740,继续第t+1次迭代处理。
若当前迭代次数达到最大迭代次数,或者当前迭代t已满足终止条件,对于级联译码器800,t=T或者第t次迭代满足提前终止条件,执行步骤750。
步骤740:串行译码器630根据所述M(t)条译码路径得到M(t)个第三输出LLR序列。
串行译码器630对所述M(t)条译码路径判决得到M(t)个第三输出LLR序列,每个第三输出LLR序列包括Ns个LLR软值,记为
步骤750:串行译码器630根据所述M(t)条译码路径得到译码结果,并终止迭代。
串行译码器630对M(t)条译码路径中路径度量值最大或者路径度量值最大且CRC校验成功的1条译码路径进行硬判决,得到信息序列中对应的信息比特。信息序列/>中包括了多个信息比特,或者,一个或多个信息比特和一个或多个冻结比特,串行译码器630在进行硬判决后,只需要输出其中的一个或多个信息比特。
通信系统中,由于信息比特较多,通常会产生较大的码长。对于传统串行译码器,比如SCL译码器,当输入块长很大时,SCL译码器译码流程是串行的,难以支持较高的吞吐率。采用本申请实施例提供的级联译码器,大量的计算由可并行执行的并行译码器完成,串行译码器只需执行一个较小的长度的译码,例如,N=64,NS=8,并行译码器将码长为64的输入通过第一阶段更新,得到8个长度为8的子序列,提供给串行译码器译码,串行译码器只需要每次执行长度为8的译码。该方法可大幅提高译码的吞吐率,又可以利用串行译码器的译码性能弥补并行译码器译码性能,从而使得译码性能和吞吐率整体得到改善。参见图10,为本申请实施例提供的级联译码器以及译码方法在对码长N=64的Polar码进行译码时,和SC译码器,SCL译码器(译码路径数目为8,以SCL8表示)以及BP译码器的译码性能比较。其中,信息比特数为21,CRC比特数目为11,码长为64,在加性高斯白噪声(additive whitegaussian noise,AWGN)环境下,各译码器在不同误块率(block error rate,BLER)下,译码性能以符号能量噪声比(energy per symbol to noise density,Es/N0)表示。其中SC译码算法的性能曲线以菱形曲线表示,SCL8译码算法的性能曲线以方块曲线表示,BP译码算法的性能曲线以×形曲线表示,本申请实施例提供的级联译码器的性能曲线以圆形曲线表示。从图10中可以看出,级联译码器中串行译码器的路径数据也为8,其译码性能和SCL8的性能基本一致,和SC和BP/MS比性能要好1dB以上。而级联译码器中由于采用了并行译码器并行处理,其吞吐率高于SCL8。
进一步地,对于除了支持Polar码,还需要同时支持其他码(如LDPC码,Turbo码等)的通信系统,比如,5G通信系统同时支持Polar码和LDPC码,采用DNN,BP,MS等并行译码算法的译码器是一种通用架构,即可以支持Polar码译码,也可以支持LDPC码等译码,采用本申请实施例的级联译码器,可以共用LDPC码的并行译码运算单元,从而可以节省硬件实现开销,避免浪费。
如图8所示,为本申请又一实施例提供的由第一并行译码器810(Np,N),第二并行译码器620(N,Ns)和串行译码器630级联的多级联译码器,其中第1级译码器为并行译码器810,第2级译码器为并行译码器620,第3级译码器630为串行译码器。也可以看做是并行译码器810和图6所示的级联译码器600级联,并行译码器810进行第1级迭代译码,级联译码器600进行第2级迭代译码。其中,第一并行译码器810可以采用BP译码算法,MS译码算法或者DNN译码算法。
第一并行译码器810,Nin=Np,Nout=N,其输入序列长度为Np,为大于N的正整数,其提供给下一级译码器,级联译码器600,的输入LLR序列的长度为N,或者也可以说提供给第二并行译码器620的输入LLR序列的长度为N。第一并行译码器810对于输入序列的译码过程和第二并行译码器620的译码过程类似,可以参见前述实施例的描述,不同的在于第二并行译码器620作为下一级译码器,还需要向其上一级译码器,第一并行译码器810返回译码LLR序列。
对于第一并行译码器810而言,其最大迭代次数I=Np/N,也就是第1级迭代的最大迭代次数为I,第一并行译码器810的输入为K(i)个第一输入LLR序列,长度为Np,表示为
对于级联译码器600而言,进行第2级迭代,其初始输入LLR序列是基于上一级译码器810的第一输出LLR序列得到的长度为N的LLR序列,最大迭代次数为T次,T=N/Ns,第2级迭代的最大迭代次数为T。
多级联译码器完成输入LLR序列译码的最大迭代次数为T·I=Np/Ns次。
级联译码器600包括第二并行译码器620和串行译码器630级联,对于每个第二输入LLR序列进行译码得到第二输出LLR序列/>的过程可以参考图7所述的方法步骤,区别在于第二并行译码器620还需要向第一并行译码器返回译码LLR序列,串行译码器630需要根据第1级迭代,第2级迭代终止与否输出不同。
下面结合图8和图9对多级联译码器译码过程进行描述,其中第i次迭代包括:
步骤910:第一并行译码器810对K(i)个第一输入LLR序列进行第1级译码得到K(i)个第一输出LLR序列。
其中,每个第一输入LLR序列的长度为Np,表示为每个第一输出LLR序列的长度为Np,表示为/>i是第1级迭代的次数,t是第2级迭代的次数。
对于每个第一输入LLR序列第一并行译码器810每次迭代得到对应的第一输出LLR序列/>用于提供级联译码器600的第二输入LLR序列/>其中,第二输入LLR序列/>包括对应的第一输出LLR序列/>中N个LLR,例如:eLLR(i-1)·N+1,eLLR(i-1)·N+2,…,eLLRi·N。第二输入LLR序列也可以表示成/>此处为了简化说明,和图7中表述一致,将第二输入LLR序列表示成/>可以理解,就是
第一并行译码器810对第一输入LLR序列的译码过程可以参考前述实施例中对并行译码器译码过程的描述,此处不再赘述。
在一种可能的实现方式中,第一并行译码器810根据第一输出LLR序列确定第二输入LLR序列/>并输出给下一级译码器:级联译码器600,或者第二并行译码器620;在又一种可能的实现方式中,第一并行译码器810将第一输出LLR序列输出给下一级译码器:级联译码器600,或者第二并行译码器620,由下一级译码器根据第一输出LLR序列/>确定第二输入LLR序列/>
i=1时,第1次迭代:K(i)=1,第一并行译码器810将多级联译码器的初始输入LLR序列,作为第一输入LLR序列即1个第一输入LLR序列/>
当多级联译码器用于信道译码时,初始输入LLR序列可以是接收端装置接收信号后,进行解调等处理得到的LLR序列与信息序列/>对应。
第一并行译码器810对第一输入LLR序列进行第一阶段更新,得到第一输出LLR序列/>
当i>1时,第i次迭代:
第一并行译码器810从下一级译码器,如图8所示,级联译码器600获取前一次迭代,也就是第i-1次迭代的M(i-1,t)个第二译码LLR序列其中每个第二译码LLR序列包括N个LLR,与对应的第i-1次迭代的第一输出LLR序列/>中第(i-2)·N+1个LLR至第(i-1)·N个LLR对应。
第一并行译码器810获取第i-1次迭代中与所述M(i-1,t)个第二译码LLR序列对应的M(i-1,t)个第一输出LLR序列由于在第i-1次迭代中,第一并行译码器810产生K(i-1)个第一输出LLR序列/>级联译码器600经过t次迭代后,得到M(i-1,t)个第二译码LLR序列/>每个第二译码LLR序列所在的父路径与一个第一输出LLR序列对应。
第一并行译码器810将M(i-1,t)个第二译码LLR序列分别替换对应的第一输出LLR序列/>中对应序号的LLR,eLLR(i-2)·N+1,eLLR(i-2)·N+2,…,eLLR(i-1)·N得到序列/>
第一并行译码器810对M(i-1,t)个分别进行第二阶段更新得到M(i-1,t)个第二更新输出序列,第一并行译码器810将所述M(i-1,t)个第二更新输出序列作为K(i)个第一输入LLR序列/>
第一并行译码器810对第一输入LLR序列的译码过程可以参考前述实施例中对并行译码器的描述,此处不再赘述。
步骤920:级联译码器600对K(i)个第二输入LLR序列进行第2级迭代译码。
其中,级联译码器600对K(i)个第二输入LLR序列进行译码的迭代过程为第2级迭代,最大迭代次数为T次。
第t次迭代的过程可以参见步骤710至步骤750,其中对于多级联译码器800而言,最大迭代次数为两级译码器迭代次数的乘积,T·I,对于步骤730,当前迭代次数达到最大迭代次数时,i=I且t=T。也就是说i=I且t=T或者当前迭代t已满足终止条件,执行步骤750;若当前迭代次数没有达到上述最大迭代次数且迭代不提前终止,则执行步骤740,继续下一次迭代处理。
其中,第t次迭代包括如下步骤:
步骤9201:第二并行译码器620对L(i,t)个第二输入LLR序列进行译码得到L(i,t)个第二输出LLR序列。
可以参见前述实施例中步骤710,此处不再赘述。
其中,每个第二输入LLR序列的长度为N,表示为每个第二输出LLR序列的长度为N,表示为/>
t=1时,L(i,t)=K(i),第二输入LLR序列为/>
第二并行译码器620对每个第二输入LLR序列分别进行第一阶段更新,得到第二输出LLR序列/>用于提供串行译码器630的第三输入LLR序列
当t>1时,第t次迭代:
第二并行译码器620从串行译码器630,获取前一次迭代,也就是第t-1次迭代的M(i,t-1)个第三输出LLR序列,其中每个第三输出LLR序列包括NS个LLR,记为
第二并行译码器620获取第t-1次迭代中与所述M(i,t-1)个第三输出LLR序列对应的M(i,t-1)个第二输出LLR序列由于在第t-1次迭代中,第二并行译码器产生L(i,t-1)个第二输出LLR序列/>而串行译码器630经过路径选择返回M(i,t-1)个第三输出LLR序列/>第二并行译码器620确定与这些第三输出LLR序列/>所在的父路径对应的第二输出LLR序列,从而得到对应的M(i,t-1)个第二输出LLR序列/>
第二并行译码器620将M(i,t-1)个第三输出LLR序列分别替换对应的第二输出LLR序列/>中对应序号的LLR,cLLR(t-2)·Ns+1,cLLR(t-2)·Ns+2,…,cLLR(t-1)·Ns,得到的M(i,t-1)个序列/>
第二并行译码器620对M(i,t-1)个序列分别进行第二阶段更新得到M(i,t-1)个第二更新输出序列,第二并行译码器620将所述M(i,t-1)个第二更新输出序列作为L(i,t)个第二输入LLR序列/>L(i,t)=M(i,t-1)。
第二并行译码器620对第二输入LLR序列的译码过程可以参考前述实施例中对并行译码器的描述,此处不再赘述。
步骤9202:串行译码器630对L(i,t)个第三输入LLR序列进行译码得到M(i,t)条译码路径。
可以参见前述实施例中步骤720。
步骤9203:串行译码器630确定继续下一次迭代处理,执行步骤9204,或者串行译码器630确定终止第2级迭代处理但不终止第1级迭代处理,执行步骤9204至9205,或者串行译码器630确定终止第1级迭代处理,执行步骤9206。
若当前迭代次数t未达到级联译码器600的最大迭代次数且第2级迭代不提前终止,对于级联译码器800,t<T且迭代不提前终止,串行译码器630执行步骤9204,继续第t+1次第2级迭代处理。
若当前迭代次数t达到级联译码器600的最大迭代次数,t=T,或者第2级迭代满足提前终止条件,且第1级迭代不提前终止,执行步骤9204和9205。
若第2级迭代次数t达到级联译码器800的最大迭代次数,t=T,且第1级迭代次数i达到多级联译码器的最大迭代次数,i=I,或者第1级迭代满足提前终止条件,执行步骤9206。
步骤9204:串行译码器630根据所述M(i,t)条译码路径得到M(i,t)个第三输出LLR序列。
串行译码器630对所述M(i,t)条译码路径判决得到M(i,t)个第三输出LLR序列,每个第三输出LLR序列包括Ns个LLR软值,记为
步骤9205:第二并行译码器620根据M(i,t)个第三输出LLR序列得到第二译码LLR序列,并终止第2级迭代。
第二并行译码器620确定t=T或者第t次迭代满足提前终止条件时:
第二并行译码器620获取与所述M(i,t)个第三输出LLR序列对应的第t次迭代的M(i,t)个第二输出LLR序列/>
第二并行译码器620根据所述M(i,t)个第三输出LLR序列和所述M(i,t)个第t次迭代的第二输出LLR序列/>得到M(i,t)个第t次迭代的第二更新输入LLR序列/>
第二并行译码器620对所述M(i,t)个第二更新输入LLR序列进行第二阶段更新得到M(i,t)个第二译码LLR序列/>
第二并行译码器620向第一并行译码器810输出所述M(i,t)个第二译码LLR序列并终止第2级迭代。
这里,M(i,t)个第二译码LLR序列也可以视为级联译码器600对上一级译码器,第一并行译码器810的输出。
步骤9206:串行译码器630根据所述M(i,t)条译码路径得到译码结果,并终止多级联译码迭代。
串行译码器630对M(i,t)条译码路径进行硬判决,得到信息序列中对应的信息比特。信息序列/>中包括了多个信息比特,或者一个或多个信息比特和一个或多个冻结比特,串行译码器630在进行硬判决后,只需要输出其中的信息比特。
由于LDPC译码器通常采用并行译码算法译码,如BP,MS,DNN等,本发明实施例提供的多级联译码器可以共用LDPC译码器的一部分并行译码单元,节省系统开销。如第二并行译码器620,在这种情况下,可以对第二输入LLR序列的因子图进行转换,确定与之对应的LDPC校验矩阵,进行LDPC译码,通过小块长的串行译码器进行路径选择。这种方式不仅提高译码的吞吐率,改善了并行译码器译码性能,还为与LDPC等其他码的译码器共模,节省系统开销提供了基础。
应理解,本申请实施例提供的级联译码的方法可以由各种网络设备或终端设备中的译码装置或译码装置中的芯片执行。
本申请实施例中还提供一种译码装置,该译码装置可以是采用图6或图8的结构,用于执行图7或图9所示的译码方法。这些译码方法中的部分或全部可以通过硬件来实现也可以通过软件来实现,该译码装置可以包括:输入接口电路,用于获取信息序列对应的LLR序列;逻辑电路,用于执行图7或图9所示的译码方法;输出接口电路,用于输出信息比特。
可选的,译码装置在具体实现时可以是芯片或者集成电路。
本申请实施例中还提供一种译码装置,该译码装置可以是采用图6或图8的结构,用于执行图7或图9所示的译码方法。这些译码方法中的部分或全部可以通过硬件来实现也可以通过软件来实现,该译码装置可以包括:存储器,用于存储程序;处理器,用于执行存储器存储的程序,当程序被执行时,使得译码装置可以实现图7或9所示的译码方法。
可选的,上述存储器可以是物理上独立的单元,也可以与处理器集成在一起。
可选的,译码装置也可以只包括处理器。用于存储程序的存储器位于译码装置之外,处理器通过电路/电线与存储器连接,用于读取并执行存储器中存储的程序。
处理器可以是中央处理器(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);存储器还可以包括上述种类的存储器的组合。
本申请实施例还提供一种计算机存储介质,存储有计算机程序,该计算机程序包括用于执行上述方法实施例提供的译码方法。
本申请实施例还提供一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述方法实施例提供的译码方法。
本申请实施例提供的任一种译码装置还可以是一种芯片。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。这样,倘若本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (27)
1.一种级联译码器,所述级联译码器包括第二并行译码器和串行译码器,对输入LLR序列进行最大T次迭代译码,所述第二并行译码器用于对一个或多个长度为N的对数似然比LLR序列进行译码,所述串行译码器用于对一个或多个长度为NS的LLR序列进行译码,NS<N,其中,第t次迭代译码,包括:
所述第二并行译码器对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出LLR序列,每个第二输入LLR序列的长度为N,每个第二输出LLR序列长度为N;
所述串行译码器对L(t)个第三输入LLR序列进行译码得到M(t)条译码路径,每个所述第三输入LLR序列分别包括对应的第二输出LLR序列中Ns个LLR;
所述串行译码器确定继续迭代,或者,所述串行译码器确定终止迭代。
2.根据权利要求1所述的级联译码器,每个所述第三输入LLR序列包括对应的第二输出LLR序列中第(t-1)×NS+1个LLR至第t×NS个LLR。
3.根据权利要求1或2所述的级联译码器,所述第二并行译码器对L(t)个第二输入LLR序列进行译码得到L(t)个第二输出LLR序列,包括:
所述第二并行译码器对所述L(t)个第二输入LLR序列分别进行第一阶段更新得到所述L(t)个第二输出LLR序列。
4.根据权利要求1所述的级联译码器,t=1,L(t)=1,所述第二输入LLR序列为所述级联译码器的输入LLR序列。
5.根据权利要求1所述的级联译码器,t>1,第t-1次迭代译码还包括:
所述串行译码器根据M(t-1)条译码路径得到M(t-1)个第三输出LLR序列,每个所述第三输出LLR序列包括Ns个LLR。
6.根据权利要求5所述的级联译码器,所述第t次迭代还包括:
所述第二并行译码器获取与所述M(t-1)个第三输出LLR序列对应的第t-1次迭代的M(t-1)个第二输出LLR序列;
所述第二并行译码器根据所述M(t-1)个第三输出LLR序列和所述M(t-1)个第t-1次迭代的第二输出LLR序列得到L(t)个第t次迭代的第二更新输入LLR序列,L(t)=M(t-1);
所述第二并行译码器对所述L(t)个第二更新输入LLR序列进行第二阶段更新得到所述L(t)个第二输入LLR序列。
7.根据权利要求6所述的级联译码器,所述第二并行译码器至少包括第ns+1至第n+1层n-ns个译码层,每层包括N个LLR节点;
所述第二并行译码器对每个第二输入LLR序列进行第一阶段更新得到对应的第二输出LLR序列,包括:
所述第二并行译码器将所述第n+1层的N个LLR节点更新为所述第二输入LLR序列中的N个LLR,
所述第二并行译码器从所述第n+1层向所述第ns+1层方向执行软值更新得到所述第ns+1层的N个LLR节点,所述对应的第二输出LLR序列包括所述第ns+1层的N个LLR节点;
所述第二并行译码器对每个第二更新输入LLR序列进行第二阶段更新得到对应的第二输入LLR序列,包括:
所述第二并行译码器将所述第ns+1层的N个LLR节点更新为所述第二更新输入LLR序列中的N个LLR,
所述第二并行译码器从所述第ns+1层向所述第n+1层方向执行软值更新得到所述第n+1层的N个LLR节点,所述对应的第二输入LLR序列包括所述第n+1层的N个LLR节点。
8.根据权利要求1所述的级联译码器,所述串行译码器对所述L(t)个第三输入LLR序列进行译码得到M(t)条译码路径,包括:
所述串行译码器对所述L(t)个第三输入LLR序列译码得到L(t)*2k条译码路径,k为正整数;
所述M(t)条译码路径为所述L(t)*2k条译码路径中路径度量最大的M(t)条译码路径,或者,所述M(t)条译码路径为所述L(t)*2k条译码路径中路径度量最大且CRC校验通过的M(t)条译码路径。
9.根据权利要求1所述的级联译码器,所述第二并行译码器用于对L(t)个所述第二输入LLR序列分别确定对应的LDPC校验矩阵;
所述第二并行译码器基于所述LDPC校验矩阵对L(t)个所述第二输入LLR序列进行译码得到L(t)个第二输出序列。
10.根据权利要求1所述的级联译码器,所述第二并行译码器包括以下一种或多种:BP译码器或者MS译码器或者DNN译码器,所述串行译码器包括SCL译码器或者CA-SCL译码器。
11.根据权利要求1所述的级联译码器,N取值为以下任一项:1024,512,256,128,64,32;Ns取值为以下任一项:128,64,32,16,8,4,2,1。
12.根据权利要求1所述的级联译码器,所述串行译码器确定继续迭代,包括:
所述串行译码器确定t<T且第t次迭代不满足提前终止条件;
所述第t次迭代还包括:
所述串行译码器根据所述M(t)条译码路径得到M(t)个第三输出LLR序列。
13.根据权利要求1所述的级联译码器,所述串行译码器确定终止迭代,包括:
所述串行译码器确定t=T,或者,第t次迭代满足提前终止条件;
所述第t次迭代还包括:
所述串行译码器根据所述M(t)条译码路径得到译码结果,并终止迭代。
14.根据权利要求13所述的级联译码器,所述级联译码器的输入LLR序列为信息序列u1 N对应的LLR序列,所述信息序列包括多个信息比特,或者一个或多个信息比特和一个或多个冻结比特;
所述串行译码器根据所述M(t)条译码路径得到译码结果,包括:
所述串行译码器对所述M(t)条译码路径中路径度量值最大或者路径度量值最大且CRC校验成功的1条译码路径进行硬判决,得到所述信息序列中的各信息比特。
15.一种多级联译码器,包括如权利要求1至11任一项所述的级联译码器以及第一并行译码器,所述级联译码器为所述第一并行译码器的下级译码器,所述第一并行译码器用于对一个或多个长度为Np的LLR序列进行译码,所述第一并行译码器对初始LLR序列进行最大I次迭代,I=Np/N,第i次迭代,i<I,包括:
所述第一并行译码器对K(i)个第一输入LLR序列进行第1级迭代译码得到K(i)个第一输出LLR序列,每个第一输入LLR序列的长度为Np,每个第一输出LLR序列的长度为Np;
所述级联译码器对K(i)个第二输入LLR序列进行第2级迭代译码,每个所述第二输入LLR序列分别包括对应的第一输出LLR序列中的N个LLR。
16.根据权利要求15所述的多级联译码器,每个所述第二输入LLR序列包括对应的所述第一输出LLR序列中第(i-1)×N+1个LLR至第i×N个LLR。
17.根据权利要求16所述的多级联译码器,所述第一并行译码器对所述K(i)个第一输入LLR序列进行译码得到K(i)个第一输出LLR序列,包括:
所述第一并行译码器对所述K(i)第一输入LLR序列分别进行第一阶段更新得到所述K(i)个第一输出LLR序列。
18.根据权利要求16或17所述的多级联译码器,i=1,K(i)=1,所述第一输入LLR序列为初始LLR序列。
19.根据权利要求16所述的多级联译码器,i>1,第i-1次迭代译码还包括:
所述级联译码器向所述第一并行译码器输出M(i-1,t)个第二译码LLR序列,所述第二译码LLR序列包括N个LLR。
20.根据权利要求19所述的多级联译码器,所述第i次迭代还包括:
所述第一并行译码器获取与所述第i-1次迭代的M(i-1,t)个第二译码LLR序列对应的第i-1次迭代的M(i-1,t)个第一输出LLR序列;
所述第一并行译码器根据所述M(i-1,t)个第二译码LLR序列和所述M(i-1,t)个第i-1次迭代的第一输出LLR序列得到K(i)个第i次迭代的第二更新输入LLR序列,K(i)=M(i-1,t);
所述第一并行译码器对所述K(i)个第二更新输入LLR序列进行第二阶段更新得到所述K(i)个第一输入LLR序列。
21.根据权利要求20所述的多级联译码器,所述第一并行译码器至少包括第n+1至第np+1层np-n个译码层,每层包括Np个LLR节点;
所述第一并行译码器对每个第一输入LLR序列进行第一阶段更新得到对应的第一输出LLR序列,包括:
所述第一并行译码器将所述第np+1层的Np个LLR节点更新为所述第一输入LLR序列中的Np个LLR,
所述第一并行译码器从所述第np+1层向所述第n+1层方向执行软值更新得到所述第n+1层的Np个LLR节点,所述对应的第一输出LLR序列包括所述第n+1层的Np个LLR节点;
所述第一并行译码器对每个第二更新输入LLR序列进行第二阶段更新得到对应的第一输入LLR序列,包括:
所述第一并行译码器将所述第n+1层的Np个LLR节点更新为所述第二更新输入LLR序列中的Np个LLR,
所述第一并行译码器从所述第n+1层向所述第np+1层方向执行软值更新得到所述第np+1层的Np个LLR节点,所述对应的第一输入LLR序列包括所述第np+1层的Np个LLR节点。
22.根据权利要求15所述的多级联译码器,所述串行译码器确定继续迭代,包括:
所述串行译码器确定t<T且第t次迭代不满足提前终止条件,或者,i<I且第i次上一级迭代不满足所述多级联译码器提前终止条件;
所述级联译码器的第t次迭代包括:
所述串行译码器根据M(i,t)条译码路径得到M(i,t)个第三输出LLR序列。
23.根据权利要求22所述的多级联译码器,所述第二并行译码器还用于确定t=T,或者,第t次迭代满足提前终止条件,
所述第二并行译码器获取与所述M(i,t)个第三输出LLR序列对应的第t次迭代的M(i,t)个第二输出LLR序列;
所述第二并行译码器根据所述M(i,t)个第三输出LLR序列和所述M(i,t)个第t次迭代的第二输出LLR序列得到M(i,t)个第t次迭代的第二更新输入LLR序列;
所述第二并行译码器对所述M(i,t)个第二更新输入LLR序列进行第二阶段更新得到M(i,t)个第二译码LLR序列;
所述第二并行译码器向所述第一并行译码器输出所述M(i,t)个第二译码LLR序列。
24.根据权利要求16所述的多级联译码器,所述串行译码器确定终止迭代,包括:
所述串行译码器确定i=I,且t=T,或者,第t次迭代满足所述级联译码器的提前终止条件且第i次上一级迭代满足所述多级联译码器提前终止条件;
所述级联译码器的第t次迭代包括:
所述串行译码器根据M(i,t)条译码路径得到译码结果,并终止迭代。
25.根据权利要求24所述的多级联译码器,所述初始LLR序列为信息序列对应的LLR序列,所述信息序列包括多个信息比特,或者一个或多个信息比特和一个或多个冻结比特;
所述串行译码器根据所述M(t)条译码路径得到译码结果,包括:
所述串行译码器对所述M(t)条译码路径中路径度量值最大或者路径度量值最大且CRC校验成功的1条译码路径进行硬判决,得到所述信息序列中的各信息比特。
26.根据权利要求16所述的多级联译码器,所述第一并行译码器包括以下一种或多种:BP译码器或者MS译码器或者DNN译码器。
27.根据权利要求16所述的多级联译码器,Np取值包括以下任一:8192,4096,2048,1024,512,256,128。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910972581.8A CN112737600B (zh) | 2019-10-14 | 2019-10-14 | 译码方法和译码器 |
PCT/CN2020/115383 WO2021073338A1 (zh) | 2019-10-14 | 2020-09-15 | 译码方法和译码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910972581.8A CN112737600B (zh) | 2019-10-14 | 2019-10-14 | 译码方法和译码器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112737600A CN112737600A (zh) | 2021-04-30 |
CN112737600B true CN112737600B (zh) | 2023-07-18 |
Family
ID=75537704
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910972581.8A Active CN112737600B (zh) | 2019-10-14 | 2019-10-14 | 译码方法和译码器 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN112737600B (zh) |
WO (1) | WO2021073338A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113708892B (zh) * | 2021-08-13 | 2023-01-10 | 上海交通大学 | 基于稀疏二分图的多模通用译码系统及方法 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109004939A (zh) * | 2017-06-06 | 2018-12-14 | 华为技术有限公司 | 极化码译码装置和方法 |
CN109495116A (zh) * | 2018-10-19 | 2019-03-19 | 东南大学 | 极化码的sc-bp混合译码方法及其可调式硬件架构 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9176927B2 (en) * | 2011-11-08 | 2015-11-03 | The Royal Institution For The Advancement Of Learning/Mcgill University | Methods and systems for decoding polar codes |
-
2019
- 2019-10-14 CN CN201910972581.8A patent/CN112737600B/zh active Active
-
2020
- 2020-09-15 WO PCT/CN2020/115383 patent/WO2021073338A1/zh active Application Filing
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109004939A (zh) * | 2017-06-06 | 2018-12-14 | 华为技术有限公司 | 极化码译码装置和方法 |
CN109495116A (zh) * | 2018-10-19 | 2019-03-19 | 东南大学 | 极化码的sc-bp混合译码方法及其可调式硬件架构 |
Also Published As
Publication number | Publication date |
---|---|
CN112737600A (zh) | 2021-04-30 |
WO2021073338A1 (zh) | 2021-04-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP3510700B1 (en) | Method and apparatus for encoding data using a polar code | |
CN110089037B (zh) | 用于极化码构造的装置和方法 | |
US11139835B2 (en) | Method and apparatus for data processing with structured LDPC codes | |
US7757150B2 (en) | Structured puncturing of irregular low-density parity-check (LDPC) codes | |
CN109314600B (zh) | 用于在使用通用极化码时进行速率匹配的系统和方法 | |
US11700545B2 (en) | Method and device for transmitting data | |
CN108574561B (zh) | 极化码编码的方法和装置 | |
CN110326342B (zh) | 一种用于指定编码子信道的有序序列的装置和方法 | |
KR102262186B1 (ko) | 높은 레이트의 긴 ldpc 코드 | |
CN109547034B (zh) | 译码方法及设备、译码器 | |
US10666392B2 (en) | Apparatus and methods for rate matching in polar coding | |
US10812107B2 (en) | Apparatus and methods for polar code construction and bit position allocation | |
CN112005499B (zh) | Ldpc码的译码方法和装置 | |
EP3577767A1 (en) | Alteration of successive cancellation order in decoding of polar codes | |
CN112737600B (zh) | 译码方法和译码器 | |
WO2020088256A1 (zh) | 译码方法及装置 | |
CN110324111B (zh) | 一种译码方法及设备 | |
CN107733442B (zh) | 结构化ldpc码的处理方法及装置 | |
Oliveira et al. | Polarization-driven puncturing for polar codes in 5g systems | |
WO2017214851A1 (zh) | 一种信号传输的方法、发射端及接收端 | |
US20230034299A1 (en) | Device and method for decoding polar code in communication system | |
CN116318181A (zh) | 一种极化码译码方法及装置 | |
El Ouakili et al. | Optimized decoder for low-density parity check codes based on genetic algorithms | |
CN114124108A (zh) | 基于低密度奇偶校验的编码方法、译码方法和相关装置 | |
CN113067585A (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 |