DSP实验.docx

上传人:b****5 文档编号:6637966 上传时间:2023-01-08 格式:DOCX 页数:27 大小:1.70MB
下载 相关 举报
DSP实验.docx_第1页
第1页 / 共27页
DSP实验.docx_第2页
第2页 / 共27页
DSP实验.docx_第3页
第3页 / 共27页
DSP实验.docx_第4页
第4页 / 共27页
DSP实验.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

DSP实验.docx

《DSP实验.docx》由会员分享,可在线阅读,更多相关《DSP实验.docx(27页珍藏版)》请在冰豆网上搜索。

DSP实验.docx

DSP实验

 

数字信号处理器(DSP)

实验报告

实验课程:

DSP原理及应用

学生姓名:

XXXX

学号:

XXXXXX

专业班级:

物联网二班

目录

前言3

实验一:

CCS入门实验4

实验二:

编制链接控制文件9

实验三:

数据存取实验16

实验四:

定点数除法实验20

前言

“数字信号处理器”课程实验是在学习“数字信号处理器”课程中加强理解基本的DSP的设计的方法、思路和流程而开设的实践性课程。

通过本实验课程的学习,使学生进一步掌握定点运算DSP的基本知识,包括TMS320C54x的基本硬件资源:

总线结构、存储器、中央处理单元、片内外设,以及DSP软件设计的方法和软件工具CCS的使用,同时通过实验接受了DSP开发的基本步骤训练,为以后从事深入的专业开发打下基础。

本课程实验包含四个必修实验。

实验一《CCS入门实验》,可使学生掌握CodeComposerStudio3.X软件的操作环境和基本功能,掌握TMS320C5xxx软件开发过程。

实验二《编制链接控制文件》,可学习到命令文件控制代码的编制,学会建立和改变map文件,以及利用它观察DSP内存使用情况的方法。

实验三《数据存取实验》,可使学生掌握操作TMS320C5xxx内存空间的指令。

实验四《定点数除法实验》,可进一步理解用减法和移位指令实现除法运算。

实验一:

CCS入门实验

1.1实验目的

(1)掌握CodeComposerStudio3.5的安装和配置。

(2)了解DSP开发系统和计算机与目标系统的连接方法。

(3)了解CodeComposerStudio3.0软件的操作环境和基本功能,了解TMS320C5xxx软件开发过程:

●学习创建工程和管理工程的方法。

●了解基本的编译和调试功能。

●学习使用观察窗口。

●了解图形功能的使用。

1.2实验内容

(1)完成CCS软件的配置和启动。

(2)创建工程文件,创建源文件并添加到工程文件中,完成编译。

(3)下载和运行输出文件,描述F10、F9、F8、F5等按键的作用。

(4)使用观察窗口查看str变量和num变量的值

(5)掌握文件输入/输出的功能,在程序行read_signals(int*input)上设置Probe断点,执行File→FileI/O,打开对话框,加载数据sine2.dat到目标机上,并进行关联设置,最后用图形窗口观察inp_buffer的图形。

1.3实验原理

开发TMS320C5xxx应用系统一般需要以下几个调试工具来完成:

(1)软件集成开发环境(CodeComposerStudio2.0):

完成系统的软件开发,进行软件和硬件仿真调试。

它也是硬件调试的辅助手段。

(2)开发系统(ICETEK5100USB或ICETEK5100PP):

实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。

(3)评估模块(ICETEKVC5416-A或ICETEKVC5416-C等):

提供软件运行和调试的平台和用户系统开发的参照。

*CodeComposerStudio2.0主要完成系统的软件开发和调试。

它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接生成COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。

*用户系统的软件部分可以由CodeComposerStudio建立的工程文件进行管理,工程文件一般包含以下几种文件:

●源程序文件:

汇编语言文件或C语言(*.ASM或*.C)

●头文件:

(*.H)

●命令文件:

(*.CMD)

●库文件:

