Turbo码原理简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Turbo 码原理简介
1993年C.Berrou 、A.Glavieux 和P.Thitimajshiwa 首先提出了称之为Turbo 码的并行级联编译码方案。Turbo 码性能取决于码的距离特性。线性码的距离分布同于重量分布,如果低重量的输入序列经编码得到的还是低重量的输出序列,则距离特性变坏。该特性对于块码来说不存在问题;然而对于卷积码,则是个非常严重的问题。因为卷积码的距离特性是影响误码率的一个非常重要的因素。
在Turbo 码中,利用递归系统卷积码(RSC)编码器作为成员码时,低重量的输入序列经过编码后可以得到高重量的输出序列。同时交织器的使用,也能加大码字重量。实际上,Turbo 码的目标不是追求高的最小距离,而是设计具有尽可能少的低重量码字的码。Turbo 码由两个递归系统卷积码(RSC)并行级联而成。译码采用特有的迭代译码算法。
1 Turbo 码编码原理
典型的Turbo 码编码器结构框图如图2所示:由两个反馈的编码器(称为成员编码器)通过一个交织器I 并行连接而成。如果必要,由成员编码器输出的序列经过删余阵,从而可以产生一系列不同码率的码。例如,对于生成矩阵为g=[g1,g2]的(2,1,2)卷积码通过编码后,如果进行删余,则得到码率为1/2的编码输出序列;如果不进行删余,得到的码率为1/3。一般情况下,Turbo 码成员编码器是RSC 编码器。原因在于递归编码器可以改善码的比特误码率性能。
2 编码
方案中使用的Turbo 码为1/3码率的并行级联码,它的编码器由两个相同的码率为1/2的RSC 编码器及交织器组成,如图4所示。
由于与非递归卷积码相比,递归卷积码产生的码字重量更大,所以这里采
图7 Turbo 码编码器
输入信 息数据
编码器I
I
编码器II
删
余
复接
器
编码 输出
图2 Turbo 码编码原理图
用了两个相同的系统递归卷积码(RSC)。信息序列分成相同的两路,第一路经过RSC 编码器1,输出系统码1c 及校验码2c 。另一路先通过交织器进行交织,使信息序列在1帧内重新排列顺序,然后经过RSC 编码器2得到系统码和对应的校验码,由于该系统码和1c 实际上都是原信息序列,只是排列顺序不同,在接收端完全可以通过对1c 进行交织得到,因此在传输过程中可以省去,而只保留对应的校验位3c 。在具体实现中, RSC 编码器2的输入是通过对RSC 编码器1的系统输出1c 进行交织来得到的。321,,c c c 再经过并/串转换,作为整个Turbo 码编码器的输出。对应于每1位信息比特,该编码器输出3位,因此其码率为1/3。如果采用了奇偶删余,即在并/串转换时,在校验位奇位上取2c ,偶位上取3c 或反之,则码率可升为1/2。
由于RSC 编码器不能如非递归编码器一样通过输入连“0”序列来使编码器
复位(网格终止),因此通过设计如图8所示的A 、B 间的开关来控制编码器终止,当一帧结束时,开关由A 打到B ,则经过m 时刻后,编码器复位,可以对下一帧数据进行编码。这里m=2。只有RSC 编码器1(外编码器)进行了网络终止,RSC 编码器2保持开放。
3 译码
由于Turbo 码是由两个或多个成员码经过不同交织后对同一信息序列进行编码。译码时,为了更好地利用译码器之间的信息,译码器应该利用软判决信息,而不是硬判决信息。因此,一个有两个成员码构成的Turbo 码的译码器是由两个与成员码对应的译码单元和交织器与解交织器组成的,将一个译码单元的软输出信息作为下一个译码器单元的输入,为了进一步提高译码性能,将此过程迭代数次。这就是Turbo 码的迭代译码算法的原理。
图8 RSC 成员编码器
Turbo 码可以利用多种译码算法,如最大似然译码MAP 、Log-MAP 算法、Max-log-MAP 算法和SOV A 算法等。图所示为Turbo 码迭代译码器的结构。
Turbo 码译码器为串行结构,两个编码器所产生的校验信息通过串并转换被分开,分别送到对应的译码器输入端。首先,第一级译码器根据系统位信息L(y s |u)和第一级编码器的校验位信息L(y 1|x 1)得到输出信息(此时译码器2外信息L e [C 2](u )=0),输出信息包含两部分,一部分是由译码器根据码字相关性提取出来的外信息,用L e [C 1](u )表示;另一部分来自于系统位对应的信道输出,在传递给下一级译码器之前,被减去。L e [C 1](u )在交织之后被送到译码器2作为先验信息,译码器2因此根据校验位信息、系统位信息和L e [C 1](u )这三者共同做出估计,得到输出信息L(u ),L(u )在减去L e [C1](u )+ L(y s |u)之后,得到译码器2的外信息L e [C 2](u ),它在解交织之后,反馈给第一级译码器作为先验信息,结合L e [C 2](u ),译码器1重新做出译码估计,得到改善的外信息。而此时的外信息又可以传递到译码器2,如此往复,形成迭代过程。最终,当达到预先设定的迭代次数或满足迭代结束条件时,译码结束,取L(u )的符号作为最终硬判决输出。 a)SOV A 译码算法
传统Viterbi 算法用来计算卷积码的最大似然(ML)序列,只提供硬判决输出。但在级联系统中,前级硬判决实际上相当于丢失了信息,使后级译码器无法从解调得到的软输出中获益。SOV A 是改进的Viterbi 算法,它可以给出译码结果的可靠性值(软输出),这个可靠性值作为先验信息传递给下级译码器,从而提高译码性能。
b) LOG-MAP 译码算法
LOG-MAP 是改进的MAP(最大后验概率)算法,它在对数域进行计算,可以将MAP 算法中大量的乘法运算化简为加法运算,从而降低计算量。除此之外,它的基本原理与经典MAP 算法相同。
MAP 算法由Bahl 等人于1974年提出,因此又称为BCJR 算法。与Viterbi 算法不同,它估计出最大似然比特,而前者产生最大似然序列。也就是说
Viterbi
图9 Turbo 码迭代译码器结构