《FIR滤波器的MATLAB设计与实现.pdf》由会员分享,可在线阅读,更多相关《FIR滤波器的MATLAB设计与实现.pdf(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、 FIR 滤波器的 MATLAB 设计与实现 1、设计任务 1、用 MATLAB 软件实现 FIR 滤波器;2、设计基于 DSP 的 FIR 滤波器硬件框图;3、了解用 DSP 实现 FIR 滤波器的关键问题;4、完成必要的软件流程图。2前言 在通信与电子信息当中,在对信号作分析与处理时,常会遇到有用信号叠加无用噪声的问题。这些噪声信号有的是与信号同时产生的,有的是在传输过程中混入的,在接收的信号中,必须消除或减弱噪声干扰,这是信号处理中十分重要的问题。根据有用信号与噪声的不同特性,消除或减弱噪声,提取有用信号的过程就称为滤波。滤波器的种类很多,实现方法也多种多样。随着数字技术的飞速发展,数字
2、滤波理论也得到了长足的进步。因此,对数字滤波系统硬件实现的要求也越来越高,而软件模拟的方法不仅能及时地提供系统运行的信息,还可以随时改变系统结构从而验证全新的系统,所以软件仿真变得非常重要。Matlab 是具有很强的科学计算和图形显示功能的软件系统,可以对数字滤波器进行精确设计,并且方便地进行FFT 频谱分析与频谱图显示,从而对数字滤波器进行快速地检验和分析。本文讨论在MATLAB 平台下的FIR 数字滤波器设计与分析。DSP是一种实时、快速、特别适合于实现各种数字信号处理运算的微处理器。由于它由具有丰富的硬件资源、高速数据处理能力和强大的指令系统,而在通信、航空、航天、雷达、工业控制、网络及
3、家用电器等各个领域得到广泛应用。DSP分为定点和浮点两种,本文以定点DSP芯片为例,讨论FIR滤波器实现的几个关键问题。所讨论的这些问题,在DSP系统设计中有实际的参考和应用价值。3FIR 滤波器的原理与MATLAB仿真设计 滤波器概述 数字滤波在数字信号处理中占有重要的地位,是广泛使用的一种基本线性处理模块,它可以实现模拟器件很难达到的准确线性相位关系特性。数字滤波器分为无限冲激响应滤波器(IIR)和有限冲激响应滤波器(FIR)。由于FIR系统只有零点,因此这类滤波器不像IIR 滤波器那样容易取得比较好的通带与阻带衰减特性。要取 得好的衰减特性,一般要求H(z)的阶次要高,即N 要大。FIR
4、 滤波器有自己突出的优点,其一是系统总是稳定的,其二是易实现线性相位,其三是只要经过一定的时延,任何非因果有现场序列都能变成因果有限长序列,因而总能用因果系统来实现,其四是FIR滤波器由于单位冲击响应是有限长的,因而可以用快速傅里叶变换算法来实现过滤信号,从而可以大大提高运算效率。由于FIR 滤波器在阶数相同的条件下运算速度比IIR 滤波器快,同时FIR滤波器具有不含反馈环路、结构简单以及可以实现的严格线性相位等优点,因而在对相位要求比较严格的条件下,常常采用FIR 数字滤波器。目前常用的设计方法主要有窗函数法、频率取样法及等波纹逼近法。本文应用窗函数法设计FIR 数字低通滤波器。具体参数见表
5、一。FIR 数字滤波器基本原理 3.2.1窗函数法的基本思想 先构造一个线性相位理想滤波器的频率响应()jwdHe,然后用一个N点的窗函数w(n),(01)nN去截取理想滤波器的单位抽样响应()dhn(通常为无限长),从而得到具有线性相位的实际滤波器的有限长单位抽样响()()()dh nh n w n。3.2.2 基本方法(1)构造线性相位理想滤波器的频率响应()jwdHe,为简单起见,若没有90相移的特殊要求,一般选择滤波器具有第一类线性相位。(2)求理想滤波器的单位抽样响应()dhn。(3)根据技术指标要求和4种形式的线性相位FIR数字滤波器的特点,选择合适的窗函数w(n)及其长度N,然后
6、对()dhn加窗函数截取,得到具有线性相应的实际FIR数字滤波器的单位抽样相应()()()dh nh n w n,(01)nN。(4)检验实际滤波器的频率响应()()jwH eDTFT h n是否满足设计指标要求。3.2.3用窗函数设计FIR滤波器的步骤(1)根据技术要求确定线性相位理想滤波器的频率响应()jwdHe。(2)求理想滤波器的单位抽样响应()dhn。(3)根据对过渡带及阻带衰减的要求,选择窗函数的形式,并估计窗口长度N,设待求滤波器的过渡带用w表示,它近似等于窗函数主瓣的宽度。(4)计算滤波器的单位抽样响应()()()dh nh n w n(5)验算技术指标是否满足要求,设计出的滤
7、波器频率响应用下式计算 10()()NjwjwnnH eh n e 3.2.4用窗函数设计FIR滤波器 设滤波器的通带截止频率为pf,阻带截止频率为sf,系统采样频率为sampf,则其过渡带宽带为 twspfff,抽样周期为 2SsampTf 则过渡带数字角频率为 22sptwtwsampsampfffwff 各种窗函数的过渡带宽可用xN来表示,其中N 是滤波器阶数,x是一个整数,对应于矩形窗,三角窗,汉宁窗,汉明窗,其值分别为4,8,8,8,所以滤波器的阶数N可由下式求得 2()samptwspxfxNwff 理想低通滤波器的冲击响应为 ()sin()()cd nw nhn 其中(1)2N
8、,cw是3dB通带截止数字角频率,其值为 ()()2psSpscsampff Tffwf 加窗后的低通滤波器的冲击响应为 ()()()nd nnhhw 检验实际滤波器的频率响应()()jwH eDTFT h n是否满足设计指标要求。表1 几种常见的窗函数对比 窗函数 旁瓣峰值 主瓣 最小阻带 衰减/dB 宽度/N 衰减/dB 矩形窗 13 4-21 三角窗-25 8-25 汉宁窗-31 8-44 海明窗-41 8-53 例:用窗函数设计一个线性相位FIR低通滤波器,并满足性能要求:通带边界的归一化频率wp=,阻带边界的归一化频率ws=,阻带衰减不小于30dB,.通带波纹不大于3dB,假设一个信
9、号,其中f1=5Hz,f2=20Hz.。信号的采样频率为50Hz.。并将原信号与通过滤波器的信号进行比较。由题意值,阻带衰减不小于30dB,根据表1,选取汉宁窗,因为汉宁窗的第一旁瓣相对主瓣衰减为31dB,满足滤波要求。wp=*pi;ws=*pi;%滤波器的边界频率 wdelta=ws-wp;%过渡带宽度 N=ceil(8*pi/wdelta);%根据过渡带宽等于表中汉宁窗函数的主瓣宽度求得滤波器所用常函数的最小带宽 Wn=+*pi/2;%截止频率取通带和阻带边界频率的中点 b=fir1(N,Wn/pi,hanning(N+1);%设计FIR滤波器 H,f=freqz(b,1,512,50);
10、%采用50Hz的采样频率绘出该滤波器的幅频和相频响应 subplot(2,1,1),plot(f,20*log10(abs(H);xlabel(频率);ylabel(振幅);grid on;subplot(2,1,2),plot(f,180/pi*unwrap(angle(H);xlabel(频率);ylabel(相位);grid on;f1=3;f2=20;dt=;t=0:dt:3;%采样间隔和检测信号的时间序列 x=sin(2*pi*f1*t)+cos(2*pi*f2*t);%检测信号 y=fftfilt(b,x);%给出滤波器的输出 figure(2)subplot(2,1,1),plo
11、t(t,x),title(输入信号)%绘出输入信号 subplot(2,1,2),plot(t,y)%绘出输出信号 hold on;plot(1 1*(N-1)/2*dt,ylim,r)%绘出延迟到的时刻 xlabel(时间),title(输出信号)图1 所设计滤波器的幅频响应(上图)和相频响应(下图)图2 所设计滤波器的输入和输出信号 程序运行结果如图1,2.该例对应于50Hz的采样频率通带边界频率为fp=50/2*=,fs=50/2*=。有图1上图得,在小于的频段上,几乎看不到下降,即满 足通带波纹不大于3dB的要求。在大于的频段上,阻带衰减大于30dB,满足题目要求。由图1下图得,在通带
12、范围内,相位频率响应为一条直线,表面该滤波器为线性相位。图2给出了滤波器的输入信号和输出信号,输入信号包括3Hz和20Hz的信号,由图1可知,20Hz的信号不能通过该滤波器,通过滤波器后只剩下3Hz的信号。由于FIR滤波所需的阶数较高,信号延迟(N-1)/2也较大,输出信号前面有一段直线就是延迟造成的。4FIR滤波器的DSP实现 FIR滤波器的DSP实现方案 DSP与一般的微处理器相比有很大的区别。它所特有的结构和指令集合为解决复杂的数字信号处理问题提供了便利。在DSP处理器上实现FIR滤波时,一般使用实系数的FIR滤波器,其最基本的操作是MAC(乘-累加)指令。本文介绍在TMS320C54X
13、上实现FIR 滤波器。C54X 上有一个 17位*17位的乘法器和一个 40位的加法器,用于在单周期内实现MAC运算。同时,C54X使用了先进的多总线体系结构,包含1条程序总线,3条数据总线及4条辅助地址总线。这些特殊的硬件结构使得C54X支持单指令循环,快循环,数据块搬移及循环寻址。所以这些都有利于高效的实现FIR滤波器。硬件框图 图 3 系统总体框图 DSP(TMS320C5410)同步FIFO D/A转换 同步FIFO A/D转换 FLASE JTAG 接口 RS232 接口 SRAM 输入模拟信号 输出模拟信号号时钟 JTAG(Joint Test Action Group)联合测试行
14、动小组)是一种国际标准测试协议(IEEE 兼容),主要用于芯片内部测试。基本原理是在器件内部定义一个 TAP(Test Access Port测试访问口)通过专用的JTAG测试工具对内部节点进行测试。JTAG测试允许多个器件通过 JTAG 接口串联在一起,形成一个 JTAG 链,能实现对各个器件分别测试。FLASE 存储器具有性价比高,体积小,功耗低,可电擦写,使用方便等优点。在 DSP 应用系统中采用 Flash 存储器和固定数据是一种比较好的选择。SRAM 静态存储器,读写速度快,但价格较高。适合于外部存放需要经常访问或更新的临时数据。RS232 电平转换模块,将外部电平转换为适合
15、 DSP 芯片内部要求的电平。图3是系统的总体框图。主要包括输入信号缓冲及调理电路、A/D 变换器、输入缓冲 FIFO、DSP及外围电路、输出缓冲FIFO、D/A变换器等几部分。其中DSP及外围电路包括程序存储器、串行口、显示及键盘接口等。串行口用于实现和PC机的通信,可以通过PC机对滤波器的控制。假定输入模拟信号为带限信号。该信号经缓冲和调理后经A/D变换进入输入缓冲FIFO,当 FIFO中的数据达到一定数量时产生中断,DSP将数据读入内存中并进行计算和处理,这里DSP主要实现FIR滤波运算。处理后的数据写入输出FIFO中,之后通过D/A变换后输出模拟信号。输出的信号是低通滤波后的结果。用D
16、SP实现FIR滤波器的关键问题 定点数的定标 在滤波器的实现过程中,DSP所要处理的数可能是整数,也可能是小数或混合小数;然而,DSP在执行算术运算指令时,并不知道当前所处理的数据是整数还是小数,更不能指出小数点的位置在哪里。因此,在编程时必须指定一个数的小数点处于哪一位,这就是定标。通过定标,可以在16位数的不同位置上确定小数点,从而表示出一个范围大小不同且精度也不同的小数。误差问题 因为在用定点DSP实现时,所有的数据都是定长的,运算也都是定点运算,因而会产生有限字长效应。所产生的误差主要包括:数模转换引起的量化误差、系数量化引起的误差以及运算过程中的舍入误差。在用定点DSP时,产生误差是
17、不能避免的。循环寻址 循环寻址是DSP中经常用到的一种寻址方式。该寻址方法可以对一块特定存储区实现循环的操作。可以把循环寻址理解为实现一个滑动窗,新数据引入后将覆盖老的数据,便得该窗中包含了需处理的最新数据。在数字信号处理中的FIR、卷积等运算中,循环寻址具有极其重要的意义。运算量估计及 DSP 芯片的选取。滤波器必须做到实时处理,因此对运算量应该有一个精确的估计,然后选择合适的 DSP 处理器。估计运算量时应按最高采样率时计算,主要估算其乘加次数。A/D 及 D/A 变换器的选取 A/D 及 D/A 变换器的选取主要考虑速度和数据宽度。变换器的速度一定要大于所设计滤波器的最高采样速率并要考虑
18、一定的裕量,变换器的数据宽度则根据实际需要的计算精度选择。DDS 芯片的选取 DDS 芯片的选择主要考虑频率的调整步长,当可调滤波器的调整步长较大时,可以选择精度稍低的 DDS 芯片。软件流程 滤波器的软件要实现的功能主要是FIR滤波。工作流程为:根据按键输入的频率,DSP计算出应对AD9850设置的状态字并对AD9850进行设置,AD9850将按设置的频率输出时钟。A/D 转换后的数据进入FIFO中,当到达设置的数据量时将产生中断,DSP将输入 FIFO 中的数据读入DSP并进行FIR运算。运算完成后的数据写入输出FIFO。输出FIFO中的数据将按照与A/D转换同样的速率输出到 D/A 变换
19、器中并产生模拟输出。这样,只要保证FIR运算足够快就可以 既不会产生数据溢出,也不会输出数据不足。图4 软件流程图 5.结束语 由于数字技术的飞速发展,数字滤波理论得到飞速发展,对数字滤波器的设计也提出了更高的要求。现代数字滤波器可以用软件或硬件2 种方式来实现,软件方式实现的优点是可以通过参数的修改进行滤波器性能的仿真和优化。本文运用MATLAB软件,根据设计要求进行了FIR滤波器的仿真。并分析了用DSP实现FIR滤波器的硬件结构和几个关键问题,这些关键问题在实际设计中都有着重要义。6参考文献 否 是 输入频率 A/D 转换 DSP 计算 D/A 转换 显示波形 是否继续采样 停止采样,释放
20、系统资源 结束 开始 1程佩青.数字信号处理教程M.北京:清华大学出版社,2008,323-369.2万永革.数字信号处理的MATLAB实现M.北京:科学出版社,2007,187-234.3张卫宁.DSP原理及应用教程M.北京:科学出版社,2008,282-296.4张雄伟,邹霞,贾冲.DSP芯片原理与应用M.北京:机械工业出版社,2005,48-76.5罗军辉,罗勇江,白义臣,庞娜.Matlab在数字信号处理中的应用M.北京:机械工业出版社,2005,99-115.6赵顺珍,马英.基于DSP的FIR数字滤波器设计与实现J.微计算机信息,2009,25(2):29-31.7张 萍.基于MATL
21、AB与DSP的FIR数字滤波器的设计J.中国科技信息,2007(23):80 81.8周辉,董正宏 数字信号处理基础及Matlab实现M 北京:希望电子出版社,2006,116-121.9彭红平,杨福宝 基于Matlab 的FIR 数字滤波器设计J 武汉理工大学学报,2005,10(5):275-278 7个人总结 这次课设题目是FIR滤波器的MATLAB设计与实现,通过这次课设使我受益匪浅,首先,我先去图书馆下载各种论文,在网上查找各种资料,但FIR滤波器的知识已经忘得差不多了,一些资料看不懂,把数字信号课件又了一遍,然后是MATLAB编程,以前虽然做实验的时候接触过MATLAB软件,但并不很熟练,这次编程中出现了一些不应该的错误。在这次课设中,需要了解怎么用DSP实现FIR滤波器,由于我们没有学过DSP,所以查了一些资料,但还是觉得很不明白。在写课设报告过程中,越写越觉得自己很无知,平时学习不扎实,对各种知识点没有进行及时积累与总结,导致做课设时临时抱佛脚。以后一定要认真学习,拓展学习知识面,也要加强团队合作与沟通。
限制150内