基于DSP的卷积算法的实现_第1页
基于DSP的卷积算法的实现_第2页
基于DSP的卷积算法的实现_第3页
基于DSP的卷积算法的实现_第4页
基于DSP的卷积算法的实现_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、dsp课程考核论文 课程名称: dsp原理与应用教程 题 目:基于dsp的卷积算法的实现 专 业: 电子信息工程 班 级: 目录摘 要.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)processi

4、ng1(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 *output2, i

5、nt *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 buffer波形截取m

7、点,然后把生成的波形上的各点的值存 入以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 = ming

8、ain;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 processing1(int

9、 *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_buffer0; in

10、t *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 data to a

11、 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) int m=s

13、k-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); return(tru

14、e); 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=input1z*

15、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 */ return;

16、课程设计步骤及过程 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”、“graph

18、”、“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”按钮; -在“brea

19、k/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-convolve目录下的

20、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”窗口中单击“确定”,完成设置。7运行程序,观察结果 -按f5键运行程序,待程序停留在软件断点;观察刚才打开的三个图形窗口,其中显示的是输入和输出的时域波形; -观察频域波形:在各图形窗口中单击鼠标右键,选择“properties”,在“graph property dialog”中的第1项“display type”项中选择“fft magnitude”,单击“ok”完成;这 时图形窗口中显示波形的频域图。(也可再打开显示频域图的窗口) -验算结果:在各频域窗口中的波形上单击鼠标左键,将光标停到统一的位置(通过观察窗口状态栏中的第1个浮点数表示其坐

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论