当前位置:文档之家› TURBO编译码及仿真

TURBO编译码及仿真

TURBO编译码及仿真
TURBO编译码及仿真

课程设计论文

题目turbo码编译码及Matlab仿真

学院物理科学与技术学院

专业通信工程

年级2010

学生姓名

学号

指导教师

二○一三年六月

第1章绪论

纠错码技术在过去的八年中发生了翻天覆地的改变。

从1993 年,Turbo 码被C.Berrou 等人提出以来,Turbo 码就以其优异的性能和相对简单可行的编译码算法吸引了众多研究者的目光.Turbo 码的实质是并行级联的卷积码,它与以往所有的码的不同之处在于它通过一个交织器的作用,达到接近随机编码的目的.它所采用的迭代译码策略,使得译码复杂性大大降低。它采用两个子译码器通过交换称为外信息的辅助信息,相互支持,从而提高译码性能。外信息的交换是在迭代译码的过程中实现的,前一次迭代产生的外信息经交换后将作为下一次迭代的先验信息。人们将Turbo 码中子译码器互换信息以相互支持的思想称为“Turbo 原理”。这种思想可运用于其他场合,如信道均衡,码调制,多用户检测,信源、信道联合译码等。

日前Turbo码的研究尚缺少理论基础支持,但是在各种恶劣条件下(即低SNR情况下),提供接近Shannon 极限的通信能力已经通过模拟证明。但Turbo码也存在着一些急待解决的问题,例如译码算法的改进、复杂性的降低、译码延时的减小。作为商用3G 移动通信系统的关键技术之一,Turbo 码也将逐渐获得较好的理论支持并且得到进一步开发和完善。

第2章 Turbo 码编码原理

2.1 Turbo 码的编码结构

Turbo 码的典型编码器如图1所示,Turbo 码编码器主要由分量编码器、交织器复接器组成。分量码一般选择为递归系统卷积(RSC ,Recursive Systematic Convolutional )码,当然也可以是分组码(BC , Block Code )、非递归卷积(NRC ,Non-Recursive Convolutional )码以及非系统卷积(NSC ,Non-Systematic Convolutional )码,但从后面的分析将看到,分量码的最佳选择是递归系统卷积码。通常两个分量码采用相同的生成矩阵,当然分量码也可以是不同的。

