Turbo译码

2024-10-08

Turbo译码(共6篇)

Turbo译码 篇1

3 性能仿真

在迭代次数为6, 分量码均为 (7, 5) RSC码, 交织方式为均匀交织, 交织长度分别为16384, 4096, 1024, 256, 如图5所示。从仿真结果得到的结论是:在给定信息序列长度和编码速率的条件下, 随着信噪比的增加, 不同交织长度Turbo码的性能区别开始增加, 交织长度越长, 译码性能越好。但是, 这种性能上的改善, 是以交织和解交织时延为代价的。

图6显示了迭代6次, 分量码均为 (7, 5) RSC码, 交织长度1024, 交织方式分别为均匀交织、随机交织和不加交织时的误码率随信噪比的变化关系。由仿真结果可以看出:不加交织时误码率非常高;而加上交织后, 均匀交织要优于伪随机交织。

4 结论

随着无线通信技术的飞速发展, Turbo编码技术在无线通信领域得到了广泛地研究和应用。Turbo编码技术可以获得编译码增益, 有效提高通信系统的性能。随着研究的深入, Turbo技术和OFDM技术、MIMO技术相融合, 将进一步提高系统的整体性能。

Turbo码是当前国际信息论和编码理论界的研究热点, 并广泛应用于各种通信系统。Turbo码的优异性能在很大程度上得益于一种全新的译码思想——迭代译码。迭代译码技术允许各子码进行独立译码, 大大减少了译码复杂度, 它通过在各级子译码器之间传递译码判决输出比特的可靠性信息, 从而可以获得接近最大似然译码算法的性能。Turbo译码器由两个软入软出 (SISO) 子译码器构成, 它们以迭代的方式进行工作。下面对Turbo码的编译码原理进行详细介绍, 并分析各种参数对Turbo码性能的影响。

1 Turbo码编码结构

Turbo码在吸取传统级联码优点基础上, 采用了并行级联结构的全新思想。典型的Turbo码的结构如图1所示。它通常由两个结构相同的递归系统卷积编码 (RSC) 构成, RSC1直接对进入的信息序列dk进行编码, 得到校验序列y1k;同时, 将信息序列dk通过交织器交织后的序列dn送往RSC2进行编码, 得到校验位y2k, Turbo码码字就是由信息序列后接两路校验序列构成。子编码器所产生的校验位 (y1k, y2k) 可经不同删截矩阵删取后得到不同码率的Turbo码。例如, 当用两个R=1/2的RSC作为子码时, 交替地选取两个校验序列使各有一半发送出去, 就可得到总速率为1/2的Turbo码, 当校验序列全部发送时则得到的码率为1/3。在实际应用中, Turbo码的两个子码可以选择不同的RSC的结构。另外, Turbo码的子码个数也可以选择两个以上, 通过多个交织器并行级联而构成高维Turbo码。

Turbo码的编码器中, 交织是为了改变输入信息的顺序, 在子码RSC确定后, 交织器的类型和长度在很大程度上影响着编码的性能。由于RSC的递归特性, 大部分输入信息序列编码输出的码字重量都为无限大, 但当输入信息序列满足特定条件 (与RSC结构有关) 时, 编码则可能输出低重量的码字, 但通过对输入信息序列交织, 使得两次RSC编码后输出的码字在大部分情况下都具有较大的重量。交织不但直接影响着Turbo码的距离特性, 而且交织器的相关特性也影响着Turbo码在译码时的迭代性能。

Turbo码的优异性能得益于两个思想的组合:采用递归系统卷积码 (RSC) 作为构造子码;利用交织器将两个RSC进行并行级联。

2 迭代译码原理

2.1 信道软输出

假设编码的二元输入比特d的软信息值为∧ (d) , 其对应的编码输出比特x的软信息值为∧ (x) 。经二元对称信道 (BSC) 或高斯/衰落信道后, 则x在观察到匹配滤波输出y后的条件对数似然比∧ (x|y) 为:

对于AWGN信道, 概率密度函数为:

这里m和σ分别是噪声的均值和标准差。由上式条件概率密度函数可写为:

由式 (3) 、 (4) 得到:

将以上结果代入式 (1) 得到:

这里, 表示信道传输的可靠性, 称为信道的软输出。对于衰落信道, 是经信道后的衰落幅度。

2.2 迭代译码原理

迭代译码的关键是一个软输入/软输出的译码器, 它可获得每个译码输出比特dk对数似然比值。一个译码器在输入端能够接收并利用先验信息, 在输出端产生后验信息输出, 称为软输入/软输出译码器。软输入/软输出译码器有三个输入两个输出, 如图2所示。

∧ (dk) 是信息比特dk的先验概率的对数似然比。xk和yk是经信道传输受噪声干扰后接收到的编码比特, 由于采用的是系统编码, 其中xk就是未编码的信息比特, yk是编码的校验比特。

是信息比特的软输出 (后验概率的对数似然比) , 它定义为:

是信息比特的外信息 (非本征信息) , 它是从所有输入的、和中获得的关于信息比特的软值, 将作为下级译码中信息比特dk的先验信息。

对系统编码, SISO译码器输出的信息比特dk的对数似然比可表示成三项的和:

通常, 假定信息发送是等概率的, 因此在首次迭代的第一级译码时, 没有先验信息可用, 即。第一级译码器通过和两个输入获得信息比特的软输出, 则关于信息比特的外信息为:

在第二级译码时, 将第一级译码输出的外信息作为译码输入的先验信息, 译码器通过三个输入、和获得信息比特的软输出, 同样可获得信息比特的外信息为:

外信息作为下一次迭代中第一级译码的新的先验信息。在首次迭代中, 第一级译码和第二级译码输出的外信息是相互统计独立的, 所以从第一次迭代到第二次迭代所获得的增益较大, 但由于译码时采用相同的信息, 在后面迭代中输出的外信息相关性越来越大, 因而通过迭代改善的性能越来越小, 最后一次迭代后, 将软输出用来进行硬判决:

