当前位置:文档之家› DSP实验报告_百度文库(精)

DSP实验报告_百度文库(精)

实验0 实验设备安装才CCS调试环境实验目的:按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。

实验步骤:以演示实验一为例:1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStart\sinewave\”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->Load Program”装载debug目录下的程序sinewave.out;3.打开源文件exer3.asm,在注释行“set breakpoint in CCS !!!”语句的NOP处单击右键弹出菜单,选择“Toggle breakpoint”加入红色的断点,如下图所示;4.点击主菜单“View->Graph->Time/Frequency…”,屏幕会出现图形窗口设置对话框5.双击Start Address,将其改为y0;双击Acquisition Buffer Size,将其改为1;DSP Data Type设置成16-bit signed integer,如下图所示;6.点击主菜单“Windows->Tile Horizontally”,排列好窗口,便于观察7.点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果:心得体会:通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。

熟悉了DSP实验箱基本模块。

让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。

实验二基本算数运算2.1 实验目的和要求加、减、乘、除是数字信号处理中最基本的算术运算。

DSP 中提供了大量的指令来实现这些功能。

本实验学习使用定点DSP 实现16 位定点加、减、乘、除运算的基本方法和编程技巧。

本实验的演示文件为exer1.out。

2.2 实验原理1 定点DSP 中的数据表示方法C54X 是16 位的定点DSP。

一个16 位的二进制数既可以表示一个整数,也可以表示一个小数。

当它表示一个整数时,其最低位(D0)表示20,D1 位表示21,次高位(D14)表示214。

2 实现16 位定点加法C54X 中提供了多条用于加法的指令,如ADD,ADDC,ADDM 和ADDS。

其中ADDS 用于无符号数的加法运算,ADDC 用于带进位的加法运算(如32 位扩展精度加法),而ADDM 专用于立即数的加法。

3 实现16 位定点减法C54X 中提供了多条用于减法的指令,如SUB,SUBB,SUBC 和SUBS。

其中SUBS用于无符号数的减法运算,SUBB 用于带进位的减法运算(如32 位扩展精度的减法),而SUBC 为移位减,DSP 中的除法就是用该指令来实现的。

4 实现16 位定点整数乘法在C54X 中提供了大量的乘法运算指令,其结果都是32 位,放在A 或B 寄存器中。

乘数在C54X 的乘法指令很灵活,可以是T 寄存器、立即数、存贮单元和A 或B寄存器的高16 位。

5 实现16 位定点小数乘法在C54X 中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。

C54X中提供了一个状态位FRCT,将其设置为1 时,系统自动将乘积结果左移一位。

但注意整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT 清除。

两个小数(16 位)相乘后结果为32 位,如果精度允许的话,可以只存高16 位,将低16 位丢弃,这样仍可得到16 位的结果。

6 实现16 位定点整数除法在 C54X 中没有提供专门的除法指令,一般有两种方法来完成除法。

一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。

这种方法对于除以常数特别适用。

另一种方法是使用SUBC 指令,重复16 次减法完成除法运算。

7 实现16 位定点小数除法在 C54X 中实现16 位的小数除法与前面的整数除法基本一致,也是使用循环的SUBC 指令来完成。

但有两点需要注意:第一,小数除法的结果一定是小数(小于1),所以被除数一定小于除数。

2.3 实验内容本实验需要使用C54X 汇编语言实现加、减、乘、除的基本运算,并通过DES 的存贮器显示窗口观察结果。

1 编写实验程序代码2 用ccs simulator 调试运行并观察结2.4 实验结果1、加法结果2、乘法结果3、减法结果4、除2.5 思考题(0.5、0.25)实验三C54X的浮点数的算术运一、实验目的1 练习TMS320C54X 汇编程序的编写与调试方法,重点练习C54X 程序流程控制的方法。

2 学习并掌握应用TMS320C54X 来进行浮点数的各种算术运算的算法实现。

3 练习并掌握TMS320C54X 的汇编语言的汇编指令系统的使用方法,重点练习具有C54X 特点的一些在功能上有所扩展的特殊指令,并了解这些指令在进行算术运算或各种控制时所带来的方便。

4 练习并掌握用CCS 调试程序的一些基本操作。

二.实验原理1 浮点数的表示方法在定点运算中,小数点是在一个特定的固定位置。

例如,如果一个32-bit 的数把小数点放在最高有效位(也就是符号位)之后,那么就只有分数(绝对值小于1)才能被显示。

在定点运算系统中,虽然在硬件上实现简单,但是表示的操作数的动态范围要受到限制。

