1、DSP课程卷积算法报告DSP技术及应用课程设计报告 课题名称: 卷积算法 学 院: 电气信息工程学院 专 业: 通信工程 班 级: 姓 名: 学 号: * 成 绩: 日 期:2014.6.9-2014.6.20 一、DSP课程设计目的 .3 二、课程设计任务 .3 三、卷积定义及实验原理.3 四、实验设备 .4 五、卷计算法的流程图及程序. .4 六、课程设计步骤及过程.10 七、课程设计心得. .17 八、参考文献 .18 一、DSP课程设计目的 1、巩固DSP技术及应用的理论知识; 2、熟悉并掌握卷积算法以及CCS软件的使用方法; 3、掌握利用窗函数法设计卷积算法的原理和方法 二、课程设计
2、任务 本课程设计要求利用卷积算法,能够在CCS集成开发环境中使用图形显示工具显示输入和输出波形。 三、卷积的定义及实验原理 1、卷积的定义 卷积和(简称卷积)是信号处理中常用的算法之一。数字卷积运算通常采用两种方法:线性卷积和圆卷积。为了能使卷积运算在C54x系列DSP上的实现方法,首先要对数字卷积的基本概念作深入了解。使大家从根本上掌握卷积的实现方法,我们以模拟信号的卷积和数字信号的卷积为主,以及他们在C54x系列DSP上的实现方法。 在通信和信号处理中,常用的运算,如卷积,自相关,滤波和快速傅里叶交换等。都具有较高的密度性和复杂性,而这些运算中所用到的最基本的是乘法-累加运算。C54x的硬
3、件及软件设计使其具有快速的进行乘法-累加运算功能,并具有丰富的软件资源为这些算法的实施提供有力的条件。因此,这种芯片在通信及信号处理等领域得到广泛的应用。本节主要介绍卷积算法在DSP原理中的应用。 2、卷积的基本原理和公式 卷集和:对离散系统“卷积和”也是求线性时不变系统输出响应(零状态响应)的主要方法。 卷积和的运算在图形表示上可分为四步: 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
4、)相乘 再将h(n-m)和x(m)的相同m值的对应点值相乘。 4)相加 把以上所有对应点的乘积叠加起来,即得y(n)值。 依上法,取n=,-2,-1,0,1,2,3,各值,即可得全部y(n)值。 四、实验设备 计算机,Code Composer Studio 3.3 软件 五、 卷计算法的流程图及程序 1、程序流程图 2程序的自编函数及其功能 (1)processing1(int *input2, int *output2) 调用形式:processing1(int *input2, int *output2) 参数解释:intput2、output2为两个整型指针数组。 返回值解释:返回了一
5、个“TRUE”,让主函数的while循环保持连续。 功能说明:对输入的input2 buffer波形进行截取m点,再以零点的Y轴为对称轴进行翻褶,把生成的波形上的各点的值存入以OUTPUT2指针开始的一段地址空间中。 (2)processing2(int *output2, int *output3) 调用形式:processing2(int *output2, int *output3) 参数解释:output2、output3为两个整型指针数组。 返回值解释:返回了一个“TRUE”,让主函数的while循环保持连续。 功能说明:对输出的output2 buffer波形进行作n点移位,然后把
6、生成的波形上的各点 的值存入以OUTPUT3指针开始的一段地址空间中。 (3)processing3(int *input1,int *output2,int *output4) 调用形式:processing3(int *input1,int *output2,int *output4) 参数解释:output2、output4、input1为三个整型指针数组。 返回值解释:返回了一个“TRUE”,让主函数的while循环保持连续。 功能说明:对输入的input2 buffer波形和输入的input1 buffer作卷积和运算,然后把生成的波形上的各点的值存入以OUTPUT4指针开始的一段地
7、址空间中。 (4)processing4(int *input2,int *output1) 调用形式:processing4(int *input2,int *output1) 参数解释:output1、input2为两个整型指针数组。 返回值解释:返回了一个“TRUE”,让主函数的while循环保持连续。 功能说明:对输入的input2 buffer波形截取m点,然后把生成的波形上的各点的值存入以OUTPUT1指针开始的一段地址空间中。 3、卷积算法程序 #include #include volume.hint in1_bufferBUFSIZE;int in2_bufferBUFSIZ
8、E; int out1_bufferBUFSIZE;int out2_bufferBUFSIZE;int out3_bufferBUFSIZE;int out4_bufferBUFSIZE*2;int size = BUFSIZE;int gain = MINGAIN;int zhy=0;int sk=64; unsigned int processingload = 1; /* processing routine /load value */ /* Functions */static int step1(int *output1, int *output2);static int ste
9、p2(int *output2, int *output3); static int step3(int *input1,int *output2,int *output4);static int step4(int *input2, int *output1);static void dataIO1(void);static void dataIO2(void);void main() int *input1 = &in1_buffer0; int *input2 = &in2_buffer0; int *output1 = &out1_buffer0; int *output2 = &ou
10、t2_buffer0; int *output3 = &out3_buffer0; int *output4 = &out4_buffer0; puts(volume example startedn); while(TRUE) /* * Read input data using a probe-point connected to a host file. * Write output data to a graph connected through a probe-point. */ dataIO1(); / break point dataIO2(); / break point s
11、tep4(input2,output1); step1(output1, output2); step2(output2, output3); step3(input1,output2,output4) ; static int step4(int *input2,int *output1) int m=sk; for(;m=0;m-) *output1+ = *input2+ * ain; for(;(size-m)0;m+) output1m=0; return(TRUE);static int step1(int *output1,int *output2) int m=sk-1; fo
12、r(;m0;m-) *output2+ = *output1+ * ain; return(TRUE);static int step2(int *output2, int *output3) int n=zhy; size=BUFSIZE; for(;(size-n)0;n+) *output3+ = output2n; return(TRUE);static int step3(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
13、=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*output2f; x=x+g; out4_bufferw=x; w+; return(TRUE); static void dataIO1() /* do data I/O */ return;static void dataIO2() /* do data I/O
14、 */ return; 六、课程设计步骤及过程 1实验准备 (1)设置Code Composer Studio为C55xx、Simulator、C5510 Device simulator (2)启动Code Composer Studio 3.32.建立工程Project,编写程序并编译 3装载目标文件 进行如下设置(1)选择主菜单File中Load Program命令,在CCS的安装目录下,找到构建该工程项目下的网Debug目录,选择构建后生成的可执行文件*.out并打开。(2)选择Debug菜单中的Go Main命令。4打开观察窗口-选择菜单“View”、“Graph”、“Time/Fr
15、equency”进行如下设置: 5.设置波形输入文件打开菜单栏file-Data-load,然后输入相应值 (1)当输入为sin11和一个正弦方波时图像为 (2)当把输入2改为另一个正旋波sin22时,波形为 (3).当输入为正弦波sin22和只有一个周期的正旋波sin时 (4)输入为sin11和方波时 (5)*图表分析 输入图形频域图形采用通过频域采样取值比较,卷积后的结果与标准值只有很小的误差。所以说卷积实验结果正确,卷积程序正确无误。 七、课程设计心得 随着时间的推移,本次的DSP课程设计在一周多的时间内完成了,在这短短的设计期间,我学到了许多新知识,同时也巩固了许多老的知识 。在这个设
16、计期间,我认为最重要的就是熟悉掌握卷积算法、程序的编程及调试,认真的研究老师给的题目。同时我还明白了,在编程序时自己不会时可以主动的问问老师和同学,要及时的分析问题解决问题。还有在编程序时要重视程序的模块化,以便修改的方便,也要注重程序的调试,掌握其中的方法。 对于本次DSP课程设计,从中有了很多的感触。第一、是在学习态度上,无论是学习课本知识还是在编程序时,都要全神贯注,认真对待,不能马虎。因为越是细节的东西,越是不会引起我们的重视,就会越容易出错,编程序时有很多问题都是由于我们不够严谨、不够认真所造成的。第二、要主动与同学合作交流,由于对课本理论的不熟悉导致编程出现错误,在不会的情况下,一
17、定要主动的问老师、同学,一起讨论,一起思考,互相交流。在与别人交流中,可以学习到她们的优点,可以得到自己想不到的学习方法与知识。第三、在这次课程设计中,从中认识到了自己许多的不足,对课本的基础知识掌握的不够熟练、不够扎实。对于自己会的东西也不会正确的运用,这是我欠缺的地方,对于自己不会的东西请教了学习好的同学,听她们讲解分析,这让我受益匪浅。我们应该将每次遇到的问题记录下来,并分析清楚,以免下次再碰到同样问题。但是从中学到的知识会让我受益终身。发现、提出、分析、解决问题和实践能力提高都会受益于我在以后的学习、工作和生活中。 通过这次DSP课程设计,加深了我对DSP技术及应用理论知识的理解,对卷积部分的知识有了更进一步的理解。同时懂得将理论很好地应用到实际当中去,而且我还学会了如何去培养我们的创新精神,从而不断地战胜自己,超越自己。创新可以是在原有的基础上进行改进,使之功能不断完善,成为真己的东西。 八、参考文献 DSP技术及应用 董胜、刘伯生 北京大学出版社.信号与系统分析 吴京等编著 国防科技大学出版社.C语言程序设计 韩增红 王冬梅 人民邮电出版社.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1