基于DSP的Max-Log-MAP算法实现与优化

发布者:千变万化最新更新时间:2007-10-10 来源: 现代电子技术关键字:译码  增益  极性  循环 手机看文章 扫描二维码
随时随地手机看文章

1 引 言

Turbo码接近Shannon理论极限的优越性能使其在卫星通信、深空通信、多媒体通信等领域具有非常大的诱惑力,因此自提出以来一直受到广泛而持续的关注。

Turbo码的工程应用与实现是近年来研究工作的热点。Turbo码采用反馈迭代译码结构,成员译码器使用最大后验概率(MAP)译码算法译码,由于MAP算法含有大量的指数运算与对数运算,给实现带来极大的困难,在工程应用中,通常采用其对数域的简化算法——Log-MAP和Max-Log-MAP算法。相对于Log-MAP算法,Max-Log-MAP虽然损失0.5 dB的增益,但由于其大大简化了复杂度,在应用与实现中倍受关注。本文基于TMS320C6000系列DSP芯片讨论了Max-Log-MAP算法的实现与优化。

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

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

Max-Log-MAP算法下的对数似然比可以表示如下:

其中m′,m分别对应k-1和k时刻的编码器状态,αk(m),βk(m)分别称为前向和后向状态度量,可以根据RSC码的网格图由分支度量rk(i,m′,m)(i=±1)递推计算:

外信息若采用Robertson使用方式,AWGN信道下码率为1/2的RSC码分支度量rk(i,m′,m)计算公式可以表示为:

式中j=±1,表示对应信息比特ak=i编码应输出的双极性校验比特,Lc=4Es/N0定义为信道可信度值。外信息与对数似然比的关系为:

3 Max-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)

状态度量的递推是在分支度量的基础上进行的,因此分支度量是算法的基本量度,由式(4)可知,分支度量实际上是由接收信息与网格图上转移路径对应输出的相关运算。对于八状态(13,15)RSC码,网格图上两个相邻时刻的状态转移路径共有16条,考虑到(i,j)组合的取值只有4种,且(-1,-1)与(+1,+1),(-1,+1)与(+1,-1)条件下的分支度量值互为相反数,故为了减少数据的存储,每一时刻只需计算两个分支度量值即可,不妨设为BM11与BM10,BMU的算法实现结构为:

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

3.2 状态度量模块(SMU)

前向状态度量的递推与后向状态度量的递推在算法上是相似的,我们以前向状态度量为例说明状态度量模块(SMU)的算法编程实现,用FSMj表示基于RSC(13,15)码网格图j状态的前向状态度量累加值(j=0,1,…,7),前向状态度量的递推循环语句结构为(其中语句中的temp1,temp2表示临时变量):

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

3.3 对数似然比模块(LLRU)

对数似然比模块(LLRU)根据分支度量与状态度量值计算对数似然比与外信息,其基本运算也是类似SMU中的加比选(ACS)操作,相应的算法结构如下(转移路径按输入分别为0和1分为两组,状态从0~7排列):

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

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

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

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

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

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

4.2.1 BMU模块

BMU算法模块为单循环语句,由于循环体内的指令较少,为了更多地同时利用CPU资源,一个有效的做法即是将循环展开,这样在减少循环次数的同时可以使更多的操作形成流水(pipeline),充分发挥多个功能单元的并行处理能力。优化后的代码如下:

4.2.2 SMU模块

由于状态度量的递推具有递归性,即本时刻递推得到的数值将用作下一时刻的递推初值,因此对于该算法模块的数据读入读出操作是一个值得考虑的问题。从3.2节SMU的程序分析可知,FSM的读写致使CPU寄存器与数据存储器之间频繁的进行load与store操作,为了减少该操作的指令消耗,我们引入3组临时变量FSM_tempj,FSMj_old和FSMj_new(j=0,1,…,7)用来存储FSM的计算结果,这样在下次递推时CPU可以直接从内部的寄存器读取数据,避免了从数据存储器的load操作。优化后的代码结构如下:


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

4.2.3 LLRU模块