3 浮点数运算的步骤程序代码分成四个 ASM 文件输入,通过编译生成.obj 文件,连接生成.out 文件后就可以在DES320PP-U 实验系统上调试运行(先要创建一个工程文件,然后加入四个工程文件,并且一起编译,连接。

因为每个文件都对下一个文件作了引用)。

步骤如下:a. 首先启动 setup CCS C5000,在其中设置目前需要的CCS 的工作状态为C54xxsimulator,保存这一设置并退出。

然后再启动CCS 实验系统软件CCS C5000。

b. 在下拉菜单中选择“File”->“Load Program”以装入所要调试的程序fc.out,这时,在反汇编窗口中能看到程序的源代码。

c. 在下拉菜单中选择“View”->“CPU Registers”->“CPU Register”,可以看见在CCS 界面下部份会出现CPU 中的相关寄存器;选择“View”->“Memory…”,在弹出的“Memory Window Options”窗口中选择要观察的区域为数据区,地址开始为0x80h,然后就可以看见出现一个Data Memory 窗口,其中显示了从0x80h 开始的.bss 区。

d. 在反汇编窗口中需要观察的地方设置断点:在这条指令处双击将其点为红色即可。

比如在加法程序中有指令nop 的位置都可以加一个断点。

e. 在下拉菜单中选择“调试”——“连续运行”(或直接点击“运行程序”按钮)运行浮点数程序。

如果编写程序时在计算完毕后遇到一个断点,那么程序到此会自动停止。

f. 当示范程序在第一个断点处停下来时,此时就可以看见程序初始化后的情况:被加数12.0 以浮点数的格式放在内存区0x08a-0x08b 中,其值为4140h 和0000h。

加数12.0 放在内存区0x08c-0x08d 中,其值也为4140h 和0000h。

g. 再点击“运行程序”按钮,之后程序会在下一个断点处停下来,这时可以看见被加数被格式转换后的变量op1hm、op1lm 和op1se 的值在内存区0x084-0x086 中,分别为00c0h、0000h 和0082h。

同样加数被格式转换后的变量op2se、op2hm 和op2lm的值在内存区0x087-0x089 中,分别为0082h、00c0h 和0000h。

h. 再点击“运行程序”按钮,程序停下来时就可以观察到在存储器窗口中表示结果的变量rlthm、rltlm、rltsign 和rltexp 的值在内存区0x080-0x083 中,其值分别为0040h、0000h、0180h 和0083h。

i. 这时可以看到 A 寄存器中的值为AH=41c0h,AL=0000h 这就是最后的以浮点数的格式表示的结果值24(=12+12)。

加法运算到此结束。

j. 继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的13.0 与12.0 进行减法运算的结果:AH=3f80h,AL=0000h。

这是用浮点数格式表示的数1(=13-12)。

减法运算的程序到此结束。

k. 继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与12.0 进行乘法运算的结果:AH=4310h,AL=0000h。

这是用浮点数格式表示的数144(=12*12)。

乘法运算的程序到此结束。

l. 继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A 寄存器中显示的12.0 与4.0 进行除法运算的结果:AH=4040h,AL=0000h。

这是用浮点数格式表示的数3(=12/4)。

至此加、减、乘、除四种运算都运行完毕。

m. 如果程序运行不正确,请检查源程序是否有误,必要时可以在源程序中多插入断点语句。

程序在执行到断点语句时自动暂停,此时可以通过检查各个寄存器中的值以及内存单元中的值来判断程序执行是否正确。

三.在 CCS 的C54xx simulator 上调试观察实验结果浮点加法断点一:浮点加法断点二:浮点加法断点三:浮点减法浮点数乘法浮点数除法四心得体会通过学习C54X的浮点数的算术运算,以及实验结果的观察,使我了解了浮点数运算的原理,学习并掌握用TMS320C54X来进行浮点数的各种算术运算的算法实现。

实验四用定时器实现数字振荡器实验四用定时器实现数字振荡器4.1 实验目的在数字信号处理中,会经常使用到正弦/余弦信号。

通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP 工作时仅作查表运算即可。

在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。

本实验除了学习数字振荡器的DSP 实现原理外,同时还学习C54X 定时器使用以及中断服务程序编写。

另外,在本实验中我们将使用汇编语言和C 语言分别完成源程序的编写。

4.2本实验利用定时器产生一个 2kHz 的正弦信号。

定时器被设置成每25uS 产生一次中断(等效于采样速率为40K)。

相关主题