(*.LIB,*.OBJ)

CCS软件安装的操作一般包括几个步骤:

CCS软件的安装、配置和启动,工程文件的创建、编译和调试。

调试手段有很多,要掌握常用按键F10、F8等的基本使用,掌握观察窗口的使用,掌握使用文件输入/输出功能,并利用图形窗口观察其波形。

1.5实验条件

(1)PC一台:

操作系统为Windows2000(或WindowsNT、WindowsXP),Windows的内核如果是NT的,应安装相应的补丁程序(如:

Windows2000为ServicePack3,WindowsXP为ServicePack1)。

(2)DSP实验箱一台,USB连接电缆一条。

1.6实验步骤

1.设置CodeComposerStudio在软件仿真(Simulator)方式下运行

(1)双击桌面上“SetupCCS3(‘C5000’)”,启动“CodeComposerStudioSetup”。

(2)在“ImportConfiguration”对话框中单击“Clear”按钮,在接下来的对话框中选择“是”,清除原先的系统设置;观察窗口“CodeComposerStudioSetup”中左侧“SystemConfiguration”栏中“MySystem”项被清空。

(3)单击“Close”按钮,退出“ImportConfiguration”对话框。

(4)选择“CodeComposerStudioSetup”窗口“File”菜单中“Exit”项退出,并在接下来显示的对话框中选择“是”,保存设置;再选择“否”,不启动CCS。

2.启动CodeComposerStudio3.1

双击桌面上“CCS3(‘C5000’)”,启动CodeComposerStudio3.0;可以看到显示出的C54XCodeComposerStudio窗口。

3.创建工程

(1)创建新的工程文件:

(2)在工程文件中添加程序文件:

(3)编译连接工程:

4.编辑修改工程中的文件

(1)查看工程文件:

(2)查看源文件:

(3)编辑修改源文件:

(4)修改工程文件的设置:

5.基本调试功能

(1)执行File→LoadProgram,在随后打开的对话框中选择刚刚建立的F:

\volume\volume.out文件。

(2)在项目浏览窗口中,双击volume.c激活这个文件,移动光标到main()行上,右击鼠标选择ToggleBreakpoint或按F9设置断点。

(3)选择Debug→Run或按F5运行程序,程序会自动停在main()函数头上。

(4)注意:

在执行C语言的程序时,为了快速的运行到主函数调试自己的代码,可以使用Debug→Gomain命令,上述实验中的使用的是较为繁琐的一种方法。

6.使用观察窗口

1.执行View→WatchWindow打开观察窗口。

2.在volume.c中,选中任意一个变量,右击鼠标,选择“QuickWatch”,CCS将打开QuickWatch窗口并显示选中的变量。

3.在volume.c中,选中任意一个变量,右击鼠标,选择“AddtoWatchWindow”,CCS将把变量添加到观察窗口并显示选中的变量值。

4.在观察窗口中双击变量,则弹出修改变量窗口。

此时,可以在这个窗口中改变变量的值。

5.把str变量加到观察窗口中,点击变量左边的“+”,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。

6.把str变量加到观察窗口中;执行程序进入write_buffer函数,此时num函数超出了作用范围,可以利用CallStack窗口察看在不同作用范围的变量:

●执行View→CallStack打开堆栈窗口。

●双击堆栈窗口的main()选项,此时可以察看num变量的值。

7.文件输入/输出

介绍如何从PC机上加载数据到目标机上。

可用于使用已知的数据流测试算法的正确性。

在完成下面的操作以前,先介绍CodeComposerStudio的Probe(探针)断点,这种断点允许用户在指定位置提取/注入数据。

Probe断点可以设置在程序的任何位置,当程序运行到Probe断点时,与Probe断点相关的事件将会被触发,当事件结束后,程序会继续执行。

在这一节里,Probe断点触发的事件是:

从PC机的数据文件加载数据到目标系统的缓冲区中

下面我们使用CC的图形功能检验上一节的结果。

(1)执行View→Graph→Time/Frequency打开GraphPropertyDialog窗口。

(2)修改属性为如下值并确定。

●在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。

(3)按F12运行程序,观察input窗口的内容。

1.7实验结果

下面我们使用CC的图形功能检验上一节的结果。

执行View→Graph→Time/Frequency打开GraphPropertyDialog窗口。

按F12运行程序,观察input窗口的内容。

1.8实验心得

  了解了DSP编程软件CSS的操作环境和基本功能和实用,为以后的实验打基础。

1.9实验例程序

1.volume.h

#defineBUF_SIZE0x64

#defineTRUE1

#defineFALSE0

structPARMS{

intBeta;

intEchoPower;

intErrorPower;

intRatio;

structPARMS*Link;

};

2.volume.c

#include"volume.h"

intinp_buffer[BUF_SIZE];/*BUF_SIZE的定义见volume.h*/

intout_buffer[BUF_SIZE];

int*input;

int*output;

intvolume=1;

structPARMSstr={2934,9432,213,9432,&str};

intread_signals(int*input)

{

/*readreferencesignal*/

/*readinputsignal*/

return(TRUE);

}

intwrite_buffer(int*input,int*output,intcount)

{

while(count--)

{

*output++=(*input++)*volume;

}

return(TRUE);

}

main()

{

intnum=BUF_SIZE;

while(TRUE)/*loopforever*/

{

input=&inp_buffer[0];

output=&out_buffer[0];

read_signals(input);/*readinputsignalsfromPCfile*/

write_buffer(input,output,num);/*writetooutputbuffer*/

}

}

3.volume.cmd

MEMORY

{

PAGE0:

VECT:

o=80h,l=80h

PRAM:

o=100h,l=1f00h

PAGE1:

DRAM:

o=2000h,l=1000h

}

SECTIONS

{

.text:

{}>PRAMPAGE0

.data:

{}>PRAMPAGE0

.cinit:

{}>PRAMPAGE0

.switch:

{}>PRAMPAGE0

.const:

{}>DRAMPAGE1

.bss:

{}>DRAMPAGE1

.stack:

{}>DRAMPAGE1

.vectors:

{}>VECTPAGE0

}

 

实验二:

编制链接控制文件

2.1实验目的

(1)学习用汇编语言编制程序;了解汇编语言程序与C语言程序的区别和CCS使用它们在设置上的不同。

(2)学习编制命令文件控制代码的连接。

(3)学会建立和改变map文件,以及利用它观察DSP内存使用情况的方法。

(4)熟悉使用软件仿真方式调试程序。

2.2实验原理

(1)汇编语言程序

汇编语言程序除了程序中必须使用汇编语句之外,其编译选项的设置与C语言编制的程序也稍有不同。

其区别为:

●汇编语言程序在执行时直接从用户指定入口开始,常见的入口标号为“start”,而C语言程序在执行时,先要调用C标准库中的初始化程序(入口标号为“_c_init00”),完成设置之后,才转入用户的主程序main()运行。

●由于CodeComposerStudio的代码链接器默认支持C语言,在编制汇编语言程序时,需要设置链接参数,选择非自动初始化,注明汇编程序的入口地址。

(2)命令文件的作用

命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置分配信息。

通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放置在DSP所管理的内存中。

命令文件也为链接程序提供了DSP外扩存储器的描述。

(3)内存映射(map)文件的作用

一般地,我们设计、开发的DSP程序在调试好后,要固化到系统的ROM中。

为了更精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的map文件可以了解DSP代码的确切信息。

当需要更改程序和数据的大小和位置时,就要适当修改cmd文件和源程序,再重新生成map文件来观察结果。

(4)源程序分析

汇编语言源程序UseCMD.asm框图:

2.3实验内容与步骤

1.实验准备

设置软件仿真模式:

(1)启动CC驱动设置窗口:

