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

文档序号:12489764阅读:来源:国知局

技术特征:

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相等;

<mrow> <mtable> <mtr> <mtd> <mrow> <msub> <mi>&alpha;</mi> <mn>1</mn> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <mi>F</mi> <mrow> <mo>(</mo> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mo>&lsqb;</mo> <mn>2</mn> <mo>*</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>,</mo> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mo>&lsqb;</mo> <mn>2</mn> <mo>*</mo> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>&rsqb;</mo> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>=</mo> <mi>s</mi> <mi>i</mi> <mi>g</mi> <mi>n</mi> <mrow> <mo>(</mo> <mrow> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mrow> <mo>&lsqb;</mo> <mrow> <mn>2</mn> <mo>*</mo> <mi>i</mi> </mrow> <mo>&rsqb;</mo> </mrow> </mrow> <mo>)</mo> </mrow> <mi>s</mi> <mi>i</mi> <mi>g</mi> <mi>n</mi> <mrow> <mo>(</mo> <mrow> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mrow> <mo>&lsqb;</mo> <mrow> <mn>2</mn> <mo>*</mo> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> <mo>&rsqb;</mo> </mrow> </mrow> <mo>)</mo> </mrow> <mi>min</mi> <mrow> <mo>(</mo> <mrow> <mo>|</mo> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mrow> <mo>&lsqb;</mo> <mrow> <mn>2</mn> <mo>*</mo> <mi>i</mi> </mrow> <mo>&rsqb;</mo> </mrow> <mo>|</mo> <mo>,</mo> <mo>|</mo> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mrow> <mo>&lsqb;</mo> <mrow> <mn>2</mn> <mo>*</mo> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> <mo>&rsqb;</mo> </mrow> <mo>|</mo> </mrow> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> </mtable> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>1</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mtable> <mtr> <mtd> <mrow> <msub> <mi>&alpha;</mi> <mi>r</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <mi>G</mi> <mrow> <mo>(</mo> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mo>&lsqb;</mo> <mn>2</mn> <mo>*</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>,</mo> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mo>&lsqb;</mo> <mn>2</mn> <mo>*</mo> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>&rsqb;</mo> <mo>,</mo> <msub> <mi>&beta;</mi> <mi>l</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>)</mo> </mrow> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mo>=</mo> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mrow> <mo>&lsqb;</mo> <mrow> <mn>2</mn> <mo>*</mo> <mi>i</mi> <mo>+</mo> <mn>1</mn> </mrow> <mo>&rsqb;</mo> </mrow> <mo>-</mo> <mrow> <mo>(</mo> <mrow> <mn>2</mn> <msub> <mi>&beta;</mi> <mi>l</mi> </msub> <mrow> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> </mrow> <mo>-</mo> <mn>1</mn> </mrow> <mo>)</mo> </mrow> <msub> <mi>&alpha;</mi> <mi>v</mi> </msub> <mrow> <mo>&lsqb;</mo> <mrow> <mn>2</mn> <mo>*</mo> <mi>i</mi> </mrow> <mo>&rsqb;</mo> </mrow> </mrow> </mtd> </mtr> </mtable> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>2</mn> <mo>)</mo> </mrow> </mrow>

式(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

<mrow> <mtable> <mtr> <mtd> <mrow> <msub> <mi>&beta;</mi> <mi>a</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>0</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mtable> <mtr> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&alpha;</mi> <mi>a</mi> </msub> <mrow> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> </mrow> <mo>&GreaterEqual;</mo> <mn>0</mn> </mrow> </mtd> </mtr> </mtable> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&beta;</mi> <mi>b</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>0</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mtable> <mtr> <mtd> <mrow> <mi>i</mi> <mi>f</mi> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&alpha;</mi> <mi>b</mi> </msub> <mrow> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> </mrow> <mo>&GreaterEqual;</mo> <mn>0</mn> </mrow> </mtd> </mtr> </mtable> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> </mtr> </mtable> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>11</mn> <mo>)</mo> </mrow> </mrow>

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)

<mrow> <mi>H</mi> <mi>D</mi> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>0</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>&alpha;</mi> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>&GreaterEqual;</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>&alpha;</mi> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>&lt;</mo> <mn>0</mn> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>13</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mi>p</mi> <mi>a</mi> <mi>r</mi> <mi>i</mi> <mi>t</mi> <mi>y</mi> <mo>=</mo> <munderover> <mrow> <mi></mi> <mo>&CirclePlus;</mo> </mrow> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <mrow> <msub> <mi>N</mi> <mi>i</mi> </msub> <mo>-</mo> <mn>1</mn> </mrow> </munderover> <mi>H</mi> <mi>D</mi> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>14</mn> <mo>)</mo> </mrow> </mrow>

j=argi min|α[i]|,0≤i<nv (15)

<mrow> <mi>&beta;</mi> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mi>H</mi> <mi>D</mi> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>&CirclePlus;</mo> <mi>p</mi> <mi>a</mi> <mi>r</mi> <mi>i</mi> <mi>t</mi> <mi>y</mi> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>i</mi> <mo>=</mo> <mi>j</mi> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mi>H</mi> <mi>D</mi> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>16</mn> <mo>)</mo> </mrow> </mrow>

4)当PFDa和PFDb中的激活节点同为REP节点时,两节点合称为REP-P节点,当REP-P节点被激活时,PLDa和PLDb根据式(17)独立译码,分别获得两个子码估值βa和βb

<mrow> <mtable> <mtr> <mtd> <mrow> <msub> <mi>&beta;</mi> <mi>a</mi> </msub> <mrow> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>0</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <msub> <mi>n</mi> <mi>v</mi> </msub> </munderover> <msub> <mi>&alpha;</mi> <mi>a</mi> </msub> <mrow> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> </mrow> <mo>&GreaterEqual;</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> <mtd> <mrow> <msub> <mi>&beta;</mi> <mi>b</mi> </msub> <mrow> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> </mrow> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>0</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <munderover> <mi>&Sigma;</mi> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <msub> <mi>n</mi> <mi>v</mi> </msub> </munderover> <msub> <mi>&alpha;</mi> <mi>b</mi> </msub> <mrow> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> </mrow> <mo>&GreaterEqual;</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> </mrow> </mtd> </mtr> </mtable> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>17</mn> <mo>)</mo> </mrow> </mrow>

5)当PFDa中的激活节点为RATE0节点,PFDb中的激活节点为REP节点时,两节点合称为REPB节点,两个REPB节点的译码结果相同,是对两个节点共2×nv个中间值α和的硬判决,根据式(18)和式(19),获得两个子码估值βa和βb

<mrow> <mi>&alpha;</mi> <mo>=</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <msub> <mi>n</mi> <mi>v</mi> </msub> </munderover> <msub> <mi>&alpha;</mi> <mi>a</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>+</mo> <munderover> <mo>&Sigma;</mo> <mrow> <mi>i</mi> <mo>=</mo> <mn>0</mn> </mrow> <msub> <mi>n</mi> <mi>v</mi> </msub> </munderover> <msub> <mi>&alpha;</mi> <mi>b</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>18</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <msub> <mi>&beta;</mi> <mi>a</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <msub> <mi>&beta;</mi> <mi>b</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <mn>0</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>&alpha;</mi> <mo>&GreaterEqual;</mo> <mn>0</mn> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <mn>1</mn> <mo>,</mo> </mrow> </mtd> <mtd> <mrow> <mi>o</mi> <mi>t</mi> <mi>h</mi> <mi>e</mi> <mi>r</mi> <mi>w</mi> <mi>i</mi> <mi>s</mi> <mi>e</mi> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>19</mn> <mo>)</mo> </mrow> </mrow>

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表示;将[βa0a1]作为公式(20)的输入,公式(20)的输出就是RATE0-RATE1节点的β值,将[βb0b1]作为公式(21)的输入,公式(21)的输出就是SPC节点的β值;

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>&beta;</mi> <mi>a</mi> </msub> <mo>&lsqb;</mo> <mn>2</mn> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <mo>=</mo> <msub> <mover> <mi>&beta;</mi> <mo>^</mo> </mover> <mi>a</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>&CirclePlus;</mo> <msub> <mover> <mi>&beta;</mi> <mo>^</mo> </mover> <mi>a</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>+</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>/</mo> <mn>2</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>&beta;</mi> <mi>a</mi> </msub> <mo>&lsqb;</mo> <mn>2</mn> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>&rsqb;</mo> <mo>=</mo> <msub> <mover> <mi>&beta;</mi> <mo>^</mo> </mover> <mi>a</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>+</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>/</mo> <mn>2</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>/</mo> <mn>2</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>20</mn> <mo>)</mo> </mrow> </mrow>

<mrow> <mfenced open = "{" close = ""> <mtable> <mtr> <mtd> <mrow> <msub> <mi>&beta;</mi> <mi>b</mi> </msub> <mo>&lsqb;</mo> <mn>2</mn> <mi>i</mi> <mo>&rsqb;</mo> <mo>=</mo> <msub> <mover> <mi>&beta;</mi> <mo>^</mo> </mover> <mi>b</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>&rsqb;</mo> <mo>&CirclePlus;</mo> <msub> <mover> <mi>&beta;</mi> <mo>^</mo> </mover> <mi>b</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>+</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>/</mo> <mn>2</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> <mtr> <mtd> <mrow> <msub> <mi>&beta;</mi> <mi>b</mi> </msub> <mo>&lsqb;</mo> <mn>2</mn> <mi>i</mi> <mo>+</mo> <mn>1</mn> <mo>&rsqb;</mo> <mo>=</mo> <msub> <mover> <mi>&beta;</mi> <mo>^</mo> </mover> <mi>b</mi> </msub> <mo>&lsqb;</mo> <mi>i</mi> <mo>+</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>/</mo> <mn>2</mn> <mo>&rsqb;</mo> </mrow> </mtd> </mtr> </mtable> </mfenced> <mo>,</mo> <mn>0</mn> <mo>&le;</mo> <mi>i</mi> <mo>&lt;</mo> <msub> <mi>n</mi> <mi>v</mi> </msub> <mo>/</mo> <mn>2</mn> <mo>-</mo> <mo>-</mo> <mo>-</mo> <mrow> <mo>(</mo> <mn>21</mn> <mo>)</mo> </mrow> </mrow>

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运算计算两个节点的β值,经过合并最终获得激活节点的β值。

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