DSP原理与应用教程课程设计基于DSP的卷积算法的实现.doc

上传人:laozhun 文档编号:2392445 上传时间:2023-02-17 格式:DOC 页数:17 大小:819.50KB
返回 下载 相关 举报
DSP原理与应用教程课程设计基于DSP的卷积算法的实现.doc_第1页
第1页 / 共17页
DSP原理与应用教程课程设计基于DSP的卷积算法的实现.doc_第2页
第2页 / 共17页
DSP原理与应用教程课程设计基于DSP的卷积算法的实现.doc_第3页
第3页 / 共17页
DSP原理与应用教程课程设计基于DSP的卷积算法的实现.doc_第4页
第4页 / 共17页
DSP原理与应用教程课程设计基于DSP的卷积算法的实现.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《DSP原理与应用教程课程设计基于DSP的卷积算法的实现.doc》由会员分享,可在线阅读,更多相关《DSP原理与应用教程课程设计基于DSP的卷积算法的实现.doc(17页珍藏版)》请在三一办公上搜索。

1、DSP课程考核论文 课程名称: DSP原理与应用教程 题 目:基于DSP的卷积算法的实现 专 业: 电子信息工程 班 级: 08级1班 目录摘 要.3绪 论.3课程设计方案及原理.3课程设计步骤及过程.10总 结.17参考文献.17基于DSP的卷积算法的实现摘要:卷积和(简称卷积)是信号处理中常用的算法之一。数字卷积运算通常采用两种方法:线性卷积和圆卷积。为了能使卷积运算在C54x系列DSP上的实现方法,首先要对数字卷积的基本概念作深入了解。使大家从根本上掌握卷积的实现方法,我们以模拟信号的卷积和数字信号的卷积为主,以及他们在C54x系列DSP上的实现方法。绪论:在通信和信号处理中,常用的运算

2、,如卷积,自相关,滤波和快速傅里叶交换等。都具有较高的密度性和复杂性,而这些运算中所用到的最基本的是乘法-累加运算。C54x的硬件及软件设计使其具有快速的进行乘法-累加运算功能,并具有丰富的软件资源为这些算法的实施提供有力的条件。因此,这种芯片在通信及信号处理等领域得到广泛的应用。本节主要介绍卷积算法在DSP原理中的应用。课程设计方案及原理一、实验目的1掌握用窗函数法设计卷积算法的原理和方法;2熟悉卷积算法特性;3了解各种窗函数对卷积算法的影响。二、实验设备计算机,Code Composer Studio 2.0 for C5000系统。三、实验原理1卷积的基本原理和公式 卷集和:对离散系统“

3、卷积和”也是求线性时不变系统输出响应(零状态响应)的主要方法。 卷积和的运算在图形表示上可分为四步: Y(n)= X(m)h(nm)=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)pr

4、ocessing1(int *input2, int *output2) 调用形式:processing1(int *input2, int *output2) 参数解释:intput2、output2为两个整型指针数组。 返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。 功能说明:对输入的input2 buffer波形进行截取m点,再以零点的Y轴为对称轴进行翻褶,把生成的波形上的各点的值存入以OUTPUT2指针开始的一段地址空间中。 (2)processing2(int *output2, int *output3) 调用形式:processing2(int *outp

5、ut2, int *output3) 参数解释:output2、output3为两个整型指针数组。 返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。 功能说明:对输出的output2 buffer波形进行作n点移位,然后把生成的波形上的各点 的值存入以OUTPUT3指针开始的一段地址空间中。 (3)processing3(int *input1,int *output2,int *output4) 调用形式:processing3(int *input1,int *output2,int *output4) 参数解释:output2、output4、input1为三个整型

6、指针数组。 返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。 功能说明:对输入的input2 buffer波形和输入的input1 buffer作卷积和运算,然后把 生成的波形上的各点的值存入以OUTPUT4指针开始的一段地址空间中。 (4)processing4(int *input2,int *output1) 调用形式:processing4(int *input2,int *output1) 参数解释:output1、input2为两个整型指针数组。 返回值解释:返回了一个“TREN”,让主函数的while循环保持连续。 功能说明:对输入的input2 buffe

7、r波形截取m点,然后把生成的波形上的各点的值存 入以OUTPUT1指针开始的一段地址空间中。源程序如下:#include #include volume.h/* Global declarations */int inp1_bufferBUFSIZE;int inp2_bufferBUFSIZE; /* processing data buffers */int out1_bufferBUFSIZE;int out2_bufferBUFSIZE;int out3_bufferBUFSIZE;int out4_bufferBUFSIZE*2;int size = BUFSIZE;int ain

8、= MINGAIN;int zhy=0;int sk=64; /*sk代表所开的bufsize的大小,需修改它.输入文件sine.dat为32点,sine11.dat, sin22.dat,sin33.dat,sin44.dat为64点的输入波形.*/ /* volume control variable */unsigned int processingload = 1; /* processing routine /load value */* Functions */extern void load(unsigned int loadValue);static int processin

9、g1(int *output1, int *output2);static int processing2(int *output2, int *output3); static int processing3(int *input1,int *output2,int *output4);static int processing4(int *input2, int *output1);static void dataIO1(void);static void dataIO2(void);/* * = main = */void main() int *input1 = &inp1_buffe

10、r0; int *input2 = &inp2_buffer0; int *output1 = &out1_buffer0; int *output2 = &out2_buffer0; int *output3 = &out3_buffer0; int *output4 = &out4_buffer0; puts(volume example startedn); /* loop forever */ while(TRUE) /* * Read input data using a probe-point connected to a host file. * Write output dat

11、a to a graph connected through a probe-point. */ dataIO1(); dataIO2(); /* apply gain */ processing4(input2,output1); processing1(output1, output2); processing2(output2, output3); processing3(input1,output2,output4) ; /* * = processing = * * FUNCTION: apply signal processing transform to input signal

12、. * * PARAMETERS: address of input and output buffers. * * RETURN VALUE: TRUE. */static int processing4(int *input2,int *output1) int m=sk; for(;m=0;m-) *output1+ = *input2+ * ain; for(;(size-m)0;m+) output1m=0; /load(processingload); return(TRUE); static int processing1(int *output1,int *output2) i

13、nt m=sk-1; for(;m0;m-) *output2+ = *output1+ * ain; /* additional processing /load */ /load(processingload); return(TRUE);static int processing2(int *output2, int *output3) int n=zhy; size=BUFSIZE; for(;(size-n)0;n+) *output3+ = output2n; /* for (;n0;n-) *output3+ = 0; */ /load(processingload); retu

14、rn(TRUE); static int processing3(int *input1,int *output2,int *output4) int m=sk; int y=zhy; int z,x,w,i,f,g; for(;(m-y)0;) i=y; x=0; z=0; f=y; for(;i=0;i-) g=input1z*output2f; x=x+g; z+; f-; *output4+ = x; y+; m=sk; y=sk-1; w=m-zhy-1; for(;m0;m-) y-; i=y; z=sk-1; x=0; f=sk-y; for(;i0;i-,z-,f+) g=in

15、put1z*output2f; x=x+g; out4_bufferw=x; w+; /load(processingload); return(TRUE); /* * = dataIO = * * FUNCTION: read input signal and write processed output signal. * * PARAMETERS: none. * * RETURN VALUE: none. */static void dataIO1() /* do data I/O */ return;static void dataIO2() /* do data I/O */ re

16、turn;课程设计步骤及过程 1实验准备 (1)连接设备 关闭计算机和实验箱电源。 如使用PP型仿真器则用附带的并口连线连接计算机并口和仿真器相应接口。 检查ICETEK-VC5416-A板上DIP开关MP/MC的位置,应设置在“OFF”位置(靠近 复位按钮),即设置DSP工作在MP方式。 关闭实验箱上三个开关。 (2)开启设备 打开计算机电源。 打开实验箱电源开关, 如使用USB型仿真器用附带的USB电缆连接计算机和仿真器相应接口,注意仿真器上 两个指示灯均亮。 (3)设置Code Composer Studio为Simulator方式: 参见“Code Composer Studio入门实

17、验”之四.2。 (4)启动Code Composer Studio 2.02打开工程,浏览程序,工程目录为C:ICETEK-VC5416-EDULabLab20-Convolve3编译并下载程序 4设置输入数据文件 请在c程序中的如下两行上设置probe point:dataIO1();1 dataIO2(); 设置方法是把光标指示到这一行上,按鼠标右键,从显示的菜单上分别选择probe point。 在c程序的“dataIO1();”行上设置break point。5打开观察窗口-选择菜单“View”、“Graph”、“Time/Frequency”进行如下设置: -选择菜单“View”、“

