单片机与DSP中的基于DSP的MaxLogMAP算法实现与优化

类别:单片机与DSP发布于:2007/10/30|394次阅读

2Turbo码的反馈迭代译码结构与Max-Log-MAP译码算法

Turbo码又称为并行级联卷积码(PCCC),编码器由两个RSC成员码通过交织器并行级联。与之对应,在译码端Turbo码则采用两个成员译码器串联构成的反馈迭代结构,如图1所示,其中DEC1与DEC2表示两个软输入软输出(SISO)的成员译码器,假设编码输出采用BPSK调制方式,xk,yk为解调器输出的受噪声污染的信息比特与校验比特,zk(zn)表示从另一个译码器经过解交织(交织)后得到的外信息。每个成员译码器有两个输出端口,分别输出信息比特的对数似然比LLR(L1(ak),L2(an))及被另一个成员译码器使用的外信息叫ω1k,ω2k,经过若干次迭代和两个成员译码器的外信息交换,对信息比特的对数似然比进行硬判决即可完成Turbo码的译码。

3Max-Log-MAP译码算法的C语言软件编程与实现

分析可知,Max-Log-MAP算法需要根据每时刻的接收信息计算几种度量值:分支度量rk(i,m′,m),前向状态度量αk(m)和后向状态度量βk(m),最后由3个度量值计算该时刻的对数似然比L(ak),从而得到另一个成员译码器需要的外信息ωk。因此算法可以大致分为几个模块:分支度量模块,前、后向状态度量模块及对数似然比模块,各个模块的计算均是基于网格图的递推完成,故均可以使用C语言中的for循环语句实现,这里以八状态(13,15)RSC码为例逐一分析。

3.1分支度量模块(BMU)

这里Lx和Ly分别表示经过信道可信度值处理过的接收信息比特与校验比特软信息,z表示来自另外一个成员译码器的外信息,N为Turbo码的信息帧长度。

3.2状态度量模块(SMU)

事实上,SMU完成在每一个网格图状态将转移至该状态的分支度量进行“累加”、“选大”的功能即所谓的ASC操作。

3.3对数似然比模块(LLRU)

语句中的BSM表示后向状态度量,LLR表示对数似然比,ω为输入至另外一个成员译码器的外信息,其他均为临时变量。

4基于DSP的Max-Log-MAP译码算法代码优化

基于C语言的DSP开发关键在于代码的精简优化,TI公司CCS开发软件中的C编译器提供了对代码的优化功能,人们可以通过选项设置、循环展开、加注关键字、使用内联函数(intrinsic)等操作完成对C代码的优化。本文主要针对TMS320C6000系列芯片的结构与特点讨论Max-Log-MAP译码算法代码的优化设计,包括软件流水、数据存取优化等,以达到充分利用DSP芯片的硬件资源,获得高效处理性能的目的。

4.1C6000系列芯片的结构与特点

TMS320C6000系列DSP是TI公司推出的一种基于VLIW技术,具有8个功能单元的数字信号处理器,其CPU采用哈佛结构,程序总线与数据总线分开,取指令与执行指令可以并行运行,VLIW技术的使用可以使指令获取、指令分配、指令执行和数据存储等操作形成多级流水,在同一时钟周期多条指令交迭地在不同功能单元内处理。C6000系列芯片在每个时钟周期内可以同时执行8条指令。

4.2基于DSP的各算法模块代码优化

4.2.1BMU模块

4.2.2SMU模块

与先前只采用两个临时变量sum1和sum2相比,优化后的代码采用更多的变量,这样可以保持数据的独立性,避免造成CPU寄存器的关联,使代码更易于流水线操作。

4.2.3LLRU模块

4.3代码优化前后消耗的指令周期对比

我们使用合众达公司的SEED—C6416仿真开发板,采用C6416-T系列DSP芯片在CCS3.1编译环境下对各个算法模块及整个Max-Log-MAP算法进行了编译与硬件仿真,Turbo码的信息帧长选为144b,代码的数据类型定义为int型,编译选项设置为-03-mt-pm。使用CCS附带的定时器(Timer)功能,对优化前后代码消耗的指令周期进行了测试,结果如表1所示。

可见,优化后的代码大大降低了CPU指令周期的消耗,提高了DSP的工作效率。值得提出的是,在代码优化时主要针对算法本身的指令操作与数据存储等方面进行了改进,事实上,在具体的开发过程中还可以根据实际的数据宽度采用内联函数(intrinsics),数据封装处理(packeddataprocessing)等措施对代码进行进一步优化,以获得更高效的性能。

5结语

本文研究了基于标准C语言的Turbo码Max-Log-MAP译码算法的软件编程与实现方法,并结合TMS320C6000系列DSP芯片的结构与特点深入探讨了代码的优化设计,通过循环展开、数据存取优化、算法的改进等措施提高代码的效率,测试结果表明,经过优化的代码可以大大降低CPU的指令周期消耗,从而获得了比较高效的处理性能。

