Turbo码的各种译码算法及比较

Turbo码的各种译码算法及比较
Turbo码的各种译码算法及比较

Turbo 码的各种译码算法及比较

Turbo 码有一重要特点是其译码较为复杂,比常规的卷积码要复杂的多,这种复杂不仅在于其译码要采用迭代的过程,而且采用的算法本身也比较复杂。这些算法的关键是不但要能够对每比特进行译码,而且还要伴随着译码给出每比特译出的可靠性信息,有了这些信息,迭代才能进行下去。用于Turbo 码译码的具体算法有:MAP(Maximum A Posterori)、Max-Log-MAP 、Log-MAP 和SOV A(Soft Output Viterbi Algorithm)算法。MAP 算法是1974年被用于卷积码的译码,但用作Turbo 码的译码还是要做一些修改;Max-Log-MAP 与Log-MAP 是根据MAP 算法在运算量上做了重大改进,虽然性能有些下降,但使得Turbo 码的译码复杂度大大的降低了,更加适合于实际系统的运用;Viterbi 算法并不适合Turbo 码的译码,原因就是没有每比特译出的可靠性信息输出,修改后的具有软信息输出的SOV A 算法,就正好适合了Turbo 码的译码。这些算法在复杂度上和性能上具有一定的差异,系统地了解这些算法的原理是对Turbo 码研究的基础,同时对这些算法的复杂度和性能的比较研究也将有助于Turbo 的应用研究。

MAP 算法

MAP 算法最初是用来估计无记忆噪声下的马尔可夫过程的,它是一种最优的算法。Bahl 等人于1974年把它用于线性分组码和卷积码的译码中,在用于卷积码的译码时,对于给定接收序列Y ,它不像Viterbi 算法那样以栅格路径上的比特组错误最少为目的,

而是以译码出来的符号i x

的错误最少为目的。即, (){}arg m ax i

i i x x

P x Y = (1.1)

不过在大多情况下,它和Viterbi 算法的作用是一致的。

由于在卷积码的译码中,MAP 算法要考虑栅格图中的所有可能路径,这样运算量就非常大,实际系统中很少用到。这样虽然MAP 算法早在1974年就被提出,但一直未

被得到充分利用,只有到了1993年Turbo 码被提出来,MAP 算法被用于Turbo 码的译码之后,这种算法才得到广泛的应用。

MAP 算法不仅能译出序列的比特值,在译码的同时还能输出关于每比特译出的可靠性信息。这种特点正好符合了Turbo 码的迭代译码特性,所以才被用于Turbo 码的译码中。下面我们来看看MAP 算法是如何用于二进制Turbo 码的译码的。

MAP 算法是要根据接收到的序列Y ,找出每信息比特k u 是“1+”(1)或“1-”(0)的概率,这等同于计算序列Y 下k u 的对数似然比值(LLR)()k L u Y ,如式1.2,

()()()1ln 1k k k P u Y

L u Y P u Y

??

=+=

? ?=-?

?

(1.2) 在栅格图中假设前一状态1k S s -'=和当前状态k S s =,输入比特k u 引起s s '?的状态转移,根据贝叶斯(Bayes)准则,可由式1.2得式1.3,

()()()(

)()11,1

11,1,,ln ,,k k k k s s u k k k s s u P S s S s Y L u Y P S s S s Y --'?=+--'?=-?

?

'==

?= ?'==?

?

∑∑ (1.3)

上式中(),1k s s u '?=+表示所有由1k u =+引起s s '?状态转移的集合;同样

(),1k s s u '?=-表示由1k u =-引起的状态转移的集合。

接收序列Y 可以被分成三部分j k

Y

<、k Y 和j k

Y

>,分别表示k 时刻之前接收码字序列、

当前接收码字和之后接收码字序列。所以,

()()11,,,,,,j k

k j k

k k P S s S s Y P s s Y

Y Y

<>--''=== (1.4)

利用贝叶斯公式可得式1.5,

()()

()()

()()()

()()()

111,,,,,,,,,,,,j k

k j k

k k j k

j k

k

j k

k j k

k k k P S s S s Y P s s Y

Y Y

P Y s P s s Y

Y P Y

s P s Y s P s Y s s s s βγα<>--><><-''==='=''=''= (1.5)

式1.5中用了式1.6、1.7、1.8的定义,

()()11,j k

k k s P S s Y

α<--''== (1.6)

表示接收序列是j k

Y

<,1k -时刻状态是s '的概率,我们称之为前向概率。 ()()j k

k k s P Y

S s β>==

(1.7)

表示k 时刻状态为s 且之后接收序列是j k

Y >的概率,我们称之为后向概率。

()()1,,k k k k s s P S s Y S s γ-''=== (1.8) (),k s s γ'表示由给定状态s '转移到s 并且此时接收码字为k Y 的状态转移概率。

因此计算LLR 的式1.3可被分成前向概率转、状态转移概率和后向概率三部分,如式1.9所示,

()

()()()()()()()()()()()()11,111,11,1

1,1,,ln ,,,ln ,k k k k k k s s u k k k s s u k k k s s u k k k s s u P S s S s Y L u Y

P S s S s Y s s s s s s s s αγβαγβ--'?=+--'?=--'?=+-'?=-??

'==

?

= ?'==??

??

''??

?

= ?''???

?

∑∑∑∑

(1.9)

可以看出,用MAP 译码算法译接收序列Y 的关键是要计算出和各时刻有关的所有的()1k s α-'、()k s β,还有所有可能的s s '?状态转移的概率(),k s s γ'。

()k s α、()k s β的计算仍旧非常复杂,在下面的推导中我们可以看到()k s α、()k s β的

计算可以用递规的方法。

()k s α的计算

根据()k s α的定义,有式1.10成立,

()()()

()

1

1,,,,,,j k j k

k

k k k

j k k

k k all

s s P S s Y

P S

s Y

Y P S s S s Y Y α<+<<-'

===='=

==∑

(1.10)

“all s '”表示所有的状态s '。

假设信道为无记忆信道,则(),k s Y 的概率只和前一状态s '有关,而和j k

Y <无关。并

利用贝叶斯公式,有式1.11成立,

()()

{}{}()()

{}()()

()()

11,,,,,,,,,j k

k

k k k all

s k

j k

j k

all

s k j k

all

s k k all

s s P S s S s Y Y P

s Y s Y P s Y P s Y s P s Y s s s ααγ<-'

<<'

<'

-'

'=

==''=?''=?''=

?∑

(1.11)

由此看出()k s α可由()1k s α-'前向递归计算得出。

递归计算存在初始化的问题,初始状态()00S α由式1.12给出,

()0000100

S S S α=?=?

≠? (1.12)

()k s β的计算

类似()k s α的计算推导,后向概率()k s β也可以由递归计算得出,不过这次是后向递归,

()()()

()()

()()

()()

1

1,,,,,j k j k

k k j k

j k

k all

s

j k

k all

s

k k all

s

s P Y

s P Y

Y s P Y s P Y

Y s s P Y

