CIC滤波器

本文介绍了CIC滤波器的基本原理,包括其来源于滑动平均滤波器,一阶CIC滤波器的时域和频域表达式,以及多阶CIC滤波器的构建。在多速率转换中,CIC滤波器常用于降采样和插值操作。文章还讨论了CIC滤波器的局限性和补偿滤波器的设计,以改善通带特性。通过实例展示了PDM到PCM转换的过程,并提供了MATLAB代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CIC滤波器

CIC滤波器是级联积分梳状(Cascaded Integrator-Comb)滤波器的缩写,具有滤波器系数都是1,不需要乘法和线性相位的优点,因此在多速率系统中比较常用,研究生时研究PDM接口的MEMS麦克风时,将PDM信号转换为PCM时使用过,又翻出来做个总结。

滑动平均滤波器

CIC滤波器是受到滑动平均启发来的,定义D点的移动平均为:

y ( n ) = 1 D [ x ( n ) + x ( n − 1 ) + . . . + x ( n − D + 1 ) ] y(n)=\frac{1}{D}[x(n) + x(n-1) + ... + x(n-D+1)] y(n)=D1[x(n)+x(n1)+...+x(nD+1)]

写成递归形式为:
y ( n ) = 1 D [ x ( n ) − x ( n − D ) ] + y ( n − 1 ) y(n)=\frac{1}{D}[x(n) - x(n-D)] + y(n-1) y(n)=D1[x(n)x(nD)]+y(n1)

一阶CIC滤波器

忽略掉常数 1 / D 1/D 1/D,就可以得到一阶CIC滤波器的时域表达式,
y ( n ) = x ( n ) − x ( n − D ) + y ( n − 1 ) y(n)= x(n) - x(n-D) + y(n-1) y(n)=x(n)x(nD)+y(n1)

CIC滤波器通常用在多速率转换中,为了实现采样率的转变,一般联合抽取和插值操作使用,令 D = R ∗ M D=R*M D=RM,Z变换后得到传输函数为,
H c i c ( z ) = Y ( z ) X ( z ) = 1 1 − z − 1 ( 1 − z − R M ) H_{cic}(z)=\frac{Y(z)}{X(z)}=\frac{1}{1-z^{-1}}({1-z^{-RM}}) Hcic(z)=X(z)Y(z)=1z11(1zRM)

其中 R R R是采样率转换因子, M M M是差分延时,上式中右半部分是梳状滤波器的表达式,左半部分是积分器的表达式。令 z = e j 2 π f z=e^{j2\pi f} z=ej2πf,化简后得频率表达式,
H c i c ( e j 2 π f ) = 1 − e − j w R M 1 − e − j w = e − j w R M / 2 ( e j w R M / 2 − e − j w R M / 2 ) e − j w / 2 ( e j w / 2 − e − j w / 2 ) = e − j R M π f ( e j R M π f − e − j R M π f ) e − j π f ( e j π f − e − j π f ) = e − j ( R M − 1 ) π f s i n ( R M π f ) s i n ( π f ) \begin{aligned} H_{cic}(e{j2\pi f)}& =\frac{{1-e^{-jwRM}}}{1-e^{-jw}} \\ &= \frac{e^{-jwRM/2}(e^{jwRM/2} - e^{-jwRM/2})}{e^{-jw/2}(e^{jw/2}-e^{-jw/2})} \\ &= \frac{e^{-jRM\pi f}(e^{jRM \pi f} - e^{-jRM\pi f})}{e^{-j\pi f}(e^{j\pi f}-e^{-j\pi f})} \\ &= e^{-j(RM-1)\pi f} \frac{sin(RM\pi f)}{sin(\pi f)} \end{aligned} Hcic(ej2πf)=1ejw1ejwRM=ejw/2(ejw/2ejw/2)ejwRM/2(ejwRM/2ejwRM/2)=ejπf(ejπfejπf)ejRMπf(ejRMπfejRMπf)=ej(RM1)πfsin(πf)sin(RMπf)
1阶CIC滤波器提供的衰减有限,为了达到更高的衰减效果,一般将多阶级联使用。

多阶级联CIC滤波器

N阶CIC滤波器的表达式为:
H = H c i c N = ( 1 − z − R M 1 − z − 1 ) N = e − j N ( R M − 1 ) π f ( s i n ( R M π f ) s i n ( π f ) ) N H={H_{cic}}^{N}={(\frac{{1-z^{-RM}}}{1-z^{-1}})}^N=e^{-jN(RM-1)\pi f} (\frac{sin(RM\pi f)}{sin(\pi f)})^{N} H=HcicN=(1z11zRM)N=ejN(RM1)πf(sin(πf)sin(RMπf))N

CIC补偿滤波器

CIC滤波器的优点明显,但也有其缺点,级联后的通带比较窄,为了克服这个缺点,一般有两种解决方法,以降采样为例,
1)使用cic进行初步降低,后续在使用半带滤波器或fir滤波器进行级联使用。
2)利用补偿滤波器对通带内进行补偿,补偿滤波器的设计方法就是设计一个在通带内频率响应为CIC滤波器频率响应倒数的滤波器,将两个滤波器级联后,可以实现通带内频率响应平稳。

PDM转PCM

仿真生成PDM数据

matlab 代码如下:

%% 1.generate pdm signal from data oversample
len = length(data_oversample);
th = 0;
for i = 1:len
    if(data_oversample(i)> th)
        data_pdm(i) = 1;
    else
        data_pdm(i) = -1;
    end
    th = data_pdm(i) - data_oversample(i) + th;
end

CIC 抽取

	intOut = zeros(N,1);
    delay_intOut = zeros(N,1);
    yn = [];
    yn_tmp = [];
    for i = 1:length(data_pdm)
        tmp = data_pdm(i);
        for j = 1:N      %%integrate        
            intOut(j) = intOut(j) + tmp;
            tmp = intOut(j);
        end

        if mod(i,R) == 1  %%decimator
             tmp = intOut(N);
             yn_tmp = [yn_tmp tmp];
             for j = 1:N  %%comb
                combOut = tmp - delay_intOut(j,1);
                delay_intOut(j,1) = tmp;
                tmp = combOut ;
             end
             yn = [yn combOut];
        end
    end
    data_cic = yn(:)/(R^N);

设计补偿滤波器

利用matlab fir2 函数设计频率响应为 cic 滤波器导数,也可以使用之前介绍的cvx方法计算指定响应的滤波器。

 %% desigen filter
    Fo = Fc/Fs; 
    p = 2e3; 
    s = 0.25/p; 
    fp = [0:s:Fo]; 
    fs = (Fo+s):s:0.5; 
    f = [fp fs]*2;
    Mp = ones(1,length(fp)); 
    Mp(2:end) = abs(R*sin(pi*fp(2:end)/R)./sin(pi*M*fp(2:end))).^N;
    Mf = [Mp zeros(1,length(fs))];
    f(end) = 1;
    h = fir2(L,f,Mf); %% Filter length L+1

效果

在这里插入图片描述

参考

[1]Hogenauer, E. An economical class of digital filters for decimation and interpolation[J]. IEEE Trans.acoust.speech Signal Process, 1981, 29(2):155-162.

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值