多速率信号处理-CIC滤波器

基本原理

级联积分梳状滤波器（Cascade Intergrator Comb）是多速率信号处理中一种十分高效的数字滤波器。CIC 滤波器具有低通滤波器的特性，同时具有以下优势：

滤波器系数全为111，设计时不需要存储滤波器系数，节省存储单元，同时使得滤波时只需要加法器和累加器，不需要乘法器

结构规则，可灵活设置插值因子而不影响整体结构

积分器

积分器结构为

时域上可表示为

Copyy1(n)=x(n)+y1(n−1)y_1(n)=x(n)+y_1(n-1)y1​(n)=x(n)+y1​(n−1)

频域上可表示为

CopyH1(ejw)=11−e−jwH_1(\mathrm{e}^{\mathrm{j}w})=\frac{1}{1-\mathrm{e}^{-\mathrm{j}w}}H1​(ejw)=1−e−jw1​

可得积分器的幅度谱为

Copy∣H1(ejw)∣=∣11−e−jw∣=∣1e−jw/2(ejw/2−e−jw/2)∣=∣12sin⁡(w2)∣\left|H_1(\mathrm{e}^{jw})\right|=\left|\frac{1}{1-\mathrm{e}^{-jw}}\right|=\left|\frac{1}{\mathrm{e}^{-jw/2}(\mathrm{e}^{jw/2}-\mathrm{e}^{-jw/2})}\right|=\left|\frac{1}{2\sin\left(\frac{w}{2}\right)}\right| ​H1​(ejw) ​= ​1−e−jw1​ ​= ​e−jw/2(ejw/2−e−jw/2)1​ ​= ​2sin(2w​)1​ ​

