《DSP技术与应用实验指导书new.doc》由会员分享,可在线阅读,更多相关《DSP技术与应用实验指导书new.doc(41页珍藏版)》请在金锄头文库上搜索。
1、实验一 CCS系统基本操作实验一 实验目的1熟悉CCS集成开发环境,掌握工程的生成方法;2熟悉SEED-DEC2812实验环境;3掌握CCS集成开发环境的调试方法。二 实验内容1DSP源文件的建立;2DSP程序工程文件的建立;3学习使用CCS集成开发工具的调试工具。三实验原理与方法1实验原理CCS提供了配置、建立、调试、跟踪和分析程序的工具,便于实时、嵌入式信号程序的编制和测试,它能够加速开发进程,提高工作效率。CCS提供了基本的代码生成工具,它们具有一系列的调试、分析能力。2方法(1)将DSP仿真器与计算机连接好;(2)将DSP仿真器的JTAG插头与SEED-DEC2812单元的J1相连接;
2、(3)启动计算机,计算机启动后,打开SEED-DTK2812的电源。观察SEED-DTK_MBord单元的+5V,+3.3V,+15V,-15V的电源指示灯及SEED-DEC2812的电源指示灯D2是否均亮;若有不亮,请断开电源,检查电源。四 实验仪器设备SEED-DTK2812实验箱五实验步骤1创建源文件(1)双击图标进入CCS环境。(2)打开CCS选择File New Source File命令(3)编写源代码并保存(4)保存源程序名为add.c,选择File save(5)创建其它源程序(如.cmd)可重复上述步骤。2创建工程文件(1)打开CCS,点击Project New,创建一个新工
3、程,其中工程名及路径可任意指定弹出如下对话框:(2)在Project中填入工程名,Location中输入工程路径;其余按照默认选项,点击完成既可创建工程;(3)点击Project选择add files to project,添加工程所需文件;(4)在弹出的对话框中的下拉菜单中分别选择.c点击打开,既可添加源程序add.c添加到工程中;(5) 同样的方法可以添加文件add.cmd、rts2800.lib到工程中;在下面的窗口中可以看到math.c、2812.cmd、rts.lib文件已经加到工程文件中。3设置编译与连接选项(1)点击Project选择Build Options;(2)在弹出的对话
4、框在设置相应的编译参数,一般情况下,按默认值就可以;(3) 在弹出的对话框中选择连接的参数设置,设置输出文件(可执行文件与空间分配文件),堆栈的大小以及初始化的方式。4工程编译与调试(1)点击Project Build all,对工程进行编译,如正确则生成out文件;若是修改程序,可以使用Project Build 命令,进行编译连接,它只对修改部分做编译连接工作。可节省编译与连接的时间。编译通过,生成add.out文件; (2)点击File load program,弹出的对话框中载入debug文件夹下的.out可执行文件;(3)装载add.out完毕;(4)点击debug Go M ain
5、回到C程序的入口;(5)打开File Workspace Save Workspace保存调试环境,以便下次调试时不需要重新进行设置。只要File Workspace Load Workspace既可恢复当前设置;(6) 打开观察窗口察看变量的值,即使用View Watch window;(7)打开add.c文件,在22行“for(;);”设置断点;(8)运行程序,观察结果。六附参考程序#include /* = main = */void main() int a=10; int b=10; int c; c=a+b; for(;);实验二 加减法算术运算实验一 实验目的1学习使用16位定点
6、DSP运算的基本编程方法;2学习在CCS环境中调试调试汇编代码;3学习Simulator的使用方法。二实验内容1使用C54X汇编语言编写16位定点DSP加减法实验程序;2在仿真器上调试运行,并记录分析运算结果。三实验原理与方法1定点DSP中的数据表示方法C54X是16位的定点DSP。一个16位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示,D1位表示,次高位(D14)表示。如果表示一个有符号数时,最高位(D15)为符号位,0表示正数,1表示负数。例如,07FFFH表示最大的正数32767(十进制),而0FFFFH表示最大的负数-1(负数用2的补码方式
7、显示)。当需要表示小数时,小数点的位置始终在最高位后,而最高位(D15)表示符号位。这样次高位(D14)表示,然后是,最低位(D0)表示。所以04000H表示小数0.5,01000H表示小数,而0001H表示16位定点DSP能表示的最小的小数(有符号)=0.000030517578125。在后面的实验中,除非有特别说明,我们指的都是有符号数。在C54X中,将一个小数用16位定点格式来表示的方法是用乘以该小数,然后取整。 从上面的分析可以看出,在DSP中一个16进制的数可以表示不同的十进制数,或者是整数,或者是小数(如果表示小数,必定小于1),但仅仅是在做整数乘除或小数乘除时,系统对它们的处理才
8、是有所区别的,而在加减运算时,系统都当成整数来处理。2实现16位定点加法C54X中提供了多条用于加法的指令,如ADD,ADDC,ADDM和ADDS。其中ADDS用于无符号数的加法运算,ADDC用于带进位的加法运算(如32位扩展精度加法),而ADDM专用于立即数的加法。ADD指令的寻址方式很多,其详细使用说明请参考教材。在本实验中,我们使用下列代码来说明加法运算:ldtemp1,a;将变量temp1装入寄存器Aaddtemp2,a;将变量temp2与寄存器A相加,结果放入A中stla,add_result ;将结果(低16位)存入变量add_result中。注意,这里完成计算temp3=temp
9、1+temp2,我们没有特意考虑temp1和temp2是整数还是小数,在加法和下面的减法中整数运算和定点的小数运算都是一样的。3实现16位定点减法C54X中提供了多条用于减法的指令,如SUB,SUBB,SUBC和SUBS。其中SUBS用于无符号数的减法运算,SUBB用于带进位的减法运算(如32位扩展精度的减法),而SUBC为移位减,DSP中的除法就是用该指令来实现的。SUB指令与ADD指令一样,有许多的寻址方式,其详细使用说明请参考教材。在本实验中,我们使用下列代码来说明减法运算:stm#temp1,ar3;将变量temp1的地址装入ar3寄存器stm#temp3,ar2;将变量temp3的地
10、址装入ar2寄存器sub*ar2+, *ar3,b ;将变量temp3左移16位同时变量temp1也左移16位,然后;相减,结果放入寄存器B(高16位)中,同时ar2加1。sthb,sub_result;将相减的结果(高16位)存入变量sub_result。四 实验仪器设备1PC机一台;2CCS开发软件一套;3DSP教学实验系统一套。五 实验步骤:1 编写实验程序代码本实验的汇编源程序代码分为定点加法和减法两部分。加减程序之间有一条需要加断点的标志语句:nop;当执行到这条加了断点的语句时,程序将自动暂停。这时你可以通过“存贮器窗口”检查计算结果(十六进制数)。实验源程序请参见附录。2 ccs
11、 simulator调试运行并观察结果在完成实验程序代码的输入,并使用ccs进行编译/连接,得到.out文件后,就可以在simulator上调试运行。步骤如下:(1)启动ccs simulator。(2)点击file -load program,找到exer1.out并装入。这时可在反汇编窗口看到程序代码。(3)打开“Memory”窗口,并在其中选择要查看的存贮器地址段:0x0800x08e。(4)在反汇编窗口中在每个“nop”指令处都设一个断点,方法有两种:1.用鼠标双击该指令将其点亮即可。2.在菜单栏中选择debugbreakpoint,然后在弹出的对话框中键入欲加断点的地址即可(注意地址
12、的格式)。(5)单击Run快捷键(或者F5按钮),启动执行基本算术运算程序,程序在执行完加法运算后自动暂停。通过register window窗口可以看到寄存器A的内容为0x46,这正是加法运算的结果。同样,在Memory窗口中,可以看到0x81,0x82,0x88的内容为分别为0012,0034,0x46。执行加法运算后,将0x81和0x82的内容相加,结果放在0x88单元。(6)在Memory窗口中用鼠标左键双击0x81单元,这时可以修改该内存单元的内容。输入新的数据0x0ffee(十进制的-18),编辑内容时请直接输入FFEE(十六进制),然后回车确认,便完成对0x81单元的修改。(7)
13、在register window窗口中修改PC值,方法也是鼠标左键双击PC寄存器的内容,输入新的PC值0x1085(编辑内容时直接输入1085),并用回车键确认。(8)单击Run快捷键(或者F5按钮),程序从当前PC继续运行,重新计算0x81和0x82的和,结果在0x88中。当程序再次暂停时,可以看到A寄存器和0x88的内容为0x22(十进制的34),这正是我们希望的结果:-18+52=34。(9)单击“Run=F5”按钮,程序从当前PC继续运行,完成减法运算。当程序再次暂停时(断点位于0x1093),可以看到0x83和0x84单元的内容分别为FFEE和0012,B寄存器的内容为ffdc000
14、0,而0x89的内容为0xffdc(十进制-36),这正是我们希望的结果:-18-18=-36。注意,该减法操作使用了辅助寄存器寻址,所以计算结果在B寄存器的高16位。(10)如果以上程序运行不正确,请检查代码是否输入正确,还可以在源代码中插入断点调试,注意对中间结果的观察。思考题: 在减法操作中使用了辅助寄存器ar2,ar3,请说明在执行完减法计算后辅助寄存器ar2和ar3的值为多少?附参考程序* FileName:ex2.asm * .title ex2.asm .mmregs .global _c_int00 VAL1 .set 012h ; 18VAL2 .set 034h ; 52VAL3 .set 04000h ; 0.5VAL4 .s