FIR数字滤波器在TMS320VC54xDSP上的实现(1)
2015-08-04 01:10
导读:计算机应用论文论文,FIR数字滤波器在TMS320VC54xDSP上的实现(1)怎么写,格式要求,写法技巧,科教论文网展示的这篇文章是很好的参考:
摘 要 FIR数字滤波器是数字信号处理的经典方法,其设计方法有
摘 要 FIR数字滤波器是数字信号处理的经典方法,其设计方法有多种,用DSP芯片对FIR滤波器进行设计时可以先在MATLAB上对FIR数字滤波器进行仿真,所产生的滤波器系数可以直接倒入到DSP中进行编程,在编程时可以采用DSP独特的循环缓冲算法对FIR数字滤波器进行设计,这样可以大大减少设计的复杂度,使滤波器的设计快捷、简单。关键词 FIR;DSP;循环缓冲算法1 引言在信号处理中,滤波占有十分重要的地位。数字滤波是数字信号处理的基本方法。数字滤波与模拟滤波相比有很多优点,它除了可避免模拟滤波器固有的电压漂移、温度漂移和噪声等问题外,还能满足滤波器对幅度和相位的严格要求。低通有限冲激响应滤波器(低通FIR滤波器)有其独特的优点,因为FIR系统只有零点,因此,系统总是稳定的,而且容易实现线性相位和允许实现多通道滤波器。2 FIR滤波器的基本结构及设计方法2.1 FIR滤波器的基本结构设a i(i=0,1,2,…,N一1)为滤波器的冲激响应,输入信号为 x(n),则FIR滤波器的输入输出关系为:

FIR滤波器的结构如图1所示:

图12.2 FIR滤波器的设计方法 (1) 窗函数设计法 从时域出发,把理想的无限长的hd(n)用一定形状的窗函数截取成有限长的h(n)
,以此h(n)来逼近hd(n)
,从而使所得到的频率响应H(ejω)与所要求的理想频率响应Hd(ejω)
相接近。优点是简单、实用,缺点是截止频率不易控制。 (2) 频率抽样设计法从频域出发, 把给定的理想频率响应Hd(ejω)以等间隔抽样
,所得到的H(k)作逆离散傅氏变换
,从而求得h(k)
,并用与之相对应的频率响应H(ejω)去逼近理想频率响应Hd(ejω)。优点是直接在频域进行设计,便于优化,缺点是截止频率不能自由取值。(3) 等波纹逼近计算机辅助设计法前面两种方法虽然在频率取样点上的误差非常小,但在非取样点处的误差沿频率轴不是均匀分布的,而且截止频率的选择还受到了不必要的限制。因此又由切比雪夫理论提出了等波纹逼近计算机辅助设计法。它不但能准确地指定通带和阻带的边缘,而且还在一定意义上实现对所期望的频率响应实行最佳逼近。3 循环缓冲算法对于N级的FIR滤波器,在数据存储器中开辟一个称之为滑窗的N个单元的缓冲区,滑窗中存放最新的N个输入样本。每次输入新的样本时,一新样本改写滑窗中的最老的数据,而滑窗中的其他数据不需要移动。利用片内BK(循环缓冲区长度)寄存器对滑窗进行间接寻址,环缓冲区地址首位相邻。下面,以N=5的FIR滤波器循环缓冲区为例,说明循环缓冲区中数据是如何寻址的。5级循环缓冲区的结构如图所示,顶部为低地址。

……由上可见,虽然循环缓冲区中新老数据不很直接明了,但是利用循环缓冲区实现Z-1的优点还是很明显的:它不需要数据移动,不存在一个极其周期中要求能进行一次读和一次写的数据存储器,因而可以将循环缓冲区定位在数据存储器的任何位置(线性缓冲区要求定位在DARAM中)。实现循环缓冲区间接寻址的关键问题是:如何使N个循环缓冲区单元首位相邻?要做到这一点,必须利用BK(循环缓冲器长度)器存器实现按模间接寻址。可用的指令有:… *ARx % ;增量、按模修正ARx:addr=ARx,ARx=circ(ARx 1)… *ARx-% ;减量、按模修正ARx:addr=ARx,ARx=circ(ARx-1)… *ARx 0% ;增AR0、按模修正ARx:addr=ARx,ARx=circ(ARx AR0)… *ARx-0% ;减AR0、按模修正ARx:addr=ARx,ARx=circ(ARx-AR0)… * ARx(lk)% ;加(lk)、按模修正ARx:addr=circ(ARx lk),ARx=circ(ARx AR0)其中符号“circ”就是按照BK(循环缓冲器长度)器存器中的值(如FIR滤波其中的N值),对(ARx 1)、(ARx-1)、(ARx AR0)、(ARx-AR0)或(ARx lk)值取模。这样就能保证循环缓冲区的指针ARx始终指向循环缓冲区,实现循环缓冲区顶部和底部单元相邻。循环寻址的算法可归纳为:if 0 index step