1/12 オクターブバンド・フィルタ (5)

ディジタル・フィルタによる実現の後は、サンプル値信号処理システムであるスイッチト・キャパシタ・フィルタで 1/12 オクターブ・バンド・フィルタを作ってみることにしました。
具体的なデバイスとしては、以前に VCF としての応用も試した MF10 (MAXIM 製) を使います。 MF10 を使うのは単に手持ちがあったからです。 新規にはおすすめしません。
古いデバイスなので MAXIM 製は製造中止、TI (旧 NS) 製は現在も製造していますが、性能に比較すると割高な価格となっています。
リニアテクノロジー社の製品 LTC1060 は MF10 のピン・コンパチブル品となっています。 より低い電源電圧で動作する、より高い周波数まで使えるなど、MF10 よりも高機能になっています。
LTspice には AC 解析できる LTC1060 のマクロ・モデルがライブラリとして提供さまれており、それを利用してシミュレーションを行いました。
バイスのピンの設定や外部回路により、いろいろな回路構成ができ、それらに「モード番号」が割り振られています。
MF10 では、モード 1, 1a, 2, 3, 3a, 4, 5, 6a, 6b、LTC1060 では、モード 1, 1a, 1b, 1c, 2, 2a, 2b, 3, 3a, 4, 4a, 5, 6a, 6b, 7 となっています。 
LTC1060 の方が使えるモードが多いのは、最初の積分器の前の S1 入力が MF10 とは違ってハイ・インピーダンスになっており、フィードバック入力として使えるためです。
各種あるモードの中で、最も一般的な状態変数回路型フィルタとして使えるモード 3 での構成を下に示します。 外付けの抵抗 4 本で、ハイパス/バンドパス/ローバス・フィルタ出力を同時に得られます。