对于LLRU算法模块的代码优化主要从减少加减操作指令入手,这涉及到对算法的改进。前文提到每一时刻的转移路径有16条,如果采用3.3节的程序结构,对分支度量要进行16次加减操作。考虑到分支度量只有4种取值,结合RSC(13,15)网格图的映射关系,按照分支度量的取值将转移路径分为4组,这4组分别对于分支度量的加减操作先不予处理,即先选最大后再进行相应的分支度量加减操作,这样每一次循环可以将分支度量的加减操作由原来的16次减少至4次,故可以大大降低CPU资源的消耗。相应的优化代码结构如下:

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

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

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

5 结 语

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

关键字:译码  增益  极性  循环 引用地址:基于DSP的Max-Log-MAP算法实现与优化

上一篇:基于DSP的Max-Log-MAP算法实现与优化
下一篇:基于DSP的Max-Log-MAP算法实现与优化

推荐阅读最新更新时间:2024-05-02 20:38

单片机循环彩灯的制作设计
  1.彩灯循环亮硬件原理图   彩灯循环亮硬件分析    此电路核心件是 MCS-51 单片机 ( AT89C51 )。    包括时钟电路、复位电路及输出电路。    用 P1 口作输出口 , 直接驱动 8 只发光 二极管 。   发光二极管是一种把电能转换成光能的半导体器件.它由PN节组成,在正向偏置的条件下导通,此时会发射出一定波长的光.   2.软件设计(程序)   STAT: MOV A , #01H ; 高电平对应的发光二极管亮   LOOP: MOV P1, A ; 从 P1 口输出到发光二极管   MOV R1, #10   DEL1: MOV R2 , #200   DEL2: MOV R3, #12
