标题：Turbo码
概述
  
​
Shannon 编码定理指出：如果采用足够长的随机编码，就能逼近Shannon 信道容量。但是传统的编码都有规则的代数结构，远远谈不上“随机”；同时，出于译码复杂度的考虑，码长也不可能太长。所以传统的信道编码性能与信道容量之间都有较大的差距。事实上，长期以来信道容量仅作为一个理论极限存在，实际的编码方案设计和评估都没有以Shannon限为依据。
历史发展
1993 年两位法国教授Berrou、Glavieux 和他们的缅甸籍博士生Thitimajshima 在ICC 会议上发表的  Turbo码Near Shannon limit error-correcting coding and decoding: Turbo codes”，提出了一种全新的编码方式——Turbo 码。它巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码，并通过在两个软入/软出（SISO）译码器之间进行多次迭代实现了伪随机译码。
仿真结果表明，在AWGN 信道下，码率为1/2 的Turbo 码在达到误比特率（BER) ≤ 10−5时，Eb/N0仅为约0.7dB （这种情况下达到信道容量的理想Eb/N0值为0db），远远超过了其他的编码方式，一时在信息和编码理论界引起了轰动。
从此以后，Turbo 码得到了广泛的关注和发展，并对当今的编码理论和研究方法产生了深远的影响，信道编码学也随之进入了一个新的阶段。
Turbo码由于其近Shannon界的突出纠错能力，成为近年信道编码理论研究的热点问题。其编码器由两个（或多个）带反馈的系统卷积码器经一交织器并行级联而成，接收端一般采用逐位最大后验概率译码器通过反复迭代循环来译码。
本文首先对Turbo码的编码原理进行了阐述和举例，进而重点讲解了Turbo码译码的原理，对比了MAP译码算法和SOVA译码算法。由以上的分析得出了很多重要的结论：如Turbo码采用反馈卷积码是为了获得更大的交织增益；Turbo码的性能主要取决于它的有效自由距离；Turbo码在低信噪比下具有近Shannon界纠错能力的原因；自由距离较低引起Turbo码在中信噪比下出现纠错平台现象等等。
特点
Turbo码有一重要特点是其译码较为复杂，比常规的卷积码要复杂的多，这种复杂不仅在于其译码要  Turbo码采用迭代的过程，而且采用的算法本身也比较复杂。这些算法的关键是不但要能够对每比特进行译码，而且还要伴随着译码给出每比特译出的可靠性信息，有了这些信息，迭代才能进行下去。用于Turbo码译码的具体算法有：MAP(Maximum A Posterori)
Max-Log-MAP、Log-MAP和SOVA(Soft Output Viterbi Algorithm）算法。MAP算法是1974年被用于卷积码的译码，但用作Turbo码的译码还是要做一些修改；Max-Log-MAP与Log-MAP是根据MAP算法在运算量上做了重大改进，虽然性能有些下降，但使得Turbo码的译码复杂度大大的降低了，更加适合于实际系统的运用；Viterbi算法并不适合Turbo码的译码，原因就是没有每比特译出的可靠性信息输出，修改后的具有软信息输出的SOVA算法，就正好适合了Turbo码的译码。这些算法在复杂度上和性能上具有一定的差异，系统地了解这些算法的原理是对Turbo码研究的基础，同时对这些算法的复杂度和性能的比较研究也将有助于Turbo的应用研究。
Turbo码的仿真一般参考吴宇飞的经典程序。
此外，要想在移动无线系统中成功的使用Turbo码，首先要考虑在语音传输中最大延迟的限制。在短帧情况下的仿真结果表明短交织Turbo码在AWGN信道和Rayleigh衰落下仍然具有接近信道容量的纠错能力，从而显示出Turbo码在移动无线通信系统中非常广阔的应用前景。
Turbo码 （Turbo Code） 
Turbo 码（Turbo Code）是一类应用在外层空间卫星通信和设计者寻找完成最大信息传输通过一个限制带宽通信链路在数据破坏的噪声面前的其它无线通信应用程序的高性能纠错码。有两类 Turbo 码在那里，块 Turbo 码和卷积 Turbo 码（CTCs），它们是相当不同的，因为它们使用不同的构件码，不同的串联方案和不同的 SISO 算法。
研究现状
对于Turbo码的研究最初集中于对于其译码算法、性能界和独特编码结构的研究上，经过十多年来的发展历程，已经取得了很大的成果，在各方面也都走向使用阶段。Turbo码由于很好地应用了香农信道编码定理中的随机性编译码条件而获得了接近香农理论极限的译码性能。它不仅在信噪比较低的高噪声环境下性能优越，而且具有很强的抗衰落、抗干扰能力。目前，Turbo码的研究主要集中在以下几个方面：
编译码技术编码方面主要包括对并行级联编码与串行级联编码的分析，以及对混合级联方式的研究；译码方面主要包括迭代译码、译码算法（最大后验概率算法MAP、修正的MAP算法Max-Log-MAP、软输出Viterbi 算法SOVA等）的研究。
Turbo码的设计和分析主要包括交织器的设计、码的级联方式、译码算法、Turbo码的性能分析等。在性能分析中，主要对码重分布及距离谱进行分析，但由于没有相应的理论支持，这种分析只能是近似的，且仅局限于短码长、小码重的情况。
Turbo 码在直扩（CDMA) 系统中的研究及应用Turbo 码不仅在信道信噪比很低的高噪声环境下性能优越，而且还具有很强的抗衰落、抗干扰能力，因此它在信道条件差的移动通信系统中有很大的应用潜力，在第三代移动通信系统(IMT-2000）中己经将Turbo码作为其传输高速数据的信道编码标准。第三代移动通信系统（IMT-2000）的特点是多媒体和智能化，要能提供多元传输速率、高性能、高质量的服务，为支持大数据量的多媒体业务，必须在布限带宽信道上传输数据。由于无线信道传输媒质的不稳定性及噪声的不确定性，一般的纠错码很难达到较高要求的译码性能（一般要求比特误码率小于10-6e），而Turbo码引起超乎寻常的优异译码性能，可以纠正高速率数据传输时发生的误码。另外，由于在直扩（CDMA) 系统中采用Turbo 码技术可以进一步提高系统的容量，所以有关Turbo码在直扩（CDMA) 系统中的应用，也就受到了各国学者的重视。
面向分组的Turbo 码主要面向分组的Turbo 码的构造、译码及译码器的分析。
Turbo 码与其它通信技术的结合包括Turbo 码与调制技术（如网格编码调制TCM）的结合、Turbo码与均衡技术的结合（Turbo码均衡）、Turbo码编码与信源编码的结合、Turbo码译码与接收检测的结合等等。Turbo码与OFDM调制、差分检测技术相结合，具有较高的频率利用率，可有效地抑制短波信道中多径时延、频率选择性衰落、人为干扰与噪声带来的不利影响。国内在Turbo码的研究领域也取得了一定的成果和进展，西安电子科技大学综合业务网国家重点试验室在Turbo码的理论和应用研究方面取得了很多研究成果。此外，清华大学、北京邮电大学和上海交通大学等高校都在进行Turbo码相关的其它关键技术的研究方面取得一定的进展。深圳华为公司等在推动Turbo码在移动通信系统中的应用方面起了积极的作用。
编码原理
Turbo 码最先是由C. Beηou等提出的。它实际上是一种并行级联卷积码(Parallel Concatenated Convolutional Codes）。Turbo 码编码器是由两个反馈的系统卷积编码器通过一个交织器并行连接而成，编码后的校验位经过删余阵，从而产生不同的码率的码字。如图所示：信息序列u={u1,u2,……，uN}经过交织器形成一个新序列u'={u1',u2'，……，uN'}（长度与内容没变，但比特位经过重新排列），u 和u'分别传送到两个分量编码器（RSC1与RSC2) ，一般情况下，这两个分量编码器结构相同，生成序列X和X，为了提高码率，序列X和X需要经过删余器，采用删余（puncturing）技术从这两个校验序列中周期的删除一些校验位，形成校验序列X,X，与未编码序列X'经过复用调制后，生成了Turbo码序列X.
1. 分量码的选择Turbo 码的一个重要特点是它的分量码采用递归系统卷积码（RSC，Recursive Systematic Convolutional code) ，这也是它性能优越的一个重要原因。之所以选择RSC编码器作为Turbo码的子码主要有以下原因：
首先，RSC码具有系统码的优点。这一特性使用户在译码时无需变换码字而直接对接收的码字进行译码，所以，递归系统卷积码（RSC）对于非系统卷积码(NSC）而言译码简单、快速。
其次，从差错控制编码的相关文献中可知，非系统卷积码（NSC）的BER性能在高信噪比时比约束长度相同的非递归系统码要好，而在低信噪比时情况却正好相反。递归系统卷积码综合了NSC码和非递归系统卷积码的特性，且然它与NSC码具有相同的trellis结构和自由距离，但是在高码率（R≥2/3）的情况下，对任何信噪比，它的性能均比等效的NSC码要好。由于系统递归卷积码具有以上特点，并且能改善无码率，所以通常选择RSC码作为Turbo码的子编码器。
递归系统卷权码（RSC）不同于一般的卷积码器在于其结构中不仅有向前结构，还有向后反馈结构，在下图中可以看出。  Turbo码RSC 编码器一般有2-5 级移位寄存器， 用生成多项式表示为：
式中，1表示系统比特，gl 和g2分别表示编码器的前馈多项式和反馈多项式。  Turbo码用RSC码构成Turbo码的分量码的码率R为：
式中：R1，R2为构成Turbo 码的分量码的码率，在经删余后，分量RSC1和RSC2的码率可以不同。
Turbo 码的最大似然译码性能分析出，Turbo 码在高信噪比下的性能主要由它的自由距离所决定。因为Turbo码的自由距离主要由重量为2的输入信息序列所产生的码字间的最小距离所决定，用本原多项式作为反馈连接多项式的分量编码器所产生的码字的最小重量为最大，因此当Turbo码交织器的大小给定后，如果分量码的反馈连接多项式采用本原多项式，则Turbo码的自由距离会增加，从而Turbo码在高斯信噪比情况下的“错误平层(errorfloor）”会降低。错误平层效应指的是在中高信噪比情况下，误码曲线变平。也就是说，即使是再增大信噪比，无码率也降不下来（一般的系统，比如说是BPSK的误码曲线，误码率随着信噪比的增大是单调下降的）。
2. 交织器的设计交织器是影响Turbo码性能的一个关键因素，它可以便Turbo码的距离谱细化，即码重分布更为集中。它的特性的好坏直接关系着Turbo码的性能。
编码器中交织器的使用是实现Turbo码近似随机编码的关键。交织器实际上是一个一一映射函数，作用是将输入信息序列中的比特位置进行重置，以减小分量编码器输出校验序列的相关性和提高码重。通常在输入信息序列较长时可以采用近似随机的映射方式，相应的交织器称为伪随机交织器。由于在具体的通信系统中采用Turbo码时交织器必须具有固定的结构，同时是基于信息序列的，因此在一定条件下可以把Turbo码看成一类特殊的分组码来简化分析。交织是对信息序列加以重新排列的一个过程。如果定义一个集合A ， A={1，2，…，N}。则交织器可以定义为一个一一对应的映射函数π（A-->A):J=π（i），（i,j属于A) 这里的i ，j 分别是未交织序列C 和交织序列C' 中的元素标号。映射函数可以表示为πN = （π⑴，π⑵，π⑶，…，π（N））。其原理如图  Turbo码在交织器的设计中，基本上是遵循下列原则：
1）最大程度的置乱原来的数据排列顺序，避免置换前相距较近的数据在置换后仍然相距较近，特别是要避免相邻的数据在置换后仍然相邻。  Turbo码2) 尽量提高最小码重码字的重量和减小低码重码字的数量。
3) 尽可能避免与同一信息位直接相关的两个分量编码器中的校验位均被删除；
4) 对于不归零的编码器，交织器设计时要避兔出现"尾效应" 图案。
在设计交织器时，应考虑具体应用系统的数据的大小，使交织深度在满足时延要求的前提下，与数据大小一致，或是数据帧长度的整数倍。
交织器和分量码的结合可以确保Turbo码编码输出码字都具有较高的汉明重量。在Turbo编码器中交织器的作用是将信息序列中的比特顺序重置。当信息序列经过第一个分量编码器后输出的码字重量较低时，交织器可以使交织后的信息序列经过第二个分量编码器编码后以很大的概率输出较高重码字，从而提高码字的汉明重量：同时好的交织器还可以奇效地降低校验序列间的相关性。因此，交织器设计的好坏在很大程度上影响着Turbo码的性能。
交织器的类型可以分为两大类，一是规则交织器，也称确定性交织器，其交织器的映射函数可以由一个确定的解析函数给出。二是随机交织器，其映射函数不能由-个确定的解析表达式给出。
Turbo 码常用的交织器包括以下几种：分组交织器、随机交织器、s-随机交织器等等。
3. 删余技术对于数字通信领域日益紧张的带宽资源，提高码率就意味着节省带宽和降低通信费用。删余(Puncturing）是目前提高Turbo码码率的主要方法。
Turbo 码中，删余器通常比较简单，因为在一般的应用中，码率都是在1/2 或者1/3 ，因此即使有删余器，它一般也只是周期性的从两个分量编码器中选择校验比特输出即可。其具体做法是：从两个RSC编码生成的校验序列中周期地删除一些校验位，然后再与未编码的信息序列复用重组成最后的编码输出序列，调制后进入信道传输。若信息序列为d1 =(C11) ，长度为N ，那么两个RSC分量编码器的输出为：  Turbo码图3. 6 所示示为采用了删余技术的编码结构，若取RSC1输出的奇比特和RSC2的偶比特，即采用删余矩阵P= [ 10,01] ， 那么编码输出长度为2N，码率提高为1/2的序列为Cp.  Turbo码两个分量码编码器的输出经过删余得到的序列被称为奇偶序列，是校验序列。一个好的删余算法应该符合以下几点要求：
1) 不能删除信息位.删除信息位会造成较大的信息损失，从而使误码率有较大的损失；
2) 删余应该在时间域上均匀进行，删余同一时刻所有的比特位会造成此时刻信息损失较大，影响误码率；
3) 删余应该对于各分量码均匀进行，从而使信息的损失均匀分布在各分量码上，避免由于信息损失不均匀导致分量码译码性能下降。
译码原理
香农信息论告诉我们，最优的译码算法是概率译码算法，也就是最大后验概率算法(MAP）。但在Turbo码出现之前，信道编码使用的概率译码算法是最大似然算法(ML）。ML算法是MAP算法的简化，即假设信源符号等概率出现，因此是次优的译码算法。Turbo码的译码算法采用了MAP算法，在译码的结构上又做了改进，再次引入反馈的概念，取得了性能和复杂度之间的折衷。同时，Turbo 码的译码采用的是迭代译码，这与经典的代数译码是完全不同的。
Turbo 码的译码算法是最早在BCJR 算法的基础上改进的，我们称以MAP算法，后来又形成Log-MAP算法、Max-Log-MAP以及软输入软输出（SOVA）算法。  Turbo码Turbo 码的译码结构图
⒈Turbo 码的译码结构如图所示. Turbo 译码器有以下的特点：
1) 串行级联
2) 迭代译码
3) 在迭代译码过程中交换的是外部信息
⒉ 概率译码译码原理及结构
译码时首先对接收信息进行处理，两个成员译码器之间外部信息的传递就形成了一个循环迭代的结构。由于外部信息的作用，一定信噪比下的误比特率将随着循环次数的增加而降低。但同时外部信息与接受序列间的相关性也随着译码次数的增加而逐渐增加，外部信息所提供的纠错能力也随之减弱，在一定的循环次数之后，译码性能将不再提高。
译码算法
如前所述，turbo码需要一种软输入软输出的译码算法。软输出译码器的输出不仅应包含硬判决值，而且包括做出这种判断的可信程度。  Turbo码译码算法应该考虑到三方面的问题，及外信息的引入；如何在迭代译码中充分利用各类信息，防止简单正反馈的形成，确保算法收敛；充分利用码原件的相关信息。常见的算法有一下几种：
1. 标准MAP算法是对bahl软输出算法做一定修正后，通过除以先验分布来消除正反馈的算法。对于约束长度为M 1的卷积码，其运算量为每比特6x3^M次乘法和5x2^M次加法。由于乘法运算量大，限制了译码的规模和速度。
2. Log-MAP算法实际上就是对标准MAP算法中的似然全部用对数似然度来表示，这样，乘法运算变成了加法运算。总的运算量成为6x2^M次加法，5x2^M次求最大运算和5x2^M次查表。
3. Max-Log-MAP算法是在上述对数域的算法中，将似然值加法表示式中的对数分量忽略，是似然加法完全变成求最大值运算，这样除了省去大部分的加法运算外，最大的好处是省去了对信噪比的估计，使得算法更稳健。
4. 软输出维特比译码（SOVA)其运算量为标准维特比算法的两倍。维特比算法是最大似然序列估计算法，但由于在它的每一步都要删除  Turbo码一些低似然路径，为每一状态只保留一条最优路径，它无法提供软输出。为了给他输出的每个比特赋予一个可信度，需要在删除低似然路径是做一些修正，以保留必要的信息。其基本思想是利用最优留存路径和被删路径的度量差，这个差越小意味着这次算去的可靠性越好。然后用这个差去修正这条路径上各个比特的可信度。
性能仿真比较
目前Turbo 码的大部分研究致力于在获得次优性能的情况下减小译码复杂度和时延，从而得到可实现的Turbo码系统。
1.几种主要译码算法的​性能比较
  Turbo码译码算法对Turbo码的影晌
