DSP技术1 1Word文档下载推荐.docx

上传人:b****5 文档编号:8485826 上传时间:2023-05-11 格式:DOCX 页数:40 大小:1.42MB
下载 相关 举报
DSP技术1 1Word文档下载推荐.docx_第1页
第1页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第2页
第2页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第3页
第3页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第4页
第4页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第5页
第5页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第6页
第6页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第7页
第7页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第8页
第8页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第9页
第9页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第10页
第10页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第11页
第11页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第12页
第12页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第13页
第13页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第14页
第14页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第15页
第15页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第16页
第16页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第17页
第17页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第18页
第18页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第19页
第19页 / 共40页
DSP技术1 1Word文档下载推荐.docx_第20页
第20页 / 共40页
亲,该文档总共40页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

DSP技术1 1Word文档下载推荐.docx

《DSP技术1 1Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《DSP技术1 1Word文档下载推荐.docx(40页珍藏版)》请在冰点文库上搜索。

DSP技术1 1Word文档下载推荐.docx

12

13

14

15

16

17

18

19

20

福建农林大学计算机与信息学院信息工程类实验报告

电子信息工程专业:

电子信息工程年级:

10级

姓名:

学号:

实验课程:

DSP单片机原理及应用

实验室号:

_田C513实验设备号:

25实验时间:

2013.10.18

指导教师签字:

成绩:

一、实验目的和要求

1.熟悉DSP软件开发环境CCS的使用。

2.熟悉CCS中的C语言编程。

3.了解C6000DSP的汇编语言。

二、主要仪器设备(实验用的软硬件环境)

安装了CCS2.0的计算机,采用simulator配置文件sim6201_simulator.cfg

三、实验内容

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对应的汇编代码,解释之。

四、操作方法与实验步骤

1)配置CCS

打开桌面程序“SetupCCS2('

C6000)”,采用simulator配置文件sim6201_simulator.cfg,配置完成后保存。

2)实验内容1操作步骤:

(1)打开CCS:

①打双击桌面程序:

SetupCCS2('

C6000),配置CCS,选C6xxx;

②配置好后,打开桌面程序:

CCS2('

C6000);

(2)打开工程文件:

①把文件夹tutorial\sim62xx\hello1拷贝到myproject下;

②单击菜单Project->

Open,打开hello.pjt,选择支持库rts6200.lib

(3)编译程序:

菜单Project->

build或rebuild

(4)加载程序:

菜单File->

LoadProgram,选择Debug下的.out文件装入目标板

(5)gomain:

菜单Debug->

gomain,执行到main()处暂停

(6)执行程序:

Debug->

Run

(7)设置断点:

Togglebreakpoint

(8)单步执行:

Step(两种:

C和汇编)

(9)观察变量:

菜单Edit->

Variable

(10)观察存储器:

Memory

(11)测试函数执行的CLK:

Profiler->

ViewClock

(12)混合代码显示:

View->

MixedSource/ASM

3)自行完成实验内容2的操作。

4)自行完成实验内容3的编程及编译、目标程序的加载和执行,观察c=a*b对应的汇编代码,并解释该汇编代码。

五、实验内容及实验数据记录

1、配置CCS

2、练习CCS的基本操作

1)打开工程

2)编译工程,加载程序

2)编译工程,编译通过后加载.out文件

3)单步运行,调试程序

4)设置断点

5)观察变量

6)观察存储器

7)测试函数clk的执行

2、volume1实验结果

3、结果

六、质疑、建议、问题讨论

对于实验一,由于只是熟悉dsp开发软件,所以比较简单。

需要注意的地方就是设置cpu时,一定要选择对cpu,这样后面就不会出错。

另外,由于编译器的不同,运行之前一定要先load.out文件,否则运行结果不会显示出来。

学号:

_田C513实验设备号:

2013.10.25

实验二C6000流水线和C运行时环境

2.熟悉C6000中的C运行时环境。

三、实验内容以及步骤

采用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)打开ccs6000的C运行时的环境。

2)打双击桌面程序:

3)配置好后,打开桌面程序:

