基本原理#
级联积分梳状滤波器(Cascade Intergrator Comb)是多速率信号处理中一种十分高效的数字滤波器。CIC 滤波器具有低通滤波器的特性,同时具有以下优势:
- 滤波器系数全为 1,设计时不需要存储滤波器系数,节省存储单元,同时使得滤波时只需要加法器和累加器,不需要乘法器
- 结构规则,可灵活设置插值因子而不影响整体结构
积分器#
积分器结构为

时域上可表示为
y1(n)=x(n)+y1(n−1)
频域上可表示为
H1(ejw)=1−e−jw1
可得积分器的幅度谱为
H1(ejw)=1−e−jw1=e−jw/2(ejw/2−e−jw/2)1=2sin(2w)1
从公式可以得出积分器只有极点(ω=2kπ,k为整数)而无零点,且对直流信号具有无限大的增益。

梳状滤波器#
时域上可表示为
yC(n)=x(n)−x(n−RM)
R 和 M 的乘积表示梳状滤波器的延时长度
频域上可表示为
HC(z)=1−z−RM
幅度谱为
HC(ejw)=1−e−jRMw=e−jRMw/2(ejRMw/2−e−jRMw/2)=2sin(2RMw)

可知梳状滤波器只有零点,没有极点
若R=8、M=1,则结构为

由此可知单级 CIC 滤波器的幅度谱为
HCIC(ejw)=H1(ejw)⋅HC(ejw)=sin(2w)sin(2RMw)
当RMω/2=kπ时,即w=RM2kπ(k=±1,±2,⋯,±(RM−1))时可以确定零点
当ω/2=kπ,即ω=2kπ时,可得此时的幅频响应为
HCIC(ejω)ω=2kπ=RM
从而实现了零极点相消
单级 CIC 滤波器在ω=0时 HCIC(ejω)=RM,所以主瓣区间为[0,RM2π],其余都为旁瓣,第一旁瓣电平为
A1=HCIC(ejw)w=RM3π=sin(21×RM3π)sin(2RM×RM3π)=sin(2RM3π)1
因此旁瓣抑制为
A=RMsin(2RM3π)
当 $\mathrm {R}\rightarrow\infty $ 时,旁瓣抑制为
A=20lg(R→∞limA)=20lg(23π)=13.46dB
单级 CIC 滤波器的阻带衰减为
α=−20lgb
带内容差(通带波纹)为
δ=20lgsin(bπ)bπ
其中b为带宽比例因子
b=fs/(RM)B
单级 CIC 滤波器的旁瓣电平较高,可通过多级 CIC 级联改善。
H(ejw)=sin(2w)sin(2RMw)N

对于 N 级 CIC 级联滤波器,旁瓣抑制、阻带衰减、带内容差可表示为
⎩⎨⎧AN=13.46NdBαN=−20NlgbδN=20Nlgsin(bπ)bπ
增大 CIC 滤波器阶数的话,可以增加旁瓣抑制和阻带衰减,但是会导致带内容差变大。因此考虑到通带性能,通常选择N≤5。在 N 不变的情况下,带宽比例因子 b 越小,CIC 滤波器的通带和阻带特性也越好,因此 CIC 一般位于插值系统的最后一级(输入速率最高)
位增长问题#
由多级滤波器的幅频响应可知,当 $\omega \rightarrow 0$ 时
w→0limH(ejw)=w→0lim21⋅cos(w/2)2RM⋅cos(RMw/2)N=(RM)N
由此可知多级 CIC 滤波器可以引起的幅度增益的最大值为
Gmax=(RM)N
假设输入的数据 $x (n)$ 为有符号数,位宽为Bin,取值范围为[−2Bin−1,2Bin−1−1],则输出y(n)的最大值为
ymax=−2Bm−1⋅(RM)N
因此输出的最大位宽为
Bout=ceil[log2∣ymax∣]+1=N⋅ceil[log2(RM)]+Bin
在 FPGA 设计时,要合理地设置输出信号的位宽,防止数据的溢出,为了节省资源,也可以在每一级适当的进行截位