Turbo译码器

2024-08-05

Turbo译码器(精选七篇)

Turbo译码器 篇1

跳频系统具有良好的抗干扰特性,因此广泛应用于军事通信中。Turbo码具有接近Shannon限的性能[1,2,3,4],但实验显示Turbo码的误比特率曲线或帧错率曲线存在“错误平层”现象。为了降低错误平层,人们根据输出位的错误特性给出了几种方法。文献[5]提出了跳频系统中Turbo码的译码算法,但算法较为复杂,难以高效地在工程中实现;罗常青等给出了跳频系统中Turbo码译码器的FPGA实现方案,具有一定的抗干扰效果[6];文献[7]介绍了基本的Turbo码译码方法;文献[8,9]优化了基本的译码方法,使得译码算法得到了简化,但抗干扰性能有损失。本文针对以上不足,设计了一种Turbo码的编译码算法,在保证抗干扰性能的前提下,译码过程简单,方便工程应用。

1 Turbo码编译码原理

1.1 Turbo码编码原理

图1为Turbo编码器结构。信息位uk直接送入分量编码器1编码,产生校验位xkp1,而经过交织后的信息位uk1进入分量编码器2产生校验位xkp2,由于Turbo码是系统码,所以信息位直接输出产生xks,即xks等于uk。编码器每输入一个信息位,可产生三位输出,这三位输出复合在一起作为k时刻的信道码字。

1.2 Turbo码译码原理

Turbo码译码器的基本结构如图2所示。它由两个分量译码器DEC1和DEC2串行级联组成,交织器与编码器中所使用的交织器相同,解交织器的作用与交织器的作用相反。每个译码器处理接收到的N长的输入序列,这个长度也是交织器大小。第一个译码器利用接收到的与第一个编码器有关的信道符号进行译码,然后把产生的N长的软信息送给第二个译码器。第二个译码器使用第一个译码器送来的信息和从信道接收到的与第二个编码器有关的信道符号进行译码,因此,它比第一个译码器有更多关于消息的信息。第二个译码器产生的外部信息再送给第一个译码器作为先验信息重新对接收到的信道符号进行译码,同样由于有了更多的关于消息的信息,可以使译码过程更精确。持续这样的过程就完成了Turbo码的迭代译码。

2 Turbo编码的建模

Turbo码编码器最常用的结构如图3所示。

编码器采用两个分量编码器的并行级联方式。交织器为伪随机奇偶交织器。分量编码器1和分量编码器2采用同样的结构。删余模块交叉选择编码器1和编码器2输出的校验比特。

在设计中,Turbo码以每跳为对象进行编译码操作,预设Turbo码码长为一跳的数据长度,为800个符号,交织深度为800个符号。每个Turbo码符号为3 b。因此,可选编码效率为1/3,2/3,设计时选取2/3的这种码率较高的方案。所以Turbo编码器的输入为2 b,输出为3 b。

Turbo码编码的具体设计分为以下三个模块进行介绍。

2.1 交织器的设计

伪随机交织是Turbo码的最佳性能交织器,交织映射没有规律,近乎随机。选择伪随机奇偶交织是为了在不降低性能的前提下,减弱编码器1与编码器2之间的相关性,简化编码器的结构,增加编码增益,并且奇数位置的符号映射后还在奇数位置,偶数位置的符号映射后还在偶数位置。

2.2 分量编码器

编码器1和编码器2采用相同结构,使用约束长度为3 b、码率为2/3的递归系统卷积码,其功能框图如图4所示。

图4中,编码器的输出Code_bit1和Code_bit2为信息比特,Code_bit0为校验比特。基本特性从图5分量编码器的状态转移图中得到体现。

2.3 删余操作

删余本质就是一个二选一的选择器,在奇数时刻,选择编码器1的输出,在偶数时刻,选择编码器2的输出。

3 Turbo译码器的设计

Turbo码译码的基本思想是将接收到的复杂长码译码成若干步,并通过迭代完成译码。Turbo译码器的三种算法分别为MAP算法、LOG-MAP算法和MAX-LOG-MAP算法。从性能上说,MAP算法最好,LOG-MAP次之,MAX-LOG-MAP最差。从计算复杂度上讲,MAX-LOG-MAP最简单,LOG-MAP次之,MAP算法最复杂。综合考虑,实现时选择MAX-LOG-MAP算法[10]。

整个译码器采用并行算法,其功能框图如图6所示。

3.1 解调软判决输出格式

定义解调输出数据格式如图7所示。

解调器的输出以跳为单位,每跳输出800(每跳的符号数)组数据,每组数据由8个7 b量化的有符号数组成,分别描述当前符号是0,1,2,…,7的对数概率,如:

demout=[-29;-33;-26;-17;-9;-4;0;-4;]

上式表示第1个符号为0的概率:M*e-29;为1的概率:M*e-33;…;为7的概率:M*e-4;…。其中M为常数,在解码运算中,关心的是概率值的相对大小,因此,常数M在解码运算中可以忽略。

3.2 对数路径度量值γ的计算

根据图5分量编码器状态转移图得知,从N时刻到N+1时刻,总共存在32条转移路径,每条路径都有相应的路径度量。

A译码器计算路径度量值γ时,编码时有删余操作,编码器输出的码字的奇数位置是分量编码器A的输出,偶数位置是分量编码器B的输出,因此,A译码器在计算γ时,只能利用奇数时刻的解调信息;相应地,B译码器只能利用偶数时刻的解调信息。A译码器在奇数时刻对γ的计算公式是GAMA=apr+demout,在偶数时刻对γ的计算公式是GAMA=apr。apr为起始状态对应的先验信息,apr值在首次迭代时初始化为0,在后续的迭代运算中,apr来自B译码器的输出。B译码器也是一样的,只不过它在偶数时刻采用A译码器奇数时刻的算法,在奇数时刻采用A译码器偶数时刻的算法。

3.3 前向对数概率值α的计算

如图8为前向态转移示意图,在N时刻,每一个状态都有一个对应的α值,在N+1时刻,每一个状态都有四条到达路径,每条路径都有一个对应的γ值,把每条路径的出发状态对应的α值和路径对应的γ值相加,得到四个值,选出其中最大的一个,就是N时刻各个状态对应的α值。其中A译码器和B译码器的算法没有任何区别。

3.4 后向对数概率值β的计算

图9为后向状态转移示意图,在N时刻,每一个状态都有一个对应的β值,在N-1时刻,每一个状态都有四条出发路径,每条路径都有一个对应的γ值,把每条路径的出发状态对应的β值和路径对应的γ值相加,得到四个值,选出其中最大的一个,就是N-1时刻各个状态对应的β值。

3.5 对数似然概率LLR的计算

N时刻,编码器存在8种可能的状态。输入确定信息符号C后,存在8种可能的路径,到达N+1时刻的8种状态。LLR的计算公式为:

LLRC=ΜAX(αi+γi+βi)

式中:i=0,1,2,…,7;LLRC表示从NN+1时刻,信息符号为C的概率,C=0,1,2,3;αiN时刻路径出发状态对应的前向对数概率;βiN+1时刻路径到达状态对应的后向对数概率。

3.6 先验信息APR的计算

从LLR中减去在γ计算中使用的APR值,就是本次迭代的APR值。A译码器输出的APR值经过交织后,送给B译码器,作为B译码器下次迭代的输入信息;B译码器输出的APR值经过解交织后,送给A译码器,作为A译码器下次迭代的输入信息。

3.7 迭代次数的确定和判决输出

迭代停止准则分为硬判决准则和软判决准则两种。不论采用哪种准则,都会造成迭代次数动态变化,在设计中,硬件资源要按照可能的最高迭代次数来配置。

此外,译码器的输出选择硬判决输出,即输出A译码器的LLR值。

图10是从第1次迭代到第6次迭代译码器A的LLR输出结果图。

从图10可以看出,随着迭代次数的增加,输出结果的变化越来越小,第6次迭代和5次迭代的结果差别已经很小,6次迭代后,译码器都能达到收敛状态。因此将迭代次数定为6次。