[单片机]
单片机<font color='red'>循环</font>彩灯的制作设计
HDHG-FA互感器伏安变比极性综合测试仪使用说明
1.1 概述 本产品是一款全自动化的CT/PT特性测试仪器,是继电保护和高压绝缘专业的专门检测仪器。仪器可以完成的试验包括:CT伏安特性试验、CT变比极性试验、CT极性试验、CT一次通流试验、PT伏安特性试验、PT变比极性试验和PT极性试验,自动计算拐点电压电流值、变比比差值、5%或10%误差曲线值等结果参数。 仪器采用进口核心器件,严格的制造工艺,保证产品性能稳定可靠;仪器面板采用人体工学设计,操作简便,一人操作即可完成全部测试工作,软件功能强大,自动计算并给出测试结果;自带U盘转存功能,结合上位机软件,生成完备的测试报告,数据管理简便高效,减轻测试人员工作负担;仪器自带微型打印机,可即时打印测试数据和曲线。本仪器是一款功能完
[测试测量]
HDHG-FA互感器伏安变比<font color='red'>极性</font>综合测试仪使用说明
STM32F4学习笔记11——CRC循环冗余校验
关于CRC校验有以下几个方面 1.模2除(也就是异或)。 2.多项式与二进制关系(x的最高幂次对应二进制数的最高位,以下各位对应多项式的各幂次,有此幂次项对应1,无此幂次项对应0,x的最高幂次为R,转换成对应的二进制数有R+1位。)。 CRC基本原理 循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。对于一个给定的(N,K)码,可以证明存在一个最高次幂为N-K=R的多项式G(x)。根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。 校验码的具体生成过程为:假设发送信息用信息多项式C(X)表示,将C(x)左移R位,则可表示成C(x)
[单片机]
STM32F4学习笔记11——CRC<font color='red'>循环</font>冗余校验
ST公布65nm HDD迭代解码通道模块样品
中国,2007年12月12日 — 意法半导体推出了首款65nm制造技术的低功耗移动硬盘驱动器(HDD)迭代读通道模块样品。ST的迭代通道信噪比(SNR)增益是硬盘驱动器市场保持存储容量年复合增长率高达40%的关键技术。 这个移动IP模块是ST的Tiziano系列读通道宏单元的首款产品,今后这个产品家族还将增加专门为台式机和商用市场专门设计的读通道。Tiziano系列产品中的每个通道模块都有共同的特性和固件,客户投资一次可用于多个产品市场。 作为ST的第三代经过生产线测试的读通道,Tiziano支持行业对垂直记录、低功耗、伺服信号检测和解调、缺陷映射和自伺服写技术的最新要求。ST创新的Tiziano通道利用迭代技术和动态电压控制技
[新品]
力神/弗迪/蜂巢发布大容量超长循环电池,猛攻这一领域
电池技术的进步,正在破解电动重卡等商用车电动化困境,带动动力电池装机跃进增长。    据电池中国了解,随着大容量、长寿命商用车电池技术的突破及落地,近日多家电池企业在电动商用车领域取得进展。 12月22日,力神电池与中建三局、武汉客车签署战略合作协议。根据协议,武汉客车与中建三局共同承接陕西榆林生态修复项目,拟使用电动矿卡(100t)约1000辆,单车带电量为528度左右,由力神电池提供配套电池。力神电池将在销售价格、产能保证及售后服务等方面给予优先支持。    12月20日,弗迪电池与徐工集团工程机械股份有限公司就商用车用动力电池的电芯与系统新技术及未来规划进行了深度交流,同时双方就合资公司未来的发展也进行了深入探讨。
[汽车电子]
力神/弗迪/蜂巢发布大容量超长<font color='red'>循环</font>电池,猛攻这一领域
ISD4004-16M语音芯片的循环录放电路设计
摘要:针对ISD语音芯片的特点,设计一种由单片机控制,能够循环录放的语音电路,可作为录音机,复读机、音频记录仪使用,既节省存储空间,又降低成本,具有较高的实用价值。 关键词:ISD4004 语音 循环录放 目前,市场上的固体录音机及各种录音笔,大多采用的是顺序录音,不具备循环录音功能,一旦存储器录满,必须重新操作才行。本文设计一种能够循环录放的语音电路,即可解决上述问题。 1 器件功能介绍 ISD系列语音芯片是美国ISD公司推出的产品。该系列语音芯片采用多电平直接接模拟存储(Chip Corder)专利技术,声音不需要A/D转换和压缩,每个采样值直接存储在片内的闪烁存储器中,没有A/D转换误差,因此能够真实、自然地再现语
[手机便携]
51单片机之C语言-4.5基本语句之循环语句
1.循环语句 while 循环结构是程序中一种很重要的结构。 while语句的一般形式为: while(表达式)语句 其中表达式是循环条件,语句为循环体。 while语句的语义是:计算表达式的值,当值为真(非零)时,执行循环体语句。其执行过程可用下图表示。 图4-5-1 while循环执行过程 while语句中的表达式一般是关系表达式或逻辑表达式,只要表达式的值为真(非0)即可继续循环。 2.循环语句 do-while do-while语句的一般形式为: do 语句 while(表达式) 其执行过程可用如下流程图表示, 这个循环与while循环的不同在于:它先执行循环中的语句,然后再判断表达式是否为
[单片机]
51单片机之C语言-4.5基本语句之<font color='red'>循环</font>语句
用机械万用表判断半导体三极管的极性和类型
用判断半导体的极性和类型(用指针式万用表) 1.先选量程:r﹡100或r﹡1k档位。 2.判别半导体三极管基极: 用万用表黑表笔固定三极管的某一个电极,红表笔分别接半导体三极管另外两各电极,观察指针偏转,若两次的测量阻值都大或是都小,则改脚所接就是基极(两次阻值都小的为npn型管,两次阻值都大的为pnp型管),若两次测量阻值一大一小,则用黑笔重新固定半导体三极管一个引脚极继续测量,直到找到基极。 3.判别半导体三极管的c极和e极: 确定基极后,对于npn管,用万用表两表笔接三极管另外两极,交替测量两次,若两次测量的结果不相等,则其中测得阻值较小得一次黑笔接的是e极,红笔接得是c极(若是pnp型管则黑红表笔所接得电极相反
[测试测量]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved