多速率信号处理-CIC滤波器
基本原理
级联积分梳状滤波器(Cascade Intergrator Comb)是多速率信号处理中一种十分高效的数字滤波器。CIC滤波器具有低通滤波器的特性,同时具有以下优势:
- 滤波器系数全为1,设计时不需要存储滤波器系数,节省存储单元,同时使得滤波时只需要加法器和累加器,不需要乘法器
- 结构规则,可灵活设置插值因子而不影响整体结构
积分器
积分器结构为
时域上可表示为
y 1 ( n ) = x ( n ) + y 1 ( n − 1 ) y_1(n)=x(n)+y_1(n-1) y1(n)=x(n)+y1(n−1)
频域上可表示为
H 1 ( e j w ) = 1 1 − e − j w H_1(\mathrm{e}^{\mathrm{j}w})=\frac{1}{1-\mathrm{e}^{-\mathrm{j}w}} H1(ejw)=1−e−jw1
可得积分器的幅度谱为
∣ H 1 ( e j w ) ∣ = ∣ 1 1 − e − j w ∣ = ∣ 1 e − j w / 2 ( e j w / 2 − e − j w / 2 ) ∣ = ∣ 1 2 sin ( w 2 ) ∣ \left|H_1(\mathrm{e}^{jw})\right|=\left|\frac{1}{1-\mathrm{e}^{-jw}}\right|=\left|\frac{1}{\mathrm{e}^{-jw/2}(\mathrm{e}^{jw/2}-\mathrm{e}^{-jw/2})}\right|=\left|\frac{1}{2\sin\left(\frac{w}{2}\right)}\right| H1(ejw) = 1−e−jw1 = e−jw/2(ejw/2−e−jw/2)1 = 2sin(2w)1
从公式可以得出积分器只有极点 ( ω = 2 k π , k 为整数 ) (\omega = 2k \pi,k为整数) (ω=2kπ,k为整数)而无零点,且对直流信号具有无限大的增益。
梳状滤波器
时域上可表示为
y C ( n ) = x ( n ) − x ( n − R M ) y_C(n)=x(n)-x(n-RM) yC(n)=x(n)−x(n−RM)
R和M的乘积表示梳状滤波器的延时长度
频域上可表示为
H C ( z ) = 1 − z − R M H_\mathrm{C}(z)=1-z^{-RM} HC(z)=1−z−RM
幅度谱为
∣ H C ( e j w ) ∣ = ∣ 1 − e − j R M w ∣ = ∣ e − j R M w / 2 ( e j R M w / 2 − e − j R M w / 2 ) ∣ = 2 ∣ sin ( R M 2 w ) ∣ \left|H_{\mathrm{C}}(\mathrm{e}^{\mathrm{j}w})\right|=\left|1-\mathrm{e}^{-\mathrm{j}RMw}\right|=\left|\mathrm{e}^{-\mathrm{j}RMw/2}(\mathrm{e}^{\mathrm{j}RMw/2}-\mathrm{e}^{-\mathrm{j}RMw/2})\right|=2\left|\sin\left(\frac{RM}{2}w\right)\right| HC(ejw) = 1−e−jRMw = e−jRMw/2(ejRMw/2−e−jRMw/2) =2 sin(2RMw)
可知梳状滤波器只有零点,没有极点
若R=0、M=1,则结构为
由此可知单级CIC滤波器的幅度谱为
∣ H C I C ( e j w ) ∣ = ∣ H 1 ( e j w ) ∣ ⋅ ∣ H C ( e j w ) ∣ = ∣ sin ( R M 2 w ) sin ( w 2 ) ∣ \left|H_{\mathrm{CIC}}(\mathrm{e}^{\mathrm{j}w})\right|=\left|H_{1}(\mathrm{e}^{\mathrm{j}w})\right|\cdot\left|H_{\mathrm{C}}(\mathrm{e}^{\mathrm{j}w})\right|=\left|\frac{\sin\left(\frac{RM}{2}w\right)}{\sin\left(\frac{w}{2}\right)}\right| HCIC(ejw) = H1(ejw) ⋅ HC(ejw) = sin(2w)sin(2RMw)
当$\mathrm{RM\omega}/2=\mathrm{k}:\pi 时,即 时,即 时,即w=\frac{2k\pi}{RM}\quad(k=\pm1,\pm2,\cdots,\pm(RM-1))$时可以确定零点
当 ω / 2 = k π ,即 ω = 2 k π \omega /2 =k\pi,即\omega = 2k\pi ω/2=kπ,即ω=2kπ时,可得此时的幅频响应为
∣ H C I C ( e j ω ) ∣ ω = 2 k π = R M \left|H_{\mathrm{CIC}}(\mathrm{e}^{\mathrm{j}\omega})\right|_{\omega=2k\pi}=RM HCIC(ejω) ω=2kπ=RM
从而实现了零极点相消
单级CIC滤波器在 ω = 0 时 ∣ H C I C ( e j ω ) ∣ = R M \omega =0时 \left| H_{CIC}(e^{j\omega}) \right|=RM ω=0时 HCIC(ejω) =RM,所以主瓣区间为 [ 0 , 2 π R M ] \begin{bmatrix}0,\frac{2\pi}{RM}\end{bmatrix} [0,RM2π],其余都为旁瓣,第一旁瓣电平为
A 1 = ∣ H C I C ( e j w ) ∣ w = 3 π R M = ∣ sin ( R M 2 × 3 π R M ) sin ( 1 2 × 3 π R M ) ∣ = ∣ 1 sin ( 3 π 2 R M ) ∣ A_1=\left|H_{\mathrm{CIC}}(\mathrm{e}^{\mathrm{j}w})\right|_{w=\frac{3\pi}{RM}}=\left|\frac{\sin\left(\frac{RM}{2}\times\frac{3\pi}{RM}\right)}{\sin\left(\frac{1}{2}\times\frac{3\pi}{RM}\right)}\right|=\left|\frac{1}{\sin\left(\frac{3\pi}{2RM}\right)}\right| A1= HCIC(ejw) w=RM3π= sin(21×RM3π)sin(2RM×RM3π) = sin(2RM3π)1
因此旁瓣抑制为
A = ∣ R M sin ( 3 π 2 R M ) ∣ A=\left|RM\sin\left(\frac{3\pi}{2RM}\right)\right| A= RMsin(2RM3π)
当 R → ∞ \mathrm{R}\rightarrow\infty R→∞ 时,旁瓣抑制为
A = 20 l g ( lim R → ∞ A ) = 20 l g ( 3 π 2 ) = 13.46 d B A=20lg(\lim_{R\to\infty}A)=20lg(\frac{3\pi}{2})=13.46dB A=20lg(R→∞limA)=20lg(23π)=13.46dB
单级CIC滤波器的阻带衰减为
α = − 20 l g b \alpha =-20lgb α=−20lgb
带内容差(通带波纹)为
δ = 20 l g ∣ b π sin ( b π ) ∣ \delta = 20lg\left|\frac{b\pi}{\sin(b\pi)}\right| δ=20lg sin(bπ)bπ
其中b为带宽比例因子
b = B f s / ( R M ) b=\frac{B}{f_s/(RM)} b=fs/(RM)B
单级CIC滤波器的旁瓣电平较高,可通过多级CIC级联改善。
∣ H ( e j w ) ∣ = ∣ sin ( R M 2 w ) sin ( w 2 ) ∣ N \left|H(\mathrm{e}^{\mathrm{j}w})\right|=\left|\frac{\sin\left(\frac{RM}{2}w\right)}{\sin\left(\frac{w}{2}\right)}\right|^N H(ejw) = sin(2w)sin(2RMw) N
对于N级CIC级联滤波器,旁瓣抑制、阻带衰减、带内容差可表示为
{ A N = 13.46 N d B α N = − 20 N lg b δ N = 20 N lg ∣ b π sin ( b π ) ∣ \begin{cases}A_\mathrm{N}=13.46N\:\mathrm{dB}\\\alpha_\mathrm{N}=-20N\lg b\\\delta_\mathrm{N}=20N\lg\left|\frac{b\pi}{\sin(b\pi)}\right|\end{cases} ⎩ ⎨ ⎧AN=13.46NdBαN=−20NlgbδN=20Nlg sin(bπ)bπ
增大CIC滤波器阶数的话,可以增加旁瓣抑制和阻带衰减,但是会导致带内容差变大。因此考虑到通带性能,通常选择 N ≤ 5 N\leq5 N≤5。在N不变的情况下,带宽比例因子b越小,CIC滤波器的通带和阻带特性也越好,因此CIC一般位于插值系统的最后一级(输入速率最高)
位增长问题
由多级滤波器的幅频响应可知,当 ω → 0 \omega \rightarrow 0 ω→0时
lim w → 0 ∣ H ( e j w ) ∣ = lim w → 0 ∣ R M 2 ⋅ cos ( R M w / 2 ) 1 2 ⋅ cos ( w / 2 ) ∣ N = ( R M ) N \lim\limits_{w\to0}\Bigl|H(\mathrm{e}^{\mathrm{j}w})\Bigr|=\lim\limits_{w\to0}\Biggl|\frac{\frac{RM}{2}\cdot\cos(RMw/2)}{\frac{1}{2}\cdot\cos(w/2)}\Biggr|^N=(RM)^N w→0lim H(ejw) =w→0lim 21⋅cos(w/2)2RM⋅cos(RMw/2) N=(RM)N
由此可知多级CIC滤波器可以引起的幅度增益的最大值为
G m a x = ( R M ) N G_{max}=(RM)^N Gmax=(RM)N
假设输入的数据 x ( n ) x(n) x(n)为有符号数,位宽为 B i n B_{in} Bin,取值范围为 [ − 2 B i n − 1 , 2 B i n − 1 − 1 ] [-2^{B_{in}-1},2^{B_{in}-1}-1] [−2Bin−1,2Bin−1−1],则输出 y ( n ) y(n) y(n)的最大值为
y m a x = − 2 B m − 1 ⋅ ( R M ) N y_{max}=-2^{B_{\mathrm{m}}-1}\cdot\left(RM\right)^N ymax=−2Bm−1⋅(RM)N
因此输出的最大位宽为
B o u t = ceil [ log 2 ∣ y m a x ∣ ] + 1 = N ⋅ ceil [ log 2 ( R M ) ] + B i n B_{\mathrm{out}}=\text{ceil}[\log_2|y_{\mathrm{max}}|]+1=N\cdot\text{ceil}[\log_2(RM)]+B_{\mathrm{in}} Bout=ceil[log2∣ymax∣]+1=N⋅ceil[log2(RM)]+Bin
在FPGA设计时,要合理地设置输出信号的位宽,防止数据的溢出,为了节省资源,也可以在每一级适当的进行截位