3.8 Turbo译码器仿真结果

图11是某次迭代后,译码器A的对数似然概率LLR的输出结果。

图中,每一小格4个点,表示一个符号的4种可能取值(0,1,2,3)的对数概率,例如:第一格的信息表示该符号对应0的对数概率为0, 对应1的对数概率为-28,对应2的对数概率为-33,对应3的对数概率为-34。可以看出,该符号为0的概率最大,应判决为0。

4 结 语

本文通过对Turbo编译码原理的深入研究,设计了一种针对特定跳频系统的Turbo编译码方案。仿真表明,该方案可行性好,计算量适中,可作为一种工程应用的硬件实现方案。

参考文献

[1]COVER T,THOMAS J.Elements of information theory[M].New York:Wiley Interscience,1991.

[2]BERROU C,GLAVIEUX A,THITIMASJSHIMA P.Near Shannon limit error-correcting coding and decoding:turbo-codes(1)[C]//Proc IEEE Int.Conf.Comm..Switzerland:Geneva:IEEE,1993:1064-1070.

[3]BERROU C.Near optimum error correcting coding and de-coding-turbo-codes[J].IEEE Transactions on Communica-tions,1996,44(10):1261-1271.

[4]王新梅,肖国镇.纠错码[M].西安:西安电子科技大学出版社,2001.

[5]KANG J H,STARK W E.Turbo codes for non-coherentFH-SS with partial band interference[J].IEEE Trans.onCommunications,1998,46(11):1451-1458.

[6]罗常青,安建平,沈业兵.跳频系统中Turbo码译码器的FPGA实现[J].北京理工大学学报,2007,27(1):63-67.

[7]COLAVOLPE G,GERRARI G,RAHELI R.Reduced-state BCJR-type algorithms[J].IEEE J.Selected Areas inCommun.,2001,19(5):847-858.

[8]FRANZ V,ANDERSON J B.Concatenated decoding with areduced search BCJR algorithm[J].IEEE J.Selected Areasin Commun.,1998,16(2):186-195.

[9]许成谦,林雪红,陈嘉兴.Turbo码Log-MAP译码算法的一种改进算法[J].燕山大学学报,2002,26(4):286-288.

Turbo译码器 篇2

在通信领域,信息的传输不可避免地要受到噪声或干扰的影响,从而引起传输差错,因此保证信息传输的可靠性是极其重要的。随着通信技术的发展,对信息传输的准确性要求也越来越高。为了降低误码率,保证可靠传输,相继提出了各种信道纠错方法。到目前为止,Turbo码是信道编码方案中最好的。Turbo码又称为并行级联卷积码(PCCC),是一种前向差错控制(FEC)方式。

本文提出了一种基于SOVA算法的Turbo译码器,将其作为一种数据协调方法应用到数据通信中[1],并通过Matlab仿真,验证所设计的Turbo译码器功能的正确性,便于Turbo译码器的FPGA实现。

2 Turbo译码器在数据协调中的应用

2.1 整体方案

为了减少信道传输引起的误码,提高信息传输的可靠性,本文提出了一种将Turbo译码器应用到数据协调的方案,其整体框图如图1所示。图中,Alice方和Bob方都是一台PC机,FPGA板位于Bob方,FPGA板主要完成Turbo译码器的功能。FPGA板与Bob方的通信属于本地通信,可借助一个通信口完成,而它与Alice方的通信属于远程通信,需通过另一个通信口完成。

首先,Bob方将系统信息传送到FPGA板上;其次,Alice方有一个Turbo编码器,它将Turbo编码器产生的校验信息也传送到FPGA板上;当FPGA板上得到了Turbo译码所需的系统信息和校验信息后,进行译码,并将Turbo译码器的译码输出传送给Bob方,完成数据的协调。在数据协调过程中,Bob方传送到FPGA板上的系统信息是一次性传送的,而Alice方传送到FPGA板上的校验信息以及FPGA板传送给Bob方的译码输出是不断传送的。

2.2 SOVA算法的基本原理

SOVA算法是软输出的Viterbi算法(Soft Output Viterbi Algorithm)。Viterbi算法是一种基于栅格图(trellis)的最佳概率译码算法,SOVA是对Viterbi算法的改进,使其适合于Turbo 码的迭代译码,可提供更高的译码性能[2]。对Viterbi算法所作的修改主要有两个方面:

(1) 在栅格图中选择最大似然路径时,计算路径度量要把先验信息考虑进去;

(2) 不仅要译出每个比特,而且要给出每个比特译码的可靠度(以对数似然比值LLR的形式给出),从中获取先验信息作为软输出,为下次迭代所用。

2.3 Turbo译码器的设计

本数据协调方案中所采用的Turbo译码器结构框图如图2所示,它由SOVA分量译码器1和SOVA分量译码器2串行级联而成[3,4,5,6,7]。

由于本方案中系统信息和校验信息是通过不同的通信口传送到FPGA板上的,所以在译码端不需要先经过分路器将译码器接收到的序列分成三个部分:信息序列y1k、校验序列y2k和校验序列y3k

第一次迭代时,先验信息用“0”代替。首先,先验信息、信息序列y1k和校验序列y2k经过SOVA分量译码器1,产生似然值L1k和外信息Le1k;其次,将SOVA分量译码器1产生的外信息Le1k经加权和交织后作为SOVA分量译码器2的先验信息,同时信息序列y1k经过交织后作为SOVA分量译码器2的信息序列,则先验信息、信息序列和校验序列y3k经过SOVA分量译码器2,产生似然值L2k和外信息Le2k。将SOVA分量译码器2产生的外信息Le2k经加权和解交织后反馈作为SOVA分量译码器1的先验信息,完成一次迭代译码。随着迭代次数的增加,两个分量译码器得到的外信息值对译码性能提高的作用越来越小,在达到一定迭代次数后,译码性能不再提高,这时将似然值L2k解交织后进行硬判决,若解交织后的似然值L2k大于或等于0,则判决为1;否则,判决为0。这样就可得到信息序列y1k的每一比特的最佳估值序列,作为译码输出。当迭代次数取6次以上时,SOVA算法的性能提高很小[8],故本设计中的迭代次数取6次。

从图2可以看出,整个Turbo译码器包含以下几个功能模块:

(1) SOVA分量译码器

Turbo译码器中的两个分量译码器都采用传统的SOVA算法实现。

(2) 交织/解交织器

交织器的主要作用是用于减小校验比特之间的相关性,进而在迭代译码过程中降低误比特率。解交织是交织的逆过程,故可将交织器与解交织器用一个设备实现[9],只要用一个变量如way表示是交织还是解交织即可。本设计中,交织器选用分组交织器(与编码器中的交织器一致),交织映射函数如下式,其中N为交织长度(N=mn)。

j=Ι(i)=[(i-1)modn]m+[(i-1)/n]+1(i=1,2,,Ν)(1)

(3) 权重模块

本设计考虑Turbo编码器有对校验位进行删余的情况。在译码器中,被删去的校验位用“0”代替。为了弥补因删余而引起的译码性能变差,在译码端需要对外信息值进行加权。这里需要注意的是,权重模块仅仅是为补偿被删去的校验位而引入的,所以要求编码器中的删余矩阵与译码器中的权重矩阵是对应的。假设编码器中所用的删余矩阵P如下:

Ρ=[111111111010101001010101](2)

删余矩阵P的第一行是对输入信息序列x1k进行的删余,第二行是对分量编码器1输出的校验序列x2k进行的删余,第三行是对分量编码器2输出的校验序列x3k进行的删余。从所用的删余矩阵P可以看出,删余其实是分别删除x2k中位于偶数位置的校验比特和x3k中位于奇数位置的校验比特。故译码器中的权重矩阵W相应地取为:

W=[111111111w1w1w1ww1w1w1w1](3)

仿真结果表明,当W=0.5时可得到最低的BER[4],故本设计中取W=0.5。

(4) 硬判决器