2.3 Turbo码迭代译码结构

Turbo-code迭代译码结构如图3所示, 它主要由两个软输入/软输出译码器 (子译码器) 组成, 子译码器用来对选定的Turbo码中的RSC子码进行译码。子译码器1将子译码器2获得的信息比特的外信息作为先验信息来对RSC1进行译码, 获得关于改进的外信息, 经交织后得到作为子译码器2对RSC2译码的先验信息。子译码器2用与子译码器1同样的方法再次产生信息比特改进的外信息, 经去交织后得到作为下一次迭代中子译码器1的先验信息。这样经过多次迭代后, 对子译码器2产生的输出去交织后进行硬判决, 得到每个信息比特的估值

图3给出的是Turbo码反馈型迭代译码结构, 但由于译码中有交织的环节存在, 带来译码延时, 使得不可能有真正意义上的反馈, 实际上使用的只能是一种流水线式的迭代结构, 如图4所示。这种流水线结构, 使得译码器可由若干完全相同的软输入/软输出的基本单元构成。

从Turbo码的迭代译码结构中可以看到, 两个软输入/软输出子译码器是其核心, 子译码器的一个重要问题则是如何对三个软输入进行处理, 以获得信息比特dk的外信息∧e (dk) 及其软输出∧ (dk) 。

3 性能仿真

在迭代次数为6, 分量码均为 (7, 5) RSC码, 交织方式为均匀交织, 交织长度分别为16384, 4096, 1024, 256, 如图5所示。从仿真结果得到的结论是:在给定信息序列长度和编码速率的条件下, 随着信噪比的增加, 不同交织长度Turbo码的性能区别开始增加, 交织长度越长, 译码性能越好。但是, 这种性能上的改善, 是以交织和解交织时延为代价的。

图6显示了迭代6次, 分量码均为 (7, 5) RSC码, 交织长度1024, 交织方式分别为均匀交织、随机交织和不加交织时的误码率随信噪比的变化关系。由仿真结果可以看出:不加交织时误码率非常高;而加上交织后, 均匀交织要优于伪随机交织。

4 结论

随着无线通信技术的飞速发展, Turbo编码技术在无线通信领域得到了广泛地研究和应用。Turbo编码技术可以获得编译码增益, 有效提高通信系统的性能。随着研究的深入, Turbo技术和OFDM技术、MIMO技术相融合, 将进一步提高系统的整体性能。

Turbo译码 篇2

关键词:Turbo码,Log-MAP算法,SW-Log-MAP算法,滑动窗

Turbo码是近年来编码理论上的一个重大突破,在大的交织器和BER近似为10-5条件下,它可以逼近理论最优的Shannon信道编码的极限。由于具有出色的纠错性能,Turbo码在各种通信系统中获得了应用,如移动通信、个人通信、深空通信、卫星通信等,其在第三代移动通信(3G)中的应用尤其令人关注。在3G系统中对译码时延要求不高(相对于语音通信而言)的非实时数据通信中广泛采用Turbo编码。Turbo码的优异性能来源于独特的码结构和迭代译码算法。

Turbo码在3G系统中结构[1]可以参见3GPP的建议3G TS25.222,它由一个内部交织器和两个结构相同的RSC分量编码器并行级联而成。Turbo码是一种带有交织器的并行级联码, 它的组成方框图如图1所示。 RSC的生成多项式可表示为G(D)=[1,g1(D)g0(D)],其中逆向反馈多项式g0(D)=1+D2+D3,前向反馈多项式g1(D)=1+D+D3。

传统的迭代译码分别对两个RSC码进行最优译码,以迭代的方式使两者分享共同的信息,并利用反馈环路来改善译码器的译码性能。Turbo码的迭代译码器的基本结构如图2所示。

Turbo译码中关于两个分量码译码器DEC1和DEC2的算法有多种,其中MAP算法具有最优的性能,但计算太复杂,因此在实际中最常用到的是既能够保证译码性能,计算复杂度又可以接受的Log-MAP算法[2]。与MAP算法相比较,Log-MAP算法[2]把乘法运算转换成对数域的加法运算,可以减少运算复杂度,更利于实际实现。尽管如此,进一步简化Log-MAP算法的运算量和降低Log-MAP对存储空间的要求对算法的具体实现具有重要意义。

传统的Log-MAP算法通过式(1)计算出对数似然比LLR

L(bk)=max(s,s)bk=1*(δk-1(s)+ξk(s,s)+εk(s))-max(s,s)bk=0*(δk-1(s)+ξk(s,s)+εk(s))(1)

其中,δk(s)=lnαk(s),ξk(s′,s)=lnγk(s′,s),εk(s)=lnβk(s),αk(s),βk(s)和γk(s′,s)分别为MAP算法中的前向递推、后向递推和分支转移概率。

max*(x,y)=ln(ex+ey)=max(x,y)+ln(1+exp{-y-x})=max(x,y)+fc(y-x),计算max*(x,y)的传统办法有两种:一是通过查表,计算纠正函数fc(y-x)=ln(1+exp{-y-x}),这种方法固然快捷,但要求大量存储空间,而且过于频繁地进行存取也不可取;二是忽略对数分量,将其简化成max(·),此时译码算法退变为次优算法Max-Log-MAP,但性能将受到影响。

1 改进的SW-Log-MAP算法

本文从以下几个方面对传统的LOG-MAP算法进行改进[3,4,5,6],它在保证译码性能的前提下,大大降低其运算复杂度和存储空间。

① 计算对数似然比LLR需要反复调用前向递归α和后向递归β,因此对αβ进行简化,这样能省掉大量的运算量。

② 计算α,β和LLR均需要分支度量γ,而γ中相同的常数在计算软输出时最终被抵消,利用这一规律对γ进行简化,能有效地减少运算量。

③ 针对译码器DEC2进行简化,省掉了DEC2的系统输入的交织操作,并对其引起的其他影响进行修正。

