简单例子学习DSP编程和CCS使用

上传人:豆浆 文档编号:20504082 上传时间:2017-11-22 格式:DOC 页数:16 大小:1.14MB
返回 下载 相关 举报
简单例子学习DSP编程和CCS使用_第1页
第1页 / 共16页
简单例子学习DSP编程和CCS使用_第2页
第2页 / 共16页
简单例子学习DSP编程和CCS使用_第3页
第3页 / 共16页
简单例子学习DSP编程和CCS使用_第4页
第4页 / 共16页
简单例子学习DSP编程和CCS使用_第5页
第5页 / 共16页
点击查看更多>>
资源描述

《简单例子学习DSP编程和CCS使用》由会员分享,可在线阅读,更多相关《简单例子学习DSP编程和CCS使用(16页珍藏版)》请在金锄头文库上搜索。

1、 1目 录实验一 CCS 基本使用和 DSP 汇编编程基础一、预习内容复习汇编语言指令内容,汇编语言使用中的基本概念,CCS 的基本概念。二、实验目的1. 掌握一个 DSP 软件开发流程。2. 理解 DSP 的启动过程。3. 掌握汇编的书写规范,学会汇编指令的运用。4. 掌握编译器和连接器的使用,能够合理地分配存储空间。5. 学习 CCS 的各种调试技巧,如:CUP 寄存器、数据和程序存储器的观察,断点的设置,反汇编窗口的使用。6. 学习定点数的运算方法。三、实验要求1. 用.set 定义四个立即数。2. 在.bss 段建立几个存储空间。3. 把立即数相加和相乘,结果放在.bss 分配的存储空

2、间。4. 合理分配各个段的存储地址,并使用 CCS 观察。四、实验原理1. 软件开发流程从大的步骤来讲,一个软件要能够在 DSP 上面正常运行,需要用户完成以图1-1 所示的流程。第一步:在用户的工程里面,必须包含至少两个文件。一个是程序指令的源文件,这个文件可以是汇编编写的,也可以是 C 语言编写的。当然,这样的文件在一个工程当中可以用多个,而且,编程的语言可以不统一。工程当中必须包含的第二个文件是连接文件。这个文件的作用是把源文件中定义的各个段放到用户指定的DSP 的程序存储区,从而可以在该区域按一定顺序执行。第二步:两个文件编辑完成以后,可以调用编译、汇编和连接命令。编译功能把 C 源文

3、件转化为汇编文件,期间的转化有一定的规则,这些规则是在书写 C 语言语句是应该注意的东西。汇编的功能是把编译形成的汇编文件或者是用户自己编辑的汇编文件转化为 COFF 格式文件。而最后通过连接命令,结合连接文件,把 COFF 文件连接成为可执行的 COFF 文件,即后缀名为.OUT 的文件。第三步:通过 CCS 的加载功能,把.OUT 文件加载到 DSP 内部,其地址由连接文件规定。如果成功,可以在 CCS 中运行该文件,并相应进行调试。 2图 1-1 开发流程图2.汇编源文件书写在 CCS 中,新建一个文件,在这个文件中,如果使用汇编语言,那就命名时使用 ASM 的后缀名,如果使用 C 语言

4、,那命名时就使用 C 的后缀名。同时应该把文件加载到相应的工程当中去。对于使用汇编的源文件,他有一定的语法规范。包括语法格式,标号的表示,立即数的表示,段的定义和宏定义。TMS320C54x Assembly Language Tools Users Guide和TMS320C54x DSP Reference Set-Volume 2: Mnemonic Instruction Set是掌握汇编语言书写方法的两本手册。3.启动方式DSP 有多种启动方式。但是,由于我们采用通过 CCS 从 JTAG 直接加载的方式,对于其他的加载过程可以不必考虑。但是,MP/MC 方式,对于启动却有一定影响。

5、这里,有两个问题要注意。一是系统复位后,MP/MC 寄存器的值究竟是多少。二 3是 MP、MC 方式(DSP 是由 MP/MC 引脚来决定是访问内部程序存储器还是外部程序存储器,MP/MC=1 访问外部程序存储器空间,MP/MC=0 访问内部程序存储器空间)对应的 DSP 片内存储器分配关系如何。通过硬件跳线,可以设置启动方式,通过连接文件,可以把程序代码放到指定的位置。4CCS 的调试工具在本次实验中,CCS 的调试工具将要使用到一些基本的操作。主要包括如何观察 CPU 的各个寄存器,如何观察数据区和程序区的数据;单步执行的方法和断点执行。五、实验步骤1. 双击桌面的 CCS5000 图标,

6、进入 CCS。如果遇到问题,检查硬件线路是否连接正确,电源是否打开,CCS SETUP 是否合理。当然,也有可能是 PC 机内的 ISA 插卡接触不好。2. 新建一个工程。执行 Project 菜单下的 New,选择一个合适的位置,存放这个新建的工程,最好是自己建立的目录,便于管理。工程的名称以字母开头,其他没有要求,不需要加后缀名,如:sy1。3. 新建一个文件作为汇编源文件。执行 File 菜单下的 New/Sourse File 命令,接着就可以在编辑框里,按照汇编语言的规范,编辑相应的指令代码。指令完成以后,执行 File/Save as 命令,给汇编文件取一个合适的文件名,保存在同工

