DSP应用技术实验指导书.docx
《DSP应用技术实验指导书.docx》由会员分享,可在线阅读,更多相关《DSP应用技术实验指导书.docx(27页珍藏版)》请在冰豆网上搜索。
DSP应用技术实验指导书
DSP应用技术实验指导书
DSP应用技术实验指导书
目录
实验一用FFT对信号作频谱分析
一、实验目的
学习用FFT对连续信号和时域离散信号进行谱分析的方法,了解可能出现的分析误差及原因,以便正确应用FFT。
二、实验原理
用FFT对信号作频谱分析是学习数字信号处理的重要内容。
经常需要进行谱分析的信号是模拟信号和时域离散信号。
对信号进行谱分析的重要问题是频谱分辨率D和分析误差。
频谱分辨率直接和FFT的变换区间N有关,因为FFT能够实现的频率分辨率是
,因此要求
。
可以根据此式选择FFT的变换区间N。
误差主要来自于用FFT作谱分析时,得到的是离散谱,而信号(周期信号除外)是连续谱,只有当N较大时,离散谱的包络才能逼近于连续谱,因此N要适当选择大一些。
周期信号的频谱是离散谱,只有用整数倍周期的长度作FFT,得到的离散谱才能代表周期信号的频谱。
如果不知道信号周期,可以尽量选择信号的观察时间长一些。
对模拟信号进行谱分析时,首先要按照采样定理将其变成时域离散信号。
如果是模拟周期信号,也应该选取整数倍周期的长度,经过采样后形成周期序列,按照周期序列的谱分析进行。
三、实验步骤及内容
(1)对以下序列进行谱分析
选择FFT的变换区间N为8和16两种情况进行谱分析。
分别打印其幅频特性曲线,并进行对比、分析和讨论。
(2)对以下周期序列进行谱分析
选择FFT的变换区间N为8和16两种情况进行谱分析。
分别打印其幅频特性曲线,并进行对比、分析和讨论。
(3)对模拟周期信号进行谱分析
选择采样频率
,对变换区间N=16,32,64三种情况进行谱分析。
分别打印其幅频特性曲线,并进行分析和讨论。
四、思考题
(1)对于周期序列,如果周期不知道,如何用FFT进行谱分析?
(2)如何选择FFT的变换区间?
(包括非周期信号和周期信号)
(3)当N=8时,
和
的幅频特性会相同吗?
为什么?
N=16呢?
五、实验报告要求
(1)完成各个实验任务和要求,附上程序清单和有关曲线。
(2)简要回答思考题。
实验二IIR数字滤波器设计及软件实现
一、实验目的
(1)熟悉用双线性变换法设计IIR数字滤波器的原理与方法。
(2)学会调用MATLAB信号处理工具箱中滤波器设计函数(或滤波器设计分析工具FDATool)设计各种IIR数字滤波器,学会根据滤波需求确定滤波器指标参数。
(3)掌握IIR数字滤波器的MATLAB实现方法。
(4)通过观察滤波器输入、输出信号的时域波形及其频谱,建立数字滤波的概念。
二、实验原理
设计IIR数字滤波器一般采用间接法(脉冲响应不变法和双线性变换法),应用最广泛的是双线性变换法。
基本设计过程是:
①将给定的数字滤波器的指标转换成过渡模拟滤波器的指标;②设计过渡模拟滤波器;③将过渡模拟滤波器系统函数转换成数字滤波器的系统函数。
MATLAB信号处理工具箱中的各种IIR数字滤波器设计函数都是采用双线性变换法。
滤波器设计函数butter、cheby1、cheby2和ellip可以分别被调用来直接设计巴特沃斯、切比雪夫1、切比雪夫2以及椭圆模拟与数字滤波器。
本实验要求调用如上函数直接设计IIR数字滤波器。
本实验的数字滤波器的MATLAB实现是指调用MATLAB信号处理工具箱函数filter对给定的输入信号x(n)进行滤波,得到滤波后的输出信号y(n)。
三、实验步骤及内容
(1)调用信号产生函数mstg产生由三路抑制载波调幅信号相加构成的复合信号st,该函数还会自动绘图显示st的时域波形和幅频特性曲线,如下图所示。
由图可见,三路信号时域混叠无法在时域分离。
但频域是分离的,所以可以通过滤波器的方法在频域分离,这就是本实验的目的。
(2)要求将st中三路调幅信号分离,通过观察st的幅频特性曲线,分别确定可以分离st中三路抑制载波单频调幅信号的三个滤波器(低通滤波器、带通滤波器、高通滤波器)的通频带截止频率和阻带截止频率。
要求滤波器的通带最大衰减为0.1dB,阻带最小衰减为60dB。
提示:
抑制载波单频调幅信号的数学表达式为
其中,
称为载波,
为载波频率,
称为单频调制信号,
为调制正弦波信号频率,且满足
。
由上式可见,所谓抑制载波单频调幅信号,就是两个正弦信号相乘,它有2个频率成分:
和频
、差频
,这两个频率成分关于载波频率
对称。
所以,1路抑制载波单频调幅信号的频谱图是关于载波频率
对称的两根谱线。
(3)编制程序调用MATLAB滤波器设计函数ellipord和ellip分别设计这三个椭圆滤波器,并绘图显示其损耗函数曲线。
(4)调用滤波器实现函数filter,用三个滤波器分别对信号产生函数mstg产生的信号st进行滤波,分离出st中三路不同载波频率的调幅信号
、
和
,并绘图显示
、
和
的时域波形,观察分离效果。
四、信号产生程序mstg清单
functionst=mstg
%产生信号序列向量st,并显示调幅信号相加形成的混合信号,长度N=800
N=800
Fs=10000;T=1/Fs;Tp=N*T
t=0:
T:
(N-1)*T;k=0:
N-1;f=k/Tp;
fc1=Fs/10;fm1=fc1/10;
fc2=Fs/20;
fm2=fc2/10;
fc3=Fs/40;
fm3=fc3/10;
xt1=cos(2*pi*fm1*t).*cos(2*pi*fc1*t);
xt2=cos(2*pi*fm2*t).*cos(2*pi*fc2*t);
xt3=cos(2*pi*fm3*t).*cos(2*pi*fc3*t);
st=xt1+xt2+xt3;
fxt=fft(st,N);
%===以下绘图部分
subplot(3,1,1)
plot(t,st);grid;xlabel('t/s');ylabel('s(t)');
axis([0,Tp/8,min(st),max(st)]);title('(a)s(t)的波形')
subplot(3,1,3)
stem(f,abs(fxt)/max(abs(fxt)),'.');grid;title('(b)s(t)的频谱')
axis([0,Fs/5,0,1.2]);
xlabel('f/Hz');ylabel('幅度')
五、思考题
(1)阅读信号产生函数mstg,确定三路调幅信号的载波频率和调制信号频率。
(2)信号产生函数mstg中采样点数N=1600,对st进行N点FFT可以得到6根理想谱线。
如果取N=1800,可否得到6根理想谱线?
为什么?
N=2000呢?
请改变函数mstg中采样点数N的值,观察频谱图验证你的判断是否正确。
(3)修改信号产生函数mstg,给每路调幅信号加入载波成分,产生调幅(AM)信号,重复本实验,观察AM信号与抑制载波调幅信号的时域波形及其频谱的差别。
提示:
AM信号的表达式:
六、实验报告要求
(1)简述实验目的及原理。
(2)画出实验主程序框图,打印程序清单。
(3)绘制三个分离滤波器的损耗函数曲线。
(4)绘制经滤波分离出的三路调幅信号的时域波形。
(5)简要回答思考题。
实验三FIR数字滤波器设计及软件实现
一、实验目的
(1)掌握用窗函数法设计FIR数字滤波器的原理和方法。
(2)掌握用等纹波最佳逼近法设计FIR数字滤波器的原理和方法。
(3)掌握FIR滤波器的快速卷积实现原理。
(4)学会调用MATLAB信号处理工具箱中滤波器设计函数设计与实现FIR滤波器。
二、实验内容及步骤
(1)认真复习用窗函数法和等纹波最佳逼近法设计FIR数字滤波器的原理。
(2)调用信号产生函数xtg产生具有加性噪声的信号xt,并自动显示xt及其频谱,如下图所示。
(3)设计低通滤波器,从高频噪声中提取xt中的单频调幅信号,要求信号失真小于0.1dB,将噪声频谱衰减60dB。
观察xt的频谱,确定滤波器指标参数。
(4)根据滤波器指标选择合适的窗函数,计算窗函数的长度N,调用MATLAB函数fir1设计一个FIR低通滤波器。
并编写程序,调用MATLAB快速卷积函数fftfilt实现对xt滤波。
绘图显示滤波器的频响特性曲线、滤波器输出信号的幅频特性图和时域波形图。
(5)重复(3),滤波器指标不变,但改用等纹波最佳逼近法,调用MATLAB函数remezord和remez设计FIR数字滤波器。
比较两种设计方法的滤波器阶数。
提示:
①MATLAB函数fir1和fftfilt的功能及其调用格式请查阅教材;
②采样频率Fs=1000Hz,采样周期T=1/Fs;
③根据实验要求,可选择滤波器指标参数:
通带截止频率fp=120Hz,阻带截止频率fs=150Hz,换算成数字频率,通带截止频率
,通带最大衰减为0.1dB,阻带截止频率
,阻带最小衰减为60dB。
三、思考题
(1)如果给定通带截止频率和阻带截止频率以及阻带最小衰减,如何用窗函数法设计线性相位低通滤波器?
请写出设计步骤。
(2)如果要求用窗函数法设计带通滤波器,且给定通带上、下截止频率为
和
,阻带上、下截止频率为
和
,试求理想带通滤波器的截止频率
和
。
(3)解释为什么对同样的技术指标,用等纹波最佳逼近法设计的滤波器阶数低。
四、实验报告要求
(1)对两种设计FIR滤波器的方法进行分析比较,简述其优缺点。
(2)附程序清单,打印实验内容要求绘图显示的曲线图。
(3)分析总结实验结果。
(4)简要回答思考题。
五、信号产生函数xtg程序清单
functionst=xtg
%信号x(t)产生函数,并显示信号的幅频特性曲线
%采样频率Fs=1000Hz
%载波频率fc=Fs/10=100Hz,调制正弦波频率f0=fc/10=10Hz.
N=1000;Fs=1000;T=1/Fs;Tp=N*T;
t=0:
T:
(N-1)*T;
fc=Fs/10;f0=fc/10;
mt=cos(2*pi*f0*t);
ct=cos(2*pi*fc*t);
xt=mt.*ct;
nt=2*rand(1,N)-1;
%===设计高通滤波器hn
fp=150;fs=200;Rp=0.1;As=70;
fb=[fp,fs];m=[0,1];
dev=[10^(-As/20),(10^(Rp/20)-1)/(10^(Rp/20)+1)];
[n,fo,mo,W]=remezord(fb,m,dev,Fs);
hn=remez(n,fo,mo,W);
yt=filter(hn,1,10*nt);
%===以下绘图部分
xt=xt+yt;%噪声附加信号
fst=fft(xt,N);k=0:
N-1;f=k/Tp;
subplot(3,1,1);plot(t,xt);grid;xlabel('t/s');ylabel('x(t)');
axis([0,Tp/5,min(xt),max(xt)]);title('(a)信号加噪声波形')
subplot(3,1,3);plot(f,abs(fst)/max(abs(fst)));grid;title('(b)信号加噪声的频谱')
axis([0,Fs/2,0,1.2]);xlabel('f/Hz');ylabel('幅度')
实验四CCS入门实验
一、实验目的
(1)熟悉CCS集成开发环境,掌握工程的生成方法;
(2)熟悉SEED-DTK5416实验环境;
(3)掌握CCS集成开发环境的调试方法。
二、实验内容
(1)编译与链接的设置,生成可执行的DSP文件;
(2)进行DSP程序的调试与改错;
(3)学习使用CCS集成开发工具的调试工具;
(4)观察实验结果。
三、实验准备
首先将光盘下03.ExamplesofProgram\04.SEED-DTK5416例程\3.1.5Math文件拷贝到D:
盘根目录下。
(1)将DSP仿真器与计算机连接好;
(2)将DSP仿真器的JTAG插头与SEED-DTK_MBoard单元的J1相连接;
(3)打开SEED-DTK5416的电源。
观察SEED-DTK_MBoard单元的+5V,+3.3V,+15V,-15V的电源指示灯是否量;若有不亮的,请断开电源,检查电源。
四、实验步骤
(1)进入CCS环境;
(2)点击Project-open命令,在弹出的对话框中添加DTK_DPD_MATH.pjt文件;
(3)点击在工程视窗中右键GELfile,在弹出的菜单中选择LoadGEL,在弹出的对话框中添加dtk-boot.gel文件。
(4)使用project-Build命令编译当前程序。
使用project-Buildall命令编译整个工程程序。
注意:
在这个实验中,为了加深对CCS的了解,分别在编译与链接过程中设置了错误行。
这些错误行都在程序调试中经常遇到的。
(5)按照下图所示添加.out文件,即使用File-LoadProgram菜单命令。
.out文件一般存放在math文件下的debug文件夹中。
(6)点击debug-GoMain回到C程序的入口main()函数处。
(7)使用F5快捷键,运行程序,在Stdout观察窗中查看程序运行的结果。
在运行程序到第一个断点在STDout观察窗内看定点运算是否正确。
然后再运行程序到第二个断点,观察浮点运算是否正确;再运行程序,观察浮点与定点之间的转换是否正确。
五、实验报告要求
(1)简述实验目的。
(2)简述实验步骤。
(3)实验小结。
实验五FFT算法的DSP实现
一、实验目的
1.熟悉CCS集成开发环境;
2.熟悉SEED-DTK5416实验环境;
3.加深对FFT算法原理和基本性质的理解
二、实验内容
1.A/D采样;
2.FFT的位倒序程序。
三、实验要求
对带有噪声的不同输入信号(正弦波、方波、三角波)进行FFT滤波。
四、实验步骤
1.打开CCS,进入CCS的操作环境;
2.装入FFT.pjt工程文件,添加dtk-boot.gel文件,开始进行调试;
3.打开fft.c文件,到第29,30行,可以修改宏定义SAMPLELONG和SAMPLERATE。
SAMPLELONG有3个选择1、2、3。
1表示采样长度为256,2表示采样长度为512,
3表示采样长度为1024。
SAMPLERATE有3个选择1、2、3。
1表示采样率为8k,2表示采样率为44k,3表示采样率为96k。
4.修改完宏定义后,编译、链接生成FFT.out文件,装载程序FFT.out;
5.在fft.c文件的137行设断点,如下图所示。
6.本实验和AD实验,数字滤波实验都需要设置实验箱信号源。
通过液晶屏和键盘,设置信号源:
当液晶屏上出现“通讯自检不成功,请复位系统”时,按下“Enter”键,进入“信号发生器设置”。
在“信号发生器设置”这一菜单下:
“通道”设置为“0”;
“信号类型”可根据需要任意选择;
“信号频率”和“信号振幅”可在屏幕下方“有效输入”限定的范围内任意输入,建议振幅设为1000左右,频率设为300左右。
“电压偏移”设为0;
信号发生器开关设为“开启”。
此时便有信号输入音频芯片AIC23的输入端。
7.运行程序。
当程序执行到断点时,可以观察收到的数据和显示的图像。
其中图像显示设置对话框中Startaddress:
起始地址;AcquisitionBufferSize:
输入数据个数;DisplayDataSize:
显示数据个数(注意:
显示个数要与程序中宏定义的采样个数一致);DSPDataType:
数据类型。
原始数据波形:
FFT结果数据波形:
8.重新执行第6)步,改变采样长度与采样频率,观察FFT变换结果或退出实验。
五、实验报告要求
(1)简述实验目的。
(2)完成各个实验任务和要求,附上程序清单和有关曲线。
(3)实验小结。
实验六IIR滤波器算法的DSP实现
一、实验目的
1.熟悉CCS集成开发环境;
2.熟悉SEED-DTK5416实验环境;
3.掌握数字滤波器的设计过程;
4.了解IIR的原理和特性;
5.熟悉设计IIR数字滤波器的原理和方法。
二、实验内容
1.通过MATLAB设计确定IIR滤波器系数;
2.DSP初始化;
3.A/D采样;
4.IIR运算,观察滤波前后的波形变化。
三、实验背景知识
1.无限冲击响应数字滤波器(IIR)的理论基础
I数字滤波器的输入x(k)和输出y(k)之间的关系可以用如下常系数线性差分方程及其z变换描述。
系统的转移为
设N=M,则传输函数变为
它具有N个零点和N个极点,如果任何一个极点在Z平面单位圆外,则系统不稳定。
如果系数
全为0,滤波器成为非递归的FIR滤波器,这时系统没有极点,因此FIR滤波器总是稳定的。
对于IIR滤波器,有系数量化敏感的缺点。
由于系统对序列施加的算法是由加法、延时和常系数乘三种基本运算的组合,所以可以用不同结构的数字滤波器来实现而不影响系统总的传输函数。
2.IIR数字滤波器的设计
数字滤波器设计的出发点是从熟悉的模拟滤波器的频率响应出发,IIR滤波器的设计有两种方法:
第一种方法先设计模拟低通滤波器,然后通过频带变换而成为其它频带选择滤波器(带通、高通等),zuihou通过滤波器变换得到数字域的IIR滤波器。
第二种方法先设计模拟低通滤波器,然后通过滤波器变换而得到数字域的低通滤波器,最后通过频带变换而得到期望的IIR滤波器。
为了用物理可实现的系统逼近理想滤波器的特性,通常对理想特性作如下修改:
(1)允许滤波器的幅频特性在通带和阻带有一定的衰减范围,幅频特性在这一范围内允许有起伏。
(2)在通带与阻带之间允许有一定的过渡带。
工程常用的逼近方式有巴特沃斯(Butterworth)逼近、切比雪夫(Chebyshev)逼近和椭圆函数逼近。
相应设计的滤波器分别为巴特沃斯滤波器、切比雪夫滤波器和椭圆函数滤波器。
巴特沃斯滤波器的模平方函数由下式描述:
n为阶数;
为滤波器截止频率。
切比雪夫滤波器比同阶的巴特沃斯滤波器具有更陡峭的过渡带特性和更优的阻带衰减特性。
切比雪夫低通滤波器的模平方函数定义为
其中,
为决定
等波动起伏幅度的常熟;n为滤波器阶数;
是n阶切比雪夫多项式。
3.本实验中IIR的算法公式
四、实验要求
对带有噪声的不同输入信号(正弦波、方波、三角波)进行IIR滤波。
五、实验步骤
1.打开CCS,进入CCS的操作环境;
2.装入IIR_Filter.pjt工程文件,添加dtk-boot.gel文件,开始进行调试;
3.打开filter.c文件在79行“iir_filter(dataright,SOSr,G,filter_result,
SampleLong,ROUND_IIR);”和第80行“i=0;”分别设置断点。
4.打开filter.c文件,到第30行修改SAMPLELONG宏定义。
SAMPLELONG是采样长度选择,有3个选择1、2、3。
1表示256,2表示512,3表示1024。
5.修改完宏定义后,编译、链接生成Filter.out文件,装载程序Filter.out;
6.本实验和FFT实验,AD实验都需要设置实验箱信号源。
通过液晶屏和键盘,设置信号源:
当液晶屏上出现“通讯自检不成功,请复位系统”时,按下“Enter”键,进入“信号发生器设置”。
在“信号发生器设置”这一菜单下:
“通道”设置为“0”;
“信号类型”可根据需要任意选择;
“信号频率”和“信号振幅”可在屏幕下方“有效输入”限定的范围内任意输入,建议振幅设为1000左右,频率设为300左右。
“电压偏移”设为0;
信号发生器开关设为“开启”。
此时便有信号输入音频芯片AIC23的输入端。
7.运行程序。
可观察收到的数据和显示的图像;
dataright数组显示的是原始信号图像;filter_result数组显示的是滤波后信号图像。
可以修改信号源,继续执行,观察不同信号源的滤波结果。
原始信号图像和滤波后的信号图像如下图所示:
其中图像显示设置对话框中Startaddress:
起始地址;AcquisitionBufferSize:
输入数据个数;DisplayDataSize:
显示数据个数(注意:
显示个数要与程序中宏定义的采样个数一致);DSPDataType:
数据类型。
滤波前:
滤波后:
8.重新执行第5)步,改变采样频率或采样长度,或者退出实验。
可以通过修改samplelong变量值来修改采样长度。
六、实验报告要求
(1)简述实验目的。
(2)完成各个实验任务和要求,附上程序清单和有关曲线。
(3)实验小结。
实验七FIR滤波器算法的DSP实现
一、实验目的
4.熟悉CCS集成开发环境;
5.熟悉SEED-DTK5416实验环境;
6.掌握数字滤波器的设计过程;
7.了解FIR的原理和特性;
8.熟悉设计FIR数字滤波器的原理和方法。
二、实验内容
3.通过MATLAB设计确定FIR滤波器系数;
4.DSP初始化;
5.A/D采样;
6.FIR运算,观察滤波前后的波形变化。
三、实验背景知识
1.有限冲击响应数字滤波器(FIR)的理论基础
FIR数字滤波器是一种非递归系统,其冲击响应h(n)是有限长序列,其差分方程表达式为:
。
N为FIR滤波器的阶数。
在数字信号处理应用中往往需要设计线性相位的滤波器,FIR滤波器在保证幅度特性满足技术要求的同时,很容易做到严格的线性相位特性。
为了使滤波器满足线性相位条件,要求其单位脉冲响应h(n)为实序列,且满足偶对称或奇对称条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n)。
这样,当N为偶数时,偶对称线性相位FIR滤波器的差分方程表达式为
由上可见,FIR滤波器不断地对输入样本x(n)延时后,再做乘法累加运算,将滤波器结果y(n)输出。
因此,FIR实际上是一种相乘累加运算。
而对线性相位FIR而言,利用线性相位FIR滤波器系数的对称性,可以采用结构精简的FIR结构将乘法器数目减少一半。
2.本实验中FIR的算法公式
四、实验要求
对带有噪声的不同输入信号(正弦波、方波、三角波)进行FIR滤波。
五、实验步骤
9.打开CCS,进入CCS的操作环境;
10.装入FIR_Filter.pjt工程文件,添加dtk-boot.gel文件,开始进行调试;
11.打开filter.c文件在79行“fir_filter(dataleft,hfir,filter_result,ORDER_FIR,
SampleLong,ROUND_FIR);”和第80行“i=0;”分别设置断点。
12.打开filter.c文件,到第20行修改SAMPLELONG宏定义。
SAMPLELONG是采样长度选择,有3个选择1、2、3。
1表示256,2表示512,3表示1024。
13.修改完宏定义后,编译、链接生成Filter.out文件,装载程序Filter.out;
14.本实验和FFT实验,AD实验都需要设置实验箱信号源。
通过液晶屏和键盘,设置信号源:
当液晶屏上出现“通讯自检不成功,请复位系统”时,按下“Enter”键,进入“信号发生器设置”。
在“信号发生器设置”