4)把文件夹tutorial\sim62xx\hello1拷贝到myproject下;

5)单击菜单Project->

6)将汇编代码段加到hello.asm,再在holle.c中加入汇编子函数的C语言程序。

进行编译、加载生成.out文件,执行产生结果。

四、实验内容及实验数据记录

1)用汇编语言实现两个数组的乘法累加功能:

sop_asm.asm中实现函数intsop_asm(short*a,short*x,intn);

然后,手工优化汇编代码。

*2)写一个汇编语言子函数Mul32to64(unsignedinta,unsignedintb,void*p_64int),实现32bit乘以32bit结果不大于64bit的无符号整型数据的乘法。

五、实验程序或实验数据处理与分析

1)汇编子函数:

.global_sop_asm1

.text

_sop_asm1:

ZERO.D1A0;

A0存放结果

MV.S2B6,B0;

B0=n

LOOP:

LDH.D1T1*A4++,A5;

A5=a

LDH.D2T2*B4++,B6;

A6=x

NOP4

MPY.M1XA5,B6,A2

NOP

ADD.D1A0,A2,A0

SUB.L2B0,1,B0

[B0]B.S2LOOP

nop5

MV.L1A0,A4

.end

2)实验处理:

同样选好与此实验相关的cpu是最为关键的地方。

需要注意的是,虽然同样采用的是汇编,但是由于汇编与具体机器相关,所以其编写格式与语法和8086略有不同之处,所以一定要注意。

2013.11.01

实验三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。

(提示:

使用INTSP指令把整数转化为浮点数后再开方。

四.操作方法与实验步骤

1.打开ccs运行环境;

2.将C:

/ti/tutorial/sim62xx/volume1复制到C:

/ti/myprojects中;

3.启动CCS环境,选择Project中Open,打开这个工程,工程项目文件目录为:

C:

/ti/myprojects/volume1,项目名称为volume.pjt;

4.若提示错误,选择Browse,选择目录:

/ti/C6000/cgtools/lib/rts6200.lib

5.打开工程;

6.打开volume.c以及volume.asm文件,进行编译、加载、执行;

7.将下面的程序段覆盖原来的volume1.c

/*主函数:

volume1.c*/

/***************************************************************************/

#include<

stdio.h>

#include"

volume.h"

/*Globaldeclarations*/

#definen10shorta[n],x[n];

intt;

/**========main========*/

voidmain()

{

inti;

for(i=0;

i<

n;

i++)

{

a[i]=2;

}

{

x[i]=i++;

t=load(a,x,n);

printf("

t=%d\n"

t);

};

7)将下面的优化代码段覆盖原先的volume.asm

优化:

load.asm

.global_load

.text

_load:

ZERO.D1A0;

||SUB.S2A6,7,B0

P0:

LDH.D1T1*A4++,A5

||LDH.D2T2*B4++,B6

P1:

||[B0]SUB.L2B0,1,B0

P2:

||[B0]B.S2P7

P3:

P4:

P5:

||MPY.M1XA5,B6,A2

P6:

||[B0]SUB.L2B0,1,B0

P7:

||MPY.M1XA5,B6,A2

||ADD.L1A0,A2,A0

MPY.M1XA5,B6,A2

||ADD.L1A0,A2,A0

||ADD.L1A0,A2,A0

||ADD.L1A0,A2,A0

ADD.L1A0,A2,A0

MV.L1A0,A4

bb3

nop5

;

return

.end

8)进行编译、加载、执行。

五.实验内容及实验数据记录

采用simulator配置文件sim6201_simulator.cfg,编写手工优化的.asm程序:

在volume1的load.asm基础上实现16bit数组的乘法累加的函数,并手工优化和采用软件流水优化。

(2)画出相关图并建立编排表。

六.实验程序或实验数据处理与分析

1)对覆盖后的程序进行编译:

2)编译完成后,程序没有出错,进行加载:

3)执行程序,运行结果为:

七.质疑、建议、问题讨论

对于编写代码来说,完成代码后最关键的地方就是优化,利用C6000汇编语言对C代码进行优化无疑是最好的办法。

