DSP中的卷积算法Word格式.docx
《DSP中的卷积算法Word格式.docx》由会员分享,可在线阅读,更多相关《DSP中的卷积算法Word格式.docx(21页珍藏版)》请在冰豆网上搜索。
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。
#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;
}
(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;
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;
(m—y)>
0;
)
{i=y;
x=0;
z=0;
f=y;
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;
y-—;
i=y;
z=sk-1;
f=sk-y;
i〉0;
i——,z--,f++)
{g=input1[z]*output2[f];
out4_buffer[w]=x;
w++;
}
staticvoiddataIO1()
{
return;
staticvoiddataIO2()
{
/*dodataI/O*/
仿真设置
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