DSP卷积算法的实现实验报告Word文件下载.docx
- 文档编号:21212879
- 上传时间:2023-01-28
- 格式:DOCX
- 页数:11
- 大小:97.54KB
DSP卷积算法的实现实验报告Word文件下载.docx
《DSP卷积算法的实现实验报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《DSP卷积算法的实现实验报告Word文件下载.docx(11页珍藏版)》请在冰豆网上搜索。
二、设计要求............................................3
三、实验原理................................................3
1.卷积的基本原理和公式....................................3
2.卷积和的运算在图形的表示..................................3
3.卷积算法设计总框图.......................................3
四、CCS开发环境.............................................5
五、程序流程图...............................................5
六、程序的自编函数及其功能....................................6
七、卷积算法程序.............................................7
八、实验步骤及过程...........................................
九、实验心得...............................................
十、参考文献...............................................
一、实验目的
1.掌握并熟悉DSP的应用以及ICETEK-VC5416-A评估板的使用
2.了解卷积算法的原理和计算方法,特性与特点,并学习卷积算法的程序实现。
3.提高自己的动手实践能力
4.增加我们对本专业的各种芯片的了解,增强我们的专业素养。
二、设计要求
1.利用C语言在CCS环境中编写一个卷积算法程序,并能利用已设计好的卷积器对一些常用信号进行卷积运算处理。
2.利用C语言设计相应的算法,通过实验仿真,观察输入信号和输出信号的时域和频域曲线,从而实现在DSP上实现卷积算法,完成预定的计算任务。
三、实验原理
卷积和(简称卷积)是信号处理中常用的算法之一。
数字卷积运算通常采用两种方法:
线性卷积和圆卷积。
为了能使卷积运算在C54x系列DSP上的实现方法,首先要对数字卷积的基本概念作深入了解。
使大家从根本上掌握卷积的实现方法,我们以模拟信号的卷积和数字信号的卷积为主,以及他们在C54x系列DSP上的实现方法。
1.卷积的基本原理和公式
卷积和:
Y(n)=∑X(m)H(n−m)=X(n)*H(n)m=−∞
对离散系统“卷积和”也是求线性时不变系统输出响应(零状态响应)的主要方法。
2.卷积和的运算在图形的表示
可分为四步:
A)翻褶现在亚变量坐标M上作出X(m)和H(m),将m=0的垂直轴为轴翻褶成H(-m)。
B)移位将H(-m)移位n,即得H(n-m)。
当n为正整数时,右移n位。
当n为负整数时,左移n位。
C)相乘再将H(n-m)和X(m)的相同m值的对应点值相乘。
D)相加把以上所有点的对应点的乘积叠加起来,即得Y(n)值。
依上法,取n=……,-2,-1,0,1,2,3,……各值,即可得全部Y(n)值。
3.卷积算法设计总框图
YES
四、CCS开发环境
CodeComposerStudio是一种集成开发环境(IDE),支持TI的微控制器和嵌入式处理器产品系列。
CodeComposerStudio包含一整套用于开发和调试嵌入式应用的工具。
它包含了用于优化的C/C++编译器、源码编辑器、项目构建环境、调试器、描述器以及多种其他功能。
直观的IDE提供了单个用户界面,可帮助您完成应用开发流程的每个步骤。
熟悉的工具和界面使用户能够比以前更快地入手。
CodeComposerStudio将Eclipse软件框架的优点和TI先进的嵌入式调试功能相结合,为嵌入式开发人员提供了一个引人注目、功能丰富的开发环境。
一般是先在CCS开发环境下编写程序(使用C语言、汇编语言或者两者混合)CCS内置软仿真simulator提供了编译,调试,运行功能。
其作用主要是检测目标程序运行的正确性和连贯性!
但不能够实时查看和控制。
当程序成功运行通过后,通过仿真器(XDS510或者XDS560)与目标板连接,安装仿真器驱动,然后loadprogram到目标板,运行,利用仿真器提供的RTDX可实时查看存储器和寄存器变化。
五、程序流程图
六、程序的自编函数及其功能
◆processing1(int*input2,int*output2)
调用形式:
processing1(int*input2,int*output2)
参数解释:
intput2、output2为两个整型指针数组。
返回值解释:
返回了一个“TREN”,让主函数的while循环保持连续。
功能说明:
对输入的input2buffer波形进行截取m点,再以零点的Y轴为对称轴进行翻褶,把生成的波形上的各点的值存入以OUTPUT2指针开始的一段地址空间中。
◆processing2(int*output2,int*output3)
processing2(int*output2,int*output3)
output2、output3为两个整型指针数组。
对输出的output2buffer波形进行作n点移位,然后把生成的波形上的各点的值存入以OUTPUT3指针开始的一段地址空间中。
◆processing3(int*input1,int*output2,int*output4)
processing3(int*input1,int*output2,int*output4)
output2、output4、input1为三个整型指针数组。
对输入的input2buffer波形和输入的input1buffer作卷积和运算,然后把生成的波形上的各点的值存入以OUTPUT4指针开始的一段地址空间中。
◆processing4(int*input2,int*output1)
processing4(int*input2,int*output1)
output1、input2为两个整型指针数组。
对输入的input2buffer波形截取m点,然后把生成的波形上的各点的值存入以OUTPUT1指针开始的一段地址空间中。
七、卷积算法程序
#include<
stdio.h>
#include"
volume.h"
intin1_buffer[BUFSIZE];
intin2_buffer[BUFSIZE];
intout1_buffer[BUFSIZE];
intout2_buffer[BUFSIZE];
intout3_buffer[BUFSIZE];
intout4_buffer[BUFSIZE*2];
intsize=BUFSIZE;
intain=MINGAIN;
intzhy=0;
intsk=64;
/*Functions*/
staticintstep1(int*output1,int*output2);
staticintstep2(int*output2,int*output3);
staticintstep3(int*input1,int*output2,int*output4);
staticintstep4(int*input2,int*output1);
staticvoiddataIO1(void);
staticvoiddataIO2(void);
voidmain()
{
int*input1=&
in1_buffer[0];
int*input2=&
in2_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"
);
while(TRUE)
{
/*
*Readinputdatausingaprobe-pointconnectedtoahostfile.
*Writeoutputdatatoagraphconnectedthroughaprobe-point.
*/
dataIO1();
//breakpoint
dataIO2();
step4(input2,output1);
step1(output1,output2);
step2(output2,output3);
step3(input1,output2,output4);
}
}
staticintstep4(int*input2,int*output1)
intm=sk;
for(;
m>
=0;
m--)
{
*output1++=*input2++*ain;
(size-m)>
0;
m++)
output1[m]=0;
return(TRUE);
staticintstep1(int*output1,int*output2)
{
intm=sk-1;
*output2++=*output1++*ain;
staticintstep2(int*output2,int*output3)
intn=zhy;
size=BUFSIZE;
(size-n)>
n++)
*output3++=output2[n];
staticintstep3(int*input1,int*output2,int*output4)
inty=zhy;
intz,x,w,i,f,g;
(m-y)>
)
i=y;
x=0;
z=0;
f=y;
i>
i--)
g=input1[z]*output2[f];
x=x+g;
z++;
f--;
*output4++=x;
y++;
m=sk;
y=sk-1;
w=m-zhy-1;
y--;
z=sk-1;
f=sk-y;
i--,z--,f++)
out4_buffer[w]=x;
w++;
}
staticvoiddataIO1()
/*dodataI/O*/
return;
staticvoiddataIO2()
九、实验总结
在本次DSP课程设计中我们以四人一组,我和高芳容,鲍晶晶,金雪一组,我们抽中的题目是卷积算法的实现,刚开始的时候不知道从哪里入手。
于是我们就去请教在这方面比较厉害的同学,然后他大概的给我们解释了一下,虽然不是特别明白,可是大体上我们还是了解了。
由于课程基本上都结束了,我们的时间比较多一点,所以我们也就没有那么紧张,慢慢的做。
因为这一门课我没有好好听,所以理解的不是很透彻,所以我就跟他们一块去图书馆查找资料,慢慢的啃,说实话,我真不擅长看书,刚开始的时候,怎么看也看不懂,百思不得其解。
后来,我去问了我同学,才慢慢的消化理解了。
然后我们开始分工编程序。
提到程序,我是一个头两个大,我C语言学的不好,没办法我又把大一,大二的书拿出来,慢慢的啃我们由组长分工,每人分别做着不同的工作,确保了我们本次课程设计的成功。
刚开始,我们在本次设计中,我们从查阅资料,到编写程序再到软件仿真,在这个过程中我们充分的利用了所学的知识,并在老师的指导下,按时按质完成了本次课程设计。
通过本次课程设计我们充分的锻炼了自己的动手能力,并把课堂上所学的知识运用到了实际中,达到了我们预期的效果,也为我们以后工作打下了一个好的前提。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 卷积 算法 实现 实验 报告