北京信息科技大学DSP实验一.docx

上传人:b****8 文档编号:28080233 上传时间:2023-07-08 格式:DOCX 页数:14 大小:314.53KB
下载 相关 举报
北京信息科技大学DSP实验一.docx_第1页
第1页 / 共14页
北京信息科技大学DSP实验一.docx_第2页
第2页 / 共14页
北京信息科技大学DSP实验一.docx_第3页
第3页 / 共14页
北京信息科技大学DSP实验一.docx_第4页
第4页 / 共14页
北京信息科技大学DSP实验一.docx_第5页
第5页 / 共14页
点击查看更多>>
下载资源
资源描述

北京信息科技大学DSP实验一.docx

《北京信息科技大学DSP实验一.docx》由会员分享,可在线阅读,更多相关《北京信息科技大学DSP实验一.docx(14页珍藏版)》请在冰豆网上搜索。

北京信息科技大学DSP实验一.docx

北京信息科技大学DSP实验一

实验报告

 

课程名称DSP原理与应用

实验项目DSP软件开发工具CCS的使用

指导教师

 

学院信息与通信工程_

专业电子信息工程

班级/学号

学生姓名

实验日期

成绩_______________________

实验1DSP软件开发工具CCS的使用

一、实验目的

1.掌握CCS的软件仿真和硬件仿真两种仿真模式。

2.掌握CCS软件开发工具的设置。

3.掌握CCS项目的创建和管理,程序编辑、编译、链接、加载、运行的软件开发步骤。

4.熟悉CCS调试工具和分析工具的使用。

二、实验仪器及工具

计算机,安装WindowsXP操作系统、TI的TMS320C5000DSP的开发软件CCS2.21;ICETEK-VC5509教学实验箱。

三、实验内容

1.CCS软件仿真模式下库和可执行程序的开发步骤。

2.CCS软件仿真模式下调试工具和分析工具的使用。

3.CCS硬件仿真模式程序的调试及VC5509A片内外存储器的查看。

四、实验步骤

(一)、CCS软件仿真模式下库和可执行程序的开发步骤

1.点击桌面SetupCCS2('C5000)图标,按讲义给出的步骤设置CCS为软件访真模式,例如C55xxFunctionalSimulator,保存并退出,打开CCS2('C5000)集成开发环境。

2.找到CCS的安装目录(默认安装在c:

\ti\目录下),在c:

\ti\myprojects目录下建立myapplication文件夹。

把ti\tutorial\sim55xx\maxminmath目录下所有*.c和*.cmd文件拷贝到这个新建立的文件夹中。

3.选择菜单Project→New,新建库项目maxminlibrary.prj,注意新建项目时Project类型选择Library(.lib),添加averagevalue.c、maximumvalue.c和minimumvalue.c三个C源代码文件到项目,阅读三个文件,理解代码的含义。

选择菜单Project→BuildOption,选择文档管理器(Archiver)选项卡,查看文档管理器选项。

选择菜单Project→Rebuildall,或单击“RebuildAll”图标,编译生成maxminlibrary.lib。

4.新建项目mainapplication.prj,注意Project类型选择Executable(.out),分别添加main函数文件testapp.c、链接器命令文件mainapplication.cmd、运行支持库rts55.lib(位于c:

ti\c5500\cgtools\lib\目录下)、库文件maxminlibrary.lib(..\debug\目录下),理解testapp.c代码的含义。

选择菜单Project→BuildOption,选择编译器(Compile)选项卡,“Category:

”列表下点击Assembly,选中“Keepgenerated.asmFiles(-k)”复选框,观察上面编译选项的变化;选择链接器(Linker)选项卡,查看链接器选项。

选择菜单Project→Rebuildall,或单击“Rebuildall”图标,编译生成mainapplication.out可执行文件。

选择菜单File→LoadProgram,选择debug目录加载可执行文件mainapplication.out,选择菜单Debug→GoMain,按“F5”键运行程序,观察运行结果,可尝试修改应用程序,观察并记录运行结果。

资源管理器下查看c:

\ti\myprojects\myapplication\debug目录下产生的文件。

(二)、CCS软件仿真模式下调试工具和分析工具的使用

1.把c:

ti\tutorial\sim55xx\volume1目录拷贝到c:

ti\myprojects文件夹中。

选择菜单Project→Open,打开c:

ti\myprojects\volume1目录下的项目文件volume.pjt,出现错误rts55.lib找不到,点击“Browse…”键重新指定“rts55.lib”位置即可,或者点击“Remove”键,将其从项目中移出。