迭代完成后,若SOVA分量译码器2产生的似然值L2k经解交织后的值大于或等于零,则判决输出1;反之,判决输出0。

3 Turbo译码器的Matlab仿真

为了验证所设计的Turbo译码器能完成译码功能,利用Matlab进行仿真时,需仿真出从输入序列经Turbo编码器编码,经过信道传输,再经Turbo译码器译码的整个数据传输过程,故整个仿真模型包括Turbo编码器、AGWN信道和Turbo译码器三个部分,如图3所示。如果经过仿真,能得到译码器的输出序列与编码器的输入序列完全一致,说明方案是正确的。

这里所用的Turbo编码器的生成矩阵g=[1 1 1 ;1 0 1],约束长度为3,码率为1/2。编码器的输入序列en_in是随机产生的一组0、1数据。译码帧长度为400信息位。Turbo译码器采用上面所设计的结构,通过编写Matlab仿真程序,得到了编码器输入序列与译码器输出序列的对比图,如图4所示。从图中可以看出,译码器的输出序列与编码器输入序列是完全一致的。重复上面的仿真过程,每次选取不同长度的随机序列作为输入序列,均可得到与输入序列一致的输出序列,说明所设计的Turbo译码器的译码功能是正确的。

利用Matlab进行仿真,一方面可以验证算法的正确性,另一方面可以为后面验证电路功能时提供各个模块的验证数据。

4 结 语

本文设计了一种基于SOVA算法的Turbo译码器,并将所设计的Turbo译码器作为数据协调方法用于信道纠错,提出了一种Turbo译码器在数据协调中应用的方案。为了便于Turbo译码器的FPGA实现,本文还将所设计的Turbo译码器用Matlab进行仿真。通过仿真,验证了所设计的Turbo译码器功能的正确性。

参考文献

[1]Ki m-Chi Nguyen,Gilles Van Assche,Nicolas J Cerf.Side-In-formation Coding with Turbo Codes and Its Application toQuantum Key Distribution.International Symposium on In-formation Theory and its Applications,2004,10:10-13.

[2]王新梅,肖国镇.纠错码——原理与方法(修订版)[M].西安:西安电子科技大学出版社,2003.

[3]刘东华.Turbo码原理与应用技术[M].北京:电子工业出版社,2004.

[4]Fujii H,Saba T,Sasase I.Novel Decoding Algorithm withWeighting of Extrinsic Information for Punctured Turbo-Codes[C].In 4th European Personal Mobile Communica-tions Conference(EPMCC 2001),2001.

[5]易清明,谢胜利.一种节省存储量的SOVA子译码器IP核的设计[J].微电子学,2006,36(5):643-645.

[6]Jian Liang,Russell Tessier,Dennis Goeckel.A Dynamically-Reconfigurable,Power-Efficient Turbo Decoder.Proceedingsof the 12th Annual IEEE Symposiumof Field-ProgrammableCustom Computing Machines,2004:91-100.

[7]Sharma S,Attri S,Chauhan R C.A Si mplified and EfficientI mplementation of FPGA-Based Turbo Decoder[C].Per-formance,Computing and Communications Conference,2003,4:207-213.

Turbo译码器 篇3

随着高性能数字通信系统需求的迅速增长, 要求信息传输尽可能准确, 实现信息传输的误码率最小化。为了降低误码率, 相继提出了各种信道纠错方法, 其中信道编码是消除或减少信息传输误码率的有效手段之一, Turbo码是目前最好的信道编码方案, 它可以获得几乎接近shannon理论极限的译码性能。通过在Turbo码的编/译码器中使用交织器和解交织器, 有效实现了随机性编译码的思想[1]。Turbo码的编码过程实际上就是一个利用强约束短码构造伪随机长码的过程。Turbo译码器采用了迭代译码, 通过在分量译码器之间交换外部信息来提高性能。

本文包括: (1) 设计基于SOVA算法的Turbo译码器的硬件电路; (2) 根据各个功能模块的结构, 编写相应的VHDL代码, 利用ModelSim SE 6.2b进行功能仿真和时序仿真; (3) 利用Xilinx ISE 9.1i进行综合、布局布线, 产生比特流文件;将比特流文件下载到Xilinx公司的Spartan-3S1500 FPGA开发板上; (4) 由PC机通过RS232接口把Turbo译码器的译码输入信息传输到FP-GA板上, 而Turbo译码器的译码输出数据是由FPGA板通过RS232接口传输到PC机上; (5) 比较Turbo译码器的译码输出数据和Turbo编码器的编码输入数据, 验证Turbo译码性能。

2、改进Turbo译码器的设计

本设计所采用的Turbo译码器结构如图1所示, 在传统的Turbo译码器上添加两个权重模块 (权重1和权重2) , 目的是补偿Turbo编码器中被删除的校验位, 提高译码的性能。参考文献2中给出了改进前后译码性能的比较结果。

SOVA分量译码器采用SOVA算法, 它对Viterbi算法所作的改进主要有两个方面: (1) 在栅格图中选择最大似然路径时, 计算路径度量时把先验信息考虑进去; (2) 不仅要译出每个比特, 而且要给出每个比特译码的可靠度LLR (对数似然比值, 简称似然值) , 作为软输出为下次迭代所用。仿真结果表明, 迭代次数达到6次以上, SOVA算法的性能提高很小[2]。故本设计的迭代次数取为6次。

交织器与解交织器可用一个功能模块来实现, 只要定义一个输入端口 (如int_sel) 来表示实现的是交织器还是解交织器即可。本设计所采用的交织器是交织长度为16的对称分组交织器, 其交织/解交织算法是一致的, 交织映射函数如下, 其中i=1, 2, …, 16。

权重1是对位于偶数位置的外信息1进行除2操作, 位于奇数位置的外信息1保持不变;而权重2是对位于奇数位置的外信息2进行除2操作, 位于偶数位置的外信息2保持不变。

硬判决器是对解交织后的外信息2进行判决, 若值大于或等于零, 则判决输出1;反之, 则判决输出0。

3、改进Turbo译码器的FPGA实现

Turbo译码器的FPGA实现[3-5], 主要分为五个模块: (1) Turbo译码器顶层模块; (2) Turbo译码模块; (3) SOVA译码模块; (4) 交织/解交织模块; (5) 权重模块。采用VHDL语言编写各模块代码。下面分别介绍各模块的FPGA实现。

3.1 顶层模块

Turbo译码器的顶层模块主要实现FPGA板与PC机之间的通信, 获得译码输入信息 (系统信息和校验信息) , 并对译码输入信息进行处理和存储。

本设计方案中, 从PC机传到FPGA板上的系统信息为1024位, 校验信息为24位;从FPGA板传给PC机的译码输出信息为16位;系统信息是一次性传送的, 而校验信息和译码输出信息是分组不断传送的。故要将1024位的系统信息分为64组, 每组16位。24位校验信息的前8位表示该串校验信息是与哪一组的系统信息相对应, 后16位才是真正的校验信息。处理时, 要将16位的校验信息分成校验信息1和校验信息2 (均为16位) , 被删去的校验位用"0"代替。16位的译码输出信息是真正的译码输出数据, 而该16位译码输出信息对应的是哪一组是通过通信时的界面显示的。

3.2 Turbo译码模块

Turbo译码模块主要实现的功能是对接收到的系统信息和校验信息进行Turbo译码, 产生Turbo译码器的译码输出信息。图2是综合得到的Turbo译码模块顶层视图, 左边是外部输入信息端口, 右边是输出信息端口。

3.3 SOVA译码模块

SOVA译码模块主要实现的功能是利用SOVA译码算法产生似然值, 并对似然值进行解交织和硬判决, 以及计算外信息值 (外信息值=似然值-系统信息-先验信息) 。SOVA译码算法主要分为以下五个步骤: (1) 计算分支度量; (2) 计算路径度量; (3) 通过加比选运算, 得到新路径度量、路径度量差和判决比特; (4) 回溯, 寻找幸存路径 (最大似然路径) 并得到该路径的各判决比特; (5) 寻找与幸存路径判决值不同的竞争路径, 计算每个比特译码的可靠度LLR。图3是综合得到的sova译码模块顶层视图。

3.4 交织/解交织模块

因为经过交织/解交织器后, 数值不会发生变化, 而仅仅是各数值的排列顺序发生变化, 所以只要对各数值的存储地址进行处理就可以。本方案的交织映射关系如下:

按照该交织映射关系编写交织/解交织器的VHDL代码。

3.5 权重模块

权重模块主要实现的是权重1和权重2的功能。要判断某数据是位于奇数位置还是偶数位置, 只要看该数据的存储地址最低位就可以。若最低位为"1", 表示位于奇数位置;若为"0", 表示位于偶数位置。根据以上分析, 该模块需要定义一个输入端口 (如weight_sel) 来表示实现的是权重1还是权重2的功能, 以及定义一个输入端口 (如even_odd) 来表示数据的存储地址最低位。

4、结果分析

4.1 仿真结果

在ModelSim SE 6.2b软件平台中对本设计进行仿真, 其功能仿真结果如图4所示。

4.2 资源使用情况

在Xilinx ISE 9.1i软件平台中对本设计进行综合、布局布线、生成比特流文件, 并将生成的比特流文件通过下载线下载到Xilinx公司的Spartan-3S1500 FPGA开发板上进行验证。验证结果表明, 所设计的Turbo译码器是正确的。

从布局布线报告中可以看到, 所设计的Turbo译码器所占用的资源情况如下:

5、结束语

本文设计了一个基于SOVA算法的改进Turbo译码器的硬件电路, 并编写各个功能模块的VHDL代码, 在Xilinx ISE 9.1和ModelSim SE 6.2b中仿真、综合、布局布线, 将产生的比特流文件下载到Xilinx公司的Spartan-3S1500 FPGA开发板上, 通过FPGA板与PC机的通信得到了Turbo译码器的译码输入数据和输出数据。实验结果表明, 所设计的Turbo译码器是正确的。

摘要:Turbo码的译码性能几乎接近shannon理论极限, 实现Turbo译码器对于降低信道传输的误码率、提高传输可靠性具有重要的意义。本文设计了一种基于SOVA算法的改进Turbo译码器, 并下载到Xilinx公司的Spartan-3S1500 FP-GA开发板上验证成功。Turbo译码器的输入信息和输出信息通过FPGA板与PC机的通信获得。实验结果表明, 所设计的Turbo译码器是正确的。

关键词:Turbo译码器,SOVA,FPGA,ISE,VHDL

参考文献

[1].刘东华.Turbo码原理与应用技术[M].北京:电子工业出版社, 2004.

[2].H.Fujii, T.Saba and I.Sasase.Novel decoding algorithm with weighting of extrinsic information for punctured turbo-codes[J].In 4th European Per-sonal Mobile Communications Conference (EPMCC 2001) , 2001.

[3].Jian Liang, Russell Tessier and Dennis Goeckel.A Dynamically-Reconfig-urable, Power-Efficient Turbo Decoder.

[4].S.Sharma, S.Attri, and R.C.Chauhan.A Simplified and Efficient Imple-mentation of FPGA-BasedTurbo Decoder.Performance, computing and communications conference, 2003, 4:207-213.

Turbo译码器 篇4

1 Turbo码的编译码结构

1.1 Turbo码编码结构

Turbo码编码结构是由两个相同的RS分量编码器通过交织器并行级联而成。

Turbo码编码原理:将需要编码的信息序列分三路进行编码。一路将信息序列直接送入复用器;第二路将信息序列送入RSC编码器1进行编码, 得到校验序列1;第三路将信息序列送入交织器, 序列被打乱形成一个新序列再送入RSC编码器2进行编码, 得到校验序列2。为提高编码率, 将两个校验序列送入删余阵, 按照一定规则进行删余处理, 形成最后的校验序列。将校验序列和未编码序列复用在一起, 形成最终的编码码字X。

1.2 Turbo码并行译码结构

Turbo码并行译码结构是由两个相同结构的译码器、交织器和解交织器通过迭代循环完成译码过程。

其译码原理是:接收的信息序列经解复用后, 将信息位、校验位及先验信息送入译码器1, 译码器1对RSC1进行最佳译码, 得到序列中每一位的似然值, 并将产生的外部信息经交织器处理, 传递给译码器2, 并将该信息作为先验信息, 和信息位一起经交织器处理, 再对RSC2进行最佳译码, 得到交织序列中每一位的似然值, 再经解交织器, 被反馈回译码器1, 为下一次译码做准备。经过N次迭代, 外信息值趋于稳定, 似然比逼近最大似然译码, 再经硬判决, 得到信息序列的最佳估值序列。

2 Turbo码常用的几种迭代译码算法有4种算法

MAP算法、LOG-MAP算法、MAX-LOG-MAP算法和OVA算法。

3 不同译码算法的对比分析

MAP算法是Turbo的最佳译码算法, 能直接计算信息比特的后验概率, 但由于运算量太大, 对每个比特需做 (4×2v) 次加法, (6×2V+1) 次乘法运算, 需要存储量为[ (N+1) ×2v+1] (其中N为编码的长度, v为编码存储) , 在实际应用中难以实现。LOG-MAP算法是对数域的MAP算法, 是将乘法运算变为加法运算, 仅需做 (15×2v+9) 次加法, 8次乘法运算, 需要存储量不变, 从而大大降低算法的复杂性, 易于实现, 且在性能上仅次于MAP算法。MAX-LOG-MAP算法是对LOG-MAP算法的改进, 将LOG-MAP算法中的max* () 运算简化为最大值运算, 需要做 (10×2v+11) 次加法, 8次乘法运算, 存储量仍不变。虽简化了LOG-MAP算法, 但译码性能会受到损失。与经典的维特比算法相比, SOVA的运算量是v A的两倍左右, LOG-MAP算法的复杂性又是SOVA的两倍左右, MAX-LOG-MAP算法的复杂性介于SOVA和LOG-MAP算法之间。

4 基于MATLAB不同译码算法对Turbo码性能的影响

在四种算法中, MAP算法是性能最好, LOG-MAP算法的性能跟MAP算法在较低信噪比情况下十分接近, 高信噪比时差别稍大。MAX-LOG-MAP算法与SOVA算法性能非常接近, 通常情况下, MAX-LOG-MAP算法的性能要优于SOVA算法, 但都没有MAP算法好。

由此可见, 性能优异的译码算法往往比较复杂, 若使算法易于实现, 则要对其改进, 但要损失一定的性能为前提。因此, 在要求比较高的的无线通信系统中, LOG-MAP算法是最合适的。

5 总结

尽管LOG-MAP算法是Turbo码四种算法中最具优越的, 但也存在很多的不足, 限制了Turbo码的在无线通信领域的应用, 尤其是译码算法的改进, 还需更深层次的研究, 有待进一步完善。

摘要:本文给出了Turbo码的编译码结构和几种常用的迭代译码算法, 对这几种算法的复杂度进行了对比分析, 并给出基于MATLAB不同的译码算法对Turbo码性能的影响, 为Turbo码应用到无线通信中奠定一定基础。

关键词:MATLAB,Turbo码,译码算法,无线通信

参考文献

[1]刘东华.Turbo码原理与应用技术[M].北京:电子工业出版社, 2004.

Turbo译码器 篇5

随着通信技术的发展, 信道编码在改善通信传输质量、提高信息传递可靠性方面的强大作用已引起人们的广泛关注。1994年R.Pyndiah 等人提出了Turbo乘积码[2], 该码在误码性能上接近Turbo卷积码, 但译码复杂度较低, 其优越的性能和实现简单等特点使得该码备受编码研究领域的关注。现有的Turbo乘积码一般采用几种固定码长和码率的块编码, 码型和码字的长度决定一帧中信息码元的最大长度, 因此信息传输的帧长相对固定, 难以满足某些通信系统对帧长的特殊要求。该文提出的删余Turbo乘积码在编码信息中加入已知信息, 编码后将已知信息剔除后再进行调制并传输, 译码时首先加入对应的删余软信息进行译码, 然后再分接出所需信息。根据传输帧长的需要可灵活地选择删余信息的长度, 且由于已知删余信息的加入, 在相同的信噪比下, 通信系统的误码性能可得到一定的改善。