④ 对指数和对数运算进行简化。Log-MAP算法中的max*(·)分成两部分,其中max(·)很容易实现,因此主要困难在于函数fc(x),它是一个单调递减的非线性函数。可采用数值分析的方法对其进行简化,找到逼近fc(x)的简单计算方法,在运算量和存储空间之间取得最佳结合点。

⑤ 由于前向递归α和后向递归β所需存储空间非常大,如果将滑动窗的方法应用于SISO译码模块,将大大减少存储空间,由此得到SW-LOG-MAP算法。SW-Log-MAP算法的Turbo译码器结构框图如图3所示。

2 具体译码过程

第1步:将接收数据(xk,yk(1),yk(2))分解成(xk,yk(1))和(0,yk(2)),分别作为码字信息送到DEC1和DEC2中。

第2步:设迭代次数j=1,对于DEC1,z1k=0,k=1,2,…,M

第3步:对于DEC1,利用滑动窗方法对每块数据进行处理,比如每块数据长度取256,两块数据之间交迭长度为30。

改进后的前向递归和后向递归分别为:

α′(sk)=max*[α′(sk-1,bs1)+

γ′(sk-1→sk,bs1),

β′(sk)=max*[β′(sk+1,bs1)+

γ′(sksk+1,bs1),

其中,α′(sk-1,bs2)+γ′(sk-1→sk,bs2)],β′(sk+1,bs2)+γ′(sksk+1,bs2)],γ′(sksk+1)=mk·z1k+xk·mk+yk(1)·c1kp,max*(·)中的函数fc(x)采用拟合曲线来表示。

①保留α′(s227)作为下一块数据的α′(sk)的初值。

②根据式(3)计算每一块的外信息lk,并将每块数据中有效的软输出外信息放入总的外信息l1k

lk=ln{S1exp[α(sk)+γe(sksk+1)+β(sk+1)]S0exp[α(sk)+γe(sksk+1)+β(sk+1)]}(3)

直到最后一块数据计算完,一个SISO过程结束;

第4步:根据式(4),由外信息l1k和系统数据xk得到DEC2的先验信息z2k送入DEC2。

z2k=(l′1k)interleaver=(l1k+xk)interleaver (4)

第5步:对于DEC2,首先,根据与DEC1同样的滑动窗算法计算l2k

然后,如果j<最大迭代次数,根据式(5)由前L位外信息l2k得到DEC1的先验信息z1k,送入DEC1中。

z1k=(l′2k)interleaver=(l2k)interleaver (5)

第6步:j=j+1,如果j<最大迭代次数,继续执行第3步进行下一次迭代。

第7步:当j=最大迭代次数,利用式(6)计算总信息Λ2k

Λ2k=l′2k+z2k (6)

第8步:将Λ2k解交织得到对数似然比LLR,与0门限相比较,进行硬判决,得到译码比特b^k的估计值:

L(bk)≥0,则译码比特b^k为1

L(bk)<0,则译码比特b^k为0

第9步:执行完当前帧的译码数据后,转到第1步对下一帧数据进行译码。

3 算法性能分析

下面将通过MATLAB仿真对Turbo码的误码率性能进行研究,仿真中的相关约定如下:

①信道类型:AWGN。

②编码方案:3GPP提出的Turbo码编码方案。

③调制类型:BPSK。

④SW-Log-MAP算法的滑动窗参数:每块数据长度为256,两块数据交迭长度为30。

⑤交织长度为1024,8次迭代。

图4所示的仿真表明:虽然改进的SW-Log-MAP在算法复杂度和存储空间上比传统的Log-MAP性能减少了很多,但是保持着原有Log-MAP算法的优良性能。

参考文献

[1]3GPP TS25.222V3.5.0,3rd Generation Partnership Project;Tech-nical Specification Group Radio access Network;Multiplexing and channel coding(TDD),2000-12[Z].

[2]Robertson P,Hoeher P,Villebrun E.Optimal and sub-optimal maxi-muma posteriori algorithms suitable for turbo decoding[J].European Trans.On Telecommun.Mar.-Apr.1997,8(2):119-125.

[3]Pietrobon S S.Efficient Implementation of Continuous MAP Decoders and a Synchronisation Technique for Turbo Decoders[C].Proc.Int.Symp.Inform.Theory Appl.,Victoria,Canada,Sep,1996:586-589.

[4]Benedetto S,Divsalar D,Montorsi G,et al.Soft-Output Decoding Algorithms for Continuous Decoding of Parallel Concatenated Convolu-tional Codes[C].Proc.ICC’96,Dallas,USA,June,1996:112-117.

[5]Viterbi AJ.An Intuitive Justification and a Simplified Implementation of the MAP Decoderfor Convolutional Codes[J].IEEEJ.Selected Ar-ea in ommun.,1998,16(2):260-264.

Turbo译码 篇3

随着高性能数字通信系统需求的迅速增长, 要求信息传输的误码率最小。信道编码是消除或减少误码率的有效手段之一, Turbo码是目前最好的信道编码方案, 它可以获得几乎接近shannon理论极限的译码性能[1]。

Turbo译码器的设计, 是通过构建一个Turbo译码器和以太网络通信的SoPC (System-on-a-Programmable-Chip) 系统来实现的, 译码器的输入和输出数据是借助以太网传输的。同时, Turbo译码器是改进型的, 即在传统译码器结构上添加两个权重模块, 这两个模块的引入是为了补偿Turbo编码器中被删除的校验位的, 这样可提高译码的性能[2,3]。首先, 在Xilinx ISE 9.1i中设计Turbo译码器的硬件电路, 并用ModelSim SE 6.1做功能仿真和时序仿真;然后, 利用Xilinx EDK (Embedded Development Kit) 构建一个内嵌MicroBlaze处理器的SoPC系统, 编写以太网络模块的C程序代码, 通过系统的OPB (On-chip Peripheral Bus) 总线将Turbo译码器 (作为一个IP核) 和以太网络模块加入到SoPC系统中, 用软硬件协同设计的方法来开发整个系统;最后, 把整个SoPC系统的硬件比特流和软件程序下载到Spartan 3s1500MB开发板上进行验证, 将译码输出信息通过以太网口传输到PC机上。

