基于FPGA的Turbo码编译码器在深空通信中的应用

2014-11-15 02:50郑翘楚
电子测试 2014年5期
关键词:译码器交织译码

郑翘楚

(中国电子科技集团公司第五十四研究所,河北石家庄,050081)

0 引言

深空通信指的是地球与太阳系九大行星之间的通信、所有行星表面的区域通信、还有地球与太阳系外星球之间的通信。它的一个典型特点就是传输距离特别的远,指定的远程通信系统所能获得的数据速率越大,其通信距离的平方也就越小。Turbo码在AWGN信道和Rayleigh衰落下仍然具有接近信道容量的纠错能力,对于远距离传输的深空通信具有非常好的应用前景。因此本文进行了基于FPGA的Turbo码编译码器在深空通信中的应用分析。

1 FPGA的Turbo码编译码器在深空通信中的应用硬件设计

由于Turbo码在低信噪比下拥有优于其他方法的与Shannon限相似的性能,故在很短的时间内就引起了相关研究者们的关注,并有助于进行理论研究,其他方面也逐渐步入实际应用。

1.1 Turbo译码器总体结构的实现

具有高效和高可靠性特点的深空通信系统是进行流畅的通信业务的重要保障。其中信息传输过程中的误码率的大小直接影响到深空通信的质量。采用信道编码是消除或降低信息传输错误概率的有效手段之一。这里采用Turbo码译码器实现深空通信。Turbo码译码器的组成部分包括MAP译码器模块、交织器与解交织器模块、时序控制模块三个部分,由于篇幅其中MAP译码器交织器两个模块不再进行详细描述,这里主要是对循环译码的实现进行阐述,本文设计采用的交织器具有一样的交织序列与解交织序列,同时采用的两个MAP译码器并非一起使用,所以,要完成Turbo码的译码只需使用一个MAP译码器,为了使循环译码可以更容易实现,与编码器中所使用的交织器略有区别,Turbo码译码器中所使用的是包括两个使能信号的交织器,即输入与输出使能,而Turbo码译码器与编码器所采用的交织序列是一样的。下图是Turbo码译码器的整体结构示意图,这里对译码器的结构进行了相应的简化,以便于其实现,同时,将分量译码器所输出的对数似然概率进行循环迭代,通过其仿真图可知,它具有非常不错的译码效果。

图1 Turbo译码器的总体结构图

1.2 译码器

卷积码将k个信息比特编成n个比特,但k和n通常很小,特别适合以串行形式进行传输,时延小,考虑深空通信特点采用卷积码译码实现解调器输出信息的决定,以下针对深空通信特点进行译码器的设计。地址为计数器的输出,由时序控制模块向所有RAM块传送,并通过所输出的所有使能信号对运算过程进行控制。由于所采取的是分块并行译码法,各子译码器的译码延时有了很大程度的降低,与传统的译码器相比,在译码延时方面有比较大的改进。1号译码器运行延时为N+2个时钟,交织解交织模块与译码模块是同时进行的,所以2号译码模块读入数据所需时间即为交织器输出时间,因为交织器存在一个时钟的延时,故与2号译码模块相比,1号译码模块处理时间相对要少1个时钟。当1号译码模块与2号译码模块进行一次工作,则一次迭代完成,那么完成一次迭代译码需2N+5个时钟延时。由于译码器中包含多个变量,要将所有变量列出很难,clk表示时钟,a[0..7]代表的是,即译码器接收端量化的信息序列,b1[0..7]代表的是,b2[0..7]代表的是,即译码器接收端量化的校验序列,L2代表2号分量译码器的对数似然概率,代表完成四次迭代所输出的数据。因为译码过程存在的延时较大,因此要在通过该图将输入与输出间的关系找出并不容易,不过对似然比L2进行查看发现,由其符号位可获得译码数据。通过分析可知译码所输出的数据无误。下面对采用不同译码算法的Turbo码性能进行了MatlAB平台的仿真,图形如下所示,仿真结果表明,四种算法中,MAP算法性能最好。

图2 不同解码算法的Turbo码性能影响

本设计由恰当的分割模块和参数化设计,加上所采取的设计方法综合了自下往上及自上往下两种方式,然后连接所有模块并进行调试,从而形成了完整的设计文件。

