一种极化码的编解码方法与流程

文档序号:11959161阅读:5064来源:国知局
一种极化码的编解码方法与流程

本发明属于通信技术领域,特别涉及一种极化码中基于SCL编解码算法的改进算法。



背景技术:

极化码(Polar Codes)是2008年由E.Arikan提出的一种新型信道编码。极化码基于信道极化进行设计,是第一种能够通过严格的数学方法证明达到信道容量的构造性编码方案。在Polar Codes被提出之初,串行抵消(Success Cancellation,SC)译码也随之被提出。SC译码的特点主要有两方面,一方面是其复杂度低、译码结构简单;另一方面是其在理论上被证明在码长足够大时能够达到Shannon极限。但SC译码算法在码长为有限长的配置下,纠错性能不理想。置信度传播(BP)等译码算法性能亦不理想。为了提高性能,提出串行抵消列表(Successive Cancellation List,SCL)译码。SCL译码算法是改进的SC译码算法。因为极化码只有在较高的SNR条件下,才能够达到ML的译码性能,故CRC方法被引入来提升极化码的译码性能。CRC辅助的SCL有着比Turbo码与LDPC码更好的译码性能,但是随着L增大,译码复杂度也增大了。为了解决这一问题,AD-SCL算法通过自适应地控制L,避免对不必要的路径进行计算,大大的减少了译码复杂度,同时GJ的Multi-CRC,提出多级CRC结构来让SCL算法提前选择与输出译码比特,从而减少内存空间与输出延时。

SCL可以看作是在一颗码树上L条路径往叶子节点搜索的过程。L越大,译码成功率越高,同时复杂度随之增加。在译码过程中,部分路径在未到达最后之前已经发生错误,之后的译码操作实际上是在做无用功,没必要继续进行下去,尤其是在信噪比不太好的情况下,很多路径在译码的前半段就已经错误了,继续进行,只会增加算法复杂度。

为了解决这个问题,在保证译码正确率的情况下减小译码运算量,本发明专利提出了一种将整个信息序列分块,然后每个块分别进行校验的译码算法,即块校验BCL(Block Check SCL——BC-SCL),通过在译码的过程中,尽早的检测出译码过程中已经发生错误的路径并终止该条路径,能够有效降低算法复杂度。



技术实现要素:

本发明提出了一种基于SCL解码算法的CRC辅助的编解码方法,在保证解码性能不变的情况下减小解码器的运算复杂度。

CRC校验是一种数据通信领域中常用的差错校验码,其特征是信息字段与校验字段的长度可以任意选定。我们将整个信息序列分成K段,每段分别进行CRC校验,通过CRC的生成多项式规则来确定传输过程中是否发生错误,错误路径则提前删除。在译码过程中无法通过CRC校验的路径是肯定存在错误比特的,因此,与普通SCL译码算法相比,BC-SCL算法在降低计算复杂度的同时,并不会带来译码性能的损失。

在编码过程中,按照SCL算法对源数据进行预编码,然后再将编码后的信息序列分为K段,在每段的末尾加入CRC校验单元,然后按照之前信息序列的顺序将加入了CRC块以后的序列组合起来。

在解码过程中,适用以下步骤:

步骤1,创建一条空序列,并写入初始列表将对应的路径度量值置零

步骤2,当解码经过第i层边时,通过添加vi=0或者vi=1对列表内的所有路径进行路径扩展,扩展得到的候选路径记录在表L(i)内,同时计算并记录每条候选路径的度量值

步骤3,如果经过步骤2以后列表L(i)内候选路径的条数大于L,则保留具有最大路径度量值的L条路径,从L(i)中删除其他路径,否则直接进入下一步骤;

步骤4,如果当前边正好处于数据包的校验位置,则对已经解码的路径对应的数据进行CRC校验,删除未能通过校验的数据对应的路径;

步骤5,如果当前路径未扩展至叶子结点层,即当i<N时,跳转至步骤2,否则对列表L(N)中的所有候选路径对应的数据包进行最终的CRC校验,在通过校验的列表中选择一条具有最大度量值的候选路径作为正确的译码输出,完成译码过程。