展开项目volume.pjt,双击链接器命令文件volume.cmd,打开它,在“MEMORY{”上面添加一行“-lrts55.lib”。

阅读“volume.c”文件,理解代码的含义。

阅读sine.dat文件,理解它是正弦曲线16位有符号整型数据。

选择菜单Project→Rebuildall,编译生成volume.out可执行文件并加载运行。

鼠标单击Debug工具栏上的“Halt”图标,暂停程序运行。

选择菜单Project→BuildOption,察看编译器选项,选择Preprocessor,定义Symbols栏添加FILEIO,点击确定,选择菜单Project→Build,或单击“Incrementalbuild”,Build窗口显示出现语法错误,修改语法错误。

再次编译得到可执行程序并加载运行,观察程序运行。

鼠标单击Debug工具栏上的“Halt”图标,暂停程序运行。

按“F5”键,程序继续运行。

2.探针和文件的输入/输出

(1)选择菜单File→LoadProgram,选择可执行文件volume.out,加载它。

(2)选择菜单Debug→GoMain。

或在项目视图中双击volume.c,在右边的编辑窗口中将显示源代码。

(3)将光标移到主函数中的dataIO()那一行上。

(4)单击“ToggleProbePoint”图标,该行旁边蓝色标志表示设置了一个探点。

(5)选择菜单File→FileI/0…,打开“FileI/O”对话框。

(6)点击FileInput选项卡,然后单击“AddFile”按钮。

(7)选择sine.dat文件,单击“打开”按钮,出现如下图所示的sine.dat文件控制窗口,可以在运行程序时使用这个窗口来控制数据文件的开始、停止、前进、后退等操作。

(8)在“FileI/O”对话框中单击“AddProbePoint”按钮,弹出“Break/ProbePoints”对话框。

在探针列表中单击选择所需要的探针,选中的探针高亮显示,如下图所示。

(9)在连接下拉列表中选择合适的数据文件(本例选择sine.dat)。

(10)单击“Replace”按钮,探针列表显示sine.dat文件已连接到探针。

单击“确定”按钮。

(11)当文件成功连接到一个探点时,在“FileI/O”对话框的“Probe”会显示“Connected’。

(12)在“FileI/O”对话框中,在“Address”域中填入inp_buffer,在“Length”域中填入100,同时选中“WrapAround”复选框。

如下图所示。

(13)单击“确定”按钮,关闭“FileI/O”对话框。

(14)运行程序。

3.图形显示

静态时域/频域显示

(1)选择菜单View→Graph→Time/Frequency,弹出GraphPropertyDialog(图形属性对话框)。

(2)在“GraphPropertyDialog”对话框中更改图形的标题、起始地址、缓冲区大小、显示数据大小、DSP数据类型、自动标尺属性及最大Y值,如下图所示。

(3)单击“OK”按钮,将出现Input图形窗口。

实验截图:

(Input)

(4)再次执行菜单命令View→Graph→Time/Frequency。

(5)这次将GraphTitle改为Output,开始地址栏改为out_buffer。

其他设置不变。

GraphTitle:

Output

StartAddress:

out_buffer

(6)单击“OK”按钮,出现一个显示out_buffer波形的“Output”图形窗口。

实验截图:

(Output)

(7)图形窗口中右击,从弹出菜单中选择ClearDisplay,可清除已有显示波形。

动态图形显示

(1)在volume.c文件编辑窗口,将光标放在调用“dataIO”行上。

(2)在Project工具栏上单击“ToggleBreakpoint”图标设置断点,此时该行有两种颜色显示,表明该行上同时设有一个断点和一个探点。

(3)调整窗口以便能同时看到两个图形窗口。

(4)在Debug工具栏中单击“Animate”图标或按“F12”键。

观察两个图形窗口。

按“Halt”图标“Shift+F5”键暂停程序运行。

4.观测窗调整算法因子

选择菜单View→WatchWindow就可以弹出观测窗界面,将全局变量gain拖入,或在volume.c中右击鼠标,选择“QuickWatch”,CCS将打开QuickWatch窗口,要求输入要添加入观察窗口的变量,此处我们要输入的是gain。

点击“AddToWatch”,gain变量被加入到观察窗口中;也可在volume.c中,选中任意全局变量gain,右击鼠标,选择“AddtoWatchWindow”,CCS将把变量添加到观察窗口并显示选中的变量值。

点击“Radix”栏,可更改显示数据形式。

如果现在程序已经被挂起,点击“Animate”图标或按“F12”键继续执行程序。

在观察窗口中双击全局变量gain的“Value”栏。

此时,全局变量gain的值可以被编辑,更改变全局变量gain的值;观察out_buffer窗口中图形的变化,波形振幅与全局变量gain的值成正比关系。

5.GEL文件使用

查看菜单Gel,虚字显示“NotLoaded”。

选择菜单File→LoadGEL,在“LoadGEL”对话框中选择volume.gel文件打开。

选择菜单GEL→ApplationControl→Gain选项,此时打开“Gain”控制窗,用于全局变量gain值的修改。

如果现在程序已经被挂起,点击“Animate”图标或按“F12”键继续执行程序。

注意,当“Gain”控制窗口的滑块为0时,程序运行时的gain变量值也与之一致,此时,“Output”图形窗口无输出;在“Gain”控制窗口中,改变滑块的值,观察“Output”图形窗口中“out_buffer”振幅的改变情况,此外,只要移动控制窗口中的滑块,输出图形的值就会随之改变。

点击“Halt”图标或按“Shift+F5”键停止程序运行;分析GEL文件如何实现上述功能。

在项目窗口中点击“GELFiles”左边的“+”号,展开GEL列表,在volume.gel文件上双击,打开volume.gel文件,浏览Gain函数。

Gain函数定义了一个0-10的滑动窗口,其中单步增加、翻页均使滑块加1,当改变滑块值时,gainParm就把相应的改动后的值赋给gain变量,从而使主程序的处理发生变化。

6.CCS软件仿真环境下Profiler分析工具使用

重新加载可执行程序,参照步骤2设置探针实现文件的输入输出,在FILEI/O对话框中不勾选WrapAround选项,将sine.dat文件控制窗口倒到文件开头。

选择菜单命令Profiler→StartNewSession,在打开的对话框中输入代码分析统计观察窗口的名称,或不输入直接使用缺省的MySession,单击“OK”按钮,则打开分析(Profiler)窗口,单击窗口左边工具条中的“ProfileAllFunctions”图标,再单击窗口下面的“Functions”选项卡。

按F5运行程序,程序停止后,读取Profile数据。

按“PrtSc”键将Profile结果抓屏,并使用画图图像处理软件(mspaint.exe)剪切,仅留下Profiler窗口,将其压缩为*.jpg文件。

(三)、CCS硬件仿真模式程序调试及VC5509A片内外存储器的查看

1.关闭CCS软件,连接实验箱,连接DSP评估板模块电源插座到实验箱底板上+5V电源插座,千万不要连接实验箱底板上的+12V电源。

检查实验箱上220V电源插座(箱体左侧)中保险管是否完好,在连接电源线以后,检查各模块供电连线是否正确连接,打开实验箱上的电源总开关(位于实验箱底板左上角),使开关位于“开”的位置,电源开关右侧的指示灯亮。

2.点击桌面SetupCCS2('C5000)图标,按讲义给出的步骤设置仿真器为硬件仿真(ICETEKUSBEmulatorfor’C55xx)并保存退出,打开CCS2('C5000)集成开发环境。

在项目窗口中点击“GELFiles”左边显示“+”号,展开GEL列表,双击打开GEL文件。

这个主要包括时钟发生器、EMIF的设置等,不同配置的目标板有专门的.gel文件。

3.选择菜单Project→Open,打开c:

ti\myprojects\myapplication目录下的项目mainapplication.pjt,选择菜单File→LoadProgram,加载程序,运行程序。

4.选择菜单View→Memory,显示“MemoryWindowsOptions”对话框,在“Address”域分别填入片内储存器、SDRAM的地址以及外扩I/O寄存器地址(字地址0x400000)在“Format”预中下拉选择“16bitHex–CStyle”。

在窗口点击某一数据,编辑其值。

观察其状况。

LEDR寄存器:

字地址0x400001,为发光二极管控制寄存器,控制D1-D4。

四位显示数码管。

向某位写“1”,点亮相应的发光管,写“0”,则使数码管熄灭。

SWR寄存器:

字地址是0x40002,为拨档开关寄存器控制。

控制DIPSwitchesU4。

四位开关。

当开关连通(处于ON一侧)时,寄存器读入“0”,当开关断开(不处于ON一侧)时,寄存器读入“1”。

拨动DIPSwitchesU4后,鼠标右击窗口,选择“Refreshwindow”可刷新窗口,读入DIPSwitchesU4状况到寄存器。

5.关闭CCS,断电,点击桌面SetupCCS2('C5000)图标,右击“ICETEKUSBEmulatorfor’C55xx”,选择“Properties…”,删除启动“StartupGEL”文件。

通电,再次打开CCS2('C5000)集成开发环境,在项目窗口中点击“GELFiles”左边没有的“+”号,再次选择菜单View→Memory,显示“MemoryWindowsOptions”对话框,在“Address”域分别填入片内储存器、SDRAM的地址以及外扩I/O寄存器地址,查看ICETEK-VC5509-A评估板的VC5509A片内外存储器。

五、问题回答

1、请问在项目maxminlibrary.pjt中,代码产生工具是是如何将averagevalue.c、maximumvalue.c和minimumvalue.c生成maxminlibrary.lib的?

在项目mainapplication.pjt中,代码产生工具是是如何将testapp.c等文件生成可执行文件mainapplication.out的?

并说明CCS对程序的路径和文件名有何特殊要求?

答:

(1)新建项目时Project类型选择Library(.lib),添加averagevalue.c、maximumvalue.c和minimumvalue.c三个C源代码文件到项目,阅读三个文件,理解代码的含义。

选择菜单Project→BuildOption,选择文档管理器(Archiver)选项卡,查看文档管理器选项。

选择菜单Project→Rebuildall,或单击“RebuildAll”图标,编译生成maxminlibrary.lib。

(2)新建项目mainapplication.prj,注意Project类型选择Executable(.out),分别添加main函数文件testapp.c、链接器命令文件mainapplication.cmd、运行支持库rts55.lib(位于c:

ti\c5500\cgtools\lib\目录下)、库文件maxminlibrary.lib(..\debug\目录下),理解testapp.c代码的含义。

选择菜单Project→BuildOption,选择编译器(Compile)选项卡,“Category:

”列表下点击Assembly,选中“Keepgenerated.asmFiles(-k)”复选框,观察上面编译选项的变化;选择链接器(Linker)选项卡,查看链接器选项。

选择菜单Project→Rebuildall,或单击“Rebuildall”图标,编译生成mainapplication.out可执行文件。

(3)CCS工程路径不支持中文。

2、结合本实验调试工具使用步骤,给出volume.pjt中volume.c的中文注释。

#include

#include"volume.h"

/*Globaldeclarations*/

intinp_buffer[BUFSIZE];/*processingdatabuffers定义了0x64位的输入变量*/

intout_buffer[BUFSIZE];/*定义了0x64位的输入变量*/

intgain=MINGAIN;/*volumecontrolvariable放大倍数10*/

unsignedintprocessingLoad=BASELOAD;/*processingroutineloadvalue*/

structPARMSstr=/*定义结构体变量*/

{

2934,

9432,

213,

9432,

&str

};

/*Functions*/

externvoidload(unsignedintloadValue);/*函数声明*/

staticintprocessing(int*input,int*output);

staticvoiddataIO(void);

/*

*========main========

*/

voidmain()

{

int*input=&inp_buffer[0];/*把全局变量中输入数据的首地址给input*/

int*output=&out_buffer[0];/*把全局变量中输出数据的首地址给output*/

puts("volumeexamplestarted\n");/*文字输出*/

/*loopforever*/

while(TRUE)/*无限循环*/

{

/*

*Readinputdatausingaprobe-pointconnectedtoahostfile.

*Writeoutputdatatoagraphconnectedthroughaprobe-point.

*/

dataIO();/*添加空函数*/

#ifdefFILEIO/*如果定义了FILEIO则输出下列文字*/

puts("beginprocessing");/*deliberatesyntaxerror*/

#endif/*否则进行信号放大操作*/

/*applygain*/

processing(input,output);

}

}

staticintprocessing(int*input,int*output)/*定义函数的输入输出变量为指针类型*/

{

intsize=BUFSIZE;/*数组长度位size*/

while(size--){/*对每个信号相应放大10倍*/

*output++=*input++*gain;

}

/*additionalprocessingload*/

load(processingLoad);

return(TRUE);

}

staticvoiddataIO()/*空函数*/

{

/*dodataI/O*/

return;

}

3、给出volume.pjt的Profile结果(插入保存的*.jpg图像)。

请问为什么Processing执行的次数是10次?

说明Processing函数Profile数据的含义。

答:

Processing函数中profile数据为程序中for语句执行次数,因此此过程应循环执行10次,所以Processing执行的次数为10次。

4、请说明在CCS硬件仿真模式下,加载和不加载ICETEK-VC5509-A.GEL,ICETEK-VC5509-A评估板的VC5509A片内外存储器不同状况。

答:

如果不加载出现Datavcrificationfailedataddress0x8XXXXXXX错误。

出错的地址出现在外部存储器空间。

因为此时程序没有运行,CPU的寄存器都还没有配置,外部存储器寄存器EMIF也没有配置。

编译器找不到这个地址。

GEL文件完成了此功能。

6、实验总结

这是DSP的第一次实验,初次接触这样的软件,刚开始用起来还不是很顺手,有很多地方都还不是很清楚是怎么运行的。

老师给的实验步骤很详细,按照老师的步骤一步一步的做下去,基本上可以出来预期的结果。

由于对于软件环境不是很熟悉,操作过程中也遇到了一些问题,通过老师的指导和同学的帮助,问题最终解决了。

我要在今后的试验中好好熟悉DSP的编程环境,以便以后有更大的用处。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律文书 > 调解书

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1