Turbo 码 MAP 译码算法的研究与仿真
http://www.paper.edu.cn
姜海礁
河海大学计算机及信息工程学院,南京 (210098)
E-mail:longzij@hhu.edu.cn
摘 要:1993 年,法国的 C.Berrou 等人提出了一种新的纠错编码方式—Turbo 码,当交织
长度足够长时,其性能接近 Shannon 信道编码极限值,因此 Turbo 码的出现,被看作是信道
编码理论发展史的一个里程碑,它使人们设计信道编码的方法从增加码的最小汉明距离转向
减少低重量码字的个数。Turbo 码性能优异,已经被确定为第三代通信系统的信道编码方案
之一。本文介绍了 Turbo 码的编译码原理及其在 TD-SCDMA 通信系统中的应用情况;结合
Turbo 码的迭代译码过程,重点讨论 MAP 译码算法的详细推导和具体应用方法;根据
3GPP25.222 协议中定义的 Turbo 码标准,从不同角度进行 MAP 译码算法的 MATLAB 仿真。
根据仿真结果,分析 MAP 算法的译码性能,并且就设计参数对译码性能的影响进行了比较
性分析。
关键词:TD-SCDMA 系统;信道编码;Turbo 码;MAP 算法
中图分类号:TN919.32
1. 引言
Turbo码,又称并行级联卷积码(Parallel Concatenated Conventional Code),是由C. Berrou
等在ICC国际会议上提出的,它巧妙地将卷积码和随机交织器结合在一起,实现了随机编码
的思想,同时采用软输出迭代译码的方法,达到了接近Shannon极限的纠错性能。因此从它
的诞生开始,围绕着Turbo码就一直存在许多的研究和讨论。
Turbo码被确定为3G的信道编码方案之一,用于包括语音、数据和多媒体信息在内的多
种数据的高速率、高质量传播。TD-SCDMA是我国独立提出的3G标准,现正处于商用建设
阶段,本文将讨论Turbo码在TD-SCDMA通信系统中的应用情况,重点研究经典MAP算法用
于Turbo码译码的纠错性能。
2. 仿真模型
2.1 Turbo 码编码方法
好的Turbo码一般是由较短约束长度
K = ∼ 的分量码构成。图1为Turbo码的编码器结
构,是由两个RSC(递归系统卷积码)编码器通过交织器并行级联组成的,其中虚线只对编码
器归零有效[1]。
3 5
1kv
2kv
{ }kd
{ }kd′
图 1 Turbo 码的编码器结构
- 1 -
{ }ku
{ }kv
{ }ku′
http://www.paper.edu.cn
分量编码器生成的校验比特序列{ }kv 可以通过开关转接得以收缩,从而使整个编码效
率提高,如果没有这个开关,编码效率将为 1/3。在码率为 1/2 的情况下,其中 kv 是由 kv1 和
kv2 交替组成。Turbo 码在 k 时刻的输出为
,假设采用 BPSK 调制方法,则信
道上发送的信号为:
u v
(
,
k
k
C
=
)
k
C
k
=
C C
(
,
s
k
p
k
)
=
u
( (2
k
−
1)
E
s
,(2
v
k
−
1)
E
s
)
(2-5)
经过信道传输、解调,接收器匹配滤波,在 k 时刻的输出采样值为
的任务就是利用接收的采样序列来估计发送信号。
R =
k
(
x
k
,
y
k
)
,译码器
2.2 Turbo 码译码器结构
Turbo 码译码器的基本结构如图 2 所示。它由两个软输入软输出(SISO)译码器 DEC1 和
DEC2 串行级联组成,交织器与编码器所使用的交织器结构相同。为了充分利用译码器之间
的信息,将一个译码器的软输出信息作为另一个译码器的输入,并将此过程重复数次以获得
更好的译码性能,这就是 Turbo 码译码器的基本的工作原理[2]。
kx
ky
kz
^
kdL
1
(
)
^
ndL
1
(
)
ky1
ky2
^
e dL
(
)
k
2
^
kdL
(
)
2
^
kd
图 2 Turbo 码译码器结构
译码器 DEC1 对分量码 RSC1 进行最佳译码,产生信息序列 }{ kd 各个比特信息的对数
ˆ(
L d ,将其经交织后输入到译码器 DEC2,译码器 DEC2 将此信息作为接收序列的
)k
似然比 1
系统信息,对分量码 RSC2 进行最佳译码,产生交织后的信息序列各个比特的对数似然比
L d ,之后提取其中的外信息 2
L d ,经解交织反馈输入到译码器 DEC1,进行下一次
2
e
L d 已经逼近对整个信息序列的
译码。这样,经过多次反馈迭代,译码器 DEC2 输出的 2
最佳译码,对此似然比信息进行硬判决,即可得到信息序列 }{ kd 的最佳估值 ˆ{ }kd 。
ˆ(
)k
ˆ(
)k
ˆ(
)
k
在各种软输出译码算法中基于BAHL算法的MAP(最大后验概率)算法被证明具有最优译
码性能,然而该算法的复杂性阻碍了它的实际应用。为了降低计算的复杂程度,随后提出了
一些MAP类次最优译码算法,包括Log-MAP算法和Max-Log-MAP算法等,这些算法都是以
MAP算法为基础经过数学上的简化计算而得到的。随着科技的发展,硬件的处理能力也不
断的提高,算法的复杂性将不会成为其应用的主要障碍,所以对经典MAP算法的研究显得
- 2 -
http://www.paper.edu.cn
尤为重要。本文将讨论MAP算法在Turbo码译码过程中的具体应用,并得出MAP算法译码性
能的仿真结果。
3. MAP 译码算法研究
Turbo 码的译码过程开始于每个数据比特后验概率(APP)的形成,然后是选择对应于最
大后验概率(MAP)的数据比特作为译码比特,随着编码比特序列的接收,APP 判决过程使得
MAP 算法可以确定每个时刻最可能传输的信息比特。这里将描述 MAP 算法在 Turbo 码译码
过程中的具体应用。
3.1 MAP 译码算法原理
k
aa
,
k
设 RSC 编码器码的约束长度为 K ,在 k 时刻编码器的状态 kS 表示为[3][4]:
(
=
S
,并假设信息比特序列 }{ kd 由 N 个独立的信息比特 kd 组成,
而且值为 0 和 1 的概率相等。假设编码器的初始状态和终止状态都为 0 状态,即
S
C
N
。编码器的输出序列表示为:
1
=
0) 0
,......
(0,0
S=
Kk
1
+−
C
a
=
1
−
)
k
N
0
=
C
}
{ 1
,信息经
N
=
R
R
R
{ 1
N
1
,其
C
R
}
N
k
k
过离散高斯无记忆信道传输,译码器接收到的序列表示为
中
k
k
,
(
)
x
y
。
R =
k
d k = 的后验概率,
k mλ 求和得到译码数据比特
可以对所有状态的联合概率 (
i
m
Rm
N
(
)
}
(3-1)
1
)
=λ
si
,
令
=
=
i
/
k
dP
{
k
r
这样可以得出每个译码比特的后验概率为:
=
=
}
i
k
Ri
/
N
1
dP
{
r
k
i
λ
k
(
m
)
∑
m
i
=
1,0
, (3-2)
由式(3-1)和(3-2)可以推出每个数据比特 kd 的 LLR(对数似然比)为:
L d
(
k
)
=
ln
∑
∑
m
m
1
λ
k
(
m
)
0
λ
k
(
m
)
(3-3)
最后译码器根据 (
)kL d 的值判决每个时刻的译码比特:
ˆ
d
ˆ
d
k
k
=
=
1
0
当
当
L d
(
k
L d
(
k
)
)
≥
<
0
0
时
时
(3-4)
考虑到 RSC 编码器等效于一个马尔可夫源,在状态 1−kS 已知时, 1k − 时刻以后发生的
)kL d 的具体表达式:
事件与以前输入无关,根据式(3-1)和(3-3),利用贝叶斯公式可以推导出 ˆ(
ˆ(
L d
k
)
=
log
∑∑
∑∑
m m
′
′
m m
1
=
log
′
∑∑∑
m m j
=
1
∑∑∑
0
m m j
′
=
0
P d
{
r
P d
{
r
k
=
1,
k
=
0,
=
s m s
,
k
k
s m s
,
k
k
=
1
−
1
−
=
=
,
′
m R
k
1
m R
k
1
,
′
1
−
,
1
−
,
,
R R
N
k
k
1
+
R R
N
k
k
1
+
,
}
}
=
j s
,
k
1
−
=
k
1
−
m R
k
1
/
′
1
−
P R
} {
N
r
k
1
+
/
s m P d
} {
r
k
=
k
=
1,
s m R s
/
k
k
=
,
k
(3-5)
=
m
}
′
1
−
P d
{
r
P d
{
r
k
1
−
=
j s
,
k
1
−
=
m R
k
1
/
′
1
−
P R
} {
N
r
k
1
+
/
s m P d
} {
r
k
=
k
=
0,
- 3 -
s m R s
/
k
=
,
k
m−
}
′
1
=
k
令
α =
(
i
k
)
=
m
i s m R
m P d
,
/
{
k
=
k
r
k
1
s
m
P R
}
/
{
N
=
k
k
r
1
+
P R
R
/
}
{
N
k
k
r
1
1
+
dP
si
{
,
)
=
=
r
mmR
k
,
′
=
)
,
k
k
β
k
(
γ
i
(
http://www.paper.edu.cn
}
(3-6)
(3-7)
=
sRm
/
,
k
1 m
}
′=
−
k
(3-8)
i
)
(
k mα 称为前向状态量度, (
可以得到 ˆ(
)kL d 的简化表达式:
k mβ 称为后向状态量度, (
γ
i
)
kR m m
,
,
′ 称为分支状态量度。
)
1
=
1
∑ ∑ ∑
m m j
0
′
∑ ∑ ∑
m m j
′
=
0
γ
1
(
γ
0
(
R m m
k
,
′
,
R m m
k
,
′
,
j
)
α
k
−
1
(
m
′
)
β
k
(
m
)
)
j
α
k
1
−
(
m
′
)
β
k
(
m
)
(3-9)
ˆ(
L d
k
)
=
log
3.2 对数似然比的计算
可以由 (
γ
i
kR m m
,
′ 得到 (
i
k mα 和 (
k mβ 的递推关系式:
)
)
)
,
i
α
k
(
m
)
=
β
k
(
m
)
=
∑∑
m j
′
0
1
=
1
1
∑∑∑∑
m m i
′
=
0
j
=
0
1
∑∑
m i
′
=
0
1
1
∑∑∑∑
m m i
′
=
0
j
γ
i
(
mmR
k
,
′
,
)
j
α
k
1
−
(
m
)
′
γ
i
(
mmR
k
,
′
,
(3-10)
)
j
α
k
1
−
(
m
)
′
γ
i
(
mmR
k
1
+
,
,
)
′
β
k
1
+
(
m
)
′
(3-11)
γ
i
(
mmR
k
,
′
1
+
,
)
j
α
k
(
m
)
′
0
=
mmRk
(
)ˆ( kdL
递推求出
所以,若要计算
,首先要求出
,
kα ,之后可以求出
(mi
γ
i
)
)
,
′
(mkβ ,最后利用式(3-8)计算 )ˆ( kdL 。
,当已知编码的初始状态,就可以由
)
r
k
k
k
)
(
1
−
1
−
)
,
′
=
=
=
=
=
=
γ
i
m q d
} {
′
k
i s m s
/
,
k
m s m s
} {
/
′
π
k
i s m s
,
,
=
k
m−
)
′
1
mmRk
,
根据贝叶斯公式,由式(3-8)可得[5]:
R m m P R d
,
,
(
{ /
′
γ
=
(3-12)
k
k
k
i
= 条件下, kx 和 ky 是两个独立的高斯随机变量,并且 kx 和
d
i s m s
(
,
,
=
=
在
k
k
是无关的,可以将 kx 的 APP 分离出来:
m
sms
,
′=
=
k
k
−1
d
dRP
si
yPi
m
/
,
/
{}
=
r
r
k
k
k
1 m
smsi
/
}
,
′=
的值为 1 或 0。特定时刻的编码
根据 RSC 码编码器的编码机制,
k
状态根据输入的 kd 只有两种可能的转移状态,所以:
sπ
{
k
sπ
{
1}
=′=
1}
=′=
m
}
=′=
m
}
=′=
}
=′=
dq
{
}1
=
;
}0
=
sm
/
k
sm
/
sm
,
k
sm
,
xP
{
r
=
(3-13)
/1
/0
d
k
=
− m
1
− m
1
dP
{
k
r
dP
{
r
m
}
′=
=
=
=
=
s
k
s
sm
,
sm
,
m
}
′
=
=
,有
,有
si
,
=
=
=
=
=
{
1
−
1
−
1
−
1
−
1
−
/
−
k
k
k
k
k
k
k
k
k
k
k
k
k
k
k
k
如果
dq
{
dq
{
最后可得:
如果
γ
i
dxPmmR
(
/{
k
k
=
,
′
)
,
r
smsi
,
,
=
k
′=
dPm
{}
r
k
=
i
}
k
1
−
(3-14)
=
dyPi
{}
/
r
k
k
=
k
- 4 -
http://www.paper.edu.cn
,设编码的初始状态和结束状态都为零状态,则有
LLR 的计算步骤可分为:
(mNβ
(0 miα 和
)
)
1. 初始化
mi
i
(
)
1)0(
α
α
=
0
0
mN
1)0(
(
β
β
=
N
0
=
)
0
=
1,0
=
i
m
,0
≠∀
m
0
≠∀
mmRk
(
)
,
2. 对于每一组接收到的数据 kR ,
3. 等数据序列 NR1 接收完毕后,
4. 最后根据式(3-9),可以得到每个传输比特 kd 的 LLR。
γ
i
(mkβ 可以由式(3-11)得出。
和
,
′
)
kα 可以由式(3-14)和式(3-10)得出。
(mi
)
3.3 反馈迭代译码过程
因为编码器是系统的(
d= ,
mmRk
(1
)
γ
)ˆ( kdL 的计算公式中分离出来,得到如下表达式:
状态 1−ks 无关,所以我们可以将其从
表达式中的转移概率 { /
k
P x d i= 和状态 ks 与
x
k
}
,
′
)
,
k
k
r
)ˆ(
dL
k
=
log
xP
{
r
xP
{
r
k
k
/
/
d
d
k
k
=
=
}1
}0
+
log
1
=
1
∑ ∑ ∑
m j
′
0
m
∑ ∑ ∑
m j
′
=
0
m
γ
1
(
γ
0
(
mmy
k
,
′
,
j
)
α
k
1
−
(
m
′
)
β
k
(
m
)
(3-15)
mmy
k
,
′
,
j
)
α
k
1
−
(
m
)
′
β
k
(
m
)
考虑到
d
k
d=
1
(
k
=
)时,高斯随机变量 kx 的均值为 1( 1)− ,方差为 2σ ,所以:
0
)ˆ(
dL
k
=
2
2σ
WxLWx
k
+
=
+
)
(
k
c
k
(3-16)
k
ˆ(
W L d
=
k
k
) |
x
k
=
0
=
log
γ
1
(
y m m
k
,
′
,
)
j
α
k
1
−
(
m
)
′
β
k
(
m
)
(3-17)
γ
0
(
y m m
k
,
′
,
)
j
α
k
1
−
(
m
)
′
β
k
(
m
)
∑∑∑
m m j
′
0
1
=
1
∑∑∑
′
m m j
)
=
0
)ˆ( kdL
是译码器的软判决输出, (
c
L x 是信道度量值, kW 是校验信息的函数,是由译
k
码器提供的非本征信息,并且与译码器的输入 kx 无关,称为外信息。
(
y
1
)k P
1
−
(
y
)k P
2
1
−
(
z
)k
p
1
−
(
px
)k
1
−
(
py
)k
1
−
图 3 迭代次数为 p 的迭代反馈译码器
- 5 -
(
z
)k
p
ˆ(
)k Pd
(
px
)k
(
py
)k
http://www.paper.edu.cn
如图 3 所示译码器加入反馈回路后,DEC1 的输入变为
)
(mkβ 的计算公式中,
z
)
,
和
将取代
性很小,并且假设 kz 近似为一个方差为
2 σσ ≠z
2
率可以写成:
R =
k
y
k
1
x
(
,
k
k
k
k
,
)
z
x
(
y
1k
,状态量度
y
,
(mi
)
1
。考虑 kz 同 kx , ky1 的相关
的高斯变量,这样离散高斯信道的转移概
R =
k
kα
k
)
x
(
,
k
dRP
r
{
/
k
译码器 DEC1 产生的 LLR
k
=
si
,
=
k
)ˆ(1
kdL
)ˆ(
dL
1
k
sm
,
k
1
−
变为:
2
2
σ
=
x
=′=
m
}
xP
(
r
k
)/
⋅
yP
(
r
k
)/
⋅
zP
(
r
k
)/
⋅
(3-18)
+
k
2
2
σ
z
Wz
k
k
1
+
(3-19)
x
n z
,{
kW1 是序列
DEC2 的输入信息,这样,DEC2 的输入序列将是
≠}
kn
n
的函数。 kz 是译码器 DEC2 提供的非本征信息,所以 kz 不能用作
和 ky2 ,
)}ˆ(~{ 1
ndL
(3-20)
其中
=
0
n
)
=
ˆ
L d
)
(
n z
1
ˆ
L d
(
n
1
)ˆ(2
kdL
可表示为
ˆ
ˆ
L d
f L d
(
)
(
(
k
n
1
2
ˆ(
z W
L d
k
2
2
=
=
=
k
k
则 DEC2 输出的 LLR
译码器 DEC2 的外信息为
))
) |
+
W
2
k
(3-21)
,经过解交织反馈到译码器 DEC1 输入
ˆ
L d
(
k
1
) 0
=
ˆ
d =
端,进行迭代译码过程,最后,译码器 DEC2 输出最终的硬判决比特信息
k
)ˆ(~
kdL
1
值得注意的是,在每次迭代译码的过程中,(
z 的方差 2
)k
zσ 和
p
的方差必须被重新
zσ 的估计方法。假设交织器是一个 2M 的矩阵,则, kz 的均值为:
估计。下面给出, 2
sign
[
ˆ(
dL
2
k
)]
。
m
z
=
2
1 M
∑
M
2
1
=
k
z
k
, kz 的方差为,
2
σ
z
2
M
= ∑
2
1
M
k
1
=
(
z
k
−
m
z
2
)
。
4. 实验结果及分析
Turbo码在TD-SCDMA系统的应用中通常是逐帧进行编译码的,本文将按照3GPP协议中
规定的数据帧长度进行仿真,采用如图1所示的RSC编码器,交织器采用与帧长相等的确定
性线性交织器,信道为AWGN信道,调制方式为BPSK,两个分量译码器都采用MAP译码算
法,仿真用MATLAB编程完成。
- 6 -
)
R
E
L
B
R
E
B
/
(
/
率
帧
误
率
特
比
误
100
10-1
10-2
10-3
10-4
10-5
10-6
10-7
1
误比特率 (BER)
误帧率 (BLER)
1.2
1.4
http://www.paper.edu.cn
1.8
(Eb/No)
2
2.2
2.4
图 4 Turbo 码的 MAP 算法的译码性能
1.6
信噪比
1/ 2
4
图 4 为AWGN 信 道 条 件 下 , 码 率
[15,13]
v = , 生 成 多 项 式
G =
p = 时,Turbo码MAP译码算法的仿真结果。从
仿真结果可以看出MAP算法优秀的译码性能,在信噪比为2.2时,误比特率已经达到了 710− 量
级,这完全能满足TD-SCDMA系统中数据高速、高效传输的要求。
, 寄 存 器 记 忆 长 度 3
,迭代次数
1024
,帧长
N =
R =
N=400
N=1024
)
R
E
B
(
率
特
比
误
100
10-1
10-2
10-3
10-4
10-5
10-6
10-7
1
N=1024 (BER)
N=400 (BER)
1.2
1.4
1.6
1.8
2
信 噪 比 (Eb/No)
2.2
2.4
2.6
2.8
图 5 Turbo 码 MAP 译码算法不同帧长的译码性能比较
- 7 -
图 5 为AWGN 信 道 条 件 下 , 码 率
[15,13]
G =
下,MAP算法的性能随数据帧长的增加而显著提高。这是以增加硬件复杂度为代价的。
v = , 生 成 多 项 式
p = 时,Turbo码MAP译码算法的仿真结果。可以看出,同等条件
, 寄 存 器 记 忆 长 度 3
,迭代次数
1/ 2
R =
4
http://www.paper.edu.cn
100
10-1
10-2
10-3
10-4
10-5
10-6
1
p=1
p=3
p=6
p=1 (BER)
p=3 (BER)
p=6 (BER)
1.2
1.4
1.6
2
1.8
2.2
信噪比 (Eb/No)
2.4
2.6
2.8
3
)
R
E
B
(
率
特
比
误
图 6 Turbo 码 MAP 译码算法不同迭代次数的译码性能比较
,帧长
G =
[07,05]
图6为AWGN信道条件下,码率 1/ 2
v = ,生
p = 时,Turbo码MAP译码算法的仿真结果。该结果反映
成多项式
出增加译码迭代次数可以提高纠错性能,但是当迭代次数由3次增加至6次时纠错性能的提高
不如由1次增加到3次时的那么显著,因此均衡考虑也不必采用过多的迭代次数,6次或8次就
已经可以得到很好的译码性能。
,寄存器记忆长度 2
R =
6
,迭代次数
1024
N =
比较图6与图4的仿真结果,可以发现在仿真条件相同的情况下,增加编码器的记忆长度
能有效的提高译码性能,而且效果要比增加迭代次数显著,然而,这也是以增加硬件复杂度
为代价的,在实际应用中需要综合考虑。
5. 结论
本文中讨论了TD-SCDMA系统规定的标准Turbo码,重点分析研究MAP译码算法,并应
用该算法得到了多个软件仿真结果。由仿真结果分析可见,采用递归系统卷积码以及确定性
线性交织器,配合MAP算法译码,Turbo码可以达到很理想的纠错性能。增加译码迭代次数、
增加数据帧长、增加编码器的记忆长度都能提高Turbo码的译码性能,但同时也会增加编码
器及译码器的复杂性并影响译码的实时性,因此在实际通信系统的应用中,需要权衡考虑各
项参数的选择。
- 8 -