浙大DSP第一次实验

更新时间:2023-08-30 00:47:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程名称:_微机原理与应用___ 指导老师: _____ 成绩:__________________ 实验名称:__实验二、三____ 实验类型: 同组学生姓名: 一、实验目的和要求(必填) 二、实验内容和原理(必填) 三、主要仪器设备(必填) 四、操作方法和实验步骤 五、实验数据记录和处理 六、实验结果与分析(必填) 七、讨论、心得

实验报告

【实验二】 C语言指令功能实验

一、实验目的

1. 学习使用标准C语言编制程序,了解常用的C语言程序设计方法和组成部分; 2. 学习编制连接命令文件,并用来控制代码的连接;

3. 学会建立和改变map文件,以及利用它观察DSP内存使用情况的方法; 4. 熟悉使用软件仿真方式调试程序 二、 实验内容和原理 1、标准C语言程序

CCS支持使用标准C语言开发的DSP应用程序。当使用标准C语言编制程序时,其源程序文件的后缀应为:.c。CCS在编译标准C语言程序时,首先将其编译成相应汇编语言程序,再进一步编译成目标DSP的可执行代码。最后生成的是COFF格式的可下载到DSP中运行的文件,其后缀为:.out。由于使用C语言编制程序,其中调用的标准C的库函数由专门的库提供,在编译链接时编译系统还负责构建C的运行环境,所以用户工程中需要添加使用C的支持库。

2、命令文件的作用

命令文件(文件后缀名为:.cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。通过编制命令文件,可以将某些特定的数据或者程序按照我们的意图放置在DSP的内存中。命令文件也可以为链接程序提供DSP外扩存储器的描述。程序中使用CMD文件描述硬件存储区,可以只说明使用部分,但只要说明,必须和硬件匹配,也就是只要说明的存储区必须是存在的和可用的。 3、内存映射(map)文件的作用

一般地,在DSP程序调试好后需要固化到系统的ROM中。为了精确的使用ROM空间,就需要知道程序的大小和位置,通过建立目标程序的map文件就可以了解DSP代码的确切信息。当需要更改程序 和数据的大小和位置时,就需要适当修改CMD文件和源程序,在重新生成map文件来观察结果。另外,通过观察map文件,可以掌握DSP存储器的使用和利用情况,以便进行存储器优化。

三、主要仪器设备

CCs3.3及2812实验板

四、实验内容及过程结果

1.构造project,键入、修改并运行例程

按照实验书P60-61的程序输入构建源程序,运行后发现几处错误,改正如下: (1) PAGE 0:PROG(R) :origin=0x3E8000, length=0x10000 改正为: PAGE 0:PROG(R) :origin=0x3F8000, length=0x1000

改正原因:由DSP课本P49的存储器映射图可知,原程序中的起始地址0x3E8000属于片 内flash存储器(受保护空间),而正确的地址应定义在RAM之中,所以应吧

origin改为0x3F8000 ; 之后的原长度为10000,对照映射图知此长度会造成溢出,所以应当改为1000

(2) PAGE 1:H0RAM(RW) :origin=0x3F8000, length=0x1000 改正为:PAGE 1:H0RAM(RW) :origin=0x3F9000, length=0x1000

改正原因:由(1)可知0x3F8000及之后长度1000的地址已被占据,故而应当另取地址 (3) .reset :>RESET, PAGE=0 后应当增加指令TYPE=DSECT

原因:TYPE=DSECT是cmd文件之中定义段的时候用的语法,表示这个段不使用

改正程序之后运行例程,编译链接生成可执行的.out文件,载入后运行在watchwindow中可以观察到x=1,y=2,z=3的运行结果,如图所示

2.改变内存分配

修改CMD文件中的PAGE 0: PROG(R) : origin = 0x3E8000, length =0x10000改为PAGE 0: PROG(R) : origin = 0x3E9000, length =0x10000,重新编译工程,观察map文件中有何变化?

修改前的map文件:

修改后的map文件:

思考题:

修改程序完成计算sin(2.3pi)+cos(1.7pi)的值 过程:

将原程序进行更改即可,更改为:

之后步骤同原实验

在watchwindow 中观察到运行结果如下

【实验三】 DSP数据存取实验

一、 实验目的

1. 了解TMS320F2812的内部存储器空间的分配及指令寻址方式; 2. 了解实验板扩展存储器空间;

3. 学习修改,填充DSP内存单元的方法; 4. 学习操作TMS32028xx内存空间的指令 二、实验内容和原理

TMS320F28xx系列DSP基于增强的哈佛结构,可以通过三组并行总线访问多个存储空间,他们分别是:程序地址总线(PAB)、数据读地址总线(DRAB)和数据写地址总线(DWAB)。由于总线工作是独立的,所以可以同时访问程序和数据空间。实验板上扩展的外部存储区域为XCS6AND7存储区域:0x100000—0x17FFFF,512K×1 三、主要实验设备

CCs3.3及2812实验板 四、实验内容及过程结果

1. 打开实验程序包EXRAM,修改并运行例程 运行源程序后发现没有错误 扩展1

—利用CCS的View/Graph功能,曲线观察存储器中0x10000开始,长度为0x4000的 内存数据

—修改程序,生成一个锯齿波,利用CCS的图形View/Graph功能绘制出来 对于源程序:

观察其存储器中所要求的内存数据,显示为

为其成为一个锯齿波,需修改程序 修改步骤:

Void InitExRam(Uint16 Start)

{

Uint16 i;

for (i=0;i<0x4000;i++) *(ExRamStart + Start + i) = i;

} 改为:

Void InitExRam(Uint16 Start)

{

Uint16 i;

for (i=0;i<0x4000;i++) *(ExRamStart + Start + i) = 100*i;

}

其中将i改为100*i,增加斜率

另外还需改变cmd文件,分配内存中的位置

将 RAMM0_1 : origin = 0x100000, length = 0x03000 改为 RAMM0_1 : origin = 0x008000, length = 0x02000 原因:由映射图知道0x100000为保留空间,不可用 改变长度是为了不让其溢出

将.ebss : > RAMM0_1, PAGE = 1改为 .ebss : > DRAMH0, PAGE = 1 修改后在Graph中观察得到锯齿波图像如图所示

扩展2

—修改程序,生成一个sin函数,利用CCS的图形View/Graph功能绘制出来 生成一个三角函数,需要改变程序

首先,因用到sin计算公式,在程序开始加入math.lib库,即加入

其次,原定义的unsigned int需要改变为signed int,用于后面主程序中sin的定义

然后,将主程序中代入sin函数

然后运行程序,在graph中观察到图像

显示双条曲线:

如果显示三角波和锯齿波的双条曲线,只需在三角波程序的基础上,把ExRam1的“*(ExRamStart + Start + i) = 0;”改为“ *(ExRamStart + Start + i) = i*100;”并且把ExRam1的起始地址改为0x4000,即“InitExRam1(0x4000);”,因为地址重复且RamRead没用,所以删掉“InitRamRead(0x4000);” 然后再运行程序,load后在graph中可以观察到图像为:

本文来源:https://www.bwwdw.com/article/7g2i.html

Top