Turbo码原理简介
1993年C.Berrou、A.Glavieux和P.Thitimajshiwa首先提出了称之为Turbo码的并行级联编译码方案。Turbo码性能取决于码的距离特性。线性码的距离分布同于重量分布,如果低重量的输入序列经编码得到的还是低重量的输出序列,则距离特性变坏。该特性对于块码来说不存在问题;然而对于卷积码,则是个非常严重的问题。因为卷积码的距离特性是影响误码率的一个非常重要的因素。
在Turbo码中,利用递归系统卷积码(RSC)编码器作为成员码时,低重量的输入序列经过编码后可以得到高重量的输出序列。同时交织器的使用,也能加大码字重量。实际上,Turbo码的目标不是追求高的最小距离,而是设计具有尽可能少的低重量码字的码。Turbo码由两个递归系统卷积码(RSC)并行级联而成。译码采用特有的迭代译码算法。
典型的Turbo码编码器结构框图如图2所示:由两个反馈的编码器(称为成员编码器)通过一个交织器I并行连接而成。如果必要,由成员编码器输出的序列经过删余阵,从而可以产生一系列不同码率的码。例如,对于生成矩阵为g=[g1,g2]的(2,1,2)卷积码通过编码后,如果进行删余,则得到码率为1/2的编码输出序列;如果不进行删余,得到的码率为1/3。一般情况下,Turbo码成员编码器是RSC编码器。原因在于递归编码器可以改善码的比特误码率性能。
由于与非递归卷积码相比,递归卷积码产生的码字重量更大,所以这里采用了两个相同的系统递归卷积码(RSC)。信息序列分成相同的两路,第一路经过RSC编码器1,输出系统码及校验码。另一路先通过交织器进行交织,使信息序列在1帧内重新排列顺序,然后经过RSC编码器2得到系统码和对应的校验码,由于该系统码和实际上都是原信息序列,只是排列顺序不同,在接收端完全可以通过对进行交织得到,因此在传输过程中可以省去,而只保留对应的校验位。在具体实现中, RSC编码器2的输入是通过对RSC编码器1的系统输出进行交织来得到的。再经过并/串转换,作为整个Turbo码编码器的输出。对应于每1位信息比特,该编码器输出3位,因此其码率为1/3。如果采用了奇偶删余,即在并/串转换时,在校验位奇位上取,偶位上取或反之,则码率可升为1/2。
由于Turbo码是由两个或多个成员码经过不同交织后对同一信息序列进行编码。译码时,为了更好地利用译码器之间的信息,译码器应该利用软判决信息,而不是硬判决信息。因此,一个有两个成员码构成的Turbo码的译码器是由两个与成员码对应的译码单元和交织器与解交织器组成的,将一个译码单元的软输出信息作为下一个译码器单元的输入,为了进一步提高译码性能,将此过程迭代数次。这就是Turbo码的迭代译码算法的原理。
Turbo码可以利用多种译码算法,如最大似然译码MAP、Log-MAP算法、Max-log-MAP算法和SOVA算法等。
图所示为Turbo码迭代译码器的结构。
Turbo码译码器为串行结构,两个编码器所产生的校验信息通过串并转换被分开,分别送到对应的译码器输入端。首先,第一级译码器根据系统位信息L(ys|u)和第一级编码器的校验位信息L(y1|x1)得到输出信息(此时译码器2外信息Le[C2](u)=0),输出信息包含两部分,一部分是由译码器根据码字相关性提取出来的外信息,用Le[C1](u)表示;另一部分来自于系统位对应的信道输出,在传递给下一级译码器之前,被减去。Le[C1](u)在交织之后被送到译码器2作为先验信息,译码器2因此根据校验位信息、系统位信息和Le[C1](u)这三者共同做出估计,得到输出信息L(u),L(u)在减去Le[C1](u)+L(ys|u)之后,得到译码器2的外信息Le[C2](u),它在解交织之后,反馈给第一级译码器作为先验信息,结合Le[C2](u),译码器1重新做出译码估计,得到改善的外信息。而此时的外信息又可以传递到译码器2,如此往复,形成迭代过程。最终,当达到预先设定的迭代次数或满足迭代结束条件时,译码结束,取L(u)的符号作为最终硬判决输出。
a)SOVA译码算法
传统Viterbi算法用来计算卷积码的最大似然(ML)序列,只提供硬判决输出。但在级联系统中,前级硬判决实际上相当于丢失了信息,使后级译码器无法从解调得到的软输出中获益。SOVA是改进的Viterbi算法,它可以给出译码结果的可靠性值(软输出),这个可靠性值作为先验信息传递给下级译码器,从而提高译码性能。
b) LOG-MAP译码算法
LOG-MAP是改进的MAP(最大后验概率)算法,它在对数域进行计算,可以将MAP算法中大量的乘法运算化简为加法运算,从而降低计算量。除此之外,它的基本原理与经典MAP算法相同。
MAP算法由Bahl等人于1974年提出,因此又称为BCJR算法。与Viterbi算法不同,它估计出最大似然比特,而前者产生最大似然序列。也就是说Viterbi算法提供整体最优解,而MAP算法则提供个体最优解。
(3.20)
式中表示接收序列[y1….yN]。因此,只要得到所有的
(3.21)
就可以通过对其中那些对应于的状态转移概率求和来得到信息比特的后验概率。由贝叶斯定理,
(3.22)
上式右侧分子项联合概率可作进一步化简:
(3.23)
以上的化简过程中应用了马尔可夫信源的性质,即t时刻以后的状态只与St及以后的输入有关,而与t时刻之前的状态和输入无关,也就是说得到了t时刻的状态,之后的状态转移就不再依赖于以及t-1时刻的状态。(3.23)式分为三部分,可以分别定义如下,令:
则联合概率可写为:
(3.24)
其中,和可以用递归方法求出:
(3.25)
(3.26)
通常,编码器的初始状态已知,对于编码器1,帧结束时网络终止,因此其终了状态了也是已知的,因此有
以及
对于编码器2,由于网格不终止,可以认为它的终了状态是平均分布的。另外,有
(3.27)
式中为信息符号,为对应于状态转移的编码输出符号。上式中为信息符号的先验概率,而条件概率可由如前所述的信道模型得到。
MAP算法可按以下步聚实现:
1.对于每个时刻t,根据解调软输出y和信息符号u计算式(3.27);
2.根据式(3.25)及式(3.26)递归计算及;
3.根据式(3.24)计算联合概率;
4.根据式(3.20)得到;
5.计算每个信息符号的对数似然比
式(3.22)中的分母在第5步中被约去,因此不必求得具体数值。另外,在具体实现中,上述概率计算都是在对数域中进行的,因此乘法运算都变成了加法运算。
在实现过程中,选用了SOVA和LOG-MAP两种译码算法,并对两者的性能进行了仿真比较。
图3.24 SOVA和LOG-MAP译码算法在不同迭代次数下的误码率曲线
仿真中采用1/3码率的Turbo码,共传输了20000帧(每帧210比特,共2百万比特),采用与软件中相同的螺旋交织方案,通过高斯白噪声(AWGN)信道,分别采用LOG-MAP和SOVA译码,迭代1-5次。图3.24,3.25分别表示了两种译码算法的误码率和误帧率曲线。
由图3.24,3.25可得到如下结论:
(1) 在相同的迭代次数和信噪比条件下,LOG-MAP译码的误码率和误帧率性能都明显优于SOVA。
(2) 迭代次数越高,误码率性能越好。但是,大部分迭代增益都出现在前两次迭代中。
(3) 在信噪比较小时(低于0dB),SOVA迭代译码误码率随信噪比增大降低较快,信噪比较大时误码率改善较缓慢。因此,在信道噪声比较弱时,减少迭代次数不会对误码率性能造成太大影响,却可以降低译码时延;而信道环境比较差时,可增加迭代次数来提高误码率性能。
(4) LOG-MAP译码的性能非常优异,2次迭代在信噪比为-0.5dB时误码率即可达到10-6。
图3.25 SOVA和LOG-MAP译码算法在不同迭代次数下的误码率曲线
从误码率性能看,Log-MAP优于SOVA。从实现复杂度看,SOVA译码算法实现比较容易,更简单。因此,可以根据实际需要来选择译码方式。
Turbo码的迭代译码终止条件的设计是个很重要的问题,因为迭代译码是个很耗资源的计算,另一方面,过多的迭代可能会造成溢出或者振荡,从而得到错误的输出结果。
最简单的终止方法就是指定迭代次数,实验表明经过5次左右迭代之后,能够从以后的迭代过程中获得的好处就很少了,因此可以指定迭代次数,使译码过程在达到设定数值时结束。这是本项目中采取的方法之一。
然而,固定迭代次数有两个弊端。当信道特性较好时,多余的迭代造成了计算资源的浪费,另一方面,当信道特性差,误码率高时,又不能充分发挥出Turbo码的性能。理想的情况下,迭代次数应随着误码情况动态的变化。
另一种译码终止算法是在信息序列中加入CRC校验字,每次迭代之后即检测信息序列是否有错,无错时译码即结束,为防止误码率很高时不能完全纠错的情况,还必须设定最大迭代次数,达到这一数值后,即使译码结果仍然有错误,迭代过程也被强制终止。CRC校验适用于信道特性比较好的情况,实验表明在这种情况下,只需一两次迭代就可以得到正确结果。它的缺点是必须加入多余的校验位,降低了通信效率。
另外一种效果较好的方法是采用检测成员编码器输出之间的交叉信息熵,当发现熵值低于某一门限时,表明再次迭代能够获得的增益已经很小,因此终止译码。这种方法能够非常好的挖掘出Turbo码的潜力。它的缺点是计算交叉信息熵需要较大的计算量和存贮空间。
多进制正交扩频系统中软信息的提取
多进制正交扩频系统:
l 进制数:
l 每个进制代表编码交织比特个数:
l 个编码数据为()
l 个编码比特需要个正交扩频码()
l 扩频码的波形为(),是由构成的N维伪随机码序列波形
l 信道:AWGN信道,叠加一个N维的零均值且双边谱为高斯白噪声
l 接收信号:R
假设发送等概,
l 个编码数据的第j位为0,即的那些码子的集合记为;
l 个编码数据的第j位为1,即的那些码子的集合记为;
则关于第个编码比特的对数似然比(软信息)为
(1)
其中AWGN信道下,接收信号的先验概率为
(2)
便于电路实现的、次最优的软信息提取:
l 利用MAX近似公式
(3)
l (1)式变为
l 将(2)式代入(1)式可得:
其中表示接收序列R和本地伪码序列之间的欧式度量。
AWGN下如果传送比特0和1的能量相等,则欧式度量就等价于相关度量,即
其中就是相关匹配滤波器的输出。
在多进制正交扩频系统接收端,与码子D()相对应伪码的相关匹配滤波器的输出设为,即
,
根据码子D中第j个比特的取值对D进行分组:
则第j个比特的软判决信息为:
进一步归一化为
其中
表示的置信度信息,越接近+1表示判决为1的可能性越大;
越接近-1表示判决为0的可能性越大。
Turbo码测试报告
一、 测试的Turbo码参数
1、 数据帧长:4096
2、 码率:1/2
3、 生成矩阵:(13,15)
4、 编码后一帧长度:4096*2+12=8204
5、 信噪比范围:0~9dB,间隔1dB
6、 测试长度1000帧
二、 测试内容
1、 Turbo软判决下性能
2、 Turbo硬判决下性能(译码之前是解调输出的硬判决)
3、 4-16walsh码软信息提取下的Turbo码性能