双击桌面上“SetupCCS2(‘C5000)”图标。

(2)清除原先驱动设置:

单击“Clear”按钮。

(3)安装软件仿真驱动(Simulator):

单击“C5416DeviceSimulator”驱动名,单击“Import”按钮。

(4)完成设置:

单击“Close”,菜单“File”→“Exit”→“是”。

2.打开工程文件

(1)双击桌面上“CCS2(‘C5000)”,启动CodeComposerStudio2.0。

(2)打开菜单“Project”的“New…”项;在“Project”项中输入UseCMD,在“Location”中选择F:

\UseCMD目录,单击“完成”建立UseCMD.pjt。

(3)新建UseCMD.asm和UseCMD.cmd文件,保存在F:

\UseCMD,并在工程中添加文件UseCMD.asm和UseCMD.cmd。

3.设置工程文件

(1)打开设置窗口:

选择菜单“Project”的“BuildOptions…”项。

(2)选择链接设置:

单击“Linker”属性页。

(3)观察汇编语言程序的特殊设置:

●“AutoinitModel”项设置成“NoAutoinitialization”

●“CodeEntryPoint”项中输入“start”。

(4)退出设置窗口:

单击“确定”按钮。

4.编译源文件,下载可执行程序

(1)单击菜单“Project”、“RebuildAll”。

(2)执行File→LoadProgram,在随后打开的对话框中选择刚刚建立的UseCMD.out文件。

完成后,系统自动打开源程序文件UseCMD.asm。

5.打开观察窗口

(1)开启CPU寄存器观察窗口:

单击菜单“View”→“CPURegisters”→“CPURegisters”。

(2)在内存观察窗口中观察变量的值:

6.观察程序运行结果

此时代表程序运行位置的黄色光标条停在start标号下面语句上,程序开始执行。

(1)单步执行程序(按F10键)2次,可观察到CPU寄存器窗口中DP和ST0的值有变化。

(1)单步运行2次,在变量窗口中观察到变量x、y被赋值。

(2)单步执行到xh标号后面的语句,观察ACC寄存器和变量z值的变化。

7.生成内存映像文件

(1)单击菜单“Project”→“Options…”,启动“BuildOptions”工程设置对话框。

(2)单击“Linker”属性页,在“MapFilename”项中输入需要生成的map文件名,比如可以输入UseCMD.map

(3)单击“确定”,完成设置。

(4)选择菜单“Project”→“RebuildAll”,重新编译工程,生成新设置的map文件。

8.对照观察map文件和cmd文件的内容

(1)选择菜单“File”→“Open…”,将找到F:

\UseCMD目录,将文件类型改为“MemoryMapFiles”,选择刚刚生成的UseCMD.map文件,打开该文件。

(2)展开工程管理窗中的UseCMD.pjt,双击其中的UseCMD.cmd文件。

(3)程序的入口地址:

cmd文件的SECTION中指定.text段放到程序区(PAGE0)的PRAM中,在MEMORY中指定PRAM从内存地址100h开始,长度为1f00h;再看map文件中“ENTRYPOINTSYMBOL”中说明了“start”标号的地址为十六进制0000100,两者相符。

(4)内存的占用情况:

通过观察map文件中的“MEMORYCONFIGURATION”字段可以了解内存的使用情况,可以看到,程序所占用的长度为十六进制b,即11个字长,而数据区因开设了3个变量,所以占用了3个字的地址空间。

9.改变内存分配

●修改cmd文件中的PRAM:

o=100h,l=1f00h

●改为PRAM:

o=200h,l=1e00h

●重新编译工程,观察map文件中有何变化。

2.4实验结果

2.5实验心得

进一步了解了CCS软件的应用,对工程文件的应用更加熟悉,能简单的验证程序的正确性。

2.6实验例程序

1.UseCMD.asm

.globalstart;定义全局标号

.mmregs

.data

.bssx,1;开设全局变量(非初始化段)

.bssy,1;三个变量各为一个字(16位)

.bssz,1

.text

start:

LD#x,DP;因下面诸变量使用直接寻址,装载DP值

ST#1,@x;变量赋初值,x=1

ST#2,@y;y=2

LD@x,A;将x的值装载至累加器

add@y,A;累加器加上y的值

stlA,@z;将累加器结果(32位)的低16位存放到变量z

xh:

bxh;空循环

.end

2.UseCMD.cmd

MEMORY

{

PAGE0:

VECT:

o=80h,l=80h

PRAM:

o=100h,l=1f00h

PAGE1:

DRAM:

o=2000h,l=1000h

}

SECTIONS

{

.text:

{}>PRAMPAGE0

.data:

{}>PRAMPAGE0

.cinit:

{}>PRAMPAGE0

.switch:

{}>PRAMPAGE0

.const:

{}>DRAMPAGE1

.bss:

{}>DRAMPAGE1

.stack:

{}>DRAMPAGE1

.vectors:

{}>VECTPAGE0

}

 

实验三:

FIR滤波器算法实验

3.1实验目的

(1)掌握用窗函数法设计FIR数字滤波器的原理和方法

(2)熟悉线性相位FIR数字滤波器特性

(3)了解各种窗函数对滤波器特性的影响

3.2实验原理

(1)FIR的原理和参数生成

●N阶有限冲激响应滤波器:

●FIR设计原理:

根据系数h是偶对称,为了简化运算产生如下计算方法:

如果一个FIR滤波有一个冲激响应,h(0),h

(1),…h(N-1),和x(n)描绘输入的时常滤波n,输出滤波y(n)的n给出以下方程:

(2)程序的流程:

3.3实验内容与步骤

1.实验准备

设置软件仿真模式:

(1)启动CC驱动设置窗口:

双击桌面上“SetupCCS2(‘C5000)”图标。

(2)清除原先驱动设置:

单击“Clear”按钮。

(3)安装软件仿真驱动(Simulator):

单击“C5416DeviceSimulator”驱动名,单击“Import”按钮。

(4)完成设置:

单击“Close”,菜单“File”→“Exit”→“是”。

2.打开工程文件

(1)双击桌面上“CCS2(‘C5000)”,启动CodeComposerStudio2.0。

(2)打开菜单“Project”的“New…”项;在“Project”项中输入FIR,在“Location”中选择F:

\FIR目录,单击“完成”建立FIR.pjt。

(3)新建FIR.asm和FIR.cmd文件,保存在F:

\FIR,并在工程中添加文件FIR.asm和FIR.cmd。

3.设置工程文件

(1)打开设置窗口:

选择菜单“Project”的“BuildOptions…”项。

(2)选择链接设置:

单击“Linker”属性页。

(3)观察汇编语言程序的特殊设置:

●-“AutoinitModel”项设置成“NoAutoinitialization”

(4)退出设置窗口:

单击“确定”按钮。

4.编译源文件,下载可执行程序

(1)单击菜单“Project”、“RebuildAll”。

(2)执行File→LoadProgram,在随后打开的对话框中选择刚刚建立的FIR.out文件。

完成后,系统自动打开源程序文件FIR.asm。

5.打开观察窗口

(1)选择菜单“View”-“Graph”-“Time/Frequency”进行如下设置:

●GraphTitle:

input

●StartAddress:

input

●Page:

Data

●AcquisitionBufferSize:

1

●IndexIncrement:

1

●DisplayDataSize:

200

●DSPDataType:

16-bitsignedinteger

(2)继续选择菜单“View”-“Graph”-“Time/Frequency”进行如下设置:

●GraphTitle:

output

●StartAddress:

output

●Page:

Data

●AcquisitionBufferSize:

1

●IndexIncrement:

1

●DisplayDataSize:

200

●DSPDataType:

16-bitsignedinteger

6.

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

当前位置:首页 > 求职职场 > 职业规划

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

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