デジタルフィルターとアナログフィルター(4):デジタル信号処理を徹底比較! フィルター特性と窓関数も解説:ソリューションライブラリ
好評のソリューションライブラリ!第4回目はデジタル信号処理についての理論をプログラムに置き換えてデモ環境での波形を比較、さらにデジタル信号処理には必要不可欠な「窓関数」と「フィルター特性」についても、公開プログラムを使って分かりやすく解説していきます。
好評のソリューションライブラリ!第4回目はデジタル信号処理についての理論をプログラムに置き換えてデモ環境での波形を比較、さらにデジタル信号処理には必要不可欠な「窓関数」と「フィルター特性」についても、公開プログラムを使って分かりやすく解説していきます。
1.デジタルフィルターの仕様
今回プログラムに組み込むデジタルフィルターは、次の3種類です。
- 移動平均フィルター
- IIRフィルター
- FIRフィルター
それぞれのフィルターを通した結果を比較してみましょう。
各種フィルターの仕様は次の通りで、比較的簡単に実現できる内容にしています。
2.デジタルフィルターの仕様解説
さて、IIRフィルターとFIRフィルターの仕様にて、少し聞き慣れない単語が登場しましたので一部解説します。
IIRフィルターの「バタワース型」とは?
IIRフィルターを設計する際、周波数の通過域と阻止域を定義付けますが、通過域と阻止域それぞれの特性の表れ方は、フィルターの「型」に依存します。
下図を見てください。
図3と図4は、代表的なフィルター特性を紹介しています。角周波数ω<遮断周波数ωcを周波数の通過域とし、ω≧ωcを周波数の阻止域としたグラフです。
バタワースフィルターは比較的緩やかな変化で、ロールオフが軽い勾配になる特性を持つのが特徴です。
チェビシェフフィルターは通過域にリプルを生じますが、阻止域のロールオフが急勾配になります。 ※逆に、阻止域にリプルを生じるタイプもあります。
また、チェビシェフフィルターはバタワースフィルターに比べて計算が多少複雑になります。詳しくは各種文献を参照してください。
FIRフィルターの「窓関数」とは?
FIRフィルターの特徴として、タップ数Nの数が多いほどより精度が上がり、狙った周波数特性に近づく性質があります。
そのため精度の良い特性を実現するためには、Nを無限個にするのが理想ですが、Nに対応する係数と入力信号を無限に用意するのは不可能ですし、マイコンのメモリの制限などもあるので、サンプリング時にNを有限で打ち切ります。
N個でサンプリングを打ち切るというのは、図5のように、連続信号から赤枠の範囲をサンプリングするということです。離散時間信号として取り出した信号をフーリエ変換にかける場合、取り出した信号は元の信号のように周期的になっているのが理想です。つまり、取り出した信号を周期拡張してつなげると、元の信号と同じように連続的な形状になるサンプリングが理想的です。
しかし、実際のサンプリングでは理想通りにいきません。元の信号は正確な周波数が分からなかったり、複数の周波数成分が含まれていたりで、うまく合わせてサンプリングするのは事実上不可能です。
このままフーリエ変換を行うと、波形のつなぎ目部分の不自然な形状が原因で、本来無いはずのノイズ成分が数値となって現れてしまいます。
では、連続性を持たせるためにどうすればよいのでしょう?
そこで登場するのが窓関数
窓関数を掛け合わせると、取り出した波形の両端を連続性のある形に補正して、連続性を持たせることができます。
図7ではハミング窓を例にしていますが、窓関数にはいくつか種類があり、それぞれ異なる特徴があります。どの窓関数を使うかは設計時に決めますが、今回はハミング窓を使用します。
3.プログラムの作成とその動作、ハードウェアの設定
それでは、本題に入りましょう。プログラムを動かす環境は、ソリューションコラム第12回でご紹介したものをベースにします。必要な機材などはこちらを参照してください。
今回はさらに、シリアル通信を加えてPCでログ取得を行いますので、シリアル通信ケーブルと、通信用のPCアプリケーションを用意します。
どんなプログラム?
今回使用したプログラムは、図8のような動作になっています。
250μsec周期でADサンプリングを行いながら、フィルター処理を行います。
衝撃を検知すると、ログにため込んだデータをシリアルでPCへ送信します。
なおシリアル通信処理は、DMAを使用してCPU負荷を減らしています。
DSP処理部分は、本記事冒頭の「1.デジタルフィルターの仕様」にて紹介したブロック図を元に、プログラムを組んでいます。フィルター処理に必須となる各種係数は、今回の仕様に沿う形に決め打ちとさせて頂いています。
また、ソースファイル「RX_DSP_Test.c」内の冒頭部分、IDXのdefine定義を変更することで、移動平均/IIRフィルター/FIRフィルター/フィルター処理無し(生データ)から選べます。
シリアル通信を行うにあたって(RSK+ RX63N特有の注意事項)
今回ご紹介のデモ環境ではシリアル通信を使用しますが、RSK+上に用意されているシリアル通信用ポート2系統のうち、SCI0(TXD0)はCN0303向けに、SCI1(TXD1)はE1向けに使用しているため別途通信ポートを用意する必要があります。
そこで、シリアル通信の代替手段としてSCI6を確保するため、RSK+上で1本のジャンパーを飛ばします。
RSK+のJA1 23番ピンとJ12の2番ピン(真ん中)同士を、図9のようにジャンパーで接続します。
これにより、SCI6のTXD6を使用してシリアル通信を行えるようになります。
※SW2と共用になるため、SW2は使用しないでください。
プログラムを動かしてみる
サンプル・プログラムを動かしてフィルター種別ごとのログを収集し、その結果を図10に示します。
図の前半は、受信したデータをそのままグラフ化して比較したものです。
図の後半は、受信したデータに対してフーリエ変換をかけて比較したものです。
図を見ると、フィルター処理無し(生データ)に対して、各フィルターとも一定の効果が現れていることが、グラフから確認できます。
また、生データのフーリエ変換結果を見てみると、どの周波数帯域でもノイズ成分が目立ちますが、フィルターを通すと周波数阻止域以降のノイズ成分がほぼ除去されていることが分かります。
このように実際にプログラムを動かしながら結果を比較できると、デジタルフィルターに対する理解も一層深まります。
4.サンプル・プログラム公開とダウンロード
さて、ここまでご紹介した内容を皆さんに実感いただくために、プログラムを公開致します。デジタルフィルター処理の参考に、お役にいただけると幸いです。
なお、このファームウェアでは、RX63Nのペリフェラル・レジスタ周りの設定については、PDG(Peripheral Driver Generator)を使用しています。
PDGはルネサス製のマイコン内蔵I/Oドライバ作製支援ツール(ソースコード自動生成ツール)で、無償配布していますので、デジタルフィルターデモファームウェアの内容を変更する場合は、PDGをご使用ください。詳しくは、コチラを参照してください。
5.最後に
今回は、デジタル信号処理をプログラムで動かして比較してみました。いかがでしたでしょうか。実際のデジタル信号処理においては、設計段階から綿密な検討のうえ、フィルター仕様を決めて設計します。
これまでにご紹介した内容が、デジタル信号処理の知識習得の足掛かりになれば幸いです。
次回はフィルター以外のデジタル信号処理について解説します。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- 知らない人は損をする!? インタポーザ「SE SP-01」を試してみた
アナログ・デバイセズ製の各種デバイスと、ルネサスエレクトロニクス製マイコンボードを簡単につなぐことができるようになるインターポーザボード「SE SP-01」。実際どれくらい簡単なのでしょうか。早速、SE SP-01を使ってシステムを組んでみましょう。 - デジタルフィルターとアナログフィルター(1)――デジタルフィルター超入門編
これから数回にわたり、アナログ信号よりある帯域の成分を取り除き、必要な信号成分だけを取り出す目的で使用される、信号処理用のフィルターについて紹介していきます。今回は、フィルター処理の中で、アナログ信号の状態で使用するアナログ・フィルターと一度デジタル値に変換してから処理を行うデジタル・フィルターについて、その特長の違いや組み合わせなどを解説していきます。 - デジタルフィルターとアナログフィルター(2)――デジタルフィルターの動きを見ながら理解する
信号処理用フィルターについて解説する本連載。今回は、デジタルフィルターに着目し、フィルターにはどのようなものがあってどのような違いがあるのかを紹介しながら、実際にフィルターを動かしてみたいと思います。 - デジタル・フィルターとアナログ・フィルター(3)――デジタルフィルターの使い方
データコンバータ(A-DコンバータやD-Aコンバータなど)は、アナログ信号処理とデジタル信号処理の間を橋渡しする素子です。デジタル・フィルターについて解説してきているこの入門編で、少し実際のフィルターの使い方についてお話ししたいと思います。
提供:ルネサス エレクトロニクス株式会社 / アナログ・デバイセズ株式会社
アイティメディア営業企画/制作:EDN Japan 編集部/掲載内容有効期限:2015年5月31日