从公式可以得出积分器只有极点(ω=2kπ(\omega = 2k \pi(ω=2kπ，kkk为整数) 而无零点，且对直流信号具有无限大的增益。

梳状滤波器

时域上可表示为

CopyyC(n)=x(n)−x(n−RM)y_C(n)=x(n)-x(n-RM)yC​(n)=x(n)−x(n−RM)

R 和 M 的乘积表示梳状滤波器的延时长度

频域上可表示为

CopyHC(z)=1−z−RMH_\mathrm{C}(z)=1-z^{-RM}HC​(z)=1−z−RM

幅度谱为

Copy∣HC(ejw)∣=∣1−e−jRMw∣=∣e−jRMw/2(ejRMw/2−e−jRMw/2)∣=2∣sin⁡(RM2w)∣\left|H_{\mathrm{C}}(\mathrm{e}^{\mathrm{j}w})\right|=\left|1-\mathrm{e}^{-\mathrm{j}RMw}\right|=\left|\mathrm{e}^{-\mathrm{j}RMw/2}(\mathrm{e}^{\mathrm{j}RMw/2}-\mathrm{e}^{-\mathrm{j}RMw/2})\right|=2\left|\sin\left(\frac{RM}{2}w\right)\right| ​HC​(ejw) ​= ​1−e−jRMw ​= ​e−jRMw/2(ejRMw/2−e−jRMw/2) ​=2 ​sin(2RM​w) ​

可知梳状滤波器只有零点，没有极点

若 R=8、M=1，则结构为

由此可知单级 CIC 滤波器的幅度谱为

Copy∣HCIC(ejw)∣=∣H1(ejw)∣⋅∣HC(ejw)∣=∣sin⁡(RM2w)sin⁡(w2)∣\left|H_{\mathrm{CIC}}(\mathrm{e}^{\mathrm{j}w})\right|=\left|H_{1}(\mathrm{e}^{\mathrm{j}w})\right|\cdot\left|H_{\mathrm{C}}(\mathrm{e}^{\mathrm{j}w})\right|=\left|\frac{\sin\left(\frac{RM}{2}w\right)}{\sin\left(\frac{w}{2}\right)}\right| ​HCIC​(ejw) ​= ​H1​(ejw) ​⋅ ​HC​(ejw) ​= ​sin(2w​)sin(2RM​w)​ ​

当 $\mathrm {RM\omega}/2=\mathrm {k}:\pi $ 时，即 $w=\frac {2k\pi}{RM}\quad (k=\pm1,\pm2,\cdots,\pm (RM-1))$ 时可以确定零点

当ω/2=kπ\omega /2 =k\piω/2=kπ，即ω=2kπ\omega = 2k\piω=2kπ时，可得此时的幅频响应为

Copy∣HCIC(ejω)∣ω=2kπ=RM\left|H_{\mathrm{CIC}}(\mathrm{e}^{\mathrm{j}\omega})\right|_{\omega=2k\pi}=RM ​HCIC​(ejω) ​ω=2kπ​=RM

从而实现了零极点相消

单级 CIC 滤波器在ω=0\omega =0ω=0时∣HCIC(ejω)∣=RM \left| H_{CIC}(e^{j\omega}) \right|=RM ​HCIC​(ejω) ​=RM，所以主瓣区间为[0,2πRM]\begin{bmatrix}0,\frac{2\pi}{RM}\end{bmatrix}[0,RM2π​​]，其余都为旁瓣，第一旁瓣电平为

CopyA1=∣HCIC(ejw)∣w=3πRM=∣sin⁡(RM2×3πRM)sin⁡(12×3πRM)∣=∣1sin⁡(3π2RM)∣A_1=\left|H_{\mathrm{CIC}}(\mathrm{e}^{\mathrm{j}w})\right|_{w=\frac{3\pi}{RM}}=\left|\frac{\sin\left(\frac{RM}{2}\times\frac{3\pi}{RM}\right)}{\sin\left(\frac{1}{2}\times\frac{3\pi}{RM}\right)}\right|=\left|\frac{1}{\sin\left(\frac{3\pi}{2RM}\right)}\right|A1​= ​HCIC​(ejw) ​w=RM3π​​= ​sin(21​×RM3π​)sin(2RM​×RM3π​)​ ​= ​sin(2RM3π​)1​ ​

因此旁瓣抑制为

CopyA=∣RMsin⁡(3π2RM)∣A=\left|RM\sin\left(\frac{3\pi}{2RM}\right)\right|A= ​RMsin(2RM3π​) ​

当R→∞ \mathrm{R}\rightarrow\infty R→∞ 时，旁瓣抑制为

CopyA=20lg(lim⁡R→∞A)=20lg(3π2)=13.46dBA=20lg(\lim_{R\to\infty}A)=20lg(\frac{3\pi}{2})=13.46dBA=20lg(R→∞lim​A)=20lg(23π​)=13.46dB

单级 CIC 滤波器的阻带衰减为

Copyα=−20lgb\alpha =-20lgbα=−20lgb

带内容差（通带波纹）为

Copyδ=20lg∣bπsin⁡(bπ)∣\delta = 20lg\left|\frac{b\pi}{\sin(b\pi)}\right|δ=20lg ​sin(bπ)bπ​ ​

其中 b 为带宽比例因子

Copyb=Bfs/(RM)b=\frac{B}{f_s/(RM)}b=fs​/(RM)B​

单级 CIC 滤波器的旁瓣电平较高，可通过多级 CIC 级联改善。

Copy∣H(ejw)∣=∣sin⁡(RM2w)sin⁡(w2)∣N\left|H(\mathrm{e}^{\mathrm{j}w})\right|=\left|\frac{\sin\left(\frac{RM}{2}w\right)}{\sin\left(\frac{w}{2}\right)}\right|^N ​H(ejw) ​= ​sin(2w​)sin(2RM​w)​ ​N

对于 N 级 CIC 级联滤波器，旁瓣抑制、阻带衰减、带内容差可表示为

Copy{AN=13.46N dBαN=−20Nlg⁡bδN=20Nlg⁡∣bπsin⁡(bπ)∣\begin{cases}A_\mathrm{N}=13.46N\:\mathrm{dB}\\\alpha_\mathrm{N}=-20N\lg b\\\delta_\mathrm{N}=20N\lg\left|\frac{b\pi}{\sin(b\pi)}\right|\end{cases}⎩ ⎨ ⎧​AN​=13.46NdBαN​=−20NlgbδN​=20Nlg ​sin(bπ)bπ​ ​​

增大 CIC 滤波器阶数的话，可以增加旁瓣抑制和阻带衰减，但是会导致带内容差变大。因此考虑到通带性能，通常选择N≤5N\leq5N≤5。在NNN不变的情况下，带宽比例因子bbb越小，CIC 滤波器的通带和阻带特性也越好，因此 CIC 一般位于插值系统的最后一级（输入速率最高）

位增长问题

由多级滤波器的幅频响应可知，当ω→0\omega \rightarrow 0ω→0时

Copylim⁡w→0∣H(ejw)∣=lim⁡w→0∣RM2⋅cos⁡(RMw/2)12⋅cos⁡(w/2)∣N=(RM)N\lim\limits_{w\to0}\Bigl|H(\mathrm{e}^{\mathrm{j}w})\Bigr|=\lim\limits_{w\to0}\Biggl|\frac{\frac{RM}{2}\cdot\cos(RMw/2)}{\frac{1}{2}\cdot\cos(w/2)}\Biggr|^N=(RM)^Nw→0lim​ ​H(ejw) ​=w→0lim​ ​21​⋅cos(w/2)2RM​⋅cos(RMw/2)​ ​N=(RM)N

由此可知多级 CIC 滤波器可以引起的幅度增益的最大值为

CopyGmax=(RM)NG_{max}=(RM)^NGmax​=(RM)N

假设输入的数据x(n)x(n)x(n)为有符号数，位宽为BinB_{in}Bin​，取值范围为[−2Bin−1,2Bin−1−1][-2^{B_{in}-1},2^{B_{in}-1}-1][−2Bin​−1,2Bin​−1−1]，则输出y(n)y(n)y(n)的最大值为

Copyymax=−2Bm−1⋅(RM)Ny_{max}=-2^{B_{\mathrm{m}}-1}\cdot\left(RM\right)^Nymax​=−2Bm​−1⋅(RM)N

因此输出的最大位宽为

CopyBout=ceil[log⁡2∣ymax∣]+1=N⋅ceil[log⁡2(RM)]+BinB_{\mathrm{out}}=\text{ceil}[\log_2|y_{\mathrm{max}}|]+1=N\cdot\text{ceil}[\log_2(RM)]+B_{\mathrm{in}}Bout​=ceil[log2​∣ymax​∣]+1=N⋅ceil[log2​(RM)]+Bin​

在 FPGA 设计时，要合理地设置输出信号的位宽，防止数据的溢出，为了节省资源，也可以在每一级适当的进行截位