这一篇在干嘛?
采样率变换的艺术:抽取/插值、多相分解、Hogenauer CIC 滤波器、小波变换——过采样系统的核心工具箱。 原书代码为 VHDL,本篇所有代码已改写为 Verilog。
- 第5章
- 多级信号处理
- 5.1 抽取和插值
- 5.2 多相分解
- 例5.1 多相抽取滤波器
- 例5.2 快速FIR滤波器
- 算法5.3 快速FIR滤波器
- 5.3 Hogenauer CIC 滤波器
- 例5.4 三级CIC抽取器I
- BEGIN
- 例5.6 三级CIC抽取器III
- 5.4 多级抽取器
- 使用 Goodman-Carey 半带滤波器的多级抽取器设计
- 定义 5.7:半带滤波器
- 例 5.8 多级半带滤波器抽取器
- 5.5 作为通频带抽取器的频率采样滤波器
- 5.6 任意采样速率转换器的设计
- 例5.9 的速率变换器I
- 算法5.10 应用FFT的有理数速率变换
- 例 5.11 R=0.75 的速率变换器 II
- 例5.12 的速率变换器III
- 例5.13 的速率变换器IV
- 例 5.14 R=0.75 的速率变换器 V
- 5.7 滤波器组
- 例5.16 双通道Haar滤波器组I
- 定理 5.17 完美的重构
- 例 5.18 双通道 Haar 滤波器组 II
- 定理5.19 与混叠无关的双通道滤波器组
- 算法5.20 完美重构的双通道滤波器组
- 例5.21 采用F3的完美重构滤波器组
- 推论 5.22 半带滤波器的因式分解
-
- 多相双通道滤波器组
-
- 提升
- 例 5.23 DB4 滤波器的提升实现
-
- QMF 实现
-
- 正交滤波器组
-
- 线性相位双通道滤波器组
- 例5.25 的线性相位滤波器的网格
-
- 实现选项的比较
- 5.8 小波
- 例 5.26 线性调频信号的分析
- 例5.27 长度为4的Hutlet滤波器
- 5.9 练习
- 5.25 利用练习 5.24 的结果。
自测一下
抽取前为什么必须先低通滤波?
直接丢点(抽取)会让新采样率下的高频分量混叠到带内。先抗混叠低通把新奈奎斯特频率以上的能量压掉,再抽取才不失真。
CIC 滤波器为什么"不用乘法器"?
CIC 的系数全是 1(积分器+梳状器级联),只需加法器与寄存器。代价是通带衰减大,通常放在高速率前端、后接补偿 FIR。
多相分解省了什么?
把长滤波器拆成 R 相,每相只在低速率时钟下处理自己那一路,等效把乘法器工作频率降到 1/R,或者用 1/R 个乘法器完成原本 R 倍速的计算——硬件量大幅下降。
半带滤波器有什么特点?
约一半系数恰好为 0(除中心点外偶数系数全为 0),乘法量比同长 FIR 少一半;通阻带对称,特别适合 2 倍抽取/插值级联。
第5章 多级信号处理
在数字信号处理中,有一类非常常见的任务:根据感兴趣的信号来调整采样速率。由不同采样速率的系统组成的处理链,就称为多级系统。本章通过两个典型示例说明多级 DSP 系统中的抽取与插值,然后引入多相分解这一重要的实现技巧,研究高效的抽取器设计,最后讨论 Hogenauer CIC 滤波器——高速抽取/插值系统中几乎绕不开的构件。
5.1 抽取和插值
什么是抽取,为什么需要它
如果 A/D 转换之后,感兴趣的信号只占据一个很窄的频带(通常是低通或带通),那么用很高的采样速率来承载它就是一种浪费:后续每一步运算都要为那些”空”的频谱成分买单。合理的做法是先窄带滤波,再降低采样速率——滤波加向下采样的组合通常称为抽取器。滤波、向下采样以及对频谱的影响如图 5-1 所示。

图 5-1 信号 的抽取
采样速率能降到多低?下限就是奈奎斯特速率:采样速率必须高于信号带宽,否则混叠就会出现。图 5-2 对比了无混叠抽取与有混叠抽取的情形。要特别记住:混叠是不可修补的——一旦不同频带的成分叠在一起,无论后面做什么处理都无法把它们分开,所以必须在抽取之前用低通滤波器把它们滤干净。