1 Turbo译码器的FPGA实现

Turbo译码器结构 (如图1所示) 是对传统译码器结构的改进, 增加了输入存储、权重模块1和权重模块2三个模块。其中, 输入存储就是为了存储实时通信的数据, 而两个权重模块就是分别对两个分量译码器产生的外信息值进行加权。分量译码器采用的译码算法是软输出的维特比算法SOVA (soft-output Viterbi algorithm) 。

Turbo译码器的FPGA (Field Programmable Gate Array) 实现[4]分为五个模块, 分别是:顶层模块、Turbo译码模块、SOVA分量译码模块、权重模块和交织/解交织模块, 采用超高速集成电路硬件描述语言VHDL (Very-High-Speed Integrated Circuit Hardware Description Language) 编写各模块代码, 利用ISE和ModelSim软件进行仿真、综合、布局布线。

1.1 顶层模块

Turbo译码器的顶层模块, 主要实现FPGA板与PC机之间的通信, 获得译码的输入信息, 包括系统信息和校验信息, 并对译码输入信息进行存储和译码, 并输出译码输出信息。顶层模块的总体框架如图2所示。

该模块用ISE的Core Generator产生了三个SRAM, 分别存储系统信息、校验信息1和校验信息2。由于本设计中帧长为1024位, 故空间大小定义为1024×16。这三个SRAM的写入是在该模块完成的, 而读出是由Turbo译码模块控制的, 即由Turbo译码模块提供三个SRAM的读允许信号及读地址信号。

1.2 Turbo译码模块

Turbo译码模块, 主要实现的功能是对接收到的系统信息和校验信息进行Turbo译码, 产生Turbo译码器的译码输出信息。该模块是根据所设计Turbo译码器的结构来编写代码的, 主要调用了SOVA分量译码模块、权重模块和交织/解交织模块。迭代结束后, 直接将SOVA2产生的似然值作为Turbo译码器的译码输出, 而对似然值进行解交织和硬判决的过程是在SOVA分量译码模块完成的。

SOVA分量译码模块, 主要实现的功能是利用SOVA译码算法产生似然值, 并对似然值进行解交织和硬判决, 以及计算外信息值。权重模块实现的是图1中权重模块1和权重模块2的功能。交织/解交织模块实现的是图1中交织器和解交织器的功能, 交织器采用的是分组交织器[5]。

Turbo译码模块的功能仿真结果如图3所示。假设编码器的输入序列为0100110110101110, 产生的校验信息1为0010001000001010, 校验信息2为0101010001010100。从仿真波形中可以看出, 译码器输入的系统信息 (is_sram_di) 为0100110110100110 (经过加噪) , 则译码器的译码输出信息 (sova_datao) 为0100110110101110, 与编码器的输入序列是一致的, 纠正了译码输入中的一个错误, 说明Turbo译码模块能实现纠错功能。

2 SoPC系统的设计

EDK是Xilinx公司特别为FPGA设计的SoPC软硬件开发工具[6], 利用EDK的设计流程, 可以开发内嵌MicroBlaze与Power PC 处理器的Xilinx嵌入式系统。本文利用EDK软件构建了一个内嵌MicroBlaze处理器的SoPC系统[7], 通过系统的OPB总线将Turbo译码器和以太网络模块加入到SoPC系统中, 并把生成的硬件比特流和软件程序下载到Spartan-3S1500开发板上进行验证。Spartan-3 FPGA芯片是一款高性能的系统级逻辑器件, 特别适合于嵌入式系统设计。

2.1 以太网络模块

为了将译码器的输入和输出数据借助以太网传输, 实现动态传输和实时纠错, 需要构建一个以太网络通信模块, 用来实现PC机和FPGA开发板之间的网络通信。

首先, 利用EDK的软核——OPB 10/100 Ethernet MAC, 作为开发板上网络芯片的控制器, 网络芯片是BroadCom公司的单物理层芯片BCM5221;然后, 利用EDK软件提供的LwIP函数库[8], 来编写网络程序。该网络采用http协议, 基于C/S模式, 将FPGA板作为服务器, PC机作为客户机, 用网页来实现浏览, 只要在浏览器中输入开发板的IP地址, 即可访问该板。利用EDK软件提供的LwIP函数库, 用C语言编写以太网络模块的程序代码, 主要有两个:一是用来建立TCP/IP网络连接和设置板的IP地址、子网掩码、网关等的程序;二是利用http协议来进行网页操作的程序。

2.2 SoPC系统

首先, 在EDK软件平台中, 选择主菜单“Hardware”下的“Create or Import Peripheral...”选项, 生成Turbo译码器IP核, 并进行相应修改;然后, 将Turbo译码器IP核加入SoPC网络系统中, 并将整个SoPC下载到Xilinx Spartan-3S1500开发板上进行硬件验证。所构建的整个SoPC的综合结果如图4所示。

这样, 只要在浏览器中输入FPGA开发板的IP地址即可访问“EDK网络传输系统” 网页 (如图5所示) 。Turbo译码器的输入信息 (包括系统信息和校验信息) 和输出信息可在该网页中显示。

本方案得出的误码率与信噪比的关系如图6所示。

3 结 论

本文利用EDK构建了一个能实现动态传输的Turbo译码SoPC系统。编写了各功能模块的VHDL代码, 在ISE和ModelSim中仿真、综合、布局布线;并将Turbo译码器作为一个IP核加入到SoPC系统中, 在Spartan-3S1500开发板上验证, 通过网络通信得到了Turbo译码器的译码输入信息和输出信息。实验结果表明, 所设计的Turbo译码器能实现网络通信和信道纠错。

参考文献

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

[2]Fujii H, Saba T, Sasase I.Novel decoding algorithm with weighting ofextrinsic information for punctured turbo-codes[C]//4th EuropeanPersonal Mobile Communications Conference, 2001.