s P Y s s s s s ββγ>->->>>'''=='='='=

?∑

(1.13)

()k s β的初始状态()N N S β由式1.14给出,

()100

N N N N S S S β=?=?≠? (1.14)

(),k s s γ'的计算

(),k s s γ'计算可根据当前接收码字和先验信息(a-priori )计算得出。

设在编码k 时刻输入信息比特k u ,编码状态由s '转移到s ,并得到码字为k

x ,经信

道传输后接收到k

y ,则

()(){}()()

{}()()

()

()

,,,,k k k k

k k

s s P s Y s P Y s s P s

s P Y s s P s

s P y x P s s γ''''==?''=?'=? (1.15)

概率()P s s '直接由引起状态转移的输入比特k u 的先验概率决定。定义k u 的先验概率对数似然比()k L u ,

()

()()1ln 1k k

k P u L u P u ??

=

? ?

=-??

(1.16)

当()1,1k p u s s '==,则

()

()()()()1ln ln 11k k

k P s s P u L u P u P s s ??'??

== ? ? ? ?

'=--????

(1.17)

()()()

1k k

L u L u e

P s s e

'=

+ (1.18)

当()1,1k p u s s '==-时,则

()()()

11k

k

L u L u e

P s s e

'=-

+ (1.19)

设()()

/2

1k k

L u L u e

e

ρ=

+,则

()()()()()()/2

/2

/21,11,1

k k k k L u k u L u L u k e p u s s P s s e

e p u s s ρρρ?-?'==+?

'==?

'==-??

(1.20)

比特k u 的先验信息()k L u ,一般从上一次译码输出信息中获得的;在第一次译码时,由于没有什么信息可以获得,只有先假设k u 为“1+”(1)或“1-”(0)的概率相同,即

()0k L u =。

设信道噪声为高斯白噪声,方差为2σ,所要传输的信息比特的平均能量是b E ,编码速率为R (编码后每比特的平均能量为b E R ),则()k

k

P y x

可由式1.21计算,

()(

)

()22

121

k k

b kl kl n

kl

kl l E R n

y x l P y x P y

x σ=??

-- ???

===∏∏

(1.21)

n 表示一个码字中信息位与校验位加在一起所有比特的数量。

关于()k s α和()k s β的递归计算及其与(),k s s γ'的关系,可由图1.1更直观的看出来。这是一个有4种状态的编码,图中的加粗线是在计算中所需要考虑的栅格路径。

k

S 1

k S +2

k S +1

k S -2

k S -0

S =1

S =2

S =3

S

=()()()()()()()()()()

111111000,011,0000,020,2k k k k k k k k k k ααγαγββγβγ--++++=+=+

图1.1 递归计算()k s α和()k s β的示意图

用于迭代的MAP 算法

正如上章中看到,在Turbo 码的译码迭代过程中,每个SISO 译码模块输出的信息中一定要有一部分作为下次的先验信息输入,所以要从式1.9计算出()k L u Y 分离出所需要的信息。如式1.22我们把它分成三部分,

()()()()()()()()()()()

1,1

1,1,ln ,k k k k k s s u k k k k s s u k c ks e k s s s s L u Y s s s s L u L y L u αγβαγβ-'?=+-'?=-?

?

''??

?

= ?''???

?

=++∑∑

(1.22)

其中c L 为信道可靠度(置信度)。在双边带功率谱密度是0/2N 的加性高斯白噪声信道下,

4

b c E R L N = (1.23)

()k L u 被称为先验信息。接收到ks y ,

ks k k

y u n =+ (1.24)

其中,k n 是离散的加性高斯白噪声。

()e k L u 被称为k u 的外在(extrinsic)信息。 ()()()()()()()(

)()()()1,1

1,1,ln ,k k e k k k c ks

k k k s s u k k k s s u L u L u Y L u L y s s s s s s s s αχβαχβ-'?=+-'?=-=--?

?''??

?

= ?''???

?

∑∑ (1.25)

其中,

()2

,exp 2

n

c

k kl kl l L

s s y x χ=??'= ???

(1.26)

由此看来所得到的后验概率()k L u Y 被分成三部分:先验信息()k L u 、系统比特信息c ks L y 和外在信息()e k L u :

1、

先验信息()k L u ,如上文所述,一般由前一次迭代译码输出获得,第一次迭代时,由于无先验信息可用,()k L u 为零。

2、

系统比特信息c ks L y 是从信道中直接获得的关于系统比特k u 的信息,当系统的信噪比(0b E N )比较高时,ks y 在()k L u Y 中占用份量就越大,换句话说就是直接从信道中获得的信息就越可靠;反之,就越不可靠。

3、

()e k L u 可以被理解为除了上述两项和k u 直接相关的信息之外的信息,由式

1.25 和式1.26可以看出,此信息在Turbo 码的译码中被用作下一个成员译码器的先验信息输入。

从式1.22可以看出,MAP 译码算法实际上用上了所有和k u 有关的信息(()k L u ,

c ks L y ,()e k

L u )来计算k u 的LLR 。

Max-Log-MAP 与Log-MAP 算法

从上节中可以看到MAP 算法非常复杂,运算量极大,运算中不仅有大量的乘法和加法,还有在数字电路中较难实现的指数和对数运算,这极大的影响了MAP 算法的实用。Koch 和Baier 及Erfanian 等人提出Max-Log-MAP 算法,大大地简化了MAP 算法的复杂性,由于计算中做了一定地近似,这种算法不是最优的。Robertson 等人对Max-Log-MAP 算法做了一定地修正,被称作Log-MAP 算法。

Max-Log-MAP 对MAP 所做的修改是直接在对数域里对()k s α、()k s β、

(),k s s γ'和()k L u Y

进行计算,省去了许多指数和对数运算,大大简化了运算量。

首先定义()k A s 、()k B s 和()k s Γ,

()()()ln k k A s s α (1.27) ()()()ln k k B s s β (1.28) ()()(),ln ,k k s s s s γ''Γ (1.29)

在Max-Log-MAP 要用到一重要的近似等式1.30,

(

){}

()111ln max n

x x x

i i n e e e

x ∈+++≈

(1.30)

()m ax 表示取最大值。则,

()()()()()()()()()()()

111ln ln ,ln exp ,m ax ,k k k k all s k k all s k k s A s s s s s A s s s A s s s ααγ-'-'-'

??

''=? ?

??

??

''=+Γ ?

??''=+Γ∑∑ (1.31)

()()()()()()()()()()()

11ln ln ,ln exp ,m ax ,k k k k all s k k all s k k s B s s s s s B s s s B s s s ββγ--'

??

'''=? ?

??

??

'=+Γ ?

??'=+Γ∑∑ (1.32)

根据式3.15和3.21,(),k s s γ'在对数域的计算如式3.33,

()()()()1

1,ln ,2

2

n

c k k k k kl kl

l L s s s s C u L u y x γ=''Γ=+

+

(1.33)

式中C 为常数。称(),k s s 'Γ为栅格图中的分支度量(branch metrics)。

()k L u Y

的计算变为加减法运算,如式3.34

()()

()()()()()()()()()()()()()()()()()

,1

,1

1,11

,1

1

1

,ln ,m ax ,m ax ,k k s s u s s u k k k k k s s u k k k

k

s s u k k

k

k k

k

s s s s L u Y s s s s A s s s B s A s s s B s αγβαγβ''?=+?=--'?=+-'?=---?

?''??

?

= ?''???

?

''''=

