在dsp上实现fir数字滤波器.doc
《在dsp上实现fir数字滤波器.doc》由会员分享,可在线阅读,更多相关《在dsp上实现fir数字滤波器.doc(18页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、DSP课程设计 学院:昆仑学院 班级:10级电气(2)班 姓名:柴智博FIR数字滤波器的MATLAB设计与DSP实现摘要:针对有限长冲激响应(FIR)数字滤波器的原理,讨论了窗函数法设计线性相位FIR数字滤波器的基本思路,介绍了用MATLAB工具来设计数字滤波器的方法及在定点DSP上的实现。通过CCS5000开发工具和在DES3200实验箱上运行,实现了达到目标要求的滤波器。关键词: matlab;fir;dsp;ccs开发环境 1、引言随着信息和数字技术的发展,数字信号处理已成为当今极其重要的学科和技术领域之一通信语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛
2、的应用。在数字信号处理的基本方法中,通常会涉及到变换、滤波、频谱分析、调制解调和编码解码等处理。其中,滤波是应用非常广泛的一个环节,数字滤波器的理论与相关设计也一直都是人们研究的重点之一。数字滤波器根据其冲激响应函数的时域特性,可分为无限长冲激响应(IIR)滤波器和有限长冲激响应(FIR)滤波器。其中FIR滤波器具有严格的相位特性,同时系统函数的极点固定在原点上,因而该类型的滤波器是稳定的。滤波器的设计方法主要有窗函数法、频率取样法和最优线性相位设计法。其中窗函数设计方法由于其运算简便、物理意义直观,已成为工程实际中应用最广泛的方法,本文从FIR数字滤波器的原理与基本设计步骤出发,对FIR数字
3、滤波器在MATLAB中的仿真与设计的基本思路做了阐述,并在定点DSP上实现了满足要求的FIR滤波器。目 录1、滤波器基本原理311 数字滤波器的基本概念312 FIR滤波器的基本结构313 FIR滤波器的主要特点414开发环境CCS简介42、数字滤波器的设计621数字滤波器MATLAB设计的基本步骤622 FIR数字滤波器的DSP实现823结论93心得体会104附录10参考文献161、滤波器基本原理11数字滤波器的基本概念数字滤波器的设计问题就是寻找一组系数 和,使得其性能在某种意义上逼近所要求的特性。如果在s平面上去逼近,就得到模拟滤波器,如果在z平面上去逼近,则得到数字滤波器。数字滤波是将
4、输入的信号序列,按规定的算法进行处理,从而得到所期望的输出序列。一个线性位移不变系统的输出序列y(n)和输入序列x(n)之间的关系,应满足常系数线性差分方程: 其中x(n)为输入序列,y(n)为输出序列, 和为滤波器系数,N为滤波器的阶数。12 FIR滤波器的基本结构在式(1)中,若所有的均为0,则得FIR滤波器的差分方程: 对(2)式是 滤波器的差分方程,其一般形式为 对(3)式进行 变换,整理后可得FIR滤波器的传递函数 FIR数字滤波器的设计方法主要有窗函数法和频率抽样设计法,其中窗函数法是基本而有效的计方法。由此可得到FIR滤波器的结构如图1所示。FIR滤波器的单位冲击响应h(n)是一
5、个有限长序列。若h(n)为实数,且满足偶对称或奇对称的条件,即h(n)=h(N-1-n)或h(n)=-h(N-1-n),则FIR滤波器具有线性相位特性。1.3、FIR滤波器的主要特点1)单位冲击响应只有有限项;2)FIR滤波器无反馈回路,是一种无条件稳定系统;3)FIR滤波器可以设计成具有线性相位特性。1.4、开发环境CCS简介CCS是TI公 司 推 出 的 为 开 发TMS320系列DSP软件的集成开发环境(IDE)。CCS工作在Windows操作系统下类似于vc+的集成开发环境采用图形接口界面提供编辑工具和工程管理工具的软件。CCS开发流程图如图所示图2 开发流程对于CCS的使用先应建立工
6、程文件*.mak根据需要添加C语言源程序*.c汇编源程序*.asm链配置件文件*.cmd等可能需要的文件完成整个工程的建立然后对源文件编辑修改后进行汇编连接以生成目标文件*.out。对源文件每作一次修改都必须全部重新建立生成新的目标文件*.out接下来就可用CCS调试先让系统复位再载入*.out。调试的方式是多种多样的有单步执行多步执行单步跳出单步进入等还有断点 设置和探测点设置在CCS环境下实现FIR滤波器的程序框图如图所示保存滤波结果到输出单元待滤波的样本点数(256点)处理完成?结束读入数据并存放到栈顶滤波处理产生输入数据初始化DSP否是图3 用循环寻址的方法FIR实现滤波器的程序框图从
7、图3可知FIR滤波器DS实现包括4个部分:模拟输入数据的生成DSP初始化程序滤波系数以及输入数据的调入及滤波子程序其中模拟输入数据的生成可利用C语言编程实现 用.COPY汇编命令将生成的数据文件拷贝到汇编程序中作为FIR滤波器的输入数据文中C语 言程序运行后所生成的数据文件名为初始化程序包括了对堆栈指针(SP)软件等待状态寄存器(SWWSR)中断寄存器(IFR)中断屏蔽寄存器(IMR)以及处理器工作状态寄存器(PMST)的初始 化另外还对各变量赋值由于滤波器系数一开始是存在程序存储器中输入数据则是存在程序外的文件中程序对这两组数据进行处理时需要把两者都调到数据存储器中这是滤波系数以及输入数据的
8、调入部分的任务滤波子程序重复执行的次数一般等同于输入序列的长度实现对数据的读入处理输出等功能。2、数字滤波器的设计2.1数字滤波器matlab设计的基本步骤(1)确定指标在设计一个滤波器之前,必须首先根据工程实际需要确定滤波器的技术指标。在很多实际应用中,数字滤波器常常被用来实现选频操作。因此,指标的形式一般在频域中给出幅度响应和相位响应。幅度指标主要以两种方式给出。第一是绝对指标,它提供对幅度响应函数的要求,一般应用于FIR滤波器的设计。第二种指标是相对指标。它以分贝值的形式给出要求,在工程实际中,比较受到欢迎。对于相位响应指标形式,通常希望系统在通频带中仍然有线性相位。运用线性相位响应的指
9、标进行滤波器设计具有如下优点只包含实数算法,不涉及复数运算不存在延迟失真,只有固定数量的延迟 长度为N的滤波器(阶数为N-1),计算量为N/2数量级。(2)逼近确定了技术指标后,就可以建立一个目标的数字滤波器模型。通常采用理想的数字滤波器模型。之后,利用数字滤波器的设计方法,设计出一个实际滤波器模型来逼近给定的目标。(3)性能分析和计算机仿真上两步的结果是得到以差分或系统函数或冲激响应描述的滤波器。根据这个描述就可以分析其频率特性和相位特性,以验证设计结果是否满足指标要求,或者利用计算机仿真实现设计的滤波器,再分析滤波结果来判断。(4)窗函数法设计FIR滤波器的MATLAB仿真matlab是一
10、套用于科学计算的可视化高性能语言与软件环境。它集数值分析、矩阵运算、信号处理和图形显示于一体,构成了一个界面友好的用户环境。它的信号处理工具箱包含了各种经典的和现代的数字信号处理技术,是一个优秀的算法研究与辅助设计的工具对于线性相位FIR滤波器通常采用窗函数法设计。窗函数设计 滤波器的基本思想(1),就是从时域出发,把理想的无限长的hd(n)用一定形状的窗函数截取成有限长的h(n),以此h(n)来逼近hd(n),从而使所得到的频率响应与所要求的理想频率响应相接近。理想的数字滤波器Hd()频率特性是无法实现的,FIR的设计就是要寻找一个可以得到的频率特性来逼近Hd(,这相当于用一个可实现的单位脉
11、冲响应h(n)去逼近一个理想单位脉冲响应hd(n)。要想用一个有限长的因果序列去逼近它,最简单的方法是截取n从0N-1的一段来表示它,即h(n)= hd(n)(0nN-1);当n为其他的数时,h(n)=0。同时,为了保证线性相位,还要满足偶对称:h(n)=h(N-1-n),这就好像通过一个窗口观看到一段hd(n),因此h(n)就表示成hd(n) 和一个“窗口函数”的乘积。这样,对h(n)的求解就变为:, 这里的W(n)就称为窗口函数。窗口函数相当于对hd(n) 在时域上截取一段,势必造成频域的矩形窗口的失真,结果就是截取出的信号也相应失真。为了补偿这种失真,只有改变原来窗口的形状,修正经过时域
12、截取后的窗口失真。改善窗口函数的标准:(1)尽量减少窗口频谱的旁瓣,使能量集中在主瓣中,以减少波动的幅度和次数,提高阻带衰减。这样,主瓣就不能太窄;(2)主瓣的宽度应尽量窄,以得到尽量窄的过渡带。工程中常用的窗函数有以下六种(2):矩形窗,三角形窗(Bartlett Window),汉宁(Hanning)窗,汉明窗,布莱克曼(Blackman)窗,凯泽(Kaiser)窗。表1为六种窗函数的性能指标。图1和图2分别为64点的矩形窗函数的时频特性曲线和64的三角窗函数的时频特性曲线。计算出64点的矩形窗函数并利用wvtool函数绘制出其时频特性。程序如下:N=64; y=rectwin(N); w
13、vtool(y);图4 矩形窗函数时域和频域特性计算出 点的三角窗函数并利用函数wvtool绘制出其时频特性程序如下:N=64; y=triang(N); Wvtool(y) ;图5 三角窗函数时域、频域特性比如设计一个低通 数字滤波器,采样频率Fs=8000HZ, 要求:通带范围:01000HZ; 带内波动:5%; 阻带范围:1500HZ4000HZ;带内最小衰减:Rs=40dB;采用Kasier窗进行设计,程序如下:Fs=8000;Fctus=1000 1500;Mags1 0;Devs=0.05 0.01; %给定频率点上幅度允许波动值利用Kaiser窗设计FIR滤波器前,需要先用函数k
14、aiserord记进行有关参数计算n,Wn,deta,ftype=Kaiserord(fcuts,mags,devs,Fs);H=fir1(n,Wn,ftype,Kaiser(n+1,deta);Freqz(h);2.2 FIR数字滤波器的DSP实现数字滤波器的实现方法一般有以下几种:用加法器、乘法器、延时器设计专用的滤波电路。在通用计算机系统中加上专用的加速处理机设计实现。用通用的可编程DSP芯片实现。用专用的DSP芯片实现在一些特殊的场合要求的信号处理速度极高,用通用DSP芯片很难实现。这种芯片将相应的滤波算法在芯片内部用硬件实现,无需进行编程。采用FPGA/CPLD设计实现。 在上述几种
15、方法中,第种方法的缺点是速度较慢,一般可用于DSP算法的模拟。第、种方法专用性强,应用受到很大的限制。第、种方法都可以通过编程来实现各种数字滤波,但是,第种因有专用的指令来实现滤波运算编程实现容易,而第种方法编程实现较为困难,因此,本文选用了可编程DSP芯片来实现。DSP是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器。由于它由具有丰富的硬件资源、改进的哈佛结构、高速数据处理能力和强大的指令系统,而在通信、航空、航天、雷达、工业控制、网络及家用电器等各个领域得到广泛应用。在滤波器的实现方面,定点DSP芯片显示出强大的优势,比较合适于滤波器的实现,本文选用含TMS320C5402的
16、实验箱作为硬件平台。下图为FIR滤波器DSP实现的电路方框图,其核心部分为TI公司生产的DSP芯片TMS320C5402 ,EP2ROM和RAM是其外围电路。DSP送给A/D抽样时钟,对输入的模拟信号抽样,即将模拟信号转换成数字信号,然后读取每一次的抽样值,并对抽样值进行卷积运算(FIR数字滤波),最后将运算结果(滤波后的数字信号)送至D/A ,转换成模拟信号进行输出。A/DDSPC500系列D/ AEP2ROMRAMINOUT图6电路框图FIR滤波器程序设计的具体流程如下先对主程序进行初始化,包括数据段的初始化和数据缓冲区的清零等,再将从A/D获得的采样点样值送到数据缓冲区中,执行FIR滤波
17、程序,最后将滤波结果输出。同时,在CCS的图形显示界面中显示出输人波形与输出波形。滤波器算法在TMS320C5416开发板上可用汇编,也可用C语言实现。但汇编执行效率高。(实现FIR滤波器功能的程序见附录)汇编程序调试可先在CCS中建立新的工程fir.pjt, 再将汇编语言源文件( asm或c)文件及中断向文件(.asm)、位文件(.cmd)添加到工程中。若为C语言程序则还需添加“stdio.h”、“math.h”, “rts.lib”编译后生成.out文件,可下载到基于DES3200的系统板上。编译并将整个FIR项目成功地下载到目标系统板后,程序就可以在所设计的目标板上运行。 实际在CCS中
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- dsp 实现 fir 数字滤波器
限制150内