🌟 欢迎来到第12讲:数字滤波器的结构 (Digital Filter Structure) #
(对应课本第八章内容)
到目前为止,我们已经学会了如何用数学语言(差分方程、系统函数)来"设计"一个滤波器。但是,一个数学公式如何变成一段能在CPU上运行的代码,或者一个能在FPGA上实现的硬件电路呢?这就是今天的主题——数字滤波器的结构。
核心学习目标:
- 理解滤波器结构:掌握用方框图表示LTI系统的基本方法和三大基本单元。
- 区分FIR与IIR:系统性地对比FIR和IIR滤波器的优缺点和应用场景。
- 掌握FIR滤波器结构:学习直接型、级联型等FIR滤波器的实现结构,并理解线性相位结构如何节省计算资源。
- 掌握IIR滤波器结构:学习直接I型、直接II型、级联型和并联型等IIR结构,并重点理解直接II型(规范结构)在节省延迟单元上的优势。
- 认识等效结构:理解不同结构可以实现相同系统函数,并了解选择不同结构的现实考量。
📚 本讲知识地图 #
📝 本讲主要内容 #
1. 滤波器的方框图表示 #
1.1 ✨ 为什么要研究结构? #
一个系统函数 $H(z)$ 可以有多种不同的数学表达式,例如一个高阶多项式,或者分解成多个低阶多项式的乘积(级联)或和(并联)。不同的数学表达式就对应着不同的计算流程,也就是不同的"结构"。
- 研究结构的意义:
- 计算效率:需要多少次乘法和加法?
- 资源消耗:需要多少个存储单元(延迟环节)?
- 数值稳定性:在有限精度计算(如定点数)中,不同结构的舍入误差和稳定性表现差异巨大。
1.2 🔧 基本结构单元与示例 #
| 单元 | 方框图符号 | 作用 |
|---|---|---|
| 乘法器 | 三角形 | $y[n] = a \cdot x[n]$ |
| 加法器 | 圆圈带"+“号 | $y[n] = x_1[n] + x_2[n]$ |
| 单位延时 | 带 $z^{-1}$ 的方框 | $y[n] = x[n-1]$ |
【示例】从差分方程到方框图 考虑一个简单的一阶IIR系统: $y[n] = b_0 x[n] + b_1 x[n-1] + a_1 y[n-1]$
这个方程直接告诉我们如何构建结构图:
- $y[n]$ 是三项之和,所以需要两个加法器。
- 需要 $x[n-1]$,所以需要一个延迟单元作用于输入 $x[n]$。
- 需要 $y[n-1]$,所以需要一个延迟单元作用于输出 $y[n]$(反馈)。
- 有三个系数 $b_0, b_1, a_1$,所以需要三个乘法器。
【图片:PPT P8中一阶IIR系统的框图和流图】

2. FIR 和 IIR 滤波器对比 #
| 特性 | FIR 滤波器 | IIR 滤波器 |
|---|---|---|
| 冲激响应 | 有限长 | 无限长 |
| 系统函数 | 只有零点 | 同时有零点和极点 |
| 反馈 | 无 | 有 |
| 稳定性 | 总是稳定 | 需要设计保证 |
| 相位特性 | 容易实现严格的线性相位 | 通常是非线性相位 |
| 阶数/资源 | 通常更高阶数 | 阶数较低 |
3. FIR 滤波器的结构 #
3.1 直接型 (Direct Form) #
直接将差分方程 $y[n] = \sum_{k=0}^{N} h[k]x[n-k]$ 转化为结构图。
【示例】5阶FIR直接型结构 (N=5)
-
系统函数: $H(z) = h + hz^{-1} + hz^{-2} + hz^{-3} + hz^{-4} + hz^{-5}$
-
结构图: 【图片:PPT P26中N=5阶FIR直接型结构图,也称为抽头延迟线结构】

-
分析:
-
一条由5个 $z^{-1}$ 单元串联组成的延迟线。
-
输入 $x[n]$ 以及每个延迟单元的输出(即 $x[n-k]$)分别乘以对应的系数 $h[k]$。
-
所有乘积项累加得到输出 $y[n]$。
-
需要 5 个延迟单元,6 个乘法器,5 个加法器。
3.2 级联型 (Cascade Form) #
将 $H(z)$ 分解为多个二阶节(SOS)的乘积,然后串联。
【示例】6阶FIR级联型结构 (N=6)
- 系统函数分解: $H(z) = h \prod_{k=1}^{3} (1 + \beta_{1k}z^{-1} + \beta_{2k}z^{-2})$
- 结构图:
【图片:PPT P28中N=6阶FIR级联型结构图】

- 分析:
- 系统由3个二阶节和一个增益 $h$ 串联而成。
- 每个二阶节实现一对零点,结构清晰,便于独立调整。
- 这是实际中非常常用的结构,因为它对系数的量化误差不敏感,数值稳定性好。
3.3 线性相位优化结构 #
利用 $h[n] = \pm h[N-n]$ 的对称性,可以减少乘法器数量。
【示例】6阶 Type I 线性相位FIR (h[n]=h[6-n])
-
系统函数: $H(z) = h(1+z^{-6}) + h(z^{-1}+z^{-5}) + h(z^{-2}+z^{-4}) + hz^{-3}$
-
优化思路: 先加后乘。例如,计算 $(x[n] + x[n-6]) \cdot h$,而不是 $x[n] \cdot h + x[n-6] \cdot h$。
-
结构图: 【图片:PPT P33中 Type I (N=7) 结构的类似实现,N=6时对称中心在h】

