基于DSP的FIR数字滤波器的实现
扫描二维码
随时随地手机看文章
摘要: 在数字信号处理应用中, 滤波占有十分重要的地位, 如对信号的过滤、检测、预测等, 都要广泛地用到滤波器。文中研究了FIR滤波器窗函数算法的基本思想给出了在定点DSP芯片上实现FIR数字滤波器的设计方法, 并给出了仿真结果。
0 引言
数字信号处理现已在通信与信息系统、信号与信息系统、自动控制、需达、军事、航空航天、医疗和家用电器等众多领域得到了广泛的应用。在数字信号处理应用中, 滤波占有十分重要的地位, 如对信号的过滤、检测、预测等, 都要广泛地用到滤波器。IIR数字滤波器的设计保留了一些典型模拟滤波器优良的幅度特性, 但所涉及的滤波器相位特性一般是非线性的, 而FIR滤波器则可在保证幅度特性并满足技术要求的同时, 也很容易做到严格的线性相位特性。
1 基于窗函数法的FIR滤波器设计1.1 单位冲激响应
首先应根据技术要求确定待求滤波器的单位冲激响应hd (n)。如果给出待求滤波器的频率为Hd (ej), 那么单位取样响应则可用下式求出:
如果给出通带阻带衰减和边界频率的要求,则可选用理想滤波器作为逼近函数, 从而用理想滤波器的特性作傅立叶逆变换, 以求出hd (n)。若理想低通滤波器为:
[!--empirenews.page--]
1.2 过渡带及阻带衰减
根据对过渡带及阻带衰减的要求, 设计时可选择窗函数的形状, 并估计窗口长度N。设待求滤波器的过渡带用Δω表示, 它近似等于窗函数的主瓣宽度。由于过渡带Δω近似与窗口长度N成反比。即N=A/Δω, 其中A决定于窗口形式, 例如, 矩形窗A=4π, 哈明窗A=8π等。按照过渡带及阻带衰减情况, 选择窗函数形式。其设计原则是在保证阻带衰减的情况下, 尽量选择主瓣比较窄的窗函数。
1.3 单位取样响应的计算:
计算滤波器的单位取样响应h (n) 时, 可按正式进行:
验算技术指标是否满足要求时其设计出的滤波器频率响应可采用下式进行计算:
计算上式时, 可使用FFT算法。如果H (ejω)不能满足要求, 那么, 根据具体情况, 可重复上述设计, 直到满足要求为止。
2 基于DSP的FIR数字滤波器实现方案
2.1 滤波系统的差分方程
2.2 实现方案
由于在卷积运算之前, h (n) 的N个数值是已知的, 因此, 可先在程序存储器中开辟N个单元来存放h (n)。由于输入序列x (n) 是不断变化的,因此, 在数据存储器中可开辟N个存储单元并对其进行移位寄存, 其初始值分别为x (n)、x (n-1)……x (n-N-1), 然后采用循环寻址的方法对其进行访问。每次输入新的样本时, 可以以新样本改写滑窗中的最老的数据, 而滑窗中的其他数据则不需要移动。利用片内8 kB (循环缓冲区长度)寄存器可对滑窗进行间接寻址, 循环缓冲区地址首尾相邻。8级循环缓冲区的结构如图1所示, 其中顶部为低地址, 图1中的(a) (b) (c) 分别为初始状态、输入1个和2个样本后的存储情况。
图1 8级循环缓冲区结构。[!--empirenews.page--]
3 仿真结果
下面是一组信号采样序列样本x (n), 其中存在有高频干扰。现以x (n) 作为输入序列, 然后滤除其中的干扰成分。
{x (n)} = {-4,-2,0,-4,-6,-4,-2,-4,-6,-6,-4,-4,-6,-6,-2,6,12,8,0,-16,-38,-60,-84,-90,-66,-32,-4,-2,-4,8,12,12,10,6,6,*,0,0,0,0,0,-2,-4,0,0,0,-2,-2,0,0,-2,-2,-2,-2,0}
本设计的线性相位低通FIR数字滤波器的截止频率ωc为0.2πrad, 窗口长度N为11。根据上述原理及实现方案, 若采用汉宁窗来实现, 则可依据算式计算出用汉宁窗设计时的各h (n) 的系数:
{h (n)} = {0, 0.0045, 0.0349, 0.0991, 0.1692,0.2, 0.1692, 0.0991,0.0349, 0.0045, 0}
在CCS2.0软件中观察x (n) 的输入曲线如图2所示, 图3所示是其y (n) 输出曲线。
由图2和图3两图对比可见, 经过滤波后, 其输入曲线变平滑了。并且, 根据计算所得:
{y (n)} = {0, -0.018, -0.1486, -0.4662, -0.893, -1.305, -1.7006, -2.1548, -2.6372, -3.0062, -3.1918, -3.3098, -3.5296, -3.8198,-4.009, -4.0482, -3.9514, -3.4596, -2.0672, 0.3162, 2.7908, 3.*8, 0.9464, -6.2018, -17.6736, -31.8884, -45.5584, -54.1796, -54.044, -44.916, -30.6*, -16.6756, -6.3676, 0.058,4.037, 6.5272, 7.5976, 7.318, 6.2854, 5.0906, 3.8896, 2.*2, 1.5078, 0.6238, 0.0788, -0.3198, -0.7348, -1.0768, -1.1474, -0.9538,-0.7342, -0.6852, -0.7*, -0.8172, -0.8136,-0.8834} 上面一共56个值。
图2 x (n) 输入曲线
图3 y (n) 输出曲线
4 结束语
通过实验结果可见, 本设计用DSP设计的FIR数字滤波器的输出曲线对应值与计算所得值完全相符, 由此证明, 本设计的程序是正确的。