毕业设计 - 基于FPGA的FIR数字滤波器设计- 1(3)

2019-08-17 12:37

图2-9 Pole,Zero plot

结论:从上面程序运行情况分析,观察程序输出的幅频特性图中横线为-3dB,两条竖线分别位于频率π/4和5π/16。显然,通带指标有富裕,零极点图反应出大部分零极点在圆内,过渡带宽度和阻带最小衰减刚好满足指标要求。

4.窗函数选择法与规划思想

表2-2窗函数选择指标

名称 矩形 巴特利特 汉宁 哈明 布莱克曼 近似过渡带宽 4π/M 8π/M 8π/M 8π/M 12π/M 最小阻带衰减 21dB 25dB 44dB 51dB 74dB 精确过渡带宽 1.8π/M 6.1π/M 6.2π/M 6.6π/M 11π/M 取Kaiser窗时用MATLAB中的kaiserord函数来得到长度M 在设计指标中没有直接给出窗函数的,可以利用下面这个表格进行筛选,具体方法如下:

10

这个表格给出了近似过渡带宽、精确过渡带宽和最小阻带衰减,我们可以根据自己滤波器的参数来选择我们的窗函数,因为选择不同的窗函数设计出来的滤波器生成的过渡带宽度和阻带最小衰减是不同的。在这里我以一个例子来说明函数的选择方式: 用窗函数法设计FIR带通滤波器。指标如下: 高端通带截止频率

?ls?0.2?

高端阻带截止频率 ?lp?0.35? 低端阻带截止频率 ?up?0.65? 低端通带截止频率

?us?0.8?

通带最大衰减 Rp=1dB 阻带最小衰减 Rs=60dB

在这样一个例子中,可以看到它明确的给出了Rs=60dB来设置窗函数类型和阶次。表格中给出的blackman窗其滤波器阻带最小衰减是74dB,再利用给出的其他参数计算滤波器阶数。表中显示窗口长度M由过渡带宽度B=0.8π-0.65π=0.15π决定,而Blackman窗设计的滤波器过渡带宽度为12π/M,则M=12/0.15=80。又因M=N+1,所以滤波器阶数N=79。

在了解了怎么选择窗函数和计算滤波器阶数之后,本论文将针对实际FIR数字滤波器进行研究。已经给出了设计参数,下面开始利用MATLAB程序来设计这个滤波器。 5.窗函数法程序描述与思想

程序和对应的解释:

%用窗函数法设计FIR带通滤波器 clear;close all;

wls=0.2*pi;wlp=0.35*pi;whp=0.65*pi;

B=wlp-wls; %这里是在计算过渡带宽 N=ceil(12/0.15); %计算窗口长度

wc=[wlp/pi-6/N,whp/pi+6/N]; %设置理想带通截止频率 hn=fir1(N-1,wc,Blackman(N)); %设计滤波器参数 6.理论计算方法总结

仿真完成之后,掌握如何去利用已有的指标去设计一个滤波器,总的来说就是四项: 通过傅里叶逆变换获得理想滤波器的单位脉冲响应hd(n)。 分析给定参数,计算出滤波器的阶数,频率等等相关指标。

把已经有的参数用程序函数表达出来,利用已经有的各种内置函数架设起滤波器。 参看Matlab的输出图形和参数是否满足要求。

11

2.1.5 Matlab直接FDAtool设计方式解析

FDATool(Filter Design & Analysis Tool)是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(Filter Design Toolbox)。FDATool可以设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法。它操作简单,方便灵活。

FDATool界面总共分两大部分,一部分是Design Filter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。Design Filter部分主要分为:

Filter Type(滤波器类型)选项,包括Lowpass(低通)、Highpass(高通)、Bandpass(带通)、Bandstop(带阻)和特殊的FIR滤波器。

Design Method(设计方法)选项,包括IIR滤波器的Butterworth(巴特沃思)法、Chebyshev Type I(切比雪夫I型)法、 Chebyshev Type II(切比雪夫II型) 法、Elliptic(椭圆滤波器)法和FIR滤波器的Equiripple法、Least-Squares(最小乘方)法、Window(窗函数)法。

Filter Order(滤波器阶数)选项,定义滤波器的阶数,包括Specify Order(指定阶数)和Minimum Order(最小阶数)。在Specify Order中填入所要设计的滤波器的阶数(N阶滤波器,Specify Order=N-1),如果选择Minimum Order则MATLAB根据所选择的滤波器类型自动使用最小阶数。