-
分析:
-
直接型需要 7 个乘法器。
-
优化后,只需要 4 个乘法器 ($h, h, h, h$),乘法器数量几乎减半!
4. IIR 滤波器的结构 #
4.1 直接I型 (Direct Form I) #
先实现零点(FIR部分),再实现极点(反馈部分)。
【示例】一个3阶IIR系统 (M=3, N=3)
-
系统函数: $$H(z) = \frac{p_0 + p_1z^{-1} + p_2z^{-2} + p_3z^{-3}}{1 + d_1z^{-1} + d_2z^{-2} + d_3z^{-3}}$$
-
结构图: 【图片:PPT P36中的直接I型结构图】

-
分析:
-
左半部分是一个3阶FIR结构,需要3个延迟单元。
-
右半部分是一个3阶纯反馈结构,需要3个延迟单元。
-
总共需要 M+N = 3+3 = 6 个延迟单元。这是一个非规范结构,因为系统阶数是3,但使用了6个延迟单元。
4.2 ✨ 直接II型 (Direct Form II) #
交换直接I型的级联次序并合并延迟单元,得到延迟单元最少的规范结构。
【示例】从直接I型到直接II型
-
交换次序: 先实现反馈部分,再实现FIR部分。 【图片:PPT P40中调换级联次序后的结构图】

-
合并延迟单元: 两条延迟链的输入都是同一个中间信号,因此可以合并。 【图片:PPT P41中合并延迟单元后得到的直接II型结构图】

- 分析:
- 最终结构只需要 max(M,N) = 3 个延迟单元。
- 这是实现IIR滤波器最节省存储资源的结构。
【综合示例】
-
系统函数: $H(z) = \frac{1+2z^{-1}+z^{-2}}{1-0.75z^{-1}+0.125z^{-2}}$
-
直接I型 vs 直接II型: 【图片:PPT P43中该系统直接I型和直接II型的对比图】

-
直接I型: 需要 2+2=4 个延迟单元。
-
直接II型: 只需要 max(2,2)=2 个延迟单元。
4.3 级联型 (Cascade Form) #
将 $H(z)$ 分解为多个二阶节的乘积,然后串联。
【示例】三阶IIR级联结构
- 系统函数分解: 分解为一个一阶节和一个二阶节的乘积。 $H(z) = p_0 \left(\frac{1+\beta_{11}z^{-1}}{1+\alpha_{11}z^{-1}}\right) \left(\frac{1+\beta_{12}z^{-1}+\beta_{22}z^{-2}}{1+\alpha_{12}z^{-1}+\alpha_{22}z^{-2}}\right)$
- 结构图:
【图片:PPT P47中的三阶IIR级联结构图,每个子系统用直接II型实现】

- 优点: 数值稳定性好,是高阶IIR滤波器的首选实现方式。
4.4 并联型 (Parallel Form) #
对 $H(z)$ 进行部分分式展开,表示为多个一阶或二阶节的和。


【示例】一个IIR系统的并联实现
- 系统函数: $H(z) = \frac{0.44z^{-1}+...+0.02z^{-3}}{1+0.4z^{-1}+...+ -0.2z^{-3}}$
- 部分分式展开: (如PPT P54所示) $H(z) = -0.1 + \frac{0.6}{1-0.4z^{-1}} + \frac{-0.5-0.2z^{-1}}{1+0.8z^{-1}+0.5z^{-2}}$
- 结构图:
【图片:PPT P55中的并联I型和II型结构图】

- 分析:
- 系统由一个常数增益、一个一阶节和一个二阶节并联相加构成。
- 每个支路独立计算,它们的量化误差不会相互影响,因此误差最小。
🔗 知识关联与应用 #
-
承上启下:滤波器结构是连接"数学设计"与"物理实现"的桥梁。上一讲我们学习了如何通过零极点来分析系统,而级联和并联结构正是将这种"分解"思想付诸实践的具体方法。
-
现实应用:
- 硬件实现 (FPGA/ASIC):在设计硬件滤波器时,结构的选择直接影响到芯片面积、功耗和最高运行时钟频率。
- 音频插件 (VST/AU):你在音乐制作软件中使用的均衡器(EQ)插件,其内部实现通常就是多个二阶IIR滤波器(直接II型)的级联或并联。
- 嵌入式系统:在资源受限的微控制器(MCU)上实现数字滤波时,必须选用计算量和存储量都最小的结构,直接II型(规范结构)因其最少的延迟单元而备受青睐。
🤔 引导式提问 #
- 为什么直接II型结构被称为"规范结构”?它相对于直接I型结构,在资源使用上到底节省了什么?
- 对于一个非常高阶(比如100阶)的IIR滤波器,为什么工程师几乎从不使用直接型结构,而总是倾向于使用级联型或并联型? (提示:思考"系数敏感度"和有限字长效应。)
- FIR滤波器的线性相位结构通过利用h\[n\]的对称性,减少了近一半的乘法器。请画出一个Type I, N=7的线性相位FIR滤波器结构,并数一数它需要多少个乘法器,而直接型需要多少个?
💡 本讲总结 #
我们从抽象的数学世界走向了具体的工程实现,核心要点如下: * 结构决定实现:同一个系统函数可以有多种实现结构,不同的结构在计算成本、存储需求和数值精度上表现迥异。 * FIR vs IIR:FIR稳定、易于实现线性相位但成本高;IIR高效但需关心稳定性和相位非线性。 * FIR结构:直接型最直观,但级联型因其鲁棒性和模块化而更受欢迎。线性相位结构是利用对称性优化计算的典范。 * IIR结构:直接II型是使用最少延迟单元的规范结构。对于高阶系统,级联型和并联型通过"分而治之"的思想,极大地改善了系统的数值稳定性,是实际工程中的首选。