基于SW-Log-MAP算法的Turbo-SISO译码器的设计与实
现
蔺吉顺;刘东华
【摘要】Turbo码通过软输入、软输出(SISO)的迭代译码达到了接近Shannon
理论极限的性能,为了改进其译码延时较大的缺点,设计了一种可单芯片实现的、支
持Turbo译码的滑动窗Log-MAP译码器(SW-MAP),并在XilinxVeritex-4FPGA
上用VerilogHDL语言进行了仿真.结果表明,使用该译码器对CCSDS标准Turbo
码译码,可以达到10Mbit·s-1的数据处理速率,且与软件仿真相比性能损失在0.1
dB以内.
【期刊名称】《黑龙江大学自然科学学报》
【年(卷),期】2014(031)005
【总页数】6页(P691-696)
【关键词】Turbo码;SW-Log-MAP;FPGA;SISO迭代译码
【作者】蔺吉顺;刘东华
【作者单位】内蒙古民族大学机械工程学院,通辽028000;内蒙古民族大学机械工
程学院,通辽028000
【正文语种】中文
【中图分类】TN911.22
0引言
Turbo码是1993年由法国不列颠通信大学的两位教授Berrou和Glavieux提出
的[1],由于Turbo码将Shannon预想的具有随机特性的码设计付予实现,因
此取得了接近香农限的优异性能[2-3]。Turbo码一般由两个分量码经由交织
器并行级联构成。译码时通过分量译码器之间外部信息的交换提高性能,通常分量
译码器采用基于最大后验概率及其简化算法的软输入,软输出译码,复杂性较高。
随着可编程逻辑芯片的发展,在单片FPGA芯片上实现Turbo迭代译码器成为可
能。
本文设计了一种基于滑动窗对数最大后验概率译码算法的软输入、软输出分量译码
器,该译码器已经成功应用于卫星通信系统中。
1Turbo码的编译码原理
1.1编码原理[4-6]
通常Turbo码编码采用两个递归系统卷积码(RSC)通过交织器并行级联,其结构如
图1所示。在编码过程中,两个分量编码的输入信息序列相同的、长度为N的信
息序列{uk},在送入分量编码器1进行编码的同时作为系统输出{}直接送至复接器,
同时{uk}经过交织器I后的交织序列{un}送入分量编码器2。其中,n=I(k),0≤n,
k≤N-1。I(·)为交织映射函数,N为交织长度,即信息序列长度。两个分量编码器
输出的校验序列分别为{}和{}。为提高编码率,可以将分量编码器输出的校验序列
经过删余后(得到{})再与系统输出{}一起经过并串变换构成码字序列{ck}。CCSDS
标准建议的Turbo码的分量码结构如图2所示。
图1Turbo编码器Fig.1Turboencoder
图2CCSDS建议的Turbo分量编码器Fig.2CCSDSrecommended
componentencoder
1.2译码器
Turbo码迭代译码器的结构如图3所示。译码器主要由与分量编码器对应的分量
译码器和交织器、解交织器组成。译码时接收序列Y在送入译码器之前首先经过
并串变换,分成系统序列{和校验序列{}作为分量译码器输入。DCTC对于第k个被
译比特,D-CTC译码器中每个分量译码器的输入都包括系统信息或、校验信息{}
和先验信息(uk)。分量译码器的输入先验信息(uk)是另一个分量译码器生成的外部
信息(uk)经过解交织/交织后的值,译码输出为对数似然比Λi(uk),上述上标i=1,
2,I(k)表示交织映射。
图3Turbo迭代译码器Fig.3Turboiterativedecoder
在迭代过程中,分量译码器1的输出Λ(1)(uk)可表示为系统信息、先验信息(uk)
和外部信息(uk)之和的形式,其中(uk)=(uI(k))。在第一次迭代时(uk)=0。同样,
对于分量译码器2,其外部信息(uI(k))为输出对数似然比Λ(2)(uI(k))减去系统信息
和先验信息(uI(k))的结果,其中(uI(k))=(uk)。外部信息(uI(k))解交织后反馈为分量
译码器1的先验输入,完成一轮迭代译码。重复进行上述信息交换过程即实现迭
代译码。在迭代译码完成后,以分量译码器2的输出对数似然比经过解交织后硬
判决输出译码结果。由于分量译码器的输入输出均采用软信息数据,因此分量译码
器也称为SISO译码器。
2SW-Log-MAP译码算法
2.1最大后验概率译码(MAP)原理
MAP算法的基本思想是根据最大似然译码原理,计算在接收采样条件下不同发送
符号的概率p(uk=u|Y)并将接收采样判决为概率值最大的信息符号,即
在算法描述中,用e)和(e)分别表示卷积码网格图中k时刻到k+1时刻的分支e的
起始状态和终止状态,k时刻输入信息比特和起始状态唯一确定了输出码字、结束
状态以及网格图中的分支,其中sEk(e)=(e)。k时刻译码输出信息比特概率P(u)为
k
对于递归系统卷积码编码器,当k时刻状态sk已知时,k时刻以后发生的事件与
之前的输入无关,等效于一个Markov源。因此,式(1)中联合条件概率αk(s)和
βk(s)可分别通过前向和后向递推计算得到
分支度量γk(e)可以用Baysian公式计算
其中,第一项为网格图中分支(边)的状态转移概率,由信息比特的先验信息La(uk)
决定;第二项P(Xk|e)根据Xk是否与边e有关而取值为1或0;最后一项根据信道模
型的不同而有所区别:对于加性高斯白噪声(AWGN)信道上采用BPSK调制的传输
系统,P(Rk|Xk)为均值为(2uk-1)、方差为N0/2的高斯分布概率密度函数,其中
ES为信号功率,N0为高斯白噪声的双边功率谱密度。
在MAP算法中涉及大量运算,考虑到对数化不改变函数的单调性,因此可以将
MAP算法中的αk(s)、βk(s)和γk(s)计算过程对数化,即得到Log-MAP算法。
2.2SW-Log-MAP译码算法[7-8]
2.2.1算法描述
MAP算法和Log-MAP的译码延时较大,不适合工程应用。SW-Log-MAP算法
的基本思想是将数据帧分成多个数据块,然后分别对每个数据块进行译码。其思路
是在划分数据块时使相邻数据块的头尾有一部分比特重复,然后通过修正MAP算
法使译码操作在某个固定的延时D之后进行符号判决,这就是滑动窗Log-
MAP(SW-MAP)算法。SW-MAP算法推导的假设条件与推导MAP算法时的假设
条件相同,在MAP算法基础上修改βk(s)的计算过程:
1.初始化后向递推计算联合条件概率(k>D):βk(sj)=αk(sj),sj2.从k-1时刻到
k-D时刻后向递推计算联合条件概率
且βk-l(s)=,s。
其他变量的计算和判决过程与MAP算法和Log-MAP算法相同。对上述计算过程
对数化,即得到SWLog-MAP算法。
2.2.2算法分析
对于SW-Log-MAP算法,由于数据块编码结束时网格图的状态取的是估计值,
因此数据块结束之前的一部分被译比特(K个比特)的似然值与已知数据帧结束状态
时得到的似然值存在误差,随着迭代次数的增加,似然值越来越接近最优似然值。
若记Λknown(u)为从已知状态开始计算βk(s)的条件下译码得到的软输出,
Λunknown(u)为从未知状态开始计βk(s)的条件下译码得到的软输出,则两种情况
下软输出误差为
显然,第一个被译比特对应的Λunknown(u)和Λknown(u)之间存在一定的差距。
随着译码的进行,被译比特对应的Λunknown(u)逐渐接近Λknown(u),从而判
决结果出现差异的可能性也越来越小。类似地,第一个被译比特相应的ε值应该比
较大,接下来的被译比特对应的ε值在不断地减小。一般取重复译码比特数K为
编码记忆长度v的10倍左右即可。这样可以保证ε<2%。
3SW-Log-MAP译码器的FPGA设计与实现
3.1双滑动重叠窗设计
用于Turbo码迭代译码的SISO分量译码器采用SW-Log-MAP算法及模块化设
计思想,主要完成前述αk(s)、βk(s)、γk(e)、Λ(uk)和Le(uk)的计算,并保证时序
对齐、数据处理速率和正确性。其中设计的关键是βk(s)的计算,采用双滑动重叠
窗技术实现,窗口划分如图4所示。
图4双滑动重叠窗示意图Fig.4Schematicofdualslidingoverlapping
windows
设滑动窗口宽度为W,窗口重叠(收尾均重叠)宽度为K,将数据帧根据设置的W
和K值按顺序划分成奇数窗和偶数窗,窗口的宽度和重叠宽度均相同。考虑到译
码器的通用性,W和K的值都是在一定范围内可设置的,分成的窗口数为(N-
K)/(W-K),但W-K不一定能整除N-K,因此考虑对最后一个窗口的数据(结尾
窗)进行特殊处理。译码过程中,使用两个相同的模块分别处理奇数窗和偶数窗的
数据,结尾窗的处理根据其与奇偶窗的位置关系调用处理模块,对于图4所示的
结尾窗,就用偶数窗处理模块进行处理。
3.2译码器结构设计
根据前面MAP算法描述中αk(s)、βk(s)、γk(e)、和Le(uk)的关系可知,在译码
时需要先计算γk(e),然后计算调用γk(e)的αk(s)和βk(s),得到αk(s)和βk(s)的
值后计算Λ(uk),最后计算得到Le(uk)。由于αk(s)和βk(s)分别通过前向递推和
后向递推得到,即使使用双滑动窗,对于卷积码网格图的同一个状态,也无法在同
一时刻得到αk(s)和βk(s)的值,因此需要设计数据缓存器。另外,Le(uk)的值也
需要缓存。根据上述分析,设计SW-Log-MAP译码器结构如图5所示。
SW-Log-MAP译码器的输入包括系统信息Msg、校验信息Parity、先验信息La
以及时钟、存储器读写地址和使能信号。译码时βk(s)值的计算是译码器实现的重
点,首先由数据控制单元对输入数据进行分窗并进行数据缓存,由信号控制分别读
取奇偶窗数据送入γ计算模块计算得到γk(e),然后由窗控制模块生成数据接口并
将数据送到相应的β计算模块。其中结尾窗数据由模块选择控制单元确定将数据
送到哪一个β计算模块。在分窗计算得到βk(s)值后,由β合成器通过倒序方式将
βk(s)值按照原始顺序存到缓存器,通过β输出控制模块送到LLR计算模块使用。
根据公式(3),β计算模块计算βk(s)时需要利用当前k时刻的分支度量值γk(e)和
后一时刻(事先缓存)计算得到的βk+1(s)来计算当前k时刻的βk(s),每个时刻k,
D-CTC分量码网格图中有8种状态,每个状态对应一个βk(s)值,在每个时刻k,
网格图上每个状态节点向前有4条边,对应输入两个编码比特的不同取值,将式
(3)的求和式展开并对数化后,每个βk(s)的计算可以通过加法器和加比选移
ACSO(Add-Compare-Select-Offt)实现,用加法器计算得到最后结果。
αk(s)值的计算也是通过递推方式实现的[9-10],根据公式(2)和(3)可知,也需
要先计算γk(e),α计算模块与β计算模块结构完全相同,仅仅是输入有所差别。
LLR计算模块计算k时刻被译系统比特的对数似然比,计算网格图中k-1时刻所
有通过不同输入分支进入k时刻所有状态的前向递推度量αk(s)、分支路径度量
γk(e)和后向递度量βk+1(s)之和并进行比较,其中的关键是数据对齐。最后,由
于LLR的计算与输入相比存在一定的延时,因此计算外部信息Le之前先将系统信
息和先验信息缓存,实现时序对齐,保证Le计算的正确性。最终,译码器输出译
码硬判决结果和外部信息,其中外部信息经过交织或解交织后送回译码器作为先验
信息用于下一轮SISO译码。
图5SW-Log-MAP译码器的硬件结构Fig.5Hardwareconfiguration
diagramofSW-Log-MAPdecoder
3.3仿真结果
对所设计的SW-Log-MAP译码器在ISE12.2环境下基于XilinxVeritex系列芯片
xc6vlx240tff1156-1上进行了仿真,仿真时序图如图6所示。
图6SISO分量译码器功能仿真结果Fig.6Functionsimulationresultsofthe
SISOcomponentdecoder
在图6中,en-data信号指示输入数据准备好,system-data、parity-data
和apori-data分别对应于译码器的输入系统数据、输入校验数据和输入先验信
息数据,译码输出为LLR和Le,对应的标记信号分别为Flag1和Flag2,高电平
有效。在图6的功能仿真中,系统时钟周期为14ns,滑动窗口宽度为64,译码
处理延时为116,故输入输出之间的译码延时为(64+116)×14ns=2.52ms,如
图6上半部分所示。而若不采用滑动窗技术,对于CCSDS建议的各种帧长,则译
码延时至少为(1784+116)×14ns=26.6ms,最大可达到(16384+116)×14
ns=231ms,可见采用滑动窗技术可以大大减小译码延时。图6下半部分给出的
是一帧译码开始输出数据时刻的仿真结果。
4性能仿真分析
应用所设计的SISOSW-Log-MAP译码器对CCSDS标准建议的Turbo码进行译
码,在数据速率为10Mbit·s-1时最多可以进行16次译码迭代。下面给出性能
仿真结果,其中帧长选择1784和7136两种,码率为1/2和1/3,译码迭代16
次。FPGA上实现的译码的参数设置为:输入数据位宽为6bit(包括1个符号位,3
个整数位,量化间隔为0.25);αk(s)、βk(s)和γk(e)计算时的数据位宽设置为9
bit(包括1个符号位,5个整数位,量化间隔为0.125)。信号模型采用加性高斯白
噪声信道(AWGN)仿真结果如图8所示。
图7误码率性能仿真结果Fig.7SimulationresultsoftheBERperformance
从仿真结果可以看出,FPGA上实现的译码性能与SW-Log-MAP算法(浮点运算)
软件仿真结果之间的译码性能损失均在0.1dB以内,在工程上是完全可行的。
5结论
Turbo码第一次在实践中证明了接近Shannon理论极限的存在,在宽带无线接入、
卫星通信及移动通信等领域都得到了广泛应用。本文设计的针对CCSDS标准建议
的Turbo码设计了SISOSW-Log-MAP译码器,能够在保持性能下降很小的情况
下大大减小译码延时,同时节省存储空间,通过在Xilinx公司的FPGA芯片上实
现和验证,达到了10Mbit·s-1以上的处理速度,有很好的参考意义和工程应用
价值。
参考文献
[1]ROBERTSONP,HOEHERP.Optimalandsub-optimalmaximuma
posteriorialgorithmsuitableforturbodecoding[J].EuropeanTranson
Telecomm,1997,8:119-125.
[2]梁福来.Turbo码译码算法及交织器的研究[D].河北:燕山大学,2013.
[3]丁昭洋.Turbo码的性能分析和应用研究[D].成都:四川大学,2005.
[4]喻文芳,周辉.Turbo码编译码原理及其性能分析[J].装备指挥技术学
院学报,2003,14(3):57-60.
[5]魏景心,王琳.Turbo码编译码原理与应用新进展[J].华北科技学院学
报,2007,4(1):58-61.
[6]宁成月.基于FPGA的Turbo码编译码器研究[D].长春:长春理工大学,
2012.
[7]FRANCISMJ.Astudyofturbodecodingwithoptimalandsub-
optimalmaximumaposteriorialgorithms[D].Waterloo:TheUniversity
ofWaterloo,1998.
[8]金小龙.基于SW-LOG-MAP算法的TURBO译码器算法研究和RTL实现
[D].成都:电子科技大学,2006.
[9]李涛护.CCSDS标准Turbo译码器硬件实现和性能仿真[D].西安:西安
电子科技大学,2005.
[10]张凯.CCSDS标准Turbo码译码器设计及实现[D].北京:北京邮电大
学,2012.
本文发布于:2022-11-25 06:38:44,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/16862.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |