FPGA 实现 CIC 抽取滤波器
一、什么是 CIC 滤波器
(一)CIC 滤波器原理和结构
CIC(级联积分梳状)滤波器是一种高效的多速率信号处理滤波器,属于无乘法器的线性相位 FIR 滤波器。常用于数字下变频(DDC)和数字上变频(DUC)中。CIC 滤波器的主要优点是不需要乘法器,结构简单,仅由加法器、减法器和寄存器组成。CIC 滤波器是 FIR 滤波器的一种,可以只使用积分器和梳状器来实现,没有了 FIR 的乘法操作,实现非常的简单并且大大节约了资源。 CIC 滤波器有三种工作模式:抽取滤波器(最常用)、插值滤波器和单纯滤波器。
- 抽取滤波器:数据流由高速输入变为低速输出,主要应用于数字下变频以及降低采样率的系统中。其结构如下图所示:

- 单纯滤波器:数据流速率不变,积分器和梳状器都工作在同一个采样率下,主要应用于移动平均滤波。
插值滤波器:数据流由低速输入变为高速输出,主要应用于数字上变频以及提升采样率的系统中。其结构如下图所示:

前面提到 CIC 滤波器主要由积分器和梳状器组成,积分器状态方程如下:

梳状器状态方程如下:

其中 N 为抽取倍数(抽取因子)。举个例子输入信号采样率为 100MHz,如果抽取因子为 10,那么降采样之后的信号速率就是 100MHz / 10 = 10MHz。也就是说 F_out = F_in / 抽取因子。 由于单级 CIC 的第一旁瓣阻带衰减是固定的 13.46dB,无法很好的抑制旁瓣,因此可以通过级联的方式来提升抑制效果,根据实际旁瓣抑制需求可以实现单级、二级、三级、四级、五级、六级等多级 CIC。 可以把 CIC 滤波器想象成一个多层过滤系统:
- 一级(N=1):像一层纱网,能过滤掉一些大颗粒杂质,但一些小颗粒和细微的杂质还能通过。
- 二级(N=2):在纱网后面再加一层更密的滤布,过滤效果更好。
- …
- 五级(N=5):相当于经过了五层不同精度的过滤,最后得到的液体非常纯净。
级数 N 越高,滤波效果越好,但系统的'阻力'也会相应增加(对应到 FPGA 就是资源消耗和位宽增长)。在数字下变频等应用中,N=5 或 N=6 是非常常见的选择,它在性能和资源之间取得了很好的平衡。
假设数据以 Fs(假设 100MHz)的频率输入滤波器,那数据先通过 3 级的积分滤波器一直进行累加。假如我们希望得到 Fs 的 10 分频的采样数据,那就将积分滤波器的最后一级输出以 Fs/N(10MHz)的频率进入梳状滤波器,梳状滤波器其实是微分运算,即当前值减去上一次的值。经过 3 次的梳状滤波器,最后 1 级的结果即为抽取的数值。




