DSP上机实验报告学号:13020150051姓名:刘洋1目录实验一VISUALDSP++的使用入门--------------------2实验二用SIMULATOR模拟数字信号处理--------------9实验三信号数据采集与谱分析----------------------20实验四数字信号采集------------------------------25实验五数据采集与谱分析--------------------------32实验六实现信号自相关的计算----------------------33实验七实现数据采集与滤波处理--------------------34大作业DSP学习心得及发展趋势----------------------372实验一VISUALDSP++的使用入门一、实验目的实验一的主要目的是熟悉VISUALDSP++的开发环境。针对ADSP-21065LSHARCDSP,利用几个用C、C++和汇编语言写成的简单例子来描述VISUALDSP+十编程环境和调试器(debugger)的主要特征和功能。二、实验内容实验一:启动VisualDSP++,建立一个用C源代码的工程(Project),同时用调试器来评估用C语言所编写代码的性能;实验二:创立一个新的工程,修改源码来调用一个汇编(asm)程序,重新编译工程,用调试器来评估用汇编语言所写程序的性能;实验三:利用调试器的绘图(plot)功能来图形显示一个卷积算法中的多个数据的波形;实验四:利用调试器的性能统计功能(Statisticalprofile来检查练习三中卷积算法的效率。利用所收集到的性能统计数据就能看出算法中最耗时的地方。三、实验步骤及结果编译时的各种状态信息3实验一:C代码例子1、进入VisualDSP++,显示VisualDSP++的集成开发和调试环境窗口(IntegratedDevelopmentandDebuggerEnvironment,简称IDDE)。2、选择菜单File中Open打开Project\E:\float\unit_1\dot_product_c\dotprodc.dpj。(注:练习中将float压缩包解压于E盘)3、在菜单Project中选择BuildProject来对工程进行编译。在本例子中,编译器会检测到一个未定义的错误,显示为:“.\dotprod_main.c”,line115:error#20:identifier“itn”isundefineditni;双击该行文字,光标会自动定位出错行,再该行中将“itn”改为“int”,重新编译后没有错误。这时工程已被成功编译,此时在菜单Debug中点击Run,则进入调试状态。4、调试无误后,再菜单中选择Tool\LinearProfiling\NewProfile,在弹出的对话框中,进行如下图的参数设置:4实验结果如下:5实验二:运行C和汇编混合程序1、从菜单ProjectGroup中选取AddNewProject项,在弹出的工程保存对话框中,将工程名定义为Newproject,并保存在E:\float\unit_1\dot_product_asm目录下。2、选取菜单Project\AddtoProject\file(s)…项,按住Ctrl键来同时选中dotprod_main.c,dotprod.c,dotprod_func.asm和dotprodasm.ldf文件,点击“Add”将这几个文件加到工程中,然后进行编译,本例中有一个错误,此错误处于dotprodam.ldf源文件中,具体位置为INPUT_SECTIONS(dotprod.doj(seg_pmco)dotprod.doj(pm_codel)dotProd.doj(pm_code2)dotProd.doj(pm_code3)),将上语句改为INPUT_SECTIONS(dotprod.doj(seg_pmco)dotprod.doj(pm_codel)dotProd_func.doj(pm_code2)dotprod.doj(pm_code3)),重新进行编译,无误后进行调试。3、在菜单中选择Tool\LinearProfiling\NewProfile,在弹出的对话框中,进行如下图的参数设置:6VisualDSP++的Project选项卡7实验结果如下:8实验结果分析:分析实验一和实验二的实验结果,发现对于完成同一种功能,相对于C语言,汇编语言运算效率更高。实验三:1、在菜单中选择File\E:\float\unit_1\convolution\debug\convolution.dxe。并在随后的源文件对话框中选择文件convolution.cpp。可以在C代码源文件中看到四个全局数组:Table、Input、Output和Impulse。2、编译调试无误后,可以完成绘图工作,具体操作如下:View\DebugWindows\Plot\New则可弹出绘图对话框,再本例中进行如下的参数设置:9实验结果如下:实验四:(1)在菜单中选择File\E:\float\unit_1\convolution\debug\convolution.dxe。并在随后的源文件对话框中选择文件convolution.cpp。10(2)打开LinerProfiling窗口,然后对程序进行编译调试,则可在LinerProfiling窗口中展现出卷积程序的执行情况。实验结果如下:实验二用SIMULATOR模拟数字信号处理一、实验目的了解如何利用SIMULATOR实现基本的信号处理方法。二、实验内容实验一:时域卷积运算实验二:DFT运算实验三:时域相关运算实验四:利用相关函数计算信号的功率谱三、实验步骤及结果实验一:1、在菜单中选择File\E:\float\unit_2\Conv\conv.asm.将输入文件改为VARinputx[LENGTH_X]=pulse1.dat;VARinputy[LENGTH_Y]=sin64.dat;2、在菜单中选择View\DebugWindow\Plot\New进行绘图,分别作出inputx,inputy,output的图像。实验结果如下:11实验结果分析:两个序列卷积,卷积后系列的长度为原来两序列长度的和再减一,所以在画图设置中,应该注意输出output的长度。实验二:1、启动运行VisualDSP++,在菜单中建立一个新的session,即进行一下操作:Session\NewSession\ADSP-21062SHARKPresessor.2、将位于将E:\float\unit_2\DFT_MOD目录下的源文件调入到开发环境中。123、编译程序前,在下述程序行中将输入数据文件改为square64.dat即.VARinput[N]=square64.dat。4、对程序进行编译,并在绘图窗口中观察结果。实验结果如下:13实验三:1、调入程序,在菜单中执行以下操作:File\Open\Project\E:\unit_2\Corr\Corr.asm.2、选择数据文件,将输入数据inputx改为trig64,inputy改为trig64,可得三角波的自相关函数。3、将输入数据inputx改为trig64,inputy改为sin64,可得三角波与正弦波的互相关函数。4、编译程序,并用绘图窗口绘图。14实验结果如下:15实验结果分析:设原函数是f(t),则自相关函数定义为R(t)=f(t)*f(-t),其中*表示卷积;设两个函数分别是f(t)和g(t),则互相关函数定义为R(u)=f(t)*g(-t),它反映的是两个函数在不同的相对位置上互相匹配的程度。实验四:1、调入程序,在菜单中执行以下操作:File\Open\Project\E:\unit_2\psd\psd.asm.2、选择数据文件,将输入数据inputx改为square32,inputy改为square32,可得方波的自16相关谱。3、将输入数据inputx改为square32,inputy改为trig32,可得方波与三角波的互相关谱。4、编译程序,并用绘图窗口观察输出结果。实验结果如下:17181920实验结果分析:练习一:由冲击函数卷积的性质可知,单位冲击函数与正弦波函数卷积的结果是对正弦波函数进行平移,多个冲击函数与其卷积则是进行平移叠加。练习二:由方波的DFT的性质可知,方波的DFT变换结果是抽样函数,其实部位偶函数,虚部为奇函数。练习三:由信号的相关可以用信号的卷积表示,只有当两个信号完全一样时,其相关结果才会出现一个比较大的峰值(相关峰(两个信号完全重合时的卷积值最大))所以三角波的自相关结果会出现一个大的相关峰(三角波的峰值和峰值重合时)和两个小的峰值(由于信号时“偶对称”的),还有一个波谷(说明此时的两个信号相关性最弱),同理三角波和21正弦波的互相关结果则是,当正弦波的波峰与三角波的波峰相重合是的相关值最大,而正弦波的波谷和三角波的波峰重合时相关值最小,相关性最大。练习四:由维纳-欣钦(Wiener-Khintchine)定理可知,功率有限信号的功率谱函数与自相关函数构成一对傅里叶变换,功率有限信号的互功率谱函数与互相关函数构成一对傅里叶变换。实验结果中的方波自相关函数的DFT变换对应其功率谱函数,方波与三角波的互相关函数的DFT变换对应其互功率谱函数。通过加窗与不加窗信号的FFT结果我们可以看出,加窗后其信号的能量发散了,使得频谱展宽,波动更加剧烈,还造成了一定的频谱混叠(三角波对比明显),主要是因为信号加窗截断所引起的频谱泄露和谱间干扰。实验三信号数据采集与谱分析一、实验目的1、让学生了解信号的自相关知识。2、让学生理解离散傅立叶变化的原理,掌握DFT的快速算法,同时了解连续信号的采样后的频谱,加深对数字信号处理理论的理解。二、实验内容1、利用ADSP21065L-EZ-KIT评估板的硬件资源,通过板上codec对输入信号进行采样,取出其中一段数据,然后计算其自相关。计算结果可以通过主机用VisualDSP++的plot功能描绘出来,也可以用示波器实时查看。2、利用ADSP21065L的评估板的硬件资源,完成对信号的采样与FFT变换输出。输出结果可以从示波器上实时地观察到,也可以利用VisualDSP++的plot功能描绘出来。三、实验步骤及结果自相关:1、连接硬件关闭PC机的电源,按照硬件连接图正确连接各个硬件设备,检查EZ-KIT板上的跳线位置是否正确,按照硬件连接图检查确保正确连接各个硬件设备。2、加电和启动程序检查无误后,分别打开PC机、信号源、评估板和示波器的电源,运行VisualDSP++,新建一个工程,工程名称自定义,正确设置工程的各个选项,将…\DSP_exp\unit_3\acorr目录下的源文件(acorr.C、065L_hdr.asm、Buffers.asm和acorr.ldf)加入到工程中。3、选择或者建立正确的会话类型按照要求选择或者建立EZ-KIT类型的会话。4、编译链接和观察结果编译链接该工程,没有错误后运行程序。必须注意在Settings菜单中有几项必须正确设置,设置和运行EZ_KIT板方法请上节的有关内容。正确的设置Settings后,才可以从示波器上看到输出结果。在程序中恰当位置设置断点(如sample_code函数中的data_count=0程序行),可以利用VisualDSP++的PLOT功能观察采样数据和相关结果。5、改变信号类型再观察调节信号发生器,利用示波器监视其输出幅度为0.5-1Vpp,频率为1-2kHZ。分别产生正弦波和三角波,观察并记录示波器上的输出结果,或者利用VisualDSP++的Plot功能进22行观察和记录。谱分析:1、连接硬件断开所有电源,连接好信号源,EZ-KIT板,微机,示波器等。检查EZ-KIT板上的跳线位置是否正确,确保正确连接各个硬件设备。2、加电和启动程序检查无误后,分别打开PC机、信号源、评估板和示波器的电源,启动V