手習ひデジタル信号処理(37) IIRフィルタ、直交する正弦波発生器その2

Joseph Halfmoon

前回はブロックダイアグラムをScilab+Xcosでシミュレーションしてみました。確かにIIRフィルタから直交する正弦波(つまりはSIN波とCOS波ですが)が生成されてました。今回は実機STM32F446RE上で確認したいと思います。使用させていただくプログラムは三上先生のプログラムそのままであります。

※参照させていただいております三上直樹先生著の教科書は以下です。何度もなぞって手習ひしているうちにデジタル信号処理が分かった気がしてきましたぜ(年寄りの手習ひ、気のせいかもしれませぬ。)

工学社『「Armマイコン」プログラムで学ぶデジタル信号処理

なお、今回は実機ST Microelectronics社製 Nucleo-F446REボード(Arm Cortex-M4Fコア)上で動かしております。ビルドにはArm社のMbedのWeb環境(要登録、無料)を使用しております。また、三上先生の御ソースはMbed環境内で公開されており、「呂」で検索すれば発見できます。

ターゲット実機の様子

いつもは、DA出力を右上に見えている小ボード(出力用にはLPF搭載)に接続して信号を観察しております。しかし今回は信号の位相がズレると「直交」している様子が観察できないので外してオシロ直結としております。また「いつも」はDA1チャンネルですが、別途D13ピンからもDA2チャンネル目を取り出しています。

sincosDUT_EC

ビルド

今回は三上先生の御ソースに不埒な勝手変更などを加えておりませぬ。そのままであります。MbedのWebコンパイラでビルドした結果が以下に。

実行結果

まずは時間波形です。C1(黄色)はA2端子、C2(青色)がD13端子に接続であります。C1がSIN波、C2がCOS波に見えますかね。設定周波数1kHz、振幅は0.75倍です。振幅に定数0.75掛けてあるのは、D13端子にはLEDが接続しているので、元気よく振ってしまうと波形にクリッピングがかかってしまうためのようです(前々回D13端子使っていないときにも0.8掛ってましたが。)

TIM0

上記の時間波形を拡大したものが以下に。オフセットは1.64V付近です。2波形の位相の差は時間にして249us(計算上は250us)と読み取れます。

TIM1

リサージュ図形を描いてみました。当然ちゃ当然ですが、ちょうど90度ずれた正弦波の組なので、「綺麗な円」が描けます。中心は先ほど測定したオフセット1.64V付近にあります。

XY0

単なる円だけれども、この円は直交している証拠だぞなもし。ホントか。知らんけど。

手習ひデジタル信号処理(36) IIRフィルタ、直交する正弦波発生器その1 へ戻る

手習ひデジタル信号処理(38) M系列信号を使う白色雑音の発生その1 へ進む