滤波器是任何信号处理系统的关键组成部分,随着现代应用的日趋复杂,滤波器设计的复杂程度也日益提高。采用 FPGA 设计和实现的高性能滤波器的能力是模拟方法所望尘莫及的。另外,采用FPGA 设计的数字滤波器可以避免模拟设计中存在的某些问题,特别是组件漂移和容差(在高可靠应用中,由温度过高、老化和辐射问题造成)。这些模拟问题会显著降低滤波器的性能,特别是在通带纹波等方面。
当然, 数字模型也有自身的缺陷。滤波器数学运算中的舍入可能会带来问题,因为舍入误差会被累加,给性能造成不良影响,比如增大滤波器的噪声基底。工程师可以采取多种方法大程度地减轻这种影响,例如使用收敛舍入可以获得比传统舍入更好的性能。终, 舍入误差问题的严重性与模拟器件相比得到了显著降低。
将 FPGA 作为滤波器构建模块的主要优势之一在于,如果因为集成原因或者需求变动原因需要调整性能,允许在设计过程的后期修改或者更新滤波器的参数,且产生的影响很小。
滤波器类型和拓扑结构
大多数熟知数字信号处理的工程师都知道滤波器的主要类型有四种。低通滤波器只允许频率低于预设截止频率的信号通过。高通滤波器与低通滤波器相反,只允许频率高于截止频率的信号通过。带通滤波器只允许频率在预设带宽内的信号通过,不允许其它频率的信号通过。带阻滤波器与带通滤波器相反,不允许频率在预设带宽内的信号通过,但允许其它频率的信号通过。
大多数数字滤波器都采用下列两种方法之一来实现: 有限脉冲响应(FIR) 和无限脉冲响应 (IIR)。首先我们深入探讨如何设计和实现 FIR 滤波器。这种滤波器也常被称为窗口 sinc滤波器。
为什么我们首先以 FIR 滤波器为重点呢?两种滤波器的大区别在于有无反馈。对未采用反馈的 FIR 滤波器,在给定的输入响应下,滤波器的输出终会稳定为 0。而对采用反馈的IIR 滤波器,在相同的给定输入下,输出不会稳定为 0。
FIR 滤波器的设计由于未采用反馈,故天生具有稳定性,因为滤波器的所有极点都与原点重合。IIR 滤波器没有这么幸运。由于在设计 IIR 滤波器的时候,必须精心考虑其稳定性,这样窗口 sinc 滤波器对新接触 DSP 技术的工程师来说,更加易于理解和实现。
频率响应
频率响应是工程师在考虑滤波器时所习惯关注的问题。它代表着滤波器改变频域信息的性能。
通过频率响应可以观察到截止频率、阻带衰减和通带波纹。在该响应中还可以清晰地观察到通带和阻带之间的滚降,也称为过渡带。通带中的波纹会给滤波信号造成影响。阻带衰减则表明滤波器输出中存在多少不必要的频率。这对需要抑制特定频率的应用意义重大,比如在通信系统中为频分多路复用通道滤波。
脉冲响应
从脉冲响应中可以抽象出滤波器的系数。但是,要实现滤波器的性能,标准的方法是采用窗函数。窗函数指给截断的脉冲响应应用额外的数学函数,以求减轻截断带来的副作用。
在图 2 中,由于纹波的存在,脉冲响应向外无限延伸,尽管纹波的振幅显著降低,但永远不会降低至 0。因此,必须围绕位于中心的主瓣,在两侧对称地按 N+1 的系数截断脉冲响应,这里 N 是期望的滤波器长度(切记 N应为偶数)。脉冲响应被突然截断会给滤波器的频域性能带来不良影响。如果对截断的脉冲响应进行离散傅里叶变换 (DFT),可以观察到通带和阻带都有波纹出现以及滚降性能的下降。这是为什么一般会采用窗函数来改善性能的原因。