| 码的DSP实现流程图
根据Viterbi译码算法和TMS320C55X DSP芯片的特点,我们设计出了适合汇编语言编程的流程图。通过2步中的优化算法考虑,我们设计出了译码流程图如图2所示:图中R表示编码效率,可取的值为1/2,1/3。
图2 DSP实现流程图
3.2 译码关键步骤中的DSP程序实现
译码中最关键的部分就是加比选单元(ACSU)的工作。在C55x DSP中,可以应用指令ADDSUB,SUBADD和MAXDIFF来完成各个状态路径度量值的累加,比较和选择工作。在一个蝶形循环内,为了方便调用,可以定义两个宏p0,p1。
ACSU的DSP程序如下:
该实现中我们使用了并行处理命令 ||MOVAC2,*AR7+,*AR6。每一条并行命令节省一个机器周期。这样总程序运行时间就会缩短很多。在存储器的使用方面我们考虑到存储空间的有效利用,及时释放掉所占用的不必要内存。这样在整个内存分配上减少了不必要的存储冗余。从而使得整个程序运行效率更高,运算速度更快。
3.3 TMS320C55x系统及CCS(Code Composer Studio)简介[3,4]
C55x是德州仪器公司(TI)新一代定点DSPC5000系列的代表。它对C54x的体系结构进行了改进和增强,源代码与C54x完全兼容,目前版本的C55x工作频率可达160 MHz左右。C55x最显著特点是超低功耗,可以预见它有广阔的应用前景。从CPU体系结构方面来看,C55x具有以下主要特点:①32×16 bit指令缓冲队列;②双MAC和双AIU单元;③4个40位累加器;④数据与地址总线多达12条{⑤灵活的节能配置。增强的结构设计使得C55x具有并行执行功能,这一强大功能可大大节省程序执行周期,尤其对于一些运算密集的应用效果更明显。在实现维特比算法这一特定应用方面,C55x有精心的设计:它扩增了专门用于VA的指令maxdif,使得计算每个蝶形图单元的所需时钟周期仅为3个(C54x需4周期),同时兼顾到SOVA算法的要求,这种改进是令人鼓舞的}转移寄存器增加到2个,分别为TRN0和TRN1,简化了维特比算法中回溯的实现暂存器Tx多达4个,可减少分支路径度量的搬运存储。
CCS2.2(Code Composer Studio)是一种针对标准TMS320调试接口的集成开发环境(IDE)。由TI公司于1999年推出。它提供了环境配置、源文件编辑、程序调试、跟踪和分析等工具,可以帮助用户在一个软件环境下完成编辑、编译链接、调试和数据分析等工作。一种CCS只适用于一种系列的DSP芯片。正因为CCS所具有的强大数据分析功能,我们能通过各种方式来分析,检验系统的性能。
4、CCS下译码DSP实现图形[4]
CCS提供了几种分析工具,其中图形显示功能是最直观的一种,其可以提供的图形显示包括时频分析、星座图、眼图和图像显示。各图形显示所采用的工作原理基本相同,即采用双缓冲区(采集缓冲区和显示缓冲区)分别存储和显示图形。采集缓冲区存在于实际或方针目标板,包含用户需要显示的数据区。显示缓冲区存在于主机内存中,内容为采集缓冲区的拷贝。
图3是时频图中的双曲线图(Dual Time),该图形是对显示缓冲区中的数据不加处理,直接画出显示缓冲区中数据的幅度—时间曲线。图中虚线构成的曲线是卷积编码输入数据的时频图,实线构成的曲线是Viterbi译码输出数据的时频图。
图3 Viterbi译码输出与卷积编码输入时频图
5、结论
以前Viterbi译码算法对于大数据量的译码存在局限性,本文利用软件与硬件结合使用来来消除这一限制。通过原位运算、保存转移、循环存取等优化手段,我们将存储器的容量减到最小,将整体功耗降到最低,通过验证编码输入与译码输出图形,我们可以容易地得到 |