 
- UID
- 872339
|

关键字:Turbo 译码算法 FPGA MATLAB
Turbo码自1993年提出以来[1],由于其接近香农极限的优异译码性能,一直成为编码界研究的热点。近年来,用户对通信质量的要求越来越高,学者们已将研究重点从理论分析转移到Turbo码的实用化上来。Turbo码现已成为深空通信的标准,即第三代移动通信(3G)信道编码方案[2]。
Turbo码虽然具有优异的译码性能,但是由于其译码复杂度高,译码延时大等问题,严重制约了Turbo码在高速通信系统中的应用。因此,如何设计一个简单有效的译码器是目前Turbo码实用化研究的重点。本文主要介绍了短帧Turbo译码器的FPGA实现,并对相关参数和译码结构进行了描述。
1 几种译码算法比较
Turbo码常见的几种译码算法中,MAP算法[1][3]具有最优的译码性能。但因其运算过程中有较多的乘法和指数运算,硬件实现很困难。简化的MAP译码算法是LOG-MAP算法和MAX-LOG-MAP算法,它们将大量的乘法和指数运算转化成了加减、比较运算,大幅度降低了译码的复杂度,便于硬件实现。简化算法中,LOG-MAP算法性能最接近MAP算法,MAX-LOG-MAP算法次之,但由于LOG-MAP算法后面的修正项需要一个查找表,增加了存储器的使用。所以,大多数硬件实现时,在满足系统性能要求的情况下,MAX-LOG-MAP算法是硬件实现的首选。通过仿真发现,采用3GPP的编码和交织方案[2],在短帧情况下,MAX-LOG-MAP算法同样具有较好的译码性能。
如图1所示,帧长为128,迭代6次,BER=10-5的数量级时, MAX-LOG-MAP算法的译码性能比MAP算法差大约0.6dB,比LOG-MAP算法差0.2dB左右。所以,本文采用3GPP的交织和(13,15)编码方案,MAX-LOG-MAP译码算法进行短帧Turbo码译码器的FPGA实现与设计。

2 MAX-LOG-MAP算法
为对MAP算法进行简化,通常将运算转换到对数域上进行,避免了MAP算法中的指数运算,同时,乘法运算变成了加法运算,而加法运算用雅可比公式简化成MAX*运算[4]。
将运算转化到正对数域进行运算,则MAX*可等效为:

按照简化公式(3)对MAP译码算法[1][3]的分支转移度量、前向递推项、后向递推项及译码软输出进行简化。
分支转移度量:

为防止迭代过程中数据溢出,对前后向递推项(5)、(6)式进行归一化处理:


3 FPGA实现关键技术
3.1 数据量化
在通信系统中,译码器的接收数据并不是连续不变的模拟量,而是经过量化后的数字量。接收数据的量化会引入量化噪声,从而影响译码的性能。所以,接收数据量化的精度直接影响到译码的性能。由参考文献[5~6]可知,采用3位量化精度就能得到与没有经过量化的浮点数据相近的译码性能。为了简化FPGA的设计,本文采用了统一的定点量化标准F(9,3),即最高位为符号位,整数部分8位,小数部分3位。由此,前后递推项(9)、(10)式的初始值可表示为:

3.2 MAX*运算单元
由前面的MAX-LOG-MAP算法介绍可知,MAX*运算单元是整个译码的主要运算单元,它与viterbi译码的ACS(加比选)运算单元一样,先分别进行加法操作,然后对所得结果进行比较,最后将较小的一个结果作为运算结果输出。实现结构如图2所示。

|
|