[3]蔡剑卿, 陈怀铭, 黄春晖.Turbo译码器在数据协调中的应用与仿真[J].现代电子技术, 2008, 274 (11) :40-42.

[4]Sharma S, Attri S, Chauhan R C.A Simplified and Efficient Implemen-tation of FPGA-Based Turbo Decoder[J].Performance, computing andcommunications conference, 2003, 4:207-213.

[5]高晶, 达新宇, 褚振勇.基于FPGA的改进型分组交织器的设计与实现[J].微计算机信息:嵌入式与SOC, 2008, 24 (6-2) :228-230.

[6]Xilinx Inc.Embedded System Tools Guide v6.3, 2004.

[7]Embedded System Tools Reference Guide[EB/OL].http://www.xil-inx.com/ise/embedded/edk9_1docs/est_rm.pdf.

Turbo译码 篇4

关键词:基于MATLAB,Turbo码,译码算法,研究分析

Turbo码属于一种无线通信应用程序的高性能纠错码, 主要应用于外层空间卫星通信。不同的Turbo码在构件码、串联方案以及SISO算法等方面都存在着差异。传统的编码在代数结构方面有一定的规则性, 随着MATLAB的应用, MATLAB为Turbo码译码算法研究提供了新的思路。本文主要结合相关文献报道, 就基于MATLAB的Turbo码译码算法研究分析如下:

1 Turbo码编译码结构分析

1.1 编码结构分析

两个相同的RSC分量编码器在交织器作用下通过并行级联可形成Turbo码编码结构。Turbo码编码的主要原理是:需要进行编码的信息序列通常按照三路进行编码, 其中一路完成信息序列向复用器的送入, 第二路是对送入复用器的信息序列通过RSC编码器完成编码, 同时进行序列1的检验, 第三路则是完成信息序列向交织器的传送, 此时原有的序列会被打断, 进而形成新的序列, 将形成新的序列继续送入RSC编码器进行后续编码, 同时对得到的序列2进行校验, 在具体的编码过程中为了提高工作效率, 此时前面得到的两个校验序列会被送入到删余阵。此时可得到最后的编码序列, 并对其进行序列校验, 此时校验序列和未编码的序列服用, 可形成最终需要的编码码字X[1]。最早的Turbo码编码器主要以并行级联卷积码结构 (Parallel Concatenated Convolutional Codes, PCCC) 为主, 该机构是由C.Berrou等学者在1993年提出的。图1所示表示的就是PCCC编码结构的示意图。从图中可以看出, Turbo码包含了交织器、分量编码器、删余矩阵以及复接等。

编码结构的运行过程主要是:信息序列{uk}的长度为N, 这一信息序列被送入第一个分量编码器后会输出, 并将其送到复接器, 与此同时, 信息序列{uk}通过交织器的交织, 可将交织完成后的序列送到第二个分量编码器, 交织器属于一个交织映射函数, 交叉长度为N, 通过不同的分量编码器可得到两个不同的校验序列, 也就是, 通过删余矩阵可以提高系统频谱以及码率的最大化利用。通过删余矩阵的校验和原有系统输出的序列进行复接, 从而得到了Turbo码编码器的输出码字序列。

1.2 Turbo码并行译码结构

两个相同结构的译码器、交织器以及解交织器最终迭代循环过程中完成了译码过程, 进而形成Turbo码并行结构。Turbo码并行译码的原理主要是对于接收的信息序列可进行复用, 同时在译码器1中送入信息位、校验位以及先验信息等, 此时有译码器1对RSC1完成译码, 通过译码可得到不同序列的似然值, 对于产生的外部信息还需要经过交织器处理, 并将得到的信息传递给译码器2, 此时的信息属于先验信息, 在RSC2的译码作用下, 继续进行译码, 再次得到似然值, 经过交织器的译码, 所有信息科反馈到译码器1, 上述所有的工作均是为下一步译码奠定基础。通过重复性的N次迭代, 使得外部信息逐渐趋于稳定, 最终得到信息序列的最佳估值序列。

2 Turbo码常用迭代译码算法分析以及对比研究

Turbo码常用迭代译码算法主要有四种, 分别是: (1) MAP算法 (最大后验概率译码算法) , 该算法是以网格的软输入软输出为基础的译码算法, 通过对噪声信道下输入与输出的逐一估计进行译码, 该运算过程中有大量的乘法运算以及指数运算; (2) SOVA算法, SOVA算法实际上是veterbi算法的扩展, 也就是从所有可行的路径中找出最优的、最大似然序列检测; (3) MAX-LOG-MAP算法, 该算法是将MAP算法中的乘法运算以及指数运算全部转化为对数域内进行, 结合雅克比等式对运算进行简化; (4) LOG-MAP算法, 该算法也是对MAP算法中运算的转化, 同样的是将MAP运算中的乘法以及指数转化到对数域, 避免了指数运算, 将盛饭转化为加法运算。

在这几种常用的算法中, MAP属于Turbo码最佳的译码算法, 该方法能够直接通过计算信息比特完成后验概率, 在具体计算过程中由于运算量太大, 而且每个比特都需要进行 (4×2V) 次加法以及 (6×2V+1) 次的乘法运算, 经过这些计算, 最终需要的存储量可达到 ( (N+1) ×2V+1) , 上述计算公式中, v表示的是编码存储, 而N表示的是编码长度;虽然理论上是最佳的, 但是实际应用难度较大。而LOG-MAP算法则是对数域的MAP算法, 也就是将计算过程中的部分乘法运算转化为加法运算, 这样在计算过程中只需要完成8次乘法运算以及 (15×2V+9) 次加法预算, 在存储方面保持不变, 一定程度上降低了运算的难度, 相对于MAP算法, 更容易实现。MAX-LOG-MAP则是对LOG-MAP算法的改进, 改进过程中将其中的部分运算转化为最大值的运算, 计算过程中同样的需要完成8次乘法运算和 (10×2V+11) 次加法运算。该方法对其进行了较大的改进, 但是影响到了译码性能。在这些算法中, SOVA运算量是v A运算量的2倍, 而LOG-MAP算法的复杂性又是SOVA的两倍。MAX-LOG-MAP的复杂性则介于上述两者之间。

