您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 商业计划书 > 基于DSP的卷积算法的实现
DSP课程考核论文课程名称:DSP原理与应用教程题目:基于DSP的卷积算法的实现专业:电子信息工程班级:08级1班-2-目录摘要.......................................................................3绪论.......................................................................3课程设计方案及原理.............................................3课程设计步骤及过程.............................................10总结.......................................................................17参考文献.................................................................17-3-基于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)-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)和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循环保持连续。功能说明:对输入的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指针开始的一段地址空间中。源程序如下:#includestdio.h-6-#includevolume.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*/-7-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(;m0;m--)-8-{*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(;n0;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(;m0;m--){-9-y--;i=y;z=sk-1;x=0;f=sk-y;for(;i0;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)连接设备①关闭计算机和实验箱电源。-10-②如使用PP型仿真器则用附带的并口连线连接计算机并口和仿真器相应接口。③检查ICETEK-VC5416-A板上DIP开关MP/MC的位置,应设置在“OFF”位置(靠近复位按钮),即设置DSP工作在MP方式。④关闭实验箱上三个开关。(2)开启设备①打开计算机电源。②打开实验箱电源开关,③如使用USB型仿真器用附带的USB电缆连接计算机和仿真器相应接口,注意仿真器上两个指示灯均亮。(3)设置CodeComposerStudio为Simulator方式:参见“CodeComposerStudio入门实验”之四.2。(4)启动CodeComposerStudio2.02.打开工程,浏览程序,工
本文标题:基于DSP的卷积算法的实现
链接地址:https://www.777doc.com/doc-4942111 .html