+Γ+-+Γ+∑∑(1.34) 可以看出Max-Log-MAP 在译k u 时,把所有可能的s s '?的状态转移路径分成两部分:一部分是1k u =+引起的,一部分是1k u =-引起的。并在这两部分中分别找出

()()()()1

,k k

k

A s s s

B s -''+Γ+为最大值的路径,LLR 的计算就是比较这两条路径的差。

总结Max-Log-MAP 的计算步骤就是:通过前向递归计算出()k A s (式1.31);后向递归计算出()k B s (式1.32);用式1.33计算出分支度量()k s Γ;再通过式1.34就可计算出比特的LLR 。

Max-Log-MAP 译码过程极象Viterbi 算法,都是要在栅格图中寻找最优路径,不过它还要多寻找一条最有竞争力的次优路径,这条次优路径在k 时刻和最优路径给出完全不同的关于k u 的判决。

Log-MAP

Log-MAP 是对Max-Log-MAP 作了一定的修正,由式1.35给出修正方法,

()()()()()

12

1

2

1

2

1212ln m ax ,ln 1m ax ,x x x x c e

e

x x e

x x f x x --+=++=+- (1.35)

其中定义修正函数,

()(

)ln 1x

c f x e

-+ (1.36)

()c f x 的函数图如图1.2所示,

图3.2 修正函数()c f x 的曲线图

可以看出()c f x 关于x =0偶对称,在5x >或5x <-时,()c f x 非常小。因此在实际计算中可通过查表法完成,Robertson 指出只要在这个表中存储8个数据即可,x 的范围是0~5,过多的数据存储对译码结果并没有太大的改善。由此看来,Log-MAP 算法仅仅比Max-Log-MAP 算法多了些查表和加法运算,复杂度仅仅多了一点点,而性能却有

较大提高,这将在后续小节的各种译码算法性能比较中看到。

SOVA 算法

Viterbi 算法也是一种估计无记忆噪声中马尔可夫过程最优的算法,它不同于MAP 算法的特点在于其最优的准则不同,它是给定接收序列Y ,

(){}arg max x

X

P X Y = (1.37)

Viterbi 算法找出了错误最少的发送序列X

。 SOV A(Soft Output Viterbi Algorithm)是对原Viterbi 算法做了一定的修改,使其适合于Turbo 码的迭代译码。所作的修改主要有两个方面:

1、在栅格图中选择最大似然路径时要把先验信息考虑进去;

2、不仅要把每个比特k u 是+1或-1译码出来,同时也要给出k u 译码的可靠度,以

LLR 形式给出()k L u Y ,作为“Soft output ”,从中可以获得一些关于k u 的先验信息,为下次迭代所使用。这正是此算法被命名为SOV A 的原因。 设接收到的码字序列为j k

Y

≤,s

k S 是栅格图中某条路径所经过的所有状态组成的序

列,且在k 时刻到达状态k S s =,Viterbi 算法的出发点就是要寻找()s

j k

k p S Y ≤为最大的

路径,被称为幸存路径。选取某条路径的概率是,

(

)

(

)()

,s

j k

k s

j k

k j k

p S Y p S Y

p Y

≤≤≤=

(3.38)

显然()j k

p Y

≤对于所有的路径均一样。因此寻找()s j k

k

p S

Y

≤最大的路径等价于寻找

(

),s

j k

k p S Y

≤为最大的路径。

根据贝叶斯公式和(),s s γ'的定义式1.8,有

(

)()()(

)()1

1,,,,,s

s s j k

j k

k

j k

k k k p S Y

p S

Y p s Y

s p S Y

s s γ'

'

≤≤≤--''=?=? (1.39)

定义分支度量(metric)()s

k M S 为,

()

(

)()()()()1

ln ,ln ,s

s

s j k

k k k M S p S Y

M S s s γ'≤-'=+ (1.40)

由此看来()s

k M S 可以利用前向递规的方法求得,类似于Max-Log-MAP 算法中的

()k A s 的计算。

()()()1

1ln ,2

2

n

c k k k kl kl

l L s s C u L u y x γ='=+

+

(1.41)

C 为常数,计算中可以省去。因此,

()

(

)

()11

12

2

n

s s c k k k k kl

kl

l L M S M S u L u x

y '

-==+

+

∑ (1.42)

比传统的Viterbi 算法多了等式右边的第二项()1

2

k k u L u ,利用上了k u 的先验信息。

下面来看一下SOV A 算法对Viterbi 算法的所作的第二项修改。

设 s

k

S 是栅格图中不同于幸存路径的另外一条路径,它也在k 时刻到达状态k S s =,换句话说就是在k 时刻重合于幸存路径。由于幸存路径是到达状态k S s =的累计分支度量最大的路径,所以有式1.43成立,

()

()

0s s s k k

k M S M S ?=-≥ (1.43)

称s k ?为两路径的差异度。

在k S s =状态下我们选择路径s

k S 作为幸存路径而丢弃 s

k

S 的正确可靠度,可用下面的

概率()k P S s =幸存路径,表示,

()()

()

()

s

k

k s

s

k

k

P S P S s S P S ==

+幸存路径,P (1.44)

需要注意的是,这里假设了编码速率是1/n ,即在栅格图中进入每个状态的路径只有两条。当进入每个状态的路径不止两条时,需要从所有非幸存路径中选择度量最大的

那一条路径。

根据()s

k M S 的定义,并把式1.43带入,则

()()

()

(

)

1

1s

s

k

k

s

s

s k

k

k M S k M S M S e

e

P S s e

e

e

'

-??==

=

++幸存路径, (1.45)

由此看来,k 时刻正确判决的LLR 仅有一个参数s k ?决定。

在Viterbi 译码过程中,某时刻2所有的幸存路径一般都是从前某个时刻1的同一路径中分支出来,一般某时刻2与某时刻1的间隔一般最多不超过5~6倍的m 个时间单位,其中m 为卷积码的约束长度。而这条同一路径正是最大似然路径。因此译比特k u 时要等到5k m +?时刻才作判决,在这5m ?时间内有许多幸存路径又回归到了最大似然路径上去并随后消失了,而这些路径在k 时刻给出k u 的判决和最大似然路径给出的判决有相同的,也有不同的。这些不同的判决影响着我们在最大似然路径上对k u 判决的可靠度,因此在求k u 的LLR 时要把它们考虑进去。可由式1.46来近似计算()k L u Y ,

()...min i i

k k

s

k k i i k k u u L u Y u δ

=+≠≈? (1.46)

其中k u 是最大似然路径上所做的判决值。在i (其中...i k k δ=+)时刻重合于最大似然路径的幸存路径在k 时刻给出的判决为i k u ,i

s i ?是这些将要消失的幸存路径与最大似然

路径之间的差异度。Hagenauer 指出()k L u Y 是由i k k u u ≠那些i

s i ?当中最小的一个决定。

通过图1.3可以更好的理解关于计算()k L u Y 的过程。

图1.3 SOV A 算法中计算()k L u Y 示范图