其中,步骤2中如果第i层对应一个固定的信道,即i∈Ac,且vi≠ui,则设置这条信道对应的路径度量值为负无穷;步骤3中保留具有最大路径度量值的L条路径是建立在对这些路径度量值进行排序的基础上的;步骤4中对已经解码的路径对应的数据进行CRC校验,如果某条路径的校验结果为零,则认为信道译码得到的比特序列是正确的,否则即认为译码出错,未能通过校验;步骤5中如果没有路径通过CRC校验则认为本次解码失败;在编码端对源数据进行SCL编码以后,将编码包分为K个相同的子段,每个子段后面加上CRC校验序列。

有益效果

本发明对比已有技术具有以下创新点:

将CRC校验与传统的SCL算法进行结合,可以提前确定失效的解码路径,进而从列表中删除这些路径,减小后续解码搜索路径的个数,减小解码器的计算复杂度。同时由于对正确的解码路径没有进行操作,并不会影响解码的精确度。

分块校验的译码算法尤其适合在信道条件不好的情况(低信噪比),此时L值一般设置的比较大,译码过程中错误的路径数目也很多,通过分块校验的算法则可以SCL尽早检测错误并终止该路径,避免对所有不必要的路径进行译码操作,从而大幅降低计算复杂度。

附图说明

图1是编码器编码数据包时CRC校验块的插入部位示意图;

图2是解码器进行解码的流程图;

图3是解码二叉树以及路径选择的示意图。

具体实施方式

下面将结合附图和实施例对本发明做进一步的描述。

本发明提供一种极化码的编解码方法,主要包括编码和解码两部分。编码端首先对源数据进行SCL编码,然后将信息序列分为K段,在每段末尾加入用于CRC校验的数据块,形成新的信息序列,最后将新的信息序列发送出去;在解码端按照SCL算法对接收到的信息序列进行解码,当解码进行到CRC校验块的位置时运行CRC校验步骤,对当前解码路径对应的数据进行校验,如果未通过校验则直接删除当前路径。

编码端加入的CRC校验块如图1所示,上半部分为只有一个CRC校验块的示意图,其中1代表编码的数据信息,2代表插入的CRC校验块;下半部分为插入3个CRC校验块的示意图。对于不同原始长度的信息序列,编码器首先需要按照SCL算法对源数据进行编码,形成预编码信息序列,然后参考K值将预编码信息序列分为K个部分,在每个部分的末尾增加CRC校验块,最后再将增加了校验块的信息序列按照之前的顺序组合起来进行发送。根据不同的源码块长度,可以设置不同的校验块个数K。在实际应用中我们令K=2或者K=4已经可以达到很好的效果。不失一般性地,本实施例中我们设置K=2,即在原始信息序列的中间和末尾分别增加CRC校验块。

解码端的工作基于SCL算法。解码的流程图如图2所示,解码器首先从根节点开始进行解码,对其按照比特0或者1进行扩展,扩展以后的候选路径需要按照度量值大小进行排序,然后保留具有最大度量值的L条候选路径,删除其他的路径。此时需要对当前节点是否是CRC校验比特进行判断,如果当前节点正好对应CRC校验比特则需要对以上已经解码的信息比特进行CRC校验,只有通过校验的信息序列对应的路径才能继续作为候选路径参加后面的译码过程,未通过校验的即为已经出错的路径,系统将其删除不再参加后面的迭代解码过程。当路径长度和信息序列长度相同时,即路径长度等于N时SCL译码过程结束,在译码结束时也要按照上面的步骤对多个候选路径进行排序,选取L条具有最大度量值的路径。如果L>1则需要对这些候选的路径进行CRC校验,通过校验且具有最大度量值的路径作为正确的译码路径。如果译码结束后没有符合条件的路径则认为译码失败。

如图3所示为解码二叉树的示意图,可以看出当解码进行到第二层时出现了左右两条路径,但是由于右边路径未能通过CRC校验,因此系统将其删除,不再继续进行解码,只保留左边的路径继续解码,即图中粗实线所示。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不限于此,任何熟悉本技术领域的技术人员在本发明提出的技术范围内,可轻易想到的变化或者替换,都应该涵盖在本发明的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1