DSP实验报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

实验0实验设备安装才CCS调试环境实验目的:按照实验讲义操作步骤,打开CCS软件,熟悉软件工作环境,了解整个工作环境内容,有助于提高以后实验的操作性和正确性。实验步骤:以演示实验一为例:1.使用配送的并口电缆线连接好计算机并口与实验箱并口,打开实验箱电源;2.启动CCS,点击主菜单“Project-Open”在目录“C5000QuickStart\sinewave\”下打开工程文件sinewave.pjt,然后点击主菜单“Project-Build”编译,然后点击主菜单“File-LoadProgram”装载debug目录下的程序sinewave.out;3.打开源文件exer3.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课程的实用性和趣味性。1实验二基本算数运算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所以被除数一定小于除数。2.3实验内容本实验需要使用C54X汇编语言实现加、减、乘、除的基本运算,并通过DES的存贮器显示窗口观察结果。1)编写实验程序代码2)用ccssimulator调试运行并观察结2.4实验结果1、加法结果32、乘法结果3、减法结果44、除52.5思考题(0.5、0.25)6实验三C54X的浮点数的算术运一、实验目的1)练习TMS320C54X汇编程序的编写与调试方法,重点练习C54X程序流程控制的方法。2)学习并掌握应用TMS320C54X来进行浮点数的各种算术运算的算法实现。3)练习并掌握TMS320C54X的汇编语言的汇编指令系统的使用方法,重点练习具有C54X特点的一些在功能上有所扩展的特殊指令,并了解这些指令在进行算术运算或各种控制时所带来的方便。4)练习并掌握用CCS调试程序的一些基本操作。二.实验原理1)浮点数的表示方法在定点运算中,小数点是在一个特定的固定位置。例如,如果一个32-bit的数把小数点放在最高有效位(也就是符号位)之后,那么就只有分数(绝对值小于1)才能被显示。在定点运算系统中,虽然在硬件上实现简单,但是表示的操作数的动态范围要受到限制。3)浮点数运算的步骤程序代码分成四个ASM文件输入,通过编译生成.obj文件,连接生成.out文件后就可以在DES320PP-U实验系统上调试运行(先要创建一个工程文件,然后加入四个工程文件,并且一起编译,连接。因为每个文件都对下一个文件作了引用)。步骤如下:a.首先启动setupCCSC5000,在其中设置目前需要的CCS的工作状态为C54xxsimulator,保存这一设置并退出。然后再启动CCS实验系统软件CCSC5000。b.在下拉菜单中选择“File”-“LoadProgram”以装入所要调试的程序fc.out,这时,在反汇编窗口中能看到程序的源代码。c.在下拉菜单中选择“View”-“CPURegisters”-“CPURegister”,可以看见在CCS界面下部份会出现CPU中的相关寄存器;选择“View”-“Memory…”,在弹出的“MemoryWindowOptions”窗口中选择要观察的区域为数据区,地址开始为0x80h,然后就可以看见出现一个DataMemory窗口,其中显示了从0x80h开始的.bss区。d.在反汇编窗口中需要观察的地方设置断点:在这条指令处双击将其点为红色即可。比如在加法程序中有指令nop的位置都可以加一个断点。e.在下拉菜单中选择“调试”——“连续运行”(或直接点击“运行程序”按钮)运行浮点数程序。如果编写程序时在计算完毕后遇到一个断点,那么程序到此会自动停止。f.当示范程序在第一个断点处停下来时,此时就可以看见程序初始化后的情况:被加数12.0以浮点数的格式放在内存区0x08a-0x08b中,其值为4140h和0000h。加数12.0放在内存区0x08c-0x08d中,其值也为4140h和0000h。7g.再点击“运行程序”按钮,之后程序会在下一个断点处停下来,这时可以看见被加数被格式转换后的变量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的C54xxsimulator上调试观察实验结果浮点加法断点一:8浮点加法断点二:浮点加法断点三:9浮点减法浮点数乘法10浮点数除法四心得体会通过学习C54X的浮点数的算术运算,以及实验结果的观察,使我了解了浮点数运算的原理,学习并掌握用TMS320C54X来进行浮点数的各种算术运算的算法实现。实验四用定时器实现数字振荡器11实验四用定时器实现数字振荡器4.1实验目的在数字信号处理中,会经常使用到正弦/余弦信号。通常的方法是将某个频率的正弦/余弦值预先计算出来后制成一个表,DSP工作时仅作查表运算即可。在本实验中将介绍另一种获得正弦/余弦信号的方法,即利用数字振荡器用叠代方法产生正弦信号。本实验除了学习数字振荡器的DSP实现原理外,同时还学习C54X定时器使用以及中断服务程序编写。另外,在本实验中我们将使用汇编语言和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]+Cx[k-1]2)C54X的定时器操作C54X的片内定时器利用CLKOUT时钟计数,用户使用三个寄存器(TIM,PRD,TCR)来控制定时器,参见表4-1。在表4-2中列出了定时器控制寄存器的各个比特位的具体定义。‘VC5402的另一个定时器(定时器1)的控制寄存器分别为:0x30(TIM1),0x31(PRD1),0x32(TCR1)。3)C54X中断的使用在C54X中用户可以通过中断屏蔽寄存器IMR来决定开放或关闭一个中断请求。图4-1给出了C5402的IMR寄存器的各个比特位的定义。图4-1‘C5402的IMR寄存器其中,HPINT表示HPI接口中断,INT3-INT0为外部引脚产生的中断,TXINT和TRINT为TDM串口的发送和接收中断,BXINT0和BRINT0为BSP串口的发送和接收中断,TINT0为定时器0中断。在中断屏蔽寄存器IMR中,1表示允许CPU响应对应的中断,0表示禁止。当然要CPU响应中断,ST1寄存器中的INTM还应该为0(允许所有的中断)。本实验的初始化程序读取中断向量表的启始地址,然后设置PMST的高9位,以便DSP能正确响应中断,代码如下:ld#0,dp;设置DP页指针ssbxintm;关闭所有中断12ld#vector,a;读出中断向(地址vector在中断向量表程序中定义)and#0FF80h,a;保留高9位(IPTR)andm#007Fh,p

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功