1.3 接收码字的量化及其运算

软输入/输出SISO译码虽然使译码性能得到了提升,但硬件的实现也随之变得更加难了,这也就阻碍了FPGA的实现。要将该问题解决掉,第一步要弄清楚译码器中带有符号小数的量化方式与运算过程。一般情况下,带有符号小数运算的FPGA有两种二进制运算实现方式,即定点制与浮点制,虽然相比定点数,浮点数无论是在精度方面还是数据范围方面均更优一些,然而却在实现上就没那么容易了,此设计所采取的方式为定点二进制。这里所采用的是带有符号的八位定点数据。左边数的首位、第2~5位、第6~8位分别为符号位、整数位、小数位。若首位是1,则表示是负数,若首位是0,则表示是正数。设计里的带符号定点数只包含三种运算,即+法、-法、两数的对比,接下来主要介绍一下带符号定点数进行+-法运算的函数add_sub模块:这个函数做什么运算主要由输入决定,且将结果输出,所得结果的符号位为最高位。函数仅有一个体现数据宽度的参数,即datawidth。dina[]与dinb[]是代表两个输入数据的输入端口,下图为函数的实现结构示意图。

图3 add_sub函数模块的实现结构图

表1 add_sub函数模块的逻辑判断规则

该函数的实现主要是借助一个lpm_add_sub模块,可随意对其数据宽度进行设置,这里所采用的是八位的数据。该函数主要是对加减法运算进行选择,且决定权在于输入add_sub的值,如果add_sub为l,那么计算为dina+dinb;如果add_sub为0,那么计算为dina-dinb。另外,数据还可能存在溢出的现象,通过所输出的溢出信号、输入数据的符号位、运算类型,对所选输出结果进行控制。Selecter为选择器模块,通过两个输入端,即overflow与add_sub对输出结果进行控制。如果overflow为0,那么则无溢出,直接将结果输出;如果overflow为1,那么就有溢出信号,由实际情况分别将各最值输出,MAX与MIN分别表示的是向上与向下溢出;如何对选择逻辑进行判断见表1,其中MAX与MIN分别为7Fh与80h。

通过分析,设计时将add_sub函数看作一个模块,在接下来的译码器设计中进行调用就比较方便了。图4表示在不同迭代次数时Turbo码性能的Matlab仿真结果,由此可以判断该设计方案是可取的。

图4 不同迭代次数时的Turbo码性能

深空通信信道可实现最优AWGN信道的建模,它具有比较充足的频带资源,但是探测设备尺寸不够,且传输距离过远,因此它的功率资源受到了极大的限制。深空通信信道为具有代表性的传输信道,且其可靠性被有效性所取代。但是,由于深空探测技术的不断发展,对于传输速率的要求也随之更加严格,故编译码器的实现也变得非常的困难。因此,改进信道编译码算法可在一定的程度上完善深空通信网络技术。

[1]康旭辉,安凯.基于FPGA实现的深空通信中Turbo码编译码器[J].重庆邮电学院学报(自然科学版),2006,02:187-191.

[2]郭世欣,张辉,任明禄.深空通信中Turbo码的编译码技术[J].山西电子技术,2007,01:66-67+76.

[3]张桂华,姬红兵,胡家佺,李会莲.深空通信中Turbo编译码设计与性能仿真[J].系统仿真学报,2008,17:4676-4680.

[4]赵旦峰,朱铁林,刘渊.帧长可配置Turbo码编译码器的设计与实现[J].电讯技术,2010,09:1-5.

[5]谢智东,刘波,张北江.深空通信中的信道编码技术[J].数字通信世界,2010,09:78-82.

[6]喻文芳,周辉.Turbo码编译码原理及其性能分析[J].装备指挥技术学院学报,2003,03:57-60

猜你喜欢
译码器交织译码
“新”与“旧”的交织 碰撞出的魅力“夜上海”
分段CRC 辅助极化码SCL 比特翻转译码算法
基于校正搜索宽度的极化码译码算法研究
交织冷暖
高速码率兼容DVB-S2的LDPC译码器的FPGA实现
纠错模式可配置的NAND Flash BCH译码器设计
一种改进的块交织方法及FPGA实现
跟踪导练(一)5
从霍尔的编码译码理论看弹幕的译码
奥运梦与中国梦交织延展