本発明はフィルタ装置、特にIIRフィルタに関する。
データからノイズや不要な高周波成分を含む情報を取り除く手段として、フィルタ装置が広く用いられている。フィルタ装置としては、FIR(Finite Impulse Response)フィルタやIIR(Infinite Impulse Response)フィルタなどの構成が一般的に知られている。何れのフィルタ装置にもそれぞれ特徴があるが、IIRフィルタは、フィルタを構成する遅延手段などの規模を小さくできることから、特に小型化および低消費電力化を目指す装置において多く用いられている。しかし、一般的に、IIRフィルタは、ノイズ除去性能を向上させると、遅延手段に記憶される値を入力データの平均値程度に収束させるために必要な時間が長くなり、動作開始から所望のフィルタ特性が得られるまでにかかる時間が長くなってしまう。
遅延手段に記憶される値を入力データの平均値程度に収束させるために必要な時間を短縮することが可能なIIRフィルタとして、図8に示す特許文献1に記載のフィルタ回路800が知られている。このフィルタ回路800の動作について、図8を参照しながら説明する。
図8に示したフィルタ回路800は、加算手段803、遅延手段805、および、乗算手段807からなるフィードバック回路を備えている。当該フィードバック回路は、時刻t(n)において、遅延手段801により遅延された入力値x(n−1)と、遅延手段805に記憶されている値w(n−1)とから、他の値w(n)=x(n−1)+αw(n−1)を演算し、遅延手段805に記憶されている値w(n−1)を、演算により得られた値w(n)に更新する。演算により得られた値w(n)は、さらに乗算手段806により係数(1−α)を乗ぜられ、出力値y(n)として出力される。フィルタ回路800は、この動作を繰り返し実行することにより、入力値x(n)を出力値y(n)に変換するフィルタとして動作する。
時刻t(0)においてフィルタ動作を開始したとすると、時刻t(0)における最初の演算では、予め遅延手段805に記憶されていた値w(−1)が初期値として参照され、上述した演算が実行されることになる。ここで、遅延手段805に予め記憶されている値w(−1)は、一般には入力データと無関係な値である。すなわち、例えば、入力データが0以上1以下の変動範囲をもつにもかかわらず、予め遅延手段805に予め記憶されていた値w(−1)が10であるという事態が起こり得る。このため、動作開始時に予め遅延手段805に記憶されていた値w(−1)の影響が十分小さくなり、遅延手段805に記憶される値w(n)が、入力値{x(0)、x(1)、・・・、x(n)}の平均値程度に収束するまでには相当の時間がかかる。特に、フィルタ回路800のノイズ除去性能を上げるためにαの値を大きく設定した場合、この時間はさらに長くなる。
この問題を解決するために、図8に示したフィルタ回路800は、セレクタ804を備えている。図8に示したように、セレクタ804は2つの入力を備えており、一方は上記フィードバック回路の加算手段803に、他方は乗算手段802を介して遅延手段801に接続されている。セレクタ804の切り替え制御は、セレクタ804にコントロール信号を供給する初期化/通常動作コントロール手段808により行われる。
このコントロール信号は2値信号であり、セレクタ804は、コントロール信号0を与えられたときは、上記フィードバック回路の加算手段803から入力された信号を出力し、コントロール信号1が与えられたときには、乗算手段802を介して遅延手段801から与えられた入力値を出力する。従って、フィルタ回路800は、初期化/通常動作コントロール手段808によりセレクタ804の入力を切り替えることで、上述した演算を繰り返し実行する通常のフィルタ動作(通常動作)と、入力値(遅延手段801により遅延され、乗算手段802により係数を乗ぜられた入力値)を遅延手段805に取り込む初期化動作とを切り替えて実行することができる。
このため、フィルタ回路800を用いれば、予め遅延手段805に記憶されていた値の代わりに、初期化動作により取り込まれた入力値を初期値として、上記繰り返し演算を実行することにより、遅延手段805に記憶される値w(n)が入力値の平均値程度に収束するまでにかかる時間を短縮することができる。
特許文献1においては、上記フィルタ回路800を用いた画像データのボケマスク生成に関して、周辺画素の画像データを遅延手段805に取り込む初期化動作を実行することにより、品質の良いボケマスクを生成する方法が開示されている。
特開平10−3540号公報(公開日:平成10年1月6日)
しかしながら、従来のフィルタ回路においても、入力値の分散(ゆらぎ)が大きい場合には、遅延手段に記憶される値を入力データの平均値程度に収束させるために必要な時間を短縮することが困難であるという問題があった。
この問題について、図8に示したフィルタ装置800に即して、さらに詳しく説明すれば以下の通りである。
従来のフィルタ回路800は、初期化動作または通常動作のいずれか一方で動作する。従って、例えば、時刻t(n+1)において通常動作を開始したとすると、時刻t(n)には初期化動作が実行される。すなわち、通常動作の初期値となる、時刻t(n+1)において遅延手段805に記憶されている値w(n)は、遅延手段801により遅延され、乗算手段802により係数を乗ぜられた時刻t(n−1)における入力値となる。
ここで注目すべきは、どの時点で通常動作を開始したとしても、通常動作における初期値となる値w(n)が、一時刻における入力値x(n−1)だけから決定される点である。すなわち、フィルタ回路800においては、通常動作における初期値w(n)に、入力値の履歴{x(0)、x(1)、・・・、x(n)}を反映させることはできない。
入力値の分散(ゆらぎ)が大きい場合、通常動作の初期値を決定するために用いられる1つの入力値x(n−1)は、高い確率で他の入力値に対して大きな偏差を持つ。このため、初期化動作により取り込まれた初期値w(n)は、高い確率で、入力データの平均値に対して大きな誤差を持つ。従って、入力値として与えられるデータが分散の大きなデータである場合、上述の初期化動作によっても、遅延手段805に記憶される値w(n)を入力値に応じた値に収束させるために必要な時間を短縮することは困難であった。
本発明は、上記の問題に鑑みてなされたものであり、その目的は、分散(ゆらぎ)の大きい入力データに対しても、高速に遅延手段に記憶される値を入力データの平均値程度に収束させることが可能なフィルタ装置を提供することである。
本発明に係るフィルタ装置は、上記課題を解決するために、入力された値を記憶し遅延して出力する遅延手段と、前記遅延手段から出力された出力値と外部から入力された入力値との一次結合を算出し、算出された一次結合を前記遅延手段に入力する演算手段と、前記演算手段を制御し、前記一次結合における前記出力値の係数と前記一次結合における前記入力値の係数とを演算回数に応じて変化させる係数制御手段とを備え、前記係数制御手段は、前記演算手段が前記外部から入力された入力値の近似的な平均値を算出するよう前記係数を変化させた後、前記演算手段に特定のフィルタ動作を実行させるための値に前記係数を設定することを特徴としている。
上記構成によれば、上記演算手段は、上記特定のフィルタ動作を開始するまで、外部から入力された入力値の近似的な平均値を算出するよう動作する。また、上記構成によれば、上記遅延手段に記憶される値は、上記演算手段により算出された上記平均値に、順次更新されていく。従って、上記演算手段が上記特定のフィルタ動作を開始する時点では、上記遅延手段には入力値の近似的な平均値が記憶されていることになる。従って、上記構成によれば、分散(揺らぎ)の大きいデータを入力値として与えられた場合でも、上記特定のフィルタ動作により遅延手段に記憶されている値を平均値程度に収束させるのに必要な時間を短縮するという効果を奏する。
本発明に係るフィルタ装置においては、前記演算手段は係数可変な乗算手段を含み、前記係数制御手段は、前記乗算手段の係数を制御し、前記一次結合における前記出力値の係数と前記一次結合における前記入力値の係数とを設定することが好ましい。
上記構成によれば、複数のスイッチ素子などを設けることなく、上記係数制御手段による上記係数の設定を実現することができる。すなわち、上記構成によれば、上記フィルタ装置を構成する電気回路における部品点数の削減し、また半導体集積回路における回路規模およびチップサイズの削減し、さらには上記フィルタ装置の消費電力を削減するという更なる効果を奏する。
本発明に係るフィルタ装置においては、前記演算手段は、前記出力値に係数を乗じ、積を出力する乗算手段と、前記積と前記入力値を加算し、和を前記遅延手段に入力する加算手段とを含むことが好ましい。
上記構成によれば、少ない部品点数で容易にフィルタ装置を構成することが可能であり、部品コストおよび製造コストの削減ができるという更なる効果を奏する。
本発明に係るフィルタ装置においては、前記演算手段は、前記入力値から前記出力値を減算し、差を出力する減算手段と、前記差に係数を乗じ、積を出力する乗算手段と、前記積と前記入力値とを加算し、和を前記遅延手段に入力する加算手段とを含むことが好ましい。
上記構成によれば、ひとつの乗算手段によりフィルタ装置を構成することが可能であり、装置の小型化を実現できるという更なる効果を奏する。
本発明に係るフィルタ装置においては、前記演算手段は、前記入力値に第1の係数を乗じ、第1の積を出力する第1の乗算手段と、前記入力値と前記第1の積とを加算し、和を出力する加算手段と、前記和に第2の係数を乗じ、第2の積を前記遅延手段に入力する第2の乗算手段とを含むことが好ましい。
上記構成によれば、上記係数制御手段により上記第1の係数をゼロに制御することで、遅延手段の値をゼロに設定することができる。従って、上記構成によれば、例えば揮発性メモリのような値を入力することにより記憶内容をクリアできない記憶手段であっても、上記遅延手段として用いることが可能になるという更なる効果を奏する。
本発明に係るフィルタ装置は、以上のように、入力された値を記憶し遅延して出力する遅延手段と、前記遅延手段から出力された出力値と外部から入力された入力値との一次結合を算出し、算出された一次結合を前記遅延手段に入力する演算手段と、前記演算手段を制御し、前記一次結合における前記出力値の係数と前記一次結合における前記入力値の係数とを演算回数に応じて変化させる係数制御手段とを備え、前記係数制御手段は、前記演算手段が前記外部から入力された入力値の平均値を算出するよう前記係数を変化させた後、前記演算手段に特定のフィルタ動作を実行させるための値に前記係数を設定する。
従って、上記演算手段が上記特定のフィルタ動作を開始する時点では、上記遅延手段には入力値の平均値が記憶される。このため、上記構成によれば、分散(揺らぎ)の大きいデータを入力値として与えられた場合でも、上記特定のフィルタ動作により遅延手段に記憶されている値を平均値程度に収束させるのに必要な時間を短縮することができる。
以下、本発明の一実施形態について、図面を参照しながら説明する。
はじめに、図1に基づいて、本実施形態に係るフィルタ装置1の骨子について説明する。図1は、本実施形態に係るフィルタ装置100の概略構成を説明するための回路図である。
図1に示したように、フィルタ装置100は、少なくとも、遅延手段101と演算手段102と係数制御手段103とを備えている。
遅延手段101は、入力された値を記憶し、単位時間(1クロック)遅延して出力する。すなわち、遅延手段101は、時刻t(n−1)おいて入力された値w(n−1)を記憶し、時刻t(n)において記憶している値w(n−1)を出力する。
演算手段102は、時刻t(n)において、外部から与えられた入力値x(n)と、遅延手段が出力する出力値w(n−1)とから、値w(n)を算出する。そして、演算手段102は、算出された値w(n)を遅延手段101に入力し、遅延手段101は、入力あれた値w(n)を記憶する。換言すれば、演算手段102は、遅延手段101に記憶された値w(n−1)を、演算の結果得られた値w(n)に更新する。また、演算された値w(n)は、出力値y(n)として外部へ出力される。
フィルタ装置100は、上述した時刻t(n)における処理を、単位時間毎に繰り返し実行する。これにより、フィルタ装置100は、データ{x(0)、x(1)、・・・、x(n)、・・・}を順に取得し、遅延手段101に記憶される値{w(0)、w(1)、・・・、w(n)、・・・}を順に演算し、データ{y(0)、y(1)、・・・、y(n)、・・・}を順に出力するフィルタとして機能する。
なお、時刻t(0)において実行される演算においては、遅延手段101に予め記憶されていた値w(−1)が参照される。すなわち、演算手段102は、時刻t(0)において、遅延手段101に予め記憶されていた値w(−1)と、外部から入力された入力値x(0)とから、値w(0)を算出して遅延手段101に記憶する。
次に、この演算手段102が行う演算の内容について説明する。演算手段102は、時刻t(n)において、入力値x(n)と、時刻t(n−1)に遅延手段101に記憶された値w(n−1)とから、与えられた入力値x(n)と遅延手段101の出力値w(n−1)との一次結合
w(n)=A(n)x(n)+B(n)w(n−1)
を算出する。ここで、各時刻に演算される一次結合において、入力値x(n)に乗ぜられる係数A(n)、および、遅延手段101の出力値w(n−1)に乗ぜられる係数B(n)は可変であり、後述する係数制御手段103によりその値を制御されている。
なお、上記表式は、演算手段102が行う演算が、遅延手段101から出力された出力値w(n)と外部から入力された入力値x(n)の一次結合を結果的に算出することを特定しているに過ぎず、その具体的な算出方法について何ら限定を加えるものではない。すなわち、演算手段102は、入力値x(n)に係数Aを乗じ第1の積を演算し、遅延手段101に記憶された値w(n−1)に係数Bを乗じ第2の積を演算し、これに引き続き上記第1の積と第2の積とを加算して和を求める手段であって良いのはもちろんのこと、加算、減算、乗算、除算の全部または一部を他の順序で行い、上記一次結合を算出する手段であっても良い。このような演算手段102は、与えられた2つの値を加算して和を出力する加算手段、与えられた値に特定の係数を乗じて積を出力する乗算手段、与えられた第1の値から第2の値を減算して差を出力する減算手段、の一部または全部を含む演算回路として実現することができる。演算手段102が実行する演算の具体的な方法、すなわち、演算手段102の具体的な回路構成については、実施例として後述する。
次に、係数制御手段103について説明する。係数制御手段103は、演算手段102を制御し、演算手段102の演算回数に応じて、演算手段102が出力する一次結合において入力値x(n)の係数A(n)と、遅延手段101が出力する出力値w(n−1)の係数B(n)とを変化させる。
具体的には、係数制御手段103は、演算手段102に含まれる係数可変な乗算手段を制御し、当該乗算手段が乗ずる係数を変化させる。ここで、係数可変な乗算手段としては、ビットシフト回路を用いることが好ましい。また、このとき、係数制御手段103は、当該ビットシフト回路のシフト量を制御し、ビットシフト回路が入力値に乗ずる係数を変化させることが好ましい。このように、演算手段102は乗算手段としてビットシフト回路を含み、係数制御手段103は当該ビットシフト回路のシフト量を制御する構成とすることで、小型かつ低消費電力なフィルタ装置100を実現することができる。
次に、フィルタ装置100の動作に関して説明する。フィルタ装置100は、時刻t(0)において初期化動作を行って、時刻t(1)から通常のフィルタ動作(通常動作)を行うことも可能であるし、あるいは、時刻t(0)〜t(m−1)まで後述する平均化動作を行って、時刻t(m)から通常動作を開始しても良い。
はじめに、平均化動作について説明する。
時刻t(0)から時刻t(m−1)までの各時刻t(n)において(ここで、nは0以上m−1以下の自然数)、演算手段102は、遅延手段101に記憶されている値w(n−1)を、当該時刻t(n)までに入力された入力値{x(0)、x(1)、・・・、x(n)}の平均値に書き換える動作を行う。ここで、係数制御手段103は、各時刻t(n)において、演算手段102が当該時刻t(n)までに入力された入力値の平均値を出力するよう、当該時刻t(n)における係数A(n)と係数B(n)とを設定する。
具体的には、例えば、係数制御手段103は、時刻t(n)において係数A(n)を1/(n+1)に設定し、係数B(n)をn/(n+1)に設定する。このように係数を設定することで、時刻t(0)においては、
w(0)=x(0)
が算出され、時刻t(1)においては、
w(1)=1/2・x(1)+1/2・w(0)
={x(1)+x(0)}/2
が算出され、時刻t(2)においては、
w(2)=1/3・x(2)+2/3・w(1)
={x(2)+x(1)+x(0)}/3
が算出される。一般に、時刻t(n)において(ここで、nは1以上m−1以下)は、
w(n)=1/(n+1)・x(n)+n/(n+1)・w(n−1)
={x(n)+x(n−1)+・・・+x(0)}/(n+1)
すなわち、時刻t(n)までに入力された入力値{x(0)、x(1)、・・・、x(n)}の平均値が算出される。ここで、時刻t(0)における平均化動作は、演算手段102が、遅延手段101に予め記憶されていた値w(−1)を、入力値x(0)に書き換える初期化動作に相当する。
なお、ここでは、演算手段102が入力値の厳密な平均値を算出するよう、係数制御手段103が係数A(n)と係数B(n)とを設定する場合について説明したが、本発明はこれに限定されるものではない。すなわち、係数制御手段103は、演算手段102が当該時刻t(n)までに入力された入力値の近似的な平均値を算出するよう、係数A(n)と係数B(n)とを設定するものであっても良い。ここで、近似的な平均値とは、入力値の真の平均値との差が、入力値の分散の大きさ(ゆらぎ)と比べ小さくなる値を意味する。係数A(n)および係数B(n)は、この範囲のなかで、演算手段102の実装に応じて、要求されるフィルタ特性に応じて、あるいは、想定される入力されるデータの特性に応じて、他の値に設定されても良い。
時刻t(m)における平均化動作を完了した時点で、遅延手段102には時刻t(m)までに入力された入力値{x(0)、x(1)、・・・、x(m)}の平均値(あるいは、近似的な平均値)が記憶される。そして、平均化動作が完了すると、通常のフィルタ動作(通常動作)が実行される。
すなわち、時刻t(m)において、係数制御手段103は、係数A(m)と係数B(m)とを、予め定められた特定の値に設定する。この値は、フィルタ装置100に要求される性能に応じて設計時に定められた値である。そして、演算手段102は、時刻t(m)以後、所定のフィルタ動作を実現するべく、時刻t(m)において設定された係数による演算を繰り返し実行する。
平均化動作を完了した時点で、すなわち通常動作を開始する時点で、遅延手段101には時刻t(m)までに入力された入力値{x(0)、x(1)、・・・、x(m)}の平均値(あるいは、近似的な平均値)が記憶されている。従って、フィルタ装置100は、通常動作開始直後から、所定のフィルタ特性を実現することができる。しかも、フィルタ装置100においては、上記平均化動作が、通常動作とは独立に、通常動作に先立って行われる。従って、フィルタ装置100においては、通常動作における係数A(m)とB(m)との設定によらずに、通常動作開始直後から、所定のフィルタ特性を得ることができる。すなわち、フィルタ装置100においては、フィルタ特性の設定の自由度を阻害することなく、所定のフィルタ特性を得るまでに必要な時間を短縮することができる。
次に図2に基づいて、本実施形態に係るフィルタ装置の具体的な回路構成について説明する。図2は、本実施形態に係るフィルタ装置の一実施例であるフィルタ装置200の回路図である。
図2に示したように、フィルタ装置200は、遅延手段201、演算手段202、演算手段202の後段に配された乗算手段203、および、係数制御手段204を備えている。
遅延手段201は、与えられた値を記憶し単位時間(1クロック)遅延して出力する。すなわち、遅延手段201は、時刻t(n−1)おいて与えられた値w(n−1)を記憶し、時刻t(n)において記憶している値w(n−1)を出力する。
演算手段202は、時刻t(n)において、与えられた入力値x(n)と、遅延手段が出力する出力値w(n−1)とから、他の値w(n)を演算し、得られた値を遅延手段201に記憶させる。
図2に示したように、フィルタ装置200における演算手段202は、第1の乗算手段202aと第2の乗算手段202bと加算手段202cとを備えている。演算手段202に与えられた入力値x(n)は、乗算手段202aに入力される。乗算手段202aは、与えられた入力値x(n)に係数γ(n)を乗じ、積γ(n)x(n)を加算手段202cに出力する。一方、乗算手段202bは、遅延手段201から与えられた値w(n−1)に係数α(n)を乗じ、積α(n)w(n−1)を加算手段202c出力する。加算手段202cは、乗算手段202aから与えられた値γ(n)x(n)と乗算手段202aから与えられた値α(n)w(n−1)とを加算し、和
w(n)=γ(n)x(n)+α(n)w(n−1)
を出力する。加算手段202cは、上記加算により得られた値w(n)を遅延手段201に記憶させる。すなわち、演算手段202は、与えられた入力値x(n)と、遅延手段が出力する出力値w(n−1)との一次結合w(n)を算出し、算出された値を遅延手段201に記憶させる。
また、図2に示したように、演算手段202から出力された値w(n)は、乗算手段203に渡される。乗算手段203は、演算手段202から出力された値w(n)に係数β(n)を乗じ、積β(n)w(n)を出力y(n)として外部に出力する。
上述した乗算手段202a、乗算手段202b、および、乗算手段203は、例えばビットシフト回路により構成される係数可変な乗算手段であり、各乗算手段が乗ずる係数は係数制御手段204により制御可能になっている。ここで、係数制御手段204は、少なくとも通常のフィルタ動作時(通常動作時)においては、乗算手段202bの係数がα(n)であるとき、乗算手段202aの係数γ(n)を1/{1−α(n)}に一致するように制御し、乗算手段203の係数β(n)を{1−α(n)}に一致するように制御する。係数γ(n)および係数β(n)をこのように制御することにより、フィルタ装置200への入力強度と出力強度とを等しくすることができる。
フィルタ装置200は、通常のフィルタ動作(通常動作)時に、例えば、α(n)=0.95、β(n)={1−α(n)}=0.05、γ(n)=1/{1−α(n)}=20と設定され、ノイズ除去フィルタとして機能する。
係数制御手段204による係数設定の具体例を図3、および、図4に示した。
図3は、係数制御手段204により設定される係数α(n)の値の変化の一例を示すグラフである。図3に示した例においては、時刻t(0)において初期化動作が実行され、直後の時刻t(1)から通常のフィルタ動作(通常動作)が実行される。すなわち、初期化手段205から初期化を指示する初期化信号を受信すると、係数制御手段204は、乗算手段202bの係数α(0)を0に設定し、乗算手段203の係数β(0)を{1−α(0)}=1に設定し、乗算手段202aの係数γ(0)を1/{1−α(0)}=1に設定する。そして、時刻t(0)において上記係数による演算が終了した後、係数制御手段204は、乗算手段202bの係数α(1)を0.95に設定し、乗算手段203の係数β(1)を{1−α(1)}=0.05に設定し、乗算手段202aの係数γ(1)を1/{1−α(1)}=20に設定する。これにより、演算手段202は、時刻t(0)において、遅延手段201に予め記憶されていた値w(−1)を、入力値x(0)に書き換え、その後、時刻t(1)において、遅延手段201にx(0)が初期値として記憶された状態で、通常のフィルタ動作を開始することができる。
図4は、係数制御手段204により設定される係数α(n)の値の変化の他の例を示すグラフである。図4に示した例においては、時刻t(0)〜時刻t(m−1)において平均化動作が実行され、その後の時刻t(m)から通常のフィルタ動作(通常動作)が実行される。すなわち、時刻t(0)から時刻t(m−1)までの各時刻t(n)において(ここで、nは0以上m−1以下の自然数)、演算手段202は、遅延手段201に記憶された値w(n−1)を、当該時刻t(n)までに入力された入力値{x(0)、x(1)、・・・、x(n)}の近似的な平均値に書き換える動作を行う。これにより、演算手段202は、遅延手段201に記憶された入力値{x(0)、x(1)、・・・、x(m−1)}の近似的な平均値を初期値として、時刻t(m)において通常のフィルタ動作を開始することができる。
この方法によれば、時刻t(m)において遅延手段201に記憶されている通常動作の初期値は、複数の入力値{x(0)、x(1)、・・・、x(m−1)}を参照して決定される。従って、入力信号(入力値)の分散(ゆらぎ)が大きく、遅延手段201に記憶される値を通常動作によって平均値近傍に収束させるのに時間を要することが予測される入力データに対しても、通常動作に先立って実行される平均化動作によって、遅延手段201に記憶される値を平均値近傍に短時間で収束させることができる。
次に図5に基づいて、本実施形態に係るフィルタ装置の他の実施例について説明する。図5は、本実施形態に係るフィルタ装置の他の実施例であるフィルタ装置500の回路構成を示す回路図である。フィルタ装置500は、図2に示したフィルタ装置200と比べ、乗算手段を1個に減らし、フィルタ装置を小型化したことを特徴としている。
図5に示したように、フィルタ装置500は、遅延手段501、演算手段502、および係数制御手段503を備えている。
遅延手段501は、与えられた値を記憶し単位時間(1クロック)遅延して出力する。すなわち、遅延手段201は、時刻t(n−1)おいて与えられた値w(n−1)を記憶し、時刻t(n)において記憶している値w(n−1)を出力する。
演算手段502は、時刻t(n)において、与えられた入力値x(n)と、遅延手段が出力する出力値w(n−1)とから、他の値w(n)を演算し、得られた値を遅延手段501に記憶させる。
図5に示したように、フィルタ装置500における演算手段502は、減算手段502a、乗算手段502b、および、加算手段502cを備えている。演算手段502に与えられた入力値x(n)は、減算手段502aに入力される。減算手段502aは、与えられた入力値x(n)から遅延手段501により出力された値w(n−1)を減算し、差x(n)−w(n−1)を、乗算手段502bに出力する。乗算手段502bは、減算手段502aにより出力された値に係数{1−α(n)}を乗じ、積{1−α(n)}{x(n)−w(n−1)}を加算手段502cに出力する。加算手段502cは、遅延手段501により出力された値w(n−1)と乗算手段502bにより出力された積{1−α(n)}{x(n)−w(n−1)}とを加算し、和
w(n)={1−α(n)}{x(n)−w(n−1)}+w(n−1)
すなわち、
w(n)={1−α(n)}x(n)+α(n)w(n−1)
を出力する。加算手段502cは、得られた値w(n)を遅延手段501に記憶させる。すなわち、演算手段502は、与えられた入力値x(n)と、遅延手段501が出力する出力値w(n−1)との一次結合を算出し、得られた値を遅延手段501に記憶させる。また、演算手段502は、得られた一次結合を、出力y(n)として外部に出力する。
上述した乗算手段502bは、例えばビットシフト回路により構成される係数可変な乗算手段であり、乗算手段502bが乗ずる係数は係数制御手段503により制御可能になっている。係数制御手段503は、初期化手段504から初期化を指示する初期化信号を受信すると、乗算手段502bが乗ずる係数{1−α(n)}を1に設定する。これにより、演算手段502が遅延手段501に記憶させる値はw(0)=x(n)となる。すなわち、遅延手段501に動作開始以前に記憶されていた値はクリアされ、新たに入力値x(0)が遅延手段501に記憶される。
係数制御手段503は、初期化動作終了後、演算手段502に直ちに通常動作を開始させるべく、乗算手段502bが乗ずる係数{1−α(n)}をフィルタ動作のための所定の値に設定しても良いし、あるいは、演算手段502に入力値の平均値を演算する平均化動作を実行させるべく、演算回数に応じて係数{1−α(n)}を順次変化させていっても良い。
平均化動作を実行する場合、係数制御手段503は、例えば、時刻t(n)における係数{1−α(n)}を、1/(n+1)に設定する。これにより、演算手段502は、各時刻t(n)において、それまでに入力された入力値{x(0)、x(1)、・・・、x(n)}の平均値を算出し、遅延手段501に記憶させることができる。また、係数制御手段503は、例えば、時刻t(n)における係数{1−α(n)}を、α(n)が図4に示したグラフを満足するように設定しても良い。れにより、演算手段502は、各時刻t(n)において、それまでに入力された入力値{x(0)、x(1)、・・・、x(n)}の近似的な平均値を算出し、遅延手段501に記憶させることができる。
なお、本実施例で示したフィルタ装置500は、図2に示したフィルタ装置200と比べ、乗算手段を1個に減らしている。このため、加減算手段に比べて乗算手段の規模が大きい場合にも、装置の小型化を達成することが可能である。
次に図6に基づいて、本実施形態に係るフィルタ装置のさらに他の実施例について説明する。図6は、本実施形態に係るフィルタ装置のさらに他の実施例であるフィルタ装置600の回路構成を示す回路図である。
図6に示したように、フィルタ装置600は、遅延手段601、演算手段602、および係数制御手段603を備えている。
遅延手段601は、与えられた値を記憶し単位時間(1クロック)遅延して出力する。すなわち、遅延手段601は、時刻t(n−1)おいて与えられた値w(n−1)を記憶し、時刻t(n)において記憶している値w(n−1)を出力する。
演算手段602は、時刻t(n)において、与えられた入力値x(n)と、遅延手段が出力する出力値w(n−1)とから、他の値w(n)を演算し、得られた値を遅延手段601に記憶させる。
図6に示したように、フィルタ装置600における演算手段602は、乗算手段602a(第1の乗算手段)、加算手段602b、および、乗算手段602c(第2の乗算手段)を備えている。演算手段602に与えられた入力値x(n)は、乗算手段602aに入力される。乗算手段602aは、与えられた入力値x(n)に係数β(n)(第1の係数)を乗じ、積β(n)x(n)(第1の積)を加算手段602bに出力する。加算手段602bは、乗算手段602aにより与えられた積β(n)x(n)と、遅延手段601により出力された出力値w(n−1)とを加算し、和β(n)x(n)+w(n−1)を乗算手段602cに出力する。乗算手段602cは、加算手段602bにより出力された値に係数α(n)(第2の係数)を乗じ、積(第2の積)
w(n)=α(n){β(n)x(n)+w(n−1)}
すなわち、
w(n)=α(n)β(n)x(n)+α(n)w(n−1)
を算出する。乗算手段602cは、得られた値w(n)を遅延手段601に記憶させる。すなわち、演算手段602は、与えられた入力値x(n)と、遅延手段601が出力する出力値w(n−1)との一次結合w(n)を算出し、得られた値を遅延手段601に記憶させる。また、演算手段602は、得られた一次結合w(n)を、出力y(n)として外部に出力する。
上述した乗算手段602aおよび乗算手段602cは、例えばビットシフト回路により構成される係数可変な乗算手段であり、各乗算手段が乗ずる係数は係数制御手段603により制御可能になっている。ここで、係数制御手段603は、少なくとも通常のフィルタ動作実行時には、乗算手段602cの係数がα(n)であるとき、乗算手段602aの係数β(n)を{1−α(n)}/α(n)に一致するように制御する。これにより、フィルタ装置200への入力強度と出力強度とを等しくすることができる。
係数制御手段603は、時刻t(−1)において、初期化手段604から初期化を指示する初期化信号を受信すると、乗算手段602cが乗ずる係数α(−1)を0に設定する。これにより、演算手段602が遅延手段601に記憶させる値はw(0)=0となる。すなわち、遅延手段601に動作開始以前に記憶されていた値はゼロクリアされる。
係数制御手段603は、初期化動作終了後、演算手段602に直ちに通常動作を開始させるべく、各乗算手段が乗ずる係数をフィルタ動作のための所定の値に設定しても良いし、あるいは、演算手段602に入力値の平均値を演算する平均化動作を実行させるべく、演算回数に応じて係数α(n)およびβ(n)を順次変化させていっても良い。
平均化動作を実行する場合、係数制御手段603は、例えば、時刻t(n)における係数α(n)を図7に示したグラフに従って制御し、時刻t(n)における係数β(n)を図7に示したグラフに従って制御すれば良い。れにより、演算手段602は、各時刻t(n)において、それまでに入力された入力値{x(0)、x(1)、・・・、x(n)}の近似的な平均値を算出し、遅延手段602に記憶させることができる。
なお、本実施例で示したフィルタ装置600では、例えば揮発性メモリのような初期化入力ではクリアが出来ない記憶手段を遅延手段601に使用した場合でも、係数制御手段603により乗算手段602cの乗ずる係数を制御することにより、遅延手段601に記憶されていた値をクリアすることができる。
本発明は上述した各実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能であり、異なる実施形態にそれぞれ開示された技術的手段を適宜組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
本発明は、IIRフィルタ装置に適用することが可能であり、特にノイズ除去フィルタ装置等に好適に利用することが可能である。
本発明の実施形態を示すものであり、フィルタ装置の概略構成を示す回路図である。
本発明の一実施例を示すものであり、フィルタ装置の回路図である。
本発明の一実施例を示すものであり、図5に示したフィルタ装置における乗算手段の係数の変化を表すグラフである。
本発明の一実施例を示すものであり、図5に示したフィルタ装置における乗算手段の他の係数変化を表すグラフである。
本発明の一実施例を示すものであり、他のフィルタ装置の回路図である。
本発明の一実施例を示すものであり、他のフィルタ装置の回路図である。
本発明の一実施例を示すものであり、図6に示したフィルタ装置における乗算手段の係数変化を表すグラフである。
従来技術を示すものであり、初期化動作が可能なフィルタ装置の回路図である。
符号の説明
100、200、500、600 フィルタ装置
101、201、501、601 遅延手段
102、202、502、602 演算手段
103、304、503、603 係数制御手段
205、504、604 初期化手段
202a、202b、203 乗算手段
202c 加算手段
502a 減算手段
502b 乗算手段
502c 加算手段
602a 乗算手段(第1の乗算手段)
602b 加算手段
602c 乗算手段(第2の乗算手段)