本発明の一実施形態について図1ないし図13に基づいて説明すると以下の通りである。すなわち、本実施形態に係る検出システム(デジタルフィルタ回路)1は、例えば、ハードディスクの動作音からハードディスクに異常が発生しているか否かなどを検出するためなどに好適に用いられるシステムであって、入力された音声信号の時間変化が予め定められたパターンに一致しているか否かを検出することができる。
以下では、上記検出システム1の構成について説明する前に、検出システム1が設けられたプログラマブル表示器を含む制御システムの概略構成および概略動作について簡単に説明する。すなわち、図2に示すように、本実施形態に係る制御システム501は、例えば、製造プラントなどに設けられたターゲットシステム502を制御するために好適に用いられており、例えば、ベルトコンベアー式の自動組付機など、当該ターゲットシステム502のデバイス(制御対象)502aを制御するために用いられている。
当該制御システム501には、上記デバイス502aを制御する制御装置としてのPLC511と、多くの場合、制御対象近傍に配されると共に、制御システム501のHMIとして、デバイス502aの状態を表示し、オペレータによるデバイス502aへの操作を受け付けるプログラマブル表示器512とを備えている。なお、当該プログラマブル表示器512は、PLCとしての機能も備えていてもよい。この場合、プログラマブル表示器512は、それぞれに対応するPLC511だけではなく、自らが制御するデバイス502aにも直接接続される。
さらに、本実施形態に係る制御システム501では、各プログラマブル表示器512は、イーサネット(登録商標)などのLAN(ローカルエリアネットワーク)513によって互いに接続されている。また、上記LAN513には、多くの場合、プログラマブル表示器512よりも離れた場所から、制御システム501全体を管理する制御用ホストコンピュータ514が接続されている。
なお、上記各プログラマブル表示器512は、シリアルケーブルなどを介して、それぞれに対応するPLC511と接続されている。また、図2では、説明の便宜上、LAN513にプログラマブル表示器512が2台接続され、各プログラマブル表示器512には、PLC511およびデバイス502aがそれぞれ1台ずつ接続されると共に、各PLC511にデバイス502aが1台接続されている場合を例示しているが、当然ながら、それぞれの接続台数は任意に設定できる。
また、デバイスは、デバイスアドレスや変数により特定可能で、しかも、状態を取得したり、制御(変更)できるものであれば、例えば、デバイス502a自体であってもよいし、例えば、PLC511やプログラマブル表示器512の記憶装置など、制御システム501に設けられた記憶装置の一領域を示していてもよい。
ここで、上記制御システム501では、制御システム501に必須の構成であり、しかも、HMIとして動作するため、演算能力に余力のあるプログラマブル表示器512が通信の大半を処理するように構成されている。さらに、各プログラマブル表示器512は、自らに接続されているPLC511の機種に固有の専用プロトコルと、LAN513での共通プロトコルとを変換して、他のプログラマブル表示器512や制御用ホストコンピュータ514とPLC511との通信を中継する。なお、共通プロトコルと専用プロトコルとの間のプロトコル変換には、同じ指示に同じコードが割り当てられるように予め定められた共通のコマンドと上記共通のコマンドに対応するPLC511固有のコマンドとの間の変換や、データやアドレスの表現方法の変換、デバイスアドレスと、当該デバイスアドレスに対応し、しかも、デバイスアドレスとは異なる値に設定可能な変数や変数の名称(変数名)との変換なども含まれる。
これにより、プログラマブル表示器512および制御用ホストコンピュータ514は、他のプログラマブル表示器512に接続されているPLC511の機種に拘らず、LAN513を介して共通のプロトコルで通信できる。この結果、互いに異なる機種のPLC511の混在する制御システム1が比較的容易に実現されている。
上記プログラマブル表示器512は、後述する画面データに基づいて、デバイスの状態を画面表示する際の動作や、画面への操作に応じてデバイスの状態を制御する際の動作を特定するものであって、PLC511と通信するPLC・IF部521と、上記LAN513に接続するためのLAN・IF部522と、例えば、液晶表示装置などからなるディスプレイ523と、ディスプレイ523の画面上に配されたタッチパネル524と、上記各部材521〜524を制御するHMI処理部525と、当該HMI処理部525によって参照され、上記画面データおよび後述する変数が格納される記憶部526とを備えている。
なお、上記各部材521〜525は、CPUなどの演算手段が、ROMやRAMなどの記憶手段に格納されたプログラムを実行し、タッチパネルや液晶表示装置などの入出力手段、あるいは、インターフェース回路などの通信回路を制御することによって実現される機能ブロックである。また、これらの部材のうち、各記憶部526は、RAMなどの記憶装置自体であってもよい。したがって、これらの手段を有するコンピュータが、上記プログラムを記録した記録媒体(例えば、CD−ROMなど)を読み取り、当該プログラムを実行するだけで、本実施形態に係るプログラマブル表示器512を実現できる。なお、例えば、LAN513、あるいは、他の通信路を介してプログラムをダウンロードするためのプログラムが、上記コンピュータに予めインストールされていれば、これらの通信路を介して、上記コンピュータへ上記プログラムを配付することもできる。
上記画面データは、画面上の領域と、当該領域への表示や入力に対応するデバイスとの対応関係を示すタグを組み合わせて構成されている。本実施形態では、HMI処理部525が複数の単位画面を切り換え表示可能であり、上記タグは、当該タグが有効となる単位画面を示すファイル番号と、単位画面上で実行すべき動作内容を特定する事象名と、各事象毎に参照される参照情報とを含んでいる。
例えば、上記タグが所定の画面領域(表示座標範囲)へ所定のデバイスの状態に応じた部品図形を表示する表示タグの場合、上記参照情報には、表示座標範囲と、デバイスを特定可能な変数(後述)と、例えば、部品図形がスイッチの場合、ONを示す図形のファイルおよびOFFを示す図形のファイルなど、表示時に参照するファイル番号とが含まれる。さらに、タグが入力タグの場合、参照情報として、有効入力座標範囲と、入力結果が書き込まれるデバイスの変数とが含まれる。
また、記憶部526には、変数のための領域(変数領域)が設けられており、当該変数領域には、各変数について、変数の名称(変数名)と、変数に対応するデバイス502aまたは内部メモリを特定するための情報(例えば、アドレスなど)と、変数の内容との組み合わせが記憶されている。なお、本実施形態では、変数に対応するデバイス502aの機種に拘わらず、変数の内容を格納する際の表現方法(例えば、ワード長や符号の有無、あるいは、BCD/2進表記など)が予め定められた表現方法に統一されており、変数が実在のデバイス502aに対応する場合、記憶部526には、実際の機種での表現方法も格納されている。この場合、HMI処理部525は、PLC・IF部521を介してデバイス502aの状態を取得あるいは制御する際、表現方法を形式変換して、格納時の表現方法を統一する。
一方、上記HMI処理部525は、所定の時間間隔で、記憶部526に格納された画面データから、ベース画面のファイル番号が、現在表示中のベース画面である表示タグを抽出する。さらに、HMI処理部525は、記憶部526の変数領域を参照して、タグに対応する変数の内容を読み出し、内容に応じた部品図形をディスプレイ23に表示する。ここで、PLC・IF部521に接続されたPLC511により制御されるデバイス2aに、上記変数が対応している場合、HMI処理部525は、PLC・IF部521によるPLC511との通信によって、デバイス502aの状態を取得し、上記変数の内容を当該状態に応じて更新している。これにより、ディスプレイ523には、デバイス502aの状態が表示される。
なお、変数が他のプログラマブル表示器512に接続されたPLC511によって制御されるデバイス502aの場合、HMI処理部525は、LAN・IF部522、LAN513および他のプログラマブル表示器512を介して当該PLC511と通信するなどして、デバイスの状態を取得し、それに応じて変数の内容を更新する。
また、タッチパネル524への押し操作など、オペレータの入力操作を受け付けると、HMI処理部525は、上記画面データから、現在表示中のベース画面に対応し、当該入力操作にマッチする入力タグを検索すると共に、入力結果に応じて、タグに対応する変数の内容を更新する。さらに、HMI処理部525は、デバイス502aの状態を取得する場合と略同様に、PLC511やプログラマブル表示器512と通信するなどして、上記変数の内容に応じて、デバイス502aの状態を制御させる。ここで、入力操作の後も、HMI処理部525は、デバイス502aの状態を画面表示するので、操作結果が画面表示に反映される。
加えて、HMI処理部525は、例えば、他のプログラマブル表示器512や制御用ホストコンピュータ514など、LAN513に接続された機器から自らに接続されたPLC511のデバイス502aへの制御指示を受け取った場合や、これとは逆に、上記機器へ報告すべきデバイス502aの状態を自らのPLC511から受け取った場合には、上述したプロトコル変換によって、LAN513での通信、および、PLC511との通信の間を中継できる。
これにより、プログラマブル表示器512は、画面データに基づいて、デバイスの状態を画面表示したり、画面への操作に応じてデバイスの状態を制御したりできる。
ここで、本実施形態に係るプログラマブル表示器512では、例えば、記憶部526として、ハードディスクドライブを採用しており、当該ハードディスクドライブは、故障が発生しそうなときに、通常とは異なる振動または異音が発生したり、あるいは、モータの回転周波数が通常とは異なるように変化したりすることがある。
一方、本実施形態に係るプログラマブル表示器512には、ハードディスクドライブなどの機器から発生する音、振動またはハードディスクドライブのモータの回転周波数に基づいて、機器に異常が発生しているか否かを判定する検出システム1が設けられている。なお、以下では、音に基づいて異常の有無を検出する構成について説明する。
具体的には、本実施形態に係る検出システム1は、入力端子Tinに入力される音声信号を処理するシステムであって、図1に示すように、複数のフィルタ部2…を備えている。当該入力端子Tinには、例えば、ADCが、上記検出対象の機器(この場合はハードディスクドライブ)からのアナログの音声信号を予め定められたサンプリング周波数(例えば、48kHzなど)でAD変換したデジタル値を入力するなどして、予めデジタル値に変換されたデジタル音声信号が入力されている。
各フィルタ部2は、それぞれ、入力された音声信号のうち、予め定められた周波数帯域の信号成分の大きさが、予め定められた閾値を超えているか否かを判定するものであって、予め定められた周波数帯域の信号成分を通過させるバンドパスフィルタ11と、当該バンドパスフィルタ11の出力値の絶対値(あるいは2乗平均)を取り、さらに、当該バンドパスフィルタ11の出力値の絶対値の移動平均値を算出する移動平均値算出部12と、当該移動平均値算出部12の出力値が予め定められた閾値を超えているか否かを判定する判定部13とを備えている。
本実施形態では、上述したように、音声信号は、デジタル信号として入力されており、上記バンドパスフィルタ11は、詳細は後述するように、FIRデジタルフィルタによって実現されている。
上記各フィルタ部2は、上記周波数帯域および閾値を互いに独立して設定可能であり、それぞれの周波数帯域、および/または、閾値を互いに異なって設定できる。さらに、上記各フィルタ部2は、例えば、バンドパスフィルタ11のフィルタ係数列の指定、あるいは、閾値の指定などによって、上記周波数帯域および閾値の設定指示も受け付けることができる。
また、本実施形態に係る上記各バンドパスフィルタ11は、予め定められた周波数(通常周波数)で動作するだけではなく、それよりも低い周波数(ダウンサンプリング時の周波数)で動作することもできる。これにより、バンドパスフィルタ11の通過帯域を低い周波数に設定する場合であっても、フィルタ係数列の系列長が長くなることを抑えることができる。さらに、本実施形態に係る検出システム1は、通常周波数とダウンサンプリング時の周波数との比率を、外部からの指示に応じて変更できる。
また、本実施形態に係る検出システム1には、入力側ローパスフィルタとしてのローパスフィルタ3が設けられており、上記各バンドパスフィルタ11は、通常周波数でサンプリングする場合には、元の音声信号(入力端子Tinに入力される音声信号)を入力信号として動作し、ダウンサンプリング時の周波数でサンプリングする場合には、当該ローパスフィルタ3を介した音声信号を入力信号として動作することができる。
ここで、サンプリング時には、サンプリング周波数の1/2以上の周波数の情報が失われる。したがって、エイリアシング誤差の発生を防止するために、サンプリング周波数の1/2以上の周波数の成分を予め除去しておくことが望ましい。ただし、サンプリング周波数が通常周波数の場合と、ダウンサンプリング時の周波数の場合とでは、除去すべき周波数帯域が異なるため、検出システム1に入力される音声信号から、ローパスフィルタによって、予め定められた低周波成分を除去すると、通常周波数の場合は、適切にエイリアシング誤差の発生を防止できたとしても、ダウンサンプリング時の周波数の場合には、エイリアシング誤差が発生してしまったり、ダウンサンプリング時の周波数の場合は、適切にエイリアシング誤差の発生を防止できたとしても、通常周波数の場合には、信号成分の一部が除去されてしまったりする。
ところが、本実施形態に係る検出システム1では、各バンドパスフィルタ11が、入力信号として、ローパスフィルタ3の出力信号か、元の音声信号かの一方を選択するので、いずれの場合であっても、エイリアシング誤差の発生を適切に防止できる。
ここで、上記ローパスフィルタ3は、各バンドパスフィルタ11毎に設けられていてもよいが、本実施形態に係る検出システム1では、回路規模を縮小するために、図1に示すように、ローパスフィルタ3が各バンドパスフィルタ11に共通に設けられている。
加えて、上記検出システム1は、各フィルタ部2からの出力信号(より詳細には、各判定部13の判定結果)の時間変化が、予め定められたパターンにマッチしているか否かを判定するマッチング処理部4を備えており、マッチした場合、真を示す最終検出結果信号Qを出力できる。
ここで、上述したように、機器に故障が発生しようとする場合、例えば、通常とは異なる振動または異音が発生したり、あるいは、モータの回転周波数が通常とは異なるように変化したりすることがある。また、故障が発生しようとする場合、これらの音、振動、あるいは、モータの回転周波数などは、時間と共に予め定められたパターンに従って変化することがある。なお、機器を熟知している人物であれば、これらの音、振動、あるいは、モータの回転周波数の変化などから、故障が発生するか否かを予見できることがあるが、一般的な人物が、これらに基づいて、故障の発生を予見することは難しい。
ところが、上記検出システム1は、各フィルタ部2からの出力信号(より詳細には、各判定部13の判定結果)の時間変化が、予め定められたパターンにマッチしているか否かを判定している。したがって、機器を熟知していない人物、あるいは、機械であっても、機器に故障が発生しそうな状態か否か(異常状態であるか否か)を予め判断でき、機器の予知保全が可能になる。
より詳細には、本実施形態に係るマッチング処理部4は、パターンの開始を検出していない初期状態から、パターンマッチを検出した最終状態までに経由すべき状態として、1または複数の状態を設定できる。また、上記マッチング処理部4は、各状態には、次の状態へ移るために必要なイベントとして、「各フィルタ部2の出力信号のうちの予め定められたフィルタ部2の検出結果が真である」ことを設定できる。
これにより、ある状態になった時点から他の状態へ遷移するためのイベントの発生を検出するまでに、他のイベントの発生を検出したか否か、あるいは、ある状態になった時点から他の状態へ遷移するためのイベントの発生を検出するまでの経過時間に拘らず、検出システム1は、各フィルタ部2からの出力信号の時間変化が、予め定められたパターンにマッチしていれば、真を示す最終検出結果信号Qを出力できる。
さらに、本実施形態に係るマッチング処理部4は、例えば、パターンの開始を検出してからの経過時間などによって、次の状態へ移るために必要なイベントの発生を待ち受ける期間を各状態に対して予め設定でき、それ以外の期間に発生したイベントを無視したり、例えば、初期状態に戻る処理(初期化処理)など、予め定められた処理を行うことができる。これにより、各フィルタ部2からの出力信号の時間変化を、順序だけではなく、各状態間の時間間隔によっても特定することができ、より的確にパターンを記述できる。
また、本実施形態に係るマッチング処理部4は、各状態に対して、初期状態へ戻るためのイベントを設定できる。これにより、例えば、検出結果が真になるのを待ち受けているフィルタ部2以外のフィルタ部2の検出結果が真になった場合、初期化したり、待ち受ける期間よりも前の時点、あるいは、後の時点で検出した場合、初期化したりすることができる。
これにより、パターンにマッチしないと判定した場合、初期状態に戻らせることができ、より的確にパターンを記述できる。また、マッチング処理部4は、各状態において、予め定められたタイムアウト期間が経過しても、待ち受けたイベントが起こらなかった場合、パターンマッチングの処理を初期化できる。この結果、途中の状態で待ち受け続けることを防止でき、安定して、入力された音声信号の時間変化が予め定められたパターンに一致しているか否かを検出できる。
さらに、本実施形態に係るマッチング処理部4は、Match_EN信号に応じて、パターンマッチング処理を行うか否かを決定でき、Match_EN信号を無効に設定すれば、マッチング処理部4によるパターンマッチング処理を停止させることができる。
以下では、図3および図4を参照しながら、マッチング処理部4の構成例について説明する。すなわち、本構成例に係るマッチング処理部4は、図3に示すように、検出すべきパターンの情報を記憶するレジスタ21と、現在の状態を記憶する状態カウンタ22と、パターンの開始が検出されているか否か(パターンマッチング中か否か)を記憶するフリップフロップ23と、各フィルタ部2に対応して設けられ、それぞれに対応するフィルタ部2の出力信号および上記各部材21〜23の出力信号に基づいて、FilterOK信号、すなわち、現状態において、それに対応するフィルタ部2の出力信号が次の状態(初期状態から最終状態へのシーケンスの中で次の状態)に遷移することを阻止しない値であることを示す信号を生成する判定回路24と、FilterOK信号を含む各判定回路24の出力信号に基づいて、最終検出結果信号Qを生成すると共に、上記各部材22〜23を制御する制御回路25とを備えている。
上記レジスタ21には、図4に示すように、各フィルタ部2に関連付けて、シーケンス記憶領域が設けられており、当該シーケンス記憶領域には、各状態S0〜S7に関連付けて、その状態のときに、そのフィルタ部2に対応する判定回路24が当該フィルタ部2の出力信号を判定するか否かを示すSqce_Conデータが記憶されている。なお、図4では、()内に対応するフィルタ部2の参照符号を図示している。
一方、判定回路24は、フリップフロップ23の出力信号がパターンマッチング中を示しており、しかも、自らに対応するフィルタ部2と状態カウンタ22の示す状態とに関連付けてレジスタ21に記憶されているSqce_Conデータが真(判定要)を示している場合は、フィルタ部2の出力信号(真/偽)に応じて、FilterOK信号の真/偽を変更できる。これとは逆に、フリップフロップ23の出力信号がパターンマッチング中を示していない場合、および、Sqce_Conデータが偽(判定不要)を示している場合は、フィルタ部2の出力信号に拘らず、真のFilterOK信号を出力できる。
さらに、上記制御回路25には、上記各判定回路24のFilterOK信号の論理積を演算するAND回路25aが設けられており、AND回路25aの出力信号は、状態カウンタ22のカウントアップ端子に印加されている。これにより、全てのFilterOK信号が、「現状態において、それに対応するフィルタ部2の出力信号が、次の状態に遷移することを阻止しない」ことを示している場合(真の場合)、状態カウンタ22に記憶されている、現状態を示すカウント値を、次の状態を示す値に変更できる。
なお、本構成例では、上記状態カウンタ22は、7ビットのシフトレジスタによって実現されており、上記AND回路25aの出力信号は、カウントアップ端子としてのシフト端子に接続されている。また、本構成例では、シフトレジスタの入力端子は、1に設定されており、シフト端子が真になる度に、初期状態を示す00hから、01h、03h、07h、…、7Fhのように、順次、出力値を変更できる。
また、本構成例では、上記AND回路25aの出力信号は、最終検出結果信号Qの波形整形(タイミング調整)のためにも使用されており、制御回路25に設けられたAND回路25bは、状態カウンタ22の出力信号が最終状態(S7)を示していることを示す最終状態信号と上記AND回路25aの出力信号との論理積を、最終検出結果信号Qとして出力している。なお、図3では、一例として、本構成例では、状態カウンタ22としてのシフトレジスタの出力信号の全ビットと、上記AND回路25aの出力信号との論理積との論理積を、最終検出結果信号Qとして出力しているが、例えば、最終状態を記憶するレジスタと、状態カウンタ22の出力信号との比較結果を、上記最終状態信号とすれば、制御回路が、レジスタの値を変更することで、状態の数を変更できる。
さらに、上記各判定回路24は、上記FilterOK信号に加えて、パターンの開始を示すMatch_St信号も出力することができ、自らに対応するフィルタ部2と初期状態とに関連付けて記憶されているSqce_Conデータが真を示している場合は、フィルタ部2の出力信号(真/偽)に応じて、当該Match_St信号の真/偽を変更できる。また、上記制御回路25には、上記各判定回路24のMatch_St信号の論理和を演算するOR回路25cが設けられており、OR回路25cの出力信号は、上記フリップフロップ23のセット端子に印加されている。これにより、上記各判定回路24のいずれかがパターンの開始を検出した場合、上記フリップフロップ23をパターンマッチング中を示す値にセットできる。
また、本構成例に係る各判定回路24は、上記FilterOK信号およびMatch_St信号に加えて、初期状態へ戻すことを示すMatch_Init信号も出力することができる。
具体的には、本構成例に係るレジスタ21には、各フィルタ部2毎に、タイムアウト時間を示すEV_Timeデータが記憶されている。また、自らに対応するフィルタ部2の出力信号が真になることを待ち受けている判定回路24、すなわち、自らに対応するフィルタ部2と状態カウンタ22の示す状態とに関連付けてレジスタ21に記憶されているSqce_Conデータが真(判定要)を示している判定回路24は、現在の状態になってから、EV_Timeデータが経過しても、自らに対応するフィルタ部2の出力信号が真にならない場合、真のMatch_Init信号を出力できる。
本構成例に係るマッチング処理部4では、予め定められた周期でカウントアップされると共に、上記各判定回路24のいずれかがパターンの開始を検出した場合にリセットされるタイムカウンタ26が、各判定回路24に共通に設けられており、各判定回路24は、タイムカウンタ26の出力値を参照して、パターンの開始を検出した時点からの経過時間を把握している。なお、本構成例では、例えば、上記OR回路25cの出力信号がタイムカウンタ26のリセット端子に印加されている。一方、上記自らに対応するフィルタ部2の出力信号が真になることを待ち受けている判定回路24は、例えば、現在の状態になった時点における上記タイムカウンタ26のカウント値と現時点の上記タイムカウンタ26のカウント値との差が、EV_Timeデータの示す値を超えているか否かを判定するなどして、現在の状態になってから、EV_Timeデータが経過したか否かを判定している。
さらに、上記制御回路25には、上記各判定回路24のMatch_Init信号の論理和を演算するOR回路25dが設けられており、OR回路25dの出力信号は、状態カウンタ22およびフリップフロップ23のリセット端子に印加されている。これにより、上記各判定回路24のいずれかが真のMatch_Init信号を出力した場合、マッチング処理部4を初期状態へ戻す(初期化する)ことができる。この結果、マッチング処理部4は、予め定められたタイムアウト時間が経過しても、上記次の状態へ遷移するために必要なフィルタ部2の出力信号が真にならない場合、初期状態に戻ることができる。
また、本構成例に係るマッチング処理部4は、上述した動作、すなわち、「ある状態になった時点から他の状態へ遷移するためのイベントの発生を検出するまでの経過時間に拘らず、各フィルタ部2からの出力信号の時間変化が、予め定められたパターンにマッチしていれば、真を示す最終検出結果信号Qを出力する」動作を行う時間独立モードに加えて、時間従属モードでも動作することができ、時間従属モードに設定されている場合、予め定められた検出期間中に、他の状態へ遷移するためのイベントの発生が検出された場合にのみ、次の状態に遷移できる。
具体的には、本構成例に係るレジスタ21には、各フィルタ部2毎に、そのフィルタ部2に対応する判定部13が時間独立モードで動作するか、時間従属モードで動作するかを示すTimeIndepフラグが格納されている。なお、TimeIndepフラグが時間独立モードで動作することを示している場合、そのフィルタ部2に対応する判定部13は、上述したように動作して、時間独立モードで動作できる。
また、上記レジスタ21には、各フィルタ部2毎に、SQ_TimeデータとTimeRdnBfフラグとTimeRdnAfフラグとが記憶されている。上記SQ_Timeデータは、そのフィルタ部2に対応する判定部13がフィルタ部2の出力を監視する期間(監視期間)の開始時点を示すものであって、本構成例では、例えば、タイムカウンタ26のカウント値によって開始時点が記述されている。なお、監視期間の終了時点は、上述したEV_Timeデータとして記憶されている。
また、TimeRdnBfフラグおよびTimeRdnAfフラグは、上記監視期間外にフィルタ部2の出力が真になったことを検出した場合に、パターンマッチングの処理を初期化するか無視するかを示すものであって、TimeRdnBfフラグが上記監視期間よりも前に検出した場合の動作、TimeRdnAfフラグが上記監視期間よりも後に検出した場合の動作を示している。
一方、判定回路24は、自らに対応するフィルタ部2の動作モードが時間従属モードに設定されている場合、例えば、SQ_Timeデータとタイムカウンタ26からのカウント値とを比較するなどして、SQ_Timeデータの示す時点になるまで待っている。なお、残余の回路21〜23・25・26の動作は、時間独立モードの場合と同じである。
ここで、判定回路24は、自らに対応するフィルタ部2のTimeRdnBfフラグがパターンマッチングの処理の初期化を示している場合は、SQ_Timeデータの示す時点になるまでの間も、上記フィルタ部2の出力信号を監視しており、当該出力信号が真になった場合、真のMatch_Init信号を出力できる。これとは逆に、TimeRdnBfフラグが無視を示している場合、判定回路24は、フィルタ部2の出力信号に拘らず、SQ_Timeデータの示す時点になるまでの間、Match_Init信号を偽にし続ける。
一方、SQ_Timeデータの示す時点になる(監視期間が開始されると)と、判定回路24は、フィルタ部2の出力信号の真偽に応じて、FilterOK信号の真偽を変更する。また、判定回路24は、自らに対応するフィルタ部2と初期状態とに関連付けて記憶されているSqce_Conデータが真を示している場合、フィルタ部2の出力信号(真/偽)に応じて、当該Match_St信号の真/偽を変更できる。なお、監視期間中に、フィルタ部2の出力信号が真になった場合、判定回路24は、例えば、レジスタ21などに、監視期間中に検出したことを記憶できる。
また、判定回路24は、SQ_Timeデータの示す時点になった後、例えば、SQ_Timeデータと現在のタイムカウンタ26のカウント値とを比較するなどして、当該時点からの経過時間を計時しており、EV_Timeデータの示す時間が経過した時点において、例えば、上記レジスタ21を参照するなどして、監視期間中にフィルタ部2の出力信号が真になっていないと判定した場合は、TimeRdnAfフラグに応じたMatch_Init信号を出力できる。具体的には、TimeRdnAfフラグが初期化を示している場合、判定回路24は、真のMatch_Init信号を出力し、TimeRdnAfフラグが無視を示している場合、判定回路24は、偽のMatch_Init信号を出力できる。なお、TimeRdnAfフラグが無視を示している場合であっても、判定回路24は、充分長い時間として予め定められた時間が経過しても、状態が変化しなければ、真のMatch_Init信号を出力して、マッチング処理部4を初期化できる。
以下では、一例として、図4において、8つのフィルタ部2a〜2hが設けられており、パターンとして、以下のパターン、すなわち、各フィルタ部2のうち、出力信号が真となるものが、「フィルタ部2bおよび2e」→「フィルタ部2dおよび2g」→「フィルタ部2h」→「フィルタ部2aおよび2f」→「フィルタ部2b」→「フィルタ部2h」→「フィルタ部2aおよび2c」の順で、時間変化するパターンが登録されている場合について説明する。なお、このように設定される場合、各フィルタ部2a〜2hの各状態S0〜S7に対応するSqce_Conデータは、図4に示すように設定される。また、この設定例では、フィルタ部2a、2e、2fおよび2hが時間独立モードに設定されており、残余のフィルタ部2b、2c、2dおよび2gが時間従属モードに設定されている。さらに、各フィルタ部2のTimeRdnAfフラグおよびTimeRdnBfフラグは、初期化を示す値に設定されている。なお、この設定例では、各フィルタ部2a〜2hのEV_TimeおよびSQ_Time、並びに、判定回路24を、例えば、フィルタ部2aのEV_Time_aのように、それぞれに対応するフィルタ部2の末尾の英字を付して参照する。
ここで、図5に示す時点t0を含み、時点t1よりも前の初期状態S0では、状態カウンタ22およびフリップフロップ23がリセットされている。この状態では、初期状態S0に対応するSqce_Conデータが真(図3の例では1)に設定されている判定回路24bおよび24eは、偽のFilterOK信号を出力し、残余の判定回路24a・24c・24d・24f〜24hは、真のFilterOK信号を出力している。また、この状態では、各判定回路24a〜24hは、偽のMatch_Init信号、および、偽のMatch_St信号を出力している。
この状態において、t0の時点において、フィルタ部2eの出力信号が真になると、フィルタ部2eの出力信号を監視する判定回路24eは、FilterOK信号およびMatch_St信号を真に設定する。
このMatch_St信号により、フリップフロップ23が真に設定される。また、FilterOK信号により、タイムカウンタ26がリセットされ、タイムカウンタ26は、当該時点t0からの経過時間を計時し始める。なお、t0の時点では、判定回路24eのFilterOK信号が真になっても、判定回路24bのFilterOK信号が偽のままなので、状態カウンタ22の値は、初期状態S0を示す値のままである。
ここで、フィルタ部2bおよび2eは、初期状態S0において判定要に設定されているので、上述したように、タイムカウンタ26のカウント値と各EV_Timeの示すカウント値とを比較して、タイムカウンタ26が計時を開始してから(t0の時点から)、各EV_Timeの示す時間が経過しているか否かを判定している。
上述したように、フィルタ部2eの出力信号は、t0の時点で既に真になっているので、EV_Time_eの示す時間が経過しても、判定回路24eは、Match_Init信号を偽に保っている。ここで、フィルタ部2bの出力信号は、t0の時点では真になっていないので、EV_Time_bの示す時間が経過してもフィルタ部2bの出力信号が真にならなければ、判定回路24bは、Match_Init信号を真に設定する。
それに対して、図5の例では、それよりも前の時点t1において、フィルタ部2bの出力信号が真になる。これにより、判定回路24bは、FilterOK信号およびMatch_St信号を真に設定する。なお、本構成例では、判定回路24bのMatch_St信号によって、タイムカウンタ26が再度リセットされ、タイムカウンタ26は、t1の時点からの経過時間を計時し始める。
また、t1の時点では、判定回路24bのFilterOK信号も真になるので、状態カウンタ22はカウントアップされ、状態カウンタ22のカウント値は、初期状態S0の次の状態S1を示す値に変化する。なお、本構成例では、状態カウンタ22がシフトレジスタにより構成されているので、カウント値は、00hから01hへと変化する。
ここで、各フィルタ部2のうち、フィルタ部2a、2e、2fおよび2hは、時間独立モードに設定されており、しかも、状態S1では、判定不要に設定されている。したがって、フィルタ部2a、2e、2fおよび2hは、状態S1の間、FilterOK信号を真、Match_Init信号およびMatch_St信号を偽のまま維持している。
一方、各フィルタ部2のうち、フィルタ部2b、2c、2dおよび2gが時間従属モードに設定されており、それぞれのTimeRdnAfフラグおよびTimeRdnBfフラグは、初期化を示す値に設定されている。したがって、これらに対応する判定回路24b、24c、24dおよび24gは、タイムカウンタ26のカウント値と、それぞれに設定されたSQ_Timeデータとを比較して、SQ_Timeデータの示す時点になるまでの間に、それぞれに対応するフィルタ部2の出力信号を監視している。したがって、この期間中に出力信号が真になった場合は、Match_Init信号を真に設定する筈である。ところが、図5の例では、フィルタ部2b、2c、2dおよび2gの出力信号は、いずれも、SQ_Timeデータの示す時点になるまでの間、偽のまま保たれている。したがって、各判定回路24b、24c、24dおよび24gは、Match_Init信号を偽に維持している。
また、状態S1では、これらのフィルタ部2b、2c、2dおよび2gのうちのフィルタ部2dおよび2gが判定要と設定されているので、判定回路24dおよび24gは、偽のFilterOK信号を出力し、残余の判定回路24bおよび24cは、真のFilterOK信号を出力している。
上記t1の時点において状態S1になった後、SQ_Time_dの示す時点になると、判定回路24dは、EV_Time_dの計時を開始する。同様に、SQ_Time_gの示す時点になると、判定回路24gは、EV_Time_gの計時を開始する。ここで、これらのEV_Timeが経過しても、それぞれに対応するフィルタ部2dおよび2gの出力信号が真にならない場合、判定回路24dおよび24gは、Match_Init信号を真に設定する筈である。ところが、図5の例では、それぞれのEV_Timeが経過する前に、フィルタ部2dおよび2gの出力信号が真になるので、判定回路24dおよび2gは、Match_Init信号を偽に保ったまま、FilterOK信号を真に設定する。この結果、両FilterOK信号が真になった時点t2で、状態カウンタ22はカウントアップされ、初期状態S1の次の状態S2を示す値に変化する。なお、本構成例では、状態カウンタ22のカウント値は、01hから03hへと変化する。
この状態S2では、判定要と設定されているのは、判定回路24hだけなので、判定回路24hのみがFilterOK信号を偽に設定し、残余の判定回路24は、FilterOK信号を真に設定する。また、時間独立モードに設定されている判定回路24hは、当該状態S2に遷移してからの経過時間を測定し、EV_Time_hの示す時間が経過するまでにフィルタ部2hの出力信号が真にならないと、Match_Init信号を真に設定する。ただし、図5の例では、EV_Time_hの示す時間が経過するまでにフィルタ部2hの出力信号が真になっているので、その時点t3で、FilterOK信号が真になり、状態カウンタ22がカウントアップされる。
上記各動作は、最後の状態S7になるまで繰り返される。具体的には、その状態において判定要に設定されている判定回路24は、時間独立モードの場合は、その状態に変化してからのEV_Timeの示す時間が経過するまでの間、時間従属モードの場合は、SQ_Timeの示す時点になってからEV_Timeの示す時間が経過するまでの間に、フィルタ部2の出力信号が真になると、FilterOK信号を真に設定し、その状態において判定要に設定されている判定回路24からのFilterOK信号の全てが真になった時点で、状態カウンタ22が次の状態を示す値にカウントアップされる。
最後の状態S7になると、マッチング処理部4の制御回路25は、最終検出結果信号Qを真に変更する。なお、本構成例の場合、最後の状態S7では、状態カウンタ22のカウント値が7Fhになるので、マッチング処理部4の制御回路25は、状態カウンタ22のカウント値が、この値になり、しかも、AND回路25aの出力信号が真になった時点で、最終検出結果信号Qを真に変更している。
これにより、マッチング処理部4は、各フィルタ部2からの出力信号の時間変化が、上記レジスタ21に記憶された予め定められたパターンにマッチしているか否かを判定できる。
続いて、以下では、図6〜図10を参照しながら、図1に示すローパスフィルタ3および各フィルタ部2のバンドパスフィルタ11を詳細に説明する。すなわち、本実施形態では、これらのフィルタがFIRデジタルフィルタによって実現されている。
当該FIRデジタルフィルタの出力Y(t)は、予め定められた周期(サンプリング周期など)毎に入力される入力信号を、古いものから順に、x(t−n+1)、x(t−n+2)、…、x(t−1)、x(t)とし、当該フィルタの次数をn、0からn−1までの任意の整数をi、フィルタのフィルタ係数列を構成する各フィルタ係数をh(i)とするとき、以下の式(1)に示すように、
Y(t)=Σ〔h(i)・x(t−n+1+i)〕 …(1)
となる。なお、上記式(1)において、Σは、iを0からn−1まで変化させた場合の〔〕内の合計である。また、nは、偶数である。
本実施形態では、フィルタ係数列におけるフィルタ係数の対称性を利用し、上記式(1)を、以下の式(2)に示すように、
Y(t)=Σ〔 h(j)・( x(t−n/2+1+j)
+x(t−n/2−j) )〕 …(2)
と変形して計算している。なお、上記式(2)では、jは、0からn/2−1までの任意の整数であり、Σは、jを0からn/2−1まで変化させた場合の〔〕内の合計である。
さらに、本実施形態に係るFIRフィルタ31は、図6に示すように、2つのメモリ32・33を用意し、その一方(例えば、メモリ32)に、上記周期毎に入力される入力信号からなる入力信号列の後半(より新しい方の半分)を記憶し、他方(この場合、メモリ33)に前半(より古い方の半分)を記憶している。なお、この場合、メモリ32が特許請求の範囲に記載の後半記憶回路になり、メモリ33が前半記憶回路になる。
さらに、FIRフィルタ31には、上記両メモリ32・33から読み出した値を加算する加算器34と、フィルタ係数列を記憶する係数レジスタ35と、当該係数レジスタ35から読み出した係数と加算器34の出力値との乗算結果を累算した値(積和演算結果)を出力する積和回路(積和演算回路)36と、これらを制御する制御回路37とが設けられている。
なお、上述したように、本実施形態に係るFIRフィルタ31は、上記式(2)に従って動作しており、係数レジスタ35には、n/2の長さの係数列(上記式(2)のh(j))が記憶されている。また、上記積和回路36は、例えば、図7に示すように、乗算の対象となる2つの値を乗算する乗算器36aと、例えば、自らの出力値と乗算器36aの出力値とを加算する加算器などによって実現され、乗算器36aの乗算結果を累算する累算器36bとによって実現できる。
上記制御回路37は、入力信号が新たに入力される度に、メモリ32に格納された信号列のうち、最も古くに入力されたものをメモリ33に入力している。なお、入力信号が新たに入力されると、メモリ33のうち、最も古くに入力されたものは演算に使用しなくなるので、この入力信号を記憶した領域を上書きしてもよい。これにより、いずれの入力信号が入力された状態であっても、メモリ32には、入力信号列の後半(上記式(2)のx(t−n/2+1)〜x(t))が記憶され、メモリ33には、入力信号列の前半(上記式(2)のx(t−n+1)〜x(t−n/2))が記憶される。一例として、本実施形態では、上記両メモリ32・33は、詳細は後述するように、RAM上に設けられたリングバッファとして実装されている。
また、上記制御回路37は、入力信号の入力周期毎に、上記加算器34および積和回路36が、上記係数レジスタ35に格納された係数系列の系列長の回数(n/2回)だけ、それぞれの演算を行うように制御している。
より詳細には、制御回路37は、メモリ32から、上記入力信号x(t−n/2+1)〜x(t)を順次読み出して、加算器34の一方の入力端子へ与えている。なお、読み出す周期(演算周期)Tcは、入力信号の入力周期をTiとするとき、Tc
≦ Ti/(n/2)になるように設定されている。
さらに、制御回路37は、メモリ32からの読み出しに同期して、メモリ33から、上記入力信号x(t−n/2)〜x(t−n+1)を順次読み出して、加算器34の他方の入力端子へ与えている。これにより、加算器34には、各演算周期において、x(t−n/2+1+j)およびx(t−n/2−j)が入力され、加算器34は、各演算周期毎に、x(t−n/2+1+j)+x(t−n/2−j)を出力できる。なお、jは、0からn/2−1までの整数のいずれかであって、互いに異なる演算周期では、互い異なる値に設定される。本実施形態に係る制御回路37は、一例として、jが演算周期毎に0からn/2−1へ1ずつ増加するように、上記両メモリ32・33から各入力信号を読み出している。
また、上記制御回路37は、加算器34の出力に同期して、加算器34の出力を算出する際に使用したjに対応するフィルタ係数h(j)を係数レジスタ35から読み出して積和回路36に入力している。
さらに、上記制御回路37は、入力信号が入力される度に(上記入力周期Ti毎)に、例えば、図7に示す累算器36bの累算結果を0クリアするなどして、積和回路36による積和演算結果を0クリアしている。また、制御回路37は、例えば、図7に示す乗算器36aから乗算結果が出力される度に、これまでの累算値に乗算器36aからの乗算結果を加えるように、累算器36bへ指示するなどして、積和回路36に積和演算を指示している。これにより、積和回路36が、全てのjに関する積和演算を行うと、積和回路36の出力値は、Y(t)となる。
ここで、図1に示すローパスフィルタ3およびバンドパスフィルタ11は、それぞれ図7に示すFIRフィルタ31として互いに別個に構成されていてもよいが、本実施形態では、ローパスフィルタ3に使用するメモリ32・33および加算器34を、バンドパスフィルタ11がローパスフィルタ3を介さずに入力信号を処理する場合のメモリ32・33および加算器34としても使用している。これにより、詳細は後述するように、回路中で高速動作する必要がある箇所を制限でき、かつ、回路全体の消費電力を削減できる。
具体的には、図8に示すように、本実施形態に係るローパスフィルタ3には、図6に示す各部材32〜37と同様の部材42〜47が設けられている。また、フィルタ部2のバンドパスフィルタ11にも、図6に示す各部材32〜37と同様の部材52〜57が設けられている。なお、図では、説明の便宜上、各フィルタ部2およびローパスフィルタ3の上記制御回路47および制御回路57を含む制御回路を、制御回路61として図示している。
ただし、本実施形態に係る検出システム1では、加算器54と積和回路56との間にスイッチ62が設けられており、当該スイッチ62は、加算器44の出力値と加算器54の出力値との一方を選択して、積和回路56へ印加できる。また、上記制御回路61は、バンドパスフィルタ11がダウンサンプリングするか否かに応じて、スイッチ62を切り換えることができる。
さらに、本実施形態では、部材42〜44、52〜54が、各フィルタ部2間で共通に設けられている。また、係数レジスタ45および積和回路46も、各フィルタ部2間で共通に設けられている。これにより、これらを各フィルタ部2毎に独立して設ける場合よりも、回路規模を大幅に削減できる。
一方、上記各部材52〜57のうち、係数レジスタ55および積和回路56は、各フィルタ部2毎に独立して設けられている。したがって、各フィルタ部2は、何ら支障なく、互いに独立して、それぞれのフィルタ係数列を設定できると共に、互いに独立して、ダウンサンプリングするか否かをできる。
上記構成において、制御回路61は、上記各バンドパスフィルタ11のうち、ダウンサンプリングするように設定されているバンドパスフィルタ11のスイッチ62を、加算器54側に切り換える。なお、図8では、一例として、フィルタ部2aおよび2cのバンドパスフィルタ11a・11cがダウンサンプリングするように設定されており、当該バンドパスフィルタ11a・11cのスイッチ62a・62cが加算器54側に切り換えられている。
この場合は、図9に示すように、部材42〜46によって、ローパスフィルタ3が形成され、サンプリングされた入力信号の高周波成分を除去できる。なお、図9および図10(後述)では、選択されなかった方の信号経路または回路を破線で示している。
また、ローパスフィルタ3の出力信号(積和回路46の出力信号)は、部材52〜56によって形成されたバンドパスフィルタ11へ供給されており、メモリ52・53は、当該出力信号を順次格納する。ただし、バンドパスフィルタ11は、ダウンサンプリングしているので、制御回路61は、バンドパスフィルタ11をダウンサンプリング時の周波数で動作させている。したがって、メモリ52・53には、通常の周期よりも長い周期毎に、ローパスフィルタ3の出力信号が格納される。一例として、ダウンサンプリング時には、通常の1/4の周波数でサンプリングする場合、メモリ52・53は、4回おきに、ローパスフィルタ3の出力信号の出力値を格納する。また、バンドパスフィルタ11の入力周期Tiが通常よりも延長されているので、それに合わせて、バンドパスフィルタ11の演算周期Tcも延長されている。
これにより、バンドパスフィルタ11は、低い周波数帯域の信号成分を通過させる場合であっても、フィルタ係数系列の系列長をあまり増大させることなく、当該信号成分を通過させることができる。
一方、制御回路61は、上記各バンドパスフィルタ11のうち、特にダウンサンプリングが設定されていないバンドパスフィルタ11については、スイッチ62を、加算器44側に切り換える。なお、図8の例では、フィルタ部2bのバンドパスフィルタ11bがダウンサンプリングしないように設定されているので、当該バンドパスフィルタ11bのスイッチ62bが加算器44側に切り換えられている。
この場合は、図10に示すように、部材42〜44および部材55〜56によって、バンドパスフィルタ11が形成され、当該バンドパスフィルタ11は、フィルタ係数系列によって設定された所望の周波数帯域の信号成分のみを通過させることができる。
ここで、この場合、制御回路61は、バンドパスフィルタ11を、通常周波数で動作させている。したがって、バンドパスフィルタ11の演算周期Tcは、ダウンサンプリングする場合よりも短く設定されている。
なお、図8に示すように、ダウンサンプリングするバンドパスフィルタ11a・11cと、ダウンサンプリングしないバンドパスフィルタ11bとが混在しているが、メモリ42・43および加算器44の動作する際の演算周期Tcは、通常周波数に応じた値に設定されている。したがって、後段の積和回路46・56が上記演算周期Tcで互いに同期して動作すれば、メモリ42・43および加算器44が互いに共用されていたとしても、ローパスフィルタ3、および、ダウンサンプリングしないバンドパスフィルタ11bは、何ら支障なく動作できる。
ここで、比較例として、スイッチ62に代えて、ローパスフィルタ3を介さない入力信号と、ローパスフィルタ3の出力信号との一方を選択して、バンドパスフィルタ11に入力するスイッチを設けた構成では、ダウンサンプリングしない場合、バンドパスフィルタ11のメモリ52・53が、ローパスフィルタ3を介さない入力信号を格納する。
この構成では、ローパスフィルタ3を使用しない場合に備えて、バンドパスフィルタ11のメモリ52・53および加算器54の動作速度は、通常周波数でも動作できるように設定されている必要がある。
これに対して、本実施形態では、スイッチ62を設けることによって、メモリ42・43および加算器44が、ローパスフィルタ3用およびローパスフィルタ3を介さずに入力信号を処理する場合のバンドパスフィルタ11用とに兼用され、メモリ52・53および加算器54は、ダウンサンプリング時のバンドパスフィルタ11として使用されている。この結果、上記比較例とは異なって、メモリ52・53および加算器54の動作速度を、ダウンサンプリング時の周波数で動作できる程度に遅く設定しても、バンドパスフィルタ11は、正しく動作することができる。したがって、回路中で高速動作する必要がある箇所を制限でき、かつ、回路全体の消費電力を削減できる。
以下では、メモリ32および33にリングバッファを形成するための構成の一例について説明する。すなわち、本構成例に係るFIRフィルタ1は、図11に示すように、メモリ32・33を含むデータ遅延回路102と、係数レジスタ35と、加算器34と、乗算器36aおよび累算回路36bを含む積和回路36とを備えている。
データ遅延回路102は、メモリ32としてのRAM−DF121と、メモリ33としてのRAM−DS122と、制御回路37を構成する、アドレス制御回路123、124および制御回路125とを有している。
RAM−DF121およびRAM−DS122は、遅延器を構成しており、順次入力された入力データを後述するように指定された順に読み出すことによって、所定時間遅延した入力データを後述する積和演算に供する。また、RAM−DF121およびRAM−DS122は、それぞれ最大でm/2個(mは偶数)の入力データを格納する記憶容量を有しており、合計でm個の入力データの格納が可能である。RAM−DF121およびRAM−DS122において入力データを格納する各記憶領域が遅延器における遅延素子に相当する。
アドレス制御回路123は、RAM−DF121の書き込みおよび読み出しのためのアドレスの出力を制御する回路である。このアドレス制御回路123は、入力ポインタ(図中、in-pointerF)231と、出力ポインタ(図中、out-pointerF)232と、読出ポインタ(図中、rd-pointerF)233と、入力数カウンタ234と、セレクタ235とを有している。
入力ポインタ231は、RAM−DF121に外部からの入力データを書き込む領域を指定するためのアドレスを変化させる回路(アドレスポインタ)であり、例えばカウンタによって構成されている。この入力ポインタ231には、予め最初に入力される入力データを書き込む領域のアドレスの値(例えば0番地)がロードされており、最初にRAM−DF121に入力データが入力されるときにアドレスのカウントを開始し、入力データが入力される毎にアドレスを1つずつインクリメントする。したがって、入力ポインタ231が出力するアドレスで指定されるRAM−DF121の領域には、最も後に入力された入力データが格納されていることになる。
出力ポインタ232は、RAM−DF121に書き込まれた入力データを読み出す領域を指定するためのアドレスを発生する回路(アドレスポインタ)であり、例えばカウンタによって構成されている。この出力ポインタ232には、予め最初に入力される入力データを書き込む領域のアドレスの値(例えば0番地)がロードされており、入力データが読み出される毎にアドレスを1つずつインクリメントする。したがって、出力ポインタ232が出力するアドレスで指定されるRAM−DF121の領域には、最も先に入力された入力データが格納されていることになる。
読出ポインタ233は、RAM−DF121に書き込まれた入力データを加算器34による加算に供するときに当該入力データを読み出す領域を指定するためのアドレスを発生する回路(アドレスポインタ)であり、例えばカウンタによって構成されている。この読出ポインタ233には、出力ポインタ232からのアドレスがロードされており、入力データが読み出される毎にアドレスを1つずつインクリメントする。これにより、読出ポインタ233が出力するアドレスは、RAM−DF121において最も先に書き込まれた入力データから後に書き込まれた入力データを1つずつ順次読み出すように変化する。
入力数カウンタ234は、RAM−DF121に入力された入力データ数(入力パルス数)をカウントする。この入力数カウンタ234は、RAM−DF121の規定データ入力数であるk個(2kはFIRフィルタ31の次数n)をカウントするとカウントアップする。
セレクタ235は、入力ポインタ231、出力ポインタ232および読出ポインタ233から出力されるアドレスの1つを選択して出力し、RAM−DF121に与える回路である。セレクタ235は、入力数カウンタ234がRAM−DF121へのk個の入力データの入力をカウントアップするまで、入力ポインタ231からのアドレスを出力する。また、セレクタ235は、入力数カウンタ234が上記のようにカウントアップすると、出力ポインタ232からのアドレスと入力ポインタ231からのアドレスとを1つずつ交互に出力するように出力を切り替える。これにより、RAM−DF121から1つ入力データがRAM−DS22に読み出されると、RAM−DF121に新たな入力データが1つ書き込まれる動作が繰り返される。さらに、セレクタ235は、後述する入力数カウンタ243がRAM−DS122へのk個の入力データの入力をカウントアップすると、k個の入力データに個々に対応したk個のアドレスを読出ポインタ233から出力した後、入力ポインタ231からのアドレスを1つ出力するように出力を切り替えることを繰り返す。これにより、k個の入力データがRAM−DF121から読み出される動作と、新たな1つの入力データがRAM−DF121に書き込まれる動作とが繰り返される。
アドレス制御回路124は、RAM−DS122の書き込みおよび読み出しのためのアドレスの出力を制御する回路である。このアドレス制御回路124は、入力ポインタ(図中、in-pointerS)241と、読出ポインタ(図中、rd-pointerS)242と、入力数カウンタ243と、セレクタ244とを有している。
入力ポインタ241は、RAM−DS22にRAM−DF121から読み出された入力データを書き込む領域を指定するためのアドレスを発生する回路(アドレスポインタ)であり、例えばn進カウンタによって構成されている。この入力ポインタ241には、予め最初に入力される入力データを書き込む領域のアドレスの値(例えば0番地)がロードされており、最初にRAM−DS122に入力データが入力されるとき、すなわち入力数カウンタ234がカウントアップしたときに入力データが入力される毎にアドレスを1つずつインクリメントする。したがって、入力ポインタ241が出力するアドレスで指定されるRAM−DS122の領域には、最も後に入力された入力データが格納されていることになる。
読出ポインタ242は、RAM−DS122に書き込まれた入力データを加算器34による加算に供するときに当該入力データを読み出す領域を指定するためのアドレスを発生する回路(アドレスポインタ)であり、例えばカウンタによって構成されている。この読出ポインタ242には、入力ポインタ241からのアドレスがロードされており、入力データが読み出される毎にアドレスを1つずつデクリメントする。これにより、読出ポインタ242が出力するアドレスは、RAM−DS122において最も後に書き込まれた入力データから先に書き込まれた入力データを1つずつ順次読み出すように変化する。
入力数カウンタ243は、RAM−DS122に入力された入力データ数(入力パルス数)をカウントする。この入力数カウンタ243は、RAM−DS122の規定データ入力数であるk個をカウントするとカウントアップする。
セレクタ244は、入力ポインタ241および読出ポインタ242から出力されるアドレスの1つを選択して出力し、RAM−DS122に与える回路である。セレクタ244は、入力数カウンタ243がRAM−DS122へのk個の入力データの入力をカウントアップするまで、入力ポインタ241からのアドレスを出力する。また、セレクタ244は、入力数カウンタ243が上記のようにカウントアップすると、k個の入力データに個々に対応したk個のアドレスを読出ポインタ242から出力した後、入力ポインタ241からのアドレスを1つ出力するように出力を切り替えることを繰り返す。これにより、RAM−DS122からk個の入力データが読み出される動作と、RAM−DF121から出力された1つの入力データがRAM−DS122に書き込まれる動作とが繰り返される。
制御回路125は、RAM−DF121、RAM−DS122およびアドレス制御回路123,124の動作を制御する回路である。制御回路125は、下記のアドレスの出力制御に合わせて、RAM−DF121およびRAM−DS122に書き込みおよび読み出しを許可する。
制御回路125は、アドレス制御回路123に対しては次の(1)〜(6)の制御を行う。
(1)RAM−DF121への最初の入力データの入力に合わせて、入力数カウンタ234にカウント開始の指示を与えるとともに、入力ポインタ231にアドレスの出力開始の指示を与える。
(2)入力数カウンタ234が入力データ数のカウントを開始してからカウントアップするまでの間に入力ポインタ231からのアドレスを出力させるようにセレクタ235に指示を与える。
(3)入力数カウンタ234がカウントアップすると、入力ポインタ231にアドレスの出力停止の指示を与えた後、出力ポインタ232に1つのアドレスを出力させるための指示を与えることと、入力ポインタ231に1つのアドレスを出力させるための指示を与えることを繰り返す。
(4)入力数カウンタ234がカウントアップすると、出力ポインタ232からのアドレスと入力ポインタ231からのアドレスとを1つずつ交互に出力するようにセレクタ235に指示を与える。
(5)入力数カウンタ234がカウントアップすると、読出ポインタ233にk個のアドレスを出力させるための指示を与えることと、入力ポインタ231に1つのアドレスを出力させるための指示を与えることを繰り返す。
(6)入力数カウンタ243がカウントアップすると、読出ポインタ233からのk個のアドレスと入力ポインタ231からの1つのアドレスとを交互に出力させるようにセレクタ235に指示を与える。
また、制御回路125は、アドレス制御回路124に対しては次の(7)〜(10)の制御を行う。
(7)入力数カウンタ234がカウントアップすると、RAM−DS122への最初の入力データの入力に合わせて、入力数カウンタ243にカウント開始の指示を与えるとともに、入力ポインタ231にアドレスの出力開始の指示を与える。
(8)入力数カウンタ243が入力データ数のカウントを開始してからカウントアップするまでの間に入力ポインタ241からのアドレスを出力させるようにセレクタ244に指示を与える。
(9)入力数カウンタ243がカウントアップすると、読出ポインタ242にk個のアドレスを出力させるための指示を与えることと、入力ポインタ241に1つのアドレスを出力させるための指示を与えることを繰り返す。
(10)入力数カウンタ243がカウントアップすると、読出ポインタ242からのk個のアドレスと入力ポインタ241からの1つのアドレスとを交互に出力させるようにセレクタ244に指示を与える。
係数レジスタ34は、RAM−CE131と、読出ポインタ132とを有している。
RAM−CE131は、乗算器36aに与えるフィルタ係数を記憶するために設けられており、予め外部、例えば外部レジスタ107などから入力されたk個のフィルタ係数を格納している。
読出ポインタ132は、RAM−CE131に格納されているフィルタ係数を乗算器36aに与えるときに当該フィルタ係数を読み出す領域を指定するためのアドレスを発生する回路(アドレスポインタ)であり、例えばカウンタによって構成されている。この読出ポインタ132には、予め最初に出力されるフィルタ係数が格納された領域のアドレス(先頭アドレス)の値(例えば0番地)がロードされており、フィルタ係数が読み出される毎にアドレスを1つずつインクリメントする。これにより、読出ポインタ132が出力するアドレスは、RAM−CE131において先頭のフィルタ係数から順に1つずつ順次読み出すように変化する。
加算器34は、RAM−DF121から読み出された入力データと、RAM−DS122から読み出された入力データとを加算する回路である。乗算器36aは、加算器34から出力された加算データにRAM−CE131から出力されたフィルタ係数を乗算する回路である。
累算回路36bは、上述したように、乗算器36aから連続して出力される乗算値をk個累算してフィルタ出力を得る回路である。この累算回路36bは、加算器161と、レジスタ162と、出力レジスタ163と、処理数カウンタ164と、コンパレータ165とを有している。
加算器161は、乗算器36aから出力される乗算値にレジスタ162から出力される値を加算する回路である。
レジスタ162は、加算器161から出力される加算値を保持する回路である。このレジスタ162は、加算器34による加算処理が開始してから、入力データが新たにRAM−DF121に入力される毎にリセットされる。
出力レジスタ163は、レジスタ162の出力値を保持する回路である。この出力レジスタ163は、累算回路36bによる累算処理の回数がk回に達したときに保持している出力値を出力データとして出力する。
処理数カウンタ164は、レジスタ162がリセットされるまでに加算器161からの加算データを保持した回数をカウントするカウンタである。コンパレータ165は、処理数カウンタ164のカウント値と規定回数であるkとを比較して、両者が一致したときに出力レジスタ163に保持している出力値を出力する信号を与える。
上記のように構成されるFIRフィルタ31の動作について説明する。
まず、初期状態では、RAM−DF121およびRAM−DS122には、入力データが書き込まれていない。この状態から、入力データがRAM−DF121に入力されると、入力データは、入力ポインタ231からセレクタ235を介して与えられたアドレス(例えば0番地)で指定される領域に書き込まれる。入力ポインタ231は、入力データが入力される毎にアドレスをインクリメントする。これにより、入力データは、入力順にRAM−DF121の異なる領域に書き込まれていく。このとき、入力数カウンタ234によって、RAM−DF121に入力される入力データの数がカウントされる。
このようにして、k個の入力データ(D1〜Dk)がRAM−DF121に書き込まれると、入力数カウンタ234がカウントアップする。これにより、出力ポインタ232からのアドレスがセレクタ235を介してRAM−DF121に与えられる。すると、最も先にRAM−DF121に書き込まれていた入力データ(D1)が読み出される。出力ポインタ232は、入力データが読み出されるとアドレスをインクリメントする。したがって、RAM−DF121からは、次にそのアドレスで指定される入力データ(D2)が読み出される。
一方、アドレス制御回路124では、入力ポインタ241からのアドレスがセレクタ244を介してRAM−DS122に与えられるので、RAM−DS122において、そのアドレスで指定される領域にRAM−DF121から最初に読み出された入力データ(D1)が書き込まれる。すると、入力ポインタ241がアドレスをインクリメントするので、そのアドレスで指定されるRAM−DS122の領域には、次にRAM−DF121から読み出された入力データ(D2)が書き込まれる。このようにして、RAM−DF121からの入力データの読み出しとRAM−DS122への入力データの書き込みとを繰り返すことによって、RAM−DF121に書き込まれた入力データをRAM−DS122に移す。このとき、入力数カウンタ243によって、RAM−DS122に入力される入力データの数がカウントされる。また、この動作と並行して、RAM−DF121にも前述のようにして入力データが書き込まれていく。
このようにして、RAM−DF121からのk個の入力データ(D1〜Dk)がRAM−DS122に書き込まれると、入力数カウンタ243がカウントアップする。また、RAM−DF121にも新たなk個の入力データ(Dk+1〜D2k)が書き込まれるので、入力数カウンタ234がカウントアップする。これにより、積和演算に供するためのRAM−DF121およびRAM−DS122からの入力データの読み出しが開始される。
このとき、読出ポインタ233は出力ポインタ232からアドレスがロードされており、そのアドレスがセレクタ235を介してRAM−DF121に与えられる。一方、読出ポインタ242は入力ポインタ241からアドレスがロードされており、そのアドレスがセレクタ244を介してRAM−DS122に与えられる。すると、RAM−DF121に最も先に書き込まれていた入力データ(Dk+1)とRAM−DS122に最も後に書き込まれていた入力データ(Dk)とが読み出される。
また、読出ポインタ233は、入力データが読み出されるとアドレスをインクリメントする一方、読出ポインタ242は、入力データが読み出されるとアドレスをデクリメントする。これにより、RAM−DF121からは、入力データ(Dk+1)の次に書き込まれた入力データ(Dk+2)が読み出される一方、RAM−DS122からは、入力データ(Dk)の前に書き込まれた入力データ(Dk−1)が読み出される。このように、読出ポインタ233によるアドレスのインクリメントおよび読出ポインタ242によるアドレスのデクリメントと、その結果得られたアドレスの指定によるRAM−DF121およびRAM−DS122からの入力データの読み出しが繰り返される。
RAM−DF121およびRAM−DS122から読み出された2つの入力データは、加算器34で加算されて乗算器36aに入力される。また、係数レジスタ35では、読出ポインタ132から与えられるアドレスによって、フィルタ係数が読み出される。入力された2つの入力データには、乗算器36によって、対応したRAM−CE131からのフィルタ係数が乗算される。読出ポインタ131は、フィルタ係数が読み出される毎にアドレスをインクリメントする。このような加算および乗算の処理が、加算器34に順次入力されてくる2つの入力データに対して繰り返して行われる。
そして、乗算器36aから出力される上限結果(乗算データ)は、順次、累算回路36bに入力される。累算回路36bでは、加算器161で、入力される乗算データにレジスタ162からの出力(加算データ)が加算されてレジスタ162に出力される。レジスタ162では、加算器161から加算データが出力される毎に、保持する加算データを最新の加算データに書き替える。また、レジスタ162に保持された加算データは、加算器161だけでなく出力レジスタ163にも出力されているので、出力レジスタ163も同じ加算データを保持している。
一方、レジスタ162が加算器161からの加算データを保持した回数が、コンパレータ165によってkと比較される。コンパレータ165による比較の結果、保持回数がkに一致すると(上記の乗算データがk個累算されると)、出力レジスタ163に保持された加算データが出力データとして出力される。上記のように、RAM−DF121およびRAM−DS122からの入力データの読み出し、加算器34による加算、乗算器36aによる乗算および累算回路36bによる累算がk回繰り返されて出力データが得られた後に、RAM−DF121に新たな入力データが入力される。この入力データの入力によって、レジスタ162および出力レジスタ163がリセットされる。
また、上記の入力データの読み出し、加算、乗算および累算のk回の一連の処理は、次の入力データがRAM−DF21に入力されるまでに完了する。このため、制御回路25は、入力データの読み出し、加算、乗算および累算の各処理をクロックの1クロック間に行うようにタイミングの制御を行い、各処理をパイプライン的に進めていく。例えば、第1期間で1回目のデータ読み出しを行い、第2期間で、2回目のデータ読み出しと、1回目の読み出しデータの加算とを行う。続く第3期間では、3回目のデータ読み出しと、2回目の読み出しデータの加算と、1回目の加算データへの乗算とを行う。さらに続く第4期間では、4回目のデータ読み出しと、3回目の読み出しデータの加算と、2回目の加算データへの乗算と、1回目の累算とを行う。このようなパイプライン処理を行うことにより、比較的動作の遅い回路でも、RAM−DF121へ入力データが入力される間にk回の積和演算を実行することができる。
上記のようにして、上記の一連の演算処理がk回行われることにより、RAM−DF121およびRAM−DS122から読み出された2k個の入力データに対する積和演算が行われる。また、FIRフィルタ1に新たに入力データが入力されると、前述のように、入力ポインタ234のアドレス指定によって、当該入力データがRAM−DF121に書き込まれる。これと同時に、RAM−DF121における最も先に書き込まれた入力データが、ポインタ232によるアドレス指定で読み出されて、RAM−DS122に書き込まれて移される。したがって、この入力データの書き込みおよび転送と、新たな2k個の入力データへの上記演算処理と同じ一連の演算処理が次のRAM−DF121への力データの入力が行われるまでに完了する。
入力データが書き込まれると、この最も新しい入力データを含むRAM−DF121およびRAM−DS122に格納されている2k個の入力データに対して、上記のようなk回の積和演算が行われる。また、このとき、前の積和演算で用いたRAM−DS122における最も先に書き込まれた(最も古い)入力データは、積和演算に用いられない(破棄される)。このように、最も新しい入力データを加えるとともに、前回の積和演算で使用された最も古い入力データを除いた2k個の入力データに対する積和演算が繰り返されることによりフィルタ処理が実現される。
このように、本構成例に係るFIRフィルタ31は、2つのRAM−DF121およびRAM−DS122に格納された連続するk個の入力データ(RAM−DF121とRAM−DS122との間でも連続する)から、対称関係にあるフィルタ係数を乗算する入力データをそれぞれ1つずつ読み出して加算器34にて加算し、その加算結果に対してフィルタ係数を乗算器36aにて乗算するという処理をk個の入力データについて行い、その総和を累算回路36bにて演算する。これにより、フィルタ係数の対称性を利用して、乗算処理の回数を半減することができるFIRフィルタ31を、RAM−DF121およびRAM−DS122のようにRAMを用いたデジタル回路で構成することができる。したがって、FIRフィルタ31をAISC(Application Specific Intefrated Circuit)やFPGA(Field Prgrammable Gate Array)などで容易に構成することが可能となる。
また、本構成例に係るFIRフィルタ31では、RAM−DF121において、入力ポインタ231、出力ポインタ232および読出ポインタ233によって書込位置および読出位置が変化し、RAM−DS122において、入力ポインタ241および読出ポインタ242によって書込位置および読出位置が変化するように構成されている。これにより、RAM−DF121およびRAM−DS122が任意の位置で入力データの書き込みと読み出しとを行うリングバッファとして機能する。それゆえ、RAM−DF121およびRAM−DS122のそれぞれの記憶可能な入力データ数の総数の上限をm/2≧n/2(m,nは偶数)と設定することにより、上限までであれば、入力ポインタ231,241、出力ポインタ232および読出ポインタ233,242によってそれぞれ規定されるアドレスの範囲を変更することにより、フィルタの次数n(フィルタ長)を任意に設定することができる。
ところで、本実施形態に係る検出システム1は、最終検出結果信号Qを出力するだけではなく、正常に動作しているか否かを外部から確認するための構成も備えている。
具体的には、図12に示すように、本実施形態に係る検出システム1には、予め定められた波形の音声信号を生成する信号発生器71と、入力セレクタ72とが設けられており、当該入力セレクタ72は、上述した制御回路61の指示に従って、外部から入力される音声信号または信号発生器71の出力信号を、ローパスフィルタ3およびバンドパスフィルタ11(図8の例では、メモリ42・43)へ与えることができる。
これにより、予め定められた波形の音声信号をローパスフィルタ3およびバンドパスフィルタ11へ入力させ、そのときの最終検出結果信号Qを確認することによって、検出システム1が正しく動作しているか否かを検証できる。
また、本実施形態に係る検出システム1は、最終検出結果信号Qだけではなく、各部の信号を出力することができる。具体的には、検出システム1には、出力セレクタ73が設けられており、当該出力セレクタ73は、制御回路61の指示に従って、外部から入力される音声信号またはローパスフィルタ3の出力信号を、出力端子Toutへ出力できる。さらに、本実施形態に係る検出システム1には、制御回路61の指示に従って、上記各フィルタ部2のバンドパスフィルタ11の出力信号の1つを選択して、出力セレクタ73へ出力するフィルタセレクタ74も設けられており、出力セレクタ73は、フィルタセレクタ74の出力をも選択できる。
ここで、ダウンサンプリングしたバンドパスフィルタ11の出力信号と、ダウンサンプリングしないバンドパスフィルタ11の出力信号またはローパスフィルタ3の出力信号とでは、周波数が互いに異なっている。一方、出力端子Toutの外部に接続されたDA変換器で、アナログ信号に変換し、例えば、オシロスコープなどによって波形を観測しようとするときに、DA変換器が動作周波数を変更できればよいが、構成を簡略化するために、DA変換器が後者の周波数で、双方の出力信号をDA変換しようとすると、ダウンサンプリングしたバンドパスフィルタ11の出力信号をアップサンプリングすることになる。
本実施形態に係る検出システム1には、この場合でも、エイリアシング誤差の発生を抑制できるように、出力セレクタ73の出力信号の高域成分を除去するローパスフィルタ(出力側ローパスフィルタ)75と、上記制御回路61の指示に従って、当該ローパスフィルタ75の出力信号または出力セレクタ73の出力信号の一方を選択して、出力端子Toutへ出力する出力スイッチ76とが設けられている。
上記ローパスフィルタ75もFIRデジタルフィルタによって構成されており、図6に示す部材32〜37を備えている。さらに、本実施形態では、図13に示すように、ローパスフィルタ75の係数レジスタ35が、ローパスフィルタ3の係数レジスタ35(45)と共用されている。これにより、それぞれを別個に設ける場合よりも回路規模および消費電力を削減できる。
なお、ローパスフィルタ75の各部材も、ローパスフィルタ3の各部材と同様に、通常周波数で動作している。また、ローパスフィルタ75およびローパスフィルタ3の遮断周波数は、互いに同じに設定されている。したがって、ローパスフィルタ75は、その係数レジスタ35が、ローパスフィルタ3の係数レジスタ35(45)と共用されていても、何ら支障なく、高域成分を遮断できる。
上記構成では、制御回路61の指示に従って、上記出力セレクタ75が、ダウンサンプリングしたバンドパスフィルタ11の出力信号を選択し、出力スイッチ76がローパスフィルタ75の出力信号を選択すると、出力端子Toutからは、ダウンサンプリングしたバンドパスフィルタ11の出力信号が、ローパスフィルタ75を介した後で出力される。
したがって、出力端子Toutの外部に接続された回路が、ダウンサンプリングしたバンドパスフィルタ11の出力信号をアップサンプリングする場合であっても、回路規模をあまり増大させることなく、エイリアシング誤差の発生を抑制できる。
なお、上記では、検出システム1の各部材が、特にソフトウェアを使用せず、加算器、乗算器などのハードウェア回路によって実現されている場合について説明したが、これに限るものではない。各部材の全部または一部を、上述した機能を実現するためのプログラムと、そのプログラムを実行するハードウェア(コンピュータ)との組み合わせで実現してもよい。
いずれの場合であっても、各フィルタ部2からの出力信号(より詳細には、各判定部13の判定結果)の時間変化が、予め定められたパターンにマッチしているか否かを判定できれば、上述した検出システム1と同様に、異常の発生を的確に検出できる。
ただし、上記各FIRデジタルフィルタをソフトウェアとコンピュータとの組み合わせによって実現した場合、上記演算周期Tcで各演算を実施させるために、コンピュータの動作周波数を大幅に高く設定する必要があり、消費電力を大幅に増大させてしまう。したって、消費電力の削減が要求される場合には、上述したように、ハードウェア回路によって実現する方が望ましい。
また、上記では、FIRデジタルフィルタ31に2つのメモリ32・33を設け、加算を乗算よりも先に実行することによって、繰り返し回数をn/2回に削減する構成について説明したが、これに限るものではない。例えば、1つのメモリのみを設け、乗算および累算をn回繰り返してもよい。
なお、上記では、各フィルタ部2からの出力信号(より詳細には、各判定部13の判定結果)の時間変化が、予め定められたパターンにマッチしているか否かを判定するために、複数のフィルタ部2を並列に設ける構成について説明したが、これに限るものではない。
これらの場合であっても、以下の構成、すなわち、バンドパスフィルタの演算回路が、当該バンドパスフィルタが通常周波数で動作する場合、当該バンドパスフィルタのメモリに代えて、上記ローパスフィルタの記憶回路に格納されたデジタル値と、当該バンドパスフィルタのフィルタ係数との積和演算結果を算出する構成であれば、高速動作する必要がある箇所を制限でき、かつ、デジタルフィルタ回路全体の回路規模をあまり増大させることなく、消費電力を削減できる。
また、当該構成に代えて/加えて、バンドパスフィルタがダウンサンプリング時の周波数で動作する場合に、バンドパスフィルタの入力信号および出力信号から、それぞれ高周波成分を除去する入力側および出力側ローパスフィルタを備え、当該入力側ローパスフィルタの係数レジスタを、上記出力側ローパスフィルタの係数レジスタとする構成であれば、デジタルフィルタ回路全体の回路規模をあまり増大させることなく、消費電力を削減できる。
なお、上記では、音声信号処理を例にして説明したが、これに限るものではない。電気波形に変換できるものであれば、例えば、振動や、モータの回転周波数などを示す信号であっても、同様の効果が得られる。