但是仍需注意,对于寄存器的安排,以及语法错误(不能同时最同一个寄存器进行写操作等错误)。

田C513实验设备号:

2013.11.08

1.通过创建基于DSP/BIOS的HelloWorld工程实例,熟悉CCS环境下DSP/BIOS软件的创建和使用方法。

2.熟悉在CCS环境下对代码的运行效率和性能作出评估的工具和方法。

CCS2.2环境,C64XXDeviceSimulator。

三.实验内容

完成实验内容,运行成功,得到输出结果,填写以下表格,并作出对比分析。

运行一次所需要的指令周期数(单位:

个)

put()函数

LOG_prinrt()函数

printf()函数

1)打开已有工程并运行

(1)在C:

\ti\myprojects目录里面创建hellobios目录。

(2)把C:

\ti\tutorial\sim64xx\hello1里的全部文件拷贝到这个新的目录下面。

(3)如果CCS还没有启动,启动CCS环境,Setup里面设置为C64xxDeviceSimulator。

(4)选择Project->

Open,打开这个工程,工程的项目文件目录为:

\ti\myprojects\hellobios,项目名称是hello.pjt。

(5)若提示以下错误,选择Browse,选择目录:

\ti\C6000\cgtools\lib\rts6400.lib,打开工程。

(6)编译,运行工程,查看结果,应该是输出helloworld字符。

2)评测stdio.h中输出函数put()的执行时间(周期数)

a)新建一个Profiler,选择Profiler->

StartNewSession,名称为MySession,确定。

b)出现Session窗口,选择Range栏。

如下所示,出现hello.out。

c)用鼠标拖曳,高亮put()函数,如下所示:

d)按住鼠标,拖曳到Range窗口里面,出现:

e)重新Load程序,运行,得到运行结果如下:

f)结论:

采用put()函数输出一次的指令周期数是:

1700。

g)采用同样方法,测试printf()函数的指令周期数目:

h)记录put()函数和printf()函数需要的指令周期数到表格,用来和下面实验的结果对比。

3)编辑源代码

(1)在CCS里,关闭hello.c窗口。

(2)用WindowsExplorer把C:

\ti\tutorial\sim64xx\hello2目录里的hello.c文件拷贝到C:

\ti\myprojects\hellobios目录。

按Yes覆盖原来已经存在的hello.c文件。

hello2例中采用DSP/BIOS函数来替代hello1例中的标准C函数的put()输出函数。

(3)双击hello.c文件,在ProjectView窗口打开源文件。

(4)注意新代码的几点问题:

std.h>

log.h>

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状态。

4)创建DSP/BIOS的配置文件

(1)选择File->

New->

DSP/BIOSConfig。

(2)选择一个目标模板,根据芯片选择,我们选c64xx.cdb,然后按OK。

观察configuration窗口,左边窗口是模块的列表,可以通过点击模块的“+”号打开下级目录,也可以按右键新建一个对象或查看一个建立好的对象的属性。

(3)点击Instrumentation目录左侧的+号,显示模块的列表。

(4)邮局选择LOG—EventLogMannger然后右击选择InsertLOG。

这个步骤是创建一个LOG对象,名称为LOG0。

a)右键选中LOG0对象,然后右击选择Rename。

把LOG对象改名为trace.

b)如果你在使用软件仿真器,需要设置RTDX模式为Simulator。

选择RTDX—Real-TimeDataExchangeSettings,右键,选择属性,打开对话框。

将RTDXMode设定为Simulator即可。

如果有目标板,可以选择JTAG。

c)选择File->

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)代码结构和设置

5)添加DSP/BIOS文件到工程项目

(1)选择Project->

AddFilestoProject,在Filesoftype栏目里选择ConfigurationFile(*.cdb),选中hello.cdb文件后,点Open。

注意添加后,hello.cdb出现在PorjectView窗格下目录DSP/BIOSConfig里。

此外,CCS自动添加Hellocfg.s62和Hellocfg_c.c文件到生成的目录下。

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

当前位置:首页 > 幼儿教育 > 幼儿读物

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2