CIC-decimator频响测试异常求助:单位脉冲法与FVTOOL结果不符
CIC抽取器频响测试问题排查
测试方法的核心问题
当抽取因子R>1时,直接用单位脉冲输入后做FFT的方法无法正确获取完整频响,原因如下:
- CIC抽取器的抽取环节会丢弃R-1个采样,单位脉冲经过抽取后,输出的有效非零点数太少,FFT分辨率不足,直接导致旁瓣信息丢失。
- FVTOOL是基于CIC的理论频响公式计算的,而你的测试是基于实际抽取后的输出做FFT,两者的计算前提完全不同。
正确的测试步骤(针对R>1的情况)
- 生成足够长的单位脉冲序列:输入序列长度至少设为
N = R * L,其中L是FFT点数(建议取2的整数次幂,比如1024、2048),保证抽取后仍有足够多的点参与FFT。 - 严格遵循CIC结构流程:先经过积分器,再做抽取,最后经过梳状器(禁止先抽取再滤波,顺序错误会直接导致频响失真)。
- 补零提升FFT分辨率:抽取后的输出序列如果长度不足,补零到FFT点数L后,再执行
fft+abs+20*log10(x)计算。 - 对齐频轴:FFT的频轴要对应归一化频率(0到0.5,对应0到Fs/2),注意抽取后的采样率为Fs/R,频轴需调整为
f = (0:L-1)/(L) * (Fs/(2*R))。
代码排查要点
- 确认CIC结构正确性:带sigma-delta的CIC要检查sigma-delta量化后的信号是否正确输入积分器,积分器、梳状器的阶数是否和FVTOOL中的设置一致。
- 检查抽取时机:必须在积分器之后、梳状器之前执行抽取,这是CIC抽取器的标准结构。
- 输入序列长度验证:如果输入的单位脉冲仅1个非零点,经过R=2的抽取后输出可能只有1个非零点,FFT后只能得到直流分量,旁瓣自然丢失。需延长输入序列长度,比如生成长度为2048的序列,仅第一个点为1、其余为0,抽取后仍有1024个点,FFT才能获取足够频域信息。
内容的提问来源于stack exchange,提问作者马慧超
相关产品推荐
相关产品推荐

