1.一种并行的极化码译码方法,具体步骤如下:
步骤一、构建译码树,将长度为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
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=argi min|α[i]|,0≤i
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, 表示m次的克罗内克积, B为反序重排序列;
步骤六、译码器PFDa和PFDb更新激活节点号,激活下一个节点;
步骤七、重复步骤四至步骤六,至两棵译码树中所有的节点被激活;
步骤八、将译码器PFDa所有的局部码字估值按获得的顺序拼接,就是译码器PFDa的码字估值,将译码器PFDb所有的局部码字估值按获得的顺序拼接,就是译码器PFDb的码字估值;
将译码器PFDa的码字估值与译码器PFDb的码字估值异或运算,并替换译码器PFDa的码字估值;
步骤九、将译码器PFDa的码字估值作为序列 的前一半,即 译码器PFDb的码字估值作为序列 的后一半,即 合并两个译码器的码字估值,获得序列 即
步骤十、输出序列 一帧信道α数据的译码结束。
2.一种用于权利要求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存储器和子码估值βb存储器中的中间值αa、中间值αb、子码估值βa和子码估值βa,并将计算得到的激活节点中间值αa和中间值αb存入中间值αa存储器和中间值αb存储器,将子码估值βa和子码估值βb存入子码估值βa存储器和子码估值βb存储器;
控制器用于控制其他各个模块按照所述译码方法完成译码的过程。
3.根据权利要求2所述的并行的极化码译码方法的译码装置,其特征在于,所述的并行的译码器PFDa和PFDb中包含如下运算架构:
1)F运算用来求激活节点左孩子的α值,其硬件架构如图2所示,选择两个相邻α值的符号做异或运算,作为输出的符号,选择较小的绝对值作为输出的数值位;
2)G运算用来获得激活节点右孩子的α值,硬件架构如图3所示;G运算有三个参数,除了激活节点本身的α值,还需要左孩子反馈的β值即βl;β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运算计算两个节点的β值,经过合并最终获得激活节点的β值。