卷积算法的实现DSP实习报告.docx
《卷积算法的实现DSP实习报告.docx》由会员分享,可在线阅读,更多相关《卷积算法的实现DSP实习报告.docx(13页珍藏版)》请在冰豆网上搜索。
![卷积算法的实现DSP实习报告.docx](https://file1.bdocx.com/fileroot1/2023-1/28/d65c94ef-2602-4435-afbb-737735469181/d65c94ef-2602-4435-afbb-7377354691811.gif)
卷积算法的实现DSP实习报告
摘要.......................................................................3
绪论.......................................................................3
课程设计方案及原理.............................................3
课程设计步骤及过程.............................................7
总结.......................................................................14
参考文献.................................................................14
基于DSP的卷积算法的实现
摘要:
卷积和(简称卷积)是信号处理中常用的算法之一。
数字卷积运算通常采用两种方法:
线性卷积和圆卷积。
为了能使卷积运算在C54x系列DSP上的实现方法,首先要对数字卷积的基本概念作深入了解。
使大家从根本上掌握卷积的实现方法,我们以模拟信号的卷积和数字信号的卷积为主,以及他们在C54x系列DSP上的实现方法。
绪论:
在通信和信号处理中,常用的运算,如卷积,自相关,滤波和快速傅里叶交换等。
都具有较高的密度性和复杂性,而这些运算中所用到的最基本的是乘法-累加运算。
C54x的硬件及软件设计使其具有快速的进行乘法-累加运算功能,并具有丰富的软件资源为这些算法的实施提供有力的条件。
因此,这种芯片在通信及信号处理等领域得到广泛的应用。
本节主要介绍卷积算法在DSP原理中的应用。
课程设计方案及原理
一、实验目的
1.掌握用窗函数法设计卷积算法的原理和方法;
2.熟悉卷积算法特性;
3.了解各种窗函数对卷积算法的影响。
二、实验设备
计算机,CodeComposerStudio2.0for’C5000系统。
三、实验原理
1.卷积的基本原理和公式
卷集和:
对离散系统“卷积和”也是求线性时不变系统输出响应(零状态响应)的主要方法。
卷积和的运算在图形表示上可分为四步:
Y(n)=∑X(m)h(n−m)=X(n)*h(n)
m=−∞
1)翻褶先在哑变量坐标M上作出x(m)和h(m),将m=0的垂直轴为轴翻褶成h(-m)。
2)移位将h(-m)移位n,即得h(n-m)。
当n为正整数时,右移n位。
当n为负整数时,左移n位。
3)相乘再将h(n-m)和x(m)的相同m值的对应点值相乘。
4)相加把以上所有对应点的乘积叠加起来,即得y(n)值。
依上法,取n=…,-2,-1,0,1,2,3,…各值,即可得全部y(n)值。
2.程序流程图
3.程序的自编函数及其功能
(1)processing1(int*input2,int*output2)
调用形式:
processing1(int*input2,int*output2)
参数解释:
intput2、output2为两个整型指针数组。
返回值解释:
返回了一个“TREN”,让主函数的while循环保持连续。
功能说明:
对输入的input2buffer波形进行截取m点,再以零点的Y轴为对称轴进行翻褶,把生成的波形上的各点的值存入以OUTPUT2指针开始的一段地址空间中。
(2)processing2(int*output2,int*output3)
调用形式:
processing2(int*output2,int*output3)
参数解释:
output2、output3为两个整型指针数组。
返回值解释:
返回了一个“TREN”,让主函数的while循环保持连续。
功能说明:
对输出的output2buffer波形进行作n点移位,然后把生成的波形上的各点
的值存入以OUTPUT3指针开始的一段地址空间中。
(3)processing3(int*input1,int*output2,int*output4)
调用形式:
processing3(int*input1,int*output2,int*output4)
参数解释:
output2、output4、input1为三个整型指针数组。
返回值解释:
返回了一个“TREN”,让主函数的while循环保持连续。
功能说明:
对输入的input2buffer波形和输入的input1buffer作卷积和运算,然后把
生成的波形上的各点的值存入以OUTPUT4指针开始的一段地址空间中。
(4)processing4(int*input2,int*output1)
调用形式:
processing4(int*input2,int*output1)
参数解释:
output1、input2为两个整型指针数组。
返回值解释:
返回了一个“TREN”,让主函数的while循环保持连续。
功能说明:
对输入的input2buffer波形截取m点,然后把生成的波形上的各点的值存
入以OUTPUT1指针开始的一段地址空间中。
源程序如下:
#include
#include"volume.h"
/*Globaldeclarations*/
intin1_buffer[BUFSIZE];//BUFSIZE=100
intin2_buffer[BUFSIZE];/*处理数据缓冲器*/
intout1_buffer[BUFSIZE];
intout2_buffer[BUFSIZE];
intout3_buffer[BUFSIZE];
intout4_buffer[BUFSIZE*2];
intsize=BUFSIZE;
intain=MINGAIN;//ain=1
intzhy=0;
intsk=64;/*sk代表所开的bufsize的大小.输入文件sine.dat为32点,sine11.dat,
sin22.dat,sin33.dat,sin44.dat为64点的输入波形.*/
/*Functions*/
staticintstep1(int*output1,int*output2);
staticintstep2(int*output2,int*output3);
staticintstep3(int*input1,int*output2,int*output4);
staticintstep4(int*input2,int*output1);
staticvoiddataIO1(void);
staticvoiddataIO2(void);
/*main
voidmain()
{
int*input1=&in1_buffer[0];
int*input2=&in2_buffer[0];
int*output1=&out1_buffer[0];
int*output2=&out2_buffer[0];
int*output3=&out3_buffer[0];
int*output4=&out4_buffer[0];
puts("volumeexamplestarted\n");
/*loopforever*/
while(TRUE)
{
/*读输入数据使用一个probe-point使与一个连接主机文件。
写输出数据一个图形连通过一个probe-point。
dataIO1();//breakpoint
dataIO2();//breakpoint
step4(input2,output1);
step1(output1,output2);
step2(output2,output3);
step3(input1,output2,output4);
课程设计步骤及过程
1.实验准备
(1)连接设备
①关闭计算机和实验箱电源。
②如使用PP型仿真器则用附带的并口连线连接计算机并口和仿真器相应接口。
③检查ICETEK-VC5416-A板上DIP开关MP/MC的位置,应设置在“OFF”位置(靠近
复位按钮),即设置DSP工作在MP方式。
④关闭实验箱上三个开关。
(2)开启设备
①打开计算机电源。
②打开实验箱电源开关,
③如使用USB型仿真器用附带的USB电缆连接计算机和仿真器相应接口,注意仿真器上
两个指示灯均亮。
(3)设置CodeComposerStudio为Simulator方式:
参见“CodeComposerStudio入门实验”之四.2。
(4)启动CodeComposerStudio2.0
2.打开工程,浏览程序,工程目录为C:
\ICETEK-VC5416-EDULab\Lab20-Convolve3.编译并下载程序
4.设置输入数据文件
请在c程序中的如下两行上设置probepoint:
dataIO1();1
dataIO2();
设置方法是把光标指示到这一行上,按鼠标右键,从显示的菜单上分别选择probepoint。
在c程序的“dataIO1();”行上设置breakpoint。
5.打开观察窗口
-选择菜单“View”、“Graph”、“Time/Frequency…”进行如下设置:
-选择菜单“View”、“Graph”、“Time/Frequency…”进行如下设置:
-在弹出的三个图形窗口中单击鼠标右键,选择“ClearDisplay”。
6.设置波形输入文件
-选择“File”菜单中的“FileI/O…”,打开“FileI/O”窗口;单击“AddFile”按钮,在“FileInput”窗口中选择C:
\ICETEK-VC5416-EDULab\Lab20-Convolve目录下的sin.dat文件,单击“打开”按钮;在“Address”项中输入inp1_buffer,在“Length”项中输入32,在“WarpAround”项前加上选择标记,单击“AddProbePoint”按钮;
-在“Break/Probe/ProfilePoints”窗口中单击“ProbePoint”列表中的“Convolve.cline52NoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列表中选择列表末尾的“FILEIN:
C:
\..\SIN.DAT”,单击“Replace”按钮,单击“确定”按钮。
-在“FileI/O”窗口中单击“确定”,完成设置。
-选择“File”菜单中的“FileI/O…”,打开“FileI/O”窗口;单击“AddFile”按钮,在“FileInput”窗口中选择C:
\ICETEK-VC5416-EDULab\Lab20-Convolve目录下的sin.dat文件,单击“打开”按钮;在“Address”项中输入inp2_buffer,在“Length”项中输入32,在“WarpAround”项前加上选择标记,单击“AddProbePoint”按钮;
-在“Break/Probe/ProfilePoints”窗口中单击“ProbePoint”列表中的“Convolve.cline53NoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列表中选择列表末尾的“FILEIN:
C:
\..\SIN.DAT”,单击“Replace”按钮,单击“确定”按钮。
-在“FileI/O”窗口中单击“确定”,完成设置。
7.运行程序,观察结果
-按F5键运行程序,待程序停留在软件断点;观察刚才打开的三个图形窗口,其中显示的是输入和输出的时域波形;
-观察频域波形:
在各图形窗口中单击鼠标右键,选择“Properties…”,在“GraphProperty
Dialog”中的第1项“DisplayType”项中选择“FFTMagnitude”,单击“OK”完成;这时图形窗口中显示波形的频域图。
(也可再打开显示频域图的窗口)
-验算结果:
在各频域窗口中的波形上单击鼠标左键,将光标停到统一的位置(通过观察窗口状态栏中的第1个浮点数表示其坐标值),读取状态栏中的第2个浮点数,为卷积计算的输入和输出结果,请验算:
Output≈Input1*Input2。
8.将输入波形文件改成其他波形:
选择“File”、“FileI/O…”,将2个文件删除,将第1个文件换成SIN11.DAT,讲第2个文件换成SIN22.DAT;输入“Length”改为64,其他不变。
再按F5运行,停止后观察波形。
9.将第2个输入波形改成SIN33.DAT,观察卷积运算后的波形。
10.将第2个输入波形改成SIN44.DAT,观察卷积运算后的波形。
.其波形如图
AT,观察卷积运算后的波形。
*图表分析
输入图形频域图形采用通过频域采样取值比较,卷积后的结果与标准值只有很的误。
所以说卷积实验结果正确,卷积程序正确无误。
总结:
在本次DSP课程设计中,,从查阅资料,到编写程序再到软件仿真,在这个过程中充分的利用了所学的知识,并在老师的指导下,按时按质完成了本次课程设计。
通过本次课程设计充分的锻炼了自己的动手能力,并把课堂上所学的知识运用到了实际中,达到了预期的效果,也为以后工作打下了一个好的前提。
参考文献:
1、DSP技术及应用.北京大学出版社.董胜刘柏生编著
2、DSP实用技术.西安电子科技大学出版社.苏涛.卢光跃等编著
3、数字信号处理.西安电子科技大学出版社.高西全.丁玉美编著
4、《TMS320C55XDSP原理及应用》汪春梅孙洪波编著
5、TMS320C55xDSPReferenceSet,Volume1:
CPUTICoperation
6、TMS320C55xCodeComposerStudioTutorial
7、TMS320C55xDSPReferenceSet,Volume3:
AlgebraicInstructionSet
8、TMS320C55xOptimizingCCompilerUser’sGuide