THE END
1.编程中算法究竟是什么?编程界的“Pascal之父”Nicklaus Wirth有一句人尽皆知的名言:“算法+数据结构=程序”。(Algorithm+Datahttps://www.zhihu.com/question/423634581/answer/2836457639
2.什么是算法?算法的发展历程?特征?什么是复杂度?算法的产生定义:算法的每一步都应该简单且容易执行,并且这些步骤应当是清楚且有效的。 解释:每一个算法步骤都必须是具体的、可以执行的基本操作,不能有模糊的、抽象的指令。有效性保证了算法在实际中是可实现的。 7.独立性(Independence) 定义:算法的设计与实现应独立于具体的编程语言、机器或实现环境。 https://blog.csdn.net/weixin_67739446/article/details/141789238
3.Java语言具有哪些特点?Java语言具有哪些特点?Java语言是一门优秀的编程语言,它之所以应用广泛,受到大众的欢迎。是因为它有众多突出的特点,其中最主要的特点有以下几个。1.简单性 Java语言是一种相对简单的编程语言,它通过提供最基本的方法完成指定的任务。程序员只需理解一些基本的概念,就可以用它编写出适用于各种情况的应用程序。Javahttps://baijiahao.baidu.com/s?id=1744110954938024670&wfr=spider&for=pc
4.特征空间算法范文9篇(全文)图2给出了目标被遮挡情况下的传统mean-shift算法和本文算法的跟踪效果图,图中跟踪的目标是一个深蓝色的汽车,在第355帧时,传统mean-shift算法和本文算法的跟踪结果差别不大,随着目标的运动,两种算法的跟踪效果就出现了差别,在第375帧时,当目标被树遮挡住一半左右时,传统mean-shift算法基本上还能跟得上,但已失去了https://www.99xueshu.com/w/ikeyhztmyriy.html
5.算法与程序设计思想(精选8篇)求一批数据中最大值的算法设计思想,并将算法的设计思想用流程图表示出来。2.过程与方法: 利用现实生活中比较身高的活动,以及对武术比赛中“打擂台”流程的逐步梳理,让学生学会从此类生活实际中提炼出求最大值的思想方法,即算法思想。 培养学生分析问题、解决问题的能力,让学生学会在面对问题时能梳理出解决问题的清晰https://www.360wenmi.com/f/fileavgfb18k.html
6.高职单招计算机复习(单招考试计算机知识点)算法是计算机科目中的重要内容,包括算法的基本概念、算法的分类、算法的分析等方面。在备考中,考生需要重点掌握算法的基本概念和算法的分类,了解各种算法的特点和应用场景。考生还需要掌握算法的分析,了解如何分析和评估算法的效率和优劣。 七、编程语言 编程语言的分类、编程语言的特点、编程语言的应用 http://www.sccdedu.com/news/239228.html
7.Scale概述(上)学习笔记C 语言、C++、java 等语言在学习后具有部分的共同特性,存在大同小异的特点。但 Scala 相对其它语言而言变化较大,部分本身的特色较为有趣。此语言在学习过程中可使得自身的编程思想、编程算法得到一定程度的提升。 4、Spark 特点-函数式编程 引入后使函数更为强大、提倡递归,效率得到大大提升。 https://developer.aliyun.com/article/1079002
8.高中信息技术课程标准(1)从其他科目的学习或者生活实际中选择问题,确定解决该问题所需要的算法和计算公式,用流程图描述问题的计算过程,编写程序,调试并运行该程序,获得问题的答案,并讨论该问题解决过程与所得答案的特点。 (2)在已学知识的基础上,通过调查和讨论对算法和程序设计进行更多了解,探讨待解决的问题与其相应算法之间的关系,尝试https://www.fqkhzx.cn/index/article/view/id/94.html
9.第5课算法的特征(教学设计)五年级上册信息技术浙教版(8页)讲解算法的定义,包括其主要特性(确定性、有穷性和可输出性)。 详细介绍算法的表示方法,如伪代码和流程图,并展示实例。 3.算法案例分析(20分钟) 目标:通过具体案例,让学生深入了解算法特性及其在实际问题解决中的应用。 过程: 选择几个典型的算法案例进行分析。 详细介绍每个案例的背景、特点和意义,让学生全面了解https://m.book118.com/html/2024/0810/7111141150006142.shtm
10.敏捷交换机的特色:iPCA网络包守恒算法交换机网络华为新推出S 12700 敏捷交换机,利用其灵活可编程的特点,开创性地实现了iPCA 功能,全面提升网络质量检测和故障精确定位能力,降低网络运维成本,iPCA网络包守恒算法是怎么样的呢?感兴趣的朋友可以参考下 GPT4.0+Midjourney绘画+国内大模型 会员永久免费使用! https://www.jb51.net/network/223201.html
11.重磅!计算机二级C语言考试备考攻略和考试资料下载二、选择题特点: 选择题共40分,其中公共基础知识10分;C语言基础知识30分。 1. 二级公共基础知识:专业性强且相对独立,考核重点为数据结构与算法、数据库设计基础,其中涉及到的难点是进制之间的转换(一般为2进制与10进制之间的转换)以及关系代数运算,这部分要灵活掌握。 https://www.jianshu.com/p/4014994dabb3
12.算法编程编程语言的算法Message Passing Interface(MPI)是支持多编程语言编程的并行计算通讯应用接口,具有高性能、大规模性、可移植性、可扩展性等特点。 华为高性能通信库(Hyper MPI)是基于Open MPI 来自:百科 查看更多 → 图像处理理论、应用与实验 征提取算法和卷积神经网络,学习时注意两者的区别。 目标学员 1、希望成为企业AIhttps://www.huaweicloud.com/theme/857518-3-S-undefined