用DSP实现FIR数字滤波器

2015年11月10日 14:05    发布者:designapp
  FIR滤波器具有幅度特性可随意设计、线性相位特性可严格精确保证等优点,因此在要求相位线性信道的现代电子系统,如图像处理、数据传输等波形传递系统中,具有很大吸引力。本文简单介绍了其线性相位条件和设计方法,并且提供了一种用DSP实现的方法。
  一、 引 言
  在许多信息处理过程中,如对信号的过滤、检测、预测等,都要广泛地用到滤波器,而数字滤波器则因其设计灵活、实现方便等特点而广为接受。
  所谓数字滤波器就是具有某种选择性的器件、网络或以计算机硬件支持的计算程序。其功能本质是按事先设计好的程序,将一组输入的数字序列通过一定的运算后转变为另一组输出的数字序列,从而改变信号的形式和内容,达到对信号加工或滤波以符合技术指标的要求。
  二、 数字滤波器的两种类型
  对于一般的数字滤波器,按照单位冲激响应可分为无限长冲激响应IIR(Infinite Impulse Response)系统和有限长冲激响应FIR(Finite Impulse Response)系统。
  在IIR系统中,用有理分式表示的系统函数来逼近所需要的频率响应,即其单位冲激响应h(n)是无限长的;而在FIR系统中,则用一个有理多项式表示的系统函数去逼近所需要的频率响应,即其单位冲激响应h(n)在有限个n值处不为零。
  IIR滤波器由于吸收了模拟滤波器的结果,有大量的图表可查,可以方便、简单、有效地完成设计,效果很好,但是其相位特性不好控制,必须用全通网络进行复杂的相位较正,才能实现线性相位特性的要求。
  FIR滤波器则可在幅度特性随意设计的同时,保证精确、严格的线性相位特性。这在要求相位线性信道的现代电子系统,如图像处理、数据传输等波形传递系统中,是具有很大吸引力的。而且,其单位冲激响应是有限长的,不存在不稳定的因素,并且可用因果系统来实现。
  下面着重讨论具有线性相位特性的FIR滤波器。
  三、 FIR滤波器线性相位特性的条件及设计方法
  1.线性相位条件
  为保证滤波器带内输出信号的形状保持不变,常常要求滤波器单位冲激响应h(n)的频率响应H(ejω)应具有线性的相频特性,即H(ejω)=H(ω)e-jωk,其中H(ω)为幅频特性,k为正整数。由傅氏变换的特性可知,线性相位滤波器只是将信号在时域上延迟了k个采样点,因此不会改变输入信号的形状。
  可以证明,如果滤波器单位冲激响应h(n)为实数,且满足:偶对称即h(n)=h(N-1-n)或奇对称h(n)=-h(N-1-n)时,则其相频特性一定是线性的。
  2.设计方法
  (1) 窗函数设计法
  从时域出发,把理想的无限长的hd(n)用一定形状的窗函数截取成有限长的h(n),以此h(n)来逼近hd(n),从而使所得到的频率响应H(ejω)与所要求的理想频率响应Hd(ejω)相接近。优点是简单、实用,缺点是截止频率不易控制。
  (2) 频率抽样设计法
  从频域出发,把给定的理想频率响应Hd(ejω)加以等间隔抽样,所得到的H(k)作逆离散傅氏变换,从而求得h(n) ,并用与之相对应的频率响应H(ejω)去逼近理想频率响应Hd(ejω)。优点是直接在频域进行设计,便于优化,缺点是截止频率不能自由取值。
  (3) 等波纹逼近计算机辅助设计法
  前面两种方法虽然在频率取样点上的误差非常小,但在非取样点处的误差沿频率轴不是均匀分布的,而且截止频率的选择还受到了不必要的限制。因此又由切比雪夫理论提出了等波纹逼近计算机辅助设计法。它不但能准确地指定通带和阻带的边缘,而且还在一定意义上实现对所期望的频率响应实行最佳逼近。
  四、 FIR滤波器的实现
  不论是窗函数设计法,还是频率抽样设计法,都要求出滤波器的单位冲激响应h(n),然后才能在时域中实现频域中的滤波。
  1.滤波系统的差分方程
  在频域,当其输入信号为X(ejω)时,如滤波器的频率响应为H(ejω),则其输出信号为Y(ejω)=X(ejω)H(ejω)。
  在时域,设滤波器的单位冲激响应h(n)为一N点序列,即0≤n≤N-1时h(n)的值不为零,根据离散傅氏变换的性质,则可以将滤波器的输入序列x(n)的响应y(n)表示为x(n)与h(n)的卷积和,即:
  


  这就是滤波系统的差分方程,它给滤波器的实现奠定了理论基础。即求出时域的h(n)后,便可通过卷积来实现频域的滤波。
                               
                  2.卷积和运算的实现
  (1) h(n)序列N个点数值的存储
  由于h(n)是根据滤波性能要求已经设计好的有限长单位冲激响应,故其N个点的数值是已知的,因此可以存放在ROM或RAM当中,且对应着N个不同的地址,便于寻址。
  (2) 输入序列x(n)的移位寄存
  输入序列x(n)是不断变化的,因此只能对其进行移位寄存,寄存器的个数为N,即N个寄存器中分别存放着x(n)、x(n-1)……x(n-N+1),它们都随着n的变化而变化。
  (3) 乘法器
  用以完成两个数值的乘法,即h(m)x(n-m),也就是将存储器中N地址所对应的N个固定数值h(m)分别与N个移位寄存器中的不断变化的N个变化数值x(n-m)相乘。
  (4) 累加器
  用以实现N个乘积的累加,即将当前x(n)所对应的N个乘积进行累加,所得到的和就是y(n)。当滤波器的下一个输入值即x(n +1)到来时,累加器清零,并重新将下一组x(n +1)所对应的N个乘积进行累加,所得到的和就是y(n +1)。
  3.DSP的支持
  DSP作为信号处理应用,与一般微处理器有很大的区别。
  (1) 哈佛结构:采用多个并行存储器块结构,使得能够访问的存储器个数增加,从而减少在一个指令周期中所需存储器操作周期数。
  (2) 乘加流水线为核心的数据通路:卷积和运算的基本操作就是乘法与加法,DSP则将相乘及累加统一考虑,构成以乘法器、加法器流水线为中心的运算部件。
  (3) 特殊的指令:指令RPT由数据存储器指定重复次数,指令MACD可以一次完成相乘并带数据移位的累加,因此使得每一级FIR滤波器只需一个指令周期。
  (4) 指令系统的多级流水线:采用多级流水线操作方式,可以把指令周期减小到最小值,同时也就增加了数字信号处理器的吞吐量。
  五、 具体电路框图及程序流程图
  图 1为FIR滤波器DSP实现的电路方框图,其核心部分为TI公司生产的DSP芯片TMS320C203 ,EP2ROM和RAM是其外围电路。DSP送给A/D抽样时钟,对输入的模拟信号抽样,即将模拟信号转换成数字信号,然后读取每一次的抽样值,并对抽样值进行卷积运算(FIR数字滤波),最后将运算结果(滤波后的数字信号)送至D/A ,转换成模拟信号进行输出。
  


  图 1 电路框图
  图 2为程序流程图,说明如下:
  


  图 2 程序流程图
  (1) 对DSP进行初始化,定义DSP的一些向量和工作模式;
  (2) 为数字滤波作准备,将预先设计好的有N个抽头的FIR数字滤波器的冲激响应序列h(n)中的N个数值放入存储单元B1~BN;
  (3) 作好滤波准备工作后,开始进行抽样,并读入抽样值,放入存储单元A1中;
  (4) 之后便对抽样值进行运算处理:
  (a) 将累加器清零,并设置两个准备相乘的存储单元A与B的初始值K和L;
  (b) 将第K个抽样值AK与冲激响应序列的第L个数值BL相乘(K+L=N+1),并将乘积送入累加器进行累加;
  (c) 将第K-1个抽样值AK-1放入AK,此时AK中原数值被覆盖;
  (d) 重复(b)~(c),直至共完成N次乘加运算。
  (5) 输出处理结果;
  (6) 重复(3)~(5)。
  六、 结束语
  FIR滤波器具有严格的线性相位,且是可物理实现的因果系统,因此被广泛地应用在现代通信技术当中,如解调器中的位同步与位定时提取、自适应均衡去码间串扰以及话音的自适应编码等。可见对FIR滤波器的研究是具有非常重要的现实意义的。