1删余Turbo乘积码的构造方法

以子码为线性分组码的二维乘积码为例说明删余Turbo乘积码的构造方法:考虑2个线性分组码C1和C2, 参数分别为 (n1, k1, d1) 和 (n2, k2, d2) , 二维删余Turbo乘积码编码结构如图1所示。

二维删余Turbo乘积码的构造方式如下:

① 将删余信息置于编码矩阵的最前端, 若删余信息为n2的整数倍, 将删余信息排列成m×n2的矩阵, 则无需参加行编码;若删余信息不构成整行, 将删余信息分成m×n2+l, 其中m为整数, 0<l<n2, 则最后l个码字需参加行编码;

② 将 (k1-m) ×k2个待编码数据排列成 (k1-m) ×k2的矩阵;

③ 用C2对各行向量进行编码产生行校验位, 得到一个 (k1-m) ×n2的编码矩阵, 并与删余信息组合成一个k1×n2的矩阵;

④ 用C1码对n2个列向量进列编码产生列校验位, 得到一个n1×n2的Turbo乘积码编码数据块。

将删余信息删除后得到的Turbo乘积码编码长度为n= (n1-m) ×n2, 信息比特长度为k= (k1-m) ×k2, 最小汉明距离为d=dd2, 编码效率为:

R=R1×R2= (k1-m) ×k2 (n1-m) ×n2。 (1)

2基于Chase算法的译码器

2.1迭代译码算法的译码器结构

基于Chase算法[3]的软输入软输出迭代译码算法的译码器结构如图2所示。

图2中, [R]为接收到的信号矩阵;[W (m) ]为外信息矩阵;参数m为指迭代次数, 第1次迭代时W (1) =0, 第m次译码的软输入矩阵为:

[R (m) ]=[R]+α (m) [W (m) ]。 (2)

式中, α (m) 为加权因子, 通过经验值得到, 一般随着迭代次数增加而增大。

2.2改进的chase译码算法

迭代译码算法中行 (列) 译码器采用改进的chase译码算法, 它是一种低复杂度次优算法, 其性能接近最大似然译码算法, 软输入矩阵[R (m) ]输入到行 (列) 译码器, 逐行 (或列) 译码, 得到软输出矩阵[R (m) ], 并计算下一级译码器的外信息, 其具体实现过程如下:

① 从译码器输入软信息R (m) 中, 得到一个硬判决序列Y并确定p个可信度最小的码元的位置, 一般p=d/2, 硬判决序列每一比特的可信度可用rj的绝对值|rj|得到;

② 根据可信度最低的位置产生2p个试探序列Tq, p=2时, 试探序列的示意图如图3所示;然后构造测试图样Zq, 其中Zq=YTq, ♁表示按位异或;

③ 对测试图样Zq进行硬判决译码, 将得到的译码结果Ci归入集合Ω;

④ 在集合Ω中寻找与接收信号R有最小欧氏距离码字, 作为判决码字D;

⑤ 计算译码器的软输出计算为:

rj´= (|R-C|2-|R-D|24) dj。 (3)

式中, D为前面得到的判决码字;CD的竞争码字;C为在cjdj条件下, 与R有最小欧式距离的码字。如果找不到竞争码字C, 则

rj´=β (m) dj。 (5)

式中, β (m) 0为可靠度因子, 一般通过经验值得到, 随着迭代次数增加而增大;

⑥ 计算迭代产生的外信息为:

wj=rj′-rj。 (6)

再按照上述相同的过程进行下一次迭代译码, 以此类推, 就可以完成不同迭代次数的译码。

3删余Turbo乘积码的译码实现

删余译码器的工作原理为:首先在接收软信息中加入与编码时添加的删余信息对应的软信息, 构成与译码器对应的nn2的矩阵, 其中译码器采用图2中所示的基于chase算法的软输入软输出迭代译码器, 经过所需次数的迭代译码后, 将添加的删余信息剔除, 即可得到译码后信息。其具体实现框图如图4所示。

4删余长度对帧长的影响

删余Turbo乘积码可根据传输信道的特性, 灵活地加入删余信息和配置编码参数, 能够较好地适应现代通信系统对编码速率和突发包长度多变的要求, 以 (64, 57, 4) × (64, 57, 4) 的扩展汉明码为子码的Turbo乘积码为例, 来说明删余长度对帧信息比特数及编码效率的影响, 如表1所示。

由表1可看出, 删余行数对编码效率的影响不是很大, 但传输信息的帧长度可灵活地改变, 且根据特殊需要, 删余长度可为小于所选码型的最大信息位数 (kk2) 的任意整数, 使编码方式更加地灵活。

5删余编码性能仿真结果分析

以 (64, 57, 4) × (64, 57, 4) 的扩展汉明码为子码的Turbo乘积码为例, 对BPSK调制方式的删余Turbo乘积码误码性能进行仿真, 并与未删余Turbo乘积码的误码性能进行了对比分析, 其迭代次数均为8次, 删余码的删余行数为11行, 仿真的误码率曲线如图5所示。

图5中标注Uncode的曲线为未采用编码的误码性能曲线, 标注Code的曲线为采用Turbo乘积码的误码性能曲线, 标注Sycode的曲线为删余11行后的误码性能曲线。从仿真结果可以看出, 删余11行的比未加删余的编码在误码性能上提高约0.3 dB, 因此, 删余Turbo乘积码不但能够灵活地改变帧长, 而且在误码性能方面还能带来一定的增益。

6结束语

附加删余的Turbo乘积码可通过灵活的加入删余信息来满足特定通信系统对传输速率及帧长的需求;另外, 由于加入的删余信息为已知信息, 在相同的信噪比下, 通信系统的误码性能得到一定的改善, 传输信息的可靠性进一步提高, 因此该技术在通信和信号处理等领域具有广阔的应用前景。

摘要:基于现有的Turbo乘积码的编译码方法, 提出一种附加删余的Turbo乘积码编译码算法, 介绍其编码器的构造方法, 阐述了译码算法及实现框图, 分析了删余信息对传输帧长的影响, 仿真了其误码性能, 并与未删余的Turbo乘积码做比较。分析和仿真结果表明, 附加删余的Turbo乘积码可满足特定系统传输速率及帧长的需要, 在相同的信噪比下, 删余Turbo乘积码的误码性能优于未加删余的误码性能。

关键词:Turbo乘积码,Chase算法,删余,误码性能

参考文献

[1]BERROU C, GLAVIEUX A, THITIMAJSHIMA P.NearShannon Limit Error-Correcting Coding and Decoding:TurboCodes[J].IEEE International Conference, 1993 (2) :1 064-1 070.

[2]PYNDIAH R, GLACIEUX, PICART A, et al.Neat OptimumDecoding of Product Codes[J].IEEE GLOBECOM, 1994 (1) :339-343.

[3]CHASE D.A Class of Algorithms for Decoding Blocks withChannel Measurement Information[J].IEEE Transaction onInformation Theory, 1972 (18) :170-182.

[4]PYNDIAH R.Near Optimum Decoding of Product Codes:BlockTurbo Codes[J].IEEE Trans on communication, 1998, 46 (8) :1 003-1 010.

[5]张佳新, 张玉明.Turbo PC非均匀迭代译码[J].无线电通信技术, 2006, 32 (4) :21-23.

Turbo译码器 篇6

关键词:Turbo码,硬判决,瑞利衰落信道,协作通信

0 引言

