DSP技术与应用基础实验报告模板终极版Word文件下载.docx

上传人:b****6 文档编号:16166220 上传时间:2022-11-21 格式:DOCX 页数:24 大小:1,015.17KB
下载 相关 举报
DSP技术与应用基础实验报告模板终极版Word文件下载.docx_第1页
第1页 / 共24页
DSP技术与应用基础实验报告模板终极版Word文件下载.docx_第2页
第2页 / 共24页
DSP技术与应用基础实验报告模板终极版Word文件下载.docx_第3页
第3页 / 共24页
DSP技术与应用基础实验报告模板终极版Word文件下载.docx_第4页
第4页 / 共24页
DSP技术与应用基础实验报告模板终极版Word文件下载.docx_第5页
第5页 / 共24页
点击查看更多>>
下载资源
资源描述

DSP技术与应用基础实验报告模板终极版Word文件下载.docx

《DSP技术与应用基础实验报告模板终极版Word文件下载.docx》由会员分享,可在线阅读,更多相关《DSP技术与应用基础实验报告模板终极版Word文件下载.docx(24页珍藏版)》请在冰豆网上搜索。

DSP技术与应用基础实验报告模板终极版Word文件下载.docx

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

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

当前位置:首页 > 小学教育 > 语文

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

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