7、程相同的目录下。保存时,不需要加后缀名,但是,要选择文件的类型为Assembly Source File(.asm)。4. 编辑汇编源文件,完成以后,需要把这个文件加入到相应的工程中去。在左边的工程管理窗口里,鼠标移到工程文件名上面,单击右键,选择 Add File。寻找到刚才编辑的汇编源文件,选择确认。之后可以在工程管理器中观察到,Source 文件夹中,出现了刚才的汇编文件。5. 汇编文件的代码如下: 4.global _c_int00 VAL1 .set 012h ; 18VAL2 .set 034h ; 52.bss temp,1 ; address of 0x080.bss temp

8、1,1 ; address of 0x081.bss temp2,1 ; address of 0x082;result register.bss add_result,1 ; address of 0x088.bss mpy_i_h,1 ; address of 0x08a.bss mpy_i_l,1 ; address of 0x08b.text _c_int00:ld #temp,DP ; load DP of temp1st #VAL1,temp1st #VAL2,temp2 ; init temp1 & temp2 ,18+52=70(0x46);- test ADD -ld tem

9、p1,a ; load temp1 - aadd temp2,a ; a+temp2 - astl a,add_result ; save a(low 16 bits) - add_resultnop ; set breakpointst #VAL1,temp1st #VAL2,temp2 ; init temp1 & temp2,18*52=936(0x3a8);- test MPY (integer) -rsbx FRCT ; prepare for integer mpyld temp1,T ; temp1 - Tmpy temp2,a ; temp1*temp2 - A (result

10、 is 32 bit)sth a,mpy_i_h ; the high 16bit in mpy_i_hstl a,mpy_i_l ; the low 16bit in mpy_i_lnop ; set breakpointend:b end.end使用.set 定义立即数的值;使用.bss 分配一定存储空间;在.text 段编写指令,主要有:ld、st、add、mpy、stl、sth 等等。6. 根据 MP/MC 的值,理解 DSP 存储器地址分配,编辑好连接文件。连接文件的编辑方法同汇编源文件是一样的,也是建立、编辑、存盘、命名、添加入工程。不同在于文件的内容和文件的后缀名不同。连接文件的

11、后缀名文.cmd,选择存盘类型的时候要注意。文件的内容如下: 5MEMORYPAGE 0: IPROG: origin = 0x2000, len = 0x1000PAGE 1: IDATA: origin = 0x80, len = 0x1000SECTIONS .text: IPROG PAGE 0.bss: IDATA PAGE 17. 连接文件本来可以设置许多的参数,但是,这些参数也可以在 Project/Options中设置。在这个窗口中,可以对编译、汇编和连接的过程设置参数,各个参数的意思查阅相关的手册。通常,使用默认参数就可以了。参数设置完成后,就可以执行 Debug/build

12、 命令。这个命令将依次执行编译、汇编、连接的三个过程,任何一个过程中出现错误,都会在荧幕下方的窗口中显示出来。对于错误,要认真阅读提示信息,从而知道错误出现的位置,并进行相应的改正。8. 如果 Build 的过程没有错,将会在工程所在目下出现一个后缀名为.out 的文件,这个文件文件名是在 Project/Options 中设置产生的。目标板采用 MC 方式,load 刚生成的.out 文件,如果提示错误,检查跳线设置。9. 加载成功,光标出现在程序起始位置,呈黄色。这时,在需要设置断点的地方设置断点。打开 View 里面的 CPU Register,在新出现的窗口里,可以观察 DSP CPU

13、 寄存器的各个数据。同样,可以打开 View/Memery,选择.data 代码段所在的位置,开始地址为 0X80,位于 data 页,在新窗口中,可以观察该地址开始的数据存储区的各个数据。10.执行 Debug/Run 命令,程序开始运行。到断点处停止,加法的运算完成。这时,可以再次观察 CPU Register 窗口,红色数字代表数据有变换,注意 PC 指针的改变。数据窗口中,则注意用于存放运算结果的地址单元的值的变化。11.继续执行 Run 命令,观察乘法的运算结果。12.执行 Debug 中 Reset Dsp 和 Restart 命令,光标从新回到程序入口。执行Debug/StepI

14、nto,单步运行程序,再次观察结果。六、实验报告要求给出数据空间的定义数据大小和存储位置,记录各个计算结果变化前后的内容,给出连接文件和汇编程序。 6实验二 C 和 ASSEMBLY 的混合编程一、预习内容C 语言的基本指令和编程方法,DSP 中断矢量表的内容和中断的执行过程的知识。二、实验目的1. 掌握 C 语言编写源文件的方法。2. 掌握中断矢量表的使用,理解 BOOT LOADER 的过程。3. 掌握定时器中断的使用方法。4. 学习 C 和 ASSEMBLY 的混合编程。5. 学习 CCS 中图形观察动态数据的方式。6. 学习用定时器实现数字振荡器的算法。三、实验要求1. 设计一个数字振

15、荡器的实现算法,产生一个 2KHZ 的正弦信号。2. 定时器设置为 25S 产生一次中断(等效于采样速率 40K)。3. 使用汇编语言编辑一个中断矢量表,而主程序和中断服务程序使用 C 语言编写。4. 使用 CCS 图形观察功能,观察输出正弦信号。四、实验原理1、数字振荡器原理设传递函数为正弦序列 ,其 Z 变换为:TksinBAzCk2si其中,其中 ,即:Asin,1,coco2)sin(TzTk设初始条件为 0,求出上式的反 Z 变换得:11 kCxByy这是一个二阶差分方程,其单位冲击相应为 。利用单位冲击函数性质知道,sin仅当 的时候, 为 1,其他情况都为 0。当输入为单位冲击时,输出就1kkx是我们需要的正弦序列。2123100

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号