DSP技术与应用基础实验报告模板终极版Word文件下载.docx
《DSP技术与应用基础实验报告模板终极版Word文件下载.docx》由会员分享,可在线阅读,更多相关《DSP技术与应用基础实验报告模板终极版Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。
![DSP技术与应用基础实验报告模板终极版Word文件下载.docx](https://file1.bdocx.com/fileroot1/2022-11/20/bf909c02-d66a-46eb-8536-7865922b770f/bf909c02-d66a-46eb-8536-7865922b770f1.gif)
5
实验五卷积算法
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
福建农林大学金山学院信息工程类实验报告
专业:
年级:
姓名:
学号:
实验课程:
实验室号:
_______实验设备号:
实验时间:
指导教师签字:
成绩:
1.实验目的和要求
1.掌握CodeComposerStudio2.21的安装和配置步骤过程。
2.了解DSP开发系统和计算机与目标系统的连接方法。
3.了解CodeComposerStudio2.21软件的操作环境和基本功能,了解TMS320C55xx软件开发过程。
⑴学习创建工程和管理工程的方法。
⑵了解基本的编译和调试功能。
⑶学习使用观察窗口。
⑷了解图形功能的使用。
2.实验原理
*开发TMS320C55xx应用系统一般需要以下几个调试工具来完成:
-软件集成开发环境(CodeComposerStudio2.21):
完成系统的软件开发,进行软件和硬件仿真调试。
它也是硬件调试的辅助手段。
-开发系统(ICETEK5100-USB或ICETEK5100-PP):
实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。
-评估模块(ICETEKVC5509-A或ICETEKVC5509-C等):
提供软件运行和调试的平台和用户系统开发的参照。
*CodeComposerStudio2.21主要完成系统的软件开发和调试。
它提供一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译连接生成COFF(公共目标文件)格式的可执行文件,并能将程序下载到目标DSP上运行调试。
*用户系统的软件部分可以由CCS建立的工程文件进行管理,工程一般包含以下几种文件:
-源程序文件:
C语言或汇编语言文件(*.C或*.ASM)
-头文件(*.H)
-命令文件(*.CMD)
-库文件(*.LIB,*.OBJ)
3.主要仪器设备(实验用的软硬件环境)
1.PC兼容机一台;
操作系统为Windows2000(或WindowsNT、Windows98、WindowsXP,以下假定操作系统为Windows2000)。
Windows操作系统的内核如果是NT的应安装相应的补丁程序(如:
Windows2000为ServicePack3,WindowsXP为ServicePack1)。
4.操作方法与实验步骤
1.实验准备
连接实验设备。
2.启动CodeComposerStudio2.21
选择菜单Debug→ResetCPU。
成功地启动了CCS后会出现如下窗口:
3.创建工程:
⑴创建新的工程文件:
选择菜单“Project”的“New…”项。
弹出下图,按编号顺序操作建立volume.pjt工程文件:
展开主窗口左侧工程管理窗口中“Projects”下新建立的“volume.pjt”,其中各项均为空。
⑵在工程文件中添加程序文件:
选择菜单“Project”的“AddFilestoProject…”项;
在“AddFilestoProject”对话框中选择文件目录为C:
\ICETEK-VC5509-EDULab\Lab0101-UseCCS,改变文件类型为“CSourceFiles(*.c;
*.ccc)”,选择显示出来的文件“volum.c”;
重复上述各步骤,添加volume.cmd文件到volume工程中;
添加C:
\ti\C5500\cgtools\lib\rts55.lib文件到工程中。
⑶编译链接工程:
选择菜单“Project”的“RebuildAll”项,或单击工具条中
的按钮;
注意编译过程中CCS主窗口下部的“Build”提示窗中显示编译信息,最后将给出错误和警告的统计数。
4.编辑修改工程中的文件:
⑴查看工程文件:
展开CCS主窗口左侧工程管理窗中的工程各分支,可以看到“volume.pjt”工程中包含“volume.h”、“rts55.lib”、“volume.c”和“volume.cmd”文件,其中第一个“volume.h”为程序在编译时根据程序中的“include”语句自动加入的。
⑵查看源文件:
*双击工程管理窗中的“volume.c”文件,可以查看程序内容。
可以看到,用标准C语言编制的程序,大致分成几个功能块:
-头文件。
描述标准库程序的调用规则和用户自定义数据、函数头、数据类型等。
具体包含哪一个头文件,需要根据程序中使用了哪些函数或数据而定。
比如:
如果程序中使用了printf函数,它是个标准C提供的输入/输出库函数,选中“printf”关键字,按Shift+F1会启动关于此关键字的帮助,在帮助信息中可发现其头函数为stdio.h,那么在此部分程序中需要增加一条语句:
#include“stdio.h”。
-工作变量定义。
定义全局变量。
-子程序调用规则。
这部分描述用户编制的子程序的调用规则。
也可以写到用户自己编制的.h文件中去。
-主程序。
即main()函数。
它可分为两部分:
变量定义和初始化部分、主循环部分。
主循环部分完成程序的主要功能。
-用户自定义函数。
这个程序是一个音频信号采集、处理输出的程序。
程序的主循环中调用自定义的函数read_signals来获得音频数据并存入输入缓存inp_buffer数组;
再调用自定义函数write_buffer来处理音频数据并存入输出缓存;
output_signals将输出缓冲区的数据送输出设备;
最后调用标准C的显示信息的函数printf显示进度提示信息。
整个系统可以完成将输入的音频数据扩大volume倍后再输出的功能。
read_signals子程序中首先应有从外接AD设备获得音频数据的程序设计,但此例中由于未采用实际AD设备,就未写相应控制程序。
此例打算用读文件的方式获得数据,模拟代替实际的AD输入信号数据。
write_buffer子程序中首先将输入缓冲区的数据进行放大处理,即乘以系数volume,然后放入输出缓冲区。
output_signals函数完成将处理后的设备输出的功能,由于此例未具体操作硬件输出设备,所以函数中未写具体操作语句。
*双击工程管理窗中的“volume.h”文件,打开此文件显示,可以看到其中有主程序中要用到的一些宏定义如“BUF_SIZE”等。
*volume.cmd文件定义程序所放置的位置,此例中描述了ICETEK-VC5509-A评估板的存储器资源,指定了程序和数据在内存中的位置。
它首先将ICETEK-VC5509-A评估板的可用存储器分为五个部分,每个区给定起始地址和长度(区域地址空间不允许重叠);
然后指定经编译器编译后产生的各模块放到哪个区。
这些区域需要根据评估板硬件的具体情况来确定。
⑶编辑修改源文件及编译程序:
打开“volume.c”,找到“main()”主函数,将语句“input=inp_buffer;
”最后的分号去掉,这样程序中就出现了一个语法错误;
重新编译连接工程,可以发现编译信息窗口出现发现错误的提示;
双击红色错误提示,CCS自动转到程序中出错的地方;
将语句修改正确(将语句末尾的分号加上);
重新编译;
注意,重新编译时修改过的文件被CCS自动保存。
⑷修改工程文件的设置:
通过以上设置操作,重新编译后,程序中的用户堆栈的尺寸被设置成1024个字。
5.基本调试功能:
⑴下载程序:
执行FileLoadProgram,在随后打开的对话框中选择刚刚建立的C:
\ICETEK-VC5509-EDULab\Lab0101-UseCCS\Debug\volume.out文件。
⑵设置软件调试断点:
在项目浏览窗口中,双击volume.c激活这个文件,移动光标到main()行上,单击鼠标右键选择ToggleBreakpoint或按F9设置断点(另外,双击此行左边的灰色控制条也可以设置或删除断点标记)。
⑶利用断点调试程序:
选择DebugRun或按F5运行程序,程序会自动停在main()函数上。
①按F10执行到write_buffer()函数。
②再按F8,程序将转到write_buffer函数中运行。
③此时,为了返回主函数,按shift-F7完成write_buffer函数的执行。
④再次执行到write_buffer一行,按F10执行程序,对比与F8执行的不同。
提示:
在执行C语言的程序时,为了快速的运行到主函数调试自己的代码,可以使用DebugGomain命令,上述实验中的使用的是较为繁琐的一种方法。
6.使用观察窗口:
⑴执行ViewWatchWindow打开观察窗口。
⑵在volume.c中,用鼠标双击一个变量(比如num),再单击鼠标右键,选择“QuickWatch”,CCS将打开QuickWatch窗口并显示选中的变量。
⑶在volume.c中,选中变量num,单击鼠标右键,选择“AddtoWatchWindow”,CCS将把变量添加到观察窗口并显示选中的变量值。
⑷在观察窗口中双击变量,则可以在这个窗口中改变变量的值。
⑸把str变量加到观察窗口中,点击变量左边的”+”,观察窗口可以展开结构变量,并且显示结构变量的每个元素的值。
⑹把str变量加到观察窗口中;
执行程序进入write_buffer函数,此时num变量超出了作用范围,可以利用CallStack窗口察看在其他函数中的变量:
①选择菜单ViewCallStack打开堆栈窗口。
②双击堆栈窗口的main()选项,此时可以察看num变量的值。
7.文件输入/输出:
下面介绍如何从PC机上加载数据到DSP上。
用于利用已知的数据流测试算法。
在完成下面的操作以前,先介绍CodeComposerStudio的Probe(探针)断点,这种断点允许用户在指定位置提取/注入数据。
Probe断点可以设置在程序的任何位置,当程序运行到Probe断点时,与Probe断点相关的事件将会被触发,当事件结束后,程序会继续执行。
在这一节里,Probe断点触发的事件是:
将PC机存储的数据文件中的一段数据加载到DSP的缓冲区中。
⑴在真实的系统中,read_signals函数用于读取A/D模块的数据并放到DSP缓冲区中。
在这里,代替A/D模块完成这个工作的是Probe断点。
当执行到函数read_signals时,Probe断点完成这个工作。
①在程序行read_signals(input);
上单击鼠标右键,选择“Togglebreakpoint”,设置软件断点。
②再在同一行上单击鼠标右键,选择“ToggleProbePoint”,设置Probe断点。
⑵执行以下操作:
此时,已经配置好了Probe断点和与之关联的事件。
进一步的结果在下面实验中显示。
8.图形功能简介:
下面我们使用CCS的图形功能检验上一节的结果。
首先进行下面设置操作:
-在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。
-按F12运行程序。
观察Input窗口的内容。
9.选择菜单File→workspace→saveworkspacsAs…,输入文件名SY.wks。
10.退出CCS。
5.实验结果
通过对工程文件“volume”的编译、执行后得到结果的图形显示如下:
6.总结
对上机实验结果进行分析、上机的心得体会及改进意见。
1.掌握用窗函数法设计FIR数字滤波器的原理和方法。
2.熟悉线性相位FIR数字滤波器特性。
3.了解各种窗函数对滤波器特性的影响。
1.有限冲激响应数字滤波器的基础理论(请参考相关书籍)。
2.模拟滤波器原理(巴特沃斯滤波器、切比雪夫滤波器、椭圆滤波器、贝塞尔滤波器)。
3.数字滤波器系数的确定方法。
4.根据要求设计低通FIR滤波器。
要求:
通带边缘频率10kHz,阻带边缘频率22kHz,阻带衰减75dB,采样频率50kHz。
设计:
-过渡带宽度=阻带边缘频率-通带边缘频率=22-10=12kHz
-采样频率:
f1=通带边缘频率+(过渡带宽度)/2=10000+12000/2=16kHz
Ω1=2πf1/fs=0.64π
-理想低通滤波器脉冲响应:
h1[n]=sin(nΩ1)/n/π=sin(0.64πn)/n/π
-根据要求,选择布莱克曼窗,窗函数长度为:
N=5.98fs/过渡带宽度=5.98*50/12=24.9
-选择N=25,窗函数为:
w[n]=0.42+0.5cos(2πn/24)+0.8cos(4πn/24)
-滤波器脉冲响应为:
h[n]=h1[n]w[n]|n|≤12
h[n]=0|n|>12
-根据上面计算,各式计算出h[n],然后将脉冲响应值移位为因果序列。
-完成的滤波器的差分方程为:
y[n]=-0.001x[n-2]-0.002x[n-3]-0.002x[n-4]+0.01x[n-5]-0.009x[n-6]-0.018x[n-7]-0.049x[n-8]-0.02x[n-9]+0.11x[n-10]+0.28x[n-11]+0.64x[n-12]+0.28x[n-13]-0.11x[n-14]-0.02x[n-15]+0.049x[n-16]-0.018x[n-17]-0.009x[n-18]+0.01x[n-19]-0.002x[n-20]-0.002x[n-21]+0.001x[n-22]
5.程序流程图:
PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio2.21软件。
1.实验准备:
-设置软件仿真模式;
-启动CCS。
2.打开工程,浏览程序:
工程目录为
C:
\ICETEK-VC5509-EDULab\Lab0501-FIR\Fir.pjt。
3.编译并下载程序。
4.打开观察窗口。
*选择菜单View->
Graph->
Time/Frequency…,进行如下设置:
在弹出的图形窗口中单击鼠标右键,选择“ClearDisplay”。
5.设置断点:
在有注释“breakpoint”的语句设置软件断点。
6.运行并观察结果:
⑴选择“Debug”菜单的“Animate”项,或按F12键运行程序。
⑵观察“Input”、“Output”窗口中时域图形;
观察滤波效果。
⑶鼠标右键单击“Input”和“Output”窗口,选择“Properties…”项,设置“DisplayType”为“FFTMagitude”,再单击“OK”按钮结束设置。
⑷观察“Input”、“Output”窗口中频域图形;
理解滤波效果。
7.退出CCS。
1.掌握设计IIR数字滤波器的原理和方法。
2.熟悉IIR数字滤波器特性。
3.了解IIR数字滤波器的设计方法。
1.无限冲激响应数字滤波器的基础理论。
4.根据要求设计低通IIR滤波器:
低通巴特沃斯滤波器在其通带边缘1kHz处的增益为-3dB,12kHz处的阻带衰减为30dB,采样频率25kHz。
-确定待求通带边缘频率fp1Hz、待求阻带边缘频率fs1Hz和待求阻带衰减-20logδsdB。
模拟边缘频率为:
fp1=1000Hz,fs1=12000Hz阻带边缘衰减为:
-20logδs=30dB
-用Ω=2πf/fs把由Hz表示的待求边缘频率转换成弧度表示的数字频率,得到Ωp1和Ωs1。
Ωp1=2πfp1/fs=2π1000/25000=0.08π弧度
Ωs1=2πfs1/fs=2π12000/25000=0.96π弧度
-计算预扭曲模拟频率以避免双线性变换带来的失真。
由w=2fstan(Ω/2)求得wp1和ws1,单位为弧度/秒。
wp1=2fstan(Ωp1/2)=6316.5弧度/秒
ws1=2fstan(Ωs1/2)=794727.2弧度/秒
-由已给定的阻带衰减-20logδs确定阻带边缘增益δs。
因为-20logδs=30,所以logδs=-30/20,δs=0.03162
-计算所需滤波器的阶数:
因此,一阶巴特沃斯滤波器就足以满足要求。
-一阶模拟巴特沃斯滤波器的传输函数为:
H(s)=wp1/(s+wp1)=6316.5/(s+6316.5)
由双线性变换定义s=2fs(z-1)/(z+1)得到数字滤波器的传输函数为:
因此,差分方程为:
y[n]=0.7757y[n-1]+0.1122x[n]+0.1122x[n-1]。
2.打开工程,浏览程序,工程目录为
\ICETEK-VC5509-EDULab\Lab0502-IIR\IIR.pjt。
4.打开观察窗口:
Time/Frequency…进行如下图所示设置。
5.清除显示:
在以上打开的窗口中单击鼠标右键,选择弹出式菜单中“ClearDisplay”功能。
6.设置断点:
在程序iir.c中有注释“breakpoint”的语句上设置软件断点。
7.运行并观察结果:
⑵观察“IIR”窗口中时域图形;
8.退出CCS。
试微调(±
0.0001)改变程序中fU的取值,观察步长因子μ在自适应算法中所起的作用。
1.掌握用窗函数法设计FFT快速傅里叶的原理和方法;
2.熟悉FFT快速傅里叶特性;
3.了解各种窗函数对快速傅里叶特性的影响。
1.FFT的原理和参数生成公式:
公式
(1)FFT运算公式
FFT并不是一种新的变换,它是离散傅立叶变换(DFT)的一种快速算法。
由于我们在计算DFT时一次复数乘法需用四次实数乘法和二次实数加法;
一次复数加法则需二次实数加法。
每运算一个X(k)需要4N次复数乘法及2N+2(N-1)=2(2N-1)次实数加法。
所以整个DFT运算总共需要4N^2次实数乘法和N*2(2N-1)=2N(2N-1)次实数加法。
如此一来,计算时乘法次数和加法次数都是和N^2成正比的,当N很大时,运算量是可观的,因而需要改进对DFT的算法减少运算速度。
根据傅立叶变换的对称性和周期性,我们可以将DFT运算中有些项合并。
我们先设序列长度为N=2^L,L为整数。
将N=2^L的序列x(n)(n=0,1,……,N-1),按N的奇偶分成两组,也就是说我们将一个N点的DFT分解成两个N/2点的DFT,他们又重新组合成一个如下式所表达的N点DFT:
一般来说,输入被假定为连续的。
当输入为纯粹的实数的时候,我们就可以利用左右对称的特性更好的计算DFT。
我们称这样的RFFT优化算法是包装算法:
首先2N点实数的连续输入称为“进包”。
其次N点的FFT被连续运行。
最后作为结果产生的N点的合成输出是“打开”成为最初的与DFT相符合的2N点输入。
使用这一思想,我们可以划分FFT的大小,它有一半花费在包装输入O(N)的操作和打开输出上。
这样的RFFT算法和一般的FFT算法同样迅速,计算速度几乎都达到了两次DFT的连续输入。
下列一部分将描述更多的在TMS320C55x上算法和运行的细节。
PC兼容机一台,操作系统为Windows2000(或Windows98,WindowsXP,以下默认为Windows2000),安装CodeComposerStudio2.0软件。
C:
\IC