« CICフィルタのオーバーフローとビット数 | トップページ | 高エネルギー加速器研究機構へ行ってきました »

2015.04.28

CICフィルタでビット数は増えるのか?

CICフィルタを通すと、本当に

  出力ビット数 =  タップ数 × log2(R + M) + 入力ビット数

でビット数が増えるのかを検証してみることにしました。

まず、12bitの精度でのSIN波を計算で作ります。0~4095まで振れるSIN波です。このSIN波にはσ=1のノイズを乗せておきます。

CICフィルタに通す前の元の信号(緑)と、CICフィルタを通した後の信号(赤)を見比べてみると、フィルタを通したものは少しだけ遅れているのと、スタートのところが少し欠けている以外は、見た目の違いはありません。

Cic_14

では、FFTして、ノイズレベルを見てみましょう。

まずは、元のSIN波。

Cic_15

周波数=100のところにピークがあるほかは、-100dBくらいのところにノイズフロアがあります。このノイズを全部二乗して足し合わせ、SND≒SINADを求めると68.5dBでした。

ちょっとSINADの計算は怪しいかもしれませんが、このまま進めます。

上の波形はコンピュータで作り出したものですが、ADCの信号を想定しているので、有効ビット数(ENOB)=(SINAD-1.76)/6.02で求まります。

有効ビット数は11bitと出ました。12bit精度でSIN波を作っておいて、1LSBのノイズを乗せているのですから、とても妥当な値です。

次に、CICフィルタを通した後のFFT結果を示します。

Cic_16

SINAD=77.5dBと計算できたので、有効ビット数は12.5bitと求まりました。

なんと、有効ビット数が1.4bitも増えました

これを面白い結果とみるか、つまらない結果とみるかは人それぞれだと思います。

3タップ・4倍デシメーションなので、計算に必要なビット数は6bit増えます。

実際にはそれほど精度は上がっていませんが、時間軸上の情報をデシメーションすることで、分解能を変えられるというのは面白いことだと私は思います。

|

« CICフィルタのオーバーフローとビット数 | トップページ | 高エネルギー加速器研究機構へ行ってきました »

コメント

コメントを書く



(ウェブ上には掲載しません)




« CICフィルタのオーバーフローとビット数 | トップページ | 高エネルギー加速器研究機構へ行ってきました »