3 基于MATLAB的Turbo码译码不同译码算法对Turbo码能的影响分析

Turbo码能计算过程中主要有四种运算方法, 其中性能最好的是MAP算法, MAP算法具有最优的译码算法, 图2表示的是MAP的译码算法, 帧长为1024, 通过迭代1~10词的仿真运算过程, 从图中可以看出, 在信噪比影响较小的情况下, MAP算法和LOG-MAP算法的性能差异较小, 但是随着迭代次数的增加, 误码率的曲线坡度明显变大, 比如在10-5数量级上, 在编码增益方面, 迭代10次比迭代4次高0.3d B, 当迭代次数超过6次之后, 迭代次数对于编码增益的影响较小;LOG-MAP译码算法属于简化译码算法, 其译码性能略低于MAP, 图3表示的是LOG-MAP译码算法, 从图中可以看出, 信噪比增加的情况下, 误码率降低, 而且随着迭代次数的增加, 曲线坡度变化较快, 同样的在迭代次数超过6次之后, 迭代次数对于编码增益的影响较小, 在整体译码性能方面, 和MAP之间差异较小;MAX-LOG-MAP算法虽然复杂度较低, 但是译码性能较差, 图4表示的是MAX-LOG-MAP译码算法, 从图中可以看出, 信噪比增加的额情况下, 误码率下降较快, 随着迭代次数的增加, 误码率曲线收敛较快, 在编码性能方面, 不及MAP以及MAX-LOG-MAP算法。

通过对上述不同算法的分析, 由于其复杂性影响到实际的操作性, 所以通常要对其进行优化处理, 对计算过程进行简化, 使得算法更容易实现, 当然简化过程中会损失一定的性能, 也就是说简化后的算法虽然易于实现, 但是在性能方面却不及复发程度高的算法, 综合不同算法的难易程度以及性能, LOG-MAP算法相对于而言属于Turbo码译码过程中最佳的, 该算法损失的性能较少, 同时计算过程也得到了简化[2]。

4 结语

基于MATLAB的Turbo码译码算法较多, 而且不同的算法在实现难易程度以及性能损失方面有一定的差异性, 尽管MAP算法以及LOG-MAP算法相对而言性能是最佳, 但同时也有一定的不足之处, 这些都是在运用过程中需要注意的。

参考文献

[1]叶春燚, 李晓毅, 李子, 等.紫外光通信系统Turbo码译码性能研究[J].现代电子技术, 2009 (11) .

Turbo译码 篇5

Turbo码又称并行级联卷积码( Parallel Concatenated Convolutional Codes,PCCC) ,1993年由Berro[1]等人在ICC国际会议上提出。由于其充分利用了Shannon信道编码定理的随机化编码条件,因此获得几乎接近Shannon理论极限的译码性能。Turbo码在低信噪比应用环境下有着如此优异性能,这使得其在卫星通信中有着很大的应用前景[2,3]。新一代卫星导航系统导航信号体制也将Turbo码作为信道编码的方案之一。但是,Turbo码存在着译码复杂度大、译码时延长的问题,这使得实现和应用都受到了一定的局限。本文实现了一种导航信号用的码长为588、码率为1 /2的Turbo码的FPGA编码器和译码器的布局布线、综合优化。实现结果表明,编码器消耗逻辑资源少于1% ,存储器资源少于1% ,最高主频高于200 MHz,在最大译码迭代次数为5时,译码器消耗逻辑资源1% ,存储器资源少于1% ,最高主频高于200 MHz。

1 导航用 Turbo 码结构

Turbo优异的译码性能源自于它独特的编码结构和迭代译码的思想。在Turbo码编码器中,为了得到更好的编码性能,一般采用递归系统卷积码( Recursive System Convolutional Codes,RSC) 作为分量编码器。为了避免重复输出原比特序列,Turbo码的子编码器采用了RSC而不是非系统码( Nonsystem Convolutional Codes,NSC) ,这样对于相同的限制长度,虽然两者具有相同的最小自由距离,但在较小的信噪比时,前者的性能要略好一些。和传统的卷积码相比较,RSC码最大的特点是它存在着反馈。常用的RSC编码器一般由2 ~ 4级移位寄存器构成,如图1所示。

编码器输入信息位294 bit,编码开始后,在294个连续的时钟内输出588 bit,在随后的6个时钟内输出12个卷尾比特,同时编码器归零。编码过程还包括交织器[4]和删余操作[5],向上进行信息编码,向下进行卷尾编码。分量码编码器内包含3个寄存器,即编码器记忆深度为3,状态数为8,整体是一个RSC码编码器,其生成多项式矩阵为:

式中,第1项的1表示信息位,即Turbo码是系统码;第2项分子多项式即对应于前馈多项式,分母对应于反馈多项式。Turbo内交织器的交织深度为294。删余表中0表示该比特删除,1表示该比特输出。删余表的信息比特和卷尾比特的删余规则如表1所示。

交织深度为294,输入分辨率为5 bit,迭代次数为5,采用Max-Log-MAP算法的译码器性能曲线如图2所示。

图2中的曲线表明,在输入信号信噪比为3. 5d B时,Turbo译码器就能将误码率从3. 38×10-2降低到1. 85×10-7。

2 Turbo 编码器 FPGA 实现

编码器的硬件实现结构如图3所示。首先地址产生器获取帧长信息,完成交织地址生成的准备过程,同时信息序列被依次写入双口RAM,在待一帧数据写完后,地址产生器开始生成顺序地址和交织地址,双口RAM按2个地址读取信息序列X和交织后的信息序列X' 进行RSC编码,最后经删除与复接单元输出。

