基于Matlab的FIR带通滤波器设计与实现

最新更新时间:2012-09-26来源: 互联网关键字:Matlab  FIR  带通滤波器 手机看文章 扫描二维码
随时随地手机看文章

摘要:借助Matlab的FDATOOL滤波器设计分析软件,设计了一种FIR数字带通滤波器,并对一段含噪语音信号进行滤波。利用汇编语言编程,在DSP上实现了该滤波器。实验结果表明,该数字带通滤波器精确,稳定性好,易于移植,具有很强的实用性与灵活性。

  关键词:FIR数字带通滤波器;语音去噪;DSP;Matlab

  引言

  随着电子技术的飞速发展,人们正逐步进入数字化时代,数字滤波器越来越受到人们的关注,并且在近代电信设备和各类控制系统中的应用极为广泛,如语音处理、图像处理、通信、电视、雷达、生物医学信号处理等。数字滤波器根据其冲激响应函数的时域特性,可分为有无限长单位冲激响应(IIR)滤波器和有限长单位冲击响应(FIR)滤波器。IIR滤波器虽然可以利用模拟滤波器设计的结果,而模拟滤波器的设计有大量的图表可查,方便简单,但它的相位是非线性的。图像处理以及数据传输都要求信道具有线性相位,同时又可以具有任意的幅度特性。此外,FIR滤波器的单位冲激响应是有限长的,因而滤波器一定是稳定的。随着Matlab软件和信号处理工具箱的不断完善,可以利用Matl ab信号处理工具箱快速有效地实现数字滤波器的设计、分析和仿真。本文首先使用Matlab设计了一个FIR数字带通滤波器,并对一段含噪语音信号进行滤波,然后在TI公司生产的TMS320C5402芯片上具体实现了该滤波器。

  1 FIR数字带通滤波器设计原理

  设FIR滤波器单位脉冲响应h(n)长度为N,其系统函数H(z)为:

  c1.jpg

  FIR滤波器的设计任务是选择有限长度的h(n),使传输函数满足技术要求。一般是先给定所要求的理想滤波器频率响应c2.jpg,导出hd(n)。因为理想滤波器的冲激响应hd(n)是无限长的非因果序列,而所要设计的是hd(n)是有限长的FIR滤波器,所以要用有限长序列hd(n)来逼近无限长序列h(n)。设:

  c.JPG

  由此可见,窗函数不仅影响原信号在时域内的波形,而且也影响频域内的波形。

  2 用Matlab辅助设计与仿真

  设计一个FIR滤波器,关键是要得到正确的h(n)系数。把生成的滤波器系数加载到目标DSP程序中有两种方式:

  (1)把滤波器系数输人到一个C语言的头文件,在所建工程中添加该头文件;

  (2)直接把生成的滤波器系数加载到DSP程序的一个变量中。

本文采用第二种方法。选择菜单File→Export打开Export对话框,选择Coefficient File(ASCII),指定输出文件名,生成*fcf文件,就可以直接把生成的*fcf文件中的系数添加到DSP程序的变量中了。

  在Matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率和采样点数。采样值放在向量y中,fS表示采样频率(单位:Hz),bits表示采样位数。根据语音信号的特点给出数字带通FIR滤波器的性能指标:设置通带频率fp1=1 200 Hz,fp2=3 000 Hz,阻带频率fs1=1 000 Hz,fs2=3 200 Hz,抽样频率fs=8 000 Hz,阻带最小衰减As=50 dB,通带最大衰减Ap=1 dB。这里采用窗函数设计法设计FIR带通滤波器。首先根据阻带衰减选择窗形状,海明窗和布莱克曼窗等窗函数均可提供大于50 dB的衰减。由于海明窗可提供较小的过渡带,所以选择海明窗。根据ωp1=2fp1/fs;ωs1=2fs1/fs,B(带宽)=ωp1-ωs1,N(窗口长度)=ceil(6.6/B),n(阶数)=N-1;算出阶数为132。在FDATo ol设计界面,按要求填写以上参数,得到FIR数字带通滤波器的仿真图像,如图1所示。

  d.JPG

  然后再用设计的FIR数字带通滤波器对加噪的语音信号进行滤波。在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波。编写Matlab程序如下,实现上述功能。

  e.JPG

  f.JPG

  程序中“quzao”为录制的波形音频文件(.wav),对加噪的语音信号进行滤波仿真处理后,输出结果如图2所示。

  b.JPG

