何望春 蔡卫平
(1.九江职业技术学院后勤管理处; 2.九江职业技术学院电气工程学院 ,江西 九江 332007)
CCS仿真软件中的文件输入输出方法
何望春1蔡卫平2
(1.九江职业技术学院后勤管理处; 2.九江职业技术学院电气工程学院 ,江西 九江 332007)
介绍了在CCS集成开发平台上,运用探针输入输出文件的方法,并通过一个实例详细说明了探针要求的文件格式和数据类型,以及其他数据类型的转换。
CCS;探针;数据类型
CCS;probe point; data format
CCS(Code Composer Studio)是TI(Texas Instruments)公司推出的DSP集成开发平台,该平台集成了编辑、编译连接、调试及仿真等功能,支持汇编、C语言,并提供多种实时分析和编程方法,是目前功能最全的DSP开发平台。在程控交换机等通信设备中,DSP程序的主要功能是运用数字信号处理的算法,分析和处理大量的实时数据。调试程序的难点在于找到合适的算法,算法程序一般不需要涉及DSP的外围硬件,因此这部分程序的调试可以脱离DSP硬件,完全在CCS软件仿真环境下进行。事实上程控交换机的DSP程序百分之八十都是在CCS软仿真平台上调试完成的。DSP在实际工作时数据是从I/O口输入输出的,CCS仿真环境下则只能在计算机硬盘上读写数据。DSP的汇编语言不能访问计算机硬盘,但CCS提供了文件输入输出工具,探针就是其中最为常用的一种。以实现FIR滤波器的TMS320C5402汇编程序为例,本文介绍了在CCS3.1仿真软件中,运用探针输入输出文件的方法,并详细介绍了探针要求的文件格式和DSP要求的数据类型,以及其他数据类型的转换。
探针(probe)是CCS提供的文件输入输出工具,可以将主机硬盘上的数据文件导入到DSP内存中(当然该DSP是由CCS模拟的),也可以将DSP处理过的数据输出到主机硬盘。关于探针的用法,CCS帮助中有详细的说明,本文不作赘述。探针作为一种调试工具,对输入输出文件格式有特定的要求,其中常用的一种格式为CCS数据文件(Code Composer Studio data file),属文本文件,包含一行文件头信息,每个数据占一行。其数据类型可以是Hexadecimal,Integer,Long,Float型,在C54x系列DSP中,只能用Hexadecimal或Integer型。文件头格式如下:
MagicNumber Format StartingAddress PageNum Length
其中MagicNumber固定为1651,Format为1~4的整数,分别表示以上四种数据类型,后面三个量分别表示保存数据的起始地址,页号和数据长度。将DSP程序中某行代码设为探针点后(probe point),从CCS的File菜单中选择 File I/O,File I/O对话框将会弹出,允许用户选择输入输出文件以及接收或输出数据的DSP内存的起始地址,数据长度。因此StartingAddress PageNum Length这三个数据实际上不需要从文件头获取,可以把它们设为0。以下是一个CCS数据文件的例子:
1651 1 800 1 10 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000 0x0000
FIR滤波器的差分方程表达式为:
其中,xn和a0是长度各为255的循环缓冲区首地址,输入数据将分批导入xn, 滤波器系数一次性导入a0,变量x、y保存输入输出数据。指令:STM #x, AR5为探针点,将第一个输入数据导入到变量x,并将255点滤波器系数导入到首地址为a0的DSP内存中。两条NOP指令也是探针点,其作用是输出数据y,导入新的输入数据到x,这两条指令在循环程序中,每执行一次,探针就导入或输出一次数据。
滤波器系数通常用MATLAB[2]设计,并且以浮点数的形式给出,由于 C54xDSP属定点DSP,采用二进制补码来表示小数,数值范围为-1~+1,故在设计滤波器系数时应确保其数值绝对值小于1[3],还要将小数转换成二进制补码表示。在CCS中使用探针导入数据时,可以是十六进制也可以是十进制。以下是一个转换的实例:
滤波器系数以浮点数形式存放在文件D:dsp_testfilter.dat中,将其转换成二进制补码表示并存放在文件D:dsp_testhn.dat中。在MATLAB命令行窗口中输入以下指令:
然后将hn.dat加上CCS数据文件头1651 2000,即可作为导入文件。输入信号若是浮点数,可以用同样的方法进行转换。滤波后的输出文件也是二进制补码表示的小数,为了用MATLAB分析滤波的效果,需要将其转换成浮点数。假设输出文件位于D:dsp_testyn_fir.dat,将其转换成浮点数存放在文件D:dsp_testyf.dat中,在MATLAB命令行窗口中输入以下指令即可:
输出文件的前5个数是CCS数据文件头信息,转换成浮点数时必须将其丢弃。
CCS和MATLAB是数字信号处理仿真的两个重要工具,MATLAB通常作为理论分析的工具,其输出数据可用于CCS仿真,为在DSP芯片上实现做好准备。探针则是CCS中文件输入输出的常用工具,数据类型的转换是必不可少的,笔者介绍的转换方法简单实用,易于初学者掌握。由于每次执行加有探针点的指令时仅导入或输出一个数据,程序执行速度较慢,可以修改汇编源程序,一次导入或输出多个数据,提高程序执行效率。
[1]戴明桢,周建江编. TMS320C54xDSP结构、原理及应用[M].第一版.北京:北京航空航天大学出版社,2001;161~181
[2]郑阿奇 主编. MATLAB实用教程[M]. 第一版.北京:电子工业出版社,2004;76~83
[3]吴镇扬 编著.数字信号处理的原理与实现[M].第二版.南京:东南大学出版社,2002;124~157
A Method for File Input/Output in CCS
Based on the CCS, a method for using probe point is presented in this paper. Probe Point allows user to inject and extract data from a running application.File format for Probe Points and data format for DSP are introduced. A method of transforming other data format into it using MATLAB also is presented in this paper.
10.3969/j.issn.1001-8972.2012.02.037
何望春,2003年毕业于江西理工大学,现为九江职业技术学院教师,助教;
蔡卫平(通信作者),1995年毕业于南昌大学,现为九江职业技术学院讲师,研究方向为通信信号处理。