发明名称 一种用于Turbo码的译码方法
摘要 本发明公开了一种用于Turbo码的译码方法,首先将接收信息比特y<SUB>k</SUB><SUP>s</SUP>和第一接收校验比特y<SUB>1k</SUB><SUP>p</SUP>输入第一SISO译码模块(11),可以得到新外信息l<SUB>1k</SUB>′,将其交织(21)后得到先验信息z<SUB>2k</SUB>和第二接收校验比特y<SUB>2k</SUB><SUP>p</SUP>输入第二SISO译码模块(31),然后将其输出的新外信息l<SUB>2k</SUB>′解交织(22)反馈到第一SISO译码模块(11),此过程重复进行若干次,最后输出完全信息Λ<SUB>k</SUB>,经解交织(41)和硬判决(51)得到译码结果;本发明采用了改进的Log-MAP算法、纠正函数拟合、有效抑制溢出方法、特殊的尾比特处理及滑动窗等措施,在不降低译码性能的情况下,有效地减少了运算量和译码延迟时间,减少所需存储空间,解决了整个译码方法的不稳定问题,在实际中易于实现,可以广泛地应用于第三代移动通信系统中。
申请公布号 CN1234220C 申请公布日期 2005.12.28
申请号 CN02133933.3 申请日期 2002.10.18
申请人 重庆重邮信科股份有限公司 发明人 冉静;郑建宏;申敏
分类号 H04J13/00;H04Q7/20;H03M13/23;H03M13/00 主分类号 H04J13/00
代理机构 重庆市恒信专利代理有限公司 代理人 方红;胡荣珲
主权项 1.一种用于Turbo码的译码方法,其特征在于:包括Log-Map算法、纠正函数拟合、抑制溢出方法、尾比特处理及滑动窗等步骤;(1)Log-Map算法译码模块一(11)的输入为(yks,y1kp,z1k),译码模块二(31)的输入为(0,y2kp,z2k);使Turbo编码器的递归系统卷积码(RSC)I(02)被看作1/2码率,递归系统卷积码(RSC)II(03)被看作1/1码率,递归系统卷积码(RSC)II(03)的码字只是一个校验位,分支度量变为:<math> <mrow> <msup> <mi>&gamma;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>&RightArrow;</mo> <msub> <mi>s</mi> <mrow> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>=</mo> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>z</mi> <mrow> <mn>1</mn> <mi>k</mi> </mrow> </msub> <mo>&CenterDot;</mo> <msub> <mi>m</mi> <mi>k</mi> </msub> <mo>+</mo> <msub> <mi>L</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>y</mi> <mrow> <mn>1</mn> <mi>k</mi> </mrow> <mi>s</mi> </msubsup> <mo>&CenterDot;</mo> <msub> <mi>m</mi> <mi>k</mi> </msub> <mo>+</mo> <msub> <mi>L</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>y</mi> <mrow> <mn>2</mn> <mi>k</mi> </mrow> <mi>s</mi> </msubsup> <mo>&CenterDot;</mo> <msubsup> <mi>c</mi> <mrow> <mn>1</mn> <mi>k</mi> </mrow> <mi>p</mi> </msubsup> <mo>,</mo> <mi>DEC</mi> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <msub> <mi>z</mi> <mrow> <mn>2</mn> <mi>k</mi> </mrow> </msub> <mo>&CenterDot;</mo> <msub> <mi>m</mi> <mi>k</mi> </msub> <mo>+</mo> <msub> <mi>L</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>y</mi> <mrow> <mn>2</mn> <mi>k</mi> </mrow> <mi>p</mi> </msubsup> <mo>&CenterDot;</mo> <msubsup> <mi>c</mi> <mrow> <mn>2</mn> <mi>k</mi> </mrow> <mi>p</mi> </msubsup> <mo>,</mo> <mi>DEC</mi> <mn>2</mn> </mtd> </mtr> </mtable> </mfenced> </mrow> </math> 译码模块二(31)信息数据的交织省去;由于zk和Lc·yks是已知的输入,本算法设置新外信息<math> <mrow> <msubsup> <mi>l</mi> <mi>k</mi> <mo>&prime;</mo> </msubsup> <mo>=</mo> <msub> <mi>L</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>y</mi> <mi>k</mi> <mi>s</mi> </msubsup> <mo>+</mo> <msub> <mi>l</mi> <mi>k</mi> </msub> <mo>,</mo> </mrow> </math>因此Λk=zk+lk′,上述式中外信息可表示为:<math> <mrow> <msup> <mi>l</mi> <mi>k</mi> </msup> <mo>=</mo> <msup> <munder> <mi>max</mi> <msub> <mi>S</mi> <mn>1</mn> </msub> </munder> <mo>*</mo> </msup> <mo>[</mo> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>L</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>y</mi> <mi>k</mi> <mi>p</mi> </msubsup> <mo>&CenterDot;</mo> <msubsup> <mi>c</mi> <mi>k</mi> <mi>p</mi> </msubsup> <mo>+</mo> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mrow> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>]</mo> <mo>-</mo> <msup> <munder> <mi>max</mi> <msub> <mi>S</mi> <mn>0</mn> </msub> </munder> <mo>*</mo> </msup> <mo>[</mo> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>)</mo> </mrow> <mo>+</mo> <msub> <mi>L</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>y</mi> <mi>k</mi> <mi>p</mi> </msubsup> <mo>&CenterDot;</mo> <msubsup> <mi>c</mi> <mi>k</mi> <mi>p</mi> </msubsup> <mo>+</mo> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mrow> <mi>k</mi> <mo>+</mo> <mn>1</mn> </mrow> </msub> <mo>)</mo> </mrow> <mo>]</mo> </mrow> </math> 其中yks包含在译码模块一(11)的外信息中,并作为先验信息的一部分输入译码模块二(31),译码模块一(11)的新外信息l1k′为:<math> <mrow> <msubsup> <mi>l</mi> <mrow> <mn>1</mn> <mi>k</mi> </mrow> <mo>&prime;</mo> </msubsup> <mo>=</mo> <msub> <mi>l</mi> <mrow> <mn>1</mn> <mi>k</mi> </mrow> </msub> <mo>+</mo> <msub> <mi>L</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>y</mi> <mi>k</mi> <mi>s</mi> </msubsup> </mrow> </math> 其中l1k为译码模块一(11)直接输出的外信息;译码模块一(11)的新外信息经交织器(21)后输入到译码模块二(31)作为其先验信息,则译码模块二(31)有:<math> <mrow> <msub> <mi>z</mi> <mrow> <mn>2</mn> <mi>k</mi> </mrow> </msub> <mo>=</mo> <msub> <mrow> <mo>(</mo> <msubsup> <mi>l</mi> <mrow> <mn>1</mn> <mi>k</mi> </mrow> <mo>&prime;</mo> </msubsup> <mo>)</mo> </mrow> <mi>interleaver</mi> </msub> <mo>=</mo> <msub> <mrow> <mo>(</mo> <msub> <mi>z</mi> <mrow> <mn>2</mn> <mi>k</mi> </mrow> </msub> <mo>)</mo> </mrow> <mi>old</mi> </msub> <mo>+</mo> <msub> <mrow> <mo>(</mo> <msub> <mi>L</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>y</mi> <mi>k</mi> <mi>s</mi> </msubsup> <mo>)</mo> </mrow> <mi>interleaver</mi> </msub> </mrow> </math> 若译码模块二(31)输入的系统信息数据变为0,则译码模块二(31)的输出似然比为: Λ2k=z2k+l2k=z2k+l2k′其直接经解交织(22)后输入到译码模块一(11),在迭代完成后对输出对数似然比A2k进行解交织(41),然后硬判决(51),输出:A2k=l2k′+z2k;改进算法中,SISO译码模块一和二(11、31)的新外信息为:<math> <mrow> <msubsup> <mi>l</mi> <mi>k</mi> <mo>&prime;</mo> </msubsup> <mo>=</mo> <msub> <mi>&Lambda;</mi> <mi>k</mi> </msub> <mo>-</mo> <msub> <mi>z</mi> <mi>k</mi> </msub> <mo>=</mo> <msub> <mi>l</mi> <mi>k</mi> </msub> <mo>+</mo> <mfenced open='{' close=''> <mtable> <mtr> <mtd> <msub> <mi>L</mi> <mi>c</mi> </msub> <mo>&CenterDot;</mo> <msubsup> <mi>y</mi> <mi>k</mi> <mi>s</mi> </msubsup> <mo>,</mo> <mi>DEC</mi> <mn>1</mn> </mtd> </mtr> <mtr> <mtd> <mn>0</mn> <mo>,</mo> <mi>DEC</mi> <mn>2</mn> </mtd> </mtr> </mtable> </mfenced> </mrow> </math> (2)纠正函数拟合turbo码译码算法中,包括外信息lk、前向路径度量α′和后向路径度量β′的计算,在计算lk、α′和β′时均需要反复调用函数max*(x,y)=max(x,y)+fc(|y-x|),其中非线性的纠正函数为:fc(x)=ln(1+e-x) x≥0,采用数值分析的方法对纠正函数进行简化求得该函数的最佳拟合函数fc′(x)=-0.25*min(x,2.4544/Lc)来代替它进行译码,经简化求得的非线性纠正函数就由一个最小值运算和右移两位操作完成;(3)抑制溢出方法针对前/后向路径度量α′和β′随着递归的进行可能会产生溢出,采用一种负向在任意k时刻,每一个α′和β′均由它们减去该时刻零状态的α′和β′来代替,即:<math> <mrow> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>,</mo> <mi>bs</mi> <mo>)</mo> </mrow> <mo>&DoubleLeftArrow;</mo> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>,</mo> <mi>bs</mi> <mo>)</mo> </mrow> <mo>-</mo> <msup> <mi>&alpha;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>,</mo> <mn>0</mn> <mo>)</mo> </mrow> <mo>,</mo> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>,</mo> <mi>bs</mi> <mo>)</mo> </mrow> <mo>&DoubleLeftArrow;</mo> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>,</mo> <mi>bs</mi> <mo>)</mo> </mrow> <mo>-</mo> <msup> <mi>&beta;</mi> <mo>&prime;</mo> </msup> <mrow> <mo>(</mo> <msub> <mi>s</mi> <mi>k</mi> </msub> <mo>,</mo> <mn>0</mn> <mo>)</mo> </mrow> </mrow> </math> 其中bs表示每个状态;(4)尾比特处理将SISO译码模块一和二(11、31)的尾部外信息均进行以下处理,对译码模块一(11)的尾部外信息l_tail1和译码模块二(31)的尾部外信息l_tail2赋初值[0;0;0];每次迭代过程中,它们的值将随着译码模块一和二(11、31)的外信息的最后三位而变化,即: l_tail1=l1k(L+1:L+3) l_tail2=l2k(L+1:L+3)每次迭代过程中,译码模块一和二(11、31)的输入先验信息的尾比特分别为: z1k(L+1:L+3)=l_tail1<math> <mrow> <msub> <mi>z</mi> <mrow> <mn>2</mn> <mi>k</mi> </mrow> </msub> <mrow> <mo>(</mo> <mi>L</mi> <mo>+</mo> <mn>1</mn> <mo>:</mo> <mi>L</mi> <mo>+</mo> <mn>3</mn> <mo>)</mo> </mrow> <mo>=</mo> <mi>l</mi> <mo>_</mo> <mi>tail</mi> <mn>2</mn> <mo>+</mo> <msubsup> <mi>y</mi> <mi>k</mi> <mi>s</mi> </msubsup> <mrow> <mo>(</mo> <mi>L</mi> <mo>+</mo> <mn>1</mn> <mo>:</mo> <mi>L</mi> <mo>+</mo> <mn>3</mn> <mo>)</mo> </mrow> </mrow> </math> (5)滑动窗方法通过在一些相互交叠30位的256位长的存储跨度内分别执行改进的Log-MAP译码算法,删除重复部分,即可在每隔一段延时就可处理一块数据,并输出一段连续的软输出概率分布放入总的外信息lk,直到最后一块数据计算完,一个SISO译码过程结束。
地址 400037重庆市南岸区黄桷垭堡上圆1号