3 FIR数字带通滤波器语音去噪的DSP实现

  3.1 硬件结构

  图3为FIR带通滤波器的语音去噪硬件结构框图。系统主要由DSP芯片(TMS320C5402)、A/D转换器(ADS7864)和D/A转换器(DAC7625)组成。

  g.JPG

  实现的核心器件采用TI公司生产的TMS320C5402芯片。该芯片采用先进的修正哈佛结构,片内共有8条总线、CPU、在片存储器、在片外围电路等硬件和高度专业化的指令系统,使它的处理速度和容量大大提高,为数字滤波中的复杂算法的实现提供了良好的保证。

  A/D转换器采用TI公司生产的ADS7864芯片,它是一个高速(转换时间2μs)12位精度,6通道的A/D转换器件。它的最高工作频率可达8 MHz,采样率为500 kHz。根据奈奎斯特定理,信号的最高频率不能高于250 kHz,这样才不会有失真,而这个频率对于语音信号的处理已经足够。

  D/A转换芯片采用DAC7625,它是一个4路12位D/A转换器件,每路都有输入寄存器和DAC寄存器,构成双缓冲结构,转换时间为10μs。

  3.2 软件设计

  3.2.1 数据组织方式

  若输入信号x(n)和滤波器的单位冲激响应h(n)在频域分别为h1.jpg,则其输出信号的频率响应为h2.jpg。根据离散傅氏变换的性质,可以得到滤波系统的差分方程:

  h.JPG

  从上文Matlab的仿真过程可得到滤波器的级数N和滤波器系数h(n)。从上述可知数字滤波器实现时,主要是进行乘和加运算以及数据存取操作。

  在定点DSP上实现FIR滤波有两种方式:一种是用线性缓冲区实现z-1,该方式能保证新老数据在存储器中的存放位置直接明了,新的数据存放在缓冲区的固定位置;另一种方式是循环缓冲区实现z-1,该方式新老数据在缓冲区的位置不直接明了,新的数据没有固定位置,但可以方便地完成滤波器窗口的自动更新。考虑到本方案中使用的是汇编语言编程,还有N的阶数较大,为提高速率,因此在选择FIR滤波器的方式时选择循环缓冲区实现z-1的方式。

  对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。每次输入新的样本时,一新样本改滑窗中的最老数据,而滑窗中的其他数据不需要移动。利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。

  3.2.2 程序设计思路

  程序设计的总体思路是:启动ADS7864对输入的模拟信号进行A/D转换,每采集到一个数据就送入DSP进行滤波运算,运算结果送DAC76 25转换为模拟量。不断地重复上述过程,在DAC7625的输出端就得到滤波后的模拟信号。

  为了精确地控制ADS7864的采样率,使用TMS320C5402内部的定时器控制采样时间间隔T。设置定时器的定时时间等于采样时间间隔T,并让它工作在中断方式,则定时器每过T时间间隔就向CPU发出中断请求,CPU响应中断请求,转去执行中断服务程序。在中断服务程序中读取A/D转换结果,对转换结果进行滤波运算,并将运算结果送D/A转换器转换为模拟量。因此,程序分为主程序和定时器中断服务程序两部分,流程图如图4,图5所示。

  j.JPG

  3.2.3 FIR滤波源程序

  FIR滤波器指令,使用MAC指令执行FIR滤波,将滤波输出放在累加器A中:

  i.JPG

