Pavan《Understanding Delta-Sigma Data Converters》Ch.14 抽取与插值滤波器 深度解析
本章内容:系统阐述 ΔΣ ADC/DAC 系统中数字抽取和插值滤波器的设计理论与实现方法。涵盖多相分解、sinc/CIC 滤波器、半带滤波器(含 Saramäki 结构)、带通抽取以及分数速率转换。
衔接:Ch.13(ΔΣ DAC)中的插值滤波器示例(§13.4)是本章的简单引子。Ch.4 的调制器阶数与 OSR 决定抽取/插值规格。 后续:附录 B(ΔΣ 工具箱)提供设计辅助函数。
第 14 章目录结构
| 节号 | 标题 | 核心内容 |
|---|---|---|
| 14.1 | 插值滤波 (Interpolation Filtering) | 零填充、多相分解、ZOH/FOH/sinc 插值器 |
| 14.2 | 插值滤波器设计实例 (Example Interpolation Filter) | 6级×2插值、sinc 阶数选择、补偿滤波器 |
| 14.3 | 抽取滤波 (Decimation Filtering) | 多相分解、累积-转储、sinc 抽取器 |
| 14.4 | 抽取滤波器设计实例 (Example Decimation Filter) | 5级×2抽取 + 补偿 + 半带 |
| 14.5 | 半带滤波器 (Halfband Filters) | 对称特性、多相实现、Saramäki 结构 |
| 14.6 | 带通ΔΣ ADC的抽取 (BP-ADC Decimation) | 复混频、粗/细混频、fs/4 特例 |
| 14.7 | 分数速率转换 (Fractional Rate Conversion) | 1.5倍抽取、Farrow 结构、异步 SRC |
| 14.8 | 总结 | — |
核心内容深度解析
14.1 插值滤波(Figure 14.1-14.8)
基本操作(Figure 14.3):
- 零填充(zero-stuffing)→ 低通滤波 → 消除镜像
- 倍插值:每输入样本插入 个零,然后 LPF 截止频率为
多相分解(Polyphase Decomposition)(Figure 14.4, 式 14.1):
- 将 抽头 FIR 滤波器分解为 个 抽头子滤波器
- 子滤波器以 低速率 运行,计算量降低 倍
- 式 (14.1) 为 时, 分别对应四个子滤波器的输出
LPF 规格(Figure 14.5):
- OSR 低(≈1)→ 过渡带窄 → 滤波复杂
- OSR 高(>>1)→ 过渡带宽 → 滤波简单
零阶保持(ZOH)(Figure 14.6):
- 矩形脉冲响应
- ,DC 增益 (零填充使 DC 降低 倍)
- 镜像衰减 ≤ 40 dB 除非 OSR ≥ 50
一阶保持(FOH)(Figure 14.6-14.7):
- ,镜像衰减加倍
- 高效实现(Figure 14.7):低速率差分 → ZOH → 高速率积分
- 需注意初始化:不同化器和积分器的初始状态应一致(均为零或每 N 周期复位)
高阶 sinc 插值器(Figure 14.8):
- M 阶 sinc 插值器:
- Hogenauer 结构:M-1 个微分器(低速率)+ ZOH + M-1 个积分器(高速率)
- 时可特化:级联 ZOH 与 仅需 M-1 次加法 @ 2×速率
- 多相实现更高效(Figure 14.9):sinc⁵/2 只需 5 次加法 @ 1×速率
14.2 插值滤波器设计实例(Table 14.1, Figure 14.10-14.14)
规格:OSR_in=2 × 64 倍插值,镜像抑制 ≥ 60 dB,通带波动 ≤ 0.5 dB
设计方法:
- 6 级 ×2 插值级联,尽可能用 sinc 滤波器
- 各级 OSR 逐步提高 → 过渡带变宽 → sinc 阶数可降低
sinc 阶数选择(Table 14.1):
| 级 | OSR | A₁ (dB) | sinc 阶数 | 通带跌落 |
|---|---|---|---|---|
| I6 | 64 | 38.2 | 2 | 0.001 dB |
| I5 | 32 | 32.2 | 2 | 0.005 dB |
| I4 | 16 | 26.2 | 3 | 0.03 dB |
| I3 | 8 | 20.1 | 3 | 0.1 dB |
| I2 | 4 | 14.0 | 5 | 0.8 dB |
| I1 | 2 | 7.7 | 8 | 5.5 dB(超标) |
解决方案:在 I1 前添加 5 抽头 FIR 补偿滤波器 COMP
- 系数 CSD 量化后仅 7 次加法/输入样本
- COMP 系数(CSD 形式):
- ,
- 替代方案:将补偿功能并入 I1 的 9 抽头 FIR(但计算量更大)
最终架构与计算量(Figure 14.14):
COMP(7) → I1/sinc⁸(12) → I2/sinc⁵(10) → I3/sinc³(12) → I4/sinc³(24) → I5/sinc²(16) → I6/sinc²(32)
- 总计:113 次加法/输入样本 @ 1×速率 = 不到 2 次加法/输出样本
- 没有乘法器——全部用移位和加法实现
14.3 抽取滤波(Figure 14.15-14.18)
基本操作:LPF → 下采样(每 N 取一) 多相分解(Figure 14.15):
- :4 个子滤波器分别处理
- 计算量降至约
累积-转储(AAD)(Figure 14.17):
- ZOH 对应的一阶 sinc 抽取器:累加 N 个输入 → 锁存 → 重置
sinc 抽取器(Figure 14.18):
- 积分器(高速率)+ 微分器(低速率),不同于插值器的顺序
- 积分器开环无反馈 → 直流输入会使积分器无限增长
- 但模运算(取足够多 bit)可正常工作:使用 的二进制补码运算
- 初始化错误不是灾难性的(有限长瞬态)
抽取 vs 插值的关键差异:
- AAD 需要计算,ZOH 不需要
- 抽取器输入字长短(1-4 bit),可大幅节省第一级功率
- 抽取器的衰减要求更严苛(~100 dB 混淆抑制 vs 插值器的 ~60 dB 镜像抑制)
14.4 抽取滤波器设计实例(Table 14.2-14.3, Figure 14.19-14.22)
规格:OSR=64,混淆抑制 ≥ 100 dB,通带波动 ≤ 0.1 dB
sinc 阶数选择(Table 14.2):
| 级 | OSR | A₁ (dB) | sinc 阶数 | 通带跌落 |
|---|---|---|---|---|
| D1 | 32 | 32.2 | 4 | 0.010 dB |
| D2 | 16 | 26.2 | 4 | 0.042 dB |
| D3 | 8 | 20.1 | 5 | 0.210 dB |
| D4 | 4 | 14.0 | 8 | 1.348 dB |
| D5 | 2 | 7.7 | 14 | 9.628 dB |
补偿滤波器(对称 8 阶 FIR,式 14.19):
- , ,
- ,
完整计算量:~704 次加法/输出样本(D1 占 38%)
- D5 占 ~40%(阶数高、字宽大)
- 最后一级半带滤波器 HBF 占 284 次加法
仿真验证(Figure 14.22):
- 使用 3 阶 5 级调制器 + 9 个等间距 -20 dBFS 音调
- 各级输出 IBN 基本维持在 -112 dBFS,HBF 后 -111 dBFS(仅降 1 dB)
14.5 半带滤波器(Figure 14.23-14.26)
定义与对称性质(式 14.20):
- 冲击响应的所有奇数抽头为零(除中间抽头 = 0.5)
- 15 抽头示例:仅 8 个非零抽头,7 个零无需计算
多相实现(Figure 14.24):
- 半带的一个分支塌缩为纯延迟,节省寄存器和计算
- 使用转置拓扑以便重用部分乘积
对比计算量:
- 80% 通带、-80 dB 阻带:半带 47 抽头(24 非零),普通 FIR 34 非零
- 半带通带波动自动极小(0.001 dB),虽寄存器多但计算更省
14.5.1 Saramäki 半带滤波器(Figure 14.25-14.26, Table 14.4)
核心优势:高衰减 + 仅需极少量 CSD 项 → 无乘法器实现
设计示例(90% 通带、-100 dB 阻带):
firhalfband:123 抽头、31 次乘法designHBF(Saramäki):~200 寄存 + 284 次加法,无乘法- 阻带衰减 > 110 dB(Figure 14.25)
Saramäki 架构(Figure 14.26):
- 分解为 F1(14 抽头)和 F2(14 抽头)两个子滤波器
- 所有系数均为 2 的幂和(Table 14.4)→ 移位 + 加法实现
- F1 与 F2 的系数通过 3 个 CSD 项即可精确表示,每个乘法用 2 次加法实现
Table 14.4 — F1 和 F2 系数及其 CSD 展开:
| n | CSD 展开 | CSD 展开 | ||
|---|---|---|---|---|
| 1 | 0.9453 | 0.6249 | ||
| 2 | 0.6406 | -0.2031 | ||
| 3 | 0.1953 | 0.1177 | ||
| 4 | 0.0791 | — | — | |
| 5 | 0.0566 | — | — | |
| 6 | 0.0410 | — | — | |
| 7 | 0.0311 | — | — | |
| 8 | 0.0232 | — | — | |
| 9 | 0.0168 | — | — | |
| 10 | 0.0122 | — | — | |
| 11 | 0.0085 | — | — | |
| 12 | 0.0058 | — | — | |
| 13 | 0.0037 | — | — | |
| 14 | 0.0032 | — | — |
Saramäki 抽取滤波器结构(Figure 14.26):
- F2 子滤波器的 系数放置于延迟链的抽头位置,形成第一级 FIR 滤波
- F1 子滤波器的 系数在延迟链的最终求和阶段对 F2 各级输出进行加权组合
- 两个子滤波器各 14 抽头、对称结构,利用转置拓扑(transpose topology)重用部分乘积
- CSD 效率关键:每个系数最多 3 个非零 CSD 项 → 每个乘法器用 2 次移位加法完成,总共 284 次加法/输出样本
- 插值模式(Figure 14.24(b))只需将信号流图反向并交换输入输出角色
14.6 带通 ΔΣ ADC 的抽取(Figure 14.27-14.29)
基本流程(Figure 14.27):
- 调制器输出 → 复混频(乘 )→ 抽取滤波 → 复基带数据
粗/细混频策略(Figure 14.28):
- 粗混频:限制频率为 的整数倍 → 查表替代乘法
- 部分抽取后数据率降低 → 细混频精确定位 DC
- 权衡:粗混频精度限制预抽取倍数
特例(Figure 14.29):
- 正弦/余弦为周期 4 序列:0,1,0,-1 和 1,0,-1,0
- 混频操作零成本
- 多相分解 后的正交输出分量可直接映射为 I/Q
14.7 分数速率转换
14.7.1 1.5 倍抽取(Figure 14.30-14.34)
两级架构(Figure 14.30):
- G 预滤波器(1.5×速率)→ 2 倍上采样 → H 滤波器(3×速率)→ 3 倍下采样
- G 加宽过渡带 → H 更简单
多相实现(Figure 14.31):
- 2 输入相位 × 3 输出相位的 6 路多相滤波器
- 避免零填充和不必要的计算
预滤波器对比:
| 方案 | 计算量 |
|---|---|
| 单级 FIR(224 抽头) | 94 次乘法/输出样本 |
| FIR 预滤波 + FIR | 95.5 次乘法(无优势) |
| IIR 预滤波 + FIR(11 阶椭圆) | 23.5 次乘法(显著优势) |
说明:G 不在上采样/下采样器旁边 → 无法利用多相分解 → FIR 无优势。允许 IIR 则可获显著节省。
14.7.2 采样率转换—Farrow 结构(Figure 14.35-14.42)
基本模型(Figure 14.35):
- 输入序列 → Dirac 脉冲列 → 连续时间 LPF → 以输出速率重采样
- , 为分数间隔
泰勒展开(式 14.24-14.25):
- 滤波器组结构(Figure 14.37):多个 FIR 滤波器输出乘以 的幂次后求和
Farrow 结构(Figure 14.39):
- C₀, C₁, …, Cₘ 为 N 抽头 FIR
- 所有滤波器共享同一输入样本存储器
- 的乘法在输出速率下进行
设计实例 1:B-spline 4 次卷积(式 14.27-14.29):
- 由 5 段 4 阶多项式构成(重复卷积单位矩形 4 次)
- C 矩阵为 5×5 整数矩阵(见 G37),每行对应一个时间片段的 5 个多项式系数
- FIR 系数为简单有理数,整数缩放后仅需移位加法实现
- 子滤波器( 项)系数:, 系数:
- 镜像衰减有限(Figure 14.40),输入 OSR 需 ≥ 5.5 才能达 100 dB
设计实例 2:designPBF 最优设计(Figure 14.41):
- 10 段 5 阶多项式,100 dB 镜像衰减(Figure 14.41(b))
- 输入 OSR 仅需 2(对比 B-spline 的 5.5,效率提升约 3 倍)
- 多相滤波器系数由 10×6 C 矩阵给出(见 G38),使用 作为多项式参数可改善数值精度
- 通带波动仅 0.1 dB,阻带衰减 > 110 dB
异步 SRC(Figure 14.42):
- RAM 缓冲 + 速率比估计 + Farrow 滤波
- 速率比估计器需重滤波且足够频繁更新
- 防止读地址超过写地址
关键公式汇总
| 公式 | 说明 |
|---|---|
| ZOH 传递函数(DC 增益 = N) | |
| M 阶 sinc 插值器 | |
| 一阶 sinc 最小镜像衰减 | |
| 半带对称条件 | |
| 分数速率转换的基本插值 | |
| 泰勒展开式 |
参考文献
- E. Hogenauer, “An economical class of digital filters for decimation and interpolation,” IEEE Trans. ASSP, vol. 29, pp. 155–162, April 1981.
- T. Saramäki, “A class of linear-phase FIR filters for decimation, interpolation, and two-rate filtering—efficient implementation and design,” ISCAS, pp. 833–836, May 1994.
- R. E. Crochiere and L. R. Rabiner, Multirate Digital Signal Processing, Prentice-Hall, 1983.
- N. S. Sooch et al., “18-bit stereo D/A converter with integrated digital and analog filters,” 91st AES Convention, Oct. 1991.
- P. J. Naus et al., “A CMOS stereo 16-bit D/A converter for digital audio,” IEEE JSSC, vol. 22, pp. 390–395, June 1987.
- S. R. Norsworthy et al., Delta-Sigma Data Converters: Theory, Design, and Simulation, IEEE Press, 1997.
- C. Farrow, “A continuously variable digital delay element,” ISCAS, pp. 2641–2645, June 1988.
- I. W. Hunter, “A polynomial approximation to the ideal filter,” private communication.
补充细节:抽取与插值滤波器
G36 CIC 滤波器有限字长设计准则:
- Hogenauer 结构寄存器位宽公式:,其中 为 CIC 滤波器阶数, 为降采样率, 为级联级数, 为输入字长。
- 无溢出充分条件:在每个积分器级,寄存器位宽 , 为 阶 CIC 的脉冲响应系数。
- 设计实例: → bit。
- 截断噪声设计:每级截断 bit 时,截断噪声 ,需保证 < 0.5 LSB 总输出噪声。
> - 每行对应一个时间片段 $k$($k=0,1,\dots,4$)的多项式系数;每列对应 Farrow 子滤波器 $C_p$ 的抽头系数。 > - **第二段多项式**($k=1, \mu\in[0,1)$): > $$h(1+\mu) = \frac{1}{24}\left[6\mu^2 + 4\mu^3 + \mu^4 + 6\mu\right] + \frac{4}{24}G37 B-spline 4 次卷积多项式的详细 C 矩阵与系数(原书式 14.27-14.29):
- 5×5 C 矩阵(整数形式,行列均除以 24 归一化): 0 & 0 & 0 & 0 & 1 \\ 1 & 4 & 6 & 4 & 4 \\ 11 & 12 & 6 & -12 & -6 \\ 11 & -12 & 6 & 12 & -4 \\ 1 & -4 & 6 & -4 & 1 \end{bmatrix}
> - **$C_2$ 子滤波器抽头系数**($\mu^2$ 列): > $$c_2[k];\ k=0,1,2,3,4 \quad\Rightarrow\quad \begin{bmatrix}0 & \frac{1}{4} & \frac{1}{4} & \frac{1}{4} & \frac{1}{4}\end{bmatrix}
- 子滤波器抽头系数( 列,对应式 14.29):
> - **$C_4$ 子滤波器抽头系数**($\mu^4$ 列): > $$c_4[k];\ k=0,1,2,3,4 \quad\Rightarrow\quad \begin{bmatrix}\frac{1}{24} & \frac{1}{6} & -\frac{1}{4} & -\frac{1}{6} & \frac{1}{24}\end{bmatrix}
- 子滤波器抽头系数( 列):
- 整数系数缩放因子 可在输入或输出端一次性完成,FIR 滤波器内部仅需移位加法。
> - 矩阵为 10 行(时间片段 $k=0,\dots,9$)× 6 列(多项式阶数 $p=0,\dots,5$),使用 $\mu-0.5$ 替代 $\mu$ 可改善数值精度。 > - 对比 B-spline 设计(需 OSR ≥ 5.5),designPBF 在 OSR ≥ 2 时即可达 100 dB 镜像衰减,**效率提升约 3 倍**。 > **G39 异步 SRC 的 RAM 缓冲与速率比估计器架构**(原书 Figure 14.42): > - **系统框图**:输入数据流 → RAM(双端口)→ Farrow 滤波器 → 输出数据流,速率比估计器根据输入/输出时钟计算 $T_{\text{ratio}} = T_{\text{out}}/T_{\text{in}}$ 并馈送至地址产生器。 > - **RAM 缓冲机制**: > - 写端口:输入时钟域,连续写入新样本(循环缓冲区) > - 读端口:输出时钟域,Farrow 滤波器按需读取 N 个历史样本 > - 缓冲区深度 $\ge N+2$(N 为 Farrow 滤波器抽头数),防止读地址超越写地址 > - **速率比估计器**: > - 测量输入/输出时钟频率比 $T = f_{\text{in}}/f_{\text{out}}$ 或 $f_{\text{out}}/f_{\text{in}}$ > - 实际实现中比直接频率测量更常用的是**相位累加器法**:每个输出时钟周期累加 $T$ 的定点表示,整数部分决定 $m$(基地址偏移),小数部分决定 $\mu$(分数延迟) > - 估计值需重滤波(低通滤波去除高频抖动)且更新频率需足够快以跟踪频率变化 > - 防止溢出:当读地址可能超过写地址时,速率比估计器应降低 $T$ 的估计值 > - **Farrow 结构在异步 SRC 中的角色**:每个输出时刻 $n$,由 $\mu$ 和基地址 $m$ 计算 $y[n] = \sum_{k=0}^{N-1} x[m-k] \cdot h(k+\mu)$,其中 $\mu$ 为定点的分数延迟值,$m$ 由读地址偏移量实时产生。 > - **典型应用**:数字音频系统中 44.1 kHz 与 48 kHz 采样率间的异步转换,或软件无线电中可变符号率接收机。 ### 本章总结(§14.8 Summary) **原文总结**:本章考察了 ΔΣ DAC 系统的插值滤波和 ΔΣ ADC 系统的抽取滤波。观察到两种操作之间存在大量对偶性——抽取器可转换为插值器,反之亦然。 - 当插值前或抽取后的 OSR ≥ 2 时,sinc 滤波器级联 + 均衡补偿构成高效系统。 - 将过采样率降至(或升至)接近 1 是计算最密集的操作,最宜由半带滤波器高效执行。 - Saramäki 拓扑以少量 CSD 项实现半带滤波器,无需乘法器。 - 最后简要讨论了分数因子抽取/插值和基于 Farrow 滤波器结构的异步采样率转换。 ## 相关概念页 - [[ΔΣ调制器中的抽取与插值滤波]](现有概念页,约 109 行——本文件是其深度扩展) - [[ΔΣ DAC]] - [[Pavan ΔΣ 数据转换器 深度解析]]G38 designPBF 最优多项式基滤波器的 10×6 C 矩阵(原书 Figure 14.41):
- 设计规格:10 段 × 5 阶多项式,100 dB 镜像衰减,输入 OSR ≥ 2,通带波动 ≤ 0.1 dB
- 系数矩阵(使用 作为多项式参数): -0.001345 & -0.007276 & -0.013868 & -0.007952 & 0.008608 & 0.011467 \\ -0.012460 & 0.016669 & 0.074003 & 0.038627 & -0.042437 & -0.039262 \\ 0.042131 & -0.025342 & -0.246761 & -0.140367 & 0.134082 & 0.118809 \\ -0.144527 & -0.015873 & 0.677698 & 0.517909 & -0.219522 & -0.254117 \\ 0.610687 & 1.112924 & -0.491399 & -1.063063 & 0.120475 & 0.375982 \\ 0.610687 & -1.112924 & -0.491399 & 1.063063 & 0.120475 & -0.375982 \\ -0.144527 & 0.015873 & 0.677698 & -0.517909 & -0.219522 & 0.254117 \\ 0.042131 & 0.025342 & -0.246761 & 0.140367 & 0.134082 & -0.118809 \\ -0.012460 & -0.016669 & 0.074003 & -0.038627 & -0.042437 & 0.039262 \\ -0.001345 & 0.007276 & -0.013868 & 0.007952 & 0.008608 & -0.011467 \end{bmatrix}