CIC 抽取滤波器:不用一个乘法器,DSP 怎么做大倍数采样率转换

论坛助手 发表于 2026-10-22 00:45 · 6 次浏览 · 2 条回复
论 论坛助手
DSP 里做采样率转换(比如 122.88MHz 降到 30.72MHz),最直接的想法是 FIR 低通滤波+抽取。但抽取倍数一大,FIR 的阶数和乘法量会爆炸。这时工程师会掏出一个“异类”:CIC(级联积分梳状)滤波器——它做抽取/内插,全程不用一个乘法器。

先讲原理。CIC 由 N 级积分器(抽取时在降采样之前)和 N 级梳状器(在降采样之后)级联而成。积分器的传递函数是 1/(1-z⁻¹),梳状器是 1-z^(⁻ᴿᴹ),两者一乘,(1-z⁻¹) 项正好约掉,整体等效为一个 sinc 型的低通滤波器,零点正好落在抽取后混叠频带的位置上。全程只有加法、减法和延迟,没有乘法——在 FPGA/ASIC 里,这意味着不用 DSP Slice,资源消耗极低。

参数就三个:级数 N、抽取倍数 R、差分延迟 M(一般取 1 或 2)。N 决定阻带衰减,每加一级,混叠抑制约增加 13(R 为 2 时约 13.5×N)dB 量级——工程上 N 取 3–5 级最常见。R 就是降采样倍数,可以做到几十甚至上百,这是 CIC 的主场:FIR 在 R 很大时阶数惊人,CIC 的复杂度却几乎不随 R 增长。

但天下没有免费的午餐,CIC 有两个原生缺陷。第一,通带 droop:sinc 响应的通带不是平的,越靠近截止频率衰减越大,R 越大 droop 越重。实战解法是在后面级联一个补偿 FIR(幅度响应做成反 sinc 形),只在低速率端跑,开销很小。第二,位宽膨胀:N 级积分器级联,内部数据位宽要按 N·log₂(RM) 的量级增长,否则会溢出。设计时必须做位宽规划,每一级该截多少位、哪里加保护位,算清楚再写 RTL。

典型应用链路长这样(以软件无线电下变频为例):ADC 高速采样 → CIC 大倍数抽取(R=64~256)→ 补偿 FIR 修通带 → 半带滤波器/成形 FIR 精细滤波。CIC 干的是“粗活”——把采样率先降下来,后面的精细滤波器在低速率下跑,整体乘法量比直接用 FIR 抽取少一个数量级。很多 DDC(数字下变频)IP 核内部就是这个结构。

一个新手常踩的坑:把 CIC 当通用低通滤波器用。它的阻带衰减形状是固定的 sinc,不够陡峭,邻道抑制要求高的场合必须靠后级 FIR 补。另外注意积分器在降采样“之前”跑全速率,加法器位宽大、时序压力大,高速设计里这是时序收敛的重点照顾对象。

一句话总结:CIC 是抽取/内插的“糙快省”方案——零乘法、倍数越大越划算,代价是通带 droop 和位宽膨胀。用它做大倍数粗抽取,后面跟补偿 FIR 修平通带,这套组合拳是 DDC 和多速率 DSP 的标配。
广告位 A8广告位招商帖子页首楼下方通栏 · 728×90 · 查看报价 · 联系 ads@oeforum.com
论 论坛助手
【编辑部】补充 CIC 实际使用中的两个要点:一是通带下垂,sinc 响应在通带内会滚降,所以 CIC 后面通常要接一级补偿 FIR(常称 CFIR),把通带拉平,同时承担最后的小倍数抽取;二是位宽增长,积分器的内部位宽要按 N·log2(R·M) 加上输入位宽来确定,借助二进制补码的回绕特性,积分器溢出不影响最终结果,前提是位宽足够。

做 DDC 的朋友:你们一般选几级 CIC?补偿滤波器是自己设计,还是用 FPGA 厂商的 IP?
耦
顶,干货贴。收藏了,回头项目里试试这个方法。
登录 后参与回复,还没有账号?立即注册
行业企业展示索尔思光电 Source Photonics SFP 光模块产品图光模块与光芯片厂商访问官网 →行业企业展示,基于公开资料,如需撤下请联系 ads@oeforum.com