在图1.3中假设最上面的粗虚线是最大似然路径,可以看出有5条路径(分别标示了数字)都在一定时刻汇合于最大似然路径。现在我们要计算k 时刻的()k L u Y ,可以看出,最大似然路径对k u 的判决是1-,而路径1、2、4、5这4条路径对k u 的判决是1+,路径3对k u 所作的判决和最大似然路径的判决是一样。这样在计算()k L u Y 时,需要考虑这4条路径,而第3路径就不在考虑之列了。这四条路径和最大似然路径的差异度分

别是0k ?、

01k +?、03k +?、0

4k +?,从中找出最小值并乘以1-就是要计算的()k L u Y 。 3.5 各种算法的比较

为了更好地理解这四种算法,在这一节中对这些算法进行比较研究。下面是这些算法的相同点和不同点:

相同点:1、这些算法都接收信道传来的软判决信息和信息比特k u 的先验信息作为译码输入,译码输出不仅可以给出判决,而且也可以给出k u 的后验概率LLR 值(()k L u Y ),可以统称它们为SISO(soft in soft out)算法。

2、从单次译码结果来看,Max-Log-MAP 和SOVA 都是在栅格图中寻找到了最大似然路径,二者在一定程度上具有一致性。

3、MAP 算法和Log-MAP 算法在理论基础上是一致的,都是在栅格图中考虑了所

有的可能路径。而MAX-Log-MAP 是在Log-MAP 算法上做了近似,从而省去了大量加法运算。

不同点:1、MAP 算法是Turbo 码成员编码器的最优的译码算法,Log-MAP 算法是把MAP 算法转移到对数域内进行计算,这样极大的降低了译码的复杂度。译码过程中,对于每个信息比特k u ,它们把栅格图所有可能的路径分成两类,一类为1-路径,一类为1+路径,所有1+路径概率之和与所有1-路径概率之和的比值的对数就是要求的k u 的后验概率()k L u Y ;同样,在计算()k s α和()k s β时也要考虑所有可能存在的状态转移。

2、Max-Log-MAP 算法的复杂度又比Log-MAP 低一些。二者主要区别在于修正函数上。在计算k u 的后验概率时,它只考虑两条路径,一条是最大概率的1+路径,一条是最大概率的1-路径,二者之中有一条是最大似然路径,另一条我们暂时可称其为最具竞争力路径;在译不同时刻的k u 时,最大似然路径一般都会不变,只是继续地向后延伸,而最具竞争力路径会不停的改变。在计算()k A s 和()k B s 时,也只考虑了最有可能的一种状态转移。

3、SOV A 的译码复杂度最低,它的目的很明确,就是要寻找最大似然路径。其计算()k A s 的方法和Max-Log-MAP 一致,不过它不计算()k B s 。它所比较的两条路径,一条是最大似然路径,但另一条不一定是最具竞争力路径,而是一条给出判决不同于最大似然路径的且会重合于最大似然路径的路径,那些比这更具有竞争力的路径可能在译码过程中被丢弃了,所以它给出的()k L u Y 不如Max-Log-MAP 精确,在迭代译码过程中,这样不利于后续比特的译码,这正是SOV A 的译码性能比Max-Log-MAP 降低的原因。

图1.4给出了这些算法在栅格图中的译码过程,从中可以看出它们的异同点,图中加粗的线条为译码中选择的路径。

MAP(Log-MAP)

:-1:+1

所有路径均要被考虑和计算

k

u

图1.4 Turbo 码各种算法译码示意图

另外,在表1.1中给出了三种算法计算复杂度的比较。MAP 由于过于复杂,一般实际中都不大使用,常用Log-MAP 算法来替代。Log-MAP 算法中的修正函数是由上文中所述的查表法获得,只在表中存了0~5之间的8个数据。表1.1中的M 指Turbo 码成员编码器的寄存器的长度。表中比较的是译每比特的运算量。

表1.1 Turbo码各种算法复杂度比较表

从表 1.1可以看到,在每比特译出的计算中,Log-MAP算法最复杂,它不仅比MAX-Log-MAP算法多了一些查表的运算,而且也多了一些加法运算。而SOVA算法最简单,但它有一些特殊的运算如位比较运算,这在数字电路里非常容易实现。

图1.5 帧长为1648的Turbo码各种译码算法译码性能比较图1.5示出了帧长是1648的Turbo码在各种算法下的译码性能。从图中可以看出,MAP算法最好,Log-MAP稍微有些差,它和MAP算法的差异很小,有0.1dB左右;Max-Log-MAP算法比MAP算法大概有0.3dB的恶化,而SOVA性能最差,比MAP有0.6dB的差异。

结论

本节给出了各种译码算法的原理,然后对这些算法进行了详细的比较研究。从图1.4中可以清楚的了解到各种算法的工作过程和它们的异同点。通过译码复杂度的比较,得出MAP算法最为复杂,Log-MAP次之,Max-Log-MAP较为简单,SOVA最简单的结论。从仿真结果上看性能比较,MAP算法最好,Log-MAP稍微有些差,Max-Log-MAP 算法大概有0.3dB的恶化,而SOVA比MAP有0.6dB的差异。因此在实际运用中,需要对性能和运算量上进行折中考虑,从而决定使用何种算法。

关于信道编码中Turbo码的原理与实现

Turbo码的编码原理及实现 摘要 纠错码技术作为改善数字通信可靠性的一种有效手段,在数字通信的各个领域中获得极为广泛的应用。Turbo码是并行级联递归系统卷积码,在接近Shannon 限的低信噪比下能获得较低的误码率,现已被很多系统所采用。本文分析了Turbo码编码译码的原理,为了使Turbo码仿真更容易,研究并建立了基于Matlab 中Simulink通信模块的Turbo码仿真模型。使用所建立的模型进行仿真,结果表明,在信噪比相同的情况下,交织长度越大、迭代次数越多、译码算法越优,Turbo码性能越好,设计实际系统时,应综合考虑各因素。 关键词:Turbo码;Simulink仿真;交织长度;迭代次数 Abstract As an effective means to improve the reliability of digital communication, error correcting code technology is widely used in the field of digital communication.Turbo code is a parallel concatenated recursive systematic convolutional code, which can obtain lower bit error rate in the low SNR near Shannon limit,which is now used by many systems.In this paper,the principle of Turbo coding and decoding is analyzed,in order to make the Turbo Code simulation easier,a Turbo code simulation model based on Simulink module of Matlab is studied. Simulation result using the established model shows that the longer interleaving length,the more iteration times and the better decoding algorithm bring the better Turbo code performance with the same SNR value. Keywords:Turbo code;Simulink simulation;Interleaving length;Iteration times;

Turbo码详解

第十三章 Turbo 码 Shannon 理论证明,随机码是好码,但是它的译码却太复杂。因此,多少年来随机编码理论一直是作为分析与证明编码定理的主要方法,而如何在构造码上发挥作用却并未引起人们的足够重视。直到1993年,Turbo 码的发现,才较好地解决了这一问题,为Shannon 随机码理论的应用研究奠定了基础。 Turbo 码,又称并行级连卷积码(PCCC),是由C. Berrou 等在ICC ’93会议上提出的。它巧妙地将卷积码和随机交织器结合在一起,实现了随机编码的思想,同时,采用软输出迭代译码来逼近最大似然译码。本章首先介绍Turbo 码的提出与构成原理;介绍迭代反馈译码算法(包括AWGN 信道与Rayleigh 衰落信道下的译码);然后针对Turbo 码编译码特性,对几个问题进行了说明;最后介绍Turbo 码在3GPP 中的具体应用。 §13.1 Turbo 码的提出 Turbo 码,又称并行级连卷积码(PCCC),是由C.Berrou 等在ICC ’93会议上提出的。它巧妙地将卷积码和随机交织器结合在一起,实现了随机编码的思想,同时,采用软输出迭代译码来逼近最大似然译码。模拟结果表明,如果采用大小为65535的随机交织器,并且进行18次迭代,则在E N b /0≥0.7dB 时,码率为1/2的Turbo 码在AWGN 信道上的误比特率(BER )≤-105 ,达到了近Shannon 限的性能(1/2码率的Shannon 限是0dB )。因此,这一超乎寻常的优异性能,立即引起信息与编码理论界的轰动。图13-1中给出了Turbo 码及其它编码方案的性能比较,从中可以看出Turbo 编码方案的优越性。 由于Turbo 码的上述优异性能并不是从理论研究的角度给出的,而仅是计算机仿真的结果。因此,Turbo 码的理论基础还不完善。后来经过不少人的重复性研究与理论分析,发现Turbo 码的性能确实是非常优异的。因此,turbo 码的发现,标志着信道编码理论与技术的研究进入了一个崭新的阶段,它结束了长期将信道截止速率0R 作为实际容量限的历史。 需要说明的是,由于原Turbo 编译码方案申请了专利,因此在有关Turbo 码的第一篇文章中,作者没有给出如何进行迭代译码的实现细节,只是从原理上加以说明。此后,P. Robertson 对此进行了探讨,对译码器的工作原理进行了详细说明。人们依此进行了大量的模拟研究。 Turbo 码的提出,更新了编码理论研究中的一些概念和方法。现在人们更喜欢基于概率的软判决译码方法,而不是早期基于代数的构造与译码方法,而且人们对编码方案的比较方法也发生了变化,从以前的相互比较过渡到现在的均与Shannon 限进行比较。同时,也使编码理论家变成了实验科学家。

Turbo码原理简介

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 码编码原理图

Turbo码的各种译码算法及比较

Turbo 码的各种译码算法及比较 Turbo 码有一重要特点是其译码较为复杂,比常规的卷积码要复杂的多,这种复杂不仅在于其译码要采用迭代的过程,而且采用的算法本身也比较复杂。这些算法的关键是不但要能够对每比特进行译码,而且还要伴随着译码给出每比特译出的可靠性信息,有了这些信息,迭代才能进行下去。用于Turbo 码译码的具体算法有:MAP(Maximum A Posterori)、Max-Log-MAP 、Log-MAP 和SOV A(Soft Output Viterbi Algorithm)算法。MAP 算法是1974年被用于卷积码的译码,但用作Turbo 码的译码还是要做一些修改;Max-Log-MAP 与Log-MAP 是根据MAP 算法在运算量上做了重大改进,虽然性能有些下降,但使得Turbo 码的译码复杂度大大的降低了,更加适合于实际系统的运用;Viterbi 算法并不适合Turbo 码的译码,原因就是没有每比特译出的可靠性信息输出,修改后的具有软信息输出的SOV A 算法,就正好适合了Turbo 码的译码。这些算法在复杂度上和性能上具有一定的差异,系统地了解这些算法的原理是对Turbo 码研究的基础,同时对这些算法的复杂度和性能的比较研究也将有助于Turbo 的应用研究。 MAP 算法 MAP 算法最初是用来估计无记忆噪声下的马尔可夫过程的,它是一种最优的算法。Bahl 等人于1974年把它用于线性分组码和卷积码的译码中,在用于卷积码的译码时,对于给定接收序列Y ,它不像Viterbi 算法那样以栅格路径上的比特组错误最少为目的, 而是以译码出来的符号i x 的错误最少为目的。即, (){}arg m ax i i i x x P x Y = (1.1) 不过在大多情况下,它和Viterbi 算法的作用是一致的。 由于在卷积码的译码中,MAP 算法要考虑栅格图中的所有可能路径,这样运算量就非常大,实际系统中很少用到。这样虽然MAP 算法早在1974年就被提出,但一直未

turbo码结构和编码方法

摘要:Turbo码,由于性能接近Shannon理论限,在低信噪比的应用环境下比其他编码好。因而第三代移动通信系统多种方案中,考虑将Turbo码作为无线信道的编码标准之一。本文介绍了Turbo码的结构和编解码方法,及其在第三代移动通信系统中的应用。 关键词:信道编码;Turbo码;RSC编码器;交织器;迭代译码;第三代移动通信 Abstract: Turbo codes,because of it’s outstanding performance in channel coding,has been considered by IMT-2000 as a plan of application. This paper introduces the principle of basic structure of Turbo codes.Also,the paper introduces the mainly application in 3G(3ird Generation) mobile telecomminucation systems. Key words: channel coding; Turbo codes; RSC; interleaver; recursive algorithm; 3G(the 3ird generation)mobile telecommunication systems 一、引言 信息论诞生50多年以来,人们一直努力寻找更加接近Shannon限、误差概率小的的编码方法。在1993年ICC国际会议上,C.Berrou,A.Glavieux和P.Thitimajshiwa提出了一种称之为Turbo Code的编、译码方案,并在交织器大小为:情况下,迭代18次,对它进行了计算机仿真。仿真结果表明,当归一化信噪比时,。其编码增益比Shannon信道容量的差距小于1dB。[1] 从第三代移动通信系统候选方案来看,普遍要求提供中速或者高速的数据业务,一般的数据业务信道为64kbps,144kbps,384kbps。在信噪比低的无线信道中,Turbo码的性能要优宜的多,比较用于第二代移动通信中的级联RS加卷积码,Turbo码性能可提高1dB以上。所以IMT-2000多种方案中,已经将Turbo 码做为传输高速数据的信道编码标准之一。[3] [4] 本文了介绍Turbo码的基本结构和编译码原理,以及Turbo码在第三代移动通信中的应用。 二、Turbo码的编、译码原理 Turbo码的编码 从编码器原理图可以看出,编码是由三部分组成的:两个RSC子编码器RSC1、RSC2,一个Nbit交织(Interleaving)器,一个删余(puncturing)单元。 2.1 编码器的设计 假设输入信息编码器的信息单元为,它一方面直接输入RSC1进行编码,生成校验序列x1p。另一方面经过交织后,产生一个经交织的系统序列u’和另一个校验序列x2p。当码率R大于2/3时,在任何大小信噪比情况下,由于系统递归卷积编码器RSC(Recursive SystematicConvolutional)的自由距离都比非系统卷加码NSC(Nonsystematic Convolutional)大,BER比其小,显出更好的性能,因而Turbo码中采用了RSC编码器[1]。其编码矩阵可以表示成:其中。编码器由个存储单元构成,其输入为信息比特。为使编码器初始状态置于全零

Turbo码编码的研究现状

