基本原理#
級聯積分梳狀濾波器(Cascade Integrator Comb)は、多速率信号処理において非常に効率的なデジタルフィルターです。CIC フィルターはローパスフィルターの特性を持ちながら、以下の利点があります:
- フィルター係数はすべて 1 であり、設計時にフィルター係数を保存する必要がなく、ストレージユニットを節約し、フィルタリング時には加算器と累積器のみが必要で、乗算器は不要です。
- 構造が規則的であり、全体の構造に影響を与えずに補間因子を柔軟に設定できます。
積分器#
積分器の構造は

時域では次のように表されます
y1(n)=x(n)+y1(n−1)
周波数域では次のように表されます
H1(ejw)=1−e−jw1
積分器の振幅スペクトルは次のようになります
H1(ejw)=1−e−jw1=e−jw/2(ejw/2−e−jw/2)1=2sin(2w)1
この式から、積分器は極点(ω=2kπ,kは整数)のみを持ち、零点はなく、直流信号に対して無限大の増幅を持つことがわかります。

梳狀濾波器#
時域では次のように表されます
yC(n)=x(n)−x(n−RM)
R と M の積は梳狀濾波器の遅延長を示します。
周波数域では次のように表されます
HC(z)=1−z−RM
振幅スペクトルは次のようになります
HC(ejw)=1−e−jRMw=e−jRMw/2(ejRMw/2−e−jRMw/2)=2sin(2RMw)

梳狀濾波器は零点のみを持ち、極点はありません。
R=8、M=1の場合、構造は

このことから、単一級 CIC フィルターの振幅スペクトルは次のようになります
HCIC(ejw)=H1(ejw)⋅HC(ejw)=sin(2w)sin(2RMw)
RMω/2=kπのとき、すなわちw=RM2kπ(k=±1,±2,⋯,±(RM−1))のときに零点を特定できます。
ω/2=kπ、すなわちω=2kπのとき、このときの振幅周波数応答は次のようになります
HCIC(ejω)ω=2kπ=RM
これにより、零極点の相殺が実現されます。
単一級 CIC フィルターはω=0のときにHCIC(ejω)=RMであるため、主瓣区間は[0,RM2π]であり、残りはすべて旁瓣で、第一旁瓣電平は
A1=HCIC(ejw)w=RM3π=sin(21×RM3π)sin(2RM×RM3π)=sin(2RM3π)1
したがって、旁瓣抑制は
A=RMsin(2RM3π)
$$\mathrm {R}\rightarrow\infty $ のとき、旁瓣抑制は
A=20lg(R→∞limA)=20lg(23π)=13.46dB
単一級 CIC フィルターの阻帯減衰は
α=−20lgb
帯内容差(通帯波紋)は
δ=20lgsin(bπ)bπ
ここでbは帯域幅比因子です。
b=fs/(RM)B
単一級 CIC フィルターの旁瓣電平は高いため、多級 CIC 級聯によって改善できます。
H(ejw)=sin(2w)sin(2RMw)N

N 級 CIC 級聯フィルターに対して、旁瓣抑制、阻帯減衰、帯内容差は次のように表されます
⎩⎨⎧AN=13.46NdBαN=−20NlgbδN=20Nlgsin(bπ)bπ
CIC フィルターの階数を増やすことで、旁瓣抑制と阻帯減衰を増加させることができますが、帯内容差が大きくなります。したがって、通帯性能を考慮して、通常はN≤5を選択します。N が不変の場合、帯域幅比因子 b が小さいほど、CIC フィルターの通帯と阻帯特性も良くなります。したがって、CIC は通常、補間システムの最後のレベルに配置されます(入力レートが最も高い)。
位増加問題#
多級フィルターの振幅周波数応答から、$\omega \rightarrow 0$ のとき
w→0limH(ejw)=w→0lim21⋅cos(w/2)2RM⋅cos(RMw/2)N=(RM)N
このことから、多級 CIC フィルターによって引き起こされる振幅増益の最大値は
Gmax=(RM)N
入力データ $x (n)$ が符号付き数で、ビット幅がBin、値の範囲が[−2Bin−1,2Bin−1−1]であると仮定すると、出力y(n)の最大値は
ymax=−2Bm−1⋅(RM)N
したがって、出力の最大ビット幅は
Bout=ceil[log2∣ymax∣]+1=N⋅ceil[log2(RM)]+Bin
FPGA 設計時には、出力信号のビット幅を適切に設定し、データのオーバーフローを防ぎ、リソースを節約するために、各レベルで適切にビットを切り捨てることもできます。