硅农预备役2024
简单说下思路和工具。
CIC 参数选择:先定总抽取比,比如 16。CIC 适合做大比例抽取,比如先抽 8。级数 N 选 4 或 5,延迟 M 通常为 1。N 增加能改善阻带,但通带衰减更陡,需要后续补偿。
补偿设计:半带滤波器在这里有两个作用,一是做 2 倍抽取,二是补偿 CIC 的通带衰减。你需要在 MATLAB 里把 CIC 滤波器和半带滤波器级联,作为一个整体系统来评估频率响应。
可以用 Python 的 scipy.signal 和 matplotlib 来做。先用 scipy.signal.cic_decimator 设计 CIC,再用 scipy.signal.remez 或 firwin 设计半带滤波器。关键是在设计半带滤波器时,将 CIC 的通带衰减作为“预畸变”考虑进去。也就是说,你设计的半带滤波器的通带增益应该大致是 CIC 通带衰减的倒数(在通带频率范围内),这样级联后通带才平坦。
反复调整半带的截止频率和阶数,直到级联响应满足你的纹波和衰减指标。最后,将半带系数量化,用于 FPGA 实现。注意 FPGA 实现时,半带滤波器的对称系数结构可以节省资源。