一.T urbo码的提出 尽管每一次便译码方案的更新都会更加接近香农容量,但到1990年为止,对于二进制调制,即使在很好的信道上(如AWGN信道),编码性能在理论和实际上也存在大约3dB的差异。也就是说,应用于移动电话、卫星系统和其他应用领域的实际编码所需要的能量是理论值的两倍。对于衰落信道,这个差距将会更大。 在1993年的国际通信会议(ICC93)上,法国不列颠通信大学的Claude Berrou教授等人提出了Turbo码方案。Turbo码由于很好地应用了shallnon信道编码定理中的随机性编译码条件而获得了几乎接近ShallIlon理论极限的译码性能。仿真结果表明,在65536的比特交织长度下,Turbo码可以达到距shannon极限仅差0.7dB的优异性能。到目前为止,Turbo 码在现有的信道编码方案中是最好的,尚未有任何一种编码方案能与其相比拟。Turbo码的出现在编码理论界引起了轰动,成为自信息论提出以来最重大的研究成果。 Turbo码的提出,对信道编码领域产生了意义深远的影响。首先,Turbo码提供了一种在低信噪比条件下性能优异的级联编码方案和次最优的迭代译码方法;其次,它改变了研究者设计好码的思路,即从最大化码字最小距离转化为最小化低重码字个数,同时也改变了判断好码的准则,即从与截止速率比较转向了与Shannon理论极限进行比较;第三,Turbo迭代的思想为实现迭代信道估计、迭代均衡以及信号检测提供了新的思路。 二.T urbo码编码的研究现状 自从Turbo码提出以来,编码领域掀起了一股研究热潮,也取得了不少的成果。1995年,R.Podemskiski等给出了计算汉明距离谱(HDs)的算法,并利用最小汉明距离对Turbo 码的性能进行了分析,分析结果与模拟结果相当接近。此后,Svirid引用分组码的性能分析方法分析了交织器的设计与Turbo码的性能,给出了误比特率(BER)的联合界,并指出了交织器的设计原则是使Turbo码的最小重量尽可能大。Perez等从距离谱的观点分析了Turbo 码在低信噪比时的优异性能,在Turbo码的编码器中,指出交织器起着“谱窄化"的作用,使得Turbo码的小重量的码字数目减少,从而提高译码性能。Perez等还通过距离谱解释了Turbo码译码性能中出现的误码底限现象。 1996年,S.Belledetto和G.MontorSi引入了均匀交织器的概念,给出了Turbo码的一个BER联合性能上界,并指出好的交织器是存在的。1998年,他们对众多的RSC子码进行了研究,提出了一些性能优秀的RSC成员码。这些研究为构造优秀的Turbo码提供了参考。 另外,在Turbo码迭代译码器方面的研究也是层出不穷。在MAP类译码算法和SoV A 类译码算法的研究中,主要集中研究的问题又两类译码算法的比较、译码算法的次优简化、译码结构的局部改进、译码时延的改进、定点译码器实现时数据量化对译码性能的影响等等。 Turbo码迭代译码的思想还逐渐被应用于其他领域,诸如迭代均衡技术、迭代与多用户检测相结合、迭代与高效调制技术的结合,此外迭代译码技术还可以应用于信道编码与有记忆调制的级联系统。Turbo码本身也出现一些变体,1996年,MacKav提出了低密度校验码(LDPC)。 2001年,Li Ping提出了“Turbo(单校验)码”,它的译码复杂度比Turbo码低得多。 目前的研究表明,Turbo码急需解决的问题有:交织方法的选择、译码算法的改进以及相应终止技术。这些都妨碍了Turbo码能够应用于实际生产、生活中,是Turbo码研究的几个重要方向。

turbo码翻译

Turbo cod e 综述 Turbo编码器如下图1,它使用双比特循环递归系统卷积码。前导突发后面的第一个字节的MSB比特被分配到A,再其后的第二个比特分配给B,剩下的突发内容依次分配下去。 图1 turbo编码器 将k比特块或者N对块送入编码器中()。N是4的倍数(k是8的倍数)。 用于定义连接的多项式可以使用八进制或者符号记法表示如下: 对反馈支路:15(用八进制表示),等价的符号记法: 对Y校验比特:13,等价符号记法: 对W校验比特:11,等价符号记法: A端口输入的比特连接移位寄存器的“1”;B端口输入的比特连接移位寄存器的“1”,D和. 首先,送入编码器(使用循环状态进行初始化)的序列是自然正常顺序(开关打在位置1处),它有增加的地址.这第一个编码器称作。 其次,送入编码器(使用循环状态进行初始化)的序列是交织顺序(开关打在位置2处),它有增加的地址.这第一个编码器称作。函数

Turbo码排列描述 在两个等级水平上进行排列,首先在内部对上(level1),其实是对之间(level2):设置排列参数P0, P1, P2 和P3 j = 0, ...N – 1 level1 如果j mod. 2 = 0, 则让(A,B) = (B,A),即进行对翻转。 level2 下面的表1给出了使用的默认参数组合。这些参数能够通过TCT进行更新。交叉关系满足奇/偶规则(即当j是偶数的时候,i就是奇数,反正同理)这样就允许两个编码器有相同的打孔图样。 表1 循环状态的决定 编码器的状态表示为:S (0 ≤S ≤7) 其中S = 4 × + 2 ×+ (见图1)循环状态

TURBO码的编译码原理及matlab仿真

Turbo码的编译码原理及MATLAB仿真

摘要 纠错码技术作为改善数字通信可靠性的一种有效手段,在数字通信的各个领域中获得极为广泛的应用。Turbo码是并行级联递归系统卷积码,在接近Shannon限的低信噪比下能获得较低的误码率,现已被很多系统所采用。本文分析了Turbo码编码译码的原理,为了使Turbo码仿真更容易,研究并建立了基于Matlab中Simulink通信模块的Turbo码仿真模型。使用所建立的模型进行仿真,结果表明,在信噪比相同的情况下,交织长度越大、迭代次数越多、译码算法越优,Turbo码性能越好,设计实际系统时,应综合考虑各因素。 关键词:Turbo码;Simulink仿真;交织长度;迭代次数 Abstract As an effective means to improve the reliability of digital communication, error correcting code technology is widely used in the field of digital communication.Turbo code is a parallel concatenated recursive systematic convolutional code, which can obtain lower bit error rate in the low SNR near Shannon limit,which is now used by many systems.In this paper,the principle of Turbo coding and decoding is analyzed,in order to make the Turbo Code simulation easier,a Turbo code simulation model based on Simulink module of Matlab is studied. Simulation result using the established model shows that the longer interleaving length,the more iteration times and the better decoding algorithm bring the better Turbo code performance with the same SNR value. Keywords:Turbo code;Simulink simulation;Interleaving length;Iteration times;

Turbo码的性能分析与仿真

目录 一、简述信道编码 (3) 1.信道编码的原理 (3) 2.信道编码的码型 (3) 2.1分组码 (3) 2.2 卷积码 (4) 2.3 格型码 (4) 2.4 Turbo 码 (4) 二、Turbo码介绍 (5) 1.Turbo的提出 (5) 2. Turbo码编译码原理 (5) 3. Turbo码仿真建模 (7) 4.仿真结果分析 (9) 三、总结 (12) 四、参考文献 (12)