{

u

{}k c 图1 Turbo 码的编码器结构

以分量码为RSC 为例,分量编码器为递归系统卷积码(RSC )编码器。第一个RSC 之前不使用交织器,后续的每个RSC 之前都有一个交织器与之对应。一个Turbo 编码器中原则上可采用多个RSC ,但通常只选用2个,因为过多的RSC 分量编码器将使得译码非常复杂而难以实现。通常的Turbo

码编码器中,长度为N 的信息序列{}k u 在送入第一个分量编码器的同时作为系统输出{}s k x 直接送至复接器,同时{}k u 经过一个N 位交织器,形成一个

新序列{}'k u (长度与内容没变,但比特位置经过重新排列。{}k u 与{}

'k u 分别传送到两个分量码编器(RSC1与RSC2)。一般情况下,两个分量码编码器的

结构相同,生成分量码校验序列{}p k x 1和{}

p k x 2。{}k u {}

'k u 与未编码的信息序列{}s k x 经过复接后,生成Turbo 码序列{}k c ,将编码序列调制后,即可发射进入信道传输。 2.2 递归系统卷积码(RSC )

纠错编码是将k 位的输入信息码元编成n 位的输出信道码元,在编码中,可以采用一定的算法,使输出码元中的k 位与输入码元一致。这样,输入码元与输出码元有明显的对应关系,这种码称为系统码[。系统码中一致的这k 位数据称为信息位,输出码元其余的n -k 位称为校验位,不满足这种关系的码称为非系统码。同样的,卷积码可以分为系统卷积(SC ,Systematic Convolutional )码与非系统卷积(NSC ,Non-Systematic Convolutional )码两大类。以下图2的(2,1,2)卷积码为例,设时刻k 的输入码元为k d ,输出码元为k X 和k Y ,则输出码元与输入码元的关系为

k X

图2 ∑-=---=++=1

0121K i i k i k k k k d g d d d X (2-1)

∑=--=+=022i i k i k k k d g d d Y (2-2)

式中,i g 1—1G 的系数,i g 2—2G 的系数。

非递推系统卷积码,约束长度K =3,但码生成多项式为Gl=4,G2=5。它的输出码元与输入码元的关系为

k k d X = (2-3)

∑-=--=+=1

022K i i k i k k k d g d d Y (2-4)

系统码的结构比非系统码的简单,模2加法器和连线的数量都比非系统码的要少。

RSC 码是由一个NSC 码编码器通过反馈,并使k X 等于输入信息比特k d 而构成的。

对RSC 编码器,移位寄存器输入不再是数据比特k d ,而是一个新的二元变量k a 。如果k X =k d ,输出k Y 为式(2-4),其中k d 由代替k a ,而k a 由下式递推计算

∑-=-+=1

1K i i k i k k a r d a (2-5)

式中

i i g r 1= (2-6)

式(2-5)可写为

∑-=-=1

0K i i k i k a r d (2-7)

下面讨论为什么选择RSC 编码器作为Turbo 码的子编码器。

首先,RSC 码具有系统码的优点。因为系统码在从码字恢复出信息序列时无需求逆,这一特性使用户在译码时无需变换码字而直接对接收的码序列进行译码。所以,RSC 码对于NSC 码而言译码简单、快速。

其次,还可以从Turbo 码重量分布的角度给予解释。通过观察递归卷积码与非递归卷积码的低重量信息序列所产生的码字的分布情况,可以发现二者之间有明显的不同,低重量的输入信息序列经过非递归卷积编码器之后,只能产生低重量的监督码元序列,低重量码字的增加将严重影响Turbo 码的

性能,而低重量的信息序列经过递归卷积编码之后,输出的监督码元的重量分布在一个很宽的范围之内,这是由其反馈特性所造成的。因此,用非递归卷积码所构造的Turbo 码的性能比较差,Turbo 码需要递归卷积码实现。

最后,从差错控制编码的相关文献中也可知,在对比实验中,非系统卷积码(NSC )的BER 性能在高信噪比时比约束长度相同的非递归系统码要好,而在低信噪比时情况却正好相反[13]。递归系统卷积(RSC )码综合了NSC 码和系统码的特性,虽然它与NSC 码具有相同的trellis 结构和自由距离,但是在高码率()2≥R 的情况下,对任何信噪比,它的性能均比等效的NSC 码要好。由于系统递归卷积码具有以上特点,并且能改善误码率,所以通常选择RSC 码作为Turbo 码的子编码器。

NSC 的可由生成算子[]111

1=g 和[]1012=g 来描述,也可将其表示为矩阵形式[]21,g g G =.RSC 可以表示为[]12,1g g G =。NSC 中的第一个支路输出被反馈到了输入端,从而引起了生成矩阵形式上的变化。RSC 的矩阵表达式中,1对应着输出的系统信息序列,2g 对应着编码器的前馈输出,1g 对应着反馈到输入端的成分。

研究指出RSC 的原始生成多项式的基础上加上适当的反馈,往往能获得好码,因为应用了反馈之后,可以获得最大长度的编码序列,根据分组码的知识,我们知道这给码序列增加了随机性,从而能获得更好的误比特率。

2.3 交织器

交织器其实是通信系统中进行数据处理而采用的一种技术,交织器从其本质上来说就是一种实现最大限度的改变信息结构而不改变信息内容的器件,也就是使在信道传输过程中所突发产生集中的错误最大限度的分散化,不规则化[。我们设X 为交织器的输入,Y 为交织器的输出,I 就是交织器,所以()X I Y =。一般的应用交织器往往都是有延时的,我们有必要引入一个新的概念:交织器的延时,它是指在时刻i ,输出的i y 与此时此刻或以前的输入()i j x j <有关,且()i i I ≤,用式子来表示就是()0≥-=i I i δ,相应的()()i I i t

i -=≤≤0m i n min δ为交织器的最小延时。 交织器是Turbo 码编码器主要的组成部分,也是Turbo 码的重要特征之

一。线性码的纠错译码性能实质上是由码字的重量分布决定的,Turbo码也是线性码,所以其性能也是由码字重量分布决定的,由于交织器实际上决定了Turbo码的重量分布,所以,给定了卷积编码器后,Turbo码的性能主要是由交织器决定的。在低SNR时,交织器的大小将直接影响着Turbo码的差错性能。因为交织长度大时,两个子编码器接收的输入序列的相关性就可以很低,就越有利于译码迭代,从而使得迭代结果越准确。在高SNR时,是Turbo 码的低重量码字、最小汉明距离或距离谱决定着它可以达到的BER性能,所以交织器的设计显著的影响着低重量码字或距离谱,重量分布是反映纠错码性能的重要指标,所谓具有好的重量分布,就是要尽量减少低重量的码字的数量。如果没有交织器的作用,Turbo码的两个子编码器的输入就相同。如果其中一个经编码后产生低重量的码字,那么该序列在经过第二个字编码器输出后也会产生低重量的码字。反之,加入交织器,由于交织器对输入序列进行了置换,使得数据在进入第二个编码器之前被打乱,也就改变了原来信息的排列方式,所以Turbo码的两个子编码器同时产生低重量输出的可能性就更小了,也就是说交织器减小了Turbo码产生低重量码字的概率,从而可以使Turbo码有比较好的纠错性能[15]。在Turbo码中,交织器的这种使输入码元符号的顺序尽可能随机分布的作用,将使码元符号之间的相关性减弱,使进入各个子译码器的信息序列之间不相关。这种去相关的结果使得各个子译码器可以彼此独立的工作。彼此独立进行译码的结果是,软判决信息可以互相利用,判决结果也因此逐渐准确。从而,使Turbo码译码器的性能远远好于其它类型的译码器,包括其他类型的级联译码器。

但是,由于交织器的存在,使得Turbo码存在一定的时延,数据帧越长,延时越大。而且交织器的长度会对Turbo码的译码性能有很大的影响,交织深度越大,译码的误码率越低,传输质量越高。所以,对于那些允许有较大时延的业务,Turbo码的作用就可以得到充分的发挥。但是,对于那些不允许有较大时延的业务,Turbo码的应用却受到了限制。

仿真用来如下三个寄存器的递归卷积编码器,生成多项式表示为g[1 0 1 1,1 1 0 1]

图3

第3章 Turbo码译码

3.1 Turbo码的译码结构

通常情况下,Turbo码编码器使用两个分量RSC,编码输出包含了信息序列(在译码端常常被称为系统信息或系统比特)和两个分量RSC编码器输出的校验信息序列。对接收到的观测序列进行译码的时候,根据编码结果,把译码器分解为两个独立的译码器DECl和DEC2,分别跟两个RSC分量编码器相对应。为了得到对原始信息的最优估计,两个译码器分别对系统信息和两个校验序列进行译码时,应该相互利用校验序列所含的信息,采用迭代译码,通过分量译码器之问软信息的交换来提高译码性能,这也是Turbo码获得优异性能的根本原因之一.

图4 Turbo 码的译码结构 以码率为1/3的Turbo 码为例,编码输出信号为

()

p k s k k x x X ,= (3-1) 对于BPSK 调制,输出信号与编码码字

()

p k s k k c c C ,= (3-2) 之间满足关系

()12-=k s k C E X (3-3)

假定接收信号为

()

p k s k k y y Y ,= (3-4) 式中

k s k s k i x y += (3-5) k p k p k q x y += (3-6)

k i 和k q 是服从均值为0,方差为20N 的独立同分布高斯随机变量。 在接收端,接收采样经过匹配滤波之后得到的接收序列

()N R R R R ,...,,21= (3-7)

经过串并转换后得到如下三序列:

系统接收信息序列

()

s N s s s y y y Y ,...,,21= (3-8) 用于DECl 的接收校验序列 ()

p N p p p y y y Y 11

2111,...,,= (3-9)

用于DEC2的接收校验序列

()

p N p p p y y y Y 222212,...,,= (3-10) 若其中某些校验比特在编码过程中通过删余矩阵被删除,则在接收校验序列的相应位置以“0”填充。上述3个接收序列s Y 、p Y 1和p Y 2,经过信道置信度c L 加权后作为系统信息序列()I c s ;Λ,信息序列()I c p ;1Λ和()

I c p ;2Λ送入译码器。对于噪声服从分布N (0,No /2)的AWGN 信道来说,信道置信度定义为 04N E L s c = (3-11)

对于第k 个被译比特,Turbo 译码器中每个分量译码器都包括系统信息()I c s k ;Λ、校验信息()I c ip k ;Λ和先验信息()k ia u Λ。其中先验信息()k ia u Λ由另一个分量译码器生成的外部信息()k e i u ,3-Λ经过解交织后的对数似然比值。译码输出为对数似然比()O u ik ;Λ,其中i=l ,2。

在迭代过程中,分量译码器1的输出()O u k ;1Λ可表示为系统信息()I c s k ;Λ、先验信息()k a u 1Λ和外部信息()k e u 1Λ之和的形式

()O u k ;1Λ=()

I c s k ;Λ+()k a u 1Λ+()k e u 1Λ (3-12) 式中

()()()k e k I a u u 21Λ=Λ (3-13)

()k I 为交织映射函数。 在第一次迭代时

()02=Λk e u (3-14)

从而

()01=Λk a u (3-15)

由于分量译码器1生成的外部信息()k e u 1Λ与先验信息()k a u 1Λ和系统信息()

I c s k ;Λ无关,故可以在交织后作为分量译码器2的先验信息输入,从而提高译码的准确性。

同样,对于分量译码器2,其外部信息()k e u 2Λ为输出对数似然比()O u k ;2Λ减去系统信息()()

I c s k I ;Λ(经过交织映射)和先验信息()k a u 2Λ的结果,即 ()k e u 2Λ=()O u k ;2Λ-()()

I c s k I ;Λ-()k a u 2Λ (3-16)

式中

()k a u 2Λ=()()k I e u 1Λ (3-17)

外部信息()k e u 2Λ解交织后反馈为分量译码器1的先验输入,完成一轮迭代译码。

随着迭代次数的增加,两个分量译码器得到的外部信息值对译码性能提高的作用越来越小,在达到一定的迭代次数后,译码性能不再提高。这时根据分量译码器2的输出对数似然比经过解交织后再进行硬判决即得到译码输出。

3.2 译码中软信息的确定

首先我们来讨论硬判决和软判决的概念和区别。硬判决和软判决是指译码的时候对接收到的比特进行量化的两种形式。硬判决译码中,从信道接收到一个比特,即对其进行量化,判断其观测值是0或者1,然后进入译码器进行译码计算。软判决译码中,接收到一个比特的信息,并不立即对其进行量化而得到观测值,而是根据多个比特依照它们之间的相关性而进行判决。理想的软判决译码中,量化是基于无限比特的,而且从信道接收到的序列值立即进入信道译码器参与译码计算。

假设信息序列经过信道编码得到编码序列,采用BPSK 调制方式,如果码元为0,则调制成-1发送,若码元为1,调制成+1。调制后的-1/+1序列在信道中传输,由于噪声的影响,序列的值会发生变化。如果我们在接收端接收到3V 和0.3V 两个脉冲电压,硬判决方式会将这两个脉冲都判决为二进制信息1,尽管第二个比特看起来离二进制1的判断标准还差很远。硬判决不可避免地会产生一些不恰当的判决,一旦作出判决,结果是不能更改和修正的。软判决则避免了这种情况,从信道接收到的序列不经过判决,直接进入译码器,由译码器分离出信息的先验概率参与译码,通过多个码元之间的相关性,计算得到一个软输出,再根据这个软输出作出最后的判决,得二进制译码比特。

Turbo 码译码时使用的是SISO (Soft In Soft Out )译码器,即译码器输入输出都为软信息,对软信息这一概念有两种解释:

(1)假设输出比特为1的概率是()7.0

p这些

0=

p,而为0的概率是()3.0

1=

概率信息即称为软信息。由于()()0

p>,故可判定此输出比特为1。

1p

(2)软信息的另一种定义为信道输出的非量化模拟值。假设在0,1之间,若信道输出值为0.753,可以判定此输出比特为1的可能性要大于为0的可能性,在实际应用中为硬件实现提供了方便,通常将信道输出的模拟值进行一定级数(通常大于2)的量化。例如信道输出的模拟量经过A/D变换的量化输出值即代表了信道输出为1和为0的概率,用3个比特来代表0-7级量化电平,如果输出实数值靠近第7级量化电平,即可判定此输出信息为1的概率很高,而为0的概率却很低,反之亦然。

上边两种解释的实质是一样的,都利用了信道提供的传输可靠性信息,即信息的先验概率。利用这种软信息进行译码判决的技术即称为软判决技术,软信息能够为译码器提供由信道产生的附加可靠性信息。以二进制信息传输为例,如果在解调器输出端即对解调信息进行判决为0或为1,并将此判决送给译码器,即采用硬判决译码方式。硬判决方式没有充分利用信道提供的可靠性信息,而是将其完全忽略,故其译码性能远不如软判决译码。

译码输出端也存在软信息的问题,编码端的级联结构使得译码器包含两个或者多个成员译码器,各成员译码器之间通过译码信息的传递来进行级联的译码,如果成员译码器能够输出软信息,就可以提供给另一个成员译码器作为输入软信息,通过软信息的相互传递而使译码性能提高。

Turbo码采用软输入软输出的译码结构。图5是软输入软输出译码器的示意图。从信道接收到的观测序列经过分解得到系统信息和校验信息,与先验信息(由另一个成员译码器提供)一起进入成员译码器参与译码,得到信息比特的对数似然比LLR,再据此作最后的判决得到译码序列。

图5 软输入软输出译码示意图

3.3 Turbo 码的译码算法

Turbo 码的一个重要特点就是在译码时采用了迭代译码的思想,迭代译码的复杂性仅是随着信息序列的大小增加而线性增长。与译码复杂性随码字长度增加呈指数形式增长的最优MID 相比,迭代译码具有更强的可实现性。已有研究表明,基于最优译码算法的迭代译码与MID 相比,是一种次最优译码。但采用迭代方式的Turbo 码译码可以达到接近Shannon 理论极限的性能。实际上,这类并行级联码之所以成为Turbo 码,就是因为在译码器中存在反馈,类似于涡轮机的工作原理。

在迭代进行过程中,通过分量译码器之间互相交换软比特信息来提高译码性能。Forney 等人已经证明了最优的软输出译码器应该是后验概率(APP ,A Posteriori Probability )译码器,它是以接收信号为条件的某个特定比特传输概率。

Turbo 码的译码算法主要分为基于最大后验概率(MAP )的算法和基于软输出Viterbi 译码算法两大类。MAP 系列包括MAP 算法、对数域Log-MAP 算法以及其简化算法Max-Log-MAP 算法。Viterbi 系列算法包括Viterbi 算法、改进的SOVA 算法、采用滑窗的SOVA 算法等。Viterbi 系列算法是针对序列进行译码的算法,运算量较小,采用滑窗后还可以减小时延,易于工程实现。MAP 类算法是针对比特进行译码的算法,运算量较大,但是性能比Viterbi 算法好。

3.3.1 Log-MAP 算法

Log-MAP 算法是MAP 算法的一种转换形式,实现要比MAP 算法简单。为推导Log-MAP 算法,需要把MAP 算法中的变量都转换为对数的形式,从而把乘法运算都转换为加法运算,同时译码器的输入输出相应地修正为LLR 形式,再把得到的算法进行必要的修改就得到了Log-MAP 算法。下面推导Log-MAP 算法。

在Log-MAP 算法中,

()e M k 、()s A k 和()s B k 与MAP 算法中的()e k γ、()s k α和()s k β相对应,它们之间满足对数关系

()e M k =ln ()e k γ (3-18)

()k ()k ()s B k =ln ()s k β (3-20)

首先分析对数路径度量()e M k 的计算。在MAP 算法的推导中己知,()e k γ表达式中()e X p k 根据K X 是否与边e 有关而取值为1或0;概率()()()

e s e s P s k E k 的取值由信息比特的先验信息()k a u Λ来决定。 对于噪声方差为20N 的AWGN 信道忽略常数项,有

()()()[]

1212222ln 000-+-=+=p k p k s k s k s p k p k s k s k k k c y c y N E N x y N x y X Y p (3-21) 对于AWGN 信道,有

()()()()()()()()()j k s

s s k s k s s k s k s k s s k s k s s k N s s k N s s k s k k s k s k y N E E x y p E x y p y E x

p y E x p Y E x p Y E x p I c p I c p I c 0

114ln ln ln ;0;1ln ;=-===-===-======Λ (3-22)

类似地,有 ()()()

p k s p k k p k k p k y N E I c p I c p I c 04;0;1ln ;====Λ (3-23) 得到对数域上的路径度量计算式

()()()()()

()k k s k E k k k X Y p e s e s p e e M ln ln ln +==γ (3-24) 注意,式(3-24)仅在()e s E k 和()e s s k 之间存在传递时成立。

尽管第二个分量码的系统比特序列在编码过程中没有传输,但它实际上是第一个分量码的系统比特序列经过交织后的比特序列。因为译码器的系统输入()I c s k ;Λ是通过对接收信号的系统比特加权得到的,故可以通过对第一个分量码的()I c s k ;1Λ进行交织来得到第二个分量码的()I c s k ;2Λ;这样,第一个分量码和第二个分量码对于信息比特都有其相应的()I c s k ;Λ和

()

I c p k ;Λ。

从而在计算前向路径量度()s A k 和后向路径量度()s B k 时两个分量译码器可以采用相同的计算公式。

由于MAP 算法中()s k α和()s k β的递推运算中存在指数和计算(由()e k γ

在AWGN 信道上的计算引入),所以在Log-MAP 算法中引入()*max 操作,其定义为

()()()??

? ??=∑e e f e e f ln max * (3-25) 通常可以对上述()*max 操作进行变形,对于两个变量的情况(x 和y ),有()()()()()()y x f y x e y x e e y x c

y x y x -+=++=+=--,max 1ln ,max ln ,max * 假定编码器的起始状态和结束状态分别为0S 和N S ,则对应于Log-MAP 算法,前、后向路径度量的递归计算初值分别为

()???∞-==其他

,,000S s s A (3-26) ()?

??∞-==其他,,0s B N N S s (3-27) 在实际数值计算时,可以用一个较大的值来代替∞。

如果编码寄存器在编码结束时状态未知,则初值可以设为

()0s B N =或其它常数 (3-28)

根据上述推导,可以得到信息比特完整的对数似然比输出信息。 代入()e M k 的表达式,并提取通项,得到

()()()

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

??????+-Λ+-??

????+-Λ++Λ+Λ=Λ-=-=e s B c I c e s A e s B c I c e s A I c u O u E k k p k p k s k k e eu E k k p k p k s k k e eu s k k a k 12;21max 12;21max ;;1011 (3-29) 由式(3-29)可以看出,输出对数似然比信息()O u k ;Λ是先验信息()k a u Λ、系统信息()I c s k ;Λ与外部信息(剩余部分)之和。

由于两个分量译码器使用相同的系统信息()I c s k ;Λ,因此需要与处理先验信息()k a u Λ一样,将其从()O u k ;Λ中分离出来,仅以外部信息作为先验信息用于下一轮译码。类似地,也可以得到码字符号的译码输出概率对数似然比。

将Log-MAP 算法中的(

)*max 简化为通常的最大值运算,即为

MAX-Log-MAP 算法。

3.3.2 软输出Viterbi 算法SOVA

SOVA 算法也称为软输出的维特比算法(Soft-Output Viterbi Algorithms ),它是在Viterbi 算法的基础上改进而来的。由于在Turbo 码出现之前,Viterbi 算法已经广泛应用于工程之中,因此和其他几种算法相比,SOVA 算法更适用应用于工程中。

SOVA 算法是Hagenauer 在1989年出来的。他将Viterbi 算法进行了改进,改进后的算法不仅能得到最大似然路径,而且能计算出每个信息比特的后验概率,这样就使Viterbi 算法可以级联使用[22]。

SOVA 算法是对传统的Viterbi 算法做了两点改进:首先,在计算路径的度量时,考虑了先验信息,并且让先验信息在两个分量译码器之间传递;其次,算法可以以后验概率的形式为每一个信息比特提供软输出。

Viterbi 算法的基础是寻找能够使后验概率最大的状态序列,即:

()

()()k y P k y S P k y S P j j s k j s k ≤≤=≤/, (3-30) 这里s k S 代表在幸存路径上的状态序列,这个状态序列在k 时刻的状态为S ,k y j ≤表示k 时刻前的接收序列。由于k y j ≤是已知的,因此要使上式最大,只要让()k y S P j s k ≤,最大,这就是k 时刻的度量。这个度量可以通过循环递推的方式计算,即k 时刻的度量()k y S P j s k ≤,等于k-1时刻的度量乘以在k-1时刻的状态的已知的情况下k 时刻的状态为S 并且输出为k y 的概率,即:

()k y S P j s k ≤,=()

1,'1-≤-k y S P j s k ()',s y s P k (3-31) 如果令度量()s k s M 为log ()k y S P j

s k ≤,因此有:

()s

k s M =()'1s k s M -+log ()',s y s P k

(3-32) 这样就得到了SOVA 算法中的支路度量的计算公式:

p M =log ()',s y s P k (3-33)

第4章 Matlab 仿真及结果

4.1 Turbo 码仿真系统的实现

Turbo 码是经过模拟仿真来的,而不是根据既定的设计准则得到的。许多研究者正寻找其工作机理以便更好为Turbo 码的构造提供理论依据。至到

到的。模拟仿真时,衡量其编码性能的好坏主要以误码率BER(Bit Error Rate)来的。本章将会对Turbo码的性能作较为详细的论在加性高斯白噪声信道环境下,比较不同译码算法的不同性,与此同时为进一步的仿真和分析提供理论依据。仿真中使用加性高斯白噪声信道(AWGN)模型,因为它易于构建,也是具有代表性的信道模型之一,同时假设使用BPSK调制方式。根据Turbo码系统的结构特点,本文将整个Turbo编译码系统合理地划分成多个模块,使用MATLAB通过模块化设计实现了可以用于计算机模拟的Turbo编译码系统。系统所包涵的模块具体划分为:主程序、信道模型子程序、交织子程序、RSC 编码子程序、使用不同的算法进行译码的译码子程序等。

仿真中使用加性高斯白噪声信道(AWGN)模型,因为它易于构建,也是具有代表性的信道模型之一,同时假设使用BPSK调制方式。根据Turbo码系统的结构特点,本文将整个Turbo编译码系统合理地划分成多个模块,使用MATLAB通过模块化设计实现了可以用于计算机模拟的Turbo编译码系统。系统所包涵的模块具体划分为:主程序、信道模型子程序、交织子程序、RSC 编码子程序、使用不同的算法进行译码的译码子程序等。

主程序控制着整个系统的流程。主程序首先完成对系统的先期设置,包括分量RSC的生成矩阵、帧大小(即交织器的大小)、迭代次数、使用何种译码算法等等。然后,随即生成{}0,1信息源,调用各子程序完成编码、传输以及译码的过程。

仿真中使用加性高斯白噪声信道(AWGN)模型,因为它易于构建,也是具有代表性的信道模型之一,同时假设使用BPSK调制方式。根据Turbo码系统的结构特点,本文将整个Turbo编译码系统合理地划分成多个模块,使用MATLAB通过模块化设计实现了可以用于计算机模拟的Turbo编译码系统。系统所包涵的模块具体划分为:主程序、信道模型子程序、交织子程序、RSC

交织子程序供主程序调用,主要完成对信息比特序列进行位置的随机置换,并提供给RSC2进行编码。对每帧进行置换的格式将保存下来,以便在译码过程中进行正确的解交织。RSC编码子程序供主程序调用,完成编码。网格图生成子程序供译码子程序调用,用于生成给定生成矩阵对应的网格图。对一帧编码的子程序供RSC编码子程序调用,用于对一帧的信息比特编码。对一位信息比特编码子程序供对一帧编码的子程序调用,用于对单个输入比特进行编码。信道模型及复用调制子程序供主程序调用,用于生成信道模型,将两个RSC分量编码器编码序列和信息序列进行复用,根据需要的码率组成整个编码器的编码结果,然后使用AWGN信道模型将编码序列进行调制,模拟进入信道传输。译码前解复用子程序供主程序调用,用于从模拟信道接收观测序列,并将观测序列解复用,分解成系统比特序列和两个校验序列。译码子程序同主程序调用,用于实现具体的译码算法,对观测序列进行译码。

4.2 Turbo码的仿真结果及分析

影响Turbo码性能的参数很多,这里分别就不同的译码算法、迭代次数、交织长度对Turbo码性能的影响进行分析,给出仿真结果

4.2.1 不同译码算法对Turbo 码的性能影响

图6给出了采用不同译码算法下的Turbo 码仿真结果。Turbo 码码率为1/3,Log-Map算法和MAX-Log-Map 算法译码迭代次数为3。从图中可以观察到Log-MAP 译码算法性能明显要优于MAX-Log-MAP 和SOVA。在误码率为10-4 时,Log-MAP 译码算法比MAX-Log-Map 译码算法好0.4dB,比SOVA 好2dB

证了译码算法性能MAP>Log-MAP>MAX-Log-MAP>SOVA 的结论。SOVA 算法虽然性能是几种算法中最差的,但复杂性较低易于实现。在实际运用中,要结合具体的情况,权衡硬件的复杂度和性能要求,选择合适的译码算法。

图6 不同译码算法对Turbo码的影响

4.2.2 迭代次数

图7 迭代次数对Turbo码的影响

图7给出了不同迭代次数下,Turbo码的误比特率与信噪比的关系曲线,采用MAX-Log-MAP算法,码率为1。

从图7所示的仿真结果可以看出,随着迭代次数的增加,Turbo码的误比特率曲线不断降低并趋于收敛;而且随着信噪比的增加,迭代对误比特率性能的影响越来越明显。这是Turbo码通过迭代译码充分利用冗余信息来提高编译码性能这一特点的反映。最初,迭代译码的增益较高,但随着迭代次数的增加,译码增益增长相对缓慢,虽然继续增加迭代次数可以提高Turbo 码的性能,但权衡迭代所需要的时间、性能改善的幅度,我们通常都选取合适的迭代次数。。

4.2.3 交织长度

相关主题
文本预览
相关文档 最新文档