Turbo码具有很强的纠错能力,在很多通信系统都获得了广泛的应用[1,2]。Turbo码采用迭代译码算法,通过分量译码器之间软信息的交换提高译码性能,分量译码器一般采用软输入软输出(Soft-Input Soft-Output, SISO)算法,例如最大后验概率(MAP)译码算法[3]、软输出维特比(SOVA)译码算法等。为发挥Turbo码的优越性,要求译码器的输入为来自信道的概率信息,采用软判决译码算法。与硬判决译码算法相比,软判决译码算法可获得更大的编码增益。

然而,在某些解调器实现受限的条件下,例如某些由简单商业射频芯片(例如无线芯片CC1101[4]等)搭建而成的通信系统中,解调器无法提供软信息,不能较好地匹配Turbo码采用的SISO译码算法。在这种情况下,硬判决信息作为信道信息进入Turbo码的译码器后,虽然分量译码器之间可以输出并传递软信息,但由于译码器输入端采用硬判决接收,会对信道接收信息的可靠性带来较大的损失,造成后续迭代译码过程中Turbo码的纠错性能下降。

为解决硬判决接收下Turbo码的SISO译码算法的性能损失问题,针对瑞利衰落信道(Rayleigh Fading Channels)下的协作通信系统,本文提出了一种对Turbo码译码器的输入硬判决信息进行补偿的方法,该方法考虑衰落信道对信息传输的影响,利用信道衰落系数对硬判决信息进行修正,可在一定程度上优化迭代译码算法的初始输入。仿真结果表明,针对瑞利平坦衰落信道下采用Turbo码的协作通信系统,提出的方法与硬判决译码方法相比,提高了系统整体性能。

1 Turbo码译码算法

1.1 Turbo码的译码原理

Turbo码编码器由两个递归系统卷积码通过交织器级联而构成。信息比特以帧为单位,经过不同的交织器后进入分量编码器,删余压缩后得到编码码字。Turbo码的译码则采用迭代译码结构,如图1所示。

其中,y为解调器输出的判决序列;u为编码前的信息序列;ys为译码器输入的信息序列;y1py2p为校验序列;L1、L2为译码器输出的对数似然比(Log-Likelihood Ratio, LLR);Le1Le2表示两个译码器输出的外信息;La1La2表示两个译码器输入的先验信息;u^为输出译码结果。

Turbo码的迭代译码步骤如下:

步骤1 第一个译码器进行译码。以信息序列ys、校验序列y1p和初值为0的先验信息作为输入,输出信息比特的对数似然比值L1。L1减去先验信息La1和信息序列的LLR值,得到外信息Le1,经过交织作为第二个译码器的先验信息La2

步骤2 第二个译码器进行译码。以交织后的信息序列ys’、校验序列y2p和先验信息作为输入,输出交织的信息比特对数似然比L2。L2减去先验信息La2和交织的信息序列LLR值,得到外信息Le2经过解交织可再次作为第一个译码器的先验信息。

以上两个步骤组成一次迭代,每次迭代中,两个分量译码器的先验信息均不断更新。当满足迭代停止准则或达到一定的迭代次数时,判决并输出译码结果。

在分量译码器内部,常采用对数域的最大后验(Maximum A Posterior, MAP)算法,即Log-MAP算法。该算法根据输入的信道接收y(包括信息序列ys和校验序列yp)和接收自另一个分量译码器的先验信息La,计算每个信息比特的LLR,公式为:

L(uk)=lnΡ(uk=1|y)Ρ(uk=0|y)(1)

其中,uk表示编码器输出的第k个信息比特,采用二进制相移键控(BPSK)调制。式(1)可表示为下面的形式:

L(uk)=max(σk-1,σk)S1*[αk-1(σk-1)+γk(σk-1,σk)+βk(σk)]-max(σk-1,σk)S0*[αk-1(σk-1)+γk(σk-1,σk)+βk(σk)](2)

其中,αk-1为前向度量,βk为后向度量,γk为分支度量,σkσk-1分别表示k时刻和k-1时刻的编码器状态。上式中,max*运算的定义为:

max*(x,y)=ln(ex+ey)=max(x,y)+ln(1+e|x-y|) (3)

Log-MAP算法的计算步骤如下:

第1步:使用式(4)计算并存储分支度量,

γk=lnp(uk=i)+1σ2(yksxks+ykpxkp)(4)

第2步:初始化并计算前向度量αk-1,

