毕业设计方案FPGA的FIR数字滤波器设计方案Word文档下载推荐.docx
- 文档编号:19177337
- 上传时间:2023-01-04
- 格式:DOCX
- 页数:35
- 大小:718.43KB
毕业设计方案FPGA的FIR数字滤波器设计方案Word文档下载推荐.docx
《毕业设计方案FPGA的FIR数字滤波器设计方案Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《毕业设计方案FPGA的FIR数字滤波器设计方案Word文档下载推荐.docx(35页珍藏版)》请在冰豆网上搜索。
设计初期在Matlab下对滤波器原理进行证明包括<
零极点图、时域和频域分析图等),分析FIR数字滤波器的多种理论设计思想和窗函数选择方法,在设计后期对FIR数字滤波器的小数乘法问题进行单独论证。
然后对分析出来的问题进行论证和解决,最后在QUARTUSⅡ中进行仿真验证。
1.4相关概念说明
数字滤波器<
Digitalfilter>
是由数字乘法器、加法器和延时单元组成的一种装置。
其功能是对输入离散信号的数字代码进行运算处理,以达到改变信号频谱的目的。
可认为是一个离散时间系统按预定的算法,将输入离散时间信号转换为所要求的输出离散时间信号的特定功能装置FIR<
FiniteImpulseResponse)由线性系统理论可知,在某种适度条件下,输入到线性系统的一个冲击完全可以表征系统。
当我们处理有限的离散数据时,线形系统的响应<
包括对冲击的响应)也是有限的。
若线性系统仅是一个空间滤波器,则通过简单地观察它对冲击的响应,我们就可以完全确定该滤波器。
通过这种方式确定的滤波器称为有限冲击响应<
FIR>
滤波器。
图1-1总体设计流程图
2FIR数字滤波器的设计方法
2.1理论部分
2.1.1引言
数字滤波器的功能一般是用来变换时域或者频域中某些要求信号的属性,滤除信号中某一部分频率分量。
经过数字滤波器的信号是让其频谱与数字滤波器的频率响应相乘从而得出新的结果。
经过一个线性卷积过程,从时域上输入信号与滤波器的单位冲击响应作一个卷积和。
下面是卷积定义式:
1)
LTI数字滤波器在一般情况下分为有限脉冲响应<
Finiteimpulseresponse)和无限脉冲响应(Infiniteimpulseresponse>
,FIR数字滤波器的设计方法和IIR滤波器的设计方法有很大的差别。
因为其设计方向是选择有限长度的h(n>
,使频率响应函数H(e
>
满足指标。
数字滤波器正在用直接的电子计算机规范和算法进行分析的方式来逐渐代替传统的模拟滤波器的RLC元器件和放大电路。
2.1.2FIR数字滤波器的基础
首先介绍FIR数字滤波器基本原理,在如下表格中对FIR和IIR数字滤波器进行了全面的比较:
表2-1两种滤波器特点比较分析
FIR数字滤波器
IIR数字滤波器
设计
方法
在一般的情况下,FIR数字滤波器没有设计公式。
它的设计需要借助计算机程序完成
可以利用AF的设计成果,可简单、有效地完成设计
阶数
高
低
稳定性
在稳定性方面<
稳定),极点全部在原点
存在一定的稳定性问题,需要注意
结构
非递归系统
递归系统
运算误差
一般情况下不存在反馈,运算的误差比较小
存在反馈,由于运算中的特殊运算方法会产生极限环
通常情况下一般数字滤波器的N阶FIR数字滤波器基于输入信号x(n>
的表达式为:
2)
这个公式给我们了一个非常明了的直接型网络结构,该结构表现出N个乘法器,每次采样y(n>
的内容是n次乘法和n-1次加法,然后做乘累加之和。
如图2-1所示:
图2-1FIR滤波器直接型网络结构
从DSP的介绍中,第一类线性相位对h(n>
的约束条件:
3)
(4>
由公式<
3),<
4)我们可以推出:
5)
移相并利用三角公式化简得到:
(6>
从数字信号处理学科中知道函数
关于求和区间的中心<
N-1)/2奇对称,于是我们要求
和h(n>
满足如下条件:
其中对应的有
7)
图2-2线性相位FIR滤波器结构
若h(n>
呈现对称特性,即此具有线性相位的滤波器是FIR数字滤波器。
滤波器的基础网络结构可以相互进行转换。
在前面本文已经讨论过,FPGA的实现中将对各种方法进行比较,找出最优设计方式。
从而达到减少资源占有和提高系统作业速度的目的,更好的体现实时性的数字滤波器优势。
2.1.3数字滤波器的设计原理
在数字信号处理技术的研究中,一般是使用的三种设计方法:
窗函数法,FDATool直接设计法,程序编译法。
本文首先使用窗函数和Matlab软件共同进行设计。
随着软件技术的不断发展,Matlab软件能给设计者带来的数字信号处理工作已经非常的完善和多样了,设计者可以利用Matlab软件进行数字滤波器的设计和仿真,而且还可以用这款软件进行设计的优化。
数字滤波器的一般设计步骤如下:
1.指标的确定
做任何工程或者设计,设计者都必须要有一个期望的指标用来限制设计范围。
在很多的实际应用中,设计者常常都是使用数字滤波器做选频的工作。
因此,指标的形式一半在频域中给出相位响应和幅度。
相位响应的指标形式,一半是指系统在通频带中药有线性相位。
幅度指标:
绝对指标,它给出对幅度响应函数的要求,一般用于FIR滤波器的设计。
相对指标,以分贝值的形式给出具体限制。
2.逼近目标
设计者做高频的时候大概都有一个模式,就是首先得到技术指标,然后利用我们的技术和工具让我们的产品去逼近这个指标。
同理我们首先建立以个目标的数字滤波器模型。
一般情况下都是采用理想的数字滤波器模型,然后去逼近我们想要的目标数字滤波器参数。
3.计算机仿真和性能优化分析
在工作中我们发现通过<
1)、<
2)之后本文会得到以差分、系统函数或者冲击响应这三种方式描述的滤波器。
这个时候设计者可以利用计算进行仿真,在系统中分析技术指标和滤波结果是否是希望得到的结果。
图2-3各种理想数字滤波器的幅度频率响应
2.1.4FIR数字滤波器的理论计算方式与参数转换思想
在理论上掌握了FIR数字滤波器的基本原理之后,本文需要对设计思想进行一个多方位的论证和尝试。
首先设计者设计滤波器要有一个硬性的指标,这个指标可以是直接给出最基本的数据,也有多重表现形式。
于是我例举两种特殊的指标形式然后加以解决设计。
然后我们分别用2种方式来设计不同指标的滤波器。
接下来我首先用程序的方式来实现滤波器:
1.逼近法转换与思想
使用remez函数设计FIR低通滤波器
设计滤波器,使逼近低通滤波特性|
|。
|
|=
要求通带波纹
,阻带衰减
,并用最小阶数实现。
绘出设计的FIR数字滤波幅频特性曲线,检验设计指标。
这个指标我们可以以如下计算方法来得出详细指标:
从给出的低通滤波特性|
我们可以看出设计参数
f=[1/4,5/16],m=[1,0]。
dev的计算根据公式:
Rp=-20
于是有Rp=20
,
所以dev(1>
,dev(2>
可以被表示出来。
2.逼近法程序描述与思想
有了这几个参数我们现在就可以根据已经设定好的格式来调用函数remezord和remez函数了,于是可得如下程序。
clear。
closeall
fc=1/4。
fs=5/16。
%输入给定指标
Rp=3。
As=60。
Fs=2。
f=[fc,fs]。
m=[1,0]。
%计算remezord函数所需参数f,m,dev
dev=[(10^(Rp/20>
-1>
/(10^(Rp/20>
+1>
,10^(-As/20>
]。
[N,fo,mo,W]=remezord(f,m,dev,Fs>
。
%确定remez函数所需参数
hn=remez(N,fo,mo,W>
%调用remez函数进行设计
hw=fft(hn,512>
%求设计出的滤波器频率特性
w=[0:
511]*2/512。
plot(w,20*log10(abs(hw>
grid。
%画对数幅频特性图
axis([0,max(w>
/2,-90,5]>
xlabel('
w/pi'
ylabel('
Magnitude(dB>
'
line([0,0.4],[-3,-3]>
%画线检验设计结果
line([1/4,1/4],[-90,5]>
line([5/16,5/16],[-90,5]>
程序结束。
3.仿真图像与结果
用以上的程序我们可以得到在Matlab中的许多参数和图像,从而进一步分析我们的设计。
首先引入程序输出的幅频特性图:
如图2-4)
图2-4在Matlab中的程序
图2-5程序输出的幅频特性
图2-6ImpulseResponse
图2-7MagnitudeandPhaseResponses
图2-8PhaseDelay
图2-9Pole,Zeroplot
结论:
从上面程序运行情况分析,观察程序输出的幅频特性图中横线为-3dB,两条竖线分别位于频率π/4和5π/16。
显然,通带指标有富裕,零极点图反应出大部分零极点在圆内,过渡带宽度和阻带最小衰减刚好满足指标要求。
4.窗函数选择法与规划思想
表2-2窗函数选择指标
名称
近似过渡带宽
最小阻带衰减
精确过渡带宽
矩形
4π/M
21dB
1.8π/M
巴特利特
8π/M
25dB
6.1π/M
汉宁
44dB
6.2π/M
哈明
51dB
6.6π/M
布莱克曼
12π/M
74dB
11π/M
取Kaiser窗时用MATLAB中的kaiserord函数来得到长度M
在设计指标中没有直接给出窗函数的,可以利用下面这个表格进行筛选,具体方法如下:
这个表格给出了近似过渡带宽、精确过渡带宽和最小阻带衰减,我们可以根据自己滤波器的参数来选择我们的窗函数,因为选择不同的窗函数设计出来的滤波器生成的过渡带宽度和阻带最小衰减是不同的。
在这里我以一个例子来说明函数的选择方式:
用窗函数法设计FIR带通滤波器。
指标如下:
高端通带截止频率
高端阻带截止频率
低端阻带截止频率
低端通带截止频率
通带最大衰减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带通滤波器
closeall。
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的输出图形和参数是否满足要求。
2.1.5Matlab直接FDAtool设计方式解读
FDATool(FilterDesign&
AnalysisTool>
是MATLAB信号处理工具箱里专用的滤波器设计分析工具,MATLAB6.0以上的版本还专门增加了滤波器设计工具箱(FilterDesignToolbox>
FDATool可以设计几乎所有的基本的常规滤波器,包括FIR和IIR的各种设计方法。
它操作简单,方便灵活。
FDATool界面总共分两大部分,一部分是DesignFilter,在界面的下半部,用来设置滤波器的设计参数,另一部分则是特性区,在界面的上半部分,用来显示滤波器的各种特性。
DesignFilter部分主要分为:
FilterType(滤波器类型>
选项,包括Lowpass(低通>
、Highpass(高通>
、Bandpass(带通>
、Bandstop(带阻>
和特殊的FIR滤波器。
DesignMethod(设计方法>
选项,包括IIR滤波器的Butterworth(巴特沃思>
法、ChebyshevTypeI(切比雪夫I型>
法、ChebyshevTypeII(切比雪夫II型>
法、Elliptic(椭圆滤波器>
法和FIR滤波器的Equiripple法、Least-Squares(最小乘方>
法、Window(窗函数>
法。
FilterOrder(滤波器阶数>
选项,定义滤波器的阶数,包括SpecifyOrder(指定阶数>
和MinimumOrder(最小阶数>
在SpecifyOrder中填入所要设计的滤波器的阶数(N阶滤波器,SpecifyOrder=N-1>
,如果选择MinimumOrder则MATLAB根据所选择的滤波器类型自动使用最小阶数。
FrenquencySpecifications选项,可以详细定义频带的各参数,包括采样频率Fs和频带的截止频率。
它的具体选项由FilterType选项和DesignMethod选项决定,例如Bandpass(带通>
滤波器需要定义Fstop1(下阻带截止频率>
、Fpass1(通带下限截止频率>
、Fpass2(通带上限截止频率>
、Fstop2(上阻带截止频率>
,而Lowpass(低通>
滤波器只需要定义Fstop1、Fpass1。
采用窗函数设计滤波器时,由于过渡带是由窗函数的类型和阶数所决定的,所以只需要定义通带截止频率,而不必定义阻带参数。
MagnitudeSpecifications选项,可以定义幅值衰减的情况。
例如设计带通滤波器时,可以定义Wstop1(频率Fstop1处的幅值衰减>
、Wpass(通带范围内的幅值衰减>
、Wstop2(频率Fstop2处的幅值衰减>
当采用窗函数设计时,通带截止频率处的幅值衰减固定为6db,所以不必定义。
参数要求:
采样频率fs=100Hz,通带下限截止频率fc1=10Hz,通带上限截止频率fc2=20Hz,过渡带宽6Hz,通阻带波动0.01,采用凯塞窗设计。
针对一个含有5Hz、15Hz和30Hz的混和正弦波信号已知滤波器的阶数n=38,beta=3.4。
本例中,首先在FilterType中选择Bandpass;
在DesignMethod选项中选择FIRWindow,接着在Window选项中选取Kaiser,Beta值为3.4;
指定FilterOrder项中的Specifyorder为38;
采样频率Fs=100Hz,截止频率Fc1=10Hz,Fc2=20Hz。
设置完以后点击窗口下方的DesignFilter,在窗口上方就会看到所设计滤波器的幅频响应,通过菜单选项Analysis还可以看到滤波器的相频响应、组延迟、脉冲响应、阶跃响应、零极点配置等。
设计完成后将结果保存为kaiser15.fda文件。
我们可以根据FDAtool工具得到我们的滤波器相关增益。
系数转换成二进制码:
若采用乘法器,用1位整数位,1位符号位,共22位定点二进制数进行运算,负数用补码表示,由此将减法运算变成累加求和运算。
各系数可用matlab编程转成二进制补码:
/*
*FilterCoefficients(CSource>
generatedbytheFilterDesignandAnalysisTool
*
*GeneratedbyMATLAB(R>
7.0andthe
*Generatedon:
22-Mar-201820:
09:
12
*/
*Discrete-TimeFIRFilter(real>
*-------------------------------
*FilterStructure:
Direct-FormFIR
*FilterOrder:
38
*Stable:
Yes
*LinearPhase:
Yes(Type1>
/*GeneraltypeconversionforMATLABgeneratedC-code*/
#include"
tmwtypes.h"
/*
*Expectedpathtotmwtypes.h
*D:
\MATLAB7\extern\include\tmwtypes.h
*/
constintBL=39。
constreal64_TB[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,.0573********,0.07065284310647,-2.116878167777e-017,-0.1149210109554,-0.157********17,-0.05691148173912,0.1151784185022,0.2,0.1151784185022,-0.05691148173912,-0.157********17,-0.1149210109554,-2.116878167777e-017,0.07065284310647,.0573********,0.01113207796169,-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(Transferfunctiontosecond-order-section>
将传递函数转换为二阶级联形式。
对于是数字信号,需要对先前分析计算中分解获得的二阶子系统的滤波器系数进行量化,即用一个固定的字长加以表示。
量化过程中由于存在不同程度的量化误差,由此会导致滤波器的频率响应出现偏差,严重时会使滤波器的极点移到单位圆之外,使系统不稳定。
为了获得最优的滤波器系数,量化的精度也相当重要。
2.1.6FDAtool设计模板及设计结果图
这里把上面的滤波器设计参数的总体图给出,如图2-10
图2-10FIR带通滤波器总体设计参数
2.2程序分析部分
根据上述FIR低通数字滤波器的原理与滤波特性,我们在上面的软件实践中已经掌握了设计数字滤波器的方法并且成功的使用Matlab/Simulink进行了设计和仿真。
通过以上的过程我们可以导出一定性能的FIR滤波器频率响应与抽头系数,然后用VerilogHDL语言设计和QUARTUSⅡ仿真FIR低通数字滤波器,实现用软件描述硬件的动作及功能,应用软件来实现数字滤波器的功能和时序仿真。
2.2.1FPGA可编程逻辑元件
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 毕业设计 方案 FPGA FIR 数字滤波器 设计方案