DSP中的卷积算法.docx

上传人:b****7 文档编号:9258628 上传时间:2023-02-03 格式:DOCX 页数:23 大小:381.68KB
下载 相关 举报
DSP中的卷积算法.docx_第1页
第1页 / 共23页
DSP中的卷积算法.docx_第2页
第2页 / 共23页
DSP中的卷积算法.docx_第3页
第3页 / 共23页
DSP中的卷积算法.docx_第4页
第4页 / 共23页
DSP中的卷积算法.docx_第5页
第5页 / 共23页
点击查看更多>>
下载资源
资源描述

DSP中的卷积算法.docx

《DSP中的卷积算法.docx》由会员分享,可在线阅读,更多相关《DSP中的卷积算法.docx(23页珍藏版)》请在冰豆网上搜索。

DSP中的卷积算法.docx

DSP中的卷积算法

卷积算法设计总框图

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)值。

程序流程图

 

程序的自编函数及其功能

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;

}

仿真设置

1)在程序中“dataIO1();”上单击鼠标右键选择“Togglesoftwarebreakpoint”,设置软件断点:

再在同一行上单击鼠标右键,选择“softwarebreakpoint”,“edit”,来设置断点。

此时打开了一个新的窗口。

最后设置成如下图所示:

2)同理,在程序中“dataIO2();”上同样操作设置。

最后设置如下图:

 

3)打开窗口菜单Viwe->Graph->Frequency…进行如下设置:

仿真图

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

Sin11.sin33-------------------Out

9)当输入波为SIN22、SIN时

Sin22-----------------------inp1

Sin---------------------------inp2

Sin22.Sin---------------------Out

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 文学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1