1、基于 DSP 的 FIR 滤波器的设计与实现 摘要 本文详细介绍了一种基于 DSP的数字滤波器的设计方法。首先 , 在 MATLAB中使用辅助设计工具 FDATool 设计一个 FIR 低通滤波器,它可以模拟 FIR 滤波器单位脉冲响应的特征。一个混合的输入信号通过这种方法,在TMS320VC5509A DSP 芯片实现了滤波效果。实验结果表明 ,该数字滤波器设计可以满足设计要求。 关键词:有限脉冲响应滤波器 ;数字信号处理器 ;窗函数 1 简介 FIR 数字滤波器的优点是可以得到一个严格的线性相位特性 ,同时幅频特性也可以得到保证。 因此 ,数字滤波器在语音处理和图像处理中是非常重要的, D
2、SP 是一个特殊的微处理器 , 主要用于实现数字信号处理算法。基于 DSP 的数字滤波器 具有 稳定性好 ,精度高 ,不受环境影响等 优点 。此外 ,基于 DSP的数字滤波器可以修改参数 ,然后 可以很 容易 的 修改滤波器的特征 1。 2 FIR 滤波器的基本结构和设计方法 A. FIR 滤波器的基本结构 假设 h(n)(n = 0,1,2, ,n1)是 FIR 滤波器的脉冲响应 ,x(n)是输入信号 ,然后可以得到 FIR 滤波器用下列差分方程实现。 10 )()()( Ni inxihny ( 1) 其中, N 是 FIR 滤波器的阶数 ,y(N)是输出信号。显然 ,这是定常系统的卷积和
3、线性公式。让我们用 z 变换来计算传递函数, 10 1)()( Ni zihzH ( 2) 从上面我们可以看到 , FIR 滤波器的结构如下图所示 : 图 1 FIR 滤波器的基本结构 B FIR 滤波器的设计方法 当我们设计数字滤波器 MATLAB 常常用来进行辅助设计和仿真。MATLAB 设计 FIr 数字滤波器有很多方法。由于篇幅限制 ,我们只介绍一种常用方法 ,窗函数设计法 ,利用 tools-FDATool 进行 滤波器的设计和分析。 1)窗函数设计法 窗函数的设计核心是根据频率特性,通过添加窗口功能来确定有限的单位脉冲响应序列 h(n)。 根据给定的滤波器规格 ,选择滤波器长度 N
4、 和窗口函数 w(N)实现 FIR数字滤波器。 六种常用的窗函数是矩形 ,巴特利特 ,汉宁、汉明 ,布莱克曼和凯撒窗函数。基于窗函数设计方法的命令 fir1 和 fir2 可以轻松获得滤波器系数 , 可以由 freqz()和 plot ()确定幅频响应和相频响应曲线。 2)最优设计法 MATLAB 的函数通过 Parks-McClellan 算法可以设计线性相位滤波器。理想的频率响应与实际设计的滤波器的频率响应之间的最大误差是最小的 ,其频率响应 表 现相等的波形特征 ,因此这个 滤 波 器又称平等波纹滤 波 器。这种方法的缺点是不能设置直接阻带衰减参数 ,只有通过反复调整参数 才能得到 所需
5、的滤波器。 3) fdatool FDATool(滤波器设计与分析工具 )是一个在 MATLAB 中专门对信号滤波器进行设计和分析的工具。 FDATool 提供了一个交互式设计滤波器的环境 ,用户几乎可以设计整个传统滤波器的振幅和零 -极点图。 Fdstool 工具的上部分是用来显示滤波器的特征的,下半部分是参数设置区,用于设置滤波器参数 ,参数包括过滤器的类型、设计方法、阶数、频率设置等等。 通过比较上述三种方法 ,你会发现使用 FDATool 设计滤波器更加直观和方便。本文就是使用这种方法来设计数字滤波器的系数 ,然后根据设计结果实现 DSP 滤波器。 3 基于 MATLABD 的 FIR
6、 滤波器 设计一个 FIR低通数字滤波器,其通带边缘频率 10 khz,阻带边缘频率 22 khz,阻带衰减 75 db (50 千赫采样频率 ) 。 首先 ,我们用 FDATool 设计 FIR 滤波器的脉冲响应系数 ,选择窗函数设计方法。根据给定的性能 ,选择 Blackman 窗 ,然后滤波器的系数可以很容易地得到。 我们可以得到 ,过渡带宽度 M = 212/50,过滤器的阶数 N = 12/ M = 25。打开 FDATool 界面 ,填写设计参数,和 fir 滤波器的频率特性如图 2 和图 3 所示。 接下来我们会导出数字滤波器的脉冲响应系数 6,在主菜单中 ,选择 Targets
7、 Code Composer Studio IDE 命令弹出导出代码窗口 ,在窗口中选择 16 位整数的选项 ,单击选择目标按钮 ,选择目标设备 ,选择 C55x功能模拟器 ,点击 OK 确认 ,脉冲响应系数将保存在 .h 文件中。系数的结果如下 : const int BL = 26; const int16_T B26 = 0,5,14,-39,-138,0,472,490,-793,-2051,0,6238,12182,12182, 6238,0,-2051,-793,490, 472,0,-138,-39,14,5,0; 4 基于 DSP 的 fir 滤波器设计 Fir 滤波器对要过滤
8、的数据乘以滤波器系数 ,然后取和 ,同时,将得到数据存放在内存中 7。以前,通用处理器和微控制器的乘加操作 ,将花费大量的 CPU 和总线资源。 DSP 作为一种特殊的信号处理芯片 ,其结构已得到改进和优化 ,为数字信号处理添加了特殊指令。 TMS320VC5509A 是一个高性能、低功耗和低成本的定点数字信号处理器。 为了实现延迟线性的 fir 滤波器 ,使用线性缓冲区的方法。使这种方式实现 fir 滤波器 ,需要开放的数量为 N 的缓冲数据存储器,用于存储最新的样本值。 我们需要读取最新的样本值, DSP 计算乘加操作的每个输出值。每个样本值将在读取之后送回。 当最新一个样本值被读取时,最
9、古老的一个样本值从缓冲区移出 ,然后 将 输 最新的样本值顶 入的缓冲 区的顶部 8。这种方法的最大优点是 ,新老数据在内存 中 的 存储 位置是显而易见的。 为了实现线性缓冲区的延迟 ,我们将 FDATool 导出的系数和输入数据存放在在 DARAM 中 ,并使用双重操作地址来实现位移动 ,最快的实现滤波过程。 编程和汇编按照上面的步骤来 仿真模拟 ,在CCSv3.1 中 调试和运行 ,使用图形观察窗 口 观察输入和输出波形及其频谱图 ,图 4和图 5 示 所示的结果 : 图 4a 输入信号波形 图 4b 输入信号频谱图 图 5a 输出信号波形图 图 5b 输出信号频谱图 输入波形是低频正弦
10、波和高频正弦波的叠加。通过观察频率域和时间域图形,我们知道 :低频信号通过滤波器 ,而高频信号被过滤掉了。 5 结论 本文研究了数字滤波器的原理和结构 ,并结合基于 TMS320VC5509A 的实验系统 ,设计和实现基于 DSP 的数字滤波器。实验结果表明 ,该数字滤波器满足设计要求。同时所有程序是用汇编语言编写的 ,因此滤波器占用较少的存储空间,程序执行速度快,稳定可靠 ,能够更好地满足实时过滤的需要。 参考文献 1刘 ws,“基于 DSP 的 FIR 数字滤波器设计 ”,m .论文 ,贵州大学、贵州 ,中国 ,2008 年 5 月 2王 c m,孙 h b ,TMS320C55x DSP
11、 的理论和应用 ,第二版。北京 :电子工业出版社 ,2008 3 H.C. Chen, D. Z. Wu and X. Q. Gao, MATLAB 及其应用在电子信息,第三版 .北京 :电子工业出版社 ,2007 4 B. F. Wang, “FIR数字滤波器设计和仿真研究 ”,m.论文 ,哈尔滨科学技术大学、哈尔滨 ,中国 ,2009 5 Y. Jiang and X. Q. Zhou, DSP 理论和应用实验 ,西安 ,中国 :宁海西店大学出版社 ,2008 6 X. L. Zhao, L. Zhang and Y. Q. Wu,“ Matlab 在 DSP FIR数字滤波器中的使用 ”
12、,现代电子技术 ,第七期 , 38-40 页 ,2007 7 Y. P. Liu, DSP 的原理和应用 ,北京 ,中国 :北京航空航天大学出版社 ,2005 8 Q. Z. Huang, Q. X. Li and Z. W. Chen, ” 基于 TMS320C54X 数字滤波器的设计和应用 ”,河南理工大学 ,硕士 ,314 - 318 页, 2008 自适应数字滤波器基于 TMS320VC5402 的实现 Wang Xiaojuan Zhang Ze (自动化系,大学的科学技术, 内蒙古大学,呼和浩特 , 中国 ) 摘要 本文介绍了设计和实现基于 DSP 的自适应滤波器(数字信号处理)的
13、方法,首先 , 对自适应 FIR 滤波器的结构和算法进行了模拟实验,模拟实验是基于MATLAB 进行的,试验方法是对输入信号添加高斯噪声 ,然后使其通过自适应FIR 滤波器 。模拟波形已经给出,基于 DSP 的相关参考数据也已经给出。在此基础上 , 选择 TMS320VC5402 DSP 芯片作为中心处理器,设计和实现自适应滤波器。硬件系统设计模块 , 软件系统设计流程图和相关的汇编代码在文章中已经给出。对于设计所得的结果,测量结果,和滤波结果是符合 预期 要求的。 关键词 :自适应滤波器, TMS320VC5402, LMS 算法。 1 简介 随着信息时代和数字世界的到来,数字信号处理已成为
14、当今一门极其重要的学科和技术领域。数字信号处理在通信、语音、图像、自动控制、雷达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理应用中,数字滤波器十分重要并已获得广泛应用。 在信号处理过程中,滤波器的功能是移除信号不需要的部分,如随机噪音等,或者是提取有用的信号,例如提取在一定的频率范围内的信号。有两大类型的滤波器,模拟滤波器以及数字滤波器。他们拥有完全不同的物理结构,和不同的工作模式。在模拟电子电路中使用的模拟滤波器,例如由电阻、电 容产生所需的滤波功能的滤波器,这种滤波器被广泛使用在减少噪音的应用中,还有提高视频信号、图像均衡的高科技传真系统等众多领域。对于一个给
15、定的设计要求,有完善的技术标准设计模拟滤波器。在滤波过程中,电气电压或电流信号的滤波是对物理量的直接处理 (例如声音或视频信号和变频器 产生信号 )。数字滤波器使用数字信号处理器对信号的采样值进行数值计算。数字信号处理器可以使用通用计算机,例如 PC 机,或者是专用的数字信号处理器芯片。模拟信号必须先使用模数转换芯片进行取样和数字化 (模拟到数字转换 )。由此产生的二进制数字,它们代表连 续输入信号的采样值,将其转移到数字信号处理器,进行数值运算。如有必要,这些计算结果,也就是滤波后的采样值,可以通过数字 /模拟转换芯片转换成模拟信号。 需要注意的是,一个数字信号是由一系列数字表示的,而不是电
16、压或者电流表示的。 自适应滤波器是现代发展起来的一种滤波器。 自适应信号处理的一个重要应用是在 1940年发展起来的。 自适应滤波器被广泛应用于系统辨识 ,自适应增强 ,自适应噪声消除,通信信道的均衡、线性预测 ,自适应阵列天线等等。 自适应滤波器是与固定系数滤波器相反的。 在数字信号处理中 ,有很多不可预测的信号,噪音或时变信号经常需要处理, 固定滤波器系数的滤波器是不可能达到最佳滤波效果的,因此自适应滤波器被设计用来跟踪时刻改变的信号和噪声。因为拥有独特的结构和指令,使得 TMS320VC5402 DSP为设计自适应滤波器提供了方便条件。 2自适应滤波原理 自适应滤波器属于现代滤波器的范畴
17、,自适应滤波器是相对固定滤波器而言的,固定滤波器属于经典滤波器,它滤波的频率是固定的,自适应滤波器滤波的频率则是自动适应输入信号而变化的,所以其适用范围更广。在没有任何关于信号和噪声的先验知识的条件下,自适应滤 波器利用前一时刻已获得的滤波器参数来自动调节现时刻的滤波器参数,以适应信号和噪声未知或随机变化的统计特性,从而实现最优滤波。所谓自适应滤波,就是利用前一时刻已获得的滤波器参数等结果,自动地调节现时刻的滤波器参数,以适应信号和噪声未知的或随时间变化的统计特性,从而实现最优滤波。自适应滤波器实质上就是一种能调节其自身传输特性以达到最优化的维纳滤波器 。 自适应滤波器由两个基本部分组成:一个
18、 滤波器,用于对需要处理的输入信号进行过滤;和一个自适应算法 , 它可以调整滤波器的系数 , 以某种方式来提高滤波器的性能。在设计自适应滤波器的时候 , 自相关函数信号和噪声是不能提前知道的。在滤波过程中,自相关函数信号和噪声慢慢地随着时间的推移而变化 ,滤波器可以自动适应和调整 , 以满足最小均方误差的要求。 图 1自适应滤波器的结构 Input vector:输入信号向量 Digital filter with tunable coefficients: 数字滤波器可调系数 Adaptive algorithm: 自适应算法 Error signal: 错误信号 Output signal
19、: 输出信号 Desired response: 期望的反应 图 1显示了自适应滤波器的结构,滤波 目标是滤波器的输入信号 X(n), 用一个自适应滤波器以这样一种方式进行滤波 , 它可以匹配所需的信号 d(n)。所需的信号 d(n)减去过滤信号 Y(n), 生成一个误差信号 e(n)。 3 滤波器结构和 LMS 算法 3.1自适应滤波器的结构 有几种类型的滤波器结构可以实现自适应滤波器的设计 ,例如 无限脉冲响应(IIR)或有限脉冲响应 (FIR)。 根据数字滤波器冲激响应函数的时域特性,可将数字滤波器分为两种,即无限长冲激相应 IIR 滤波器和有限长冲激响应 FIR 滤波器。 IIR 数字
20、滤波器的优点是可以利用模拟滤波器设计的结果,而模拟滤波器的设计有大量图表可查,方便简单。它的缺点是相位的非线性;若需要线性相位,则要采用全通网络进行相位校正。图象处理以及数据采集传输都要求滤波器具有线性相位特性。而 FIR 数字滤波器可以实现线性相位,又可具有任意幅度特性。 FIR 滤波器可以得到严格的线性相位,然而由于 FIR 滤波器的系统函数的极点固定在原点,所以只能用较高的阶数来实现其高选择性,对于同样的滤波器设计指标, FIR 滤波器所要求的阶数要比 IIR 高 5 至 10 倍 ,所以成本较高,信号延迟也较大。但是如果要求相同的线性相位,则 IIR 滤波器就必须加全通网络进行相位校正
21、,同样也要增加滤波器网络的节数和复杂性。 FIR 滤波器可以用非递归的方法实现,在有限精度下不会产生振荡,同时由于量化舍入以及系数的不确定性所引起的误差的影响要比 IIR 滤波器小的多,并且 FIR滤波器可以采用 FFT 算法,运算速度快。但是不像 IIR 滤波器可以借助模拟滤波器的成果,必须要用计算机辅助设计软件(如 MATLAB)来计算。由此可知, FIR 滤波器应用比较广,而 IIR 滤波器则用在相位要求不是很严格的场合。 在这 个应用程序中 , 只有横向结构的 FIR滤波器结构可以实现要求。横向自适应滤波器的结构由图 2所示,滤波器输出信号由 y(n)给出, )()()()()( 10
22、 nXnwknxnwny TNk K 图 2 横向自适应滤波器的结构 TNnxnxnxnX )1() , . . . . . .1(),()( 是一个输入向量, Tn nwnwnwnW )(),(),()( 110 是输出向量,式中 T表示转置 ,N是滤波器的顺序。 3.2LMS算法 感知器和自适应线性元件在历史上几乎是同时提出的,并且两者在对权值的调整的算法非常相似。它们都是基于纠错学习规则的学习算法。感知器算法存在如下问题:不能推广到一般的前向网络中;函数不是线性可分时,得不出任何结果。而由美国斯坦福大学的 Widrow和 Hoff在研究自适应理论时提出的 LMS算法,由于其容易实现而很快
23、得到了广泛应用,成为自适应滤波的标准算法。 自适应滤波器除了包括一个按照某种结构设计的滤波器,还有一套自适应的算法。自适应算法是根据某种判断来设计的。自适应滤波器的算法主要是以各种判据条件作为推算基础的。 通常有两种判据条件:最小均方误差判据和最小二乘法判据。 LMS算法是以最小均方误差为判据的最典型的算法,也是应用最广泛的一种算法。最小均方误差 (Least Mean Square, LMS)算法是一种易于实现、性能稳健、应用广泛的算法。所有的滤波器系数调整算法都是设法使 y(n)接近 d(n),所不同的只是对于这种接近的评价标准不同。 LMS算法的目标是通过调整系数,使输出误差序列 e(n)=d(n)-y(n)的均方值最小化,并且根据这个判据来修改权系数,该算法因此而得名。误差序列的均方值又叫“均方误差” (Mean Sqluare Error,MSE)。 LMS算法的基本思想是 ,调整滤波器的系数最小化均方差,使其输出和期望的响应之间的误差减小 , 这样的系统输出是有用信号的最佳估计。 基本 LMS算法由下式给出: )()()()( nWnXndne T