DSP技术1 2Word文档下载推荐.docx
- 文档编号:21145457
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:47
- 大小:2MB
DSP技术1 2Word文档下载推荐.docx
《DSP技术1 2Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DSP技术1 2Word文档下载推荐.docx(47页珍藏版)》请在冰豆网上搜索。
7
8
9
10
11
12
13
14
15
16
17
18
19
20
福建农林大学计算机与信息学院信息工程类实验报告
电子信息工程专业:
电子信息工程年级:
10
姓名:
学号:
实验课程:
DSP
实验室号:
田C513实验设备号:
16实验时间:
2013-10-18
指导教师签字:
成绩:
C6000实验一汇编语言、体系结构和CCS
1.实验目的和要求
1.熟悉DSP软件开发环境CCS的使用。
2.熟悉CCS中的C语言编程。
3.了解C6000DSP的汇编语言。
2.主要仪器设备(实验用的软硬件环境)
安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg。
3.操作方法与实验步骤
1、配置CCS
打开桌面程序“SetupCCS2('
C6000)”,采用simulator配置文件sim6201_simulator.cfg,配置完成后保存。
2、实验内容1操作步骤:
(2)打开CCS:
①打双击桌面程序:
SetupCCS2('
C6000),配置CCS,选C6xxx;
②配置好后,打开桌面程序:
CCS2('
C6000);
(3)打开工程文件:
①把文件夹tutorial\sim62xx\hello1拷贝到myproject下;
②单击菜单Project->
Open,打开hello.pjt,选择支持库rts6200.lib
(4)编译程序:
菜单Project->
build或rebuild
(5)加载程序:
菜单File->
LoadProgram,选择Debug下的.out文件装入目标板
(6)gomain:
菜单Debug->
gomain,执行到main()处暂停
(7)执行程序:
Debug->
Run
4.实验内容及实验数据记录
1.新建一个project,把tutorial\sim62xx\hello1的文件添加进去,完成其功能。
练习CCS的基本操作:
加载程序、gomain、执行程序、设置断点、单步执行、观察变量、观察存储器、测试函数执行的CLK、混合代码显示。
2.打开tutorial\sim62xx\volume1的项目文件,完成图形方式观察变量、设置探点、GEL控制变量、FILEIO、动画显示输入输出的功能。
然后单步执行load.asm,观察C代码调用、寄存器的变化、测试函数执行时间、如何循环和返回C代码。
3.解释如何在C6201上实现32bitint乘32bitint,结果是32bitint的过程:
在刚才的hello1中设置3个全局变量inta=0x10008;
intb=56;
intc;
在main函数中执行语句c=a*b;
build后加载执行程序,混合代码显示c=a*b对应的汇编代码,解释之。
5.实验程序或实验数据处理与分析
1、配置CCS
2、练习CCS的基本操作
1)打开工程
2)编译工程,加载程序
2)编译工程,编译通过后加载.out文件
3)单步运行,调试程序
4)设置断点
5)观察变量
6)观察存储器
7)测试函数clk的执行
2、volume1实验结果
3、编写乘法函数及其结果
6.质疑、建议、问题讨论
1)打开工程时候如果没有对应的库,则要进行查找相应的支持库rts6200.lib进行添加,否则将影响接下去的操作。
2)对于软件的安装要详细按照步骤来安装吗,自己安装并添加相应的步骤是否也是可行的。
_田C513实验设备号:
2013-10-25
C6000实验二C6000流水线和C运行时环境
1.熟悉DSP软件开发环境CCS的使用。
2.熟悉C6000中的C运行时环境。
1)打开ccs6000的C运行时的环境;
2)双击桌面程序SetupCCS2(6000),配置CCS,选择C6xxx;
3)配置好后,打开桌面程序CCS2(6000);
4)把文件夹tutorial\sim62xx\hello1拷贝到myproject下;
5)单击菜单project->
open,打开open.pjt,选择文件库rts6200.lib;
6)将汇编代码段加到hello.asm,再在hello.c中加入汇编子函数的C语言程序,进行编译、加载生成.out文件,执行产生结果。
采用simulator配置文件sim6201_simulator.cfg
1.Hello1中添加1个C文件sop_c.c,该文件是一个乘法累加的子函数sop_c(short*a,short*x,int*y,intn),然后在main函数中调用。
不选择任何优化选项。
用混合代码显示,在汇编层次执行sop_c子函数,观察调用、执行和返回的过程。
2.用汇编语言实现两个数组a(n)和x(n)的乘法累加功能。
汇编文件名为:
sop_asm.asm,主函数C中调用格式:
intsop_asm(short*a,short*x,intn)。
1)往hell1中添加sop_c的c文件
2)在主函数中进行添加的部分如下
3)运行结果如下
4)往hell1中添加sop_asm的汇编文件
5)主函数中添加的部分如下
6)运行结果如下
7)调试过程
实验中如果在配置CCS时没有选择选择C6xxx那么将无法实现预期的结果;
试验中使用的是软件仿真的方式,这样对于具体的硬件是不是就没有关系,不需要特殊硬件的支持。
还学习了如何在CCS中使用C语言以及汇编语言进行简单的函数编写以及调试运行,同时应该注意到汇编中所使用到的与平常时所使用的汇编中的微变化,减少不必要的失误。
2013-11-1
C6000实验三C6000代码优化
2.掌握CCS中的C语言编程。
3.熟悉C6000DSP的代码优化过程。
1.采用simulator配置文件sim6201_simulator.cfg,写手工优化的sop_asm.asm程序:
在实验二的基础上实现16bit数组的乘法累加的函数,并手工优化和采用软件流水优化。
要求:
(1)使用LDW和MPY,MPYH指令;
对于C64可以使用扩展乘法指令。
(2)画出相关图和模迭代间隔表。
2.(选做)写一个汇编语言子函数Mul32to64(unsignedinta,unsignedintb,void*p_64int),实现32bit*32bit64bit的无符号整型数据的乘法;
3.(选做)采用simulator配置文件sim6701_simulator.cfg,写一个线形汇编实现的子函数,做复数数组求模,并找出模的最大值的位置和值。
复数的实部和虚部为short,求模的结果为unsignedint。
1)两种C语言实验及其结果
2)线性汇编实验
3)汇编实验
4)主函数中的调用
5)调用结果
1)采用simulator配置文件sim6201_simulator.cfg,可以减少工作量,手工优化的sop_asm.asm程序,注意不要进行重定义,要清楚知道哪些变量是函数传递的参数,哪些变量是在函数中进行定义使用的。
2).cproc和.endproc是成对使用的,注意不要把.cproc写成了.proc,这在C语言中是不能调用的。
学号:
_田C513实验设备号:
2013-11-8
实验四利用BIOS创建工程及性能分析
1)通过创建基于DSP/BIOS的HelloWorld工程实例,熟悉CCS环境下DSP/BIOS软件的创建和使用方法。
2)熟悉在CCS环境下对代码的运行效率和性能作出评估的工具和方法。
CCS2.2环境,C64XXDeviceSimulator
第一步:
打开已有工程并运行
在C:
\ti\myprojects目录里面创建hellobios目录。
把C:
\ti\tutorial\sim64xx\hello1里的全部文件拷贝到这个新的目录下面。
如果CCS还没有启动,启动CCS环境,Setup里面设置为C64xxDeviceSimulator。
选择Project->
Open,打开这个工程,工程的项目文件目录为:
C:
\ti\myprojects\hellobios,项目名称是hello.pjt。
若提示以下错误,选择Browse,选择目录:
\ti\C6000\cgtools\lib\rts6400.lib,打开工程。
编译,运行工程,查看结果,应该是输出helloworld字符。
第二步:
评测stdio.h中输出函数put()的执行时间(周期数)
新建一个Profiler,选择Profiler->
StartNewSession,名称为MySession,确定。
出现Session窗口,选择Range栏。
如下所示,出现hello.out。
用鼠标拖曳,高亮put()函数,如下所示:
按住鼠标,拖曳到Range窗口里面,出现:
重新Load程序,运行,得到运行结果如下:
结论:
采用put()函数输出一次的指令周期数是:
1700。
采用同样方法,测试printf()函数的指令周期数目:
记录put()函数和printf()函数需要的指令周期数到表格,用来和下面实验的结果对比。
第三步:
编辑源代码
在CCS里,关闭hello.c窗口。
用WindowsExplorer把C:
\ti\tutorial\sim64xx\hello2目录里的hello.c文件拷贝到C:
\ti\myprojects\hellobios目录。
按Yes覆盖原来已经存在的hello.c文件。
hello2例中采用DSP/BIOS函数来替代hello1例中的标准C函数的put()输出函数。
双击hello.c文件,在ProjectView窗口打开源文件。
注意新代码的几点问题:
#include<
std.h>
log.h>
#include"
hellocfg.h"
Voidmain()
{LOG_printf(&
trace,"
helloworld!
"
);
/*fallintoDSP/BIOSidleloop*/
return;
}
hello.c文件首先包含了std.h和log.h两个头文件。
程序如果想使用DSP/BIOSAPI那它必须包含std.h文件以及程序中用到的模块的对应头文件。
log.h头文件中定义了LOG_Obj结构以及LOG模块用的API函数的声明。
std.h文件必须在其它的DSP/BIOS模块头文件之前声明。
其它模块的头文件声明顺序不重要。
代码接下来要包含hellocfg.h头文件,这个文件在创建并保存DSP/BIOS配置的时候创建的。
下一个步骤我们就来创建这个文件。
这个文件包含了配置文件夹里面的DSP/BIOSobjects的外部声明。
hellocfg.h文件也包含了配置文件里定义的DSP/BIOS模块的头文件。
既然std.h和log.h文件都会被hellocfg.h文件引用,那么hello.c文件的头两行时间上是冗余的。
但是这样也不会有任何问题。
调用LOG_printf的代码实际上是传递LOGobject对象(&
trace)和helloworld消息的地址。
最后main()函数返回,这个函数导致程序进入DSP/BIOS的Idle循环。
在这个循环中,DSP/BIOS等待线程,例如软件中断和硬件中断发生。
在该例中,没有其它线程发生,所以会一直处于IDLE状态。
第四步:
创建DSP/BIOS的配置文件
选择File->
New->
DSP/BIOSConfig。
选择一个目标模板,根据芯片选择,我们选c64xx.cdb,然后按OK。
观察configuration窗口,左边窗口是模块的列表,可以通过点击模块的“+”号打开下级目录,也可以按右键新建一个对象或查看一个建立好的对象的属性。
点击Instrumentation目录左侧的+号,显示模块的列表。
邮局选择LOG—EventLogMannger然后右击选择InsertLOG。
这个步骤是创建一个LOG对象,名称为LOG0。
右键选中LOG0对象,然后右击选择Rename。
把LOG对象改名为trace.
如果你在使用软件仿真器,需要设置RTDX模式为Simulator。
选择RTDX—Real-TimeDataExchangeSettings,右键,选择属性,打开对话框:
将RTDXMode设定为Simulator即可。
如果有目标板,可以选择JTAG。
Save。
保存到当前目录(通常是C:
\ti\myprojects\hellobios)命名为hello.cdb,保存这个配置后,会生成以下6个文件:
Hello.cdb保存配置的内容
Hellocfg.cmd链接command文件
Hellocfg.h包括DSP/BIOS模块头文件和配置文件中用到的外部对象、变量的声明
Hellocfg.s62DSP/BIOS设置的汇编语言源文件
Hellocfg.h62Hellocfg.s62引用到的汇编语言源文件
Hellocfg_c.cChipSupportLibrary(CSL)代码结构和设置
第五步:
添加DSP/BIOS文件到工程项目
AddFilestoProject,在Filesoftype栏目里选择ConfigurationFile(*.cdb),选中hello.cdb文件后,点Open。
注意添加后,hello.cdb出现在PorjectView窗格下目录DSP/BIOSConfig里。
此外,CCS自动添加Hellocfg.s62和Hellocfg_c.c文件到生成的目录下。
输出文件名必须和.cdb文件一致。
可以通过Project->
BuildOptions打开Linker标签查看,确认OutputFilename内容是.\Debug\hello.out,按OK确定。
再次选择Project->
AddFilestoProject,选对LinkerCommandFile(*.cmd)在Filesoftype下拉菜单,选择hellocfg.cmd文件,然后按Open。
如果看到警告,按Yes。
Hello.cmd文件被hellocfg.cmd文件替代,hellocfg.cmd文件是保存DSP/BIOS时生成的。
若没有警告,直接将hello.cmd文件从项目中删除。
你可以自己创建独立的cmd文件,但文件中必须引用DSP/BIOS的生成的配置cmd文件。
如:
-1hellocfg.cmd
YourCode......
从项目中删除vectors.asm源文件。
因为硬件中断可以通过DSP/BIOS设置,不需要单独的处理。
从项目中删除rts6400.lib文件。
这个库已经被hellocfg.cmd自动引用了。
Save保存对项目的更改。
建议在编译和运行项目前,先保存修改。
RebuildAll。
经过以上修改,项目变化为:
第六步:
在CCS的Simulator环境下测试工程
LoadProgram,选中hello.out,确定。
选择DSP/BIOS->
MessageLog,出现窗口:
在Log窗口按右键,选择属性,把输出文件指定到hello.txt,用来保存结果,便于以后查看。
选择Debug->
GoMain,然后F10,单步运行。
观察Log窗口的输出。
在Log窗口,按右键选择close,关闭窗口。
重新Load程序,按F4。
运行程序,等待一会儿,再按结束,中止程序运行。
File->
Open,然后在Debug目录中选择hello.txt,打开查看,内容和窗口的输出是一样的,都是helloworld!
第七步:
评估DSP/BIOS输出函数LOG_printf()的执行时间(周期数)
在这个步骤中,我们利用CCS的Profiling工具来评估LOG_printf()函数需要的指令周期数目,并且和printf()和put()函数对比。
ReloadProgram。
选择Profiler->
StartNewSession,弹出Prolilersession窗口,接受默认的名称MySession,确认。
如果出现错误,可以禁用RTDX功能。
在MySession的窗口中,选择Ranges选项。
双击hello.c文件,在ProjectView中打开源文件。
高亮调用LOG_printf函数的语句。
用鼠标拖曳到MySessionProfile窗口中。
MySessionProfile窗口得到如下设置。
时间的行号(line28)可能会有所不同。
按下“Run”按钮,或按F5运行程序。
在MySessionProfile窗口,观察Incl.Totalcolumn.(由于这个函数只执行一次,所以Total、Maximum和Minimum是相同的)
TheIncl.Total的含义:
这个参数是用来表示从汇编指令执行到这一行的开始到执行结束所需要的指令周期数目。
比较LOG_printf()函数和puts()函数的指令周期数目。
经过对比发现,LOG_printf()函数比puts()函数的效率高很多。
实际的指令周期数目和DSP芯片的型号有关。
调用LOG_printf()函数效率高的原因是字符串的格式化工作在主机(PC)完成,而不是目标板(DSP)上完成,所以说,LOG_printf()函数效率非常高。
1、打开已有的HelloWorld工程,评估stdio.h的运行效率,即put()函数的性能;
2、在HelloWorld基础上,创建一个基于DSP/BIOS的HelloWorld工程;
3、评估DSP/BIOS的输出函数性能,即LOG_printf()函数运行的指令周期。
完成实验内容,运行成功,得到输出结果如以下表格:
运行一次所需要的指令周期数(单位:
个)
put()函数
1700
LOG_prinrt()函数
36
printf()函数
2255
分析:
经过对比发现,LOG_printf()函数比puts()函数效率高很多。
实际的指令周期数目和DSP芯片型号有关。
由于调用LOG_printf函数式字符串的格式化工作在主机PC完成,而不是在目标板DSP上完成的,所以调用LOG——printf函数效率高很多。
实验相关数据:
1)error
2)创建DSP/BIOS的配置文件
3)测试工程
4)Puts函数——提示(前后两图分别是运行前后结果的比较图,后同)
5)Printf函数
6)LOG_printf函数
实验中是通过覆盖源代码的方式来达到实验目的的,对于学习,我们可以跟着代码手工输入并保存源文件,这样对于我们的学习有很大的帮助,通过实验熟悉CCS环境下DSP/BIOS软件的创建和使用以及熟悉在CCS环境下对代码的运行效率和性能做出评估和分析。
2013-11-15
实验五利用BIOS调试程序
通过对一个工程的调试,了解多线程的调度方法;
学会查看程序性能的方法;
学习更多的BIOS调试工具,如ExecutionGraph,thereal-timeanalysiscontrolpanel(RTAControlPanel),theStatisticsView,andtheCLK
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP技术1 DSP 技术