今回はFFT使ったFIRフィルタです。以前に「普通に時間領域」でFIRフィルタしていたもの。今回は、入力信号もフィルタ係数もFFTをかけて周波数領域で乗算してから、逆FFTで時間領域の信号に戻すのだ、と。無限の長さの入出力信号を小分けにするためには重複保持法使うんだとか。しかしオンラインコンパイラの件気になるのデス。
※「手習ひデジタル信号処理」投稿順 Indexはこちら
※参照させていただいております三上直樹先生著の教科書は以下です。
工学社『「Armマイコン」プログラムで学ぶデジタル信号処理』
三上先生の御ソースは、Arm社MbedのWeb環境(要登録、無料)内で公開されており、「呂」で検索すれば発見できます。今回は第10章「FFT」を利用する「FIRフィルタ」を参照させていただいております。
※実験は、ST Microelectronics社製 Nucleo-F446REボード(Arm Cortex-M4Fコア搭載STM32F446RE)向けにArm社Mbed環境内でビルドしています。測定はDigilent社 Analog Discovery2で行っています。
Arm Mbed Online Compilerのリタイア近づく!
本シリーズの手習ひにずっと使わせていただいておりますArm社 Mbed Online Compilerですが、いよいよ「引退」のようです。1週間ぶりくらいでオンライン・コンパイラにログインしたら「見慣れぬオレンジ色(黄土色)のバー」が表示されてました。こんな感じ。
learn moreのリンクから辿れるのは以下の記事です。
Keil Studio Cloud introduction and Mbed Online Compiler retirement
かなり前に Keil Studio Cloud が発表されたころにログインしてみたことはあったのです。しかしその時は「まだMbed Online Compilerは当分使えるみたいだし、ま、いいか」ということでそのままズルズル来ていたのです。いよいよ命脈尽きる時が近づいているみたいです。さっさと Keil Studio Cloud へ移行せよ、と。
そして、よくみれば Keil Studio Cloud を開くためのボタンも用意されとります。
いよいよ移行せんとダメみたいデス。ともかく慣れたものから移行するのがメンドイ年寄りです。
さてFFT利用のFIRフィルタのビルド
自力でFFTから作ったら大変ですが、三上先生が皆用意していただいておるので何も大変なことはありません。今回実験してみるFIRフィルタは、過去
手習ひデジタル信号処理(9) STM32F446、FIRフィルタその1、直接形
手習ひデジタル信号処理(10) STM32F446、FIRフィルタその2、転置形
手習ひデジタル信号処理(11) STM32F446、FIRフィルタその3、直接形Class
と3度にわたって実験しているものと同じ特性のものです。ただ、FFTかけてから計算して、IFFTで元に戻すのだと。
ビルド結果がこちら。STM32F446RE、メモリはバッチリ。
実機上での実行結果
今回のフィルタは、以下のパラメータで作られてます。
-
- 通過域、下限0kHz、上限0.9kHz
- 阻止域、下限1.2kHz、上限5kHz
まずは、通過域内 振幅1V、オフセット0V、周波数0.8kHzの入力信号を与えたときの時間波形が以下に。黄色C1が入力、青色C2が出力であります。以下のように「通過」しとりますです。
つづいて、阻止帯域内に入ります。周波数1.2kHzに上げました。振幅1V、オフセット0Vは変わりません。そのときの時間波形が以下に。以下のように「阻止」されとります。
さて、お楽しみの振幅特性をプロットしてみました。こんな感じ。
外から見ている分には以前実験したものと変わらぬ結果が観察できました。
FFTかけられたのは良いけれど、環境の移行の方が気になっちゃう。。。