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所示。

3.3 前后向递推运算单元

由公式(5)~(8)可知,前后向递推单元除了需要进行MAX*与运算外,还需要进行归一化处理。为得到较快的运算速度,首先,计算上一时刻所有状态的最小值,然后对当前时刻的每一状态进行MAX*运算,并将运算结果减去上一时刻的最小状态值,即得到当前时刻递推各状态的归一化值。实现结构如图3所示。

3.4 8状态值最小值运算单元

由MAX-LOG-MAP算法可知,在进行前后向递推归一化处理和计算译码软输出时,均需要计算每一时刻8个状态的最小值。为了减小计算延时,采用了8状态值并行比较的结构,与串行的8状态值比较结构相比较,要少4级延时。实现结构如图4所示。

4 仿真结果

按照以上所分析的简化译码算法、FPGA实现的相关参数和结构,整个译码采用Verilog HDL语言编程,以Xilinx ISE 7.1i、Modelsim SE 6.0为开发环境,选定Virtex4芯片xc4vlx40-12ff668进行设计与实现。整个译码器占用逻辑资源如表1所示。

MAX-LOG-MAP译码算法,帧长为128,迭代4次的情况下,MATLAB浮点算法和FPGA定点实现的译码性能比较如图5所示。

由MAX-LOG-MAP算法的MATLAB浮点与FPGA定点的性能比较仿真结果可知,采用F(9,3)的定点量化标准,FPGA定点实现译码性能和理论的浮点仿真性能基本相近,并具有较好的译码性能。

综上所述,在短帧情况下,MAX-LOG-MAP算法具有较好的译码性能,相对于MAP,LOG-MAP算法具有最低的硬件实现复杂度,并且Turbo码译码延时也较小。所以,在特定的短帧通信系统中,如果采用Turbo码作为信道编码方案,MAX-LOG-MAP译码算法是硬件实现的最佳选择。

turbo译码器 matlab,短帧Turbo译码器的FPGA实现相关推荐

  1. (76)译码器与编码器(三八译码器)

    (76)译码器与编码器(三八译码器) 1 文章目录 1)文章目录 2)FPGA入门与提升课程介绍 3)FPGA简介 4)译码器与编码器(三八译码器) 5)技术交流 6)参考资料 2 FPGA入门与提升 ...

  2. mimo-ofdm无线通信技术及matlab实现_智芯文库 | FPGA无线通信课程连载——扰码的原理及实现...

    一.扰码的作用 对数字信号的比特进行随机处理,减少连0和连1的出现,从而减少码间干扰和抖动,方便接收端的时钟提取:同时又扩展了基带信号频谱,起到加密的效果.为了保证在任何情况下进入传输信道的数据码流中 ...

  3. 【quasi-maximum likelihood decoder】一种有效的PSK信号准最大似然译码器matlab性能仿真

    1.软件版本 matlab2013b 2.本算法实现 本算法主要参考文献: <[1] Luo Z Q ,  Luo X ,  Kisialiou M . An efficient quasi-m ...

  4. matlab视频帧间差分法,帧间差分法matlab代码

    程序 1 背景差分法 MATLAB 实现 function temp3 d=60... 图3.背景差分运动检测 1.3.3阈值的选取(如果调用 MATLAB 函数实现灰度图转二值图,则 不用考虑)选取 ...

  5. DVB-S2系统中LDPC译码器的实现 LDPC编码器的实现 FPGA DVB-S2、DVB-S2X LDPC 编码IP、LDPC译码 IP

    DVB S2 LDPC 译码器.IP core IP Core特点: 1.全部代码由FPGA代码实现: 2.支持DVB-S2.DVB-S2X全部格式: 3.支持编码.译码: 4.支持标标准中16200 ...

  6. 【目标跟踪】基于matlab GUI帧差法结合卡尔曼滤波行人姿态识别【含Matlab源码 1127期】

    ⛄一.基于人体特征识别和卡尔曼滤波的行人跟踪算法简介 1 基于体型和行为姿态特征的人体识别算法 从红外图像中可以得到目标与背景之间的灰度级差别,从而区分出有生命特征的运动物体,但仅从亮度特征无法区别出 ...

  7. c语言控制单片机38译码器,单片机中 74HC138 三八译码器的应用

    在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有32个 IO 口,但是我们为了控制更多的器件,就要使用一些外围的数字芯片, ...

  8. c语言表示三八译码器原理,单片机74HC138三八译码器的原理及应用方法

    在我们设计单片机电路的时候,单片机的 IO 口数量是有限的,有时并满足不了我们的设计需求,比如我们的 STC89C52 一共有32个 IO 口,但是我们为了控制更多的器件,就要使用一些外围的数字芯片, ...

  9. 搞定138译码器(15),基于74ls138译码器设计全加器

    138译码器的重要性不言而喻,因此对于138译码器,我们应当有所了解.为增加大家对138译码器的认识,本文将介绍如何利用74ls138译码器设计全加器.本文除了对74ls138译码器加以阐述外,文章第 ...

最新文章

  1. Play Framework 2.2.6 安装
  2. MongoDB对文档的操作
  3. STM32 FSMC 外部使用SRAM
  4. Python中yield
  5. 【渝粤教育】 国家开放大学2020年春季 1259西方行政学说 参考试题
  6. 区块链原理设计与应用_我如何设计一个可以在6个月内吸引200K用户的区块链应用...
  7. webrtc自动增益
  8. UI中经常出现的下拉框下拉自动筛选效果的实现
  9. 一键解决WinRAR的有关问题
  10. matlab 转子振动,转子—支承系统振动不平衡响应的MATLAB实现
  11. C++链接报错:which may bind externally can not be used when making a shared object; recompile with -fPIC
  12. 通过Windows批处理脚本批量修改DNS
  13. android显示通知图标大全,Android推送通知:图标未显示在通知中,而是显示白色方块...
  14. 4.龙芯2k1000 系统制作及安装
  15. 不用linux转录组数据分析,RNA-seq转录组数据分析
  16. (七)DKN:用于新闻推荐的深度知识感知网络
  17. mysql 查找附近的人_一口气说出4种“附近的人”实现方式,面试官笑了
  18. 20210622——Redis概述(一)
  19. 东北大学和南邮的计算机,考研南邮跟东北大学通信与信息系统
  20. 【论文阅读】Learning Deep Features for Discriminative Localization

热门文章

  1. Sublime Text 全程指引 by Lucida
  2. 反思转变:多努力以积累  多动脑以应变
  3. python机械编程_机器学习编程作业3——多类分类(Python版)
  4. java cookie 加密_java cookie encodeBase64加密
  5. android 修改菜单大小,如何在NavigationView中更改菜单项图标的大小?
  6. socket 获取回传信息_Luat系列官方教程5:Socket代码详解
  7. mysql数据自动备份_每天自动备份MySQL数据库的shell脚本
  8. c/c++格式化字符串的标识
  9. 虚拟机dhcp服务器怎么检验,实验十二虚拟机上DHCP服务器的配置和验证.doc
  10. html多语言国际化,gMIS吉密斯i18n多语言国际化更新