对MAP算法、Log-MAP算法、Max-Log-MAP算法和SOVA算法在加性高斯白噪声信道（AWGN）环境下进行仿真比较，系统采用的是BPSK调制方式，Turbo 码的交织长度是1024 ， RSC子码的生成多项式为（37，21) ，系统编码率为R=1/2，译码时迭代5次，结果以曲线图给出如图。仿真结果表明，四种算法中，MAP算法性能最好，Log-MAP 算法的性能跟MAP 算法在较低的SNRq时比较接近， 高信噪比时差别则较大。Max-Log-MAP算法和SOVA算法的性能十分接近，一般情况下，Max-Log-MAP算法的性能，总是稍优于SOVA算法。它们跟MAP和Log-MAP相比，性能下降十分明显。从算法复杂度而言，MAP算法最为复杂，Log-MAP 其次，之后是Max- Log-MAP ，SOVA算法最简单。由此可以看出，性能优异的Turbo码译码算法十分复杂，如果要使得译码容易实现而对算法进行简化或者是采用简单的算法，往往需以性能的降低为代价。
⒉ 不同迭代次数对Turbo码性能的影响
迭代次数对Turbo码的影响  Turbo码左图给出了在不同解码迭代次数下，码率为1/ 2的Turbo码的BER与Eb/N0的关系曲线。Turbo 码的交织长度是1024 ，RSC 子码的生成多项式为（37，21) ，系统编码率为R=1/2。如Turbo码译码原理中所述，两个译码器之间互相交外部信息进行迭代。  Turbo码可以得到，迭代译码次数增大，译码性能增加。在第一次迭代的误比特性能都比较差，这是因为两个分量译码器之间的信息还没有被很好的相互利用。随着迭代次数的增加，两个分量译码器之间的外信息被更好的利用，对信息比特的估计更接近最大似然比，判决输出的正确性就越高。迭代次数达到一定数值时，译码性能趋于稳定，再增加新的迭代对性能的改善非常小。迭代增加了译码时延，在大帧编码时尤其如此。仿真中迭代次数增大时运行时间显著增加。
由于达到一定迭代次数后，新增加的迭代对性能改善不大，而法代又极大地增加译码时延，所以在实际设计Turbo码系统时，需要选择适当的迭代次数，在允许的译码时延内，达到最佳的译码性能。这种预先规定迭代次数的方式是终止译码迭代次数的方法之一.当要求的信噪比比较大，误码率要求不太高的情况，往往经过很少的几次迭代就能达到译码要求正确译码。此时，如果预设迭代次数比较大，那么译码器会继续译码，一直进行到预设次数的迭代为止.后边的几次送代并没有明显地提高性能，是完全不必要的，而且多余的法代食给译码带来了额外的时延。
⒊ 不同编码约束度K 对Turbo 码性能的影响
不同的约束度对Turbo 码性能的影响
采用不同子码的Turbo码的性能也有很大差别。Turbo 码的设计中首先就是选择好的RSC子码。这里只对几种常用的、较好的采用不同约束长度的RSC 做子码的Turbo 码进行仿真，以分析约束长度对Turbo 码性能的影响。可以看出，随着约束长度K增大，编码后的码元与更多个信息比特相关，因此译码纠错能力越强误比特率HER就越小.当BER<10-2e 时，增加卷积码的约束度将会改善Turbo 码HER性能。在交织器长度和码率一定时，约束度越大，Turbo 码的HER 性能越好。
在3G中的应用
信道编码技术可改善数字信息在传输过程中噪声和干扰造成的误差，提高系统可靠性。因而挺供高效的信道编译码技术成为3G移动通信系统中的关键技术之一。3G移动通信系统所提供的业务种类的多样性、灵活性，对差错控制编译码提出了更高的要求。WCDMA 和cdma2000方案都建议采用除与IS-95 CDMA系统类似的卷积编码技术和交织技术之外，采用Turbo编码技术。
⒈ RSC 编码器的设计
cdma2000 方案中，Turbo 码被用在CDMA系统前向、反向链路信道中。反向链路信道中，子编码器（3，1，3)RSC 的生成矩阵为：
Turbo码
RSC编码器基于8状态的并行级联卷积码（8PCCC）。交织采用了比特翻转技术。通过删余处理，码率为1/4，1/2，1/3的Turbo码被采用。分别对两个子编码器的输出奇偶位V2和V2‘交替删余，可得到码率为1/4的Turbo码；对V1，V1' 删余，可得码率为1/3；对V2、V2’间隔几V1，V1‘删余，可得码率1/2。
WCDMA中，对于收务服务质量需求BER介于10-3e和10-6e之间。并且允许时延较长的数据业务，RSC子编码器使用8态并行级联卷积码8-PCCι。生成矩阵为：
WCDMA中的turbo编码器
⒉ 交织长度的选择
在3G移动通信中，业务速率由32kbit/s到2Mbit/s。10ms一帧，帧长由20 到20000。为了提高译码器性能，在一些低速业务中，可采用多帧组成一个数据块，加大交织深度。
在WCDMA中，Turbo 码交织器是可截短型块交织器。交织行数为5、10或20行，在行数确定的基础上选择列数。数据按行读入交织器，按固定模式进行行间转换，不同输入序列长度对应不同的行数和行间转换模式。行转换完成后，近行列转换。不同行对应不同列间转换参数，采取的是接近随机化的素数取模算法。数据在完成行列转换后，按列读出。
cdma2000 也是基于块交织。交织行数为25=32行，列数N=2n，n为满足使32N大于或等于帧长度的最小值。数据按行读人。行间转换的依据是比特翻转原则。列问转换的置换公式是：x(i+1) = [x(i) + c] mod N，即为同模取余法，为了更接近随机化，使每列的偏置取不同值。数据经过行列转换后，按列输出。
⒊ 译码器的设计
由于Turbo码译码算法复杂，译码延时长，所以对于时延要求高的数据业务应用受限。因而低复杂度译码器的设计成为Turbo码译码算法设计的焦点。为了换取复杂度的简化，允许次优性能译码的存在。例如3GPP中允许Turbo码的译间比标准MAP算法有1dB的增益损失。结合CRC校验来减少迭代次数，在SNR 较大时可以减少译码复杂度和译码延时。
发展前景
日前Turbo码的研究尚缺少理论基础支持，但是在各种恶劣条件下（即低SNR情况下），提供接近Shannon 极限的通信能力已经通过模拟证明。但Turbo码也存在着一些急待解决的问题，例如译码算法的改进、复杂性的降低、译码延时的减小。作为商用3G 移动通信系统的关键技术之一，Turbo 码也将逐渐获得较好的理论支持并且得到进一步开发和完善。