PSoC5LP Prototyping Kit (13) --- DFB と Filter (5)

Filter コンポーネントのチャネル B を IIR バイクアッド構成とした場合のカスタマイザ (設定ダイアログ) の画面を下に示します。 (画像をクリックすると拡大します)
これは、4 倍オーバーサンプリング用の補間フィルタとは直接の関係はありません。 単に IIR バイクアッド構成の例として示したものです。

PSoC5LP_Filter_iir8_cust_small.png

左側のペインのフィルタ・パラメタ入力部の拡大を下に示します。

「Enable channel:」でこのチャネルを有効にするかどうかを指定します。
2 チャネルをステレオとして利用する場合には、「チャネル B を チャネル A と同一の設定にする」という選択肢が欲しいところですが、そうなってはいません。 
その目的のためには、チャネル A/B で全く同一のフィルタ設計パラメタを入力しなければなりません。
今回はフィルタの特性を見たいだけなので、「Filter gain:」は 0 dB とし、「Cutoff (kHz)」も 1 kHz としています。
「Filter class:」で「Biquad」を選んで、 IIR バイクアッド構成としています。
IIR バイクアッド構成では、「Filter type:」で選べるのは、

  • Low pass
  • High pass
  • Band pass
  • Band stop

の 4 種のみとなっています。
また、FIR の場合にはなかった「Shape:」の項目で、フィルタ特性の近似方法を

  • Butterworth
  • Bessel
  • Chebyshev

の 3 種の中から選びます。 ベッセル・フィルタの場合には、設計可能なのは 25 次までです。
見て分かるように、すべて「全極型」、つまりアナログ・プロトタイプ LPF の伝達関数の分子多項式が定数となるタイプのものです。逆チェビシェフ・フィルタや楕円 (elliptic / Cauer) フィルタのように伝送零点を持つ特性のフィルタは選択肢にありません。
そのようなフィルタが必要な場合に、は外部のフィルタ設計ソフトを利用して得られたフィルタ係数を「カスタム係数」としてインポートする必要があります。

DFB (Digital Filter Block) の MAC (Multiply and ACcumulate unit) では「multiply and add」命令しかなく、「multiply and sub」命令がないので、IIR バイクアッド・フィルタの計算は、左の図のようにサンプルと係数の乗算結果をすべて加算して求めています。
この構成を伝達関数 H(z) で表現すると、

H(z)\, = \,\frac{\normalsize \,a_0\, +\, a_1 \cdot z^{-1}\, + \,a_2 \cdot z^{-2}\,}{\normalsize \,\,1\, -\, b_1 \cdot z^{-1}\,-\,b_2 \cdot z^{-2}}
となり、一般的な多項式の表現と、分母の z-1 の 1 次と 2 次の項の係数 (b1、b2) の符号が反対になっています。 他のソフトの結果を利用する場合には、この点に注意します。
カスタム係数としては、この係数を 1 行に 1 個、 1 バイクアッド・セクションあたり 5 行で、下のような順番で並べます。

a0
a1
a2
b1
b2

1 次のセクションでも、2 次の係数 (a2、b2) を「ゼロ」として、係数データ自体は 5 行にします。 カスタム係数の行数が 5 の倍数になっていないとエラーになります。
これは、Filter コンポーネントで生成される DFB 用のプログラムが 2 次セクションの縦続を前提とした作りになっているためです。
「Order:」で IIR フィルタの次数を指定します。 フィルタのリソースをすべて占有する場合で、最大 50 次 (25 バイクアッド・セクション) となります。 ここでは 8 次 (4 バイクアッド・セクション) を選んでいます。
フィルタ・シェープにチェビシェフを選んでいるので、「Ripple (dB):」の項目が有効になっています。 ここでは、リプルがあることがグラフを見て分かるように、リプルを 1 dB と大きく選んでいます。
Filter コンポーネントで生成されるフィルタ係数から各 2 次セクションごとの特性と、全体の「仕上がり」の特性を求めたグラフを下に示します。

青色のトレースが初段、マゼンタのトレースが 4 段目、赤色のトレースが総合の特性です。
各セクションの「オーダリング」としては「減衰」させた後に「増幅」する、ダイナミック・レンジ優先の順序になっているようです。
4 倍オーバーサンプリング・テストのプログラムによる「リニア周波数スイープ」と WaveSpectra による「ピーク・ホールド」で求めた周波数特性のグラフを下に示します。

赤色のトレースがピーク・ホールド (Peak) による周波数特性です。 
黒色のトレースが「リアルタイム」のスペクトラム (Main) です。 通過域外の周波数をスイープしている時点での表示なので、入力正弦波の成分自体は見えておらず、トレースはノイズ・フロアを示しています。
前の 2 段の 2 次セクションで特に通過域端付近を減衰させてから、後の 2 段の 2 次セクションで通過域端付近を増幅するという構成なので、通過域端に向かってノイズが増えるという傾向が測定結果にも表れています。