数字滤波器理论

温故而知新,可以为师矣!数字滤波器设计是DSP中很重要的的一个板块,也是比较难理解的一个部分。面对数字滤波器的结构框图,很容易具有畏难心态,至少我是这样的,一看到滤波器结构框图就头大,完全不想看,但滤波器的设计同样是FPGA设计不可缺少的一个环节,因此必须面对它,实则滤波器结构框图本质上是一对数字乘法和加法的结合体,因此从公式本质上理解他,将会事半功倍。

本文以FIR滤波器框图设计为例,体会滤波器框图的设计过程……

  • FIR滤波器的$z$变换表达式
    $$
    H\left(z\right)=\frac{Y\left(z\right)}{X\left(z\right)}=\sum_{k=0}^{N-1}h\left[k\right]z^{-k}
    $$

  • 时域输出表达式:
    $$
    y[n]=\sum_{k=0}^{N-1}h[k]x[n-k]
    $$

  • 无限冲激响应LTI系统的特征在于有理传递函数,通过线性常系数差分方程表征如下
    $$
    y[n]=\sum_{k=0}^{M}b_kx[n-k]-\sum_{k=0}^{N}a_ky[n-k]
    $$

上式中,第一项为输入,第二项为反馈项,总体呈现递归结构。

直接I型

对于FIR滤波的直接I型结构框图,其本质上是对式$(2)$的结构框图实现,为了更好理解,将求和符号进行展开,具体如下:
$$
y[n]=h[0]x[n]+h[1]x[n-1]+\cdots+h[N-2]x[n-N+2]+h[N-1]x[n-N+1]
$$
根据上式,即可很容易画出如下框图,记为$I$:

image-20250314163334444

接下来乱七八糟的结构框图,全都是基于上图进行改造,所以万变不离其宗,最核心的式子为卷积公式,即一堆数字的加法和乘法。

接下来介绍结构框图的转置:转置定理指出:反转信号流图中所有支路的方向,并交换输入与输出,同时将分支节点与相加节点互换,可得到与原系统传递函数相同的转置结构。上图的转置结构如下所示,记为$I_t$:

image-20250314163751829

看到这儿,似乎有点迷糊,$I_t$和$I$看似一样,又好像不一样,是怎么实现的呢?其实缺了一个中间过程,有了它,一切变得合理起来……

image-20250314172746645

上图其实与$I_t$完全一样,只是输入输出方向不一样罢了,由此可得转置的具体步骤如下:

  1. 反转信号流方向
    • 所有箭头方向反转,输入端口变为输出端口,输出端口变为输入端口。
  2. 节点类型转换
    • 分支节点(信号分叉点) 变为 相加节点
    • 相加节点 变为 分支节点
  3. 保持系数和延迟不变
    • 所有支路的增益系数(如 $b_0,b_1,a_1$ 等)和延迟单元($z^{−1}$)保留,仅位置因流图反转而调整。
  4. 调整延迟单元位置
    • 原前向通路的延迟可能变为反馈通路中的延迟,反之亦然,但功能不变。

接下来对结构框图可以进一步优化,因为FIR滤波器成对称结构,系数对称,所以根据$N$的奇偶性可以得到如下两个结构框图:

N为偶数

image-20250314173313543

N为奇数

image-20250314173331308

对于FIR滤波的直接I型基于$b_k,a_k$实现的结构框图,其本质上是对式$(3)$的结构框图实现,具体如下:

image-20250314173730021

直接II型

直接I和II的本质区别:

直接型I(Direct Form I)

  • 结构特点
    • 零点在前,极点在后:FIR滤波器的分子(零点)和分母(极点)分别用独立的延迟链实现。
    • 双延迟链:需要两组延迟单元(一组用于分子,一组用于分母)。
    • 物理意义明确:输入信号先经过零点(前馈部分),再经过极点(反馈部分)。
  • FIR特例
    FIR滤波器无极点(分母为1),因此直接型I退化为单一前馈延迟链,仅需一组延迟单元。

直接型II(Direct Form II)

  • 结构特点
    • 极点在前,零点在后:先处理分母(极点),再处理分子(零点)。
    • 单延迟链:合并分子和分母的延迟单元,减少硬件资源。
    • 数值稳定性问题:极点与零点的顺序可能导致误差积累(对IIR滤波器更显著)。
  • FIR特例
    FIR滤波器无极点,直接型II退化为延迟链与系数直接连接,但实际应用中较少使用(直接型I更常见)

直接II型则是将直接I型进行简化,系数$a_k和b_k$共用一组延时器,其结构框图如下:

image-20250314174221804

通常来说,直接I型更直观。

Reference

本文参考《Multirate Filtering for Digital Signal Processing MATLAB Applications (Premier Reference Source) (Ljiljana Milic)》