




已阅读5页,还剩41页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
福建农林大学计算机与信息学院信息工程类实验报告课程名称:DSP技术姓 名:系:电子信息工程专 业:电子信息工程年 级:2010学 号:指导教师:谢秀娟职 称:讲师2013年 11月21日实验项目列表序号实验项目名称成绩指导教师1实验1 汇编语言、体系结构和CCS谢秀娟2实验2 C6000流水线和C运行时环境谢秀娟3实验3 C6000代码优化谢秀娟4实验4 利用BIOS创建工程及性能分析谢秀娟5实验5 利用BIOS调试程序谢秀娟67891011121314151617181920 福建农林大学计算机与信息学院信息工程类实验报告系: 电子信息工程 专业: 电子信息工程 年级: 10 姓名: 学号: 实验课程: DSP 实验室号: 田C513 实验设备号: 17 实验时间: 2013-10-18 指导教师签字: 成绩: C6000实验一 汇编语言、体系结构和CCS1实验目的和要求1 熟悉DSP软件开发环境CCS的使用。2 熟悉CCS中的C语言编程。3 了解C6000DSP的汇编语言。2主要仪器设备(实验用的软硬件环境)安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg。3操作方法与实验步骤1、配置CCS打开桌面程序“Setup CCS 2 (C6000)”,采用simulator配置文件sim6201_simulator.cfg,配置完成后保存。2、实验内容1操作步骤:(2)打开CCS:打双击桌面程序:Setup CCS 2 (C6000),配置CCS,选C6xxx;配置好后,打开桌面程序:CCS 2 (C6000);(3)打开工程文件:把文件夹tutorialsim62xxhello1拷贝到myproject下;单击菜单Project-Open,打开hello.pjt,选择支持库rts6200.lib(4)编译程序:菜单Project-build或rebuild(5)加载程序:菜单File-Load Program,选择Debug下的.out文件装入目标板(6)go main:菜单Debug-go main,执行到main()处暂停(7)执行程序:Debug-Run4实验内容及实验数据记录 1新建一个project,把tutorialsim62xxhello1的文件添加进去,完成其功能。练习CCS的基本操作:加载程序、go main、执行程序、设置断点、单步执行、观察变量、观察存储器、测试函数执行的CLK、混合代码显示。2打开tutorialsim62xxvolume1的项目文件,完成图形方式观察变量、设置探点、GEL控制变量、FILE IO、动画显示输入输出的功能。然后单步执行load.asm,观察C代码调用、寄存器的变化、测试函数执行时间、如何循环和返回C代码。3解释如何在C6201上实现32bit int乘32bit int, 结果是32 bit int的过程:在刚才的hello1中设置3个全局变量int a = 0x10008; int b = 56; int c;在main函数中执行语句 c = a * b; build后加载执行程序, 混合代码显示 c = a*b对应的汇编代码,解释之。5实验程序或实验数据处理与分析1、配置CCS2、练习CCS的基本操作1)打开工程2)编译工程,加载程序2)编译工程,编译通过后加载.out文件3)单步运行,调试程序4)设置断点5)观察变量6) 观察存储器7)测试函数clk的执行2、volume1实验结果3、编写乘法函数及其结果6质疑、建议、问题讨论1)打开工程时若程序没有自动的加载需要的库文件,则就要手动查找到需要的库文件,并添加至工程中。否则,后面的实验就会报错。2) 每次运行完程序后需要重新加载程序,否则报错。福建农林大学计算机与信息学院信息工程类实验报告系: 电子信息工程 专业: 电子信息工程 年级: 10 姓名: 学号: 实验课程: DSP 实验室号: 田C513 实验设备号: 17 实验时间: 2013-10-25 指导教师签字: 成绩: C6000实验二 C6000流水线和C运行时环境1实验目的和要求1.熟悉DSP软件开发环境CCS的使用。2.熟悉C6000中的C运行时环境。2主要仪器设备(实验用的软硬件环境)安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg。3操作方法与实验步骤1)打开ccs6000的C运行时的环境;2)双击桌面程序Setup CCS2(6000),配置CCS,选择C6xxx;3)配置好后,打开桌面程序CCS2(6000);4)把文件夹tutorialsim62xxhello1拷贝到myproject下;5)单击菜单project-open,打开open.pjt,选择文件库rts6200.lib;6)将汇编代码段加到hello.asm,再在hello.c中加入汇编子函数的C语言程序,进行编译、加载生成.out文件,执行产生结果。4实验内容及实验数据记录采用simulator配置文件sim6201_simulator.cfg1 Hello1中添加1个C文件sop_c.c ,该文件是一个乘法累加的子函数sop_c (short * a, short * x, int * y, int n),然后在main函数中调用。不选择任何优化选项。用混合代码显示,在汇编层次执行sop_c子函数,观察调用、执行和返回的过程。2用汇编语言实现两个数组a(n)和x(n)的乘法累加功能。汇编文件名为:sop_asm.asm,主函数C中调用格式:int sop_asm(short * a, short * x, int n)。5实验程序或实验数据处理与分析1)往hell1中添加sop_c的c文件2) 在主函数中进行添加的部分如下3) 运行结果如下4) 往hell1中添加sop_asm的汇编文件5) 主函数中添加的部分如下6) 运行结果如下7) 调试过程6质疑、建议、问题讨论本次通过实验,学会了如何在CCS软件中使用C语言以及汇编语言进行简单的函数编写以及调试运行,同时也注意到了在CCS软件中,使用汇编和平常所使用的变化还是有些许细微的变化的,我们要密切注意这些变化减少,以尽量的减少不必要的错误。福建农林大学计算机与信息学院信息工程类实验报告系: 电子信息工程 专业: 电子信息工程 年级: 10 姓名: 学号: 实验课程: DSP 实验室号: 田C513 实验设备号: 17 实验时间: 2013-11-01 指导教师签字: 成绩: C6000实验三 C6000代码优化1实验目的和要求1.熟悉DSP软件开发环境CCS的使用。2.掌握CCS中的C语言编程。3.熟悉C6000DSP的代码优化过程。2主要仪器设备(实验用的软硬件环境)安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg。3操作方法与实验步骤1)打开ccs6000的C运行时的环境;2)双击桌面程序Setup CCS2(6000),配置CCS,选择C6xxx;3)配置好后,打开桌面程序CCS2(6000);4)把文件夹tutorialsim62xxhello1拷贝到myproject下;5)单击菜单project-open,打开open.pjt,选择文件库rts6200.lib;6)将汇编代码段加到hello.asm,再在hello.c中加入汇编子函数的C语言程序,进行编译、加载生成.out文件,执行产生结果。4实验内容及实验数据记录1采用simulator配置文件sim6201_simulator.cfg,写手工优化的sop_asm.asm程序:在实验二的基础上实现16bit数组的乘法累加的函数,并手工优化和采用软件流水优化。要求:(1)使用LDW和MPY,MPYH指令;对于C64可以使用扩展乘法指令。(2)画出相关图和模迭代间隔表。2(选做)写一个汇编语言子函数Mul32to64(unsigned int a, unsigned int b, void * p_64int),实现32bit*32bit64bit的无符号整型数据的乘法;3(选做)采用simulator配置文件sim6701_simulator.cfg,写一个线形汇编实现的子函数,做复数数组求模,并找出模的最大值的位置和值。复数的实部和虚部为short,求模的结果为unsigned int。5实验程序或实验数据处理与分析1)两种C语言实验及其结果2) 线性汇编实验3) 汇编实验4) 主函数中的调用5) 调用结果6质疑、建议、问题讨论1)汇编函数以及线性汇编函数的编写同C语言的调用一样需要对变量进行初始化,否则得到的是未定义的值。2)使用global函数进行对全局变量的定义,全局变量的定义中即定义标号,同时还必须位于标号之前,而标号的定义位置应在cproc前。3)注意不要进行重定义,要清楚知道哪些变量是函数传递的参数,哪些变量是在函数中进行定义使用的。4)cproc和endproc是成对使用的。5)所新建的c或sa或asm文件都必须添加到工程中。6)要注意所编写的是汇编还是反汇编,同时要注意他们保存文件名的区别,否则编译报错。福建农林大学计算机与信息学院信息工程类实验报告系: 电子信息工程 专业: 电子信息工程 年级: 10 姓名: 学号: 实验课程: DSP 实验室号: 田C513 实验设备号: 17 实验时间: 2013-11-08 指导教师签字: 成绩: 实验四 利用BIOS创建工程及性能分析1 实验目的和要求1)通过创建基于DSP/BIOS的Hello World工程实例,熟悉CCS环境下DSP/BIOS软件的创建和使用方法。2)熟悉在CCS环境下对代码的运行效率和性能作出评估的工具和方法。2主要仪器设备(实验用的软硬件环境)CCS2.2环境,C64XX Device Simulator3操作方法与实验步骤第一步:打开已有工程并运行在C:timyprojects目录里面创建hellobios目录。把C:titutorialsim64xxhello1里的全部文件拷贝到这个新的目录下面。如果CCS还没有启动,启动CCS环境,Setup里面设置为C64xx Device Simulator。选择Project-Open,打开这个工程,工程的项目文件目录为:C:timyprojectshellobios,项目名称是hello.pjt。若提示以下错误,选择Browse,选择目录:C:tiC6000cgtoolslibrts6400.lib,打开工程。编译,运行工程,查看结果,应该是输出hello world字符。第二步:评测stdio.h中输出函数put()的执行时间(周期数)新建一个Profiler,选择Profiler-Start New Session,名称为MySession,确定。出现Session窗口,选择Range栏。如下所示,出现hello.out。用鼠标拖曳,高亮put()函数,如下所示:按住鼠标,拖曳到Range窗口里面,出现:重新Load程序,运行,得到运行结果如下:结论:采用put()函数输出一次的指令周期数是:1700。采用同样方法,测试printf()函数的指令周期数目:记录put()函数和printf()函数需要的指令周期数到表格,用来和下面实验的结果对比。第三步:编辑源代码在CCS里,关闭hello.c窗口。用Windows Explorer把C:titutorialsim64xxhello2目录里的hello.c文件拷贝到C:timyprojectshellobios目录。按Yes覆盖原来已经存在的hello.c文件。hello2例中采用DSP/BIOS函数来替代hello1例中的标准C函数的put()输出函数。双击hello.c文件,在Project View窗口打开源文件。注意新代码的几点问题:#include #include #include hellocfg.hVoid main() LOG_printf(&trace, hello world!); /* fall into DSP/BIOS idle loop */ return;hello.c文件首先包含了std.h和log.h两个头文件。程序如果想使用DSP/BIOS API那它必须包含std.h文件以及程序中用到的模块的对应头文件。log.h头文件中定义了LOG_Obj结构以及LOG模块用的API函数的声明。std.h文件必须在其它的DSP/BIOS模块头文件之前声明。其它模块的头文件声明顺序不重要。代码接下来要包含hellocfg.h头文件,这个文件在创建并保存DSP/BIOS配置的时候创建的。下一个步骤我们就来创建这个文件。这个文件包含了配置文件夹里面的DSP/BIOS objects的外部声明。hellocfg.h文件也包含了配置文件里定义的DSP/BIOS模块的头文件。既然std.h和log.h文件都会被hellocfg.h文件引用,那么hello.c文件的头两行时间上是冗余的。但是这样也不会有任何问题。调用LOG_printf的代码实际上是传递LOG object对象(&trace)和 hello world消息的地址。最后main()函数返回,这个函数导致程序进入DSP/BIOS的Idle循环。在这个循环中,DSP/BIOS等待线程,例如软件中断和硬件中断发生。在该例中,没有其它线程发生,所以会一直处于IDLE状态。第四步:创建DSP/BIOS的配置文件选择File-New-DSP/BIOS Config。选择一个目标模板,根据芯片选择,我们选c64xx.cdb,然后按OK。观察configuration窗口,左边窗口是模块的列表,可以通过点击模块的“+”号打开下级目录,也可以按右键新建一个对象或查看一个建立好的对象的属性。点击Instrumentation目录左侧的+号,显示模块的列表。邮局选择LOGEvent Log Mannger然后右击选择Insert LOG。这个步骤是创建一个LOG对象,名称为LOG0。右键选中LOG0对象,然后右击选择Rename。把LOG对象改名为trace.如果你在使用软件仿真器,需要设置RTDX模式为Simulator。选择RTDXReal-Time Data Exchange Settings,右键,选择属性,打开对话框:将RTDX Mode设定为Simulator即可。如果有目标板,可以选择JTAG。选择File-Save。保存到当前目录(通常是C:timyprojectshellobios)命名为hello.cdb,保存这个配置后,会生成以下6个文件:Hello.cdb保存配置的内容Hellocfg.cmd链接command文件Hellocfg.h包括DSP/BIOS模块头文件和配置文件中用到的外部对象、变量的声明Hellocfg.s62DSP/BIOS设置的汇编语言源文件Hellocfg.h62Hellocfg.s62引用到的汇编语言源文件Hellocfg_c.cChip Support Library(CSL)代码结构和设置第五步:添加DSP/BIOS文件到工程项目选择Project-Add Files to Project,在Files of type栏目里选择Configuration File(*.cdb),选中hello.cdb文件后,点Open。注意添加后,hello.cdb出现在Porject View窗格下目录DSP/BIOS Config里。此外,CCS自动添加Hellocfg.s62和Hellocfg_c.c文件到生成的目录下。输出文件名必须和.cdb文件一致。可以通过Project-Build Options打开Linker标签查看,确认Output Filename内容是.Debughello.out,按OK确定。再次选择Project-Add Files to Project,选对Linker Command File(*.cmd)在Files of type下拉菜单,选择hellocfg.cmd文件,然后按Open。如果看到警告,按Yes。Hello.cmd文件被hellocfg.cmd文件替代,hellocfg.cmd文件是保存DSP/BIOS时生成的。若没有警告,直接将hello.cmd文件从项目中删除。你可以自己创建独立的cmd文件,但文件中必须引用DSP/BIOS的生成的配置cmd文件。如:-1 hellocfg.cmdYour Code .从项目中删除vectors.asm源文件。因为硬件中断可以通过DSP/BIOS设置,不需要单独的处理。从项目中删除rts6400.lib文件。这个库已经被hellocfg.cmd自动引用了。选择Project-Save保存对项目的更改。建议在编译和运行项目前,先保存修改。选择Project-Rebuild All。经过以上修改,项目变化为:第六步:在CCS的Simulator环境下测试工程选择File-Load Program,选中hello.out,确定。选择DSP/BIOS-Message Log,出现窗口:在Log窗口按右键,选择属性,把输出文件指定到hello.txt,用来保存结果,便于以后查看。选择Debug-Go Main,然后F10,单步运行。观察Log窗口的输出。在Log窗口,按右键选择close,关闭窗口。重新Load程序,按F4。运行程序,等待一会儿,再按结束,中止程序运行。File-Open,然后在Debug目录中选择hello.txt,打开查看,内容和窗口的输出是一样的,都是hello world!第七步:评估DSP/BIOS输出函数LOG_printf()的执行时间(周期数)在这个步骤中,我们利用CCS的Profiling工具来评估LOG_printf()函数需要的指令周期数目,并且和printf()和put()函数对比。选择File-Reload Program。选择Profiler-Start New Session,弹出Proliler session窗口,接受默认的名称MySession,确认。如果出现错误,可以禁用RTDX功能。在MySession的窗口中,选择Ranges选项。双击hello.c文件,在Project View中打开源文件。高亮调用LOG_printf函数的语句。用鼠标拖曳到MySession Profile窗口中。MySession Profile窗口得到如下设置。时间的行号(line 28)可能会有所不同。按下“Run”按钮,或按F5运行程序。在MySession Profile窗口,观察Incl. Total column.(由于这个函数只执行一次,所以Total、Maximum和Minimum是相同的)The Incl.Total的含义:这个参数是用来表示从汇编指令执行到这一行的开始到执行结束所需要的指令周期数目。比较LOG_printf()函数和puts()函数的指令周期数目。结论:经过对比发现,LOG_printf()函数比puts()函数的效率高很多。实际的指令周期数目和DSP芯片的型号有关。调用LOG_printf()函数效率高的原因是字符串的格式化工作在主机(PC)完成,而不是目标板(DSP)上完成,所以说,LOG_printf()函数效率非常高。4实验内容及实验数据记录1、打开已有的Hello World工程,评估stdio.h的运行效率,即put()函数的性能;2、在Hello World基础上,创建一个基于DSP/BIOS的Hello World工程;3、评估DSP/BIOS的输出函数性能,即LOG_printf()函数运行的指令周期。5实验程序或实验数据处理与分析完成实验内容,运行成功,得到输出结果如以下表格:运行一次所需要的指令周期数(单位:个)put()函数1700LOG_prinrt()函数36printf()函数2255分析:经过对比发现,LOG_printf()函数比puts()函数效率高很多。实际的指令周期数目和DSP芯片型号有关。由于调用LOG_printf函数式字符串的格式化工作在主机PC完成,而不是在目标板DSP上完成的,所以调用LOGprintf函数效率高很多。实验相关数据:1)error2)创建DSP/BIOS的配置文件3) 测试工程4) puts函数提示5) printf函数6)LOG_printf函数6质疑、建议、问题讨论 通过实验也进一步熟练了对CCS软件的使用,熟悉CCS环境下DSP/BIOS软件的创建和使用以及学会了怎么在CCS环境下对代码的运行效率和性能做出正确的评估和分析。本次实验要特别小心的选择正确的芯片型号以及对应库,否则操作时将会出现问题。福建农林大学计算机与信息学院信息工程类实验报告系: 电子信息工程 专业: 电子信息工程 年级: 10 姓名: 学号: 实验课程: DSP 实验室号: 田C513 实验设备号: 17 实验时间: 2013-11-15 指导教师签字: 成绩: 实验五 利用BIOS调试程序1实验目的和要求通过对一个工程的调试,了解多线程的调度方法;学会查看程序性能的方法;学习更多的BIOS调试工具,如Execution Graph,the real-time analysis controlpanel (RTA Control Panel),the Statistics View,and the CLK(clock),SWI(software interrupt),STS(statistics),and TRC(trace)等模块。注意:如果使用的是C6416 target,DSP/BIOS的实时分析工具只能在停止模式下才能更新数据。因此,分析数据只有当到达断点或者挂起的时刻才能送往主机PC显示分析。DSP/BIOS的一些功能,如CPU Load Graph,需要有硬件的CPU才能运行。2主要仪器设备(实验用的软硬件环境)CCS2.2环境,C64XX Device Simulator3操作方法与实验步骤第一步:打开一个已有的工程在C:timyprojects目录创建volume2文件夹。把C:titutorialsim64xxvolume2文件夹的所有文件拷贝到这个新建的目录中。启动CCS。选择Project-Open,选择volume.pjt文件,按Open。展开项目,观察文件的内容,有:volume.pjt、DSP/BIOS Config、and Source。volumecfg.cmd文件是创建的一个配置文件,包含了大量的DSP / BIOS的头文件。这个工程文件包含的文件有:volume.cdb:配置工具生成的配置文件。volume.c:包含main()的C语言程序源文件。 volume.h:C语言程序源文件所需要的头文件夹。load.asm:汇编文件。volumecfg.cmd:配置工具生成的连接命令文件。volumecfg.h:配置工具生成的包含对象声明的头文件。volumecfg.s62:配置工具生成的汇编源文件。volumecfg.h62:配置工具生成的C语言头文件。volumecfg_c.c:包含芯片支持库的程序文件。第二步:查看源代码#include #include #include #include volumecfg.h#include volume.h/* Global declarations */Int inp_bufferBUFSIZE; /* processing data buffers */Int out_bufferBUFSIZE;Int gain = MINGAIN; /* volume control variable */Uns processingLoad = BASELOAD; /* processing routine load value */* Functions */extern Void load(Uns loadValue);Int processing(Int *input, Int *output);Void dataIO(Void);Void main() LOG_printf(&trace,volume example startedn); /* fall into DSP/BIOS idle loop */ return;Int processing(Int *input, Int *output) Int size = BUFSIZE; while(size-) *output+ = *input+ * gain;
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 二零二五年度绿色建筑产权协议书
- 2025年度通信企业员工通讯设备使用与管理合同
- 2025拆除工程合同范本(含环保监测服务)
- 2025年房地产项目风险控制合作协议模板
- 2025版定制门窗工程承包合同范本
- 二零二五年家居建材行业销售代理合同范本
- 2025版货物运输合同争议解决范本
- 二零二五年度跨境电子发票系统合作协议
- 二零二五年度二手房买卖垫资服务合同
- 吉林省二零二五年度智慧城市基础设施施工合同
- 年薪制劳动合同范本
- 课件-聆听学生的心声班主任心理辅导实务
- 阀门维修与更换操作规范考核试卷
- 2024年快递员职业技能大赛考试题库(含答案)
- 防洪防汛施工现场应急预案(16篇)
- 中华护理学会老年人误吸的预防团体标准解读
- 肝切除合并糖尿病
- 喷漆作业安全培训
- 商业项目计划书模板32
- 硫酸装置内焚硫炉筑炉工程施工方案
- 《出口退税培训》课件
评论
0/150
提交评论