3.2.4 结果分析

  利用已做好的TMS320C5402开发平台,下载在CCS中已经通过编译的数字带通滤波器的程序,该程序的实验结果波形由CCS提供的显示时频图来显示。由于实际需求只涉及数字滤波器的幅频特性,所以结果分析没有对数字滤波器的相频特性进行讨论。图6和图7分别为输入信号与输出信号的频域图。输入信号的频率为f1=600 Hz,f2=1 000 Hz,f3=2 000 Hz,f4=3 500 Hz和f5=3 900 Hz的混合正弦信号,通过FIR数字带通滤波器后,频率为f1,f2,f4和f5的信号明显削弱,甚至几乎被滤去,而f3信号只有很少的衰减。说明这个数字带通滤波器有效地削弱了其他频率的干扰信号,提高了f3信号的质量,达到了数字滤波的目的,能实现对语音信号的去噪。

  a.JPG

  4 结论

  实践证明,用Matlab软件可方便地设计出FIR数字滤波器,并且修改系数方便。采用DSP实现FIR数字滤波器具有很强的适应性和可移植性,是解决数字滤波器从设计到实现的有效办法,具有一定的实际应用价值。

关键字:Matlab  FIR  带通滤波器 编辑:神话 引用地址:基于Matlab的FIR带通滤波器设计与实现

上一篇:反馈放大电路的类型判定方法
下一篇:带宽范围为120dB的双对数变换器ADL5310

推荐阅读最新更新时间:2023-10-12 20:42

基于Matlab GUI的PC机与智能车的无线通信
引言   在以速度决定优劣的飞恩卡尔智能车比赛中,任何因素都可能影响小车的运行。为了满足对小车在赛道中各种状态精确分析的需求,上位机的效据采集与处理要求通信波特率高、信号传输稳定、不丢包、数据处理量大、数据处理及时等。在基于Matlab环境下的串口通信中,查询方式下的非实时串行通信技术对实时性要求很高的智能车通信有很大的局限性。而在目前普遍采用的中断机制下的通信虽然可以满足实时性的需要,却需要修改Matlab自带的instrcallback回调函数。程序调试过程中惨改了回调函数后,需要重新启动Matlab才能使得新的回调函数文件生效。由此可以看出,其操作复杂易出错,且instrcallback函数接收到保存在工作空间的数据不
[模拟电子]
基于<font color='red'>Matlab</font> GUI的PC机与智能车的无线通信
用DSP实现FIR数字滤波器
FIR滤波器具有幅度特性可随意设计、线性相位特性可严格精确保证等优点,因此在要求相位线性信道的现代电子系统,如图像处理、数据传输等波形传递系统中,具有很大吸引力。本文简单介绍了其线性相位条件和设计方法,并且提供了一种用DSP实现的方法。   关键词:IIR(Infinite Impulse Response) FIR(Finite Impulse Response) DSP(Digital Signal Processor) 一、 引 言   在许多信息处理过程中,如对信号的过滤、检测、预测等,都要广泛地用到滤波器,而数字滤波器则因其设计灵活、实现方便等特点而广为接受。   所谓数字滤波器就是具有某种选择性
[嵌入式]
用DSP实现<font color='red'>FIR</font>数字滤波器
MathWorks 为 MATLAB 添加新的预测性维护产品
中国北京 – 2018 年 6 月 6 日 – MathWorks 今日宣布推出新的 MATLAB 产品 Predictive Maintenance Toolbox,帮助工程师设计并测试状态监测和预测性维护算法。Predictive Maintenance Toolbox 为算法工程师提供了一系列功能和参考范例,用来组织数据、设计状态指标、监测机器运行状况和预估剩余使用寿命 (RUL),从而避免设备故障。 借助 Predictive Maintenance Toolbox,工程师能分析和标注从存储于本地或云端的文件中导入的传感器数据。他们还能标注从 Simulink 模型生成的仿真故障数据以表征设备故障。利用在频谱分析和时
[网络通信]
MathWorks 为 <font color='red'>MATLAB</font> 添加新的预测性维护产品
MATLAB在无速度传感器交流调速系统仿真中的应用
    摘要: 介绍了采用先进的科学计算软件MATLAB对异步电机无速度传感器交流调速系统进行计算机模块的方法。根据模型参考自适应原理,采用直接转换矩控制技术,利用MATLAB语言强大的计算和绘图功能,实现了调速系统的仿真。仿真研究表明,该方法能避免传统计算机模拟的复杂编程过程,减少了工作量,有助于提高系统的综合效率。     关键词: MATLAB语言 无速度传感器 直接转矩控制 交流调速 在交流电机无速度传感器的变频调速控制系统中,常常需要对电机的数学模型进行编程,利用仿真结果来指导系统的调试和安装。由于交流电机的数字模型是一个强耦合多变量的高阶微分方程组,因此采用传统的编程语言(如FORTRAN)导致
