APP下载

一种基于BCH 级联极化码的分段校验译码算法

2021-09-28奚珍珍刘顺兰

软件导刊 2021年9期
关键词:码长译码级联

奚珍珍,刘顺兰

(杭州电子科技大学电子信息学院,浙江杭州 310018)

0 引言

极化码是一种新型的编码方式[1-2],也是目前3GPP 标准制定中的一种信道编码技术方案。学者们对极化码的构造算法[3-4]、码率兼容算法[5-9]、编译码算法展开了深入研究。极化码在有限的码长下信道极化现象并不完全,译码的准确性严重影响通信质量。连续消除译码(Successive Cancellation,SC)是基于极化码最早提出的低复杂度译码算法,但是该译码容易存在错误传播现象[10];连续消除列表(Successive Cancellation List,SCL)译码是连续消除译码的改进算法,通过多路径贪心搜索方法可减少丢失正确码元的可能性[11-12];CRC 辅助校验的SCL 译码(CRC-Aided SCL,CA-SCL)[13]利用CRC 校验码检错的特性,进一步提高了译码的正确率,使极化码相比低密度奇偶校验码(Low-Density Parity-Check,LDPC)[14]具有更好的性能。

随着候选路径数量L 的增加,译码准确率有明显提升,但计算的内存也急剧增加,对此,文献[15]提出了CRC 辅助校验的分段译码,能在不降低译码性能的前提下对硬件的内存需求更低。而CRC 只能检错,BCH 码不仅可以检错又可以纠错。文献[16]进一步改良,提出了BC-SCL 分段译码,对一段码元进行纠错,进而使译码性能得到改善;将polar 码与其他码字级联也是改进译码准确性的有效方法:极化码与卷积码级联的译码方法误块率,在各种编码率下随码率增长呈指数衰减[17];Saber 等[18]建议与极化码级联时,外码的码长小于等于8,并通过密度演化算法来计算子信道的错误概率,该方法不但改善了极化码性能,而且计算复杂度较低。

为了进一步提高极化码在有限码长时的极化码译码准确性,本文利用BCH 可纠正多个错误的特性[19],实现由BCH 级联极化码并进行分段编码与译码。为有效弥补错误传播现象造成的性能损失,对BCH 译码也进一步改进,选择错误概率较小且校验成功的路径作为输出。仿真显示,在相同条件下,系统极化码[20]性能优于极化码。因此,本文将该分段译码方法扩展应用到BCH 级联系统极化码。

1 极化码概述

1.1 极化码与系统极化码

极化码是一种基于信道极化理论的信道编码方式。当码长不断增加时,编码端通过码字构造方法后,各个子信道的信道容量呈现出两级分化现象,将信道容量趋近于1 的完美信道用来传输有用信息,从而达到信道容量。

对于给定的码长N,极化码编码方式如下:

其中,A为信息位位置索引集合,AC为冻结位位置索引集合,uA为有用信息序列为冻结信息序列,通常置为0,GN(A)表示由A中元素对应的行构成的GN的子矩阵,GN(Ac)同理,⊕表示模2 加。

根据文献[20]可知,系统极化码与极化码相比在SC 译码下错误传播更少,两者在编码阶段及译码阶段都存在着差异。

系统极化码定义为:

其中,x=(xB,)为系统极化码的编码码字,B为{1,…,N}的任意子集,也称为信息位位置索引集合,BC为B在{1,…,N}集合的补集,也称为冻结位位置索引集合。GAB为G 的子矩阵,由i∈A,j∈B的元素(Gi,j)组成,,定义同上。

在编码阶段,极化码的信息比特被分配到码源序列,而系统极化码是由编码后的码字携带信息比特。在译码阶段,用于极化码的译码算法都适用于系统极化码,不同的是极化码的误码率和误块率的统计是通过比较uA和而系统极化码是通过比较xB和因此系统极化码译码得到译码判决结果后,还需再进行编码才能得到

1.2 SCL 译码

SC 译码过程是串行进行,因此存在容易错误传播现象,且SC 译码码树形式的译码最终仅选出一条路经,容易丢失最佳路径。为了降低该情况出现的概率,SCL 译码引入了保留多条译码路径的思想。在译码准备阶段,设定一个备选路径数目的最大值L,在每一层译码过程中,最多可保留L 条备选路径。在SCL 译码过程中有一个重要的参数,即基于LLR 的路径度量值(Path Metric,PM)[21],定义为:

2 BCH 级联极化码的分段校验译码

BCH 级联极化码方案,是将BCH 码作为外码,极化码为内码,基于BCH 级联极化码的分段校验译码详细流程如图1 所示。在极化码编码前,将信息比特分为两段,每段分别通过BCH 编码在每组信息比特的后面增加校验位。SCL译码后对译码比特进行分段校验,利用BCH 码纠错特性进行纠错。

Fig.1 Flow of BCH cascaded polar code segment check decoding algorithm图1 BCH 级联极化码分段校验译码算法流程

通常,传统的校验方法是在信息序列的末尾添加一段校验码,而分段校验与传统检验的最大不同在于分段校验是在信息序列中相对分散地插入较短的校验码。通过采用分段校验辅助方法可实现提前终止译码,以省去不必要的译码时间。

2.1 编码系统模型

如图2 所示,BCH 级联极化码编码系统模型主要包括BCH 编码和极化码编码。假设采用(n,k,t)BCH 码和(N,K)极化码进行级联,其中k 为参与BCH 编码的信息比特序列长度,n 为BCH 编码后得到的码字长度,t 为纠错能力,N表示极化码长度,K 表示参与极化码编码的信息比特序列长度,BCH 码字中包含了r=n-k 个校验比特。

Fig.2 BCH cascaded polar code coding system model图2 BCH 级联极化码编码系统模型

2.2 分段校验译码算法

BC-SCL 译码算法是在SCL 译码后,分别进行BCH 译码和CRC 校验,因此只有第一段可以进行纠错。本文提出的译码算法是两段都进行BCH 译码,每段都有纠正t 个错误的机会,在较低的内存需求下,提高了整体的译码性能。

本文提出的适用于BCH 级联极化码的分段校验译码算法可分为两个部分:第一部分是SCL 译码算法,译码结束后,按照路径度量值由小到大的顺序保留L 条路径;第二部分是BCH 分段校验译码算法,依次对L 条候选路径进行校验,若校验失败再进行纠错。选择路径度量值最小且校验成功的路径作为输出,有效弥补了错误传播现象造成的性能损失。

图3 为BCH 分段校验译码算法流程。该算法的输入值是SCL 译码后的L 条路径中存放拆分后的译码比特序列的,其 中表示第L 条路径中存储的n个译码比特,输出序列默认为第一条路径存储的n 个译码比 特首先通过校验 矩阵对第一条路径进行BCH 校验,若校验成功则直接输出该序列,进行下一段BCH 校验译码;若校验失败,则对该路径进行BCH纠错并进行校验。若成功,直接输出当前纠错后的结果,进行下一段BCH 校验译码;若纠错失败,继续对下一条路径进行判定。此算法利用BCH 码的检错与纠错特性,自列表的第一条路径开始,检测到首条可通过校验的路径即立即终止本段的译码算法。若直至最后一条路径都校验失败,则输出默认序列。该算法通过层层严格筛选,输出能够通过BCH 纠错校验的路径且错误概率相对最小的路径,由此进一步提高了BCH 级联极化码的误码性能。

Fig.3 BCH segment check and decoding algorithm flow图3 BCH 分段校验译码算法流程

BCH 级联极化码分段校验译码流程如下:①初始化。给定(N,K)系统polar 码,(n,k,t)BCH 级联polar 码,其中BCH 码的校验位数量r=n-k,候选路径的数量L,冻结信息序列置0;②BCH 编码。将长度为K-2r 的输入信息序列分为两段,对每段分别进行BCH 编码,完成编码后将两段BCH 码合并码字,并进行混合比特;③polar 码编码。利用公式(2)对得到的混合比特进行编码得到极化码的码字;④输入信道。使用BPSK 对接收到的码字进行调制,调制后添加噪声并传输到接收端;⑤polar 码译码。对接收到的信息执行SCL 译码,得到按照错误概率由小到大的顺序保留的L 条路径;⑥BCH 译码。首先将SCL 译码得到的L 条序列拆分,得到两段L 条子序列;其次,按顺序依次对每段的L 条信息序列的估计值进行校验与纠错,检测到首条可通过校验的路径即立即终止本段的BCH 译码;若直至最后一条路径都校验失败,则本段输出默认的序列。两段都完成BCH 译码后,将两段译码结果合并作为最后的输出结果。

由于系统极化码性能比非系统极化码更优异,因此本文将提出的译码算法推广应用到BCH 级联系统极化码。在整个编译码过程中,系统码的编码稍有不同,按照式(3)、式(4)进行编码,译码部分完全适用。

3 仿真结果与分析

基于以上理论分析进行MATLAB 仿真。AWGN 信道下,采用SCL 译码并加入文献[16]的BC-SCL(BCH-CRCaided segmented SCL decoding)算法,与本文所提的BCH 级联极化码分段校验译码算法进行对比。

实验1:将文献[16]提出的BC-SCL 与本文提出的级联极化码分段校验译码在相同信噪比条件下进行比较,仿真参数如表1 所示,不同码长情况下的两种译码误码率性能比较如图4 所示。

Table 1 Simulation parameters(based on fig.4)表1 仿真参数(基于图4)

表1 中BCH-polar(128)代表本文提出的分段校验译码算法,极化码码长为128,BC-polar(128)代表BC-SCL 算法极化码码长为128,SCL 译码的列表长度L 为8。

由图4(彩图扫OSID 码可见,下同)的仿真结果可见,在码长相同的情况下对两种译码方法的误码性能进行比较,本文提出的基于BCH 级联极化码的分段校验算法在译码性能上比BC-SCL 译码效果更好。当误码率为10-3、极化码码长为64 时,本文提出的译码算法相比BC-SCL 获得了约0.25dB 增益;极化码码长为128 时,本文提出的译码算法相比BC-SCL 获得了约0.1dB 增益。采用本文提出的分段校验译码算法,当极化码码长较短时,子信道极化程度低,误码率明显降低。

实验2:在相同信噪比条件下,将本文提出的算法扩展到BCH 级联系统极化码,同BCH 级联极化码比较。具体仿真参数为:极化码与系统极化码码长分别为256、64,码率为0.5,与之级联的BCH 码分别为(63,57,1)、(15,11,1)。

如图5 所示,BCH-syspolar(256)与BCH-polar(256)分别代表本文提出的BCH 级联极化码分段校验译码算法与扩展到BCH 级联系统极化码的分段校验译码算法,极化码与系统极化码的码长都为256。

相同码长情况下,BCH 级联系统极化码的分段校验译码性能均比级联极化码的分段校验译码性能更好。当误码率为10-3,码长为256 时,BCH 级联系统极化码的分段校验译码算法比级联极化码的分段校验译码算法获得了约0.2dB 增益。码长为64 时,前者比后者获得了约0.2dB 增益。码长越长,子信道极化越完全,极化码与系统极化码自身的性能会有所提升,BCH 级联系统极化码的译码算法与级联极化码的译码算法的误码性能会越好,并且前者比后者的误码性能更好。

Fig.4 Comparison of bit error rate performance of two decodings under different code lengths图4 不同码长情况下的两种译码误码率性能比较

Fig.5 Comparison of the bit error rate performance of the decoding algorithm of the cascaded polar code and the cascaded system polar code under different code lengths图5 不同码长情况下,级联极化码与级联系统极化码译码算法的误码率性能比较

4 结语

本文提出了基于BCH 级联极化码的分段校验译码算法,利用对SCL 译码序列进行BCH 分段校验,选择首条可通过校验且错误概率相对较小的路径作为输出,更好地降低了误码率。仿真分析结果表明,相同码长下,本文提出的译码算法性能明显优于BC-SCL 译码算法。将该分段译码算法推广应用到BCH 级联系统极化码,有限码长的性能有进一步提升。下一步研究重点是在保证有限码长性能的前提下降低译码的复杂度。

猜你喜欢

码长译码级联
构造长度为4ps的量子重根循环码
基于信息矩阵估计的极化码参数盲识别算法
基于校正搜索宽度的极化码译码算法研究
环Fq[v]/上循环码的迹码与子环子码
级联LDPC码的STBC-OFDM系统
从霍尔的编码译码理论看弹幕的译码
基于级联MUSIC的面阵中的二维DOA估计算法
LDPC 码改进高速译码算法
LCL滤波器在6kV级联STATCOM中的应用
H桥级联型STATCOM的控制策略研究