数字信号处理实验指导书.docx
- 文档编号:30139877
- 上传时间:2023-08-05
- 格式:DOCX
- 页数:34
- 大小:494.63KB
数字信号处理实验指导书.docx
《数字信号处理实验指导书.docx》由会员分享,可在线阅读,更多相关《数字信号处理实验指导书.docx(34页珍藏版)》请在冰豆网上搜索。
数字信号处理实验指导书
皖西学院
实验指导书
机电学院电子工程教研室
二零一二年三月修订
(第三版)
实验一:
信号及系统的响应
一、实验目的
(1)熟悉离散时间信号的时域特性。
(2)利用卷积的方法观察分析系统的时域特性。
(3)利用filter和freqz(b,a,w)分析系统的时域和频域响应。
(4)熟悉DSP实验系统使用
二、实验原理和方法
(5)利用卷积方法分析离散LTI系统时域特性
若已知LTI系统的单位脉冲响应h[k],可求出系统对任意输入信号x[k]零状态响应y[k]。
y[k]可表示为:
且y[k]的长度等于x[k]和h[k]的长度之和减1,起点等于x[k]和h[k]的起点之和,终点等于他们的终点之和。
(6)离散LTI系统的时域和和频域分析
a.时域分析
离散系统通常可描述为如下的常系数差分方程:
(1-1)
其中x[k]、y[k]分别表示系统的输入和输出。
在已知差分方程N个初始状态y[k],
和输入x[k],就可以由迭代计算出系统的输出。
(1-2)
b.频域分析
系统h[k]序列的DTFT的有理多项式
可写成:
(1-3)
另外
可用幅度相位的形式给出:
(1-4)
其中
和
分别为h[k]的相位和幅度响应。
三、实验内容及步骤
(1)matlab可以用conv(x,h)来计算序列x[k]和h[k]的卷积,编制一个M函数y=conv1(x,kx,h,kh),其中x,h分别是输入序列,kx和kh为非零范围。
并计算书上的例1-22和x[k]、h[k]的卷积。
(2)用matlab信号处理工具箱提供的freqz函数计算DTFT的抽样值
x=freqz(b,a,w)b,a分别为式1-3分子和分母多项式。
编制程序画出。
IIR带通滤波器的幅度响应程序清单如下:
先编制M函数iirbp(x,y),文件名为iirbp。
functionm=iirbp(x,y)
b=[10-1];
a=[1-y*(1+x)x];
b=0.5*(1-x)*b;
w=linspace(0,pi,512);
h=freqz(b,a,w);
c=(0:
round(512*0.4))*pi/512;
d=h(1:
round(512*0.4)+1);
w1=interp1(abs(d),c,0.707);%%interp1(x,y,c)为线性插值%%
c1=(round(512*0.4)+1:
511)*pi/512;%%求截频与带宽%%
d1=h(round(512*0.4)+2:
512);
w2=interp1(abs(d1),c1,0.707);
B=w2-w1;
holdon
plot(w,abs(h))
xlabel('频率')
ylabel('幅度')
set(gca,'xtick',[00.2*pi0.4*pi0.6*pi0.8*pipi]);
set(gca,'xticklabel','0|0.2π|0.4π|0.6π|0.8π|π');
disp('a=');disp(x');
disp('截频为');
disp(w1');disp(w2');
disp('带宽为');
disp(B')
再编制M文件iirrun调用该函数:
b1=cos(0.4*pi);
iirbp(0.1,b1);
text(0.7*pi,0.7,'a=0.1')
iirbp(0.5,b1);
text(0.68*pi,0.4,'a=0.5')
iirbp(0.9,b1);
text(0.6*pi,0.15,'a=0.9')
(2)认真完成书上例1-23、例1-24、例1-25
四、CCS入门实验
熟悉CCS集成开发环境,掌握工程的生成方法,熟悉SEED-DEC643实验环境;掌握CCS集成开发环境的调试方法。
五、实验报告书写要求
(1)简述实验目的及原理
(2)给出实验中的程序清单,及有关仿真波形,并对结果进行解释。
实验二:
用DFT作谱分析
一、实验目的:
(1)进一步加深DFT算法原理和基本性质的理解(因为FFT只是DFT的一种快速算法,所以FFT的运算结果必然满足DFT的基本性质)
(2)熟悉FFT算法和FFT子程序的应用。
(3)学习FFT对连续信号进行谱分析的方法,了解可能出现的误差及原因。
(4)掌握用DSP进行实际信号的谱分析
二、实验步骤及内容:
1、matlab实验
(1)有限长序列x[k]的离散傅立叶变换
是离散时间傅立叶变换
在[02π]上的等间隔采样。
即
m=0,1,∙∙∙,N-1(2-1)
a.令x[k]={2,3,3,2;k=0,1,2,3}求它的DTFT并用matlab画出它的幅度响应|
|,并用FFT计算它的DFT幅值|
|,将|
|和|
|画在同一张图上,验证式2-1的结论。
b.将x[k]补4个和个样点值之间插4个零再重复a中的步骤进行,来分析补零和插零对x[k]谱分析有何影响。
程序如下:
symsw
f1=sym('4*cos(1.5*w)+6*cos(0.5*w)');
subplot(311)
ezplot(abs(f1),[02*pi])
axis([02*pi010])
x=[2332];
f2=fft(x);
k=0:
0.5*pi:
1.5*pi;
holdon
stem(k,abs(f2))
set(gca,'xtick',[00.5*pipi1.5*pi2*pi]);
set(gca,'xticklabel','0|0.5π|π|1.5π|2π');
subplot(312)
ezplot(abs(f1),[02*pi])
axis([02*pi010])
f3=fft(x,8);
k=0:
0.25*pi:
1.75*pi;
holdon
stem(k,abs(f3))
set(gca,'xtick',[00.5*pipi1.5*pi2*pi]);
set(gca,'xticklabel','0|0.5π|π|1.5π|2π');
f4=sym('4*cos(3*w)+6*cos(w)');
subplot(313)
ezplot(abs(f4),[02*pi])
axis([02*pi010])
x=[20303020];
f5=fft(x);
k=0:
0.25*pi:
1.75*pi;
holdon
stem(k,abs(f5))
set(gca,'xtick',[00.5*pipi1.5*pi2*pi]);
set(gca,'xticklabel','0|0.5π|π|1.5π|2π');
(2)结合课后给的相关程序编程画出书上例2-8(120页)的图、并将矩形窗该为长度为20、30的hamming窗,观查运行结果,你会得到怎样的结论。
(3)结合课后给的相关程序编程画出书上例2-9进行仿真并解释混叠现象、现象产生的原因以及采取那些措施可以有效克服或抑制这些现象。
三、DSP实验
◆实验程序功能与结构说明
1.FFT.c:
实验主程序,包含系统初始化,音频芯片各控制寄存器的初始化,A/D采
样,FFT变换,以及将FFT变换结果做取模运算。
2.CODECc:
音频芯片各控制寄存器的初始化。
3.FFTfunction.c:
包含不同采样长度时FFT变换的各函数。
4.IIC.c:
进行I2C初始化。
5.vecs.asm:
包含定时器中断的中断向量表。
6.SEED_DEC643.cmd:
声明了系统的存储器配置与程序各段的连接关系。
◇程序流程图
◆实验准备
首先将光盘下03.ExamplesofProgram\04.SEED-DTK643实验程序目录下的
3.4.3FFT的文件夹拷贝到D盘根目录下。
1.将DSP仿真器与计算机连接好;
2.将DSP仿真器的JTAG插头与SEED-DEC643单元的J1相连接;
3.打开SEED-DTK643的电源。
观察SEED-DTK_MBoard单元的+5V,+3.3V,+
15V,-15V的电源指示灯以及SEED_DEC643的电源指示灯D1是否均亮;若有
不亮的,请断开电源,检查电源;
4.用音频线连接SEED-DTK_MBoard单元的DAOUT1(J10)接口和SEED-DEC643
的BNC转接头(J13)的音频输入接口Ain。
◆实验步骤
1.打开CCS,进入CCS的操作环境。
2.装入FFT.pjt工程文件,添加DEC643.gel文件,开始进行调试。
3.打开FFT.c文件,到第15行,可以修改宏定义SAMPLELONG。
SAMPLELONG是采样长度选择,有3个选择1、2、3。
1表示256,2表示
512,3表示1024。
4.修改完宏定义后,编译、连接生成DEC643_FFT.out文件,装载程序
DEC643_FFT.out。
5.分别在FFT.c程序的65行“for(i=0;i<(SampleLong/2);i++)”处和120行“for(;;);”
处设置断点。
6.本实验和AD实验,数字滤波实验都需要设置实验箱信号源。
通过液晶和按键,设
置信号源。
菜单路径为:
“系统设置”-“信号发生器设置”。
在“信号发生器设置”这一菜单下:
“通道”设为“0”;
“信号类型”可根据需要任意选择,这里我们设置为”标准正弦波”;
“信号频率”和“信号振幅”可在屏幕下方“有效输入”限定的范围内任意输入,建议
“信号振幅”设为1000左右,“信号频率”设为300左右;
“信号发生器开关”设为“开启”。
此时便有正弦信号输入音频芯片AIC23的输入
端(利用此芯片同样可以进行AD采集)。
7.运行程序。
当程序执行到断点时,可以观察收到的数据和显示的图像。
运行到第一个断点处(65行),AD采样完成,此时可设置图像观察AD采样
的结果(即显示DataBuffer数组);运行到第二个断点处(120行),FFT变换完成,同样可设置图像观察FFT变换后没有取模时的结果(即显示DDataBuffer数115组),和取模后的结果(即显示mod数组)。
如下图从上至下分别为512点时,DataBuffer数组,DDataBuffer数组,mod数组的图像显示。
其中图像显示设置对话框中Startadderss:
起始地址;AcquisitionBufferSize:
输入数据个数;DisplayDataSize:
显示数据个数(注意:
显示个数要与程序中宏定义的采样个数一致);DSPDataType:
数据类型;
四、实验报告书写要求
(1)简述实验目的及原理
(2)给出相关的程序清单及仿真波形,并对仿真结果进行解释。
实验三IIR滤波器的设计
一、实验目的:
(1)掌握滤波器的设计指标的含义。
(2)了解Butterworth滤波器和chebyshevI滤波器设计模拟滤波器的原理。
(3)熟悉从低通到高通、带通、带阻滤波器的频率域变换。
(4)能用脉冲响应不变法和双线性变换法设计数字滤波器。
二、实验内容及步骤:
(1)模拟滤波器各指标的含义
设计方法:
先设计一个合适的模拟滤波器,然后变换成满足预定指标的数字滤波器。
由于模拟的网络综合理论已经发展得很成熟,模拟滤波器有简单而严格的设计公式,设计起来方便、准确、可将这些理论推广到数字域,作为设计数字滤波器的工具。
设计框图如下:
(2)数字滤波器中常用的matlab函数butterworth滤波器可用如下函数调用其中N为阶数,wc为3dB截频,num是分子多项式,den为分母多相式。
[N,wc]=buttord(wp,ws,Ap,As,’s’)
[num,den]=butter(N,wc,’s’)
chebyshevI滤波器
[N,wc]=cheb1ord(wp,ws,Ap,As,’s’)
[num,den]=cheby1(N,Ap,wc,’s’)
设计出低通之后还有可能要进行以下四种频率变换:
低通到低通:
[numt,dent]=lp2lp(num,den,w0)
低通到高通:
[numt,dent]=lp2hp(num,den,w0)
低通到带通:
[numt,dent]=lp2bp(num,den,w0,B)
低通到带阻:
[numt,dent]=lp2bs(num,den,w0,B)
最后还要经过脉冲响应不变法或双线性变换法确定数字滤波器表达式:
脉冲响应不变法:
[numddend]=impinvar(num,den,Fs)
双线性变换法:
[numddend]=bilinear(num,den,Fs)
(3)请完成书上的例4-6和例4-8数字滤波器的设计,并验证Ap和As是否满足设计要求(最好用插值法(interpl(x,y,c))验证)。
用椭圆滤波器对语音“”进行滤波,滤去1000Hz以上频谱,观察滤波后的频谱与波形。
s=wavread('21');
s=s(5000:
9095);
f=8000;
fs=1200;
fp=1000;
Ap=1;
As=100;
ws=2*1200/f;
wp=2*1000/f
[Nwc]=cheb1ord(wp,ws,Ap,As);
[ba]=cheby1(N,Ap,wc);
w=linspace(0,pi,512);
freqz(b,a,w);
x=filter(b,a,s);
y=fftshift(fft(x));
z=[1:
2048]*f/4096;
subplot(223);plot(x);title('滤波后的语音信号');
subplot(224);plot(z,abs(y(2049:
4096)));title('滤波后的频谱')
三、基于DSP的计IIR数字滤波器
◆实验准备
首先将光盘下03.ExamplesofProgram\04.SEED-DTK643实验程序目录下的3.4.2IIR_Filter的文件夹拷贝到D盘根目录下。
1.将DSP仿真器与计算机连接好;
2.将DSP仿真器的JTAG插头与SEED-DEC643单元的J1相连接;
3.打开SEED-DTK643的电源。
观察SEED-DTK_MBoard单元的+5V,+3.3V,
15V,-15V的电源指示灯以及SEED_DEC643的电源指示灯D1是否均亮;若有
不亮的,请断开电源,检查电源。
4.用音频线连接SEED-DTK_MBoard单元的DAOUT1(J10)接口和SEED-DEC643
的BNC转接头(J13)的音频输入接口Ain
◆实验步骤
1.打开CCS,进入CCS的操作环境。
2.装入IIR_Filter.pjt工程文件,添加DEC643.gel文件开始进行调试。
3.打开Filter.c文件,到第24行修改SAMPLELONG宏定义。
SAMPLELONG是采样长度选择,有3个选择1、2、3。
1表示256,2表示
512,3表示1024。
4.修改完宏定义后,编译、连接生成Filter.out文件,装载程序Filter.out;
5.本实验和FFT实验,数字滤波实验都需要设置实验箱信号源。
通过液晶屏和键盘,
设置信号源:
当液晶屏上出现“通讯自检不成功,请复位系统”时,按下“Enter”
键,进入“信号发生器设置”。
在“信号发生器设置”这一菜单下:
“通道”设为“0”;
“信号类型”可根据需要任意选择(这里我们选择”噪声正弦波”);
“信号频率”和“信号振幅”可在屏幕下方“有效输入”限定的范围内任意输入,建议
振幅设为1000左右,频率”设为300左右;
“信号发生器开关”设为“开启”。
此时便有信号输入音频芯片AIC23的输入端(利
用此芯片同样可以进行AD采集)。
6.打开Filter.c文件,在第65行“iir_filter(DataBuffer,SOSr,G,DDataBuffer,Sample-
Long,ROUND_IIR);”,66行设置断点“printf("IIRfilterhavedone!
\n");”设置
断点。
运行程序。
可以观察收到的数据和显示的图像;DataBuffer数组显示的是原始信号图像;DDataBuffer数组显示的是滤波后信号图像。
其中图像显示设置对话框中Startadderss:
起始地址;AcquisitionBufferSize:
输入数据个数;DisplayDataSize:
显示数据个数(注意:
显示个数要与程序中宏定义的采样个数一致);DSPDataType:
数据类型;
滤波前:
:
滤波后:
四、实验报告的书写要求
1、简单表述设计滤波器设计总体思路。
2、给出所要设计滤波器的具体步骤。
3、写出程序清单和相应的仿真滤波器的幅度响应。
实验四:
窗函数法设计FIR滤波器
一、实验目的
(1)掌握窗函数法设计FIR滤波器的原理和方法。
(2)熟悉线性相位FIR数字滤波器特性。
(3)了解各种窗函数对滤波特性的影响。
二、实验内容及步骤
(1)编制程序观察矩形窗、汉宁窗、哈明窗、布莱克曼窗函数的幅度谱,估计出它们的旁瓣峰值比、阻带最小衰减。
并改变窗长重新估算上面各个值。
程序如下:
P=51
f1=boxcar(P);
h1=fft(f1,256);
h1=fftshift(h1);
h1=abs(h1(129:
256))/P;
k=linspace(0,pi,128);
subplot(221)
plot(k,20*log10(h1))
gridon
xlabel('矩形窗');
ylabel('幅度/dB');
f2=hanning(P);
h2=fft(f2,256);
h2=fftshift(h2);
h2=abs(h2(129:
256))/ceil(0.5*P);
k=linspace(0,pi,128);
subplot(222)
plot(k,20*log10(h2))
gridon
xlabel('汉宁窗');
ylabel('幅度/dB');
f3=hamming(P);
h3=fft(f3,256);
h3=fftshift(h3);
h3=abs(h3(129:
256))/ceil(0.54*P);
k=linspace(0,pi,128);
subplot(223)
plot(k,20*log10(h3))
gridon
xlabel('哈明窗');
ylabel('幅度/dB');
f4=blackman(P);
h4=fft(f4,256);
h4=fftshift(h4);
h4=abs(h4(129:
256))/ceil(0.42*P);
k=linspace(0,pi,128);
subplot(224)
plot(k,20*log10(h4))
gridon
xlabel('布莱克曼窗');
ylabel('幅度/dB');
(2)截频为0.5时用以上四种窗设计FIR滤波器,选择不同的窗长,估计出它们的旁瓣峰值比、阻带最小衰减,和过渡带宽。
P=51
passrad=0.5*pi;
w1=boxcar(P);
w2=hanning(P);
w3=hamming(P);
w4=blackman(P);
k=1:
51;
hd=sin(passrad*(k-26))./(pi*(k-26));
hd(26)=passrad/pi;
hd1=hd.*w1';
hd2=hd.*w2';
hd3=hd.*w3';
hd4=hd.*w4';
[mag1rad]=freqz(hd1);
[mag2rad]=freqz(hd2);
[mag3rad]=freqz(hd3);
[mag4rad]=freqz(hd4);
subplot(221)
plot(rad,20*log10(abs(mag1)));
gridon
subplot(222)
plot(rad,20*log10(abs(mag2)));
gridon
subplot(223)
plot(rad,20*log10(abs(mag3)));
gridon
subplot(224)
plot(rad,20*log10(abs(mag4)));
gridon
总结上面两个实验结果、会得到怎样一个结论?
(4)用blackman和hamming窗设计,p、s分别为0.2、0.4,阻带最小衰减为50dB的FIR滤波器,并比较它们的幅频特性。
三、DSP实验
◆实验准备
首先将光盘下03.ExamplesofProgram\04.SEED-DTK643实验程序目录下的
3.4.1FIR_Filter的文件夹拷贝到D根目录下。
1.将DSP仿真器与计算机连接好;
2.将DSP仿真器的JTAG插头与SEED-DEC643单元的J1相连接;
3.打开SEED-DTK643的电源。
观察SEED-DTK_MBoard单元的+5V,+3.3V,
15V,-15V的电源指示灯以及SEED_DEC643的电源指示灯D1是否均亮;若有
不亮的,请断开电源,检查电源。
4.用音频线连接SEED-DTK_MBoard单元的DAOUT1(J10)接口和SEED-DEC643
的BNC转接头(J13)的音频输入接口Ain
◆实验步骤
1.打开CCS,进入CCS的操作环境。
2.装入FIR_Filter.pjt工程文件,添加DEC643.gel文件,开始进行调试。
3.打开Filter.c文件,到第21行修改SAMPLELONG宏定义。
SAMPLELONG是采样长度选择,有3个选择1、2、3。
1表示256,2表示
512,3表示1024;
4.修改完宏定义后,编译、连接生成Filter.out文件,装载程序Filter.out。
5.本实验和FFT实验,AD实验都需要设置实验箱信号源。
通过液晶屏和键盘,设置
信号源:
当液晶屏上出现“通讯自检不成功,请复位系统”时,按下“Enter”键,
进入“信号发生器设置”。
在“信号发生器设置”这一菜单下:
“通道”设为“0”;
“信号类型”可根据需要任意选择(这里我们选”噪声正弦波”);
“信号频率”和“信号振幅”可在屏幕下方“有效输入”限定的范围内任意输入,建议
振幅设为1000左右,频率”设为300左右;
“信号发生器开关”设为“开启”。
此时便有噪声方形波信号输入音频芯片AIC23
的输入端(利用此芯片同样可以进行AD采集)。
6.打开Filter.c文件,在第65行“fir_filter((int*)DataBuffer,(int*)hfir,DDataBuff
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数字信号 处理 实验 指导书