基于DSP的卷积算法的实现.docx

上传人:b****6 文档编号:15855554 上传时间:2023-07-08 格式:DOCX 页数:17 大小:737.84KB
下载 相关 举报
基于DSP的卷积算法的实现.docx_第1页
第1页 / 共17页
基于DSP的卷积算法的实现.docx_第2页
第2页 / 共17页
基于DSP的卷积算法的实现.docx_第3页
第3页 / 共17页
基于DSP的卷积算法的实现.docx_第4页
第4页 / 共17页
基于DSP的卷积算法的实现.docx_第5页
第5页 / 共17页
基于DSP的卷积算法的实现.docx_第6页
第6页 / 共17页
基于DSP的卷积算法的实现.docx_第7页
第7页 / 共17页
基于DSP的卷积算法的实现.docx_第8页
第8页 / 共17页
基于DSP的卷积算法的实现.docx_第9页
第9页 / 共17页
基于DSP的卷积算法的实现.docx_第10页
第10页 / 共17页
基于DSP的卷积算法的实现.docx_第11页
第11页 / 共17页
基于DSP的卷积算法的实现.docx_第12页
第12页 / 共17页
基于DSP的卷积算法的实现.docx_第13页
第13页 / 共17页
基于DSP的卷积算法的实现.docx_第14页
第14页 / 共17页
基于DSP的卷积算法的实现.docx_第15页
第15页 / 共17页
基于DSP的卷积算法的实现.docx_第16页
第16页 / 共17页
基于DSP的卷积算法的实现.docx_第17页
第17页 / 共17页
亲,该文档总共17页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

基于DSP的卷积算法的实现.docx

《基于DSP的卷积算法的实现.docx》由会员分享,可在线阅读,更多相关《基于DSP的卷积算法的实现.docx(17页珍藏版)》请在冰点文库上搜索。

基于DSP的卷积算法的实现.docx

基于DSP的卷积算法的实现

 

DSP课程考核论文

课程名称:

DSP原理与应用教程

题目:

基于DSP的卷积算法的实现

专业:

班级:

姓名:

学号:

 

目录

摘要.......................................................................3

绪论.......................................................................3

课程设计方案及原理.............................................3

课程设计步骤及过程.............................................10

总结.......................................................................16

参考文献.................................................................16

 

基于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*/

intinp1_buffer[BUFSIZE];

intinp2_buffer[BUFSIZE];/*processingdatabuffers*/

intout1_buffer[BUFSIZE];

intout2_buffer[BUFSIZE];

intout3_buffer[BUFSIZE];

intout4_buffer[BUFSIZE*2];

intsize=BUFSIZE;

intain=MINGAIN;

intzhy=0;

intsk=64;/*sk代表所开的bufsize的大小,需修改它.输入文件sine.dat为32点,sine11.dat,

sin22.dat,sin33.dat,sin44.dat为64点的输入波形.*/

/*volumecontrolvariable*/

unsignedintprocessingload=1;/*processingroutine//loadvalue*/

 

/*Functions*/

externvoidload(unsignedintloadValue);

staticintprocessing1(int*output1,int*output2);

staticintprocessing2(int*output2,int*output3);

staticintprocessing3(int*input1,int*output2,int*output4);

staticintprocessing4(int*input2,int*output1);

staticvoiddataIO1(void);

staticvoiddataIO2(void);

/*

*========main========

*/

voidmain()

{

int*input1=&inp1_buffer[0];

int*input2=&inp2_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)

{

/*

*Readinputdatausingaprobe-pointconnectedtoahostfile.

*Writeoutputdatatoagraphconnectedthroughaprobe-point.

*/

dataIO1();

dataIO2();

/*applygain*/

processing4(input2,output1);

processing1(output1,output2);

processing2(output2,output3);

processing3(input1,output2,output4);

}

}

/*

*========processing========

*

*FUNCTION:

applysignalprocessingtransformtoinputsignal.

*

*PARAMETERS:

addressofinputandoutputbuffers.

*

*RETURNVALUE:

TRUE.

*/

staticintprocessing4(int*input2,int*output1)

{intm=sk;

for(;m>=0;m--)

{

*output1++=*input2++*ain;

}

for(;(size-m)>0;m++)

{output1[m]=0;

}

////load(processingload);

return(TRUE);

}

staticintprocessing1(int*output1,int*output2)

{

intm=sk-1;

for(;m>0;m--)

{

*output2++=*output1++*ain;

}

/*additionalprocessing//load*/

//load(processingload);

return(TRUE);

}

staticintprocessing2(int*output2,int*output3)

{intn=zhy;

size=BUFSIZE;

for(;(size-n)>0;n++)

{*output3++=output2[n];

}

/*for(;n>0;n--)

{*output3++=0;

}*/

//load(processingload);

return(TRUE);

}

staticintprocessing3(int*input1,int*output2,int*output4)

{intm=sk;

inty=zhy;

intz,x,w,i,f,g;

for(;(m-y)>0;)

{i=y;

x=0;

z=0;

f=y;

for(;i>=0;i--)

{g=input1[z]*output2[f];

x=x+g;

z++;

f--;

}

*output4++=x;

y++;

}

m=sk;

y=sk-1;

w=m-zhy-1;

for(;m>0;m--)

{

y--;

i=y;

z=sk-1;

x=0;

f=sk-y;

for(;i>0;i--,z--,f++)

{g=input1[z]*output2[f];

x=x+g;

}

out4_buffer[w]=x;

w++;

}

//load(processingload);

return(TRUE);

}

/*

*========dataIO========

*

*FUNCTION:

readinputsignalandwriteprocessedoutputsignal.

*

*PARAMETERS:

none.

*

*RETURNVALUE:

none.

*/

staticvoiddataIO1()

{

/*dodataI/O*/

return;

}

staticvoiddataIO2()

{

/*dodataI/O*/

return;

}

 

课程设计步骤及过程

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课程设计中我们以四人一组,在课前我们由组长分工,每人分别做着不同的工作,确保了我们本次课程设计的成功。

在本次设计中,我们从查阅资料,到编写程序再到软件仿真,在这个过程中我们充分的利用了所学的知识,并在老师的指导下,按时按质完成了本次课程设计。

通过本次课程设计我们充分的锻炼了自己的动手能力,并把课堂上所学的知识运用到了实际中,达到了我们预期的效果,也为我们以后工作打下了一个好的前提。

 

参考文献:

郭开轩.2007数字信号处理器(DSP)及其芯片结构特点

胡建凌徐盛2003数字信号处理的应用和设计上海上海交通大学出版社

王念旭2001DSP基础与应用系统设计北京北京航空航天大学出版社

张雄伟陈亮徐光辉2003DSP芯片的原理及开发应用电子出版社

周霖2004信号处理技术应用北京国防工业出版社

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

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2