Turbo码的结构与编码
编码器包含两个并联的递归系统卷积码编码器和一个交织器
两个编码器生成的校验比特在删除器中按一定规则进行删除,最后和信息比特复用,得到编码序列
Turbo编码举例
CDMA2000采用的成员编码器是八状态RSC编码器:
在一开始计算时,由于递归的原因,输出信息进入输入,计算搞得一塌糊涂,以成员编码器1为例,介绍一下我现在的想法:
假设输入序列:
[
1
,
0
,
1
,
0
,
0
,
1
,
0
,
0
]
\ [1,0,1,0,0,1,0,0]\,
[1,0,1,0,0,1,0,0]
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)=[1,0,1,0,0,1,0,0]对于
y
0
(
t
)
\ y_0(t) \,
y0(t)
编码器可简化为如图形式
- 橙线为反馈线路,输入信号需要先于后两位移位寄存器中的数据摩尔加后,才正常输入。
- 绿线为正常卷积码形式,可使用卷积码的方式计算,但是由于反馈的存在,理论推导会比较麻烦。
- 初始状态下,移位寄存器内为 0 、 0 、 0 \ 0、0、0 \, 0、0、0
- 输入
1
\ 1\,
1,此时进行计算时,使用的均为现状态,(或认为是上一状态)
通过橙线, 1 \ 1\, 1与 [ ∗ 、 0 、 0 ] \ [*、0、0]\, [∗、0、0]摩尔加,得到 1 \ 1\, 1,则编码器下一状态为 [ 1 、 0 、 0 ] \ [1、0、0]\, [1、0、0]
1 \ 1\, 1继续通过绿线摩尔加,使用原状态,即 1 \ 1\, 1与 [ 0 、 ∗ 、 0 ] \ [0、*、0]\, [0、∗、0]摩尔加,则输出为1. - 继续输入
0
\ 0\,
0,此时计算,使用的状态为
[
1
、
0
、
0
]
\ [1、0、0]\,
[1、0、0]
通过橙线, 0 \ 0\, 0与 [ ∗ 、 0 、 0 ] \ [*、0、0]\, [∗、0、0]摩尔加,得到 0 \ 0\, 0,则编码器下一状态为 [ 0 、 1 、 0 ] \ [0、1、0]\, [0、1、0]
0 \ 0\, 0继续通过绿线摩尔加,使用原状态,即 0 \ 0\, 0与 [ 1 、 ∗ 、 0 ] \ [1、*、0]\, [1、∗、0]摩尔加,则输出为1. - 继续输入
1
\ 1\,
1,此时计算,使用的状态为
[
0
、
1
、
0
]
\ [0、1、0]\,
[0、1、0]
通过橙线, 1 \ 1\, 1与 [ ∗ 、 1 、 0 ] \ [*、1、0]\, [∗、1、0]摩尔加,得到 0 \ 0\, 0,则编码器下一状态为 [ 0 、 0 、 1 ] \ [0、0、1]\, [0、0、1]
反馈的体现
由于反馈,此时下一状态不是卷积码的[1、0、1]
0
\ 0\,
0继续通过绿线摩尔加,使用原状态,即
0
\ 0\,
0与
[
0
、
∗
、
0
]
\ [0、*、0]\,
[0、∗、0]摩尔加,则输出为0.
5. 按照条件,继续运算,得到
y
0
(
t
)
=
[
1
、
1
、
0
、
0
、
1
、
0
、
0
、
1
]
\ y_0(t)=[1、1、0、0、1、0、0、1]\,
y0(t)=[1、1、0、0、1、0、0、1]
删余
假设删余码如此工作:
码率 | 1/2 |
---|---|
x ( t ) \ x(t)\, x(t) | 00 |
y 0 ( t ) \ y_0(t)\, y0(t) | 10 |
y 1 ( t ) \ y_1(t)\, y1(t) | 00 |
0
\ 0\,
0表示需要删除,
1
\ 1\,
1保留
那
y
1
(
t
)
\ y_1(t)\,
y1(t)的输出我们可以不用计算,最终我们只保留
y
0
(
t
)
\ y_0(t)\,
y0(t)的每
2
b
i
t
\ 2bit\,
2bit首位,
那最终输出为 [ 1 、 ∗ 、 0 、 ∗ 、 1 、 ∗ 、 0 ] \ [1、*、0、*、1、*、0]\, [1、∗、0、∗、1、∗、0]
复用
成员编码器2进行同样的运算,
他的删余方式为:
码率 | 1/2 |
---|---|
x ′ ( t ) \ x'(t)\, x′(t) | 00 |
y 0 ′ ( t ) \ y'_0(t)\, y0′(t) | 01 |
y 1 ′ ( t ) \ y'_1(t)\, y1′(t) | 00 |
成员编码器2的输入,是经过交织器形成的,这里认为输入是:
[
1
、
1
、
0
、
0
、
0
、
0
、
1
、
0
]
\ [1、1、0、0、0、0、1、0]\,
[1、1、0、0、0、0、1、0]
最终输出为
[
∗
、
0
、
∗
、
0
、
∗
、
0
、
∗
、
0
]
\ [*、0、*、0、*、0、*、0]\,
[∗、0、∗、0、∗、0、∗、0]
即
复用后结果为