Turbo编码器RTL级原理如图4所示。编码器包含1个控制模块,负责控制整体的时序逻辑; 1个交织ROM,用于存储交织图样; 1个消息RAM,用于缓存输入消息段数据帧; 2个RSC编码器,进行1 /2码率的Turbo编码,对2个RSC输出的码字中校验位进行删余,得到码率1 /2的Turbo码,并进行适当的控制,输出12个卷尾比特,完成编码。

Turbo编码器在Model Sim下的仿真波形如图5所示。图5中,clk为时钟信号,rst为复位信号,din为编码输入数据,ipt _ rqs为编码数据输入帧头,ipt_vld为编码数据输入有效标志,opt_vld编码输出有效标志,code为编码输出。具体细节这里不再给出,经过局部放大,可以验证,编码无误。

编码器消耗寄存器数量为44,RAM资源均为3 234 bit,在Altera EP4SE360F35I4芯片上实现编码器消耗逻辑资源少于1% ,内存资源少于1% ,最高主频高于257. 56 MHz。

3 Turbo 译码器 FPGA 实现

目前,Turbo码译码算法主要分为两大类: 由Viterbi演化而来的软输出维特比算法 ( Soft OutputViterbi Algorithm,SOVA )[6]算法和性 能优异的BCJR算法[7]。SOVA是一种最大似然算法( ML) ,具有最低的译码复杂度,但是性能最差,并且译码性能不够稳 定。BCJR则是最大 后验概率 算法( MAP) 。BCJR算法具有最优的译码性能,但是由于计算中存在着大量的乘法和指数运算,译码复杂度高,不便于硬件实现,通常作为理论分析的参考。这2类算法在研究发展中自身也演变出很多算法,SOVA类的有传统SOVA、滑动窗SOVA和双向SOVA等[6],MAP类的有MAP、Log-MAP和Max-LogMAP[8,9,10]。Log-MAP算法和Max-Log-MAP算法都是由MAP算法简化而来,通过将原来的运算转化到对数域进行,从而将乘法运算变成了加法运算,避免了指数运算,大大降低了译码复杂度。就译码性能而言,Log-MAP算法仅仅次于MAP算法,Max-LogMAP算法略微次于Log-MAP算法。就译码复杂度而言,Max-Log-MAP算法的译码复杂度低于LogMAP算法,更易于硬 件实现,特别是FPGA实现[11,12]。

这里不再详细给出Turbo译码算法的推导过程,仅给出Turbo码译码Max-Log-MAP算法的FPGA实现方案。与编码器相对应的基于FPGA的Turbo译码器结构如图6所示,译码器1和译码器2分别与分量编码器1和分量编码器2相对应,交织器和解交织器与编码器中的交织器交织规则一致。译码器1软判决输出经交织后作为译码器2的先验信息Λ2(dk),与y2k和y1k一起进行译码; 译码器2软判决输出经解交织后又反馈回译码器1作为其先验信息Λ1(dk),参与下一轮迭代,这样构成了一个循环迭代译码结构。

但是考虑到具体FPGA实现时,如果将一个完整的码字存入RAM计算α、β和 γ ,需要的RAM资源将随着码长显著增长,从而在实际实现时考虑滑窗处理。滑窗算 法示意如 图7所示。图7中,dummy Beta表示Beta的训练过程。滑窗算法要求计算dummy Beta是因为将数据分为多个窗口会打破传统译码器后向分支量度计算的连贯性,使得窗口初始值的设定成为困难,如果想减少由于初始化造成的性能降低,则必须对后向分支量度进行训练。这里为了减少后期对数据翻转的操作要求,采用在每个窗口内逆序输入训练所需数据。滑窗算法的每个操作窗口内,顺序输入数据用于Alpha计算的同时,逆序输入数据用于dummy Beta的计算来训练Beta ,与此同时,Beta从dummy Beta的上一个操作窗口获得训练后的初始化值,计算后向分支度量,并计算LLR和Le ,直到最后一个窗口,Beta的初始化值将来自尾比特的初始化过程tb Init。

Turbo译码器RTL级原理如图8所示。Turbo译码器包含1个译码器控制模块,用于译码器总体的时序逻辑控制; 1个软输入软输出译码器( Soft Input Soft Output,SISO) ,用于Max-Log-MAP译码算法的计算和译码判决输出。译码器的量化采用分集量化处理,迭代次数为5,外层信道信息LLR量化为5bit,其中1位表示符号位,2位表示整数位,2位表示小数位; 中层先验信息( 外信息) LLR量化为7 bit,其中1位表示符号位,4位表示整数位,2位表示小数位; 内层状态量度信息量化为10 bit,其中1位表示符号位,6位表示整数位,3位表示小数位。具体的参数确定基于前期的量化仿真结果。滑窗的窗口长度选择为21,故而码长294×2 + 12 = 600的码字,每个分量码在卷尾初始化后的294个数据深度中,可以分为294 /21 = 14个窗口。

Turbo译码器在Model Sim下的仿真波形如图9所示。图中,clk为时钟信号; rst为复位信号; data为译码输入数据; rding为译码输入数据有效标志; opting为译码输出有效标志; infodec译码输出信号。具体细节这里不再给出,经过局部放大,可以验证,译码无误。

该译码器消耗寄存器数量为991,RAM资源均为23 832 bit,在Altera EP4SE360F35I4芯片上实现编码器消耗逻辑资源少于1% ,内存资源少于1% ,最高主频达到217. 89 MHz。

4 结束语

Turbo译码 篇6

Turbo码具有几乎接近Shannon理论极限的译码性能[1]。但Turbo码存在着译码复杂度大、译码时延长的问题,同时早期基于并行结构的Turbo码在应用中发现存在所谓的错误平层,不适于在高要求场合使用(如密码通信)。一系列改进的Turbo译码方案被提出,如MaxLog-MAP降低了译码器硬件实现复杂度,滑动窗时序减少了译码时延,1996年S.Benedetto等人提出了串行Turbo码解决了错误平层的问题。本文针对密码通信Turbo译码器硬件实现方向进行研究,采用串行级联结构与Max-Log-MAP算法,在硬件译码算法中提出一种新时序,译码延时比滑动窗小,并且消除了其带来的码性能损失。

