DSP实验报告.docx
- 文档编号:29224941
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:33
- 大小:1.21MB
DSP实验报告.docx
《DSP实验报告.docx》由会员分享,可在线阅读,更多相关《DSP实验报告.docx(33页珍藏版)》请在冰豆网上搜索。
DSP实验报告
数字信号处理器(DSP)
实
验
报
告
一、实验目的3
二、实验内容3
三、实验原理3
四、实验步骤4
六、实验例程序7
七、实验结果12
一、实验目的13
二、实验原理13
三、实验内容与步骤14
四、实验条件17
六、实验例程序17
七、思考题18
八、实验结果20
一、实验目的22
二、实验原理22
三、实验内容与步骤23
四、实验条件24
五、实验例程序25
六、实验结果28
一、实验目的32
二、实验原理32
三、实验内容33
四、实验条件33
五、实验步骤34
六、实验结果35
实验一:
CCS入门实验
一.实验目的
1.掌握CodeComposerStudio3.5的安装和配置。
2.了解DSP开发系统和计算机与目标系统的连接方法。
3.了解CodeComposerStudio3.0软件的操作环境和基本功能,了解TMS320C5xxx软件开发过程。
二.实验内容
1.完成CCS软件的配置和启动;
2.创建工程文件,创建源文件并添加到工程文件中,完成编译;
3.下载和运行输出文件,描述F10、F9、F8、F5等按键的作用;
4.使用观察窗口查看str变量和num变量的值;
5.掌握文件输入/输出的功能,在程序行read_signals(int*input)上设置Probe断点,
执行。
三.实验原理
开发TMS320C5xxx应用系统一般需要以下几个调试工具来完成:
1.软件集成开发环境(CodeComposerStudio2.0):
完成系统的软件开发,进行软件和
硬件仿真调试。
它也是硬件调试的辅助手段。
2.开发系统(ICETEK5100USB或ICETEK5100PP):
实现硬件仿真调试时与硬件系
统的通信,控制和读取硬件系统的状态和数据。
3.评估模块(ICETEKVC5416-A或ICETEKVC5416-C等):
提供软件运行和调试的
平台和用户系统开发的参照。
◆用户系统工程文件一般包含以下几种文件
-源程序文件:
C语言或汇编语言文件(*.ASM或*.C)
-头文件(*.H)
-命令文件(*.CMD)
-库文件(*.LIB,*.OBJ)
四.实验条件
1.PC一台:
操作系统为Windows2000(或WindowsNT、WindowsXP),Windows
的内核如果是NT的,应安装相应的补丁程序(如:
Windows2000为ServicePack3,
WindowsXP为ServicePack1)。
2.DSP实验箱一台,USB连接电缆一条。
五.实验步骤
1.设置CodeComposerStudio在软件仿真(Simulator)方式下运行:
◆双击桌面上“SetupCCS3(‘C5000)”,启动“CodeComposerStudioSetup”。
◆在“ImportConfiguration”对话框中单击“Clear”按钮,在接下来的对话框中
选择“是”,清除原先的系统设置;观察窗口“CodeComposerStudioSetup”
中左侧“SystemConfiguration”栏中“MySystem”项被清空。
◆在“AvailableConfigurations”列表中,单击选择“C5416DeviceSimulator”
驱动,并单击“Import”按钮;观察窗口“CodeComposerStudioSetup”
中左侧“SystemConfiguration”栏中“MySystem”项中被加入“C54x
Simulator”项。
◆单击“Close”按钮,退出“ImportConfiguration”对话框。
◆选择“CodeComposerStudioSetup”窗口“File”菜单中“Exit”项退出,并
在接下来显示的对话框中选择“是”,保存设置;再选择“否”,不启动CCS。
2.启动CodeComposerStudio3.1
双击桌面上“CCS3(‘C5000)”,启动CodeComposerStudio3.0;可以看到显示
出的C54XCodeComposerStudio窗口;
3.创建工程
◆创建新的工程文件
◆在工程文件中添加程序文件
◆编译连接工程
4.编辑修改工程中的文件
◆查看工程文件
◆查看源文件
双击工程管理窗中的“volume.c”文件,可以查看程序内容。
双击工程管理窗中的
“volume.h”文件
◆编辑修改源文件
打开“volume.c”,找到“main()”主函数,将语句“input=&inp_buffer[0];”
◆修改工程文件的设置
选择“Project”菜单中的“BuildOptions…”项,打开“BuildOptionsfor
volume.pjt”对话框,选择“Linker”卡片,在“StackSize”项后输入1024;单
击“确定”完成设置;通过此设置,重新编译后,程序中的堆栈的尺寸被设置成1024
个字。
5.基本调试功能
◆执行File→LoadProgram,在随后打开的对话框中选择刚刚建立的
F:
\volume\volume.out文件。
◆在项目浏览窗口中,双击volume.c激活这个文件,移动光标到main()行上,右击鼠标
选择ToggleBreakpoint或按F9设置断点。
◆选择Debug→Run或按F5运行程序,程序会自动停在main()函数头上。
6.使用观察窗口
◆执行View→WatchWindow打开观察窗口。
◆在volume.c中,选中任意一个变量,右击鼠标,选择“QuickWatch”,CCS将打
开QuickWatch窗口并显示选中的变量。
◆在volume.c中,选中任意一个变量,右击鼠标,选择“AddtoWatchWindow”,
CCS将把变量添加到观察窗口并显示选中的变量值。
7.文件输入/输出
◆在真实的系统中,read_signals函数用于读取A/D模块的数据并放到DSP缓冲区
中。
◆执行File→FileI/O,打开对话框。
◆点击AddFile把sine2.dat文件加到对话框中。
◆完成设置
◆关联事件和Probe断点:
◆点击“确定”关闭对话框,此时,已经配置好了Probe断点和与之关联的事件.进一步
的结果在下面实验中显示。
8.图形功能
下面我们使用CC的图形功能检验上一节的结果
◆执行View→Graph→Time/Frequency打开GraphPropertyDialog窗口。
◆修改属性为如下值并确定:
GraphTitle:
Input
StartAddress:
inp_buffer
AcquisitionBufferSize:
100
DisplayDataSize100
DSPType:
16-bitsignedinteger
在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。
◆按F12运行程序.观察input窗口的内容。
六.实验例程序
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
};
/**********************************************************************************/
/*NAME:
read_signals()*/
/*FUNCTION:
readinputsignal.*/
/*PARAMETERS:
none.*/
/*RETURNVALUE:
TRUE.
/*********************************************************************************/
intread_signals(int*input)
{
/*readreferencesignal*/
/*readinputsignal*/
return(TRUE);
}
/********************************************************************************/
/*NAME:
write_buffer()
/*FUNCTION:
writetotheoutputbuffer.Usethevolumevariable*/
/*tocontrolthevolume.*/
/*PARAMETERS:
input,output,num.*/
/*RETURNVALUE:
TRUE.*/
/********************************************************************************/
intwrite_buffer(int*input,int*output,intcount)
{
while(count--)
{
*output++=(*input++)*volume;
}
return(TRUE);
}
/********************************************************************************/
/*NAME:
main()*/
/*FUNCTION:
VolumeControl:
Readinputbuffer*/
/*multiplybyvolumecoeficientandwriteto*/
/*outputbuffer.*/
/*PARAMETERS:
none.*/
/*RETURNVALUE:
none.*/
/********************************************************************************/
main()
{
intnum=BUF_SIZE;
while(TRUE)/*loopforever*/
{
input=&inp_buffer[0];
output=&out_buffer[0];
/*readinputsignalsfromPCfile*/
read_signals(input);
/*writetooutputbuffer*/
write_buffer(input,output,num);
}
}
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
}
七.实验结果
实验二:
编制链接控制文件
一.实验目的
1.学习用汇编语言编制程序;了解汇编语言程序与C语言程序的区别和CCS使用它们
在设置上的不同。
2.学习编制命令文件控制代码的连接。
3.学会建立和改变map文件,以及利用它观察DSP内存使用情况的方法。
4.熟悉使用软件仿真方式调试程序。
二.实验原理
1.汇编语言程序
汇编语言程序除了程序中必须使用汇编语句之外,其编译选项的设置与C语言编制的
程序也稍有不同。
2.命令文件的作用
命令文件(文件名后缀为cmd)为链接程序提供程序和数据在具体DSP硬件中的位置
分配信息。
通过编制命令文件,我们可以将某些特定的数据或程序按照我们的意图放
置在DSP所管理的内存中。
命令文件也为链接程序提供了DSP外扩存储器的描述。
3.内存映射(map)文件的作用
一般地,我们设计、开发的DSP程序在调试好后,要固化到系统的ROM中。
为了更
精确地使用ROM空间,我们就需要知道程序的大小和位置,通过建立目标程序的
map文件可以了解DSP代码的确切信息。
当需要更改程序和数据的大小和位置时,
就要适当修改cmd文件和源程序,再重新生成map文件来观察结果。
4.源程序分析
汇编语言源程序UseCMD.asm框图:
三.实验内容与步骤
1.实验准备
设置软件仿真模式
2.打开工程文件
◆双击桌面上“CCS2(‘C5000)”,启动CodeComposerStudio2.0。
◆打开菜单“Project”的“New…”项;在“Project”项中输入UseCMD,在“Location”
中选择F:
\UseCMD目录,单击“完成”建立UseCMD.pjt。
◆新建UseCMD.asm和UseCMD.cmd文件,保存在F:
\UseCMD,并在工程中添加
文件UseCMD.asm和UseCMD.cmd。
3.设置工程文件
◆打开设置窗口:
选择菜单“Project”的“BuildOptions…”项。
◆选择链接设置:
单击“Linker”属性页。
◆观察汇编语言程序的特殊设置:
-“AutoinitModel”项设置成“NoAutoinitialization”
-“CodeEntryPoint”项中输入“start”。
◆退出设置窗口:
单击“确定”按钮。
4.编译源文件,下载可执行程序
◆单击菜单“Project”、“RebuildAll”。
◆执行File→LoadProgram,在随后打开的对话框中选择刚刚建立的UseCMD.out
文件。
完成后,系统自动打开源程序文件UseCMD.asm。
5.打开观察窗口
◆开启CPU寄存器观察窗口:
单击菜单“View”→“CPURegisters”→“CPU
Registers”。
◆在内存观察窗口中观察变量的值:
选择“View”菜单中“Memory…”项,在“MemroyWindowOptions”窗中
的“Adress”项中输入x,单击“OK”完成设置;在随后显示的“Memory”窗口
中单击鼠标右键,选择“FloatInMainWindow”项。
6.观察程序运行结果
7.生成内存映像文件
8.对照观察map文件和cmd文件的内容
◆选择菜单“File”→“Open…”,将找到F:
\UseCMD目录,将文件类型改为“MemoryMapFiles”,选择刚刚生成的UseCMD.map文件、打开。
◆展开工程管理窗中的UseCMD.pjt,双击其中的UseCMD.cmd文件。
9.改变内存分配
修改cmd文件中的PRAM:
o=100h,l=1f00h改为PRAM:
o=200h,l=1e00h
重新编译工程,观察map文件中有何变化。
四.实验条件
PC一台:
操作系统为Windows2000(或WindowsNT、WindowsXP)。
Windows的内核如果是NT的应安装相应的补丁程序(如:
Windows2000为Service
Pack3,WindowsXP为ServicePack1。
安装CodeComposerStudio3.0软件。
五.实验例程序
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
}
七.思考题
请修改程序完成无符号数0f000h+0e000h的计算。
程序如下:
.mmregs
.modelcall=c55_std
.modelmem=large
.globalx
.bssx,1,0,0
.symx,x,4,2,16
.globaly
.bssy,1,0,0
.symy,y,4,2,16
.globalz
.bssz,2,0,1
.symz,z,4,2,16
.sect".text"
.align4
.globalstart
.symstart,start,36,2,0
start:
BCLRM40
MOV#0x0F000,*(#y)
MOV#0x0E000,*(#x)
L1:
BCLRSXMD
MOV*(#x),AC0
ADD*(#y),AC0
MOVAC0,dbl(*(#z))
BL1
八.实验结果
实验三:
FIR滤波器算法实验
一.实验目的
1.掌握用窗函数法设计FIR数字滤波器的原理和方法
2.熟悉线性相位FIR数字滤波器特性
3.了解各种窗函数对滤波器特性的影响
二.实验原理
1.FIR的原理和参数生成N阶有限冲激响应滤波器:
FIR设计原理:
根据系数h是偶对称,为了简化运算产生如下计算方法:
如果一个FIR滤波有一个冲激响应,h(0),h
(1),…h(N-1),和x(n)描绘输入的时常滤波n,
输出滤波y(n)的n给出以下方程:
y(n)=h(0)x(0)+h
(1)x(n-1)+…+h(N-1)x[n-(n-1)]
2.程序的流程:
三.实验内容与步骤
1.实验准备
设置软件仿真模式
2.打开工程文件
◆双击桌面上“CCS2(‘C5000)”,启动CodeComposerStudio2.0。
◆打开菜单“Project”的“New…”项;在“Project”项中输入FIR,在“Location”
中选择F:
\FIR目录,单击“完成”建立FIR.pjt。
◆新建FIR.asm和FIR.cmd文件,保存在F:
\FIR,并在工程中添加文件FIR.asm和
FIR.cmd。
3.设置工程文件
◆打开设置窗口:
选择菜单“Project”的“BuildOptions…”项。
◆选择链接设置:
单击“Linker”属性页。
◆观察汇编语言程序的特殊设置:
-“AutoinitModel”项设置成“NoAutoinitialization”
◆退出设置窗口:
单击“确定”按钮。
4.编译源文件,下载可执行程序
5.打开观察窗口
◆选择菜单“View”-“Graph”-“Time/Frequency”进行如下设置:
GraphTitle:
input
StartAddress:
input
Page:
Data
AcquisitionBufferSize:
1
IndexIncrement:
1
DisplayDataSize:
200
DSPDataType:
16-bitsignedinteger
◆继续选择菜单“View”-“Graph”-“Time/Frequency”进行如下设置:
GraphTitle:
output
StartAddress:
output
Page:
Data
AcquisitionBufferSize:
1
IndexIncrement:
1
DisplayDataSize:
200
DSPDataType:
16-bitsignedinteger
6.设置断点
◆在FIR.asm文件标号:
“fir_loop”下面的“NOP”语句设置软件断点“Toggle
breakpoint”和探针“ToggleProbePoint”。
◆选择菜单“File”-“FileI/O”,单击“AddFil
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 报告