TURBO编译码及仿真.docx
- 文档编号:17079546
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:21
- 大小:239.03KB
TURBO编译码及仿真.docx
《TURBO编译码及仿真.docx》由会员分享,可在线阅读,更多相关《TURBO编译码及仿真.docx(21页珍藏版)》请在冰点文库上搜索。
TURBO编译码及仿真
课程设计论文
目turbo码编译码及Matlab仿真
学院物理科学与技术学院
专业通信工程
年级2010
学生姓名
学号
指导教师
二O—三年六月
第1章绪论
纠错码技术在过去的八年中发生了翻天覆地的改变。
从1993年,Turbo码被等人提出以来,Turbo码就以其优异的性能和相对简单可行的编译码算法吸引了众多研究者的目光.Turbo码的实质是并行级联的卷积码,它与以往所有的码的不同之处在于它通过一个交织器的作用,达到接近随机编码的目的.它所采用的迭代译码策略,使得译码复杂性大大降低。
它釆用两个子译码器通过交换称为外信息的辅助信息,相互支持,从而提高译码性能。
外信息的交换是在迭代译码的过程中实现的,前一次迭代产生的外信息经交换后将作为下一次迭代的先验信息。
人们将Turbo码中子译码器互换信息以相互支持的思想称为“Turbo原理”。
这种思想可运用于其他场合,如信道均衡,码调制,多用户检测,信源、信道联合译码等。
日前Turbo码的研究尚缺少理论基础支持,但是在各种恶劣条件下(即低SNR情况下),提供接近Shannon极限的通信能力已经通过模拟证明。
但Turbo码也存在着一些急待解决的问题,例如译码算法的改进、复杂性的降低、译码延时的减小。
作为商用3G移动通信系统的关键技术之一,Turbo码也将逐渐获得较好的理论支持并且得到进一步开发和完善。
第2章Turbo码编码原理
Turbo码的编码结构
Turbo码的典型编码器如图1所示,Turbo码编码器主要由分量编码器、交织器复接器组成。
分量码一般选择为递归系统卷积(RSC,RecursiveSystematicConvolutional)码,当然也可以是分组码(BC,BlockCode)、非递归卷积(NRC,Non-RecursiveConvolutional)码以及非系统卷积(NSC,Non-SystematicConvolutional)码,但从后面的分析将看到,分量码的最佳选择是递归系统卷积码。
通常两个分量码采用相同的生成矩阵,当然分量码也可以是不同的。
图1Turbo码的编码器结构
以分量码为RSC为例,分量编码器为递归系统卷积码(RSC)编码器。
第一个RSC之前不使用交织器,后续的每个RSC之前都有一个交织器与之对应。
一个Turbo编码器中原则上可采用多个RSC,但通常只选用2个,因为过多的RSC分量编码器将使得译码非常复杂而难以实现。
通常的Turbo码编码器
中,长度为N的信息序列{心}在送入第一个分量编码器的同时作为系统输出屋}直接送至复接器,同时{你}经过一个N位交织器,形成一个新序列
(长度与内容没变,但比特位置经过重新排列。
{濟}与匕讣分别传送到两个分量码编器(RSC1与RSC2)。
一般情况下,两个分量码编码器的结构相同,生成分量码校验序列计}和{£}。
{你}伉}与未编码的信息序列任;}经过复接后,生成Turbo码序列匕},将编码序列调制后,即可发射进入信道传输。
递归系统卷积码(RSC)
纠错编码是将k位的输入信息码元编成n位的输出信道码元,在编码中,可以采用一定的算法,使输出码元中的k位与输入码元一致。
这样,输入码元与输出码元有明显的对应关系,这种码称为系统码幕系统码中一致的这k位数据称为信息位,输出码元其余的n-k位称为校验位,不满足这种关系的码称为非系统码。
同样的,卷积码可以分为系统卷积(SC,SystematicConvolutional)码与非系统卷积(NSC,Non-SystematicConvolutional)码两大类。
以下图2的(2,1,2)卷积码为例,设时刻k的输入码元为心,输出码元为X女和蜕,则输出码元与输入码元的关系为
K-l
Yk+d-2=》g2』_i(2-2)
式中,8u—G[的系数,g2j—G?
的系数。
非递推系统卷积码,约束长度胆3,但码生成多项式为Gl=4,G2=5o它的输出码元与输入码元的关系为
X*詁(2-3)
K-1
Yk=心+心-2=为gMk-i(2-4)
/-0
系统码的结构比非系统码的简单,模2加法器和连线的数量都比非系统码的要少。
RSC码是由一个NSC码编码器通过反馈,并使X&•等于输入信息比特£而构成的。
对RSC编码器,移位寄存器输入不再是数据比特纵,而是一个新的二元
变量匕。
如果X广必,输出人为式(2-4),其中如由代替务,而山•由下式
递推计算
K-1
5=仇+工皿―
/-I
(2-5)
式中
ri=gu
(2-6)
式(2-5)可写为
K-1
dk=0%
/-0
(2-7)
下面讨论为什么选择RSC编码器作为Turbo码的子编码器。
首先,RSC码具有系统码的优点。
因为系统码在从码字恢复出信息序列时无需求逆,这一特性使用户在译码时无需变换码字而直接对接收的码序列进行译码。
所以,RSC码对于NSC码而言译码简单、快速。
其次,还可以从Turbo码重量分布的角度给予解释。
通过观察递归卷积码与非递归卷积码的低重量信息序列所产生的码字的分布情况,可以发现二者之间有明显的不同,低重量的输入信息序列经过非递归卷积编码器之后,只能产生低重量的监督码元序列,低重量码字的增加将严重影响Turbo码的性能,而低重量的信息序列经过递归卷积编码之后,输出的监督码元的重量分布在一个很宽的范围之内,这是由其反馈特性所造成的。
因此,用非递归卷积码所构造的Turbo码的性能比较差,Turbo码需要递归卷积码实现。
最后,从差错控制编码的相关文献中也可知,在对比实验中,非系统卷积码(NSC)的BER性能在高信噪比时比约束长度相同的非递归系统码要好,而在低信噪比时情况却正好相反冏。
递归系统卷积(RSC)码综合了NSC码和系统码的特性,虽然它与NSC码具有相同的trellis结构和自由距离,但是在高码率(R>2/3)的情况下,对任何信噪比,它的性能均比等效的MSC码要好。
由于系统递归卷积码具有以上特点,并且能改善误码率,所以通常选择RSC码作为Turbo码的子编码器。
NSC的可由生成算子g|=[111]和g2=[101]来描述,也可将其表示为矩阵形式G=[g|,g2]・RSC可以表示为G=[l,g2/gJ。
NSC中的第一个支路输出被反馈到了输入端,从而引起了生成矩阵形式上的变化。
RSC的矩阵表达式中,1对应着输出的系统信息序列,g2对应着编码器的前馈输出,小对应着反馈到输入端的成分。
研究指出RSC的原始生成多项式的基础上加上适当的反馈,往往能获得好码,因为应用了反馈之后,可以获得最大长度的编码序列,根据分组码的知识,我们知道这给码序列增加了随机性,从而能获得更好的误比特率。
交织器
交织器其实是通信系统中进行数据处理而采用的一种技术,交织器从其本质上来说就是一种实现最大限度的改变信息结构而不改变信息内容的器件,也就是使在信道传输过程中所突发产生集中的错误最大限度的分散化,不规则化我们设X为交织器的输入,Y为交织器的输出,I就是交织器,所以r=/(x)o一般的应用交织器往往都是有延时的,我们有必要引入一个新的概念:
交织器的延时,它是指在时刻几输出的兀与此时此刻或以前的输入有关,且/(/),用式子来表示就是J=/-Z(/)>0,相应的§min=min(,-/(/))为交织器的最小延时。
0 交织器是Turbo码编码器主要的组成部分,也是Turbo码的重要特征之一。 线性码的纠错译码性能实质上是由码字的重量分布决定的,Turbo码也是线性码,所以其性能也是由码字重量分布决定的,由于交织器实际上决定TTurbo码的重量分布,所以,给定了卷积编码器后,Turbo码的性能主要是由交织器决定的。 在低S\R时,交织器的大小将直接影响着Turbo码的差错性能。 因为交织长度大时,两个子编码器接收的输入序列的相关性就可以很低,就越有利于译码迭代,从而使得迭代结果越准确。 在高SNR时,是Turbo码的低重量码字、最小汉明距离或距离谱决定着它可以达到的BER性能,所以交织器的设计显著的影响着低重量码字或距离谱,重量分布是反映纠错码性能的重要指标,所谓具有好的重量分布,就是要尽量减少低重量的码字的数量。 如果没有交织器的作用,Turbo码的两个子编码器的输入就相同。 如果其中一个经编码后产生低重量的码字,那么该序列在经过第二个字编码器输出后也会产生低重量的码字。 反之,加入交织器,由于交织器对输入序列进行了置换,使得数据在进入第二个编码器之前被打乱,也就改变了原来信息的排列方式,所以Turbo码的两个子编码器同时产生低重量输出的可能性就更小了,也就是说交织器减小了Turbo码产生低重量码字的概率,从而可以使Turbo码有比较好的纠错性能⑻。 在Turbo码中,交织器的这种使输入码元符号的顺序尽可能随机分布的作用,将使码元符号之间的相关性减弱,使进入各个子译码器的信息序列之间不相关。 这种去相关的结果使得各个子译码器可以彼此独立的工作。 彼此独立进行译码的结果是,软判决信息可以互相利用,判决结果也因此逐渐准确。 从而,使Turbo码译码器的性能远远好于其它类型的译码器,包括其他类型的级联译码器。 但是,由于交织器的存在,使得Turbo码存在一定的时延,数据帧越长,延时越大。 而且交织器的长度会对Turbo码的译码性能有很大的影响,交织深度越大,译码的误码率越低,传输质量越高。 所以,对于那些允许有较大时延的业务,Turbo码的作用就可以得到充分的发挥。 但是,对于那些不允许有较大时延的业务,Turbo码的应用却受到了限制。 仿真用来如下三个寄存器的递归卷积编码器,生成多项式表示为讥1011,1101] 图3 第3章Turbo码译码 Turbo码的译码结构 通常情况下,Turbo码编码器使用两个分量RSC,编码输出包含了信息序列(在译码端常常被称为系统信息或系统比特)和两个分量RSC编码器输出的校验信息序列。 对接收到的观测序列进行译码的时候,根据编码结果,把译码器分解为两个独立的译码器DEC1和DEC2,分别跟两个RSC分量编码器相对应。 为了得到对原始信息的最优估计,两个译码器分别对系统信息和两个校验序列进行译码时,应该相互利用校验序列所含的信息,采用迭代译码,通过分量译码器之问软信息的交换来提高译码性能,这也是Turbo码获得优异性能的根本原因之一. 硬判决 图4Turbo码的译码结构以码率为1/3的Turbo码为例,编码输岀信号为 Xk=G;,球) (3-1) 对于BPSK调制,输出信号与编码码字 ck=(c;,cf) (3-2) 之间满足关系 X,=V^;(2C,-1) (3-3) 假定接收信号为 yk=(%,*) (3-4) 式中 y;=4+4 (3-5) (3-6) L•和条是服从均值为o. 方差为N°/2的独立同分布高斯随机变量。 在接收端,接收采样经过匹配滤波之后得到的接收序列 R=(尺9心9・・・9R") (3-7) 经过串并转换后得到如下三序列: 系统接收信息序列 (3-8) 用于DEC1的接收校验序列 丫「卸,财,…岀) (3-9) 用于DEC2的接收校验序列 厂P=(>〃,/",•••,yF)(3-10) 若其中某些校验比特在编码过程中通过删余矩阵被删除,则在接收校验序列的相应位置以“0”填充。 上述3个接收序列厂、0P和厂P,经过信道置信度厶加权后作为系统信息序列A(cP/),信息序列A(c1^/)和八(c";/)送入译码器。 对于噪声服从分布n(0,No/2)的AWGN信道来说,信道置信度定义为 4=4^/N0(3-11) 对于第k个被译比特,Turbo译码器中每个分量译码器都包括系统信息亠0;/)、校验信息和先验信息心仏)。 其中先验信息A加(心)由另一个分量译码器生成的外部信息八-,(以)经过解交织后的对数似然比值。 译码输出为对数似然比A沃(”;O),其中i=l,2。 在迭代过程中,分量译码器1的输出aM“;o)可表示为系统信息亠(疋;/)、先验信息A帀(“J和外部信息A*J之和的形式 Au(“;0)=A,(c5仏)+A上仏) (3-12) 式中 A|“(%))=人2©(你) (3-13) /依)为交织映射函数。 在第一次迭代时 八2血)=。 (3-14) 从而 入血)=0 (3-15) 由于分量译码器1生成的外部信息A”仏)与先验信息A帀仏)和系统信息无关,故可以在交织后作为分量译码器2的先验信息输入,从而提高译码的准确性。 同样,对于分量译码器2,其外部信息为输出对数似然比 A2a(": O)减去系统信息A心)(c';/)(经过交织映射)和先验信息A,(心)的结果,即 (3-16) 人2血)=八2&(";。 )-A/(灯(H;/)-A2fl(妆) 式中 A2a("J=A】,(你灯)(3T7) 外部信息A〃(你)解交织后反馈为分量译码器1的先验输入,完成一轮迭代译码。 随着迭代次数的增加,两个分量译码器得到的外部信息值对译码性能提髙的作用越来越小,在达到一定的迭代次数后,译码性能不再提高。 这时根据分量译码器2的输出对数似然比经过解交织后再进行硬判决即得到译码输出。 译码中软信息的确定 首先我们来讨论硬判决和软判决的概念和区别。 硬判决和软判决是指译码的时候对接收到的比特进行量化的两种形式。 硬判决译码中,从信道接收到一个比特,即对其进行量化,判断其观测值是0或者1,然后进入译码器进行译码计算。 软判决译码中,接收到一个比特的信息,并不立即对其进行量化而得到观测值,而是根据多个比特依照它们之间的相关性而进行判决。 理想的软判决译码中,量化是基于无限比特的,而且从信道接收到的序列值立即进入信道译码器参与译码计算。 假设信息序列经过信道编码得到编码序列,采用BPSK调制方式,如果码元为0,则调制成-1发送,若码元为1,调制成+1。 调制后的-1/+1序列在信道中传输,由于噪声的影响,序列的值会发生变化。 如果我们在接收端接收到3V和两个脉冲电压,硬判决方式会将这两个脉冲都判决为二进制信息1,尽管第二个比特看起来离二进制1的判断标准还差很远。 硬判决不可避免地会产生一些不恰当的判决,一旦作出判决,结果是不能更改和修正的。 软判决则避免了这种情况,从信道接收到的序列不经过判决,直接进入译码器,由译码器分离岀信息的先验概率参与译码,通过多个码元之间的相关性,计算得到一个软输出,再根据这个软输出作出最后的判决,得二进制译码比特。 Turbo码译码时使用的是SISO(SoftInSoftOut)译码器,即译码器输入输出都为软信息,对软信息这一概念有两种解释: ⑴假设输出比特为1的概率是/7 (1)=0.7,而为0的概率是p(0)=0.3这些概率信息即称为软信息。 由于p(l)>"(0),故可判定此输出比特为1。 (2)软信息的另一种定义为信道输出的非量化模拟值。 假设在0,1之间,若信道输出值为,可以判定此输出比特为1的可能性要大于为0的可能性,在实际应用中为硬件实现提供了方便,通常将信道输出的模拟值进行一定级数(通常大于2)的量化。 例如信道输出的模拟量经过A/D变换的量化输出值即代表了信道输出为1和为0的概率,用3个比特来代表0-7级量化电平,如果输出实数值靠近第7级量化电平,即可判定此输出信息为1的概率很高,而为0的概率却很低,反之亦然。 上边两种解释的实质是一样的,都利用了信道提供的传输可靠性信息,即信息的先验槪率。 利用这种软信息进行译码判决的技术即称为软判决技术,软信息能够为译码器提供由信道产生的附加可靠性信息。 以二进制信息传输为例,如果在解调器输出端即对解调信息进行判决为0或为1,并将此判决送给译码器,即采用硬判决译码方式。 硬判决方式没有充分利用信道提供的可靠性信息,而是将其完全忽略,故其译码性能远不如软判决译码。 译码输出端也存在软信息的问题,编码端的级联结构使得译码器包含两个或者多个成员译码器,各成员译码器之间通过译码信息的传递来进行级联的译码,如果成员译码器能够输出软信息,就可以提供给另一个成员译码器作为输入软信息,通过软信息的相互传递而使译码性能提高。 Turbo码采用软输入软输出的译码结构。 图5是软输入软输出译码器的示意图。 从信道接收到的观测序列经过分解得到系统信息和校验信息,与先验信息(由另一个成员译码器提供)一起进入成员译码器参与译码,得到信息比特的对数似然比LLR,再据此作最后的判决得到译码序列。 图5软输入软输出译码示意图 Turbo码的译码算法 Turbo码的一个重要特点就是在译码时采用了迭代译码的思想,迭代译 码的复杂性仅是随着信息序列的大小增加而线性增长。 与译码复杂性随码字长度增加呈指数形式增长的最优MID相比,迭代译码具有更强的可实现性。 已有研究表明,基于最优译码算法的迭代译码与MID相比,是一种次最优译码。 但采用迭代方式的Turbo码译码可以达到接近Shannon理论极限的性能。 实际上,这类并行级联码之所以成为Turbo码,就是因为在译码器中存在反馈,类似于涡轮机的工作原理。 在迭代进行过程中,通过分量译码器之间互相交换软比特信息来提髙译码性能oForney等人已经证明了最优的软输出译码器应该是后验概率(APP,APosterioriProbab订ity)译码器,它是以接收信号为条件的某个特定比特传输概率。 Turbo码的译码算法主要分为基于最大后验概率(MAP)的算法和基于软输出Viterbi译码算法两大类。 MAP系列包括MAP算法、对数域Log-MAP算法以及其简化算法Max-Log-MAP算法。 Viterbi系列算法包括Viterbi算法、改进的SOVA算法、采用滑窗的SOVA算法等。 Viterbi系列算法是针对序列进行译码的算法,运算量较小,采用滑窗后还可以减小时延,易于工程实现。 MAP类算法是针对比特进行译码的算法,运算量较大,但是性能比Viterbi算法好。 Log-MAP算法 Log-MAP算法是MAP算法的一种转换形式,实现要比MAP算法简单。 为推导Log-MAP算法,需要把MAP算法中的变量都转换为对数的形式,从而把乘法运算都转换为加法运算,同时译码器的输入输出相应地修正为LLR形式,再把得到的算法进行必要的修改就得到了Log-MAP算法。 下面推导Log-MAP算法。 (3-18) (3-19) (3-20) 在Log-MAP算法中,M&(e)、比($)和/($)与MAP算法中的儿@)、匕($)和几(s)相对应,它们之间满足对数关系 £($)=ln讥) 伙(s)=ln仅(s) 首先分析对数路径度量的计算。 在MAP算法的推导中己知,儿(e) 表达式中/7(X,|e)根据心是否与边e有关而取值为1或0;概率桩何)的取值由信息比特的先验信息A,你)来决定。 对于噪声方差为M)/2的AWGN信道忽略常数项,有 SP(r,|X,)=宇+2畔=容卜;(2c;一1)+艸(2cf-1)](3-21) NnNaN(、 对于AWGN信道,有 (3-22) ./4=v^|y: )_./4|<=K)n〃b: —岡y;)「\(曲一叵) 类似地,有 得到对数域上的路径度量计算式 M()=In九@)=In卩(吐(£”;(£))+Inp(岭区)(3-24) 注意,式(3-24)仅在$f(e)和s;(e)之间存在传递时成立。 尽管第二个分量码的系统比特序列在编码过程中没有传输,但它实际上是第一个分量码的系统比特序列经过交织后的比特序列。 因为译码器的系统输入是通过对接收信号的系统比特加权得到的,故可以通过对第一个分量码的A,Xc5;/)进行交织来得到第二个分量码的A2,(^;/);这样,第一个分量码和第二个分量码对于信息比特都有其相应的A,(^;/)和亠(严;/)。 从而在计算前向路径量度人(s)和后向路径量度乞(s)时两个分量译码器可以釆用相同的计算公式。 由于MAP算法中乙(s)和几(s)的递推运算中存在指数和计算(由办(。 )在AWGN信道上的计算引入),所以在Log-MAP算法中引入max*()操作,其定义为 (3-25) max(/(^))=In工』e' 通常可以对上述max・()操作进行变形,对于两个变量的情况(x和y),有max*(x,y)=ln(ex+ev)=max(x,y)+In(1+e~^~y')=max(x,y)+fc(|x-y|) 假定编码器的起始状态和结束状态分别为S()和,则对应于Log-MAP O.S=So -S,其他 Bn(s)=v 算法,前、后向路径度量的递归计算初值分别为 (3-26) (3-27) 在实际数值计算时,可以用一个较大的值来代替00。 如果编码寄存器在编码结束时状态未知,则初值可以设为 Bn(s)=0或其它常数(3-28) 根据上述推导,可以得到信息比特完整的对数似然比输出信息。 代入M/e)的表达式,并提取通项,得到 A,(m;O)=A +腓iA」: @))+轨(詁;加<-1)+乞佻))(3-29) -删爲心($;@))+£入(讯;丿)(2來一1)+瓦(彳(e)) 由式(3-29)可以看出,输出对数似然比信息\(“;O)是先验信息A」你)、系统信息Ak(csj)与外部信息(剩余部分)之和。 由于两个分量译码器使用相同的系统信息八」疋;/),因此需要与处理先验信息A。 (你)一样,将其从入(”;0)中分离出来,仅以外部信息作为先验信息用于下一轮译码。 类似地,也可以得到码字符号的译码输出概率对数似然比。 将Log-MAP算法中的max")简化为通常的最大值运算,即为MAX-Log-MAP算法。 软输出Viterbi算法SOVA SOVA算法也称为软输出的维特比算法(Soft-OutputViterbiAlgorithms),它是在Viterbi算法的基础上改进而来的。 由于在Turbo码出现之前,Viterbi算法已经广泛应用于工程之中,因此和其他几种算法相比,SOYA算法更适用应用于工程中。 SOVA算法是Hagenauer在1989年出来的。 他将Viterbi算法进行了改进,改进后的算法不仅能得到最大似然路径,而且能计算出每个信息比特的后验概率,这样就使Viterbi算法可以级联使用[叫 SOVA算法是对传统的Viterbi算法做了两点改进: 首先,在计算路径的度量时,考虑了先验信息,并且让先验信息在两个分量译码器之间传递;其次,算法可以以后验概率的形式为每一个信息比特提供软输出。 Viterbi算法的基础是寻找能够使后验概率最大的状态序列,即: 呛;|兀 这里S;代表在幸存路径上的状态序列,这个状态序列在&时刻的状态为S, 由于yj 大,只要让P(S^yj 这个度量可以通过循环递推的方式计算,即k时刻的度量P(S^y.
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- TURBO 译码 仿真