- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
实验六FIR滤波器实验详解
实验六 FIR 滤波器实验
一 实验目的
(1) 了解FIR 滤波器的原理及使用方法;
(2) 了解使用Matlab 语言设计FIR 滤波器的方法;
(3) 了解DSP 对FIR 滤波器的设计及编程方法;
(4) 熟悉对FIR 滤波器的调试方法;
二 实验内容
(1) 要求设计滤波器采样频率为600Hz ,截止频率100Hz 的10阶低通滤波器。用汇编语言设计一个FIR 滤波器实现上面要求。
(2)要求设计滤波器采样频率为44000Hz ,截止频率2000Hz 的15阶低通滤波器。用C语言设计一个FIR 滤波器实现上面要求。
三 实验原理
FIR滤波器的输入x[k]和输出y[k]之间的关系可以用如下常系数线性差分方程及其z变换描述:
系统的转移函数为:
FIR 滤波器总是稳定的。由于系统 对序列施加的算法,是由加法、延时和常系数乘三种基本运算的组合,所以可以用不同结构的数字滤波器来实现而不影响系统总的传输函数。
图 6.1 四阶直接型FIR 滤波器的结构
四 实验步骤
1.滤波器的Matlab 语言设计
在Matlab 中使用滤波器设计工具箱(FDA )设计滤波器。
图 6.2 打开的FDA 主界面图
上图 6.2 是打开的滤波器设计的主界面图,在图6.2 上可以设计各种满足用户要求的
滤波器,包括滤波器的类型(IIR 或 FIR )、滤波器的阶数、滤波器的种类、滤波器的截至频率、带宽、纹波系数、采样频率等各种和设计滤波器有关的所有参数。
图中,我们设计10阶海明窗(Hamming)函数的FIR 型滤波器,采样频率为600HZ ,截至频率为100HZ 的低通滤波器。图中中间显示的数据为设计好的滤波器参数。
下图 6 .3 是对应频率特性图。
图 6.3 滤波器的频率特性
下图 6.4 是对应的冲激响应图。
图 6 .4 滤波器的冲激响应
图 6 .5 是对应的滤波器阶跃特性图。
图 6 .5 滤波器阶跃响应。
图 6 .6 是对应的滤波器极零点示意图。
图6 .6 滤波器的极零点
2.从 Matlab 语言转换成通用语言
使用Matlab 语言设计出滤波器的参数之后,紧接着需要编写通用的语言,以便向DSP
所需要的汇编语言转换,也直接使用C 语言,然后调用CCS 自带的C 编译器将C 语言转换
成汇编语言,但一般情况下,滤波器对实时要求比较高,而整个滤波器的程序编写也不是很
大,所以建议采用汇编语言编写。
********************* 输入信号产生程序***************************************
clear all;
clf;
N=256;
fs=600;
dt=1/fs
for k=1:N
f1=37.5;
f2=150;
y(k)=0.2+0.2*sin(2*pi*f1*k*dt)+0.08*sin(2*pi*f2*k*dt);
end
y=fft(y,N);
pyy=y.*conj(y);
f=(0:N/2-1);
plot(f/256*600,pyy(1:N/2))
图 6.8 和图 6.9 分别是滤波前和滤波后的信号功率谱图。
图 6.8 滤波前的信号功率谱图
图 6.9 滤波后的信号功率谱图
3 .滤波器的汇编语言设计
在编写汇编程序之前,首先将滤波器的参数写出,从上面滤波器的设计中我们得出滤
波器的参数如下,这些参数从图 6.2 打开的FDA 主界面图可以看到。图 6.10 是滤波器的
参数显示图。
图 6.10 滤波器的参数图
针对以上滤波参数,编写汇编语言程序如下:
.mmregs
.def start
.ref filter_start
K_DATA_SIZE .set 256 ; input data size
K_BUFFER_SIZE .s
文档评论(0)