Frenquency Specifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。它的具体选项由Filter Type选项和Design Method选项决定,例如Bandpass(带通)滤波器需要定义Fstop1(下阻带截止频率)、Fpass1(通带下限截止频率)、Fpass2(通带上限截止频率)、Fstop2(上阻带截止频率),而Lowpass(低通)滤波器只需要定义Fstop1、Fpass1。采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。

Magnitude Specifications选项,可以定义幅值衰减的情况。例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减)、Wpass(通带范围内的幅值衰减)、Wstop2(频率Fstop2处的幅值衰减)。当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。

参数要求:采样频率fs=100Hz,通带下限截止频率fc1=10 Hz,通带上限截止频率fc2=20 Hz,过渡带宽6 Hz,通阻带波动0.01,采用凯塞窗设计。

针对一个含有5Hz、15Hz和30Hz的混和正弦波信号已知滤波器的阶数n=38,beta=3.4。本例中,首先在Filter Type中选择Bandpass;在Design Method选项中选择FIR Window,接着在Window选项中选取Kaiser,Beta值为3.4;指定Filter Order项中的Specify order为38;采样频率Fs=100Hz,截止频率Fc1=10Hz,Fc2=20Hz。设置完以后点击窗口下方的Design Filter,在窗口上方就会看到所设计滤波器的幅频响应,通过菜单选项Analysis还可以看到滤波器的相频响应、组延迟、脉冲响应、阶跃响应、零极点配置等。设计完成后将结果保存为kaiser15.fda文件。我们可以根据FDAtool工具得到我们的滤波器相关增益。

系数转换成二进制码:

12

若采用乘法器,用1位整数位,1位符号位,共22位定点二进制数进行运算,负数用补码表示,由此将减法运算变成累加求和运算。各系数可用matlab编程转成二进制补码: /*

* Filter Coefficients (C Source) generated by the Filter Design and Analysis Tool *

* Generated by MATLAB(R) 7.0 and the *

* Generated on: 22-Mar-2011 20:09:12 * */ /*

* Discrete-Time FIR Filter (real) * -------------------------------

* Filter Structure : Direct-Form FIR * Filter Order : 38 * Stable : Yes * Linear Phase : Yes (Type 1) */

/* General type conversion for MATLAB generated C-code */ #include \/*

* Expected path to tmwtypes.h

* D:\\MATLAB7\\extern\\include\\tmwtypes.h */

const int BL = 39; const real64_T B[39] = {

-0.0008969942906957,0.001248746631882,0.007070735236406,0.009180571739749,-8.354434235897e-018,-0.01457672567709,-0.01798701306701,-0.005189936475222,0.006300913248271,-5.136773213647e-018,-0.009200436084654,0.01113207796169,0.05739543087552,0.07065284310647,-2.116878167777e-017,-0.1149210109554,-0.1575671556317,-0.05691148173912,0.1151784185022,0.2,0.1151784185022,-0.05691148173912,-0.1575671556317,-0.1149210109554,-2.116878167777e-017,0.07065284310647,0.05739543087552,0.01113207796169,

13

-0.009200436084654,-5.136773213647e-018,0.006300913248271,-0.005189936475222,-0.01798701306701,-0.01457672567709,-8.354434235897e-018,0.009180571739749,0.007070735236406,0.001248746631882,-0.0008969942906957 };

这是一个非常典型的例子,可以清晰的看到利用Matlab提供的FDAtool设计滤波器的方便与快捷。比较以上几种类型的滤波器参数,在给定的参数要求下,采用椭圆滤波器可以获得最佳的幅频响应特性,具有阶数低,过渡带窄等优点。虽然椭圆滤波器在通带也会产生波动,但考虑到波动处在可接受的范围内,仍然符合设计要求。

但由直接型传输函数表达式来实现并不实用。因此如前所说,将其分解为多个二阶传输函数的级联形式。借助Matlab 信号处理工具箱中函tf2sos(Transfer function to second- order- section)将传递函数转换为二阶级联形式。

对于是数字信号,需要对先前分析计算中分解获得的二阶子系统的滤波器系数进行量化,即用一个固定的字长加以表示。量化过程中由于存在不同程度的量化误差,由此会导致滤波器的频率响应出现偏差,严重时会使滤波器的极点移到单位圆之外,使系统不稳定。为了获得最优的滤波器系数,量化的精度也相当重要。

2.1.6 FDAtool设计模板及设计结果图

这里把上面的滤波器设计参数的总体图给出,如图2-10

14


毕业设计 - 基于FPGA的FIR数字滤波器设计- 1(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:高等教育心理学2016年 3套课堂小测

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: