ディジタルフィルタの概要


 dsPICの応用として最も基本的なのはディジタルフィルタです。ディジタルフィルタで
最も多く使われるのが、FIRフィルタとIIRフィルタです。ここではそのようなフィルタの
基本的な事項について説明します。

【移動平均と差分方程式】

移動平均は時系列データの解析に良く使われる方法で、変動の激しい時系列
データの変動傾向を見る時に良く使います。
基本的な考え方は過去の何個かのデータの平均を取っていく方法で、単純に
n 時刻の x の値を x[n] と表すとして、N個の移動平均を取るとすると、時刻nの
移動平均値 y[n] は下記のような式で表すことができます。

 y[n] = ( x[n] + x[n-1] + x[n-2] + ・・・・・ + x[n-(N-1)] ) ÷ N

例えば下記のグラフのように、黒点が各時刻での実際のデータ値としたとき
全体の傾向はわかりにくいのですが、これを過去5回の時刻の移動平均を
取ると赤い折れ線グラフのようになります。このグラフをみれば全体の傾向が
明確に表されていて、一目で理解することができます。
このように移動平均を取ると、急激な変動が吸収されて全体の傾向を表現
するようになります。つまりローパスフィルタを通したことになるわけです。





上記の数列の式をΣを使った書式で表すと下記のようになります。
これを「差分方程式」と呼びます。
この式を図で表現すると下図のようになります。これを「ブロック図」と呼びます。
Z-1という箱が一つ前の時刻に戻るということを表し、丸+ 記号は加算することを
表し、三角記号は定数を乗算することを表しています。




詳しい説明は省略しますが、上記差分方程式を伝達関数に変換し、周波数応答
を求めて、移動平均の周波数特性を求めると下図のように表されます。
この図から、移動平均はサンプリング周期を元にしたローパスフィルタの特性を持ち、
平均個数が多いほどローパスフィルタ特性が低い周波数に偏ることがわかります。
つまりよりばらつきの多い変化を抑制してゆっくりとした傾向を表すことになるわけです。





【FIRフィルタ】

FIRフィルタは、「Finite Impulse Response」 の略で、上記の移動平均の
各要素に重み付けのパラメータを追加した形になります。
これを式とブロック図で表すと下記となります。




図にある赤い範囲で囲まれた部分を「タップ」といい、ディジタルフィルタの基本要素と
なります。
各タップごとに重みのパラメータ「h」がありますが、この値をいろいろ変えることで、
移動平均の周波数特性を自由に変えることができます。
タップの段数もフィルタの特性に影響を与え、段数を多くすればより急峻なフィルタ特性
を得ることができます。
つまり、この「h」やタップ段数を変えることで、ローパスフィルタ特性だけでなく、ハイパス
フィルタでもバンドパスフィルタでもフィルタ特性を特定してできてしまうことになります。

しかし、このパラメータ値を求めることは簡単ではなく、複雑な解析をする必要があります。
そこで、このパラメータを求めるためのフィルタ設計ツールが用意されていて、必要な
特性値を入力すれば、各タップごとのパラメータを求めてくれるようになっています。
マイクロチップ社でも、このようなディジタルフィルタ設計ツールを用意していて、
Digital Filter Design Tool」がこれに相当します。

このツールで実際に設計した例が下図のような特性になります。図からわかるようにタップ数
が同じ20個でも、パラメータによりローパスフィルタにもできますし、バンドパスフィルタにも
できます。さらにタップ数を増やせばより急峻な特性のフィルタを作ることが可能になります。





【窓関数】

 FIRフィルタを設計するとき必要とされるのが「窓関数」と呼ばれるもので、この窓関数の
働きを説明しましょう。
 FIRフィルタは本来はタップ数を無限にして考えるのが理想型です。しかし実際には
DSPの演算能力などから、これを有限個のタップ数で作成するため、両端の境界では
大きな歪みを生じ特性が劣化します。
そこで、タップの係数に重み付けをし、中央から端に行くほど係数を小さくして、両端での
打ち切りの影響が少なくなるようにします。
この重み付けのパラメータ群を決めるための関数を窓関数と呼びます。窓関数として
多くの種類がありますが、代表的なのは、ハニング窓関数と呼ばれる対称型の関数です。
ハニング窓関数をグラフで描くと下図のようになります。





【IIRフィルタ】

IIRフィルタは、「Infinite Impulse Response」の略で、FIRフィルタのように単純に移動
平均を取るのではなく、フィードバックを取り入れて、より少ないタップ数で、希望する
フィルタ特性を得るディジタルフィルタです。
フィードバックを含むので、安定に動作させるための条件設計が重要で、フィルタ特性
だけでなく、系の安定性も含めて設計する必要があります。
しかしタップ数を少なくできるので、DSPとしての計算負荷を減らすことができますから、
より高速な応答が可能になります。

IIRフィルタを差分方程式で表すと下記のようになり、出力yが右辺に含まれていて、
出力が次の出力に影響を与えるというフィードバックとなっていることになります。
重み「a」の値によりポジティブフィードバックにもネガティブフィードバックにもなりうるので
安定な系の構成には、このパラメータの設計が重要な要素となることになります。




この差分方程式をブロック図で表すと下図のようになり、出力のy[n]の要素が加算されて
いることが判ります。




IIRフィルタの場合にも、パラメータ「a、b」を変えることで自由にフィルタを設計する
ことが可能です。しかしこれらのパラメータを求めるのは非常に複雑ですから
通常はフィルタ設計ツールを使って最適解を求めるようにしています。
「Digital Filter Design Tool」はIIRフィルタにも対応しています。

下記がIIRフィルタの設計例です。少ないタップ数でも急峻な特性が得られるのが
特徴です。









     目次ページへ