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

TURBO码的编译码原理及matlab仿真
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;

引言

根据Shannon[1]有噪信道编码定理,在信道传输速率R不超过信道容量C的前提下,只有在码组长度无限的码集合中随机地选择编码码字并且在接收端采用最大似然译码算法时,才能使误码率接近为零。但是最大似然译码的复杂性随编码长度的增加而加大,当编码长度趋于无穷大时,最大似然译码是不可能实现的。所以人们认为随机性编译码仅仅是为证明定理存在性而引人的一种数学方法和手段,在实际的编码构造中是不可能实现的。直到Turbo的出现,人们才改变了这种看法。1993年,Claud Bernou等人在国际通信会议(ICC' 93)上提出了并行级联卷积码(PCCC)即Turbo码,由于它很好地应用了Shannon信道编码定理中的随机性编译码条件,从而获得了几乎接近Shannon理论极限的译码性能。

Turbo码巧妙地将两个简单分量码通过伪随机交织器并行级联来构造具有伪随机特性的长码,并通过在两个软输入/软输出( SISO)译码器之间进行多次迭代实现了伪随机译码。采用迭代译码的方法来提高通信系统的译码性能是Turbo码的最大特点。Turbo码的编码器、译码器结构繁琐,是一种非常复杂的信道编码方案,这使得对Turbo码的理论分析十分困难,且只能对运算复杂度作宏观分析,对Turbo码的具体实现并没有一个清楚的度量。因此,使用计算机对Turbo码进行仿真分析是十分必要的。本文分析了Turbo码编码译码的原理,考虑到Turbo码系统编译码的数据处理量很大,利用生成矩阵对信息序列进行编码、译码时的迭代计算等等,都涉及了矩阵运算,故采用Matlab/Simulink来进行建模仿真。

1 Turbo码编码原理

1.1Turbo码的编码结构

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

以分量码为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 x1

和{}p k x2。{}k u{}'k u与未编码的信息序列{}s k x经过复接后,生成Turbo码序列{}k c,将编码序列调制后,即可发射进入信道传输。

{

k u

{}'k

u

图1Turbo 码的编码器结构

2.2 递归系统卷积码(RSC )

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

图2 卷积码

∑-=---=++=1

0121K i i k i k k k k d g d d d X (2-1) ∑-=--=+=10

22K i 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)

∑-=--=+=10

22K 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

1

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

式中

i i g r 1=(2-6)

式(2-5)可写为

∑-=-=10

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

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

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

其次,还可以从Turbo 码重量分布的角度给予解释。通过观察递归卷积码与非递归卷积码的低重量信息序列所产生的码字的分布情况,可以发现二者之间有明显的不同,低重量的输入信息序列经过非递归卷积编码器之后,只能产生低重量的监督码元序列,低重量码字的增加将严重影响Turbo 码的性能,而低重量的信息序列经过递归卷积编码之后,输出的监督码元的重量分布在一个很宽的范围之内,这是由其反馈特性所造成的。因此,用非递归卷积码所构造的Turbo 码的性能比较差,Turbo 码需要递归卷积码实现。

最后,从差错控制编码[4]的相关文献中也可知,在对比实验中,非系统卷积码(NSC )的BER 性能在高信噪比时比约束长度相同的非递归系统码要好,而在低信噪比时情况却正好相反[13]。递归系统卷积(RSC )码综合了NSC 码和系统码的特性,虽然它与NSC 码具有相同的trellis 结构和自由距离,但是在高码率()32≥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 交织器

交织器其实是通信系统中进行数据处理而采用的一种技术,交织器从其本质上来说就是一种实现最大限度的改变信息结构而不改变信息内容的器件,也就是使在信道传输过程中所突发产生集中的错误最大限度的分散化[4],不规则化。我们设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 -=≤≤0min min δ为交织器的最小延时。

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

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

3.1Turbo 码的译码结构

通常情况下,Turbo 码编码器使用两个分量RSC ,编码输出包含了信息序列(在译码端常

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

图3Turbo 码的译码结构

以码率为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 112111,...,,=(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,然后进入译码器进行译码计算。软判决译码中,接收到一个比特的信息,并不立即对其进行量化而得到观测值,而是根据多个比特依照它们之间的相关性而进行判决。理想的软判决译码中,量化是基于无限比特的,而且从信道接收到的序列值立即进入信道译码器参与译码计算[8]。

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

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

(1)假设输出比特为1的概率是()7.01=p ,而为0的概率是()3.00=p 这些概率信息即称为软信息[9]。由于()()01p p >,故可判定此输出比特为1。

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

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

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

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

决得到译码序列。

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

3.3 Turbo 码的译码算法

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

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

Turbo 码的译码算法主要分为基于最大后验概率(MAP )的算法[11]和基于软输出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) ()s A k =ln ()s k α(3-19) ()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 信道忽略常数项,有:

(3-21)

对于AWGN 信道,有

(3-22)

类似地,有

(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 -+=++=+=--,m a x 1ln ,max ln ,max *

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

(

)

(

)()

p k

s p

k k p k k p

k y N E I c p I

c p I c 0

4;0;1ln ;====Λ()()()[]

1

212222ln 0

00-+-=+=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 ()

(

)()

()()

()()()()

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-26)

(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-OutputViterbiAlgorithms ),它是在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 ≤,()??

?∞-==其他

,,00

0S s s A ()??

?∞-==其他,,0s B N N

S s

等于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)

4Matlab 仿真及结果

4.1 Turbo 码仿真系统的实现

Turbo 码是经过模拟仿真来的,而不是根据既定的设计准则得到的。许多研究者正寻找其工作机理以便更好为Turbo 码的构造提供理论依据。至到现在Turbo 码的研究成果很大一部分是通过对各种参数的模拟性能结果中得到的。模拟仿真时,衡量其编码性能的好坏主要以误码率BER(Bit Error Rate)来的。仿真中使用加性高斯白噪声信道(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 以上。Max-Log-MAP 算法用到了近似公式,故性能比Log-MAP 有所下降。验证了译码算法性能MAP>Log-MAP>MAX-Log-MAP>SOVA 的结论。SOVA 算法虽然性能是几种算法中最差的,但复杂性较低易于实现。在实际运用中,要结合具体的情况,权衡硬件的复杂度和性能要求,选择合适的译码算法。

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

4.2.2 迭代次数

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

图7给出了不同迭代次数下,Turbo码的误比特率与信噪比的关系曲线,采用

1。

MAX-Log-MAP算法,码率为3

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

4.2.3 交织长度

图8 交织长度对Turbo码的影响

图8给出了不同交织长度下,Turbo码的误比特率与信噪比的关系曲线。从图8中可以看出,交织长度越大,性能就越好,而且交织长度对性能的影响是很大的,这是由于交织器的存在所产生的所谓交织增益,使得Turbo码的性能随交织长度的增长而改善且在交织长度足够长时接近信道容量。交织长度是决定Turbo码性能的一个重要因素。但是与Turbo 码不同,卷积码的一个优点在于只要帧长远大于码的约束长度,其性能就与帧长没有关系,另外,Turbo码性能的另一个重要因素是迭代译码所产生的译码复杂度,所以我们有必要在短帧的情况下,将Turbo码与采用最大似然译码算法的卷积码纠错性能和复杂度作一个比较。在高斯信道环境下作了仿真比较,得到在同样信噪比的条件下,要达到3

10-级BER 的要求时,卷积码的复杂度小于Turbo码,在瑞利衰落信道下,结论也相似。短帧传输有着广泛的应用,诸如在移动通信中,话音和控制信息通常采用小于300比特的短帧,通常话音和信令的误码率要求在3

10

?之间。由上述结论可知,在对帧长有要求的移

5-

10

5-

?到4

动通信系统中,在一定的误码率要求下,Turbo码并不是最佳的准则,在考虑译码复杂度的情况下,卷积码反而比Turbo码具有更好的性能。反之,对于帧长较长的情况下,采用Turbo码将更有优势。

同时,我们还应该注意到交织深度和编译码时延之间还存在着一个兼顾的问题。Turbo 码的时延包括编码时延、码组传输时延、译码器时延及交织和解交织时延。交织长度越长,时延也越大。通信系统中,时延是个很重要的因素,实时的通信系统中总是对时延提出了较高的要求。在实际的应用中,需要根据时延的要求来确定最佳的码长。

5 结束语

提出一种基于Simulink模块和S函数共同构建的Turbo码仿真模型。在编码器中,分量码采用循环系统卷积码,使分量码的奇序列与原始信息相同;在译码器中,三个算法子程序可以任意选择比较,使Turbo码的仿真易于实现,方便了对Turbo码的分析和应用研究。利用仿真结果分析了迭代次数、交织长度、不同算法对译码性能的影响,对实际系统设计有一定的指导作用。

参考文献

[1]王会,王忠.Turbo码性能分析与仿真[D].成都:四川大学,2002.

[2]陈朝,陈芳,周峰.一种基于M atlat的Turbo码编码仿真实现[J].信息与电子工程,2005, 3(3) : 179--181.

[3]邓华.M atlat,通信仿真及应用实例详解[M].北京:人民邮电出版社2003.

[4]周贤伟,赵欣,王丽娜.使用Simulink构建Turbo码仿真系统[J].微计算机信息,2006, 22( 1s) : 202-204.

[5]钟麟,王峰.M atlal,仿真技术与应用教程[M ].北京:国防工业出版社,2004.

[6] Giulietti A, Vander Perre L, Strum M.Parallel Turbo Cod-ing Interleavers: Avoiding Collisions in Accesses to Storage Elements[J]. Electronic、Letters, 2002, 38(s):232一33.

[7]杜海明.Turbo码及其应用研究的最新进展[J].郑州轻工学院学报,2006(2):71-74.

[8]曹雪红,张宗橙.信息论与编码[M].北京:清华大学出版社,2004.

[9]熊华,曾常安,王峰.分组随机交织器相关系数仿真分析[J].华北电力大学学报,2007(1):106-110.

[10]魏景新,王琳.Turbo码编译码原理与应用新进展[J].华北科技学院学报,2007 (1):8-61.

[11]朱仁峰,邵菲,周辉.交织技术在信源信道联合编译码中的应用[J].装备指挥技术学院学报,2006(5):74-77.

关于信道编码中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 码编码原

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