一、简述信道编码 1.信道编码的原理 上了信息论与编码这门课我们知道,图像信号信源压缩编码的目的就是要去掉图像中的空间冗余和时间冗余,从而降低了总的数据率,提高了信息量的效率。这样,容许保证一定图像质量的数字信号能以较少的数据量快速传输出去。与此同时,经信源编码的去冗余而提高信源的信息熵(每个符号的平均信息量)后,数字信号的抗干扰能力明显下降了,这是不言而喻的,因为未压缩之前每个符号的信息量很低。因此,压缩后的数字信号很容易受到传输通道中引入的噪声、多径反射和衰落等的影响而造成接收端发生程度不同的误码,有的甚至无法恢复出原始数据。为解决这个问题,信道编码应运而生了。所谓信道编码就是为提高信息传输可靠性而进行的编码(在信源编码的基础上以降低传输的信息量为代价来提高可靠性)。信道编码可以检测、纠正由于传输造成的误码,所以这种编码也常称为差错控制编码。信道编码是数字通信系统中的重要组成部分,其作用是完成检错纠错,码形变换的任务,从而提高传输信道的可靠性。 信道编码的原理简言之就是要使传输符号间具有某种特定的关系,通常将要传输的信息分组,根据某种规则,使每组信息映射(映射是数学上的一个术语,源于集合论,映射又称为变换,意思是两个集中的元素有某种对应关系。)到一组信道符号,这组符号相互之间具有某种特定关系,即使其中某些符号在传输中会出错,也会发现这些错误,并进一步纠正它们。显然,要实现信源具有检错和纠错能力,必需按一定的规则在信源编码的基础上再增加一些冗余码元(又称监督码),使这些冗余码元与被传信息码元之间建立一定的关系,发送端完成这个任务的过程称为纠错编码。 2.信道编码的码型 目前,常用的信道编码的码型有两种:分组码和卷积码。如我们所熟悉的RS 码就属于分组码,当然还有一些其它码型,如TCM 和Turbo 码等,广电中现阶段己使用了分组码、卷积码和格型码,下面简要介绍目前信道编码使用的四种码型。 2.1分组码 在每组信息映射到一组符号的过程中,如果映射过程只与当前这组信息有关,相应的编码就是分组码。分组码将信息码元序列划分成段落,每一段包含若干个信息码元,然后由这若干个信息码元按一定规则产生出一些监督码元,信息码元和监督码元组合在一起形成一个码组,在每个码组中,监督码元与本码组中的信息码元有关,与其他码组

Turbo码编解码

实验五Turbo码编码实验指导 一、实验目的 1、掌握TURBO码的编解码原理。 2、掌握TURBO码的软件仿真方法。 3、掌握TURBO码的硬件仿真方法。 4、掌握TURBO码的硬件设计方法。 二、预习要求 1、掌握TURBO码的编解码原理和方法。 2、熟悉matlab的应用和仿真方法。 3、熟悉Quatus的应用和FPGA的开发方法。 三、实验原理 1、Turbo码编码原理 Turbo码是1993年法国人Berrou提出的一种新型编码方法。它巧妙的将卷积码和随机交织器结合在一起;同时,采用软输出迭代译码来逼近最大似然译码。 Turbo码编码原理框图如图所示: a、编码器 图中编码器的结构图如图 输入为10010001时,输出为1110010 1、寄存器为00:输入为1,反馈位为1,状态为100,输出为1; 2、寄存器为10:输入为0,反馈位为1,状态为110,输出为1; 3、寄存器为11:输入为0,反馈位为0,状态为011,输出为1; 4、寄存器为01:输入为0,反馈位为1,状态为101,输出为0; 5、寄存器为10:输入为1,反馈位为0,状态为010,输出为0; 6、寄存器为01:输入为0,反馈位为1,状态为101,输出为0; 7、寄存器为10:输入为0,反馈位为1,状态为110,输出为1;

8、寄存器为11:输入为1,反馈位为1,状态为111,输出为0; 图中,两个方框为移位寄存器,⊕为异或器。 b、交织器 交织可以将长的突发错误分散到每个行码中去。以最常用的交织器-行列交织器为例,它的交织方式是采用行顺序写入、列顺序读出的方式,而解交织列顺序写入,行顺序读出。 交织时,输入序列为: a11 a12 a13 a14 a21 a22 a23 a24 a31 a32 a33 a34 a41 a42 a43 a44 通过行列交织后变为: a11 a21 a31 a41 a12 a22 a32 a42 a13 a23 a33 a43 a14 a24 a34 a44 上述序列为四组长度为四的码组。假设每组码的纠错能力为1位,设码组1:a11,a12 ,a13,a14在传输信道中遇到突发错误,a12,a13,a14出错。那么,码组一将不能正确纠错。如果输入码组在输入突发信道前先交织,则遇到相同突发错误后,a21,a31,a41出错,在数据收到并解交织后,错误分散到了各码组中(二、三、四组),因此错误可以正常识别和纠正。因此,通过交织器将信道中产生的突发错误随机化,信道抗突发错误的能力得到了增强。通过交织,原有的只能纠随机错误的码,可以纠正较长的突发错误或突发错误与随机错误的组合。 c、开关单元 开关单元输入为两个编码器的编码输出,通过开关器件用于选择输出某一路或两路编码输出。当码率为1/3时,将两路编码输出一起输出;当码率为1/2时,轮流输出两路编码输出。 d、复接器 复接器将两路或三路信号,串接起来变为一路信号,码率为原来码率的1/2或1/3。设:编码器输入为:a1,a2,a3……;编码器1输出为b1,b2,b3……;编码器2输出为c1, c2, c3 ……。当码率为1/2时,开关电路的输出为:b1,c2,b3,c4……复接器的输出为:a1,b1,a2,c2,a3,b3,a4,c4……当码率为1/3时,开关电路的输出为:b1,c1,b2,c2……复接器的输出为:a1,b1,c1,a2,b2,c2,a3,b3,c3,a4,b4,c4……。 2、Turbo码的译码原理 由于Turbo码是由两个或多个分量码经过不同交织后对同一信息序列进行编码,Turbo码译码算法为

Turbo码的编译码算法仿真讲解

电子信息类实践课III 通信系统仿真 题目Turbo码的编译码算法仿真 专业 学号 姓名 日期 注:本报告仅供参考

1、课程设计目的(黑体小三,段前段后个一行) 通过完成在在衰落信道下采用不同调制信号进行Turbo码编译码的编程实现,进一步了解了Turbo码的编码解码过程,以及在不同调制方式不同信道下的性能比见。通过对卷积和交织器的设计,深入了解卷积和交织的作用。以及熟悉了通信仿真的整体流程。 2、课程设计内容 具体叙述课程设计的主要内容和原理。 表1 主要课程设计内容列表 在进行本次Turbo仿真时,采用了两种不同编程方式。在程序一中是直接调用matlab Communications System Toolbox中的Turbo编码和解码工具箱,通过配置参数进行仿真。而在程序二中则根据Turbo码编译码原理编写。如果程序一更像是一个黑匣子,只能知道通过编解码模块前、后的数据,而具体做了哪些则不得而知。 a.编码 图1 Turbo码编码器结构 典型的Turbo码编码器结构框图如图所示:由两个反馈的编码器通过一个交织器并行连接而成。如果必要,由成员编码器输出的序列经过删余阵,从而可以产 1

