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

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

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.算法的概念及其特征但其实啊,算法没那么玄乎,它就在咱们的生活里到处蹦跶呢! 您想想,咱每天早上起床,先刷牙洗脸,再穿衣服出门,这一系列的步骤,不就是一种简单的“算法”吗?只不过咱们没把它叫得那么专业罢了。 那到底啥是算法呢?简单说,算法就是解决问题的一系列明确步骤。就好比您要做一道红烧肉,得先准备食材,切好肉,炒糖色https://wenku.baidu.com/view/b6df04096adc5022aaea998fcc22bcd126ff428e.html
2.编程有什么分类和特点?Worktile社区总结起来,编程的分类和特点使得它具有广泛的应用领域和潜力。无论是开发应用软件、嵌入式设备还是解决复杂的算法问题,编程都扮演着重要的角色,并不断创造出更多的可能性和机会。 赞同 5个月前 0条评论 worktile Worktile官方账号 评论 编程可以根据不同的分类方法进行分类,每种分类方法都有不同的特点。以下是https://worktile.com/kb/ask/2137991.html
3.Java集合面试问题40个「附答案」1.Java集合框架是什么?说出一些集合框架的优点? 每种编程语言中都有集合,最初的Java版本包含几种集合类:Vector、Stack、HashTable和Array。 随着集合的广泛使用,Java1.2提出了囊括所有集合接口、实现和算法的集合框架。在保证线程安全的情况下使用泛型和并发集合类,Java已经经历了很久。它还包括在Java并发包中,阻塞接口https://www.oh100.com/kaoshi/java/370200.html
4.C语言重要知识点总结3:算法的概念和特点(程序的灵魂)1.有穷性:一个算法必须总是在执行有穷步后结束,且每一步都必须在有穷时间内完成。一个算法应包括有限的操作步骤,这里的有穷性意思是指“在合理的范围之内”,比如让计算机运算10000年才结束,那该计算就不能算有效的算法,究竟什么算是“合理限度”,由人们的常识和需要判读。 https://blog.csdn.net/weixin_46022083/article/details/107521335
5.Alibaba最新1000多道Java面试题汇总详解,收藏起来慢慢刷!我分享的这份春招 Java 后端开发面试总结包含了 JavaOOP、Java 集合容器、Java 异常、并发编程、Java 反射、Java 序列化、JVM、Redis、Spring MVC、MyBatis、MySQL 数据库、消息中间件 MQ、Dubbo、Linux、ZooKeeper、 分布式 &数据结构与算法等 25 个专题技术点,都是小编在各个大厂总结出来的面试真题,已经有很多粉丝https://maimai.cn/article/detail?fid=1728969401&efid=esjJLvGGL4fAr1LArgq_cQ
6.单片机原理及应用教程第4版第1章单片机应用基础概述在线免费本章以计算机的结构思想为引导,首先介绍了计算机和单片机的发展过程、计算机中表示信息的数制和编码及计算机系统结构组成。然后重点介绍单片型计算机(以下简称单片机)应用系统组成、特点及应用开发资源。最后通过单片机一个简单应用示例,使读者初步建立单片机应用的整体概念。 https://fanqienovel.com/reader/7110144623195982860
7.编程语言对比与选型是一种面向对象的编程语言,具有平台无关性和高度可移植性。Java的主要特点之一是其对跨平台的支持,可以在不同的操作系统上运行相同的程序。由于其安全性和可靠性,Java语言在企业级应用、大型系统开发、云平台等领域有着广泛的应用。同时,Java语言也是Android应用程序的首选开发语言,在移动应用开发领域具有重要地位。 https://www.jianshu.com/p/ad8f8b5a6270
8.高中信息技术课程标准(1)结合实例,经历分析问题、确定算法、编程求解等用计算机解决问题的基本过程,认识算法和程序设计在其中的地位和作用。 (2)经历用自然语言、流程图或伪代码等方法描述算法的过程。 (3)在使用计算机解决实际问题的过程中,通过观看演示、模仿、探究、实践等环节,了解顺序、选择、循环三种基本结构及其重要作用,掌握计算机https://www.fqkhzx.cn/index/article/view/id/94.html
9.贝叶斯分类算法(精雅篇)利用MATLAB程序特点进行模式识别算法编程减少了编程的工作量,对于一个成功的软件来说,其内容固然应该是第一位的,但除此之外,图形界面的优劣往往也决定着该软件的档次。MATLAB图形用户界面的优点是工具箱形象直观,利用其自身的GUIDE功能来完成界面结构的设计。 https://www.360wenmi.com/f/cnkey2zkdus2.html
10.Scale概述(上)学习笔记C 语言、C++、java 等语言在学习后具有部分的共同特性,存在大同小异的特点。但 Scala 相对其它语言而言变化较大,部分本身的特色较为有趣。此语言在学习过程中可使得自身的编程思想、编程算法得到一定程度的提升。 4、Spark 特点-函数式编程 引入后使函数更为强大、提倡递归,效率得到大大提升。 https://developer.aliyun.com/article/1079002
11.第5课算法的特征(教学设计)五年级上册信息技术浙教版(8页)书中包含了许多经典的算法问题和案例,对于提高学生的编程能力和算法思维具有很好的帮助。 《算法竞赛入门经典》:这本书适合有一定编程基础的学生,通过讲解各种算法竞赛的问题和解决方案,帮助学生提高算法思维和解决问题的能力。书中包含了大量的算法实例和题解,对于培养学生的算法能力和解决实际问题的能力有很大的帮助。https://m.book118.com/html/2024/0810/7111141150006142.shtm
12.算法是程序的灵魂,让我们从基椽始算法是程序的灵魂,只有掌握了算法,才能轻松地驾驭程序开发。软件开发工作不是按部就班,而是选择一种最合理的算法去实现项目功能。算法能够引导开发者在面对一个项目功能时用什么思路去实现,有了这个思路后,编程工作只需要遵循这个思路去实现即可。本章将详细讲解计算机算法的基础知识,为读者步入后面的学习打下基础。 https://labs.epubit.com/articleDetails?id=NNb6e4b6e6-a18f-4e6d-9cfe-4d2b7a3962f1
13.算法编程编程语言的算法算法 编程 内容精选 换一换 Hyper MPI是什么 心等应用场景,同时该通讯库也可扩展应用于AI、大数据等通用领域。 Message Passing Interface(MPI)是支持多编程语言编程的并行计算通讯应用接口,具有高性能、大规模性、可移植性、可扩展性等特点。 华为高性能通信库(Hyper MPI)是基于Open MPI 来自:百科 查看更多https://www.huaweicloud.com/theme/857518-3-S-undefined
14.编程学习计划(系列八篇)这样可以更好地理解编程语言和算法的应用,并且能够在现实中掌握更多的技能。在实际项目开发中,我们可以选择一些开源项目或者自己开发一些独立的应用程序。以上是编程学习计划的基本步骤。不管是初学者还是有一定编程基础的人,在进行编程学习时都可以参照以上步骤,以便提高自己的编程技能。 通过充分利用各种教学资源,如中国https://www.liuxue86.com/a/5151491.html