您好,欢迎来到宝玛科技网。
搜索
您的当前位置:首页DSP实验报告范本

DSP实验报告范本

来源:宝玛科技网


DSP实验报告范本

调试环境

实验目的:

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

实验步骤:

以演示实验一为例:

1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;

2.启动CCS,点击主菜单“Project->Open”在目录“C5000QuickStartsinewave”下打开工程文件sinewave.pjt,然后点击主菜单“Project->Build”编译,然后点击主菜单“File->LoadProgram”装载debug目录下的程序sinewave.out;

3.打开源文件e_er3.asm,在注释行“setbreakpointinCCS!!!”语句的NOP处单击右键弹出菜单,选择“Togglebreakpoint”加入红色的断点,如下图所示;

4.点击主菜单“View->Graph->Time/Frequency”,屏幕会出现图形窗口设置对话框

5.双击StartAddress,将其改为y0;双击AcquisitionBufferSize,将其改为1;DSPDataType设置成16-bitsignedinteger,如下图所示;

6.点击主菜单“Windows->TileHorizontally”,排列好窗口,便于观察

7.点击主菜单“Debug->Animate”或按F12键动画运行程序,即可观察到实验结果:

心得体会:

通过对演示实验的练习,让自己更进一步对CCS软件的运行环境、编译过程、装载过程、属性设置、动画演示、实验结果的观察有一个醒目的了解和熟悉的操作方法。熟悉了DSP实验箱基本模块。让我对DSP课程产生了浓厚的学习兴趣,课程学习和实验操作结合为一体的学习体系,使我更好的领悟到DSP课程的实用性和趣味性。

实验二基本算数运算

2.1实验目的和要求

加、减、乘、除是数字信号处理中最基本的算术运算。DSP中提供了大量的指令来实现这些功能。本实验学习使用定点DSP实现16位定点加、减、乘、除运算的基本方法和编程技巧。本实验的演示文件为e_er1.out。

2.2实验原理

1)定点DSP中的数据表示方法

C54_是16位的定点DSP。一个16位的二进制数既可以表示一个整数,也可以表示一个小数。当它表示一个整数时,其最低位(D0)表示20,D1位表示21,次高位(D14)表示214。

2)实现16位定点加法

C54_中提供了多条用于加法的指令,如ADD,ADDC,ADDM和ADDS。其中ADDS用于无符号数的加法运算,ADDC用于带进位的加法运算(如32位扩展精度加法),而ADDM专用于立即数的加法。

3)实现16位定点减法

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

4)实现16位定点整数乘法

在C54_中提供了大量的乘法运算指令,其结果都是32位,放在A或B寄存器中。乘数在C54_的乘法指令很灵活,可以是T寄存器、立即数、存贮单元和A或B寄存器的高16位。

5)实现16位定点小数乘法

在C54_中,小数的乘法与整数乘法基本一致,只是由于两个有符号的小数相乘,其结果的小数点的位置在次高的后面,所以必须左移一位,才能得到正确的结果。C54_中提供了一个状态位FRCT,将其设置为1时,系统自动将乘积结果左移一位。但注意整数乘法时不能这样处理,所以上面的实验中一开始便将FRCT清除。两个小数(16位)相乘后结果为32位,如果精度允许的话,可以只存高16位,将低16位丢弃,这样仍可得到16位的结果。

6)实现16位定点整数除法

在C54_中没有提供专门的除法指令,一般有两种方法来完成除法。一种是用乘法来代替,除以某个数相当于乘以其倒数,所以先求出其倒数,然后相乘。这种方法对于除以常数特别适用。另一种方法是使用SUBC指令,重复16次减法完成除法运算。7)实现16位定点小数除法

在C54_中实现16位的小数除法与前面的整数除法基本一致,也是使用循环的

SUBC指令来完成。但有两点需要注意:第一,小数除法的结果一定是小数(小于1),1

所以被除数一定小于除数。

2.3实验内容

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

1)编写实验程序代码

2)用ccssimulator调试运行并观察结

2.4实验结果

1、加法结果

2、乘法结果

、减法结果

2.5思考题(0.5、0.25)

实验三C54_的浮点数的算术运

一、实验目的

1)练习TMS320C54_汇编程序的编写与调试方法,重点练习C54_程序流程控制的方法。2)学习并掌握应用TMS320C54_来进行浮点数的各种算术运算的算法实现。

3)练习并掌握TMS320C54_的汇编语言的汇编指令系统的使用方法,重点练习具有C54_特点的一些在功能上有所扩展的特殊指令,并了解这些指令在进行算术运算或各种控制时所带来的方便。4)练习并掌握用CCS调试程序的一些基本操作。

二.实验原理

1)浮点数的表示方法

在定点运算中,小数点是在一个特定的固定位置。例如,如果一个32-bit的数把小数点放在最高有效位(也就是符号位)之后,那么就只有分数(绝对值小于1)才能被显示。在定点运算系统中,虽然在硬件上实现简单,但是表示的操作数的动态范围要受到。

3)浮点数运算的步骤

程序代码分成四个ASM文件输入,通过编译生成.obj文件,连接生成.out文件后就可以在DES320PP-U实验系统上调试运行(先要创建一个工程文件,然后加入四个工程文件,并且一起编译,连接。因为每个文件都对下一个文件作了引用)。步骤如下:

a.首先启动setupCCSC5000,在其中设置目前需要的CCS的工作状态为C54__simulator,保存这一设置并退出。然后再启动CCS实验系统软件CCSC5000。

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

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

