前回はIIRフィルタを使って正弦波を生成でした。今回はその応用であります。直交する正弦波、要するにSin波とCos波、位相90度ずれた波の生成です。例によって今回はブロックダイアグラムをシミュレーションしてPC上で確認です。実際に三上先生の教科書のコードを実機で動作させるのはまた次回の予定。
※「手習ひデジタル信号処理」投稿順 Indexはこちら
※参照させていただいております三上直樹先生著の教科書は以下です。
工学社『「Armマイコン」プログラムで学ぶデジタル信号処理』
なお、今回は実機(Arm Cortex-M4F)上で動かしておりませんが、三上先生の御ソースはArm社のMbed環境(要登録、無料)で公開されており、「呂」で検索すれば発見できます。
ブロックダイアグラム
ブロックダイアグラムのシミュレーションにつかわせていただておりますのは、Scilab付属のXCOSというソフトウエアです。機能的にはMATLABのSimulinkによく似た立ち位置のソフト、ではあります(個人の感想です)が、大分(いくぶん)違うような気もします。
今回使用のSIN波、COS派生成用のIIRフィルタのブロックダイアグラムは、前々回にSIN波生成に使ったものの「チョイ直し」です。ごく小幅な修正なのですが、フィルタの途中から信号線を取り出したところ大分配線が汚くなってしまいました。XCOSの結線、いまだ上手に制御するに至らず。ブロックダイアグラム自体はこんな感じ。遅延2個と定数倍4個と加算器3個で出来てしまうIIRフィルタ、実際に動かして動作を目の前にしても未だに不思議。
基本は前々回の設定そのままですが、SIN波だけでなくCOS波が追加されたので定数を追加しています。コンテキスト設定(シミュレーション前に一度だけ評価されて、定数などを決定する)の内容は以下のとおりです。
これで上記の定数、a1,a2,b1s,b1cなどがブロックダイアグラムの内部で使えるようになりました。
シミュレーション結果
前々回はSIN波だけだったので、「1現象」のスコープで観察でした。今回は「2現象」のスコープで観察です。以下上のグラフがCOS、下のグラフがSINです。
位相90度ずれた(1周期1000ステップなので、90度=π/2=250ステップ)正弦波にみえる波形が観測されとります。まあ、前々回、正弦波が出てるのだから当たりまえか。
次回は、Nucleo-F446REの実機上で、直交する正弦波を観測してみたいと思います。