(OP アンプ + スイッチト・キャパシタ積分器 2 段) で構成される 2 次フィルタ・ビルディング・ブロックを 2 組内蔵しています。
設定は両方のビルディング・ブロックに共通になっています。 たとえば、ブロック A を 1/100 クロック・モード、ブロック B を 1/50 クロック・モードで動かすことはできません。
スイッチト・キャパシタ・フィルタでは振幅方向はアナログ値ですが、時間方向は離散化された「サンプル値」システムなので、フィルタの設計は厳密にはディジタル・フィルタと同様の z 平面で扱わなければなりません。 双 1 次 s-z 変換により、アナログ・フィルタの設計方法を利用できますが、「周波数プリ・ワーピング」による補正を行なう必要があります。
しかし、MF10 ではサンプリング・クロック周波数の 1/100 あるいは 1/50 の周波数付近をカットオフ周波数とするフィルタを実現しているので、周波数の歪は 0.1 % 以下と小さく、アナログ・フィルタの設計方法をそのまま利用できます。
中心周波数 880 Hz に対するサンプリング・クロックとしては、44.1 kHz を使用すると 1/50 で 882 Hz となり、誤差が約 0.2 % の値となります。
一方 48 kHz サンプリング周波数の系列のクロック周波数 73.728 [MHz] = 1536 × 48 [kHz] を 1582 分周して得られる 73.728 [MHz] / 1582 = 46.604 [kHz] の 1/50 は 932.09 Hz となり、「A#」の 932.33 Hz に対して誤差が約 0.03 % の極めて近い値となります。
今回はこの 932.33 Hz 「A#」に対する 1/12 オクターブバンド・フィルタを実現することにして、46.604 kHz のサンプリング・クロック生成のためだけに PSoC5LP Prototyping Kit を利用しています。
リニアテクノロジー社からは、同社のスイッチト・キャパシタ・フィルタのための設計ツール「FilterCAD 3.0」が提供されていますが、LTC1060 は設計対象となっておらず、他の品種を選んでも MF10 では使えないモード 1b などが自動的に選択されたりして、設計結果をそのまま利用できません。
フィルタ設計としては、設計ツールで要求仕様から BPF の中心周波数と Q の値を求めるだけにして、実際の抵抗値に関してはデータシートの計算式により手計算する方法を取ります。
中心周波数と Q の値さえ求まれば良いので、OP アンプを使った多重帰還型や Sallen-Key 型のアクティブ・フィルタ設計用のプログラムでも利用することができます。
たとえば、TI 社の WEB 版フィルタ設計ツール「WEBENCH Filter Designer」や、(ローカル PC 上で実行する) 「FilerPRO Desktop」などが使えます。
中心周波数 932.33 Hz (A#) の 1/12 オクターブバンド・フィルタの設計仕様としては、

中心周波数 : 932.33 Hz
3 dB 帯域幅 : 53.86 Hz
通過域上端 : 959.65 Hz
通過域下端 : 905.79 Hz
フィルタ次数 : 6 次
フィルタ特性 : バタワース

であり、アナログ・フィルタ設計ツールに入力して得られた各 2 次 BPF セクションの結果は

中心周波数 (Hz) Q
932.33 17.31
955.94 34.63
909.29 34.63

となります。
MF10 のデータシートのモード 3 での計算式を書き出すと次のようになります。

f_0 \,=\, \frac{f_{\rm CLK}}{100}\,\times\,\sqrt{\frac{R_2}{R_4}  または  f_0 \,=\, \frac{f_{\rm CLK}}{50}\,\times\,\sqrt{\frac{R_2}{R_4}
Q \,=\, \frac{R_3}{R_2} \,\times\, \sqrt{\frac{R_2}{R_4}}
H_{\rm\tiny OBP}\, \,= - \frac{R_3}{R_1}

ここで、HOBP は中心周波数 f0 での BPF のゲインです。
これらの式を抵抗に対して解くと、

\frac{R_2}{R_4}\,=\,\left(\frac{f_0 \,\cdot\, 100}{f_{\rm CLK}} \right)^2  または  \frac{R_2}{R_4}\,=\,\left(\frac{f_0 \,\cdot\, 50}{f_{\rm CLK}} \right)^2
\frac{R_3}{R_2}\,=\,Q\,\times\,\frac{f_{\rm CLK}}{f_0 \,\cdot\, 100}  または  \frac{R_3}{R_2}\,=\,Q\,\times\,\frac{f_{\rm CLK}}{f_0 \,\cdot\, 50}
\frac{R_3}{R_1} \,=\, \left|\,H_{\rm\tiny OBP}^{}\,\right|

となります。
まず、R2 か R4 のいずれかを都合のよい値に選び、1 番目の式を利用して、未定の R2 か R4 の値を求めます。
2 番目の式で R3 の値が決まります。 3 番目の式で目的の BPF のゲインから R1 の値が決まり、これで抵抗 4 本すべての値が求まることになります。
MF10 の出力バッファのシンク電流能力は 1.5 mA 程度なので、抵抗値を低く選びすぎると出力電流をシンクしきれない可能性がでてきます。 そのため、出力に接続する抵抗値は 5 kΩ 以上にすることが推奨されています。
サンプリング・クロックが周波数誤差なしで供給されたと仮定した場合の各抵抗値の計算結果を下に示します。
F 級 (1 %) の金属皮膜抵抗は E3 シリーズ (10 / 22 / 47) の値のものしか揃えていないので、最小の抵抗値が 22 kΩ となるように選んでいます。

f0
(Hz)
 Q R2/R4 R3/R1 R1
(kΩ)
R2
(kΩ)
R3
(kΩ)
R4
(kΩ)
932.33 17.31 1.0 17.31 380.82 22 380.82 22
955.94 34.63 1.0513 33.78 781.18 23.129 781.18 22
909.29 34.63 0.9512 35.508 781.18 22 781.18 23.129

これらの定数を使って構成した LTspice での LTC1060 シミュレーション回路を下に示します。

2 次セクション 3 段なので、LTC1060 を 1 個半使います。
AC 解析用のマクロ・モデルなので、サンプリング・クロックはハードウェア信号として供給するのではなく、パラメタとして数値で与えます。
実際の応用での BPF 3 段を縦続に接続するのとは違って、1 回のシミュレーション上で各段の特性を個別に見るために、AC 信号源に 3 つの BPF を並列に接続しています。
AC 解析の結果を下に示します。

赤 / 青 / 緑の線がそれぞれの BPF の個別の特性です。
茶色の線が 3 つの BPF を縦続接続した場合の特性です。 実際には縦続接続しておらず、3 つの BPF の周波数応答を掛け合わせたものを表示しています。
マクロ・モデルにデバイスの f0 や Q のぱらつきの影響が組み込んであるのかどうか分かりませんが、本来フラットであるべきバタワース BPF の茶色のトレースが、チェビシェフ BPF のように少し中央部がヘコんでいるなど、微妙に理論値と食い違いがあるのが気になります。