一种并行的极化码译码方法及装置与流程

文档序号:12489764阅读:440来源:国知局
一种并行的极化码译码方法及装置与流程
本发明属于无线通信领域,特别涉及一种针对极化码的并行译码方法。
背景技术
:Polar码是目前唯一能通过严格的数学方法证明可以达到信道容量的编码方式,是5G标准的有力竞争者。Arikan在2008年提出了信道极化(Channelpolarization:Amethodforconstructingcapacity-achievingcodes,ArikanE.,IEEEInternationalSymposiumonInformationTheory(ISIT),2008:1173-1177.)的理论之后,于2009年提出了SC(Successive-Cancellation)译码算法(Channelpolarization:Amethodforconstructingcapacity-achievingcodesforsymmetricbinary-inputmemorylesschannels,ArikanE.,IEEETrans.Inf.Theory,55(7),2009:3051-3073.),SC算法串行译码的性质导致了其低吞吐率、高译码延迟的缺点,因此对Polar码并行译码的研究受到了越来越多的关注。Amin等学者于2011年提出了SSC(SimplifiedSuccessive-Cancellation)算法(ASimplifiedSuccessive-CancellationDecoderforPolarCodes,Amin,Alamdar-Yazdi,FrankR.Kschischang,IEEECommunicationsLetters,15(12),2011:1378-1380.),SSC算法中定义了RATE0和RATE1两种节点。当节点的叶子全为固定位时,节点是RATE0节点,全为信息位时,节点是RATE1节点。这两种节点可直接译码,不需要遍历子树,SSC算法通过裁剪SC算法的译码树,减少了需要激活的节点数量,因此具有更高的吞吐率。在SSC算法的基础上,GabiSarkis等学者于2013年提出了ML-SSC(MaxLikelihoodSimplifiedSuccessive-Cancellation)算法(IncreasingtheThroughputofPolarDecoders,GabiSarkis,WarrenJ.Gross.IEEECommunicationsLetters,17(4),2013:725-728.)。与SSC算法相比,ML-SSC算法增加了RATE0-RATE1节点,通过寻找估计值与LLR(Log-LikelihoodRatio,对数似然比)的乘积和的最大值,来获得该种节点的译码结果。激活节点数量的减少使ML-SSC算法具有更高的吞吐率,但相应增加了ML-SSC算法的计算量。同样在2013年,GabiSarkis等学者在SSC算法的基础上又提出了Fast-SSC(FastSimplifiedSuccessive-Cancellation)算法(FastPolarDecoders:AlgorithmandImplementation,GabiSarkis,PascalGiard,AlexanderVardy,ClaudeThibeault,WarrenJ.Gross,IEEEjournalonSelectedAreasinCommunications,32(5),2014:946-957.),Fast-SSC算法在SSC基础上增加了SPC和REP两种节点。SPC节点只有第一位是固定位,其余位是信息位,REP节点只有最后一位是信息位,其余位是固定位。通过对SSC算法译码树的裁剪,进一步提高了译码器的吞吐率。SSC、ML-SSC和Fast-SSC虽然具有较高的吞吐率,但译码延迟较长。LiBin等学者在2013年提出了Parallel-SC算法(ParallelDecodersofPolarCodes,BinLi,HuiShen,DavidTse,[2016-8-25],heep://arxiv.org/abs/1401.3753.),通过几个SC译码器同时工作,可以有效的降低译码延迟,但采用的SC算法使译码器的吞吐率较低。技术实现要素:为了寻求一种译码延迟低、吞吐率较高的译码方法,本发明提出了一种并行的极化码译码方法。本发明中所述极化码(Polar码)可由3个因素唯一的确定,码长N=2n,码率R=K/N,位置信息序列A。序列A是一个长度为N的(0,1)序列,0表示固定位,1表示信息位。一个长为N的Polar码字可以拆分成两个长为N/2的码字,Polar码可以表示成式(3)的形式,其相关性如式(4)所示。式(3)中x是一个长度为N的Polar码字,a和b是从x拆分出的两个长度为N/2的序列,v是由a和b合成x时的中间序列,n=log2N,表示F的(n-1)次克罗内克积,B是反序重排序列,B的定义如下:对L1N进行比特反序重排,得到序列S1N,即令Li=Sπ(i);比特反序函数π(i)定义如下:令i用二进制表示为(b1,b2,…,bm);则π(i)的值对应的二进制表示为(bm,bm-1,…,b1);本发明中所提出的并行的极化码译码方法具体步骤如下:步骤一、构建译码树,将长度为N的序列A按奇偶位拆分成两个序列Aa和Ab,在Aa中0的位置放置固定位节点,1的位置放置信息位节点,以放置好的N/2个节点为叶子构建一棵完全二叉树Ta,在Ab中0的位置放置固定位节点,1的位置放置信息位节点,以放置好的N/2个节点为叶子构建一棵完全二叉树Tb;所构建的两棵二叉树Ta和Tb分别是两个并行快速译码器PFDa和PFDb的译码树;两棵译码树中的父节点根据孩子节点类型定义;在两棵译码树中,当节点的叶子全为固定位时,节点是RATE0节点;当节点的叶子全为信息位时,节点是RATE1节点;当节点的叶子只有第一位是固定位,其余位是信息位时,节点是SPC节点;当节点的叶子只有最后一位是信息位,其余位是固定位时,节点是REP节点。当节点的叶子一半是固定位,一半是信息位时,节点是RATE0-RATE1节点;除去上述5类节点及其子树,剩余的节点是OTHER型节点。步骤二、译码器接收一帧信道α数据,所述信道α是一个序列,信道α的长度和译码使用的Polar码字的长度相等,都为N,其取值为(α0,α1…αN-1)。步骤三、利用信道α的前一半(α0…αN/2-1)初始化译码树Ta,利用后一半数据(αN/2…αN-1)初始化译码树Tb,译码树Ta用于并行快速译码器PFDa的译码,译码树Tb用于并行快速译码器PFDb的译码。步骤四、译码器PFDa和PFDb由根节点开始,按照深度优先的顺序同时激活两棵译码树的节点;根节点的输入是信道α,除根节点外其他节点的输入是中间值α,中间值α由F运算,如式(1)所示,或G运算,如式(2)所示,获得。中间值α是译码树中每个节点进行译码时的输入值,中间值α是个序列中间值α的序列长度和激活节点的序列长度nv相等。式(1)和式(2)中,αv表示激活节点的α值,αl表示激活节点左孩子的中间值α,αr表示激活节点右孩子的中间值α。激活节点的输出是该节点的子码估值,即序列β,其长度和该节点的序列长度相等,该节点长度等于该节点的叶子数。式(2)中,βl表示激活节点左孩子的子码估值。当两棵译码树中的RATE0、RATE1、REP或SPC节点被激活时,根据两棵译码树中激活节点的类型,译码器选择不同的译码方法计算节点的子码估值β1)当PFDa和PFDb中的激活节点同为RATE0节点时,两节点合称为RATE0-P节点;此时,PFDa和PFDb中该节点的子码估值β同时被判定为0,即式(10)所示。βa[i]=βb[i]=0,0≤i<nv(10)2)当PFDa和PFDb中的激活节点同为RATE1节点时,两节点合称为RATE1-P节点;当RATE1-P节点被激活,PFDa和PFDb根据式(11)进行独立译码,分别获得两个子码估值βa和βb。3)当PFDa中的激活节点为SPC节点,PFDb中的激活节点为RATE1节点时,两节点合称为RATE1B节点,当RATE1B节点被激活,首先根据式(12)组合两个译码器中相应激活节点的中间值α,之后对组合得到的中间值α进行硬判决,如式(13)所示,判决结果用序列HD表示。由于硬判决只有0和1两种结果,因此序列HD是一个只含0、1的序列。之后对判决结果进行奇偶校验,即检测序列HD中1的个数,如式(14)所示,校验结果用parity表示。如果HD中有偶数个1,即满足奇偶校验,则硬判决结果就是节点的子码估值β,如果HD中有奇数个1,即不满足奇偶校验,则寻找绝对值最小的中间值α的判决结果,并对该判决结果进行取反运算,如果该判决结果是0,取反后变为1,如果该判决结果是1,取反后变为0。取反运算后的HD序列为该节点的子码估值β,如式(15)和式(16)所示,其中j表示绝对值最小的中间值α的标号。α=[αaαb](12)j=argimin|α[i]|,0≤i<nv(15)4)当PFDa和PFDb中的激活节点同为REP节点时,两节点合称为REP-P节点,当REP-P节点被激活时,PLDa和PLDb根据式(17)独立译码,分别获得两个子码估值βa和βb。5)当PFDa中的激活节点为RATE0节点,PFDb中的激活节点为REP节点时,两节点合称为REPB节点,两个REPB节点的译码结果相同,是对两个节点共2×nv个中间值α和的硬判决,根据式(18)和式(19),获得两个子码估值βa和βb。6)当PFDa和PFDb中的激活节点同为SPC节点时,两节点合称为SPC-P节点,。当SPC-P节点被激活,PFDa和PFDb根据式(15)(16)(17)(18)(19)独立译码,分别获得两个子码估值βa和βb。7)当PFDa中的激活节点为RATE0-RATE1节点,PFDb中的激活节点为SPC节点时,两节点合称为SPCB1节点。当SPCB1节点被激活,PFDa将RATE0-RATE1节点的中间值α作为F运算的输入做一次F运算,运算结果用αa表示。PFDb将SPC节点的中间值α作为F运算的输入做一次F运算,运算结果用αb表示。将αa和αb作为公式(18)的输入计算α,将α作为公式(19)的输入,公式(19)的输出βa用βa0表示,公式(19)的另一个输出βb用βb0表示。之后PFDa将αa和βa0作为G运算的输入做一个G运算,按照正数为0负数为1的规则,将G运算的结果转换成只含0、1的序列,用βa1表示,PFDb将αb和βb0作为G运算的输入做一个G运算,同样按照正数为0负数为1的规则将运算结果转换成只含0、1的序列,用βb1表示。将[βa0,βa1]作为公式(20)的输入,公式(20)的输出就是RATE0-RATE1节点的β值,将[βb0,βb1]作为公式(21)的输入,公式(21)的输出就是SPC节点的β值。8)当PFDa中的激活节点为REP节点,PFDb中的激活节点为SPC节点时,两节点合称为SPCB2节点。当SPCB2节点被激活,PFDa将REP节点的中间值α作为F运算的输入做一次F运算,运算结果用αa表示。PFDb将SPC节点的中间值α作为F运算的输入做一次F运算,运算结果用αb表示。将αa和αb作为公式(18)的输入计算α,将α作为公式(19)的输入,公式(19)的输出βa用βa0表示,公式(19)的另一个输出βb用βb0表示。之后PFDa将αa和βa0作为G运算的输入做一个G运算,PFDb将αb和βb0作为G运算的输入做一个G运算。将两个G运算的结果带入公式(12),计算完公式(12)之后,再利用公式(13)(14)(15)(16)计算REP节点和SPC节点的β,分别用βa0和βb0表示。将βa0作为公式(20)的输入,公式(20)的输出就是REP节点的β值,将βb0作为公式(21)的输入,公式(21)的输出就是SPC节点的β值。当OTHER型节点被激活时,译码器计算下一个激活节点的中间值α,为译码下一个节点做准备。步骤五、当译码器PFDa和PFDb中的激活节点是RATE0、RATE1、REP、SPC时,将该节点β值乘以生成矩阵G获得局部码字估值u,完成一个激活节点的译码;所述矩阵其中m=log2nv,表示F的m次克罗内克积,B为反序重排序列。步骤六、译码器PFDa和PFDb更新激活节点号,激活下一个节点;步骤七、重复步骤四至步骤六,至两棵译码树中所有的节点被激活;步骤八、将译码器PFDa所有的局部码字估值按获得的顺序拼接,就是译码器PFDa的码字估值,将译码器PFDb所有的局部码字估值按获得的顺序拼接,就是译码器PFDb的码字估值。将译码器PFDa的码字估值与译码器PFDb的码字估值异或运算,并替换译码器PFDa的码字估值。步骤九、将译码器PFDa的码字估值作为序列的前一半,即译码器PFDb的码字估值作为序列的后一半,即合并两个译码器的码字估值,获得序列即步骤十、输出序列一帧信道α数据的译码结束。一种用于实现该译码方法的译码装置,包括:信道α存储器、中间值αa存储器、中间值αb存储器、子码估值βa存储器、子码估值βb存储器、Ga乘生成矩阵模块、Gb乘生成矩阵模块、组合模块、控制器和并行的译码器PFDa和PFDb。信道α存储器接收到的信道α分为两部分分别送入中间值αa存储器和中间值αb存储器,中间值αa存储器和中间值αb存储器分别用于存储计算过程中的中间值αa和中间值αb;子码估值βa存储器和子码估值βa存储器分别用于存储计算过程中的子码估值βa和子码估值βa;Ga乘生成矩阵模块和Gb乘生成矩阵模块分别用于生成矩阵G并获得矩阵G与子码估值βa和子码估值βa的乘积,即各自的局部码字估值u;模块将Ga乘生成矩阵模块和Gb乘生成矩阵模块获得的局部码字估值u合并,输出序列并行的译码器PFDa和PFDb分别读取中间值αa存储器、中间值αb存储器、子码估值βa存储器和子码估值βa存储器中的中间值αa、中间值αb存储器、子码估值βa和子码估值βa,并将计算得到的激活节点中间值αa和中间值αb存入中间值αa存储器和中间值αb存储器,将子码估值βa和子码估值βa存入子码估值βa存储器和子码估值βa存储器;控制器用于控制其他各个模块按照所述译码方法完成译码的过程。并行的译码器PFDa和PFDb中包含如下运算架构:1)F运算用来求激活节点左孩子的α值,其硬件架构如图2所示,选择两个相邻α值的符号做异或运算,作为输出的符号,选择较小的绝对值作为输出的数值位。2)G运算用来获得激活节点右孩子的α值,硬件架构如图3所示。G运算有三个参数,除了激活节点本身的两个α值,还需要左孩子反馈的β值即βl。β值不同,对两个α的运算不同,当β为0时,两个α相加,当β为1时,两个α相减。3)C运算将激活节点左孩子反馈来的βl和右孩子反馈来的βr计算自身的β值,硬件架构如图4所示,其中偶数位的β值是βl与βr的异或,奇数位的β值与βr相等。4)REP和REPB运算分别用来计算REP节点和REPB节点的β值,两个都是累加运算,硬件架构如图5所示,根据REP节点和REPB节点的特殊结构,对激活节点的所有α值求和,对求和结果取符号位,便是激活节点的β值,其β值为全0或全1序列。5)SPC运算和RATE1B运算分别用来求SPC节点和RATE1B节点的β值,根据RATE1B节点的特殊结构,其实质上是一个较长的SPC节点,因此具有和SPC运算相同的硬件架构,如图6所示。首先获取输入的符号位,并对其进行奇偶校验,若满足校验则符号位便是激活节点的β值,若不满足校验,对绝对值最小的符号位进去取反,取反后的结果作为激活节点的β值。6)SPCB1运算用来计算SPCB1节点的β值,其硬件架构如图7所示,SPCB1节点的结构比较复杂,首先需要将SPCB1节点拆成一个REP节点,一个RATE1节点,通过F和G运算分别计算两个节点的α值,再将REP运算的结果和G运算的符号位合并成最终的β值。7)SPCB2运算用来计算SPCB2节点的β值,其硬件架构如图8所示,首先需要将一个SPCB2节点拆分成一个REP节点和一个SPC节点,利用F运算和G运算分别计算两个节点的α值,在根据REP运算和SPC运算计算两个节点的β值,经过合并最终获得激活节点的β值。本发明的有益效果:本发明公开的极化码的译码方法,针对Fast-SSC算法高译码延迟的缺点,提出了并行快速方法,由两个并行的Fast-SSC译码器组成,有效降低了Fast-SSC算法的译码延迟。与Fast-SSC具有相同的误码率,但译码速度比Fast-SSC算法更快。当两个Fast-SSC译码器并行时,并行度比Fast-SSC算法提高40%左右。附图说明图1并行的极化码译码装置架构;图2F运算的硬件架构;图3G运算的硬件架构;图4C运算的硬件架构;图5REP和REPB运算的硬件架构;图6SPC和RATE1B运算的硬件架构;图7SPCB1运算的硬件架构;图8SPCB2运算的硬件架构;图9并行的极化码译码流程图;图10RATE0-P节点示意图;图11RATE1-P节点示意图;图12RATE1N节点示意图;图13REP-P节点示意图;图14REPN节点示意图;图15SPC节点示意图;图16SPCB1节点及译码方法示意图;图17SPCB2节点及译码方法示意图;图18误比特率曲线;具体实施方式本实施例中以所提出的并行的极化码译码方法,如图9所示,具体步骤如下:本实施例码长N=1024,码率R=0.5;位置信息A=[0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000010000000000000000000000000000000100000000000101110001011101111111000000000000000000000000000000000000000000000000000000000000011100000000000000000000000100010111000000010001011100111111111111110000000000000001000000010001111100000011011111110111111111111111000101110111111101111111111111110111111111111111111111111111111100000000000000000000000000000000000000000000000100000001000101110000000000000001000000010111111100000111011111110111111111111111000000000000011100010111011111110001011101111111111111111111111100011111111111111111111111111111111111111111111111111111111111110000000100010111000101111111111100111111111111111111111111111111011111111111111111111111111111111111111111111111111111111111111101111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111];步骤一、构建译码树,将序列A按奇偶位拆分成两个序列Aa=[00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010111000000000000000000000000000000010000000000000001000000010111111100000000000000110001011101111111000101110111111101111111111111110000000000000000000000000000000100000000000001110001011101111111000000010001011100010111111111110011111111111111111111111111111100000001000111110111111111111111011111111111111111111111111111110111111111111111111111111111111111111111111111111111111111111111];Ab=[00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100010111000000000000000000000000000000010000000000000001000000010111111100000000000000110001011101111111000101110111111101111111111111110000000000000000000000000000000100000000000001110001011101111111000000010001011100010111111111110011111111111111111111111111111100000001000111110111111111111111011111111111111111111111111111110111111111111111111111111111111111111111111111111111111111111111];在Aa中0的位置放置固定位节点,1的位置放置信息位节点,以放置好的512个节点为叶子构建一棵完全二叉树Ta,在Ab中0的位置放置固定位节点,1的位置放置信息位节点,以放置好的512个节点为叶子构建一棵完全二叉树Tb;所构建的两棵二叉树Ta和Tb分别是两个并行快速译码器PFDa和PFDb的译码树;两棵译码树中的父节点根据孩子节点类型定义;在两棵译码树中,当节点的叶子全为固定位时,节点是RATE0节点;当节点的叶子全为信息位时,节点是RATE1节点;当节点的叶子只有第一位是固定位,其余位是信息位时,节点是SPC节点;当节点的叶子只有最后一位是信息位,其余位是固定位时,节点是REP节点。当节点的叶子一半是固定位,一半是信息位时,节点是RATE0-RATE1节点;除去上述5类节点及其子树,剩余的节点是OTHER型节点。Ta和Tb中的节点如表1所示。表1节点类型TaTbRATE0910RATE12224REP1413SPC1514RATE0-RATE120OTHER5960步骤二、译码器接收一帧信道α数据,所述信道α是一个序列,信道α的长度和译码使用的Polar码字的长度相等,都为1024,其取值为(α0,α1…α1023)。步骤三、利用信道α的前一半(α0…α511)初始化译码树Ta,利用后一半数据(α512…α1023)初始化译码树Tb,译码树Ta用于并行快速译码器PFDa的译码,译码树Tb用于并行快速译码器PFDb的译码。步骤四、译码器PFDa和PFDb由根节点开始,按照深度优先的顺序同时激活两棵译码树的节点;根节点的输入是信道α,除根节点外其他节点的输入是中间值α,中间值α由F运算,如式(1)所示,或G运算,如式(2)所示,获得。中间值α是译码树中每个节点进行译码时的输入值,中间值α是个序列,中间值α的序列长度和激活节点的序列长度nv相等。式(1)和式(2)中,αv表示激活节点的中间值α,αl表示激活节点左孩子的中间值α,αr表示激活节点右孩子的中间值α。激活节点的输出是该节点的子码估值,即序列β,其长度和该节点的长度相等,该节点长度等于该节点的叶子数。式(2)中,βl表示激活节点左孩子的子码估值。当两棵译码树中的RATE0、RATE1、REP或SPC节点被激活时,根据两棵译码树中激活节点的类型,译码器选择不同的译码方法计算节点的子码估值β:1)当PFDa和PFDb中的激活节点同为RATE0节点时,两节点合称为RATE0-P节点;此时,PFDa和PFDb中该节点的子码估值β同时被判定为0,即式(10)所示。βa[i]=βb[i]=0,0≤i<nv(10)2)当PFDa和PFDb中的激活节点同为RATE1节点时,两节点合称为RATE1-P节点;当RATE1-P节点被激活,PFDa和PFDb根据式(11)进行独立译码,分别获得两个子码估值βa和βb。3)当PFDa中的激活节点为SPC节点,PFDb中的激活节点为RATE1节点时,两节点合称为RATE1B节点,当RATE1B节点被激活,首先根据式(12)组合两个译码器中相应激活节点的中间值α,之后对组合得到的中间值α进行硬判决,如式(13)所示,判决结果用序列HD表示。由于硬判决只有0和1两种结果,因此序列HD是一个只含0、1的序列。之后对判决结果进行奇偶校验,即检测序列HD中1的个数,如式(14)所示,校验结果用parity表示。如果HD中有偶数个1,即满足奇偶校验,则硬判决结果就是节点的子码估值β,如果HD中有奇数个1,即不满足奇偶校验,则寻找绝对值最小的中间值α的判决结果,并对该判决结果进行取反运算,如果该判决结果是0,取反后变为1,如果该判决结果是1,取反后变为0。取反运算后的HD序列为该节点的子码估值β,如式(15)和式(16)所示,其中j表示绝对值最小的中间值α的标号。α=[αaαb](12)j=argimin|α[i]|,0≤i<nv(15)4)当PFDa和PFDb中的激活节点同为REP节点时,两节点合称为REP-P节点,当REP-P节点被激活时,PLDa和PLDb根据式(17)独立译码,分别获得两个子码估值βa和βb。5)当PFDa中的激活节点为RATE0节点,PFDb中的激活节点为REP节点时,两节点合称为REPB节点,两个REPB节点的译码结果相同,是对两个节点共2×nv个中间值α和的硬判决,根据式(18)和式(19),获得两个子码估值βa和βb。6)当PFDa和PFDb中的激活节点同为SPC节点时,两节点合称为SPC-P节点,。当SPC-P节点被激活,PFDa和PFDb根据式(15)(16)(17)(18)(19)独立译码,分别获得两个子码估值βa和βb。7)当PFDa中的激活节点为RATE0-RATE1节点,PFDb中的激活节点为SPC节点时,两节点合称为SPCB1节点。当SPCB1节点被激活,PFDa将RATE0-RATE1节点的中间值α作为F运算的输入做一次F运算,运算结果用αa表示。PFDb将SPC节点的中间值α作为F运算的输入做一次F运算,运算结果用αb表示。将αa和αb作为公式(18)的输入计算α,将α作为公式(19)的输入,公式(19)的输出βa用βa0表示,公式(19)的另一个输出βb用βb0表示。之后PFDa将αa和βa0作为G运算的输入做一个G运算,按照正数为0负数为1的规则,将G运算的结果转换成只含0、1的序列,用βa1表示,PFDb将αb和βb0作为G运算的输入做一个G运算,同样按照正数为0负数为1的规则将运算结果转换成只含0、1的序列,用βb1表示。将[βa0,βa1]作为公式(20)的输入,公式(20)的输出就是RATE0-RATE1节点的β值,将[βb0,βb1]作为公式(21)的输入,公式(21)的输出就是SPC节点的β值。8)当PFDa中的激活节点为REP节点,PFDb中的激活节点为SPC节点时,两节点合称为SPCB2节点。当SPCB2节点被激活,PFDa将REP节点的中间值α作为F运算的输入做一次F运算,运算结果用αa表示。PFDb将SPC节点的中间值α作为F运算的输入做一次F运算,运算结果用αb表示。将αa和αb作为公式(18)的输入计算α,将α作为公式(19)的输入,公式(19)的输出βa用βa0表示,公式(19)的另一个输出βb用βb0表示。之后PFDa将αa和βa0作为G运算的输入做一个G运算,PFDb将αb和βb0作为G运算的输入做一个G运算。将两个G运算的结果带入公式(12),计算完公式(12)之后,再利用公式(13)(14)(15)(16)计算REP节点和SPC节点的β,分别用βa0和βb0表示。将βa0作为公式(20)的输入,公式(20)的输出就是REP节点的β值,将βb0作为公式(21)的输入,公式(21)的输出就是SPC节点的β值。当OTHER型节点被激活时,译码器计算下一个激活节点的中间值α,为译码下一个节点做准备。步骤五、当PFDa和PFDb中的激活节点是RATE0、RATE1、REP、SPC时,将该节点β值乘以生成矩阵G获得局部码字估值u,完成一个激活节点的译码;所述矩阵其中m=log2nv,表示F的m次克罗内克积,B为反序重排序列。步骤六、译码器PFDa和PFDb更新激活节点号,激活下一个节点;步骤七、重复步骤四至步骤六,至两棵译码树中所有的节点被激活;步骤八、将译码器PFDa所有的局部码字估值按获得的顺序拼接,就是译码器PFDa的码字估值,将译码器PFDb所有的局部码字估值按获得的顺序拼接,就是译码器PFDb的码字估值。将PFDa的码字估值与译码器PFDb的码字估值异或运算,并替换译码器PFDa的码字估值。步骤九、将译码器PFDa的码字估值作为序列的前一半译码器PFDb的码字估值作为序列的后一半合并两个译码器的码字估值,获得序列即步骤十、输出序列一帧信道α数据的译码结束。本实施例中所采用的一种用于实现该译码方法的译码器的架构如图1所示,包括:信道α存储器、中间值αa存储器、中间值αb存储器、子码估值βa存储器、子码估值βb存储器、Ga乘生成矩阵模块、Gb乘生成矩阵模块、组合模块、控制器和并行的译码器PFDa和PFDb。信道α存储器接收到的信道α分为两部分分别送入中间值αa存储器和中间值αb存储器,中间值αa存储器和中间值αb存储器分别用于存储计算过程中的中间值αa和中间值αb;子码估值βa存储器和子码估值βa存储器分别用于存储计算过程中的子码估值βa和子码估值βa;Ga乘生成矩阵模块和Gb乘生成矩阵模块分别用于生成矩阵G并获得矩阵G与子码估值βa和子码估值βa的乘积,即各自的局部码字估值u;模块将Ga乘生成矩阵模块和Gb乘生成矩阵模块获得的局部码字估值u合并,输出序列并行的译码器PFDa和PFDb分别读取中间值αa存储器、中间值αb存储器、子码估值βa存储器和子码估值βa存储器中的中间值αa、中间值αb存储器、子码估值βa和子码估值βa,并将计算得到的激活节点中间值αa和中间值αb存入中间值αa存储器和中间值αb存储器,将子码估值βa和子码估值βa存入子码估值βa存储器和子码估值βa存储器;控制器用于控制其他各个模块按照所述译码方法完成译码的过程。并行的译码器PFDa和PFDb中包含如下运算架构:1)F运算用来求激活节点左孩子的α值,其硬件架构如图2所示,选择两个相邻α值的符号做异或运算,作为输出的符号,选择较小的绝对值作为输出的数值位。2)G运算用来获得激活节点右孩子的α值,硬件架构如图3所示。G运算有三个参数,除了激活节点本身的两个α值,还需要左孩子反馈的β值即βl。β值不同,对两个α的运算不同,当β为0时,两个α相加,当β为1时,两个α相减。3)C运算将激活节点左孩子反馈来的βl和右孩子反馈来的βr计算自身的β值,硬件架构如图4所示,其中偶数位的β值是βl与βr的异或,奇数位的β值与βr相等。4)REP和REPB运算分别用来计算REP节点和REPB节点的β值,两个都是累加运算,硬件架构如图5所示,根据REP节点和REPB节点的特殊结构,对激活节点的所有α值求和,对求和结果取符号位,便是激活节点的β值,其β值为全0或全1序列。5)SPC运算和RATE1B运算分别用来求SPC节点和RATE1B节点的β值,根据RATE1B节点的特殊结构,其实质上是一个较长的SPC节点,因此具有和SPC运算相同的硬件架构,如图6所示。首先获取输入的符号位,并对其进行奇偶校验,若满足校验则符号位便是激活节点的β值,若不满足校验,对绝对值最小的符号位进去取反,取反后的结果作为激活节点的β值。6)SPCB1运算用来计算SPCB1节点的β值,其硬件架构如图7所示,SPCB1节点的结构比较复杂,首先需要将SPCB1节点拆成一个REP节点,一个RATE1节点,通过F和G运算分别计算两个节点的α值,再将REP运算的结果和G运算的符号位合并成最终的β值。7)SPCB2运算用来计算SPCB2节点的β值,其硬件架构如图8所示,首先需要将一个SPCB2节点拆分成一个REP节点和一个SPC节点,利用F运算和G运算分别计算两个节点的α值,在根据REP运算和SPC运算计算两个节点的β值,经过合并最终获得激活节点的β值。效果验证本发明方法的误比特率与Fast-SSC算法和Parallel-SC算法接近,误比特率曲线如图18所示。本发明方法同时具有吞吐率高和延迟小的特点。定义并行的极化码译码方法在译码并行度与Fast-SSC相比的增长率T如式(22)所示,当被拆分成2个译码器PFD时并行度增长率如表2所示。表2当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1