ΔΣ-ADC実験編 その10 本物のCICフィルタを求めて
積分器が飽和しているのに、出力が正しい波形になる....
1.SINCフィルタは、移動平均と同じと言っても....
これが、前節の結果でした。
しかし、そうだとしても、M=64にdecimateするには、64個の遅延器を書かねば、なりません....
スマートじゃ、ないですねえ、もう。
M=16の式を書くにも、ごちゃごちゃしています。
移動平均を、級数の和の形にして、それを応用したものが、CICフィルタですから
もうちょっと、調べてみたいです。
2.積分器は、何ビット必要か
入力は、10bitのsin波に固定します。
すると、
凡そ、入力の40dB(100倍)あれば、よさそうです。
入力のsin波は10bitですから、最大値は1023、
それの100倍は
つまり、入力が10bitなら、およそ、17bitあれば飽和しない事になります。
最初のプログラム(M=8に固定)
普通に、きれいに、出力されます。(入力 約1KHz sin)
で、
この積分器のbit数を、どこまで落せるか?、調べました。
調べている内に、変な結果がでました。
積分器のbit数が17の時です
積分器の値が飽和しているにも拘わらず、「出力v_outの波形が、入力波形と相似」なのです。
勿論、こんな事は、実験している内に、見つけたものでは、ありません。
「ディジタル信号処理による通信システム設計 西村芳一先生 CQ出版 p.89」
を、読ませていただいて、予備知識を得ていたのです。(CICフィルタについて、これ程まで詳しい解説は、他に見当たらないでしょう、御礼。)
如何せん、私が理解できないで、いましたので、とにかく、simulateしてみる事にしたのです。
それに、 同書に
「このような場合よく使われるのが、SINCフィルタ(移動平均フィルタとも言われる)です。.....」
あちゃー、SINCフィルタとは、移動平均フィルタだと、ちゃんと、書いてあるでは、ありませんか....ヘナヘナ、ストン、がくっ。
(^_^;;
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
実験の続きです。
同一条件で、入力が 10KHzなら、積分器は、飽和しません。
16 17bit積分器
13bitの積分器
入力と同じ 10bitの積分器
あかん、出力が、おかしくなりました。(outは、v_outをunsignedに変換したもの)
ここで、decimateする値 M=8としていたものを、
M=1に替えてみますと
あれまあ、
出力が、正常にもどりました.....
もっかい、M=8に戻します。
ΔΣ-ADCと同じく、
数学的根拠は、さっぱり解りませぬが、
ここらあたりが、CICIフィルタの、要のような気がします。
H22.7.11