生一系列不同码率的码。例如,对于生成矩阵为g=[g1,g2]的(2,1,2)卷积码通过编码后,如果进行删余,则得到码率为1/2的编码输出序列;如果不进行删余,得到的码率为1/3。一般情况下,Turbo码成员编码器是RSC编码器。原因在于递归编码器可以改善码的比特误码率性能。 通俗理解1/2码率就是信号中有一半都是“无用信号”,这些“无用信号”就是两个分量编码器的生成的校验码,而删余则是各删除一部分校验码,把剩下的再和信息比特合在一块,形成编码好的矩阵。 b.译码 图2 Turbo译码结构 Turbo码获得优异性能的根本原因之一是使用了迭代译码,通过与分量编码器对应的分量译码器之间软信息的交换来提高译码性能。对于 Turbo 码这样的并行级联码,如果分量译码器的输出为硬判决,则不可能实现分量译码器之间软信息的交换,从而限制了系统性能的进一步提高。从信息论的角度来看,任何硬判决都会损失部分信息,因此,如果分量译码器能够提供一个反映其输出可靠性的软输出,则其他分量译码器也可以采用软判决译码,从而系统的性能可以得到进一步提高。为此,人们提出了软输入软输出译码(SISO)的概念和方法。Turbo 码的分量码 SISO 译码算法总体上可分为MAP和SOV A 两类主要算法。其中MAP算法是一种最佳后验概率算法。SOV A类算法主要包括软输出的维特比算法(SOV A)和连续列表输出维特比算法(SLV A)。 SOV A算法实际上就是veterbi算法的扩展,保留的路径数不是两条而是和状态数有关从所有可行的路径中找最优的是最大似然序列检测。 d.衰落信道 由于多径和移动台运动等影响因素,使得移动信道对传输信号在时间、频率 2

Turbo码原理及仿真

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 码编码器 图2 Turbo 码编码原理图

Turbo码详解

第十三章 Turbo 码 Shannon 理论证明,随机码是好码,但是它的译码却太复杂。因此,多少年来随机编码理论一直是作为分析与证明编码定理的主要方法,而如何在构造码上发挥作用却并未引起人们的足够重视。直到1993年,Turbo 码的发现,才较好地解决了这一问题,为Shannon 随机码理论的应用研究奠定了基础。 Turbo 码,又称并行级连卷积码(PCCC),是由C. Berrou 等在ICC ’93会议上提出的。它巧妙地将卷积码和随机交织器结合在一起,实现了随机编码的思想,同时,采用软输出迭代译码来逼近最大似然译码。本章首先介绍Turbo 码的提出与构成原理;介绍迭代反馈译码算法(包括AWGN 信道与Rayleigh 衰落信道下的译码);然后针对Turbo 码编译码特性,对几个问题进行了说明;最后介绍Turbo 码在3GPP 中的具体应用。 §13.1 Turbo 码的提出 Turbo 码,又称并行级连卷积码(PCCC),是由C.Berrou 等在ICC ’93会议上提出的。它巧妙地将卷积码和随机交织器结合在一起,实现了随机编码的思想,同时,采用软输出迭代译码来逼近最大似然译码。模拟结果表明,如果采用大小为65535的随机交织器,并且进行18次迭代,则在E N b /0≥0.7dB 时,码率为1/2的Turbo 码在AWGN 信道上的误比特率(BER )≤-105 ,达到了近Shannon 限的性能(1/2码率的Shannon 限是0dB )。因此,这一超乎寻常的优异性能,立即引起信息与编码理论界的轰动。图13-1中给出了Turbo 码及其它编码方案的性能比较,从中可以看出Turbo 编码方案的优越性。 由于Turbo 码的上述优异性能并不是从理论研究的角度给出的,而仅是计算机仿真的结果。因此,Turbo 码的理论基础还不完善。后来经过不少人的重复性研究与理论分析,发现Turbo 码的性能确实是非常优异的。因此,turbo 码的发现,标志着信道编码理论与技术的研究进入了一个崭新的阶段,它结束了长期将信道截止速率0R 作为实际容量限的历史。 需要说明的是,由于原Turbo 编译码方案申请了专利,因此在有关Turbo 码的第一篇文章中,作者没有给出如何进行迭代译码的实现细节,只是从原理上加以说明。此后,P. Robertson 对此进行了探讨,对译码器的工作原理进行了详细说明。人们依此进行了大量的模拟研究。 Turbo 码的提出,更新了编码理论研究中的一些概念和方法。现在人们更喜欢基于概率的软判决译码方法,而不是早期基于代数的构造与译码方法,而且人们对编码方案的比较方法也发生了变化,从以前的相互比较过渡到现在的均与Shannon 限进行比较。同时,也使编码理论家变成了实验科学家。

Turbo码原理简介

Turbo 码原理简介 1993 年 C.Berrou 、A.Glavieux 和 P.Thitimajshiwa 首先提出了称之为 Turbo 码的并行级联 编译码方案。 Turbo 码性能取决于码的距离特性。线性码的距离分布同于重量分布,如果低 重量的输入序列经编码得到的还是低重量的输出序列, 则距离特性变坏。 该特性对于块码来 说不存在问题; 然而对于卷积码, 则是个非常严重的问题。 因为卷积码的距离特性是影响误 码率的一个非常重要的因素。 在 Turbo 码中,利用递归系统卷积码 (RSC) 编码器作为成员码时,低重量的输入序列经 过编码后可以得到高重量的输出序列。同时交织器的使用,也能加大码字重量。实际上, Turbo 码的目标不是追求高的最小距离,而是设计具有尽可能少的低重量码字的码。 Turbo 码由两个递归系统卷积码 (RSC)并行级联而成。译码采用特有的迭代译码算法。 1 Turbo 码编码原理 图 7 Turbo 码编码器 由于与非递归卷积码相比,递归卷积码产生的码字重量更大,所以这里采 用了两个相同的系统递归卷积码 (RSC )。信息序列分成相同的两路,第一路 典型的 Turbo 码编码器结构框图如图 2 所示:由两个反馈的编码器 (称为成员编码器) 通过一个交织器 I 并行连接而成。如果必要,由成员编码器输出的序列经过删余阵,从而可 以产生一系列不同码率的码。例如,对 于生 成矩阵为 g=[g1,g2] 的(2,1, 2)卷 积码通过 编码后,如果进行删余,则得 到码率为 1/2 的编码输出序列;如果不 进行删余,得到的 码率为 1/3。一般情 器是 RSC 编码器。原因在于递归编码器可 以改善码的比特误码率性能。 2 编码 方案中使用的 Turbo 码为 1/3码率的并行级联码, 它的编码器由两个相同的 码率为 1/2 的RSC 编码器及交织器组成,如图 4 所示。 图 2 Turbo 码编码原

相关主题
相关文档
最新文档