DSP实验报告.docx
- 文档编号:8655532
- 上传时间:2023-02-01
- 格式:DOCX
- 页数:30
- 大小:1.41MB
DSP实验报告.docx
《DSP实验报告.docx》由会员分享,可在线阅读,更多相关《DSP实验报告.docx(30页珍藏版)》请在冰豆网上搜索。
DSP实验报告
西安电子科技大学
DSP上机实验报告
2012年6月
实验一——VISUALDSP++的使用入门
实验一的目的
实验一的主要目的是熟悉VISUALDSP++的开发环境。
针对ADSP-Blackfin533DSP,利用几个用C、C++和汇编语言写成的简单例子来描述VISUALDSP+十编程环境和调试器(debugger)的主要特征和功能。
对于运行在其它类型Blackfin处理器的程序只需对其链接描述文件(.LDF)做一些修改,就可用于其它芯片或者ADSP-Blackfin533的硬件仿真。
在目录…\Blackfin\ldf下有每种处理器类型的链接描述文件,可供参考。
实验一包括4个基本练习:
练习一:
启动VisualDSP++4.0,建立一个用C源代码的工程(Project),同时用调试器来评估用C语言所编写代码的性能;
练习二:
创立一个新的工程,修改源码来调用一个汇编(asm)程序,重新编译工程,用调试器来评估用汇编语言所写程序的性能;
练习三:
利用调试器的绘图(plot)功能来图形显示一个卷积算法中的有关数据的波形;
练习四:
利用调试器的性能统计功能(Statisticalprofile)来检查练习三中卷积算法的效率。
利用所收集到的性能统计数据就能看出算法中最耗时的地方。
练习一——运行C程序
在练习一中,将创立和运行一个C程序,源文件在…\Blackfin讲义\参考实验程序\Tutorial\dot_product_c子目录。
1.实验步骤
l)进入VisualDSP+十并打开一个工程(Project)
进入VisualDSP++,显示VisualDSP++的集成开发和调试环境窗口(IntegratedDevelopmentandDebuggerEnvironment,简称IDDE)。
选择菜单File中Open打开文件…unit_1\dot_product_c\dotprodc.dpj。
VisualDSP++环境将装载dotprodc工程,并列出相应的源文件。
在输出窗口(OutputWindow)中显示简要信息。
Dotprodc工程中有3个文件,定义数组和计算数组点积和的两个C语言源文件dotprod_main.c(主程序)、dotprod.c(子程序)以及一个描述程序和数据存储位置的链接描述文件dotprodc.ldf。
2)编译dotprodc工程
在菜单Project中选择BuildProject来对工程进行编译。
此时,输出窗口显示程序编译时的各种状态信息(包括出错和编译进程信息)。
当编译检测到错误时,将在输出窗口出现相应的出错信息,用鼠标双击它,编译器将自行打开源文件。
这时可对源文件编辑、修改错误,再次进行编译。
当编译不再有错时,输出窗口将显示“Buildcompletedsuccessfully”。
在本例子中,编译器会检测到一个未定义的错误,显示为:
“.\dotprod_main.c”,line115:
error#20:
identifier“itn”isundefineditni;
在输出窗口中对该行文字用鼠标双击,环境会自动打开dotprod_main.c文件,并将光标定位在出错行。
你可以看见单词“int”被错写成“itn”。
将该错误改正后,保存并重新编译。
如果再没有错误出现,这时工程已被成功编译,就可以用VisualDSP++的debugger来调试程序。
VisualDSP++开发环境的编辑窗口和输出窗口以及所显示的程序编译时的各种状态信息如图7.1所示:
图7.1VisualDSP++开发环境的编辑窗口和输出窗口
3)运行VsualDSP++调试器
在编译完成后,环境将自动进入调试状态,对于初次进入debugger,将显示对象选择对话框,在其中指定对象和处理器信息。
域
选择值
DebugTarget
ADSP-BF5xxBlackfinFamilySimulators
Platform
ADSP-BF5xxSingleProcessorSimulator
SessionName
ADSP-BF533ADSP-BF5xxSingleProcessorSimulator
Processor
ADSP-BF533
若在调试过程中需定义不同的对象和处理器类型,选取菜单Sessions中NeWSession项来重新定义。
NeWSession对话框图7.2所示:
图7.2NeWSession对话框
用VisualDSP+十调试时,调试器会自动调入工程的可执行文件dotprodc.dxe。
在默认情况下,调试器会打开三个窗口:
输出窗口(下)、反汇编窗口(右)、包括工程主文件dotprod_main.c的源代码窗口(左)。
如图7.3所示,左窗的每一条C语句都对应右窗中的多条汇编指令:
图7.3调试器的输出窗口、反汇编窗口和源代码窗口
在图7.3中,箭头所指为当前执行指令,红圆圈代表设定的断点位置。
当调试器加载C程序时,会自动设置两个断点,分别在代码执行的开头和结尾。
测览程序中的断点可选择菜单Settings下的BreakPoints…,可在此对话框中增加或删除断点。
另外也可通过在每条代码行的开头处双击鼠标或快捷键F9来设置或取消断点。
4)运行dotprod.c
从Debug菜单中选择Run项,程序将被执行,其输出结果在Outputwindow中显示。
如图7.4所示:
图7.4dotprod.c输出结果
5)评估函数a_doc_c的性能(profile)
Profile用来分析程序的运行时间特性,通过Profile可以找到最耗时的程序段,这可能就是需要进一步优化性能的程序段。
通过下述步骤来设置Profile功能并显示其结果:
(1)选Tools\LinearProfiling\NewProfile命令,如图7.5所示:
图7.5设置Profile功能的菜单
(2)出现一个Profile的子窗口,在该窗口上点击右键弹出如图7.6
(1)的快捷菜单,如图7.6
(1)所示:
图7.6Profile右键快捷菜单
(3)点击菜单中的Properties….,选中第二个选项卡“filter”然后设置开始地址和结束地址;如图7.6
(2)所示。
图7.6
(2)设置进行评估的起始地址和结束地址
VisualDSP++允许在整个程序空间中进行评估,当然也可以设置若干个Memoryranges或若干个C子程序的函数体进行评估,即可以重复指定多个ProfileRange。
在本例中要求对三个子函数a_dot_b()、a_dot_c()、a_dot_d()的运行效率作出评估,应在“Filter”选项卡中选择C/C++function,如图7.6
(2)所示:
(4)重新编译加载程序,按F5继续运行程序,程序完全执行后,将在Console窗口显示结果,并在Profile窗口中显示程序运行过程中的各种数据。
点击右键菜单中ViewSampleCount,显示如图7.7
(1)所示:
图7.7Profile窗口
(1)
将ProjectOptions中的编译器设置将代码优化功能选中,重新编译和链接程序后,对程序中的三个子函数的运行性能重新进行评估,如图7.7
(2)所示,对比优化前和优化后的区别,说明其原因。
图7.7Profile窗口
(2)
2.实验结果
运行结果
优化前
优化后
练习二——运行C和汇编混合程序
在练习一中的例子是C主程序调用C子程序。
在练习二中,要学会如何创建新工程,在此基础上我们将修改这个C主程序,让其调用一个汇编子程序,重新编译工程并评估汇编程序的性能。
实验结果
运行结果
优化前
优化后
评估a_dot_casm的效率
练习三——数据绘图(Plotting)
练习三是对一个己编译的算法程序的数据进行绘图输出,该程序的执行文件名为convolution.dxe,源代码文件为convolution.cpp。
1.实验步骤
l)将算法程序调入Debugger环境
关闭所有已打开的工程和文件,选择菜单File\LoadProgram...项或点击图标。
在出现的对话框中选择文件…fir\debug\fir.dxe。
并在随后的源文件对话框中选择文件…fir\fir.c。
可以在C代码源文件中看到两个全局数组:
IN和OUT。
2)打开绘图窗口并设定参数
选择菜单View\DebugWindows\Plot\New…项,将出现Plot参数设置窗口。
在PlotType项中选择LinePlot,在PlotTitle中输入fir。
其它参数设定如表7-1所示:
表7-1Plot参数设置
DataSets
Name
Memory
Address
Count
Stride
Data
IN
IN
BlackfinMemory
IN
128
1
short
OUT
OUT
BlackfinMemory
OUT
128
1
short
Plot设置对话框如图7.18示:
图7.18Plot设置对话框
3)运行fir程序并在图形窗口中观察数据
接F5运行程序,当程序Halt(SHIFT-F5)后,用Plot窗口绘出出现数据OUT的曲线。
4)绘制幅度谱线图
在plot窗口点击右键,选择“modifysetting”,在“plotsetting”窗口选择“dataprocessing”,在“datasets”窗口选择“IN”,在“dataprocess”窗口选择“FFTMagnitude”,然后点“OK”,重复一以上操作,把数据“OUT”也改为“FFTMagnitude”。
实验结果
程序运行后的Plot窗口
数据的FFT
练习四——性能统计
在练习四中,我们将再次调用并调试fir程序,用调试器的性能特性(statisticalProfiling)来找出程序中最花时间的部分。
实验结果
统计特性数据窗口
实验二—GPIO实验
实验二的目的:
实验二的主要目的是在熟悉VISUALDSP++的开发环境的基础上,针对ADSP-Blackfin533EZ-KIT开发板,通过几个练习,熟悉Blackfin533的GPIO口的工作原理和性能。
实验二包括4个基本练习:
练习一:
跑马灯实验
练习二:
UART实验
练习三:
memDMA实验
练习四:
定时器实验
●练习一—跑马灯的显示实验
本练习利用ADSPBF533-EZ-KIT评估板的硬件资源,通过运行程序把数据直接传送到评估板的FLASHA上,利用FLASHA的PROTB口输出电平数据直接控制6个LED的状态(1LEDON,0LEDOFF)来显示。
在实验中按下按钮SW7就可以改变LED灯的闪亮方向。
2.实验步骤
1)连接硬件
关闭PC机的电源,按照硬件连接图正确连接各个硬件设备,检查EZ-KIT板上的跳线位置是否正确(拨码开关SW9的1-4打开,其余的关闭),按照硬件连接图检查确保正确连接各个硬件设备。
2)加电和启动程序
检查无误后,分别打开PC机、评估板电源,运行VisualDSP++,新建一个工程,工程名称自定义,正确设置工程的各个选项,将…\unit_2\Blink目录下的源文件加入到工程中。
3)选择或者建立正确的会话类型
按照要求必须选择仿真器EZ-KIT的类型,具体方法是选取菜单Sessions中NeWSession项来定义。
NeWSession对话框图如下所示:
4)编译链接和观察结果
选择Project菜单下的buildproject选项进行编译,编译后若有错误则双击错误处即可找到相应的错误程序行进行修改,直到无错误时才点击Debug菜单下的RUN选项开始运行。
运行后根据所定义的LED状态会观察到LED的闪烁现象。
注意:
实验前必须将实验板上SW9pin1打开。
●练习二—UART数据传送实验
本实验利用ADSPBF533-EZ-KIT评估板的硬件资源,通过UART口进行数据传送实验。
UART口用查询和中断两种方式数据传送是否完成。
实验结果可以通过PC机上的超级终端可以看到传送的数据。
2.实验步骤
1)连接硬件
关闭PC机的电源,按照硬件连接图正确连接各个硬件设备,检查EZ-KIT板上的跳线位置是否正确,按照硬件连接图检查确保正确连接各个硬件设备。
2)加电和启动程序
检查无误后,分别打开PC机、评估板和电源,运行VisualDSP++,新建一个工程,工程名称自定义,正确设置工程的各个选项,将…\unit_2\UART目录下的源文件加入到工程中。
或者打开…\unit_2\UART目录下已经存在的工程UART.dpj。
3)选择或者建立正确的会话类型
按照要求必须选择仿真器EZ-KIT的类型,具体方法是选取菜单Sessions中NeWSession项来定义。
NeWSession对话框图如下所示:
4)编译链接和观察结果
编译链接该工程,没有错误后运行程序。
必须注意在Settings菜单中有几项必须正确设置,设置和运行EZ_KIT板方法请看板子的说明手册。
正确的设置Settings后,选择Project菜单下的buildproject选项进行编译,编译后若有错误则双击错误处即可找到相应的错误程序行进行修改,直到无错误时才点击Debug菜单下的RUN选项开始运行。
打开桌面开始菜单下的附件中的通讯下面的超级终端,进行发送、接受数据。
具体步骤如下:
1)打开超级终端在连接描述填写名称
2)在连接到菜单连接时使用选项选择COM1
3)在COM1的属性菜单选择默认值
4)程序运行时在超级终端的显示窗口输入@字符,这时超级终端会信息
实验结果
●练习三—基于描述符的存储器DMA实验
本实验利用ADSPBF533-EZ-KIT板的硬件资源,完成Blackfin存储空间中的存储器对存储器的DMA传送。
本实验中三种不同的描述符(DMA传送方法)得到的结果不一样,可以通过观察各个输出存储器的窗口看到现象。
通过这个实验可以加深对menDMA数据传送方式的理解。
2.实验步骤
1)连接硬件
关闭PC机的电源,按照硬件连接图正确连接各个硬件设备,检查EZ-KIT板上的跳线位置是否正确,按照硬件连接图检查确保正确连接各个硬件设备。
2)加电和启动程序
检查无误后,分别打开PC机、评估板的电源,运行VisualDSP++,新建一个工程,工程名称自定义,正确设置工程的各个选项,将…\unit_2\DescriptorBase目录下的源文件加入到工程中。
或者打开…\unit_2\DescriptorBase目录下已经存在的工程memdma_example.dpj。
3)选择或者建立正确的会话类型
按照要求选择或者建立EZ-KIT类型的会话,详细要求请参阅前面的有关内容。
4)编译连接
编译链接该工程,编译有误时双击错误处可以找到错误程序行进行修改;没有错误后运行程序。
实验结果
改动memdma_move1Dto2D中的r2.l=0x0003为r2.l=0x0009后结果为:
●练习四—定时器的演示实验
本实验利用ADSPBF533-EZ-KIT评估板的硬件资源,通过事先定义好LED状态的数据组,并把数组存放在评估板的存储器FLASHA。
主要采用定时操作读取数据并通过FLASHAPORTB口直接输出来控制LED的状态来实现的。
2.实验步骤
1)连接硬件
关闭PC机的电源,按照硬件连接图正确连接各个硬件设备,检查EZ-KIT板上的跳线位置是否正确,按照硬件连接图检查确保正确连接各个硬件设备。
2)加电和启动程序
检查无误后,分别打开PC机、评估板的电源,运行VisualDSP++,新建一个工程,工程名称自定义,正确设置工程的各个选项,将…\unit_2\timer目录下的源文件加入到工程中。
3)选择或者建立正确的会话类型
按照要求选择或者建立EZ-KIT类型的会话,详细要求请参阅前面的有关内容。
4)编译链接
编译链接该工程,编译有误时双击错误处可以找到错误程序行进行修改;没有错误后运行程序。
4.实验要求
1)按照实验步骤完成实验,运行程序,观察LED显示现象,并根据程序进行分析。
2)试着修改主程序中的LED状态数据组来得到想要的状态转变,也可修改定时器初始值来改变各个状态间隔时间,并做相应现象的数据分析。
例如按如下方法改变数据组以及相应的数据N:
原#defineLED_STAT_NUM10
intzimo21[LED_STAT_NUM]=
{
0x01,
0x02,
0x04,
0x08,
0x10,
0x20,
0x10,
0x08,
0x04,
0x02,
};
改为
1)#defineLED_STAT_NUM6
intzimo21[LED_STAT_NUM]=
{
0x01,
0x02,
0x04,
0x08,
0x10,
0x20,
};
2)#defineLED_STAT_NUM6
intzimo21[LED_STAT_NUM]=
{
0x01,
0x20,
0x02,
0x10,
0x04,
0x08,
};
例如在主函数main()中改变定时时间周期PERIOD:
*pTIMER0_PERIOD=0x00400000;
*pTIMER0_PERIOD=0x01000000;
*pTIMER0_PERIOD=0x04000000;
实验三——数据采集和谱分析
实验三利用ADSPBF533的评估板的硬件资源,完成对信号的采样与FFT变换输出。
输出结果可以从示波器上实时地观察到,也可以利用VisualDSP++的plot功能描绘出来。
实验的目的是让学生理解离散傅立叶变化的原理,掌握DFT的快速算法,同时了解连续信号的采样后的频谱,加深对数字信号处理理论的理解。
2.实验三操作步骤
1)连接硬件
断开所有电源,参考图7.15连接好信号源、EZ-KIT板、微机、示波器等。
检查EZ-KIT板上的跳线位置是否正确,按照硬件连接图检查确保正确连接各个硬件设备。
2)加电和启动程序
检查无误后,分别打开PC机、信号源、评估板和示波器的电源,启动VisualDSP++,新建一个工程,工程名称自定义,正确设置工程的各个选项,将源程序加入到工程中。
3)选择或者建立正确的会话类型
按照要求选择或者建立EZ-KIT类型的会话,详细要求请参阅7.4.1节的有关内容。
4)编译链接运行程序
编译链接该工程。
在程序中恰当位置设置断点(如main函数中的“optr=OutputBuffer;”程序行前),利用VisualDSP++软件的Plot功能,分别绘制ADC数据数组tempdata和频谱数组数据Magnitude的数值。
4)改变信号再观察
调节信号发生器,利用示波器监视其输出幅度为0.51Vpp,频率为14kHZ。
分别产生正弦波、方波和三角波,观察并记录示波器上的输出结果,或者利用VisualDSP++的Plot功能进行记录。
4.典型实验结果
f=1000,app=0.5三角波,矩形窗
f=1000,app=0.5,正弦波,矩形窗
f=1000,app=0.5,方波,矩形窗
f=1000,app=0.5三角波,汉明窗
f=1000,app=0.5正弦波,汉明窗
f=1000,app=0.5方波,汉明窗
实验四——信号自相关的计算
本实验利用ADSPBF533-EZ-KIT评估板的硬件资源,通过板上codec对输入信号进行采样,取出其中一段数据,然后计算其自相关。
计算结果可以通过主机用VisualDSP++的plot功能描绘出来,也可以用示波器实时查看。
2.实验步骤
2)连接硬件
关闭PC机的电源,按照硬件连接图正确连接各个硬件设备,检查EZ-KIT板上的跳线位置是否正确,按照硬件连接图检查确保正确连接各个硬件设备。
2)加电和启动程序
检查无误后,分别打开PC机、信号源、评估板和示波器的电源,运行VisualDSP++,新建一个工程,工程名称自定义,正确设置工程的各个选项,将…\DSP_exp\float\unit_3\acorr目录下的源文件加入到工程中。
3)选择或者建立正确的会话类型
按照要求选择或者建立EZ-KIT类型的会话,详细要求请参阅7.4.1节的有关内容。
5)编译链接和观察结果
编译链接该工程,没有错误后运行程序。
必须注意在Settings菜单中有几项必须正确设置,设置和运行EZ_KIT板方法请7.4.1节的有关内容。
正确的设置Settings后,才可以从示波器上看到输出结果。
在程序中恰当位置设置断点,可以利用VisualDSP++的PLOT功能观察采样数据和相关结果。
6)改变信号类型再观察
调节信号发生器,利用示波器监视其输出幅度为0.51Vpp,频率为14kHZ。
分别产生正弦波、方波和三角波,观察并记录示波器上的输出结果,或者利用VisualDSP++的Plot功能进行观察和记录。
3.典型输出结果
f=1000,app=0.5方波
f=1000,app=0.5三角波
f=1000,app=0.5正弦波
实验五——数据采集与滤波处理
实验五利用ADSPBF533-EZ-KIT板的硬件资源,完成对信号的采样和滤波分析。
本实验中提供的基本FIR滤波器程序,初始化不同的FIR滤波器的系数来设计出不同的滤波器。
滤波效果可以直接在示波器上看到。
通过这个实验加深对数字滤波这种信号处理的方法的理解。
2.实验步骤
1)连接硬件
关闭PC机的电源,按照硬件连接图正确连接各个硬件设备,检查EZ-KIT板上的跳线位置是否正确,按照硬件连接图检查确保正确连接各个硬件设备。
2)加电和启动程序
检查无误后,分别打开PC机、信号源、评估板和示波器的电源,运行VisualDSP++,新建一个工程,工程名称自定义,正确设置工程的各个选项,将…\FIR目录下的源文件加入到工程中。
或者打开…\FIR目录下已经存在的工程FIR.dpj。
3)选择或者建立正确的会话类型
按照要求选择或者建立EZ-KIT类型的会话,详细要求请参阅7.4.1节的有关内容。
4)编译链接和观察结果
编译链接该工程,没有错误后运行程序。
必须注意在Settings菜单中有几项必须正确设置,设置和运行EZ_KIT板方法请7.4.1节的有关内容。
正确的设置Settings后,才可以从示波器上看到输出结果。
5)改变信号类型观察
调节信号发生器,利用示波器监视其输出幅度为0.51Vpp,分别产生正弦波、方波和三角波,使其频率从直流到采样频率连续地变化,观察示波器上输出信号幅度和波形的变化。
6)修改源程序改变滤波状态观察
将源程序中的window=0修改为:
window=1,然后再重复步骤4),5),记录典型点的信号幅度数据,描绘滤波器幅频特性。
将源程序中的Shift=0改为Shif
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 实验 报告