α0(σ0)={0,σ0=0-,σ00(5)αk(σk)=maxσk-1*[αk-1(σk-1)+γk(σk-1,σk)](6)

第3步:初始化并计算后向度量βk,

βΝ(σΝ)={0,σΝ=0-,σΝ0(7)

βk-1(σk-1)=maxσk*[βk(σk)+γk(σk-1,σk)](8)

第4步:采用式(9)计算后验概率的L值,

L(uk)=max(σk-1,σk)S1*[αk-1(σk-1)+γk(σk-1,σk)+βk(σk)]-max(σk-1,σk)S0*[αk-1(σk-1)+γk(σk-1,σk)+βk(σk)](9)

从以上步骤可看出,由于前向度量αk和后向度量βk均为初始化后由γk递归计算而得,Log-MAP算法的关键是分支度量γk的计算。下面对分支度量的计算进行分析。式(4)中,第一项表示对数域的先验信息,初始值为零,在迭代中不断更新,不依赖于译码器的外部输入。第二项中的xsxp分别表示调制后系统比特和校验比特的编码输出,在译码过程中一般为固定值,取值为{-1,+1}。ysyp则分别表示k时刻信息比特和校验比特的信道接收值。因此,分支度量的计算准确性主要取决于译码器的输入序列ysyp

1.2 软信息获取方法

对于瑞利衰落信道,解调后的接收序列为:

y=ax+n (10)

式中,x为BPSK调制后输出的码字序列,xk∈{-1,+1};n为均值为0,方差为σ2的加性高斯白噪声序列;a为服从瑞利分布的乘性衰落系数[5]。由于衰落系数的影响,将式(4)中的分支度量γk采用下式进行修正[6]:

γk=lnp(uk=i)+aksyksxksσ2+akpykpxkpσ2(11)

其中,yk表示解调器的单个输出信号;aksakp分别表示每个接收的信息比特和校验比特的衰落系数。

硬判决解调器根据最佳判决门限值,对接收到的信号进行判决后输出,并将此判决结果送给译码器。假设y为解调器的硬判决输出序列,此时y已被量化为-1或+1,将y作为输入序列送入Turbo码译码器中。而在软判决译码中,要求解调器输出为软信息,并且SISO模型中的输入输出均为软信息。利用这种软信息进行译码的方法称为软判决译码,软信息能为译码器提供由信道产生的可靠性信息。

与软判决译码相比,硬判决没有充分利用信道提供的可靠性信息,而是将其完全忽略,故其译码性能较软判决译码有较大的性能恶化。在Turbo码译码中,硬判决的问题主要是造成分支度量的计算准确性下降,从而进一步影响了后续计算步骤中前向度量和后向度量的计算准确性。

2 改进的硬判决解调译码方法

本文针对瑞利衰落信道中的平坦衰落,对硬判决接收的Turbo码译码算法进行改进。由于信道衰落系数对接收值具有影响,因此可利用衰落系数,通过改进硬判决译码中分支度量的计算方法,对译码器的输入硬判决序列进行修正。

改进算法需利用信道衰落系数,因此如何准确获取衰落系数,是改进算法的关键。某些简单商业射频芯片,例如CC1101等可支持接收信号强度(RSSI)值的检测,即具有数字RSSI功能,可以通过读寄存器获取RSSI值。因此,可通过获取RSSI值,近似于对衰落系数进行估计。

硬判决解调器的输出yksykp的值均为-1或+1。首先假设信道为瑞利平坦衰落信道,此时认为同一帧内的每个比特具有相同的衰落系数,且帧与帧之间的衰落系数是相互独立的。对接收的每一帧中的每个硬判决信息yk,均乘以信道衰落系数ak,ak通过读取CC1101的寄存器,并进行归一化而获得。将解调器的输出yk和估计而得到的衰落系数ak同时作为Turbo码译码器的输入。而对于Log-MAP算法,修正后的分支度量计算公式为:

γk=lnp(uk=i)+ak(yksxksσ2+ykpxkpσ2)(12)

由于引入了RSSI的检测,可得到较准确的信道衰落系数,有利于译码性能的提高。

3 改进方法的仿真与测试

3.1 仿真模型

为验证本文提出的改进算法的有效性,采用商业射频芯片CC1101构成协作通信系统对算法进行了验证。本文中采用的协作通信系统如图2所示,由源节点、中继节点和目的节点组成。图3中对改进方法的工作原理进行了说明,具体步骤如下:

①源节点对长度为L的信息序列进行码率R=1/3的Turbo编码,删余后得到码率为1/2、长度为2×(L+3)的Turbo码编码输出序列x1,在图3中由未加阴影的部分表示,并将其发送给中继节点和目的节点。

②中继节点接收到源节点发送的码字后,经过译码,对译码结果经过相同的编码后可恢复出①中被删除的比特序列x2,并向目的节点发送该序列,在图3中由阴影部分表示。

③目的节点收到源节点发送的码率R=1/2的Turbo码编码序列x1和中继节点发送的删余比特序列x2,将两部分序列按照删余矩阵合并为接收码字,并按照改进译码方法修正,即分别对收到的两部分数据乘以不同的衰落系数,然后送入译码器进行译码,得到译码结果后统计误比特率(Bit Error Rate, BER)和误帧率(Frame Error Rate, FER)。

3.2 仿真条件

基于上面建立的模型,本文在仿真中采用的Turbo码的输入信息序列长度L=165 bits,分量编码器的生成多项式G=(13,15),采用线性同余交织器[7],采用第一个分量编码器截尾,第二个分量编码器不截尾的方案。编码序列进行BPSK调制并通过瑞利衰落信道,译码器采用修正的Max-Log-MAP译码算法[8],迭代8次。本文对改进的译码方法进行了仿真,仿真中中继节点与源节点发送的序列在目的节点处的解调器输出均为硬判决信息。

3.3 仿真与测试结果

在目的节点处,由于来自中继节点和源节点的发送序列通过两次分别发送,需要对两部分接收数据分别统计RSSI值,得到两部分码字的衰落系数a1和a2,a1和a2均为常数。然后,将a1和a2分别与来自两个节点的硬判决接收序列相乘,得到修正后的接收序列,将两部分序列按照删余矩阵进行组合后,输入到Turbo码译码器进行译码。本文还仿真了硬判决译码与理想软判决译码的性能作为对比,三种译码方法的误比特率曲线和误帧率曲线如图4所示。

从图4中可看出,改进方法与硬判决译码方法相比,在信噪比为20dB左右时的性能改善为2dB。仿真结果表明,与硬判决译码相比,改进方法可获得2dB的增益。该方法增加的复杂度非常有限,尤其是系统采用CC1101芯片可以容易地获得接收序列的RSSI。

为了验证改进方法在实际应用中的性能,本文利用单片机和CC1101组成协作通信系统,进行了实际测试。表1给出了协作通信系统中改进译码方法与硬判决译码方法在发射功率为-10dBm,-15dBm和-20dBm时的实际测试误包率,数据包数为30000。测试中两部分数据的衰落系数仅取RSSI的相对值计算得到。测试结果表明,在不同的发射功率下,采用改进译码方法的平均误包率均明显低于硬判决译码的平均误包率,改进方法可显著提高通信系统的可靠性。

4 结束语

本文提出了一种衰落信道硬判决接收下Turbo码的改进译码方法。仿真结果表明,与传统的硬判决译码方法相比,改进方法能改善系统误比特率;与软判决译码方法相比,该方法性能损失较小,取得了复杂度与性能的良好折衷,能应用于某些解调器实现受限,仅能输出硬判决结果,且能估计衰落系数的应用场景。

参考文献

[1]Berrou C,Glavieux A,Thitimajshima P.Near Shannon limit error-correcting coding and decoding:Turbo codes[C]//Proc.IEEE In-ternational Conference on Communications.Geneva,Switzerland:IEEE Press,1993:1064-1070.

[2] Zhang Gengxin, Xie Zhidong, Bian Dongming, et al. A survey of deep space communications[J]. Journal of Electronics (China), 2011,28(2):145-153.

[3]Bahl L,Cocke J,Jelinek F,et al.Optimal decoding of linear codesfor minimizing symbol error rate[J].IEEE Transactions on Informa-tion Theory,1974,20(2):284-287.

[4] Texas Instruments. CC1101 user’s manual[EB/OL]. http://www.ti.com/product/cc1101.

[5]Kovaci M,Balta H.Comparing the performance of duo-binary turbocodes on rayleigh channel[C]//12th International Conference onOptimization of Electrical and Electronic Equipment.Barsov,Ro-mania:IEEE Press,2010:953-956.

[6]Wang Chinliang,Hsu Jahming,Chang Tingyang.Performance ofturbo codes in rayleigh fading channels with adaptive channel esti-mation[C]//Proc.IEEE International Conference on Communica-tions.New Orleans,LA,USA:IEEE Press,2000:1665-1669.

[7]Boutillon E,Gnaedig D.Maximum spread of D-dimensional multi-ple turbo codes[J].IEEE Transactions on Communications,2005,53(8):1237-1242.

Turbo译码器 篇7

在1993年瑞士日内瓦召开的国际通信会议上,Berrou C,Glavieux A和Thitimajshima P首次提出了一种新型的信道编码方案——Turbo码,由于其很好地应用了香农信道编码定理中的随机性编译码条件,获得了几乎接近香农限的译码性能[1]。

Turbo码又称并行级联卷积码(Parallel Concatenated Convolutional Code,PCCC),将卷积码和随机交织器结合在一起,实现了随机编码的思想,并采用软输出迭代译码来逼近最大似然译码,充分利用了译码输出的软信息。Turbo码已经成为了第三代移动通信高质量、高速率信道中的首选编码方案,无线通信带宽需求量的不断增大引导通用移动通信系统长期演进(LTE)的发展。由于Turbo码具有较好的误码率性能,在LTE系统物理层信道编码中也采用了Turbo码。笔者基于目前所做的LTE综测仪项目,考虑到硬件实现需要满足的实时性和误码率性能要求,对编码计算和交织计算进行了简化,对两种不同的译码算法进行了仿真,分析了编译码性能。

1 LTE Turbo编码器

LTE Turbo编码器采用了以2个8状态编码器构成的并行级联卷积形式,编码速率为1/3,8状态编码器的传输函数为

式中:g0(D)=1+D2+D3,g1(D)=1+D+D3。结构如图1所示[2]。若输入为c0,c1,⋯,cK-1,则经过两个编码器后的输出分别为z0,z1,⋯,zK-1和z0′,z1′,⋯,z′K-1,其中输入比特序列在进入第二个编码器之前要先进入内交织单元,经交织后变成c0′,c1′,⋯,c′K-1作为第二部分编码器的输入比特序列,然后进行编码后输出z0′,z1′,⋯,z′K-1。整个Turbo编码器的输出为3路,即dk(0)=xk,dk(1)=zk,dk(2)=zk′。

每一路编码后的输出比特数为D=K+4,最后的4 bit被称为栅格停止尾比特。处理规则为

从编码器结构可以看出,在进行编码处理时有反馈的影响,移位寄存器的值是由输入比特和反馈共同决定,硬件实现编码时只能进行逐位比特处理,LTE系统中Turbo编码块大小为40~6 144 bit,当比特序列长度较大时,运算时间将会大大增加。

LTE Turbo编码器上下两部分的移位寄存器各只有3个,所构成的状态数较少(23=8个),在具体实现时先计算出所有可能出现的状态,制作成表格存入内存,进行编码时直接采用查表的方法,如表1所示,根据每次输入的1 bit加上当前移位寄存器的3 bit作为一个查表偏移值(一共4 bit,16种情况),可以查出当前状况下的输出比特和寄存器的下一状态,直到所有输入比特编码完成。

在尾比特的处理上,同样可以利用查表的方法。尾比特的产生与输入比特序列无关,而只由当前寄存器的状态决定,所以也事先计算好所有可能的情况制成表格,在输入比特序列编码完成后,根据当前寄存器的状态作为偏移值查表得出尾比特。利用查表的方法能够以较小内存空间的花费来换取编码运算时间的减小,提高了编码效率。

2 交织器

交织器是Turbo编码器的一个关键组成部分,在很大程度上影响着Turbo码的性能。在Turbo码中交织器除了抗信道突发错误外,还有一个作用就是重置输入序列的比特顺序,使交织前后的序列相关性减小。在LTE系统中,交织器输入比特序列定义为c0,c1,⋯,cK-1,交织器输出比特序列定义为c0′,c1′,⋯,c′K-1,其中K为输入比特的个数,输入比特序列与输出比特序列的关系为

输出指数i和输入指数Π(i)需满足

式中:参数f1和f2是根据序列长度K查表3GPP TS 36.212中table 5.1.3-3得出,一共有188种不同的配置[3]。

从输出指数与输入指数的关系可以看,LTE系统Turbo编码器采用了二次排列多项式(Quadratic Permutation Polynomials,QPP)交织器[4]。根据QPP交织器的输出与输入的关系等式,可以将交织器的计算化简为递推计算[5]

y(x)=[f1+f2+2f2x]mod K同样可以采用递推计算得到

所以在具体实现的过程中,交织指数的计算可以简化为如式(6)的递推计算[6],将乘法和除法(mod)运算用递推加法、比较判断和减法来代替,大大减少了交织指数的计算时间,提高了编译码效率以达到实时性的要求[7]。

3 译码

Turbo码译码比较常用的就是其发明者在最初给出的改进型BCJR算法,这是一种逐符号软输出最大后验概率算法,也是目前Turbo码译码的最优算法,主要有MAP算法、Log-MAP算法、Max-Log-MAP算法。在LTE系统中Turbo译码中同样可以使用这些通用的译码算法[8]。

图2为Turbo迭代译码器结构图,在第一次迭代时,SISO1模块的先验信息,即输入信息符号概率对数似然比初始化为0,译码后的输出信息符号概率对数似然比在经过交织器后作为SISO2模块的输入信息。SISO2模块译码输出后经过解交织器,反馈到SISO1模块中作为输入,也就是下一次迭代译码的先验信息。这样经过几次迭代后,根据SISO2模块的输出经过解交织器后,进行硬判决得到最终的译码输出[9]。

利用MAP算法进行译码,在K时刻,有

Λ(d̂k)为第K个信息比特的似然比,L(d̂k)是Λ(d̂k)的对数形式,即第K个信息比特的对数似然比(LLR)。其中,m表示状态,αkm表示K时刻的前向状态量度,βkm表示K时刻的后向状态量度,γki,m表示分支度量。计算过程为

图3为前向状态度量和后向状态度量的计算分解图,通过计算可以得出K时刻的值,根据的值来进行硬判决便可以得到译码比特输出为

Log-MAP算法是一种改进型的MAP算法,它将译码器的输入输出都改为了对数似然比的形式,因此乘法运算都转变为了加法运算,实现过程比MAP算法简单。Log-MAP算法中的加法运算又可以变为

减少了运算的复杂度,而Max-Log-MAP算法是在似然表达式中直接将对数部分忽略掉了,即

这样大大减少了运算的复杂度,但是在译码性能方面有一定的影响[10]。

4 仿真及性能分析

仿真链路如图4所示,仿真条件为:编码器速率为1/3,采用传统的BPSK调制,译码迭代次数为8次,码块长度为1 024,交织器采用LTE Turbo交织器[11],交织长度为1 024。在仿真过程中连续运算1 000块码块,每一个码块的处理过程包括产生比特序列、编码、加噪和译码[12]。译码的输入采用软信息比特序列。

在复杂度方面,普通算法的编码大概需要完成8N+8次异或和10N+6次赋值运算,而采用查表的编码只需完成2N次加法、4N次查表和2N次赋值运算。交织计算方面,常规的交织计算需要完成N次赋值、3N次乘法和N次除法。在硬件实现时,乘法和除法将会耗费大量的运算时间,所以通过递推计算,将乘法和除法等换为加法和比较判断。使用递推的交织计算,需要完成2N次加法、2N次比较和2N次判断运算。这样的简化计算大大减小了编码的复杂度,提高了编码效率,译码采用Log-MAP算法大概需要完成5×2N次求最大值、15×2N次加法和5×2N次查找运算。Max-Log-MAP降低了运算复杂度,大概需要5×2N次求最大值和10×2N次加法。

在误码率性能方面,如图5所示,在低信噪比下,LTE Turbo码表现出了良好的误码率性能。仿真译码采用了Log-MAP算法和Max-Log-MAP算法,连续计算1 000块码块之后求平均值分别得到了两种算法下的误码率,对比两种译码算法,由于Max-Log-MAP算法简化了运算,降低了复杂度,在误码率性能方面有所下降,而Log-MAP算法有较好的误码率性能,在信噪比为1 dB时译码的误码率可以达到10-5。

5 小结

在实际应用中需要综合考虑,根据不同条件选择不同的译码算法来达到实时性或误码率性能的要求。结合当前所作项目为综测仪项目,使用的硬件能够完成较大复杂度的计算,达到实时性的要求,所以在具体实现时,侧重考虑了精度和误码率性能方面,在译码实现时采用了误码率性能较好的Log-MAP算法。

参考文献

[1]BERROU C,GLAVIEUX A,THITIMAJSHIMA P.Near Shannon limit error-correcting coding and decoding:Turbo code[EB/OL].[2010-05-07].http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.135.9318&rep=rep1&type=pdf.

[2]3GPP TS36.212V9.0.0,Multiplexing and channel coding[S].2009.

[3]Motorola.Contention-free interleaver designs for LTE Turbo codes[R].Sorrento:[s.n.],2007.

[4]Ericsson.Quadratic permutation polynomial interleavers for LTE Turbo coding[R].Riga:[s.n.],2006.

[5]ARP and QPP interleaver for LTE Turbo coding[EB/OL].[2010-05-07].http://www.docin.com/p-54164635.html.

[6]TRIFINA L,MUNTEANU V,TARNICERIU D.Two methods to increase the minimum distance for turbo codes with QPP interleavers[C]//Proc.International Symposium on Signals,Circuits and Systems.Iasi,Romania:IEEE Press,2009:1.

[7]TAKESHITA O Y.On maximum contention-free interleavers and permutation polynomials over interger rings[J].IEEE Trans.Information Theory,2006,52(3):1249-1253.

[8]CHENG J F.Two-level early stopping algorithm for LTE Turbo decoding[C]//Proc.IEEE 68th Vehicular Technology Conference.Calgary,BC,Canada:IEEE Press,2006,52(3):1249-1253.

[9]GILANI S Z.Design and implementation of Turbo decoder for IEEE-802.16e and LTE standards[EB/OL].[2010-05-07].http://homepages.cae.wisc.edu/~ece734/project/s09/gilani_rpt.pdf.

[10]赵宏宇,范平志.Turbo码的一种高效改进型MAP译码算法[J].电子与信息学报,2008,30(10):2397-2401.

[11]陈康,陈伟,谢涛.基于3GPP标准的Turbo码性能分析与仿真[J].武汉理工大学学报:信息与管理工程版,2008,30(6):873-876.

本文来自 360文秘网(www.360wenmi.com),转载请保留网址和出处

【Turbo译码器】相关文章:

LDPC译码器07-14

RS译码器09-09

二进制译码器05-08

自动译码07-13

Viterbi译码05-27

迭代译码算法07-16

LDPC译码09-04

解读《达·芬奇译码》07-01

译码软件系统09-15

数字译码显示电路心得体会05-27

上一篇:高职大学语文教育下一篇:青少年心理健康