Turbo码的结构与编码

turbo
编码器包含两个并联的递归系统卷积码编码器和一个交织器
两个编码器生成的校验比特在删除器中按一定规则进行删除,最后和信息比特复用,得到编码序列

Turbo编码举例

CDMA2000采用的成员编码器是八状态RSC编码器:
在这里插入图片描述
在一开始计算时,由于递归的原因,输出信息进入输入,计算搞得一塌糊涂,以成员编码器1为例,介绍一下我现在的想法:
在这里插入图片描述

假设输入序列:
 [1,0,1,0,0,1,0,0] \ [1,0,1,0,0,1,0,0]\, [10100100] x(t) \ x(t) \, x(t)即为输入序列,所以
 x(t)=[1,0,1,0,0,1,0,0] \ x(t)=[1,0,1,0,0,1,0,0]\, x(t)=[10100100]对于 y0(t) \ y_0(t) \, y0(t)
编码器可简化为如图形式
在这里插入图片描述

  • 橙线为反馈线路,输入信号需要先于后两位移位寄存器中的数据摩尔加后,才正常输入。
  • 绿线为正常卷积码形式,可使用卷积码的方式计算,但是由于反馈的存在,理论推导会比较麻烦。
  1. 初始状态下,移位寄存器内为 0、0、0 \ 0、0、0 \, 000
  2. 输入 1 \ 1\, 1,此时进行计算时,使用的均为现状态,(或认为是上一状态)
    通过橙线, 1 \ 1\, 1 [∗、0、0] \ [*、0、0]\, [00]摩尔加,得到 1 \ 1\, 1,则编码器下一状态为 [1、0、0] \ [1、0、0]\, [100]
     1 \ 1\, 1继续通过绿线摩尔加,使用原状态,即 1 \ 1\, 1 [0、∗、0] \ [0、*、0]\, [00]摩尔加,则输出为1.
  3. 继续输入 0 \ 0\, 0,此时计算,使用的状态为 [1、0、0] \ [1、0、0]\, [100]
    通过橙线, 0 \ 0\, 0 [∗、0、0] \ [*、0、0]\, [00]摩尔加,得到 0 \ 0\, 0,则编码器下一状态为 [0、1、0] \ [0、1、0]\, [010]
     0 \ 0\, 0继续通过绿线摩尔加,使用原状态,即 0 \ 0\, 0 [1、∗、0] \ [1、*、0]\, [10]摩尔加,则输出为1.
  4. 继续输入 1 \ 1\, 1,此时计算,使用的状态为 [0、1、0] \ [0、1、0]\, [010]
    通过橙线, 1 \ 1\, 1 [∗、1、0] \ [*、1、0]\, [10]摩尔加,得到 0 \ 0\, 0,则编码器下一状态为 [0、0、1] \ [0、0、1]\, [001]

反馈的体现

由于反馈,此时下一状态不是卷积码的[1、0、1]

 0 \ 0\, 0继续通过绿线摩尔加,使用原状态,即 0 \ 0\, 0 [0、∗、0] \ [0、*、0]\, [00]摩尔加,则输出为0.
5. 按照条件,继续运算,得到 y0(t)=[1、1、0、0、1、0、0、1] \ y_0(t)=[1、1、0、0、1、0、0、1]\, y0(t)=[11001001]

删余

假设删余码如此工作:

码率 1/2
 x(t) \ x(t)\, x(t) 00
 y0(t) \ y_0(t)\, y0(t) 10
 y1(t) \ y_1(t)\, y1(t) 00

 0 \ 0\, 0表示需要删除, 1 \ 1\, 1保留
 y1(t) \ y_1(t)\, y1(t)的输出我们可以不用计算,最终我们只保留 y0(t) \ y_0(t)\, y0(t)的每 2bit \ 2bit\, 2bit首位,

那最终输出为 [1、∗、0、∗、1、∗、0] \ [1、*、0、*、1、*、0]\, [1010]

复用

成员编码器2进行同样的运算,
他的删余方式为:

码率 1/2
 x′(t) \ x'(t)\, x(t) 00
 y0′(t) \ y'_0(t)\, y0(t) 01
 y1′(t) \ y'_1(t)\, y1(t) 00

成员编码器2的输入,是经过交织器形成的,这里认为输入是:
 [1、1、0、0、0、0、1、0] \ [1、1、0、0、0、0、1、0]\, [11000010]
最终输出为 [∗、0、∗、0、∗、0、∗、0] \ [*、0、*、0、*、0、*、0]\, [0000]


在这里插入图片描述

复用后结果为
在这里插入图片描述

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