Turbo编译码的Matlab实现(4)

2019-04-09 12:14

Turbo编译码的Matlab实现

图4-2 [15,17]递归卷积码编码结构图

输入编码器的信息序列为U,它一方面直接输入到C1进行编码,生成系?(u,u,...u)12K统序列Xs和校验序列X1p,另一方面,U经过交织器后,输入到C2中进行编码,产生另一个校验序列X2p,这三个序列经复用单元复用后完成编码,得到发送序列Y。复用单元的作用是调整编码速率,并将并行数据变换为串行数据流。通常系统序列全部传送,校验序

?10?列按照收缩矩阵收缩。图示Turbo码编码器可以采用收缩矩阵P???将编码速率调01??整到1/2,P矩阵的每行对应一个子编码器,第一列和第二列分别对应子编码器输出的第偶数个码元和第奇数个码元。1表示该码元需要传送,0表示不需传送。

如果称对原始信息序列编码为水平方向的编码C?,称对经过交织器后的信息序列编码为垂直方向的编码C?。在每个方向上,K个信息比特经过编码器输出为

X?(x1,...xk,...,xK)

TT?(x,x,...x)?(u,p,...p)其中x,x?C?或x?C? kk,1k,2k,nkk,1k,n?1 (4-3)

uk表示信息比特,pk,v表示与该信息比特对应的校验比特,校验比特数取决于系统卷积码的生成多项式。显然

xk,v?pk,v?1,1?k?K1?K2,2?v?n (4-4)

传输前经过收缩,有一部分校验比特将不予传送,在接收端未被传送的比特位用零填充。

从上面的介绍我们可以看到,Turbo码编码部分级联结构和交织器的共同作用,使

Turbo编译码的Matlab实现

Turbo编码接近随机编码,从而保证了Turbo码必定是一种好码。

2编码算法

1、首先谈一下对生成多项式g的理解。

图4-3 递归系统码

对照递归系统卷积码的一般的编码结构图4-3。如前所述g?[g1i,g2i],其中。g1i是矩阵g的第一行,可以看成是对应的图5i?[1,m+1](其中m是寄存器的数目)

中的反馈环支路;g2i是矩阵g的第二行,可以看成对应的是输出Yk的支路。g11和g21分别对应dk和a两点的信息。无论g1i还是g2i中的后m个信息位的每一位都分别对应一个寄存器。它们可以看成是标志着一种状态。第一行g1i中的后m位表示产生反馈信息所用到的寄存器,比如说第j+1位,它对应于第j个寄存器,该位为1表示用到了该寄存器内的信息,即该寄存器有反馈到输出ak信息的那个加法器,为零则表示没有反馈回去。同理,g2i中的后m位表示产生Yk信息所用到的寄存器。 2、编码算法

(1) 对于encoder1:

d=input ; L_info=length(d) ; L_total=L_info + m ; goto (3) ; Y(1,:)=X ; Y (2,:) =Y ; (2) 对于encoder2:

d=Y(1,:)(alpha) ;%alpha为伪随机交织图样

%(是L_total列行向量)

Turbo编译码的Matlab实现

L_total=length(d) ; L_info=L_total ; goto (3) ; Y (3,:) =Y ; Goto (4)。

(3) ① state为一m列行向量。初始化为零

② if k?L_info,

Xk=dk;

elseif L_info

dk=g1i[2:m+1]? state ; Xk=dk; endif

③ ak=g1i?[dk state] ;

Yk=g2i?[ak state] ;

state=[ak state(1:m-1)] ; k=k+1 ;

if k ?L_total goto② ;

(4) 令Y=2Y-1 (把0和1信号调制成-1和1信号 );然后进行并/串变换:如果没有删余,则对矩阵Y按列的顺序取,取完第一列,取第二列,直到最后一列(第L_total列);如果有删余,则对于Y的第一行系统码,当取第奇数个系统码时,取对应列第二行的校验码,当取第偶数个系统码时,取对应列第三行的校验码。

Turbo编译码的Matlab实现

5 Turbo码译码

译码算法的研究是Turbo码研究的一个主要方面,因为它决定整个系统能否充分发挥Turbo码的固有性能。选择算法的基本原则是在一定的复杂性和时延要求下保持一定的性能,并且利于硬件实现。选择合适的译码算法,对于使Turbo码能在实用系统中充分发挥其性能优势是非常重要的。

迭代(iterative)译码思想是Turbo码的一大特色。它采用两个子译码器,通过交换称为边信息(外部信息)的辅助信息相互支持,从而提高译码性能。边信息的交换在迭代的过程中实现,前一次迭代产生的边信息经交换后将作为下一次迭代的先验信息。

5.1 译码器结构

接收端将串行的数据流转换成适合译码的并行数据流,如果经过了删余(puncture),则对未传送的校验比特以零填充。译码器由DEC1和DEC2两个子译码器组成,分别对应编码器C1和C2。

图5-1 Turbo码译码器结构

图5-1所示的是Turbo码译码器结构,其输入分别是ys,y1p和ys,y2p。每个子译码器将从本身的译码过程中得到的外部信息(Extrinsic Information)提供给另一个子译码器,作为其译码的辅助信息,从而提高整体译码性能。图示译码器只是一种概念上的结构,实际实现采用迭代译码方式如图5-2所示,这也是Turbo码的重要特色。在执行软输入/软输出的迭代译码过程中,子译码器之间相互配合,从而达到一种全局译码的效果,充分挖掘了码的固有纠错性能。

Turbo码的译码策略,在于使用简单的译码单元的迭代来替代复杂的一次性译码,相对于长约束长度的卷积码来说,Turbo码每个译码单元的状态数要少得多,因而译码复杂性减少,其缺点是迭代过程带来的不可避免的时延,因为从时间的角度看,它相当于n级(n等于迭代次数)具有相同结构得译码单元相连,如图5-2。

Turbo编译码的Matlab实现

为了产生和利用边信息(外部信息),子译码单元必须具有软输入/软输出的能力。适合于这种译码思想的算法以Bahl的算法最具有代表性,应用也最广。这是一种对具有有限状态马尔可夫特性的码及离散无记忆特性的信道提供逐符号或逐比特似然值的最优算法。

图5-2 Turbo码迭代译码形式

这种算法的缺点是复杂性高,涉及对数及乘法等运算,不利于硬件实现。在维特比译码算法上改进的软输出维特比算法,简称SOVA译码,复杂性较低,比较利于硬件实现,但是相应地性能也有所下降。根据要达到同样的误码率,SOVA算法所需要的信噪比要比MAP算法大0.8dB左右。

5.2 Turbo码迭代译码基本原理

为了下文介绍的方便,首先介绍一下迭代译码中常用的一些概念,然后介绍迭代译码的基本原理。 1、似然函数

设U是元素为{+1,-1}的GF(2)即二元伽罗华域的元素,在模2加下,+1表示零元。随机变量U的对数似然函数定义为

LU(u)?logPU(u??1) (5-1)

P(u??1)U其中PU(u)表示随机变量U取值为u的概率。似然函数LU(u)称为随机变量U的软值。

LU(u)的符号代表硬判决值,LU(u)的绝对值表示该判决的可靠性。没有特殊说明,对数取自然对数。


Turbo编译码的Matlab实现(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:六安市万佛路施工组织设计

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: