一种提高Turbo码译码速率的译码方法

文档序号:7510495阅读:325来源:国知局
专利名称:一种提高Turbo码译码速率的译码方法
技术领域
本发明涉及一种用于移动通信系统中Turbo码的译码方法,特别涉及在第三代时分同步码分多址移动通信系统(简称TD-SCDMA系统)中提高Turbo码的译码速率的译码方法。
背景技术
Turbo码译码器由于采用了软输出迭代译码算法,充分利用了译码输出的软信息,在低信噪比下也具有优异的译码性能,使得它在深空通信、移动通信等系统中有广阔的应用前景。另外,Turbo码还采用了伪随机交织器分隔的递归系统卷积码(Recursive Systematic Convolutional Code,简称RSC)作为分量码,交织器除了抗信道突发错误外,还改变了码的重量分布,控制编码序列的距离特性,使重量谱窄带化,从而使Turbo码的整体纠错性能得以提高。
TD-SCDMA系统使用的Turbo码是一种带有内部交织器的并行级联码,由两个结构相同的RSC编码器并行级联而成,码率为1/2。
目前,TD-SCDMA系统Turbo码所采用的译码算法主要是对数域最大后验(maximum a posteriori in the logarithmic domain,简称Log-MAP)算法,可达到每个码元的译码错误概率最小。此类译码器的典型结构包括两个软输入软输出(Soft Input Soft Output,简称SISO)译码器,在译码算法中两个SISO译码器的输入信息均为系统信息、校检信息和先验信息。
在Turbo译码过程中,为降低存储前/后向状态度量所需的存储空间,通常采用滑动窗方法来进行译码运算,即把一帧长度为K的译码数据分成若干长度为L的子帧(L<K),以子帧为单位进行译码,相邻子帧间存在M个译码数据的交叠,用以降低后向状态度量的估计初始化误差。
在Turbo译码过程中还需要完成交织和解交织处理,所谓交织就是将数据序列中元素的位置进行重置,使输入序列尽可能的随机化,从而避免编码生成低重码字的信息序列在交织后编码仍然生成低重码字,降低译码性能。解交织是交织的逆过程,即恢复原始序列的过程。现有技术译码方法在经过SISO译码器运算得到一帧所有数据的外信息后,再进行交织或者解交织处理以得到先验信息,这样交织和解交织处理需要占用单独的时间,增加了译码时延。

发明内容
本发明的目的是提供一种低时延,节约存储空间,并且易于硬件实现的Turbo码译码方法。为实现以上目的,本发明译码方法采用了改进的Log-MAP算法、消除交织/解交织时延和并行滑动窗处理等措施。
本发明译码方法简化了SISO译码器结构,使其输入信息仅为校验信息和先验信息;并行滑动窗在计算当前子帧的前向状态度量的同时计算上一子帧的后向状态度量,且仅存储译码器的前向状态度量;将相应数据位置的外信息l2k解交织后从内存SBUF中读出并与系统信息相加作为输入SISO译码器一的先验信息z1k,其输出外信息l1k与系统信息相加,经交织后存储在内存SBUF中作为SISO译码器二的先验信息z2k,SISO译码器二输出的外信息l2k在SISO译码器一计算下一次迭代的前/后向状态度量的同时完成相应数据的解交织,并与系统信息相加作为SISO译码器一的先验信息z1k。
本发明译码方法简化了现有技术基于Log-MAP算法的Turbo译码器结构,简化了SISO译码器的输入,使其由1/2码率提高到1/1码率,这样可以降低计算的复杂度,提高译码速率。
本发明译码方法在对当前的滑动窗数据进行前向状态度量计算的同时,对上一滑动窗数据进行后向状态度量计算,且只需保存前向状态度量的结果,在不增加内存的前提下提高了译码速度。
本发明译码方法实现了交织和解交织与SISO译码器计算同时进行,降低了算法复杂度和计算时延,这样即节约了存储空间,又提高了译码速度。
通过现场可编程门阵列(简称FPGA)验证,本发明译码方法的译码速度是现有技术的2.5倍。
本发明译码方法可以广泛的应用于各种高速移动通信系统中。


图1是3GPP的Turbo码编码器结构示意2是现有技术LOG-MAP算法的Turbo译码器结构示意3是滑动窗法原理结构示意4是交织/解交织译码过程示意5是本发明译码方法译码器结构示意图下面结合附图和具体实施例对本发明译码方法作进一步的说明。
附图1是3GPP的Turbo码编码器结构示意图。由两个码率为1/2,结构相同的RSC编码器并行级联而成。基于RSC的Turbo码只需发送一个输入信息序列,直接输入RSC I进行编码,生成RSC I的校验序列,同时经交织后,输入RSCII,产生另一个校验序列。由于RSC I和RSCII由同一数据源驱动,鉴于RSC I的系统输出已在信道中传输,所以RSCII的系统输出完全是冗余的,因此,整个码率实际为1/3。
附图2是现有技术LOG-MAP算法的Turbo码译码器结构示意图。由图可知,Turbo译码器包括两个SISO译码器,其译码过程包括以下主要步骤步骤1、SISO译码器一的输入信息包括系统信息y1ks、校验信息y1kp和先验信息z1k(初始值全为零),输出对数似然比(Log-Likelihood Ratio,简称LLR)Λ1k,Λ1k通过减去先验信息和系统信息得到外信息l1k,并存储在内存LBUF中;步骤2、待SISO译码器一处理完该帧译码数据后,将LBUF中的外信息l1k交织后存储在另一内存ZBUF中,并作为SISO译码器二的先验信息z2k;步骤3、SISO译码器二对分量码RSCII进行最佳译码,输入为系统信息y2ks(y2ks由y1ks经过交织得到)、校验信息y2kp和先验信息z2k,输出对数似然比Λ2k,Λ2k通过减去先验信息和系统信息得到外信息l2k,存储在内存LBUF中并覆盖原有数据;步骤4、待SISO译码器二处理完该帧译码数据后,将内存LBUF中的外信息l2k解交织后存储在内存ZBUF中并覆盖原有数据,作为下一次迭代SISO译码器一的先验信息z1k步骤5、如未达到最大迭代次数,则重复执行步骤1-4,SISO译码器一使用新的先验信息进行下一次迭代译码,否则执行步骤6;步骤6、将SISO译码器二得到的对数似然比A2k存储在内存LBUF中,待SISO译码器二处理完该帧所有输入信息后进行解交织,然后硬判决输出,即得到译码结果 。
在以上译码过程中,系统信息和校验信息被分别乘以系数Lc/2,Lc定义为信道可靠性系数,Lc=4aEs/N0,其中变量a是衰减幅度,Es是平均符号能量,N0是噪声功率谱密度。
从以上可以看出,两个SISO译码器输入信息均包括系统信息、校验信息和先验信息,译码速率为1/2码率,并且交织和解交织需要在SISO译码器处理完一帧数据后再单独进行,因此,也增加了额外的时延。
附图3是滑动窗法原理结构示意图,其主要措施是把一帧长度为K的译码数据分成若干长度为L的子帧(L<K),以子帧为单位进行译码,译码算法仍采用Log-MAP算法,不同之处在于相邻子帧间存在M个译码数据的交叠,用以降低后向状态度量的估计初始化误差,因此,完成一个子帧数据的SISO译码可以得到L-M个数据的外信息。依次对分块后的数据进行SISO译码运算,然后综合起来,即可在每隔一段时间就可处理一个子帧数据,这样每次只需要存储当前子帧数据的前/后向状态度量,所需的存储量值由K降为L个单位,因此通过调节滑动窗的窗长L可以节省很大的存储空间。现有技术在具体使用滑动窗法进行译码运算时主要有两种方式第一,先计算前向状态度量,然后计算后向状态度量;第二,同时计算同一滑动窗数据的前/后向状态度量。第一种方式只需要存储前向状态度量的值,所需存储空间较小,但译码速度仅为第二种方式的二分之一。由于前/后向状态度量计算的起始点不同,第二种方式需要同时存储前/后向状态度量,因此,所需存储空间是第一种方式的两倍。
附图4是交织和解交织过程示意图,交织向量表的长度与待译码帧的长度相同,其值为从0到K-1之间的每一个整数,并存放在内存IBUF中。交织/解交织前的数据存放在内存LBUF中,交织/解交织的结果存放在内存ZBUF中,si、sl、sz分别表示内存IBUF、LBUF、ZBUF的起始地址。交织过程是先线性的从内存LBUF读取第一个数,然后读取交织向量表的第一个数,用这个数加上内存ZBUF的首地址得到所需要写入的数据的地址,按此地址将数据写入输出内存ZBUF中,然后读LBUF和IBUF中的下一个数,依此类推,即可得到交织后的值。而解交织过程就是先读取交织向量表中的第一个数,用这个数加上内存LBUF的首地址得到所需要读取数据的地址,然后读取该地址的数据,并将数据线性写入内存ZBUF,然后读交织向量表的下一个数,依此类推,直到第K个,即可得到解交织后的值。用于归零的三个尾比特不需要进行交织/解交织运算。交织和解交织需要在SISO译码器处理完一帧数据后单独进行,因此增加了译码的时延。
图5是本发明译码方法译码器结构示意图。由图可知,在本发明译码方法中分支度量为γ(sk→sk+1)=mk·zk+ykp·ckp]]>SISO译码器二的先验信息为z2k=(l1k+yks)interleaver]]>SISO译码器一的先验信息为z1k=(l2k)de-interleaver+yks]]>完全信息为Λk=zk+lk本发明译码方法实施例的主要步骤包括步骤1、将接收数据(yks,y1kp,y2kp)分解成(y1kp)和(y2kp),分别作为码字信息送到SISO译码器一和二中;步骤2、迭代开始,对于SISO译码器一,如果是第一次迭代,则先验信息z1k=yks;]]>否则将相应比特位置的外信息解交织后从内存SBUF中读出并与系统信息相加作为输入先验信息;对于SISO译码器二,从内存SBUF中顺序读取先验信息即可
步骤3、设定滑动窗窗长128,相邻子帧之间交叠长度为32①第一子帧数据α(sk)的初值为零状态初值α(s1)0if(s1=0)-∞if(s1≠0)]]>②计算前向状态度量α(sk)=max*[α(sk-1,bs1)+γ(sk-1→sk,bs1),α(sk-1,bs2)+γ(sk-1→sk,bs2)]其中max*(x,y)=ln(ex+ey)=max(x,y)+fc(|y-x|),纠正函数fc(x)=ln(1+e-x)可以用查找表的方式实现,bs1和bs2表示每个状态节点的两条分支汇入;在计算第一子帧数据前向状态度量的同时,计算除最后一个子帧之外的所有其它子帧的后向状态度量的有效初始值β(sk)=max*[β(sk+1,bs1)+γ(sk→sk+1,bs1),β(sk+1,bs2)+γ(sk→sk+1,bs2)]β(sk)的估计初始值为未知状态初值β(sk)=0,sk对于第n子帧,从β(s96*n+32)开始逆向计算到β(S96*n+1),并将β(s96*n+1)保存起来作为各个子帧后向状态度量的有效初始值;其中分支度量可以根据γ(sk→sk+1)=mk·zk+ykp·ckp]]>得到;③计算下一子帧α(sk)的时候,同时计算上一子帧的β(sk)和外信息;外信息计算公式为lk=ln{Σs1exp[α(sk)+γe(sk→sk+1)+β(sk+1)]Σs0exp[α(sk)+γe(sk→sk+1)+β(sk+1)]}]]>其中,γe(sk→sk+1)=ykp·ckp,]]>α(sk)的初值为上一子帧最后一个数据的前向状态度量值,β(sk)的初值为第②步计算出的对应子帧的有效初始值;对于SISO译码器一,输出外信息与系统信息相加并经过交织后存放到内存SBUF中;对于SISO译码器二,输出外信息直接存放在内存SBUF中,在下一次迭代SISO译码器一计算前/后向状态度量的同时完成相应比特外信息的解交织,并将解交织结果与系统信息相加作为SISO译码器一的先验信息;
④如果当前数据是最后一个子帧,则在计算完上一子帧的β(sk)和外信息之后开始计算最后一个子帧的β(sk)和外信息值,然后本SISO译码模块结束,否则,继续执行下一数据块,进入第⑤步;⑤如果是最后一个子帧,则β(sk)的初值为零状态初值β(sK+3)=0if(sK+3=0)-∞if(sK+3≠0)]]>否则β(sk)的初值为前面计算的有效初始值,然后返回第③步;步骤4、对于SISO译码器二,如果未达到最大迭代次数,则返回步骤3进行下一次迭代;如果达到最大迭代次数,则根据公式Λ2k=l2k+z2k计算总信息Λ2k然后将其解交织得到LLR,硬判决后可得到当前帧的译码数据 ,本帧数据的译码过程结束。
权利要求
1.一种提高Turbo码的译码速率的译码方法,采用滑动窗方法来进行译码运算,其特征在于简化了SISO译码器结构,使其输入信息仅为校验信息和先验信息,并行滑动窗在计算当前子帧的前向状态度量的同时计算上一子帧的后向状态度量,且仅存储译码器的前向状态度量,将相应数据位置的外信息l2k解交织后从内存SBUF中读出并与系统信息相加作为输入SISO译码器一的先验信息z1k其输出外信息l1k与系统信息相加,经交织后存储在内存SBUF中作为SISO译码器二的先验信息z2k,SISO译码器二输出的外信息l2k在SISO译码器一计算下一次迭代的前/后向状态度量的同时完成相应数据的解交织,并与系统信息相加作为SISO译码器一的先验信息z1k。
2.根据权利要求1所述译码方法,其特征在于将接收数据(yks,y1kp,y2kp)分解成(y1kp)和(y2kp),分别作为码字信息送到SISO译码器一和SISO译码器二中。
3.根据权利要求1所述译码方法,其特征在于迭代开始时,对于SISO译码器一,如果是第一次迭代,则先验信息z1k=yks]]>,否则将相应比特位置的外信息解交织后从内存SBUF中读出并与系统信息相加作为输入先验信息,对于SISO译码器二,从内存SBUF中顺序读取先验信息即可。
4.根据权利要求1所述译码方法,其特征在于在计算第一子帧数据前向状态度量的同时,计算除最后一个子帧之外的所有其它子帧的后向状态度量的有效初始值,对于第n子帧,从β(s96*n+32)开始逆向计算到β(s96*n+1),并将β(s96*n+1)保存起来作为各个子帧后向状态度量的有效初始值;其中分支度量可以根据γ(sk→sk+1)=mk·zk+ykp·ckp]]>得到,计算下一子帧α(sk)的时候,同时计算上一子帧的β(sk)和外信息,外信息计算公式为lk=ln{ΣS1exp[α(sk)+γe(sk→sk+1)+β(sk+1)]ΣS0exp[α(sk)+γe(sk→sk+1)+β(sk+1)]}]]>其中,γe(sk→sk+1)=ykp·ckp,α(sk)]]>的初值为上一子帧最后一个数据的前向状态度量值,β(sk)的初值为计算前向状态度量时计算出的对应子帧的有效初始值。
5.根据权利要求1所述译码方法,其特征在于如果当前数据是最后一个子帧,则在计算完上一子帧的β(sk)和外信息之后开始计算最后一个子帧的β(sk)和外信息值,然后本SISO译码模块结束,否则,继续执行下一数据块。
6.根据权利要求1所述译码方法,其特征在于分支度量为γ(sk→sk+1)=mk·zk+ykp·ckp.]]>
7.根据权利要求1所述译码方法,其特征在于SISO译码器一的先验信息为z1k=(l2k)de-interleaver+yks.]]>
全文摘要
本发明译码方法简化了SISO译码器结构,使其输入信息仅为校验信息和先验信息;并行滑动窗在计算当前子帧的前向状态度量的同时计算上一子帧的后向状态度量,且仅存储译码器的前向状态度量;将相应数据位置的外信息l
文档编号H03M13/23GK101026439SQ20071007819
公开日2007年8月29日 申请日期2007年2月7日 优先权日2007年2月7日
发明者唐明 申请人:重庆重邮信科股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1