ΔΣ-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