[传感技术]
基于DSP通讯全桥开关电源的研究与设计
0 引言 高频开关电源以其重量轻、体积小、高效节能、输出纹波小、容量大等优点,在通讯和低电压行业得到了广泛的应用,且逐步在电力系统中得到应用。尤其随着电信业的迅猛发展,电信网络总体规模不断扩大,网络结构日益复杂先进,作为通讯支撑系统的通讯用基础电源系统,市场需求逐年增加,其动力之源的重要性也日益突出。庞大的电信网络高效、安全、有序的正常运行,对通信电源系统的品质提出了越来越严格的要求,推动了通信电源向着高效率、高频化、模块化、数字化方向发展。近年来,由于软开关技术的不断发展与成熟,已逐步应用在开关电源中,尤其在中大功率的全桥变换器中应用最为广泛,这使电源转换效率得到提高。由于传统模拟控制电路结构复杂,一经设计完成其控制策
[嵌入式]
基于stm32的滤波器的总结
数字滤波器的类型有FIR(有限长冲击与IIR(无限长。 离散数字系统中,滤波器的表述为差分方程。 FIR FIR基本特性: FIR 滤波器永远是稳定的(系统只有零点); FIR 滤波器的冲激响应是有限长序列; FIR 滤波器的系统函数为多项式; FIR 滤波器具有线性相位。 实现同样参数的滤波器,FIR比IIR需要的阶数高,因此计算量大。 目前,FIR 数字滤波器的设计方法主要是建立在对理想滤波器频率特性做某种近似的基础上。设计方法有窗函数法,等波纹设计法(Equiripple)和最小二乘法 (Least-Squares)等。其中窗函数设计法在学校课堂中是重点讲解的,提到FIR滤波器肯定会想到hamming、kaiser窗
[单片机]
低Q高增益带通滤波器
低Q高增益带通滤波器
[模拟电子]
低Q高增益<font color='red'>带通滤波器</font>
Matlab环境下PC与单片机的串行通信及数据处理
摘要:结合单片机和Matlab两者的优点,基于事件驱动的中断通信机制,提出一种Matlab环境下PC机与单片机实时串行通信及数据处理的方法;完成单片机数据采集系统与PC机的RS-232/RS-485串行通信及其通信数据的分析处理、文件存储、FIR滤波及图形显示;简化系统开发流程,提高开发效率。该方法已成功应用于一个PIC16F876单片机应用系统实例之中。 关键词:PIC16F876 Matlab 串口通信 RS-232 事件驱动 回调函数 引言 Matlab是由美国Mathworks公司开发的面向理论分析研究、工程计算数据处理和缓图的一套具有强大功能的软件系统。其中Matlab语言是一种以矩阵为基本运算单元的解释执行的高
[单片机]
小广播
热门活动
换一批
更多
最新模拟电子文章
更多精选电路图
换一换 更多 相关热搜器件
更多每日新闻
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved