基于DSP的FIR数字滤波器的设计与开发.docx
《基于DSP的FIR数字滤波器的设计与开发.docx》由会员分享,可在线阅读,更多相关《基于DSP的FIR数字滤波器的设计与开发.docx(22页珍藏版)》请在冰豆网上搜索。
基于DSP的FIR数字滤波器的设计与开发
淮北师范大学
2011届学士学位论文
基于DSP的FIR数字滤波器的
设计与实现
学院、专业物理与电子信息学院电子信息工程
研究方向数字信号处置
学生姓名桑建军
学号036
指导教师姓名周建芳
指导教师职称讲师
2011年04月28日
基于DSP的FIR数字滤波器的设计与实现
桑建军
淮北师范大学物理与电子信息学院235000
摘要数字滤波器是数字信号处置中最重要的组成部份之一,数字滤波器是由数字乘法器、加法器和延时单元组成的一种算法或装置,可作为应用系统对信号的前期处置。
用DSP芯片实现的数字滤波器具有稳固性好、精准度高、灵活性强及不受外界阻碍等特性。
因此基于DSP实现的数字滤波器普遍应用于语音图像处置、数字通信、频谱分析、模式识别、自动操纵等领域,具有广漠的进展空间。
本文第一介绍了数字滤波器的概念及分类,和数字滤波器的实现方式。
在明白得FIR滤波器的工作原理及其设计方式的基础上,在MATLAB环境下利用矩形窗设计实现FIR滤波器。
然后通过DSP结合软件进行编程,最终实现了基于DSP的FIR数字低通滤波器的设计。
仿真结果说明,基于DSP实现的滤波器具有稳固性好、精准度高、灵活性强等优势,并能实现对信号的实时滤波。
关键词FIR数字滤波器;DSP;窗函数法;MATLAB;TMS320C5402
DesignandRealizationofFIRdigitalfilterBasedonDSP
SangJianjun
DepartmentofPhysicsandElectronicinformation,HuaiBeiNormalUniversity235000
AbstractAdigitalfilter,whichisoneofthemostimportantpartsofdigitalsignalprocessing,isanalgorithmoradevicemadeofdigitalontime-multiplier,adderanddelayofelements.Itcanbeusedtobethepretreatmentofsignalbyapplicationprogram.TheFIRdigitalfilterBasedonDSPhasmanyfeatures,suchasuninfluenced,highaccuracy,goodstabilityandhighlyflexible.Thedigitalfilteriswidelyusedinfieldsofspeechimageprocessing,digitalcommunication,spectrumanalysis,patternrecognitionandautomaticcontrol,etc.Itwillhasbroadspacefordevelopment.
Thispaperfirstlyintroducestheconceptofdigitalfilter,classification,andtherealizationmethodofdigitalfilter.OnthebasisofunderstandingFIRfiltersworkingprincipleanddesignmethod,weuserectangularwindowtorealizethedesignofFIRlow-passfiltersundertheMATLABenvironment.Then,makingthedesignofFIRdigitallow-passfilterscometruethroughprogrammingbycombinationoftheDSPand.ThesimulationresultsshowthatthefilterbasedonDSPrealizinghavegoodstability,highprecision,flexibility,etc,andcanalsorealizereal-timefiltering.
KeywordsFIRdigitalfilter;DSP;Windowmethod;MATLAB;TMS320C5402
目次
1引言
随着信息时期的到来,数字信号处置已成为现今一门极为重要的学科和技术领域。
数字信号在通信、语音、图像、自动操纵、雷达、航空航天、医疗和家用电器等众多领域取得了普遍的应用。
在数字信号处置中数字滤波占有极为重要的地位,与模拟滤波相较,数字滤波具有很多突出优势,比如精准度高、稳固、灵活、不要求阻抗匹配、容易实现线性相位、还能够幸免模拟滤波器无法克服的电压漂移、温度漂移和噪声偏移等问题。
数字滤波器的概念
所谓数字滤波器[1],是指输入、输出均为数字信号,通过数值运算关系改变输入信号所含频率成份的相对照例,或滤除某些频率成份的器件。
假设其系统函数为h(z),其脉冲响应为h(n),对输入时刻序列x(n),假设输出时刻序列为y(n),那么它们在时域内有如下关系:
y(n)=h(n)*x(n)
在Z域内有如下关系:
y(z)=h(z)*x(z)
(1)
式
(1)中x(z)、y(z)别离是x(n)、y(n)的z变换。
在频域内有如下关系:
y(jw)=h(jw)*x(jw)
(2)
式
(2)中h(jw)是数字滤波器的频率特性;x(jw)、y(jw)别离是x(n)、y(n)的频谱,而w是数字角频率。
数字滤波器的分类
依照不同的分类方式,数字滤波器有许多种类,但总起来能够分成两大类:
经典滤波器和现代滤波器。
经典滤波器的特点是输入信号中有效的频率成份和希望滤除的的频率成份各占有不同的频带,通过一个适合的的选频滤波器达到滤波的目的。
例如,输入信号中含有干扰,若是信号和干扰的频带互不重叠,可滤除干扰取得纯信号。
但是,若是信号和干扰的频带相互重叠,那么经典滤波器不能有效滤除干扰,这时就需要采纳现代滤波器,例如维纳滤波器,卡尔曼滤波器、自适应滤波器等最正确滤波器。
现代滤波器是依照随机信号的一些统计特性,在某种最正确准那么下,最大限度地抑制干扰,同时最大地恢复信号,从而达到最正确滤波的目的。
经典数字滤波器从滤波特性上分类,能够分成低通、高通、带通和带阻等滤波器。
它们有些理想幅频特性,是不可能实现的因为他们的的单位响应均是非因果且是无穷长的。
咱们只能依照某些准那么去设计滤波器使之在误差容限内逼近理想滤波器,因此理想的滤波器可作为逼近的标准[2]。
数字滤波器从实现的网络结构或从单位脉冲响应长度分类,可分为成无穷长单位脉冲响应(IIR)滤波器和有限长单位脉冲响应(FIR)滤波器。
FIR滤波器具有不含反馈环路、结构简单和实现严格线性相位等优势,因此在相对要求比较严格的条件下,采纳FIR滤波器。
数字的滤波器的进展及其优越性
21世纪是数字化的时期,随着愈来愈多的电子产品将数字信号作为技术的核心,DSP已经成为推动数字化进程的动力,作为数字化的技术之一,DSP不管是在其应用广度上仍是深度上,都在以前所未有的速度向前进展。
数字信号处置由于运算速度快,具有可编程特性和接口灵活的特点,使得它在许多电子产品的研制、开发和应用中,发挥着及其重要的作用。
采纳DSP芯片来实现数字信号处置系统是当前科技进展的必然趋势。
在数字信号处置中,数字滤波器占及其重要的地位。
数字滤波是语音和图像处置、模式识别、频谱分析等应用中的大体算法之一。
在许多信号处置应用顶用数字滤波器替代模拟滤波器具有许多优势。
数字滤波器容易实现不同的幅度和相位频率特性指标,克服了与模拟滤波器性能相关的电压漂移、温度漂移和噪声等问题。
用DSP芯片实现数字滤波器除具有较好的稳固性、较高的精准度、不受外界环境阻碍外,还具有灵活性特点。
在用可编程DSP实现数字滤波器可通过修改滤波器的参数十分方便的改变滤波器的相关特性。
在多数应用中也都希望依照期望指标把一个信号的频谱加以修改、整形或运算。
这些进程都可能包括一个衰减频率范围,阻止或隔离一些频率成份,用数字滤波器来实现这些功能是方便、有效、可行的[3]。
数字滤波器的实现方式
数字滤波器的实现方式有以下三种:
(1)用运算机软件实现
软件实现方式确实是在通用的微型运算机上用软件来实现。
利用运算机的存储器、运算器和操纵器把滤波所要完成的运算编程程序通过运算机来执行,软件可由利用者自己编写,也可利用现成的。
国内外的研究机构、公司已经推出了不同语言的信号滤波器处置软件包。
可是这种方式速度很慢,难以对信号进行实时处置,尽管可由用快速傅立叶变换算法累加,来加速计算速度,但要达到实时处置仍是要付出很高的代价,因此该方式多在教学与科研中利用。
(2)采纳DSP(DigitalSignalProcessing)处置器来实现
DSP处置器是专为数字信号处置而设计的,如TI公司的TMS320CX系列,AD公司的ADSP21X,ADSP210X系列等。
它的要紧数字运算单元是一个乘累加器(MAC),能够在一个机械周期内完成一次成累加运算,配有适合于信号处置的指令,具有独特的循环寻址和倒序寻址能力。
这些特点都超级适合数字信号处置中的滤波器设计的有效实现,而且它速度快,本钱低,在过去的20连年的时刻里,软件可编程的DSP器件几乎统治了商用数字信号处置硬件的市场。
用DSP芯片实现数字滤波除具有稳固性好、精准度高、不受环境阻碍外,还具有灵活性好的特点。
用可编程DSP芯片实现数字滤波可通过修改滤波器的参数十分方便的改变滤波器的特性。
(3)用FPGA可编程器件来实现
利用相关开发工具和VHDL等硬件开发语言,通过软件编程用硬件实现特定的数字滤波算法。
这一方式由于具有通用性的特点并能够实现算法的并行运算,不管是作为独立的数字信号处置,仍是作为DSP芯片的协作处置器都是比较活跃的一个研究领域[4]。
通过比较以上三种方式可见:
能够采纳MATLAB等软件来学习数字滤波器的大体知识,计算数字滤波器是系数,研究算法的可行性,对数字滤波器进行前期的仿真。
也能够采纳DSP或FPGA来实现硬件电路。
本文重点研究在利用DSP来实现数字滤波的设计。
2FIR数字滤波器的设计原理及MATLAB的实现
FIR数字滤波器的大体网络结构
设单位脉冲响应h(n)长度为N,输入信号为x(n),那么FIR数字滤波器确实是要实现以下差分方程:
(3)
式(3)确实是FIR数字滤波器的差分方程,FIR网络结构特点确实是没有反馈支路,即没有环路,因此它是无条件的稳固系统,其单位脉冲响应h(n)是一个有限长序列。
由上面的方程可知,FIR滤波器事实上是一种乘法累加运算,不断地输入样本x(n),经延时(
),做乘法累加,再输出滤波结果y(n)。
对式(3)进行Z变换,经整理后可得FIR滤波器的传递函数H(z)为
(4)
由式(4)能够看出,FIR数字滤波器一样网络结构,如下图1所示。
图1FIR数字滤波器一样网络结构
FIR数字滤波器的设计方式
FIR数字滤波器的设计方式要紧有窗函数和频率采样等设计方式,其中窗函数设计法是最大体的设计方式。
在设计FIR滤波器时,一个最重要的计算确实是加窗,其中采纳矩形窗是最直接也是最简便的方式。
本文要紧采纳矩形窗设计方式。
2.2.1窗函数法设计的大体思想
窗函数的设计思想是选择一种适合的理想频率特性的滤波器,然后截断它的脉冲取得一个线性相位和因果的滤波器。
因此这种方式关键在于选择某种适合的窗函数和一种理想滤波器。
关于给定的滤波器的技术指标,选择滤波器长度具有最窄主瓣宽度和尽可能小的旁瓣衰减的某个窗函数。
现介绍如下。
第一设希望逼近的滤波器频率响应函数为
,其单位脉冲响应是
。
(5)
(6)
若是能够由已知的
求出
,通过Z变换可取得滤波器的系统函数。
但通常以理想的滤波器作为
,其幅度特性逐段恒定,在边界频率处有不持续点,因此
是无穷时宽的,且是非因果序列。
但是咱们实际设计的滤波器的单位脉冲响应为h(n),长度为N,其系数函数H(z)为
(7)
如此用一个有限长的序列h(n)去代替
,确信会引发误差,表此刻频域确实是通常所说的吉布斯效应。
这种吉布斯效应是由于将
直接截断引发的,因此,也称为截断效应。
如何构造窗函数w(n),用来减少截断效应,这就需要设计一个能知足技术要求的FIR线性相位滤波器。
2.几种常见的窗函数
采纳窗函数设计方式关键在于选择某种适合的窗函数和理想的滤波器。
常见的窗函数有[5]:
矩形窗、三角形窗、汉宁窗、哈明窗、布莱克曼窗、凯塞窗。
这六种窗函数的大体参数如表1。
.
表1六种窗函数的大体参数
窗函数类型
旁瓣峰值
/dB
过渡带宽度
阻带最小衰减
/dB
近似值
精确度
矩形窗
-13
4
/N
N
-21
三角窗
-25
8
/N
N
-25
汉宁窗
-31
8
/N
N
-44
哈明窗
-41
8
/N
N
-53
布莱克曼窗
-57
12
/N
11
/N
-74
凯塞窗
-57
10
/N
-80
表中过渡带和阻带最小衰减是用对应的窗函数设计的FIR数字滤波器的频率响应指标。
MATLAB信号处置工具箱提供了十四种窗函数的产生函数,下面列出上述六种窗函数的产生函数及挪用格式:
wn=boxcar(N)%列向量wn中返回长度为N的矩形窗函数w(n)
wn=bartlett(N)%列向量wn中返回长度为N的三角窗函数w(n)
wn=banning(N)%列向量wn中返回长度为N的汉宁窗函数w(n)
wn=hamming(N)%列向量wn中返回长度为N的哈明窗函数w(n)
wn=blackman(N)%列向量wn中返回长度为N的布莱克曼窗函数w(n)
wn=kaiser(N,beta)%列向量wn中返回长度为N的凯塞窗函数w(n)
窗函数的选择原那么是:
第一:
具有较低的旁瓣幅度,尤其是第一旁瓣幅度。
第二:
旁瓣幅度下降要尽可能大,以利于增加阻带衰减。
第三:
主瓣的宽度要尽可能窄,以取得较陡的过渡带。
通常情形下上述三点很难同时知足,被选择主瓣宽度较窄时,尽管取得了较陡的过渡带,可是通带和阻带明显增加;被选用最小的旁瓣幅度时尽管能取得匀滑幅度响应和较小的阻带波动,但过渡带又加宽了。
因此咱们在选择窗函数往往时折当选择。
在保证主瓣宽度达到必然要求的条件下,适当的捐躯主瓣宽度来换取旁瓣匀滑幅度响应和波动减少。
2.用窗函数法设计FIR滤波器的步骤
窗函数设计滤波器的步骤如下:
(1)依照对阻带衰减及过渡带的指标要求,选择窗函数的类型,并估量窗口长度N。
先依照阻带衰减选择窗函数类型。
原那么是保证阻带衰减知足要求的情形下,尽可能选择主瓣窄的窗函数。
然后依照过渡带宽度估量窗口长度N。
(2)构造希望逼近的频率响应函数
,即
(8)
所谓的“标准窗函数法”,确实是选择
为线性相位理想滤波器(理想低通、理想高通、理想带通、理想带阻)。
(3)计算
。
若是给出待求滤波器的频响函数为
,那么单位脉冲响应用下式求出:
(9)
若是
较复杂,或不能用封锁公式表示,那么不能用上式求出
。
咱们能够对
从w=0到w=2
采样M点,采样值为
进行M点IDFT取得:
(10)
依照频域采样理论,
与
应知足:
(11)
因此,若是M选得够大,能够保证在窗口内
有效地逼近
。
由此可求出单位脉冲响应
为
(12)
为保证线性相位特性,
=(N-1/2)。
(4)加窗即可取得设计结果:
h(n)=
w(n)。
FIR数字滤波器的MATLAB的实现
Matlab是美国MathWorks公司自20世纪80年代中期推出的数学软件,优秀的数值计算能力和卓越的数据可视化能力使其专门快在数学软件中脱颖而出。
MATLAB语言是现今国际科学界最具有阻碍力、最有活力、和应用最普遍的软件之一。
它提供了壮大的科学运算、灵活的程序设计流程、高质量的图形可视化与界面设计、便利与其他程序接口功能;它提供了数字处置工具箱,使数字处置比以前更为简练方便且成效更好[6][7]。
MATLAB集成了一套功能壮大的滤波器设计工具FDATool,它涵盖了信号处置工具箱中所有滤波器设计方式,利用它能够方便地完成多种滤波器的设计、分析和性能评估。
第一应依照指标参数及对滤波器特性的要求,选择适合的滤波器类型及设计方式进行设计。
本文以采纳矩形窗设计低通数字滤波器为例。
所设计的滤波器技术指标为:
滤波器阶数为51,采样频率fs为181KHz,滤波器截止频率fc为10Kz的滤波器。
设计的仿真结果如图2,图3所示。
图2幅频曲线
图3相频曲线
由图2,图3可得:
图2为本次所设计滤波器的幅频特性曲线,图3为本次所设计滤波器的相频特性曲线。
由图能够看出所设计的滤波器具有良好的低通滤波特性,在通带内具有严格的线性相位。
3基于DSP的FIR数字滤波器的设计与实现
上节介绍了利用MATLAB工具箱实现数字滤波器,尽管能够方便地实现数字滤波,可是MATLAB实现的滤波器不能实现对输入信号的实时处置,当输入信号改变时需要再次改变滤波器参数,比较繁琐。
而基于DSP实现的数字滤波能够克服修改参数,那个繁琐的问题,实现实时滤波实时处置的特性。
DSP芯片的概述
数字信号处置器(DSP)是一种能对数字信号进行高速实时处置的高速处置器,其主若是用来快速的实现各类数字处置的算法。
在现今的数字化时期中,DSP已经成为通信设备,运算机网和其它电子产品的大体元器件。
TI公司的2000系列和5000系列的DSP都是通用型的芯片,考虑到2000系列的DSP多用于操纵方面,而5000系列较2000系列具有更高的时钟频率、更低的价钱和加倍壮大的运算功能,因此在数字滤波器系统的设计中采纳了TI公司的一款高性能,低功耗特点的DSP:
TMS320VC5402该DSP具有较快的运算速度:
运算速度最快可达532MIPS;采纳了低功耗设计方式:
内核电压为,I/O电压为[8]。
本文采纳的DSP芯片为TMS320VC5402,下面介绍本文所用到的DSP实验箱的要紧模块。
DSP板的结构
DSP板要紧包括以下功能模块:
(1)语音处置单元
(2)数模转换单元
(3)模数转换单元
(4)信号源单元
(5)键盘单元
(6)数码显示单元
(7)液晶单元
(8)开关量输入输出单元
(9)电源单元
(10)单脉冲产生单元
(11)电平转换单元
(12)CPLD下载单元
(13)信号扩展单元。
本设计的要紧用到的是信号源单元、数模转换单元及模数转换单元,以下是这些单元的简单介绍。
1)信号源单元:
频率,幅值可调双路三角波,方波和正弦波产生电路采纳两片8038信号发生器,输出频率范围20~100kHZ,幅值范围-10V~+10V,输入波频率范围可通过波段开关来选择;频率,幅值可独立调剂。
两路输出信号能够通过加法器进行信号模拟处置和混叠,作为信号滤波处置的混叠信号源,混叠后的信号从信号源1输出,信号源单元原理如图4所示。
幅值调节
幅值调节
信号源1
波形选择
混叠
信号源2
频率调节
频率调节
图4信号源单元原理框图
2)数模转换单元:
数模转换采纳DAC08芯片,分辨率8位,精度1LSB,转换时刻可达85ns。
DAC08能够应用在8-bit,1usA/D变换,波形发生,语音编码,衰减器,可编程功率变换器,CRT显示驱动,高速modems和其他要求低本钱,高速等多功能场合。
在本实验系统中,DAC08采纳对称偏移二进制输出方式,输出电压范围-5V~+5V,数模转换的原理图如图5所示。
锁
存
器
D
A
C
0
8
运
放
输
出
D
S
P
图5数模单元原理框图
底板DAC08参考Vref=+5V;输入00H,输出电压-5V;输入ffh,输出电压+5V。
3)模数转换单元:
模数转换芯选用AD7822,单极性输入,采样分辨率8BIT,并行输出;内含取样维持电路,和可选择利用内部参考电压源,具有转换后自动Power-Down的模式,电流消耗可降低至5uA以下。
转换时刻最大为420ns,SNR可48dB,INL及DNL都在+、-之内。
可应用在数据采样,DSP系统及移动通信等场合。
在本实验系统中,参考电压源+,偏置电压输入引脚Vmid=+。
模拟输入信号以过运放处置后输入AD7822,输入电压范围-12V~+12V[9],模数转换的原理图如图6所示。
模
拟
信
号
输
入
A
D
7
8
2
2
运
放
D
S
P
图6模数转换单元原理图
FIR数字滤波器的DSP实现
本次设计的低通滤波器的要紧性能指标:
设计一个滤波器阶数为51,采样频率fs为181KHz,滤波器截止频率fc为10Kz的滤波器,具体的设计进程如下。
(1)启动CCS,用Project/Open打开“”工程文件;双击“”及“Source”可查看各源程序,运行环境如图7所示。
图7运行环境
(2)加载“”;主程序中,K++处,设置断点;单击“Run”运行程序,程序将运行至断点处停止,加载输出如图8所示。
图8加载输出
(3)用View/Graph/Time/Frequency打开一个图形观看窗口;设置观看图形窗口变量及参数为:
采纳双踪观看在启动地址别离为0x3000H和0x3100H,长度为256的单元中数值的转变,数值类型为16位有符号整型变量,这两段存储单元中别离寄存的是经A/D转换后的输入混叠信号(输入信号)和对该信号进行FIR滤波的结果,参数设置如图9所示。
图9参数设置
(4)单击“Animate”运行程序,调整观看窗口并观看滤波结果,仿真结果如图10所示。
图10仿真结果
(5)调剂DSP实验箱上的输入正弦波的幅值或频率旋钮,再次观看输出波形,如图11所示。
图11输出波形
由图10可知,图10中上面窗口为从信号源单元产生的两个不同频率的混叠信号,下面窗口为其通过所设计的低通滤波器,滤波以后输出的波形,由上下两个波形图的对照可知,本次设计的FIR数字低通滤波器起到了专门好的低通滤波成效。
当对信号源输入信号作出改变时,如图11所示。
说明通过所设计的低通滤波器输出信号也随之发生改变,仿真结果说明,基于DSP实现的滤波器具有稳固性好、精准度高、灵活性强等优势,并能实现对信号的实时滤波。
结论
本文第一介绍了数字滤波器的概念及分类,和数字滤波器的实现方式。
在明白得FIR滤波器的工作原理及其设计方式的基础上,在MATLAB环境下利用矩形窗