卷积运算及算法地DSP实现.docx
- 文档编号:30584653
- 上传时间:2023-08-18
- 格式:DOCX
- 页数:26
- 大小:953.34KB
卷积运算及算法地DSP实现.docx
《卷积运算及算法地DSP实现.docx》由会员分享,可在线阅读,更多相关《卷积运算及算法地DSP实现.docx(26页珍藏版)》请在冰豆网上搜索。
卷积运算及算法地DSP实现
《现代信号处理课程设计》
课程设计报告
设计题目卷积运算与算法的DSP实现
第1章绪论
1〕设计背景
卷积是在信号与线性系统的根底上或背景中出现的,脱离这个背景单独谈卷积是没有任何意义的,除了那个所谓褶反公式上的数学意义和积分〔或求和,离散情况下〕。
信号与线性系统,讨论的就是信号经过一个线性系统以后发生的变化〔就是输入输出和所经过的所谓系统,这三者之间的数学关系〕。
所谓线性系统的含义,就是,这个所谓的系统,带来的输出信号与输入信号的数学关系式之间是线性的运算关系。
因此,实际上,都是要根据我们需要待处理的信号形式,来设计所谓的系统传递函数,那么这个系统的传递函数和输入信号,在数学上的形式就是所谓的卷积关系。
卷积关系最重要的一种情况,就是在信号与线性系统或数字信号处理中的卷积定理。
利用该定理,可以将时间域或空间域中的卷积运算等价为频率域的相乘运算,从而利用FFT等快速算法,实现有效的计算,节省运算代价。
DSP〔数字信号处理器〕与一般的微处理器相比有很大的区别,它所特有的系统结构、指令集合、数据流程方式为解决复杂的数字信号处理问题提供了便利,本文选用F2812作为DSP处理芯片,通过对其编程来实现卷积。
2〕设计目的
通过本次设计掌握并熟悉dsp的应用以与ICETEK-F2812-A的平评估板的使用,了解卷积算法的原理和计算方法,以与其特性与特点,并学习卷积算法的程序实现。
并且通过本次设计来提高自己的动手实践能力,增加我们对本专业的各种芯片的了解,增强我们的专业素养。
利用C语言在CCS环境中编写一个卷积算法程序,并能利用已设计好的卷积器对一些常用信号进展卷积运算处理。
在TMS320C54x系统开发环境CCS〔CodeposerStudio〕下对卷积的DSP实现原理进展讨论。
利用C语言设计相应的算法,通过实验仿真,从输入信号和输出信号的时域和频域曲线可看出在DSP上实现的卷积算法能完成预定的计算任务。
第2章系统开发平台与环境
2.1CCS开发环境
DSP开发工具:
PC机+目标板+仿真器+CCS开发环境
一般是先在CCS开发环境下编写程序〔使用C语言、汇编语言或者两者混合〕CCS内置软仿真simulator提供了编译,调试,运行功能。
其作用主要是检测目标程序运行的正确性和连贯性!
但不能够实时查看和控制。
当程序成功运行通过后,通过仿真器〔XDS510或者XDS560〕与目标板连接,安装仿真器驱动,然后loadprogram到目标板,运行,利用仿真器提供的RTDX可实时查看存储器和存放器变化。
2.2ICETEK-F2821-A开发实验板
第3章卷积算法设计过程
3.1卷积算法设计总框图
YES
3.2卷积算法设计的原理
1〕卷积算法根底理论
卷积的根本理论和公式
卷积和:
对离散系统“卷积和〞也是求线性时不变系统输出响应〔零状态响应〕的主要方法。
卷积和的运算在图形表示上可分为四步:
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〕值。
第4章系统软件设计
4.1程序流程图
程序的自编函数与其功能
1)processing〔int*input2,int*output2〕
调用形式:
processing1〔int*input2,int*output2〕
参数解释:
input2、output为两个整型指针数组。
返回值解释:
返回一个“TURE〞,让主函数的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为三个整型指针数组。
返回值解释:
返回了一个“TRUE〞,让主函数的While循环保持继续。
功能说明:
对输入的input2buffer波形和输入的input1buffer做卷积和运算,然后把生成的波形上的各点的值存入以OUTPUT4指针开始的地址空间中。
4)processing4〔int*input2,int*output1〕
调用形式:
processing4〔int*input2,int*output1〕
参数解释:
output1、input为两个整型指针数组
返回值解释:
返回了一个“TRUE〞,让主函数的循环保持继续。
功能说明:
对输入的input2buffer波形截取m点,然后把生成的波形上的各点的值存入以OUTPUT1指针开始的一段地址空间中。
源程序:
#include"DSP281x_Device.h"
#include"DSP281x_Examples.h"
#include"f2812a.h"
#include"stdio.h"
#include"volume.h"
intinp1_buffer[BUFSIZE];
intinp2_buffer[BUFSIZE];
intout1_buffer[BUFSIZE];
intout2_buffer[BUFSIZE];
intout3_buffer[BUFSIZE];
intout4_buffer[BUFSIZE*2];
intsize=BUFSIZE;
intain=MINGAIN;
intzhy=0;
intsk=64;
unsignedintprocessingLoad=1;
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);
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];
voidmain(void)
{intjishu=0;
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");
while(TRUE)
{
dataIO1();
dataIO2();
processing4(input2,output1);
processing1(output1,output2);
/*processing2(output2,output3);*/
processing3(input1,output2,output4);
jishu++;//在此处加断点
}
}
staticintprocessing4(int*input2,int*output1)
{intm=sk;
for(;m>=0;m--)
{
*output1++=(*input2++)*ain;
}
for(;(size-m)>0;m++)
{output1[m]=0;
}
}
staticintprocessing1(int*output1,int*output2)
{
intm=sk-1;
for(;m>0;m--)
{
*output2++=*output1++*ain;
}
}
staticintprocessing2(int*output2,int*output3)
{intn=zhy,m;
size=64;
for(;n<64;n++)
{*output3++=output2[n];
m=*output3;
}
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(;m>0;m--)
{
y--;
i=y;
z=sk-1;
x=0;
f=sk-y;
for(;i>0;i--,z--,f++)
{g=input1[z]*output2[f];
x=x+g;
}
out4_buffer[w]=x;
w++;
}
}
staticvoiddataIO1()
{
return;
}
staticvoiddataIO2()
{
/*dodataI/O*/
return;
}
第5章系统仿真
1〕在程序中“dataIO1〔〕;〞上单击鼠标右键选择“Togglesoftwarebreakpoint〞,设置软件断点:
再在同一行上单击鼠标右键,选择“softwarebreakpoint〞,“edit〞,来设置断点。
此时打开了一个新的窗口。
最后设置成如如下图所示:
2〕同理,在程序中“dataIO2〔〕;〞上同样操作设置。
最后设置如如下图:
3〕打开窗口菜单Viwe->Graph->Frequency…进展如下设置:
5.2仿真图
1〕当输入波为SIN,SIN时
SIN---------------------inp1
SIN---------------------inp2
SIN---------------------out
2)当输入波为SIN11、SIN11时
SIN11---------------------inp1
SIN11---------------------inp2
SIN11---------------------out
3〕当输入波为SIN22、SIN22时
SIN22---------------------inp1
SIN22---------------------inp2
SIN22---------------------out
5)当输入波为SIN33、SIN33时
SIN33---------------------inp1
SIN33---------------------inp2
SIN33---------------------out
6)当输入波为SIN44、SIN44时
SIN44---------------------inp1
SIN44---------------------inp2
SIN44---------------------out
7〕当输入波为SIN44、SIN
Sin44----------------inp1
Sin-------------------inp2
SIN44、SIN---------Out
8〕当输入波为SIN11、SIN33时
Sin11--------------------------inp1
Sin33-------------------------inp2
9〕当输入波为SIN22、SIN时
Sin22-----------------------inp1
Sin---------------------------inp2
第6章总结
卷积计算是数字信号的根底,也是dsp芯片的根底。
通过本次设计不仅使我们对卷积计算的理解加深了,也加强了我们对dsp芯片的了解与其应用的学习程度。
而且还增强了我们的实践动手能力,提高我们合作解决问题的能力,使我对DSP芯片有了更深一步的了解,也不断的强化了自己的根底知识。
本次试验主要涉与对ICETEK-F2821-A开发实验板的各模块的认识与熟悉,同时在CCS开发环境下与硬件联机调试相关控制或波形实验,实验包括软件调试和硬件实验局部,编辑语言为C语言。
前一周的实验内容主要为自我研习硬件控制局部,通过指导书实验内容的实现和对代码功能的解读,了解了DSP系统控制硬件系统的方式与功能,再熟悉了开发环境后接下来了解的就是DSP功能最强大的信号处理功能,本次实验内容为卷积运算,相对在信号处理的数学运算中比拟简单,通过输入任意两个实验波将其进展卷积运算后输出结果,成功观察到了实验的整个流程,并且深入了解了整个卷积的过程,在对实验代码的认真解读后也清楚地了解了怎样用编程语言实现对型号的具体处理,为今后进一步使用相关处理奠定了良好的根底。
本次实验时间相对短暂,但是通过实验我们了解了一个全新的实验系统,了解了DSP的系统功能,为今后的数据处理奠定了深入的根底。
最后感谢教师与学校相关实验室为我们提供这样的机会,我们收获了很多。
参考文献
1〕程佩青.数字信号处理教程[M].:
清华大学,1999年
2〕ICETEK-F2812A-(S60,D60,S80,D80)实验指导书
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 卷积 运算 算法 DSP 实现