图 5-2 无混叠抽取和有混叠抽取的情形
带通信号的完整频带条件
对带通信号还有一条额外规则:有用频带必须整体落在一个”完整频带”之内。设采样速率为 、向下采样因子为 ,则有用带宽必须满足
初学者容易误以为”采样速率高于奈奎斯特频率就万事大吉”,式(5-1)正是提醒:如果频带跨在 的边界上,向下采样后负频带的”复制”会混进正频带,即使采样速率足够高也会出现混叠,如图 5-3 所示。

图 5-3 完整频带的干扰(© VDI 出版社文献[4])
插值与 D/A 转换
反过来,提高采样速率也有用武之地,最典型的就是 D/A 转换。D/A 转换器通常采用一阶采样-保持,输出是阶梯状的函数,其高频镜像成分虽然可以用模拟 补偿滤波器修整,但在大多数情况下数字方案更划算:在数字域先用一个扩展器(每 R 个点插入 R-1 个零)和一个附加低通滤波器,把频谱抬到高采样速率上。注意,扩展器引入的零点会在基带频谱之外生成额外副本,这些副本必须在信号送入 D/A 之前被插值滤波器消除,见图 5-4。直观地说,插值倍数越多,输出信号越光滑(参见图 5-5(b))。

图 5-4 插值示例 ,R=3

(a) 低的过采样、高的递降

图 5-5 D/A 转换
5.1.1 Noble 恒等式
处理多级系统时,经常会希望把滤波器和向下采样器/扩展器换个位置,以换取更低的运算量。图 5-6 给出的重新排列规则就是所谓的 “Noble” 关系式。

图 5-6 等价多级系统(Noble 关系)
对抽取器,恒等式为
含义:如果允许”先向下采样、后滤波”,那么滤波器可以换成 ——它的系数间隔被拉开了 R 倍,等效于滤波器长度不变但只以 1/R 的速率做乘加。对插值器则有
含义:把滤波器放在扩展器之前,同样得到降低了 R 次的滤波器。直觉上, Noble 恒等式的价值在于:它把”高采样率下的大量运算”合法地搬到”低采样率”一侧,5.2 节的多相实现正是建立在这两个恒等式之上。
5.1.2 用有理数因子进行采样速率转换
如果输入、输出速率之比不是整数,就需要有理数变换因子 。标准做法是:先用插值器把采样速率提高 倍,再用抽取器降低 倍。插值和抽取都需要低通滤波器,两个滤波器级联在一起时,效果由通带更窄的那个决定,因此只需实现一个低通滤波器,其通带频率取
图 5-7 上面是插值器与抽取器的级联,下面是合并后的单滤波器结构。5.6 节将进一步讨论该系统的不同设计方案。

图 5-7 非整数抽取系统:上面是插值器和抽取器的级联,下面是最终组合的低通滤波器
5.2 多相分解
为什么要多相分解
在 IIR/FIR 滤波器与滤波器组中实现抽取或插值时,多相分解非常有用。以 FIR 抽取滤波器为例:在图 3-1 的 FIR 结构后接一个 R 倍向下采样器,输出只需要
这些时刻的值。也就是说,卷积和 没有必要每个采样点都算!举例来说, 只需要乘以
这些系数;除 外的其余输入样本也只需要乘以
分解方法
据此可以把输入信号分成 R 个独立的序列:
同样把滤波器 分成 R 个序列:
图 5-8 给出了多相分解实现的抽取器:R 个短滤波器并行工作在低速率上,再合并成输出。这样的抽取器运行速度可以比”滤波器 + 向下采样器”的通用结构快 R 倍。滤波器 称为多相滤波器——它们幅值传递函数相同,只是被不同的采样延迟分隔开,引入了相位偏移,“多相”由此得名。

图 5-8 抽取滤波器的多相实现
例 5.1 多相抽取滤波器
以长度为 4 的 Daubechies 滤波器 、抽取因子 R = 2 为例:
系数量化到 8 位精度后得到