实验十三十四.docx
《实验十三十四.docx》由会员分享,可在线阅读,更多相关《实验十三十四.docx(14页珍藏版)》请在冰点文库上搜索。
实验十三十四
实验十三卷积(Convolve)算法实验
一.实验目的
1.熟悉DSP实验箱;
2.掌握卷积和算法的原理和方法;
2.了解卷积和算法特性。
二.实验设备
计算机,CodeComposerStudio2.0or1.2for’C5000系统,DSP实验箱。
三、实验内容
1.浏览、编译并下载程序;
2.设置输入数据文件、波形输入文件;
3.运行程序,观察结果。
四.预备知识
1.卷积的基本原理和公式
“卷积和”是求线性时不变离散系统响应(零状态响应)的主要方法。
卷积和基本表达式为
(13-1)
卷积和的运算在图形表示上可分为四步
1)反折
先在亚变量坐标m上作出x(m)和h(m),以m=0的垂直轴为轴反折成h(-m)。
2)移位
将h(-m)移位n,即得h(n-m)。
当n为正整数时,右移n位。
当n为负整数时,左移n位。
3)相乘
将h(n-m)和x(m)的相同m值的对应点值相乘。
4)相加
把以上所有对应点的乘积加起来,即得y(n)值。
依照上述方法,取n=…,-2,-1,0,1,2,3,…各值,即可得全部y(n)值。
2.程序流程图
求卷积和的程序流程如图13-1所示。
3.程序中的自定义函数及其功能
1)processing1(int*input2,int*output2)
调用形式:
processing1(int*input2,int*output2)
参数说明:
intput2、output2为两个整型指针数组。
返回值说明:
返回一个“TREN”,让主函数的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为三个整型指针数组。
返回值说明:
返回一个“TREN”,让主函数的while循环保持连续。
功能说明:
对输入的input2buffer波形和输入的input1buffer作卷积和运算,然后把所生成波形上的各点值存入以OUTPUT4指针开始的一段地址空间中。
4)processing4(int*input2,int*output1)
调用形式:
processing4(int*input2,int*output1)
参数说明:
output1、input2为两个整型指针数组。
返回值解释:
返回一个“TREN”,让主函数的while循环保持连续。
功能说明:
对输入的input2buffer波形截取m点,然后把所生成波形上的各点值存入以OUTPUT1指针开始的一段地址空间中。
以上函数程序样例见附录二。
五、实验步骤
1.实验准备
1)连接设备
①关闭计算机电源。
②如使用EPP型仿真器则用附带的并口连线连接计算机并口和仿真器相应接口。
③检查实验箱上开关MP/MC的位置,应设置为1位置,即设置DSP工作在MP方式。
2)开启设备
①打开计算机电源。
②打开实验箱电源开关。
③仿真器用附带的并口电缆连接计算机和仿真器相应接口,注意仿真器上两个指示灯均亮。
2.打开工程,浏览程序,工程目录为:
\ICETEK-VC5416-USB\Lab11Convolve
3.编译并下载程序
4.设置输入数据文件
请在c程序中的如下两行上设置probepoint
dataIO1();
dataIO2();
设置方法是把光标指示到这一行上,按鼠标右键,从显示的菜单上分别选择probepoint。
在c程序的“dataIO1();”行上设置breakpoint。
5.打开观察窗口
观察窗口界面如图13-2所示。
选择菜单“View”、“Graph”、“Time/Frequency…”进行如下设置
图13-2-1观察窗口界面
选择菜单“View”、“Graph”、“Time/Frequency…”进行如下设置
图13-2-2观察窗口界面
选择菜单“View”、“Graph”、“Time/Frequency…”进行如下设置
图13-2-3观察窗口界面
在弹出的三个图形窗口中单击鼠标右键,分别选择“sigletime”。
6.设置波形输入文件
选择“File”菜单中的“FileI/O…”,打开“FileI/O”窗口;单击“AddFile”按钮,在“FileInput”窗口中选择d:
\convolve\目录下的sin.dat文件,单击“打开”按钮;在“Address”项中输入inp1_buffer,在“Length”项中输入32,在“WarpAround”项前加上选择标记,单击“AddProbePoint”按钮。
在“Break/Probe/ProfilePoints”窗口中单击“ProbePoint”列表中的“Convolve.cline52ÆNoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列表中选择列表末尾的“FILEIN:
d:
\..\SIN.DAT”,单击“Replace”按钮,单击“确定”按钮。
在“FileI/O”窗口中单击“确定”,完成设置。
选择“File”菜单中的“FileI/O…”,打开“FileI/O”窗口;单击“AddFile”按钮,在“FileInput”窗口中选择d:
\convolve\目录下的sin.dat文件,单击“打开”按钮;在“Address”项中输入inp2_buffer,在“Length”项中输入32,在“WarpAround”项前加上选择标记,单击“AddProbePoint”按钮。
在“Break/Probe/ProfilePoints”窗口中单击“ProbePoint”列表中的“Convolve.cline53ÆNoConnection”,再单击“Connect”项尾部的展开按钮,在显示的展开式列表中选择列表末尾的“FILEIN:
d:
\..\SIN.DAT”,单击“Replace”按钮,单击“确定”按钮。
在“FileI/O”窗口中单击“确定”,完成设置。
7.运行程序,观察结果
按F5键运行程序,待程序停留在软件断点;观察刚才打开的三个图形窗口,其中显示的是输入和输出的时域波形。
观察频域波形:
在各图形窗口中单击鼠标右键,选择“Properties…”,在“Graph
PropertyDialog”窗口中的第1项“DisplayType”项中选择“FFTMagnitude”,单击“OK”完成;这时图形窗口中显示波形的频域图。
(也可再打开显示频域图的窗口)
验算结果:
在各频域窗口中的波形上单击鼠标左键,将光标停到统一的位置(通
过观察窗口状态栏中的第1个浮点数表示其坐标值),读取状态栏中的第2个浮点数为卷积计算的输入和输出结果,请验算:
Output≈Input1*Input2。
8.对输入数据进行调整,再次调试程序。
六、实验报告要求
1.简述实验目的;
2.总结在使用CCS中遇到的问题;
3.分析样例中算法的实现结果。
实验十四信号时域频域关系及采样定理
一、实验目的
1.了解周期信号、非周期信号、连续信号、离散信号的频谱特性。
2.熟悉连续信号经采样后的频谱,加深对时域采样定理的理解。
二、实验设备
计算机,CCS1.2版软件,DSP实验箱。
三、实验内容
1.验证性实验
在CCS上观察周期序列和非周期序列的频谱。
2.程序设计实验
编制产生单位序列、单位阶跃序列、矩形序列信号的程序,进行频谱分析。
四、预备知识
1.信号时域、频域之间的对应关系
信号可分为连续信号和离散信号,周期信号和非周期信号,可在时域和频域两个不同的方面表现出其特性。
在时域上不同的信号,在频域上也会有不同的表现形式。
数字信号是幅度和时间均为离散形式的信号。
对时域模拟信号进行采样,可得到它的时域离散形式,即采样信号。
采样信号的频谱呈现周期性。
非周期信号的频谱是连续的,而周期信号的频谱是离散的。
如门函数为非周期信号,它的频谱就是连续的,其波形如图14-1所示。
(a)时域(b)频域
图14-1非周期信号及其频谱
综上所述,可以总结得出信号时域、频域之间有如下对应关系。
时域频域
连续周期函数——离散非周期冲击序列
离散周期函数——离散周期冲击序列
连续非周期函数——连续非周期函数
离散非周期函数——连续周期函数
2.采样定理
采样是连续信号数字化处理的第一个关键环节。
对采样过程的研究不仅可以了解采样前后信号时域和频域特性发生的变化以及信号信息不丢失的条件,而且可以加深对傅里叶变换、z变换和序列傅里叶变换之间关系式的理解。
对信号的采样要满足采样定理
①对连续信号进行等间隔采样形成采样信号,采样信号的频谱是原连续信号的频谱以采样频率为周期进行周期性的延拓形成的。
②采样频率要大于等于2倍的连续信号的最高频率才不会造成频谱混叠现象。
四、实验步骤
一)验证性实验
1.用C语言编写产生1024个点的周期数据和1024个点的非周期数据,数据如下
datal:
产生1024个周期数据,周期为8,数据如下
111100*********01111000011110000......
产生周期为8的数据参考程序片断
for(i=0;i<1024;i++)
{
if(i%8<4)datal[i]=1
elsedatal[i]=0;
}
data2:
产生1024个周期数据,周期为16,数据如下
11111111000000001111111100000000.....
产生周期为16的数据,参考程序片断
for(i=0;i<1024;i++)
{
if(i%16<8)data2[i]=1
elsedata2[i]=0;
}
data3:
产生1024个非周期数据,4个1,其余全为零,数据如下
11110000000000000000000000000000.....
产生4个1其余全为零的非周期数据参考程序片断
for(i=0;i<1024;i++)
{
if(i<4)data3[i]=1
elsedata3[i]=0;
}
data4:
产生1024个非周期数据,8个1,其余全为零,数据如下
11111111000000000000000000000000·.....
产生8个1其余全为零的非周期数据参考程序片断
for(i=0;i<1024;i++)
{
if(i<8)data4[i]=1
elsedata4[i]=0;
}
2.在CCS上观察周期序列和非周期序列的频谱
2.1观察周期序列的频谱
在CCS上选View—Graph—Time/Frequency,然后在Time/Frequency图形方式中进行如下选择
DisplayType(显示类型):
Singletime(时域)FFFmagnitude(频域)
StartAddress:
datal或data2
Page:
Data
AcquisitionBufferSize:
1024
DisplayDataSize:
1024
DSPDataType:
16-bitsingnedinteger
Dataplotstyle(数据绘图方式):
bar
若选频域,设置FFTorder(表示FFT的大小:
2FFTORDER):
10,点击OK之后,可看到datal或data2的时域或频域图。
2.2观察非周期序列(data3和data4)的频谱
方法同上。
2.3观察周期序列的周期逐渐增加(在数据后补零)时的频谱的变化
频域(FFTmagnitude),有如下选择
StartAddress:
datal
AcquisitionBufferSize:
8
Dataplotsble(数据绘图方式):
bar
FFTorder:
3~10。
观察频谱的变化规律,可以看到当序列的周期增大时,频谱变得密集。
当序列的周期很大时,可近似看作为非周期频谱。
二)程序设计实验
1.编制程序,产生以下信号,进行频谱分析(信号长度N=64.128):
1.1单位序列δ(n)
参考程序片断
for(i=0;i<256;i++)
{
/*产生单位脉冲序列*/
if(i==0)h0[i]=1;
elseh0[i]=0;
}
1.2单位阶跃序列u(n)
参考程序片断
for(i=0;i<256;i++)
{
/*产生单位脉冲序列*/
h1[i]=1;
}
1.3矩形序列RN(n)
参考程序片断
for(i=0;i<256;i++)
{
/*产生矩形序列,N=10*/
if(i<10)h2[i]=1;
elseh2[i]=0;
}
1.4实指数序列x(n)
,a为实数
参考程序片断
for(i=0;i<256;i++)
{
/*产生实指数序列*/
h3[i]=pow(0.8,i);
}
1.5正弦序列z(n)
参考程序片断
for(i=0;i<256;i++)
{
/*产生正弦序列*/
h4[I]=sin(pi/8*I);
}
2.运行sample.c(用C语言编写的数据采样及输入输出程序),完整程序见附录。
要求:
从信号源分别输入正弦波、方波及三角波,输入信号的频率小于0.439x采样频率,幅度使输出信号不失真即可。
采样频率设为16kHz,将连续采集的1024个数据存放在RAM中,再将信号从示波器输出。
参考程序片断
while
(1)
{
for(i=0;i<1024;i++)
{
while(!
MCBSP_RRDY(HANDSET_CODEC)){};/*等待来自输入端口的采样数据*/
/*读输入端口的采样数据到数组data中*/
data[i]=*(volatileul6*)DRRl_ADDR(HANDSET_CODEC);
/*将数组data写到输出端口中*/
(volatileu16*)DXRl_ADDR(HANDSET_CODEC)=data[i];
}
}
3.调节信号源的频率,频率范围从0Hz到0.439×采样频率,在示波器上观察波形的变化情况。
4.改变输入信号的频率,在CCS上观察1024个采样点的时域波形及其频谱(幅频与相频函数)图,观察频谱混叠是否明显存在。
5.改变采样频率为8kHz、4kHz,在CCS上观察1024个采样点的时域波形及其频谱(幅频与相频函数)图,观察频谱混叠是否明显存在。
五、实验报告要求
1.简述实验目。
2.按实验步骤记录1024个采样点的时域及频域图。
3.按实验步骤记录观察到的周期、非周期函数的时域图和频谱图,并对所得结果进行分析和解释。
4.画出观察到的单位序列δ(n)等信号的频谱图。
5.总结实验中的主要结论。