DSP实验报告指示灯.docx
《DSP实验报告指示灯.docx》由会员分享,可在线阅读,更多相关《DSP实验报告指示灯.docx(9页珍藏版)》请在冰豆网上搜索。
实验1.4:
编写一个汇编和C混合的DSP程序
试验步骤:
3、编译源文件,下载可执行程序:
(1)单击菜单“Project”、“RebuildAll”。
执行结果如右图:
(2)执行File->LoadProgram,在随后打开的对话框中选择刚刚建立的UseCMD.out文件。
完成后,系统自动打开源程序文件UseCMD.c。
4、打开观察窗口
打开view菜单下的watchwindows工具,在watch1中的name上分别输入x,y,z三个变量,
如图:
5、察程序运行结果
在“x=1;”这一行上设置断点。
方法是先把光标移动到这一行上,右键选择togglebreakpoint。
(1)执行程序(按F5键)1次,可观察到watch窗口中x和y的值无变化。
如图:
(2)单步运行2次(按F8键),在变量窗口中观察到变量x、y被赋值。
如图
(3) 再单步运行1次(按F8键),在变量窗口中观察到变量z中保存的就是x加上y的值。
如图
6、成内存映像文件
(1)单击菜单“Project”、“Options…”,启动“BuildOptions”工程设置对话框。
(2)单击“Linker”属性页,在“MapFilename”项中输入需要生成的map文件名,比如可以输入UseCMD.map
(3)单击“确定”,完成设置。
(4)选择菜单“Project”、“RebuildAll”,重新编译工程,生成新设置的map文件。
7、对照观察map文件和cmd文件的内容
(1)选择菜单“File”、“Open…”,将找到C:
\ICETEK-F2812-EDULab\ DSP281x_examples\Lab02-UseCMD目录,将文件类型改为“MemoryMapFiles”,选择刚刚生成的UseCMD.map文件、打开。
(2)展开工程管理窗中的UseCMD.pjt,双击其中的UseCMD.cmd文件。
(3)程序的入口地址:
cmd文件的SECTION中指定.text段放到程序区(PAGE0)的PRAMH0中,在MEMORY中指定PRAMH0,从内存地址3f8002h开始,长度为1000h;再看map文件中“ENTRYPOINTSYMBOL”中说明了“c_int00”标号的地址为003f8002h,两者相符。
如下图所示:
(4)内存的占用情况:
通过观察map文件中的“MEMORYCONFIGURATION”段可以了解内存的使用情况。
可以看到text段放到程序区(PAGE0)的PRAMH0中,并且从其首地址开始。
.改变内存分配
修改cmd文件中的
PRAMH0 :
origin=0x3f8002,length=0x001000
改为
PRAMH0 :
origin=0x3f8502,length=0x00500
意思是把PRAMH0的首地址入口改为0x3f8002,所占的字节长度为500h。
重新编译工程,观察map文件中有何变化。
结果如下图所示:
从map文件的描述结果可以看出,“c_int00”标号的地址修改为003f8502h,可以看到PPAMH0的首地址变为了0x3f8002,长度也修改成了500.两者还是相符的。
8、题目:
如果对第一个实验按上述方法对cmd文件进行修改,重新观察其map文件的变化。
过程与结果如下:
修改前查看map文件的描述:
按上述方法修改cmd文件后,结果如下:
可以看到修改后的“c_int00”标号的地址由原来的3f8018h变为了为3f8518h,在MEMORY中指定PRAMH0,由原来的内存地址3f8002h开始到修改后的3f8502h开始,长度为变为了500,text段也在程序区(PAGE0)的PRAMH0中,但不是从它的首地址开始,但也由原来的3f8018h变为了为3f8518h,同样增加了500,说明了修改cmd文件可以安排程序和数据在DSP内存资源中的分配和位置;通过观察map文件可以观察到修改后的程序和数据所占用的实际尺寸和地址。
试验结果:
实验分析:
一.通过实验可以发现,修改cmd文件可以安排程序和数据在DSP内存资源中的分配和位置;map文件中描述了程序和数据所占用的实际尺寸和地址。
C语言编制的程序,在经过编译器编译后,需要连接若干C标准程序辅助运行。
以下是运行流程:
1.程序入口为_c_int00,执行标准C库中的程序,负责初始化C环境、申请堆栈、初始化有初始值的变量等。
2.程序最终转到用户编制的主函数运行。
3.程序在主函数中的无限循环中持续运行。
二.使用混合程序编程,在可以完全实现原来算法的同时,可以优化关键的算法模块。
实验5.3:
快速傅立叶变换(FFT)算法
试验结果:
64点
输入:
滤波:
输出:
256点
输入:
滤波:
输出:
实验分析:
开始滤波运算时,AR2指向第一个系数,AR0则指向当前输入信号x(n)。
完成一次滤波运算后,AR2将再次指向第一个系数,而AR0则指向最老的x(n-L+1)。
在下一循环的滤波运算中,新的输入信号将取代x(n-L+1),作为新的x(n)。
AR0指向滤波器输入信号,AR0、AR2指向滤波器系数,AR1用于函数调用时传递参量,AR2用于滤波运算。
其中,AR0和AR2均采用循环寻址方式。