18、Graph”、“Time/Frequency”进行如下设置: -在弹出的三个图形窗口中单击鼠标右键,选择“Clear Display”。6. 设置波形输入文件 -选择“File”菜单中的“File I/O”,打开“File I/O”窗口;单击“Add File”按钮,在“FileInput”窗口中选择C:ICETEK-VC5416-EDULabLab20-Convolve目录下的sin.dat文件,单击“打开”按钮;在“Address”项中输入inp1_buffer,在“Length”项中输入32,在“Warp Around”项前加上选择标记,单击“Add Probe Point”按钮; -在

19、“Break/Probe/Profile Points”窗口中单击“Probe Point”列表中的“Convolve.c line52 NoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列表中选择列表末尾的“FILE IN:C:.SIN.DAT”,单击“Replace”按钮,单击“确定”按钮。 -在“File I/O”窗口中单击“确定”,完成设置。 -选择“File”菜单中的“File I/O”,打开“File I/O”窗口;单击“Add File”按钮,在“FileInput”窗口中选择C:ICETEK-VC5416-EDULabLab20-Convolv

20、e目录下的sin.dat文件,单击“打开”按钮;在“Address”项中输入inp2_buffer,在“Length”项中输入32,在“Warp Around”项前加上选择标记,单击“Add Probe Point”按钮; -在“Break/Probe/Profile Points”窗口中单击“Probe Point”列表中的“Convolve.c line53 NoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列表中选择列表末尾的“FILE IN:C:.SIN.DAT”,单击“Replace”按钮,单击“确定”按钮。 -在“File I/O”窗口中单击“确定

21、”,完成设置。7运行程序,观察结果 -按F5键运行程序,待程序停留在软件断点;观察刚才打开的三个图形窗口,其中显示的是输入和输出的时域波形; -观察频域波形:在各图形窗口中单击鼠标右键,选择“Properties”,在“Graph Property Dialog”中的第1项“Display Type”项中选择“FFT Magnitude”,单击“OK”完成;这 时图形窗口中显示波形的频域图。(也可再打开显示频域图的窗口) -验算结果:在各频域窗口中的波形上单击鼠标左键,将光标停到统一的位置(通过观察窗口状态栏中的第1个浮点数表示其坐标值),读取状态栏中的第2个浮点数,为卷积计算的输入和输出结果

22、,请验算:OutputInput1*Input2。 8将输入波形文件改成其他波形:选择“File”、“File I/O”,将2个文件删除,将第1个文件换成SIN11.DAT,讲第2个文件换成SIN22.DAT;输入“Length”改为64,其他不变。再按F5运行,停止后观察波形。9将第2个输入波形改成SIN33.DAT,观察卷积运算后的波形。 10将第2个输入波形改成SIN44.DAT,观察卷积运算后的波形。.其波形如图AT,观察卷积运算后的波形。*图表分析输入图形频域图形采用通过频域采样取值比较,卷积后的结果与标准值只有很的误。所以说卷积实验结果正确,卷积程序正确无误。总 结:在本次DSP课

23、程设计中我们以四人一组,在课前我们由组长分工,每人分别做着不同的工作,确保了我们本次课程设计的成功。在本次设计中,我们从查阅资料,到编写程序再到软件仿真,在这个过程中我们充分的利用了所学的知识,并在老师的指导下,按时按质完成了本次课程设计。通过本次课程设计我们充分的锻炼了自己的动手能力,并把课堂上所学的知识运用到了实际中,达到了我们预期的效果,也为我们以后工作打下了一个好的前提。参考文献: 郭开轩.2007 数字信号处理器(DSP)及其芯片结构特点 胡建凌 徐盛 2003 数字信号处理的应用和设计 上海 上海交通大学出版社 王念旭 2001 DSP基础与应用系统设计 北京 北京航空航天大学出版社 张雄伟 陈亮 徐光辉 2003 DSP芯片的原理及开发应用 电子出版社 周霖 2004 信号处理技术应用 北京 国防工业出版社

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

当前位置:首页 > 建筑/施工/环境 > 项目建议


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号