2 串行Turbo编译码器原理

2.1 串行Turbo码编译码器结构

串行Turbo码由内码外码2个RSC子码级联而成,根据级联与子码选取方式不同,码构造方式很多,图1和图2分别为本文设计中所用的编码译码结构,本文编码器是由2个(7,5)RSC子码串联而成。图1中左边为原始信息输入端称为外码编码器,经过外码编码得到的校验信息与原信息复用交织后送入右边的内码编码器,内码编码调制后直接送入传输信道。对应于其编码结构,图2中的译码器也分为内码译码器(MAP1)与外码译码器(MAP2)。其译码过程为:内码译码器将信道软输入解译后输出软概率信息,解交织解复用后送到外码译码器译码,外码译码器译完1帧计算出外信息送回内码译码器迭代,如此循环,直至迭代结束由外码译码器输出硬判决信息,译码过程结束。

2.2 Max-Log-MAP译码算法

为了方便硬件实现,本设计中采用MAP算法在对数域上近似的Max-Log-MAP算法。该算法将原MAP算法中大量的乘法运算映射到加法,而后又将取对数运算用雅可比公式近似成比较取大运算,在实现中只需完成加法、比较及选择取大运算,十分适合FPGA设计[2,3]。

3 窗口二分时序的译码改进

3.1 经典时序的问题

Turbo译码在计算第k时刻后验概率(LLR)时,需要对应第k时刻的3个状态度量,即前向、后向及分支度量,分支度量可以随时计算,但前向度量须由前向后逐个递推得到,而后向状态度量须由后向前逐个递推得到。这样,要递推完所有k时刻的前后向度量才能开始计算LLR,设计算每个时刻度量需要时间T,则帧长为L情况下递推完前向度量时延LT,计算后向度量与后验概率LLR也需LT的时延。因此,计算一帧数据的总时延为2LT。经典译码时序如图3所示。

为满足现实通信中实时译码的需求,出现了滑动窗技术,其时序如图4(S=L/N),主要思想是将一次迭代分为N段,不用等所有的前向递推结束就可开始输出后验概率,第1段前向递推从1递推到S,第2段开始即从S处开始后向度量递推,同时开始输出S→1的LLR,而与此同时递推第S到2S的前向度量,以此类推。当所有的前向度量递推完毕时,还有S长度(L→L-S段)的后向度量与LLR未计算,即再延迟ST的时间即可完成一次迭代,总时间为(L+S)T=(1+1/N)LT,比经典算法节约了(1-1/N)LT时延,N越大省时越多。

滑动窗使Turbo码的时延大大降低,提高了其工程使用价值,但其后向度量是从中间开始递推的,其初始度量值未知,给递推带来了误差,离窗口后向递推起始点越近损失越大,窗口越多码性能越低。有些改进的滑动窗算法在后向递推时先做长度为S的初始化工作[4],得到窗口处初值后再计算LLR,但这种做法使码性能较经典时序有所损失。为此,在深入研究了其问题根源的基础上,笔者提出了一种比滑动窗更快速且无码性能损失的新时序,其LLR分为两部分并行输出,因此称之为窗口二分法。

3.2 窗口二分法译码改进

经研究发现,递推进行到一半时刻开始,前后度量值开始有了交迭,而此时,已经具备输出LLR的条件了。因此,只要将时序分为前向后向两部分,存储下前LT/2时间的前后向度量值,从递推的一半时刻开始,前向时序输出L/2→L的LLR,后向时序同时输出L/2→0的LLR,只需LT/2的时间即可输出L全部的LLR,加上前面递推的LT/2时间,则一帧译码时间只需要LT,比滑动窗算法的(1+1/N)LT还少。同时,前向递推和后向递推过程都没有中断,没有码性能损失。其时序关系见图5。

对3种时序的性能进行直观对比,结果见表1。可见,“二分法”时序在译码时间上最为节省。

4 Matlab验证与硬件实现

4.1 Matlab性能验证

本文采用以下参数在Matlab中对算法进行验证。仿真参数为:译码算法Max-Log-MAP,帧长256;码率1/4;BPSK调制高斯白噪声信道;行列交织;最大发送数据次数为2.56×108;在SNR=5时,译码后误码率低至3.9×10-8,纠错前的误码率为1.04×10-1。

仿真结果显示,在原始错误比特达26 706 698 bit的情况下,经过本文结构时序译码,只剩下10 bit的错误,误码率极低。

4.2 译码器FPGA实现

对图2的译码器结构进行硬件化设计,其内外译码器采用窗口二分法时序,在Xilinx的Spartan3上综合并通过了布局布线后仿真。图6为实现窗口二分时序的硬件数据流结构,在前LT/2时钟内译码模块只进行α(前)β(后向)度量计算并存入相应的RAM,从LT/2开始llr_α读出β_Ram中的数据计算L/2→L部分LLR,同理,llr_β按相同时序输出L/2→0的LLR,即可并行二分输出LLR。

基于以上结构,采用Verilog语言进行实现并用ISE平台综合,用Modelsim进行时序仿真,其译码性能与前面Matlab验证相当,同时满足了窗口二分法的时序要求,保证了译码器性能,同时提高了译码速度。

参考文献

[1]BERROU C,GLAVIEUX A,THITIMASJSHIMA P.Near Shannon limit error-correcting coding and decoding:Turbo-codes[C]//IEEEInternational Conference on Communication.Geneva,Switzerland:IEEE Press,1993:1064-1070.

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

[3]BENEDETTO S,DICSALAR D,MONTORSI G,et al.A softinput softoutput APP module for iterative decoding of concatenated codes[J].IEEE Communication Letters,1997(1):22-25.

【Turbo译码】推荐阅读:

Turbo码译码05-15

编码译码08-17

上一篇:电费回收风险及防范下一篇:数学课要让学生乐学

本站热搜

    相关推荐