基于DSP的卷积算法的实现

上传人:206****923 文档编号:42440730 上传时间:2018-06-02 格式:DOC 页数:18 大小:835.50KB
返回 下载 相关 举报
基于DSP的卷积算法的实现_第1页
第1页 / 共18页
基于DSP的卷积算法的实现_第2页
第2页 / 共18页
基于DSP的卷积算法的实现_第3页
第3页 / 共18页
基于DSP的卷积算法的实现_第4页
第4页 / 共18页
基于DSP的卷积算法的实现_第5页
第5页 / 共18页
点击查看更多>>
资源描述

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

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

2、大家从根本上掌握卷积的实现方法,我们以模拟信号的卷积和数字信号的卷积为主,以及他们在 C54x系列 DSP 上的实现方法。绪论绪论:在通信和信号处理中,常用的运算,如卷积,自相关,滤波和快速傅里叶交换等。都具有较高的密度性和复杂性,而这些运算中所用到的最基本的是乘法-累加运算。C54x 的硬件及软件设计使其具有快速的进行乘法-累加运算功能,并具有丰富的软件资源为这些算法的实施提供有力的条件。因此,这种芯片在通信及信号处理等领域得到广泛的应用。本节主要介绍卷积算法在 DSP原理中的应用。课程设计方案及原理课程设计方案及原理一、实验目的1掌握用窗函数法设计卷积算法的原理和方法;2熟悉卷积算法特性;

3、3了解各种窗函数对卷积算法的影响。二、实验设备计算机,Code Composer Studio 2.0 for C5000 系统。三、实验原理1卷积的基本原理和公式卷集和:对离散系统“卷积和”也是求线性时不变系统输出响应(零状态响应)的主要方法。卷积和的运算在图形表示上可分为四步:Y(n)= X(m)h(nm)=X(n)*h(n)- 4 -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)

4、和 x(m)的相同 m 值的对应点值相乘。4)相加 把以上所有对应点的乘积叠加起来,即得 y(n)值。依上法,取 n=,-2,-1,0,1,2,3,各值,即可得全部 y(n)值。2.程序流程图3程序的自编函数及其功能- 5 -(1)processing1(int *input2, int *output2)调用形式:processing1(int *input2, int *output2)参数解释:intput2、output2 为两个整型指针数组。返回值解释:返回了一个“TREN” ,让主函数的 while 循环保持连续。功能说明:对输入的 input2 buffer 波形进行截取 m 点

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

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

7、1)调用形式:processing4(int *input2,int *output1)参数解释:output1、input2 为两个整型指针数组。返回值解释:返回了一个“TREN” ,让主函数的 while 循环保持连续。功能说明:对输入的 input2 buffer 波形截取 m 点,然后把生成的波形上的各点的值存入以 OUTPUT1 指针开始的一段地址空间中。源程序如下:#include - 6 -#include “volume.h“/* Global declarations */ int inp1_bufferBUFSIZE; int inp2_bufferBUFSIZE; /*

8、processing data buffers */ int out1_bufferBUFSIZE; int out2_bufferBUFSIZE; int out3_bufferBUFSIZE; int out4_bufferBUFSIZE*2; int size = BUFSIZE; int ain = MINGAIN; int zhy=0; int sk=64; /*sk 代表所开的 bufsize 的大小,需修改它.输入文件 sine.dat 为 32 点,sine11.dat,sin22.dat,sin33.dat,sin44.dat 为 64 点的输入波形.*/* volume c

9、ontrol variable */ unsigned int processingload = 1; /* processing routine /load value */* Functions */ extern void load(unsigned int loadValue);static int processing1(int *output1, int *output2); static int processing2(int *output2, int *output3); static int processing3(int *input1,int *output2,int

10、*output4); static int processing4(int *input2, int *output1); static void dataIO1(void); static void dataIO2(void);/* = main =*/ void main() int *input1 = int *input2 = int *output1 = int *output2 = int *output3 = int *output4 = puts(“volume example startedn“);/* loop forever */- 7 -while(TRUE) /* *

11、 Read input data using a probe-point connected to a host file. * Write output data 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) ; /* = pro

12、cessing =* FUNCTION: apply signal processing transform to input signal.* 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

13、(TRUE);static int processing1(int *output1,int *output2) int m=sk-1; for(;m0;m-)- 8 -*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;/*

14、for (;n0;n-) *output3+ = 0; */load(processingload);return(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-)- 9 -y-;i=y;z=sk-1;x=0;f=sk-y;for(;i0;i-,z-,f+)g=input1z*output2f;x=x+g;out4_bufferw=x;w+;/load(processingload);return(TRUE); /* = dataIO =* FUNCTION: read input signal and wri

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号