Spartan-6 用に単純な 1 次 IIR フィルターを設計していますが、バス幅と係数の量子化に苦労しています。
入力データは 16 ビット幅で、統合された ADC から取得され、量子化ノイズはフロント エンド ノイズの主なノイズ要因です。
入力信号はおよそ 300kHz でフィルター処理され、1Hz、10Hz、100Hz、1kHz、10kHz の調整可能な周波数で一次 IIR フィルターを実装したいと考えています。1Hz のフィルター処理に注目しましょう。理論的には、N = log2(300k) = 18 ビットの解像度を得ることができるはずです。
フィルター係数を計算しました:
ゲイン: 3.1416e-6
分子: [1 1]
分母: [1 -0.999993717]
分数係数をどのように扱うのですか? 係数に 2^N を掛けてから、N 個の LSB を切り取り、N を係数の妥当な近似値にすることを考えていました。
この構造を使用するとしましょう:
この乗算方法を使用した場合、 z-1 レジスタと y 出力のバス幅はどれくらいになりますか?
助けてくれたジョナサンに感謝します。まだいくつか理解する必要があるので、これを実用的にしましょう。まず第一に、どの構造が FPGA 実装に最適だと思いますか?
いずれにせよ、私が乗算するとしましょう:
b = 3.1416e-6 * 2^36 --> 110100101101001111
a = 0.999993716 * 2^17 --> 011111111111111111
それで?:D