ディジタルフィルタの設計


 マイクロチップ社が提供しているディジタルフィルタ設計ツールである
「Digital Filter Design Tool」を使ったフィルタの設計方法を説明しています。

【Digital Filter Design Toolとは】

Digital Filter Design Toolは、その名前のとおりフィルタの設計を支援するツールです。
通常版の他にLiteバージョンがあり、安価なツールとして提供されています。
Lite版は生成するタップの段数に制限がある他は通常版と同じ機能を持っています。
以下では、このLite版で説明していきます。

 ディジタルフィルタとして最もよく使われるFIR、およびIIRフィルタの設計を、
希望するフィルタ特性データの、周波数仕様をダイアログから入力するだけで
自動的に生成してくれます。
 さらに、MPLAB IDEでそのまま使えるC言語のソースコードを自動生成しますので、
これをメインプログラムにリンクするだけで、DSP機能を使ったフィルタ機能を実現する
ことができます。

【FIRフィルタの設計】

まずDigital Filter Design Liteを起動すると下図のアイコンバーが表示されますので
この中からFIRを選択します。




すると下記ダイアログでフィルタの種類の選択指定となりますので、希望する
フィルタを選択します。




例えばBandpassフィルタを選択してNextとすると、次に下記ダイアログで特性の設定
となります。




ここでの設定は下図のようなフィルタ特性を指定していることになります。最初の
Sampling Frequencyは対象のシステムのサンプリング周期に合わせる必要があります。
その他は下図の各特性値を入力することになります。
例では1kHzを中心として±100Hzの範囲は−3dB以内で通過させるようなバンドパス
フィルタを設計するものとし、±200Hz以上の範囲は−50dBの減衰特性を持たせた
フィルタとします。




これでNextとすると次は窓関数の選択のダイアログになりますので、ここで希望する
窓関数を指定します。
さらに下の空欄でタップの段数を数値で指定します。Liteバージョンではこのタップ数
に制限がありますので、それを超えた数値の場合にはメッセージ窓が表示されますので
それに従います。




これでNextとすると下記のように作成するフィルタ特性がいろいろな形のグラフで表示
されますので、それぞれ確認をします。




特にLog Magnitude vs Frequencyのグラフが先の目的の特性グラフそのものになります
から下記のように拡大表示して確認をします。
今回の例ではタップ数を64個にしましたが、タップ数をいろいろ変えてグラフ特性でみると
48個以上でないと目標のフィルタ特性は得られないようです。




これで確認がとれればこの設計値のパラメータをファイルとして出力します。
この出力する形式をMicorchipのdsPIC用のコードとして出力すると、C30コンパイラの
DSPライブラリと直接リンクさせてFIRフィルタを生成することができます。
この出力方法は下記のようにします。

Codegen → Microchip → dsPIC とすると下図のダイアログが表示されますので
下図のようにチェックしてOKとします。



これで次には、生成されるファイルを格納するフォルダとファイル名を指定するダイアログに
なりますので、MPLAB IDEのプロジェクトのフォルダ内に適当な名前を付けて格納します。
拡張子は自動的に付加されますので、名称を指定するだけです。




例えば上図のように、名称をBandpassとすると、「Bandpass.s」と「Bandpass.h」という2つの
ファイルが生成されて格納されます。
拡張子がsのファイルがフィルタのパラメータを生成したファイルで、拡張子がhのファイルが
Cコンパイラで呼び出すときのひな形です。
Bandpass.sのファイルの中味はアセンブラのデータファイルとなっていて、ファイルをテキスト
エディタで開くと、下記のようにフィルタのパラメータがデータとして記述されていることがわかります。





【IIRフィルタのの設計】

IIRフィルタの場合もFIRフィルタと全く同じ手順で設計をします。
例として上記と同じ特性のバンドパスフィルタを設計してみましょう。
アイコンバーからIIRを選択し、ダイアログでBandpassを選択します。Nextとすると
FIRフィルタの時と全く同じ特性指定のダイアログが表示されますので、下図のように
FIRフィルタと同じ1kHzのバンドパスフィルタの条件を入力します。




これでNextとすると下記ダイアログでフィルタの種類の指定になります。IIRフィルタ
の場合には、既存のアナログフィルタの特性データを利用してディジタルフィルタを
生成しますので、そのアナログフィルタの選択になっています。
例ではバターワースフィルタでタップ数が8として指定しています。




これでNextとすると、生成されたフィルタ特性が下図のように表示されます。




このグラフをみるとわかるように群遅延特性(Group Delay)が悪いのですが、タップ数が
8個でこの特性が得られますから、48個以上ないと特性の出ないFIRフィルタと比べて
DSPの処理時間からみると数分の1の処理でよいわけですからメリットが大きいフィルタ
となります。







     目次ページへ