« インパルス不変法による一次IIRフィルタ設計(基本、初歩) | トップページ | 時計のモータ »

2008年11月15日

1次IIRフィルタの簡単お手軽な実装

前の記事のおさらいから。

一次遅れのIIRフィルタの計算式は

 y(nT) = x(nT) +  e^(-T/τ)*y{(n-1)T}  (式8)

となることがわかった。さて、係数のe^(-T/τ)は、どんな値になるだろうか?たとえば、サンプリング周期T=1ms、設計したいフィルタの時定数τ=10msとすると、e^(-0.1)=0.904837となる。

0.904837をどのように扱うか?

ためしに、この値を1から引いてみよう。

 1 - 0.904837 = 0.095163

約1/10.5。1/16としてしまえば、右シフト演算4回で行ける。割り算よりシフト演算なら格段に速い。VHDLやVerilogでも簡単に記述実装できる。

そうか!

係数をe^(-T/τ)ではなくて、1-e^(-T/τ)の形になるようにすれば簡単な演算になるのだ。(式8)を係数1-e^(-T/τ)になるよう変形してみる。

 y(nT) = x(nT) - {1-e^(-T/τ)}*y{(n-1)T} + y{(n-1)T}

    (式9)

これをブロック図に書くと、

1stiir_const2

実装例、入出力時間波形、周波数特性については、次回以降で説明します。お楽しみに!

Link: 

プライムモーション社(みんなで手軽にWindowsリアルタイムIO制御)

プライムモーション(Windowsで手軽にリアルタイムIO制御)

|

« インパルス不変法による一次IIRフィルタ設計(基本、初歩) | トップページ | 時計のモータ »

技術フィルタ」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: 1次IIRフィルタの簡単お手軽な実装:

« インパルス不変法による一次IIRフィルタ設計(基本、初歩) | トップページ | 時計のモータ »