d.在反汇编窗口中需要观察的地方设置断点:在这条指令处双击将其点为红色即可。比如在加法程序中有指令nop的位置都可以加一个断点。

e.在下拉菜单中选择“调试”——“连续运行”(或直接点击“运行程序”按钮)运行浮点数程序。如果编写程序时在计算完毕后遇到一个断点,那么程序到此会自动停止。

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

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

h.再点击“运行程序”按钮,程序停下来时就可以观察到在存储器窗口中表示结果的变量rlthm、rltlm、rltsign和rlte_p的值在内存区0_080-0_083中,其值分别为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(=1212)。乘法运算的程序到此结束。

l.继续点击“运行程序”按钮,当程序再次停下来时就可以看见在A寄存器中显示的12.0与4.0进行除法运算的结果:AH=4040h,AL=0000h。这是用浮点数格式表示的数3(=12/4)。至此加、减、乘、除四种运算都运行完毕。

m.如果程序运行不正确,请检查源程序是否有误,必要时可以在源程序中多插入断点语句。程序在执行到断点语句时自动暂停,此时可以通过检查各个寄存器中的值以及内存单元中的值来判断程序执行是否正确。

三.在CCS的C54__simulator上调试观察实验结果

浮点加法断点一:

浮点加法断点二:

浮点加法断点三:

浮点减法

浮点数乘法

浮点数除法

四心得体会

通过学习C54_的浮点数的算术运算,以及实验结果的观察,使我了解了浮点数运算的原理,学习并掌握用TMS320C54_来进行浮点数的各种算术运算的算法实现。

实验四用定时器实现数字振荡器

实验四用定时器实现数字振荡器

4.1实验目的

在数字信号处理中,会经常使用到正弦/余弦信号。通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP工作时仅作查表运算即可。在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。本实验除了学习数字振荡器的DSP实现原理外,同时还学习C54_定时器使用以及中断服务程序编写。另外,在本实验中我们将使用汇编语言和C语言分别完成源程序的编写。

4.2实验要求

本实验利用定时器产生一个2kHz的正弦信号。定时器被设置成每25uS产生一次中断(等效于采样速率为40K)。利用该中断,在中断服务程序中用叠代算法计算出一个SIN值,并利用CCS的图形显示功能查看波形。

4.3实验原理

1)数字振荡器原理

设一个传递函数为正弦序列sinkωT,其z变换为

H(z)=

其中,A=2cosωT,B=-1,C=sinωT。设初始条件为0,求出上式的反Z变换得:

y[k]=Ay[k-1]+By[k-2]+C_[k-1]

2)C54_的定时器操作

C54_的片内定时器利用CLKOUT时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。在表4-2中列出了定时器控制寄存器的各个比特位的具体定义。‘VC5402的另一个定时器(定时器1)的控制寄存器分别为:0_30(TIM1),0_31(PRD1),0_32(TCR1)。3)C54_中断的使用

在C54_中用户可以通过中断屏蔽寄存器IMR来决定开放或关闭一个中断请求。图4-1给出了C5402的IMR寄存器的各个比特位的定义。

图4-1‘C5402的IMR寄存器

其中,HPINT表示HPI接口中断,INT3-INT0为外部引脚产生的中断,T_INT和TRINT为TDM串口的发送和接收中断,B_INT0和BRINT0为BSP串口的发送和接收中断,TINT0为定时器0中断。在中断屏蔽寄存器IMR中,1表示允许CPU响应对应的中断,0表示禁止。当然要CPU响应中断,ST1寄存器中的INTM还应该为0(允许所有的中断)。

本实验的初始化程序读取中断向量表的启始地址,然后设置PMST的高9位,以便DSP能正确响应中断,代码如下:

ld0,dp;设置DP页指针

ssb_intm;关闭所有中断

ldvector,a;读出中断向(地址vector在中断向量表程序中定义)

and0FF80h,a;保留高9位(IPTR)

andm007Fh,pmst;保留PMST的低7位

orpmst,a;

stlma,pmst;设置PMST(其中包括IPTR)

4.4实验内容

本实验需要使用C54_汇编语言或C语言实现数字振荡器,并通过CCS提供的图形显示窗口观察出信号波形以及频谱。实验分下面几步完成:

1)根据确定数字振荡器的频率,确定系数。

2)启动CCS,新建工程文件。

3)选择Project菜单中的Options选项,或使用鼠标右键单击工程文件名(如sinewave.pjt)并选择buildoptions项来修改或添加编译、连接中使用的参数。选择Linker窗口,在“OutputFilename”栏中写入输出OUT文件的名字,如sine.out,你还可以设置生成的MAP文件名。

4)完成编译、连接,正确生成OUT文件。

5)选View→Graph→Time/Frequency打开图形显示设置窗口。

6)在汇编源程序的中断服务程序(_tint)中的“nop”语句处设置断点。

7)用右键单击图形显示窗口,并选择“Proporties”项以便修改显示属性。

8)清除所有断点,关闭除波形显示窗口外的所有窗口,并关闭工程文件。

9)完成编译、连接,正确生成OUT文件。

10)打开C源程序(timer.c)窗口,在中断服务程序(函数tint())的“con_buf=0;”语句处增加一个断点。同样打开图形显示窗口,并将“StartAddress”改为buf;“AcquisitionBufferSize”改为“DisplayDataSize”改为128,“DSPDataType”为“32-bitfloatingpoint”

11)选择Debug→Animate,运行程序,观察输出波形。

Copyright © 2019- baomayou.com 版权所有 赣ICP备2024042794号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务