PSoC1 (6) --- スイッチトキャパシタ・フィルタ (6)
フィルタのユーザモジュールのウィザードでは、フィルタ仕様を入力して設計するほかに、外部のプログラムでコーナー角周波数を 1 [rad/s] として設計したフィルタの s-平面上の「極」の配置を入力して使うこともできます。
ELPF ユーザモジュールでは、「ノッチ」となる「零点」の入力も必要ですが、こちらは s-平面上の位置ではなく、ノッチ周波数を入力します。
MATLAB および GNU Octave には、ディジタル / アナログ両方に対応した楕円フィルタ設計関数「ellip( )」があるので、これを試してみました。
GNU Octave で記述したプログラム (ELPF4.m) を下に示します。
PSoC1 (5) --- スイッチトキャパシタ・フィルタ (5)
SC ブロックを「フィルタ」として使うために特化した「ユーザモジュール」として、下の 6 種が用意されています。
- BPF2 (2 次バンドパス・フィルタ)
- BPF4 (4 次バンドパス・フィルタ)
- LPF2 (2 次ローパス・フィルタ)
- LPF4 (4 次ローパス・フィルタ)
- ELPF2 (2 次楕円ローパス・フィルタ)
- ELPF4 (4 次楕円ローパス・フィルタ)
2 次のフィルタは ASC + ASD のペアを 1 組使い、4 次のフィルタは ASC + ASD のペアを 2 組使います。
SC ブロック間の接続は自動的に行われ、ユーザは入力の接続および出力の接続だけを指定すればすみます。
キャパシタの値の設定も、「ウィザード」を利用すれば、周波数応答のグラフを見ながら調節することができます。
PSoC1 (3) --- スイッチトキャパシタ・フィルタ (3)
「フルスペック版」スイッチトキャパシタ回路を下に再掲します。
この回路図では、積分器のフィードバック・キャパシタの値を「1 F (ファラド)」とする、正規化された形で表現していますが、実際の FCap の値としては、標準値で約 80 fF (フェムト・ファラド) のキャパシタを単位 (CSC) として、その 16 倍あるいは 32 倍のいずれかを選択する形となっています。
ACap / BCap / CCap については、CSC の 0 倍 ~ 31 倍の 5 ビット整数値で表せる倍率を選択できるようになっています。
PSoC1 (1) --- スイッチトキャパシタ・フィルタ (1)
1 か月ほど前、秋葉原に行った際に、秋月の店頭で「サイプレスプログラマー/ 開発セット」がジャンク扱いで 2000 円で売られていました。
中身は、
- MiniProg1
- USB ケーブル
- MiniEval1 ボード
- CY8C29466-24PXI
- CY8C27443-24PXI
- ソフトウェア CD
で、これは、すでに廃版となっている「CY3210-MiniProg1」キットの中身と同等のようです。
現行の PSoC5LP Prototyping Kit が秋月価格で 1500 円で買えるのに比べると、安くなっているとは言え、微妙に高い気もしますが、PSoC1 のスイッチト・キャパシタ・フィルタには関心があるので買って帰りました。
dsPIC33FJ64GP802 (16) --- 1/12 オクターブバンド・フィルタを使った「グライコ」風表示 (1)
1/12 オクターブバンド・フィルタを多数並べて、オーディオ用グラフィック・イコライザの「バー」風の表示をさせてみました。
表示は、下の記事の Adafruit 1.8 インチ TFT LCD シールド互換のシールドを装着した Arduino で行い、1/12 オクターブバンド・フィルタを実装した dsPIC33FJ64GP802 とは I2C で接続しています。
1.8 インチ TFT LCD シールド (2) - シンセ・アンプラグド
表示の様子を下に示します。 (写真をクリックするとモーション GIF による動画が表示されます。)
続きを読む