JP2005252389A - デジタルフィルタ - Google Patents
デジタルフィルタ Download PDFInfo
- Publication number
- JP2005252389A JP2005252389A JP2004056641A JP2004056641A JP2005252389A JP 2005252389 A JP2005252389 A JP 2005252389A JP 2004056641 A JP2004056641 A JP 2004056641A JP 2004056641 A JP2004056641 A JP 2004056641A JP 2005252389 A JP2005252389 A JP 2005252389A
- Authority
- JP
- Japan
- Prior art keywords
- data
- filter
- storage area
- filter coefficient
- data storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03H—IMPEDANCE NETWORKS, e.g. RESONANT CIRCUITS; RESONATORS
- H03H17/00—Networks using digital techniques
- H03H17/02—Frequency selective networks
- H03H17/06—Non-recursive filters
- H03H17/0607—Non-recursive filters comprising a ROM addressed by the input data signals
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Mathematical Physics (AREA)
- Complex Calculations (AREA)
Abstract
【課題】フィルタ演算を行なう際の処理負荷や処理時間を改善したデジタルフィルタを提供すること。
【解決手段】一定時間周期でサンプリングされるN個のデータに対して各々対応するフィルタ係数を乗じた後に積算することによってフィルタ演算を行なう。データは、N個記憶され、フィルタ係数は、N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、2組分マイナス1個だけ記憶しておく、そして、N個のデータ、及びN個のデータ記憶領域の先頭に記憶されているデータに対応するフィルタ係数から順にN個のフィルタ係数を読み出してフィルタ演算を行なう。これにより、データ及びフィルタ係数の読み出しに要する処理負荷が低減でき、フィルタ演算の処理時間を改善できる。
【選択図】 図7
【解決手段】一定時間周期でサンプリングされるN個のデータに対して各々対応するフィルタ係数を乗じた後に積算することによってフィルタ演算を行なう。データは、N個記憶され、フィルタ係数は、N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、2組分マイナス1個だけ記憶しておく、そして、N個のデータ、及びN個のデータ記憶領域の先頭に記憶されているデータに対応するフィルタ係数から順にN個のフィルタ係数を読み出してフィルタ演算を行なう。これにより、データ及びフィルタ係数の読み出しに要する処理負荷が低減でき、フィルタ演算の処理時間を改善できる。
【選択図】 図7
Description
本発明は、一定時間間隔で取得される複数のデータに対して、各々フィルタ係数を乗じた後に積算することによってフィルタ演算(畳み込み演算)を行なうデジタルフィルタに関するものである。本発明によるデジタルフィルタは、例えば、エンジンECUにおいて、エンジンノックの発生を検出するために、エンジンの振動周波数をフィルタ処理する際に利用できる。
上述したようなフィルタ演算を行なうデジタルフィルタとして、FIR(Finite Impulse Response :有限インパルス応答)フィルタが広く知られている。このFIRフィルタにおいては、例えば、一定時間周期で入力される入力データをRAM等に記憶する際に、記憶領域において各データを一つずつ順送りさせることにより、最新のデータを記憶する際に、最も古いデータを削除する。これにより、記憶領域には、最新のデータから順に古くなる所定個数のデータが記憶されることになる。
しかし、このようなデータ順送り方法では、フィルタ演算に用いるデータ数が多くなると、移動させなければならないデータが増え、データ移動のために演算処理負荷が増加するとの問題が生じる。
また、入力データの記憶にリングバッファを用いて、最も古いデータを最新データに置き換え、その間のデータはそのままにしておくという方法もある。ただし、この場合、データとフィルタ係数との対応付けを行なうため、リングバッファのデータを時系列に並び替えて他のバッファに格納したりすることが必要になる。この場合、並べ替えた後のデータを記憶する記憶領域が必要になったり、その並べ替えのために演算処理負荷が増加したりするとの問題が生じる。
また、リングバッファを用いた場合、そのリングバッファ上で読み出すべきデータのアドレスを相対的に指定することによっても、フィルタ係数の対応付けを行なうことができる。しかしながら、この場合、データの読出し毎に、そのデータを記憶している領域のアドレスが最後尾アドレスに達したかどうかを判定し、最後尾アドレスの次は先頭アドレスへ戻すといった判定・復帰処理が必要となり、やはり演算処理負荷が増加してしまう。
このような問題点を解決できるデジタルフィルタが、本出願人により出願され公開された特許文献1に記載されている。
この特許文献1のデジタルフィルタでは、フィルタ演算に必要なデータ個数Nの2倍である2N個分のデータを各々記憶する2N個の記憶領域をRAMに設けている。そして、A/D変換された最新データをRAMに記憶する際に、データN個分離れた2つの記憶領域に同一の最新データを記憶させる。その最新データの記憶先は、最新データが記憶される度に1ずつ進められ、同一のデータが格納される2つの記憶領域の一方が末尾の記憶領域になると、最新データの記憶先は、先頭の記憶領域とそれからN個分離れた記憶領域とに戻される。
このような形式でデータを記憶すると、フィルタ演算に使用するN個分のデータは、同じデータが記憶される2つの記憶領域間で、連続する記憶領域に格納されることになる。そのため、各記憶領域からデータを取り出す際に、単に連続的にアドレスを更新するのみで足り、そのアドレスが最後尾アドレスに達したかどうかを判定する処理等が不要となる。このため、演算処理負荷を減少することができ、フィルタ演算の処理速度を向上することができる。
特開2003−87098号公報
しかしながら、上述した特許文献1に記載されたデジタルフィルタでは、同一の最新データを2箇所の記憶領域に記憶させており、そのための処理時間が余計に必要であった。すなわち、上述した従来のデジタルフィルタでは、フィルタ演算を行なう際の処理負荷や処理時間に関して、改善の余地が残されている。
本発明は、上記した点に鑑みてなされたものであり、フィルタ演算を行なう際の処理負荷や処理時間を改善したデジタルフィルタを提供することを目的とするものである。
上記目的を達成するために、請求項1に記載のデジタルフィルタは、一定時間周期でサンプリングされる複数のデータに対して各々フィルタ係数を乗じた後に積算することによってフィルタ演算を行なうものであって、
データに関して、最新データ及び過去データからなる計N個分のデータをそれぞれ記憶するN個のデータ記憶領域を有し、そのN個のデータ記憶領域の先頭から末尾にかけて時系列にデータを記憶するとともに、最新データの記憶先が末尾のデータ記憶領域まで達した場合に、その最新データ記憶先が先頭のデータ記憶領域に戻るデータ記憶手段と、
N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、2組分のフィルタ係数を記憶すべく2N個のフィルタ係数記憶領域を有するフィルタ係数記憶手段と、
2N個のフィルタ係数記憶領域において、N個のデータ記憶領域の先頭に記憶されているデータに対応するフィルタ係数が記憶されているフィルタ係数記憶領域を指示する指示手段とを備え、
指示手段によって指示されたフィルタ係数記憶領域を先頭として、それに続くフィルタ係数記憶領域から読み出されるN個のフィルタ係数を用いて、フィルタ演算を行なうことを特徴とする。
データに関して、最新データ及び過去データからなる計N個分のデータをそれぞれ記憶するN個のデータ記憶領域を有し、そのN個のデータ記憶領域の先頭から末尾にかけて時系列にデータを記憶するとともに、最新データの記憶先が末尾のデータ記憶領域まで達した場合に、その最新データ記憶先が先頭のデータ記憶領域に戻るデータ記憶手段と、
N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、2組分のフィルタ係数を記憶すべく2N個のフィルタ係数記憶領域を有するフィルタ係数記憶手段と、
2N個のフィルタ係数記憶領域において、N個のデータ記憶領域の先頭に記憶されているデータに対応するフィルタ係数が記憶されているフィルタ係数記憶領域を指示する指示手段とを備え、
指示手段によって指示されたフィルタ係数記憶領域を先頭として、それに続くフィルタ係数記憶領域から読み出されるN個のフィルタ係数を用いて、フィルタ演算を行なうことを特徴とする。
このように請求項1に記載のデジタルフィルタでは、最新データを2箇所の記憶領域に格納して2N個のデータを記憶保持するのではなく、2N個のフィルタ係数を記憶する。この2N個のフィルタ係数は、N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、2組分のフィルタ係数に相当する。
フィルタ演算では、先頭のデータ記憶領域に記憶されたデータから順に、対応するフィルタ係数と乗算される。その際、2組分のフィルタ係数を記憶しているので、その先頭のデータ記憶領域のデータに対応するフィルタの記憶領域が指示手段によって指示されれば、その後は、フィルタの記憶領域を順次更新することで、その後のデータに対応するフィルタ係数を連続したフィルタ係数記憶領域から読み出すことができる。従って、フィルタ係数記憶手段からのフィルタ係数の読出しに際しては、当然ではあるが、その記憶領域が末尾の記憶領域かどうかを判定する判定処理等は不要となる。
このように、請求項1に記載のデジタルフィルタでは、予め2組分のフィルタ係数を記憶しているので、上述した判定処理等を不要とし、かつ、同一のデータを2箇所の記憶領域に記憶させる必要もない。従って、従来のデジタルフィルタに比較して、さらに処理負荷の低減及び処理速度の向上を図ることが可能になる。
また、請求項2に記載のデジタルフィルタは、一定時間周期でサンプリングされる複数のデータに対して各々フィルタ係数を乗じた後に積算することによってフィルタ演算を行なうものであって、
データに関して、最新データ及び過去データからなる計N個分のデータをそれぞれ記憶するN個のデータ記憶領域を有し、そのN個のデータ記憶領域の先頭から末尾にかけて時系列にデータを記憶するとともに、最新データの記憶先が末尾のデータ記憶領域まで達した場合に、その最新データ記憶先が先頭のデータ記憶領域に戻るデータ記憶手段と、
N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、その2組分のフィルタ係数において、第1組目の最初のフィルタ係数と第2組目の最後のフィルタ係数とのいずれかを除いた2N−1個のフィルタ係数を記憶する2N−1個のフィルタ係数記憶領域を有するフィルタ係数記憶手段と、
2N−1個のフィルタ係数記憶領域において、N個のデータ記憶領域の先頭に記憶されているデータに対応するフィルタ係数が記憶されているフィルタ係数記憶領域を指示する指示手段とを備え、
指示手段によって指示されたフィルタ係数記憶領域を先頭として、それに続くフィルタ係数記憶領域から読み出されるN個のフィルタ係数を用いて、フィルタ演算を行なうことを特徴とする。
データに関して、最新データ及び過去データからなる計N個分のデータをそれぞれ記憶するN個のデータ記憶領域を有し、そのN個のデータ記憶領域の先頭から末尾にかけて時系列にデータを記憶するとともに、最新データの記憶先が末尾のデータ記憶領域まで達した場合に、その最新データ記憶先が先頭のデータ記憶領域に戻るデータ記憶手段と、
N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、その2組分のフィルタ係数において、第1組目の最初のフィルタ係数と第2組目の最後のフィルタ係数とのいずれかを除いた2N−1個のフィルタ係数を記憶する2N−1個のフィルタ係数記憶領域を有するフィルタ係数記憶手段と、
2N−1個のフィルタ係数記憶領域において、N個のデータ記憶領域の先頭に記憶されているデータに対応するフィルタ係数が記憶されているフィルタ係数記憶領域を指示する指示手段とを備え、
指示手段によって指示されたフィルタ係数記憶領域を先頭として、それに続くフィルタ係数記憶領域から読み出されるN個のフィルタ係数を用いて、フィルタ演算を行なうことを特徴とする。
上述したように、請求項2に記載のデジタルフィルタでは、請求項1に記載のデジタルフィルタと異なり、N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、その2組分のフィルタ係数において、第1組目の最初のフィルタ係数と第2組目の最後のフィルタ係数とのいずれかを除いた2N−1個のフィルタ係数を記憶する。
ここで、フィルタ係数の記憶領域が末尾の記憶領域かどうかの判定処理を不要とするためには、常にN個のフィルタ係数を連続した記憶領域から取り出すことが可能であれば良い。2組分のフィルタ係数を記憶した場合、フィルタ係数の取出範囲がそれぞれの組に跨らず、第1組目あるいは第2組目のフィルタ係数が単独で取り出されるときに、全く同じフィルタ係数の組合せとなる。すなわち、厳密に考えれば、N個のフィルタ係数を連続した記憶領域から読み出すためには、2組分のフィルタ係数は過剰であり、2組分から1個だけ減らした2N−1個のフィルタ係数が記憶されていれば足りる。
請求項3に記載したように、指示手段は、最新データがデータ記憶手段のいずれかのデータ記憶領域に記憶される度に、指示すべきフィルタ係数記憶領域を1つずらすように構成することができる。これにより、簡単な構成で指示手段を実現することができる。
以下、本発明の実施形態に係るデジタルフィルタを図面を参照しつつ説明する。本実施形態のデジタルフィルタは、例えば自動車用センサの検出信号を取り込む車載ECU等により実現される。
図1は、本実施形態によるデジタルフィルタを、自動車のエンジンのノック検出のため、ノックセンサの検出信号に対するフィルタ処理に適用した場合の構成を示すブロック図である。この適用例では、図1に示すように、複数のノックセンサ(第1及び第2ノックセンサ)が設けられており、それぞれ、図示しないエンジンの振動の大きさ及び周波数を示すノック信号を出力する。図2(a)に、ノックセンサから出力されるノック信号波形の一例を示す。
なお、複数のノックセンサが設けられているのは、通常、自動車のエンジンが複数気筒からなるためである。例えば、ノックセンサは、2気筒当たり1個程度の割合で、エンジンに設けられる。
センサセレクタ10は、複数のノックセンサのノック信号から1つのノック信号を選択して、後段のプリアンプ20に出力するものである。このセンサセレクタ10は、所定の周期で、選択するノック信号を切り換える。プリアンプ20は、センサセレクタ10から出力されたノック信号を増幅する。プリアンプ20によって増幅されたノック信号は、ローパスフィルタ(LPF)30に入力されて、ノックの発生を判定する際にノイズ成分となる高周波成分を除去する。
上述したセンサセレクタ10、プリアンプ20、及びLPF30は、後述するエンジン制御装置(ECU)40の外部に、アナログ回路として構成される。
LPF30によって高周波成分が除去されたノック信号は、ECU40に入力される。ECU40は、アナログデジタル変換器(A/D)50、デジタルフィルタ部60、及びノック判定部70を備える。
ECU40に入力されたノック信号は、まずA/D50によって、アナログ信号からデジタル信号に変換される。このデジタル信号への変換処理は、一定時間周期でノック信号(アナログ信号)をサンプリングし、このサンプリングしたノック信号に対して実施される。
デジタル信号に変換されたノック信号はデジタルフィルタ部60に入力される。デジタルフィルタ部60は、入力信号(入力データ)に対して複数の所定周波数帯域に属する信号成分のみを抽出するバンドパスフィルタ(BPF)処理を実行する。このフィルタ処理により、例えば、中心周波数を11.5kHz,7.7kHz,及び5.6kHzとし、所定の帯域幅を有する周波数帯域の信号成分が抽出される。すなわち、図1に示すように、機能的に、デジタルフィルタ部60は複数のBPF60a〜60cを備えるものである。これらのBPF60a〜60cによってフィルタ処理された結果としての信号波形の一例を図2(b)に示す。なお、デジタルフィルタ部60の構成及び作用については後に詳細に説明する。
ノック判定部70は、デジタルフィルタ部60によってフィルタ処理された各周波数帯域の信号に基づいて、ノックが発生したか否かを判定する。すなわち、このノック判定部70においては、例えば、フィルタ処理された各周波数帯域の信号が、図2(c)に示すノック発生時の特徴パターンを備えているか否かをパターンマッチングによって判定し、その特徴パターンに対しての近似度が高ければノックが発生したと判定する。このようにノック信号に対してデジタルフィルタを用いて周波数解析処理を実施することにより、ノック判定における耐ノイズ性、ひいては判定精度を向上することができる。
なお、図示してはいないが、ECU40は、ノックの発生を判定した場合、エンジンの点火装置における点火時期を遅角させるように制御してノックの発生を抑制する。
上述したように、本実施形態では、エンジン制御を実行するECU40にて、デジタルフィルタ処理を実施するように構成されている。しかしながら、このような車載ECU40にて、従来のデジタルフィルタを用いて周波数解析処理を実施すると、ECU40はコスト等の問題からそれほど高性能なものを採用できないため、本来のエンジン制御に影響を与えるどころか、ECU40で動作するプログラムをノック判定用の周波数解析処理だけに限定しても、処理遅れが発生し、その動作に支障をきたす可能性がある。
デジタルフィルタの周波数解析処理の中で最も処理負荷が高くなる部分は、後述する畳み込み演算に関する処理であり、この演算処理量を低減できれば、ECU40にて、デジタルフィルタを用いた周波数解析処理を実施することも可能になる。
以下、本実施形態におけるデジタルフィルタ部60の構成及び作用について説明する。この説明により、デジタルフィルタ部60における畳み込み演算に関する演算処理量が、いかにして低減できるのかが理解される。
図3は、デジタルフィルタ部60の概略構成を示すブロック図である。図3に示すように、デジタルフィルタ部60は、データバッファ62、フィルタ係数記憶部64、演算部66、及びフィルタ結果格納バッファ68を備える。
データバッファ62は、最新データ及び過去データからなる計N個分のデータを時系列的に格納して記憶するためにN個のデータ記憶領域を有している。そして、データバッファ62は、N個のデータ記憶領域の先頭から末尾にかけて時系列にデータを記憶するとともに、最新データの記憶先が末尾のデータ記憶領域まで達した場合に、その最新データ記憶先を先頭のデータ記憶領域に戻す、いわゆるリングバッファとして構成されている。
図4(a)〜(d)は、データバッファ62における、最新データの記憶先となるデータ記憶領域の推移を示す説明図である。図4(a)は、先頭のデータ記憶領域に、その時点での最新データであるData1が書き込まれて記憶された状態を示している。このように、データData1の書き込みが完了すると、最新データの記憶先を示すバッファポインタDataPosが1進んで、2番目のデータ記憶領域を指示することになる。
図4(b)は、最新データの記憶先を示すバッファポインタDataPosを1つづつ進めながら、Data2〜DataN−1が、各データ記憶領域に書き込まれた状態を示す。そして、次に最新データDataNの書き込みを行なうときには、図4(c)に示すように、末尾となるN番目のデータ記憶領域に書き込むとともに、その書き込みの完了に伴なって、バッファポインタDataPosによる指示位置が先頭のデータ記憶領域に戻る。このため、次回の最新データDataN+1の書き込みは、図4(d)に示すように、先頭のデータ記憶領域に対して実行される。
このように、リングバッファ62においては、バッファポインタを用いて、最新データの記憶先が、先頭のデータ記憶領域から末尾のデータ記憶領域にかけて循環し、常に、最新データからN番目までの古さを持った過去データまでのN個のデータが記憶保持される。
そして、最新データの書き込み完了タイミングにおいて、上述したN個のデータを順次読み出すとともに、フィルタ係数記憶部64からもその読出しデータに対応するフィルタ係数を順次読み出すことにより、フィルタ演算としての畳み込み演算を実施する。なお、異なる複数の周波数帯域に関するバンドパスフィルタ処理を行なうには、周波数帯域毎に設定された異なるフィルタ係数の組を用いて、それぞれ畳み込み演算を行なう必要がある。
この畳み込み演算について、図5を用いて簡単に説明する。図5に示すように、畳み込み演算は、N個の入力データと、それらに対応するN個のフィルタ係数とをそれぞれ乗算し、さらに積算することによって実行されるものである。このように、フィルタ演算を行なう際には、畳み込み演算そのものとしての積和演算と入力データ及びフィルタ係数に関するデータ読出処理とが大量に発生する。さらに、このようなフィルタ演算は、最新データがデータ記憶領域に記憶される度に実行され、その実行頻度も高くなる。従って、このフィルタ演算に関する演算処理量を極力低減することが、ECU40の処理負荷を低減するために重要となる。
そのため、本実施形態では、図6に示すように、フィルタ係数記憶部64に、2N−1個のフィルタ係数を記憶するフィルタ係数記憶領域を設けた。そして、N個の入力データに対応するN個のフィルタ係数(FilterData1, FilterData2, …, FilterDataN)を1組としたときに、その2組分のフィルタ係数において、第1組目の最初のフィルタ係数FilterData1を除いて、第1組目のフィルタ係数と第2組目のフィルタ係数とを順番にフィルタ係数記憶領域に記憶させた。これにより、フィルタ演算における演算処理量を、従来よりもさらに低減することができる。その理由を図6及び図7を用いて説明する。
図6に示すように、本実施形態では、フィルタ係数記憶部64の連続した記憶領域に、2組分マイナス1個のフィルタ係数を記憶している。このため、図7に示すように、先頭のデータ記憶領域のデータに対応するフィルタ係数の記憶領域を畳み込み開始ポインタFilPosによって指示することにより、データ記憶領域に記憶されたデータ順に、対応するフィルタ係数を簡単に読み出すことができる。
つまり、フィルタ係数の読出しにおいて、その記憶領域が末尾の記憶領域かどうかを判定する必要がなくなり、単に、畳み込み開始ポインタFilPosの位置を1つづつ更新することで、対応するフィルタ係数を連続したフィルタ係数記憶領域から読み出すことができる。
なお、図7に示す例では、データバッファ62の先頭のデータ記憶領域に最新データDataN+1が記憶され。2番目の記憶領域に最も古いデータData2が記憶されている。これに対応して、畳み込み開始ポインタFilPosが、1組目のフィルタ係数を記憶するフィルタ係数記憶領域における、末尾の記憶領域を指示する位置となっている。これにより、畳み込み開始ポインタFilPosの指示位置のフィルタ係数記憶領域から順にN個のフィルタ係数を読み出すと、まず最新データに対応するフィルタ係数FilterDataNが読み出され、その後、最も古いデータに対応するフィルタ係数FilterData1から2番目に新しいデータに対応するフィルタ係数FilterDataN-1まで順番に読み出される。
従って、フィルタ演算において、データバッファ62に関しては先頭のデータ記憶領域から、フィルタ係数記憶部64に関しては畳み込み開始ポインタFilPosが指示するフィルタ係数記憶領域から、それぞれ順番にN個のデータ及びフィルタ係数を読み出して、上述した畳み込み演算を行なうことが可能になるので、特にデータの読出しに関する処理量を大きく低減できる。
さらに、本実施形態では、入力データを2N−1個用意するのではなく、2N−1個のフィルタ係数をフィルタ係数記憶部64に記憶させているので、従来のように、同一のデータを2箇所のデータ記憶領域に記憶させる必要もない。従って、従来のデジタルフィルタに比較して、さらにフィルタ演算処理のための処理量を低減することができるのである。
なお、畳み込み開始ポインタFilPosは、連続したフィルタ係数記憶領域からN個のフィルタ係数を読み出すために、図6に示すように、第1組目の先頭のフィルタ係数記憶領域を指示する位置(FilPos=1)から第2組目の先頭のフィルタ係数記憶領域を指示する位置(FilPos=DATA_MAX)間を移動する。
次に、上述したフィルタ処理を行なうための具体的な処理内容について、図8〜図13のフローチャートを用いて説明する。図8は、ECU40の電源が投入された時に実施される初期処理を示すフローチャートであり、図9は、ノック信号のサンプリングタイミングとなって、A/D50によってA/D変換が行なわれた場合に、そのA/D変換出力に基づく割込みによって実行される処理の全体を示すフローチャートである。また、図10〜図13は、図9における各処理の詳細を示すフローチャートである。
ECU40の電源が投入されると、図8に示すように、まずステップS10において、畳み込み開始ポインタFilPosの指示位置をDATA_MAX、すなわち、2組目のフィルタ係数を記憶する記憶領域の先頭に設定する。これは、データバッファ62の先頭のデータ記憶領域から順に時系列にA/D入力データが格納されていくためである。
次に、ステップS20において、A/D50からのA/D入力データの記憶先を示すバッファポインタDataPosを1に設定する。これによって、データバッファ62の先頭のデータ記憶領域がデータ記憶先に指定される。ステップS30では、フィルタ演算結果格納バッファ68における、フィルタ結果の格納位置を示す格納位置ポインタStorePosを1に設定する。これによって、フィルタ結果格納バッファ68における、先頭のフィルタ結果記憶領域がフィルタ結果格納先に指定される。
次に、図9を用いて、A/D50からA/D変換されたデータが入力されたときの処理の全体について説明する。まず、ステップS100では、A/D値の取得処理を行なう。すなわち、A/D50から入力されたデータを、バッファポインタDataPosによって指示されるデータ記憶領域に書き込む。
具体的には、図10に示すように、ステップS110において、バッファポインタDataPosによって指示されるデータ記憶領域Data[DataPos]にA/D値を書き込む。そして、ステップS120にて、バッファポインタDataPosが、畳み込み演算に利用されるデータ数Nに相当するDATA_MAXよりも小さいか否かを判定する。この判定において「yes」と判定されると、ステップS130に進んで、バッファポインタDataPosを1だけインクリメントする。一方、ステップS120にて「no」と判定された場合には、ステップS140に進んで、バッファポインタDataPosを1に戻す。
上述したステップS120〜S140の処理は、次回のA/D値の記憶先を示すようにバッファポインタDataPosの値を変更するためのものである。この処理により、バッファポインタDataPosは1から順にDATA_MAXまで増加され、DATA_MAXに達すると1に戻される。
A/D値取得処理が終了すると、図9のステップS200にて、フィルタ演算処理が実施される。このフィルタ演算処理を、図11のフローチャートに基づいて詳しく説明する。なお、このフィルタ演算処理は、A/D値の取得を開始した後に、N個のA/D値がデータバッファ62に記憶された時点から開始される。
まず、図11のステップS210では、変数iを1に設定し、ステップS220にて、フィルタ結果FilResultをクリアする。そして、ステップS230にて、変数iが畳み込み演算に利用されるデータ数Nに相当するDATA_MAXよりも小さいか否かを判定する。ここで「no」と判定されると、必要な畳み込み演算がまだ完了していないため、ステップS240に進んで、畳み込み演算を実行する。
このステップS240では、変数iを用いて、データバッファ62の先頭のデータ格納領域から末尾のデータ格納領域に向けて順番にA/D入力データData[i]を読み出すとともに、変数i及び畳み込み開始ポインタFilPosを用いて、読み出したA/D入力データData[i]に対応するフィルタ係数Fil[i‐1+FilPos]を読み出して、両方を乗算する。その乗算結果は、フィルタ結果FilResultに加算される。
ステップS250では、変数iをインクリメントして、ステップS230の処理に戻る。このようにしてステップS230〜ステップS250の処理が繰り返されることにより、変数iの値がDATA_MAXに達すると、それはN個のA/D入力データについて畳み込み演算が完了したことを意味する。このため、ステップS230での判定が「no」となり、図11に示すフィルタ演算処理を終了する。
フィルタ演算処理が終了すると、次に、図9に示すように、ステップS300にて畳み込み開始ポインタFilPosの算出処理を行なう。この畳み込み開始ポインタFilPosの算出処理の詳細を図12のフローチャートに示す。
図12に示すように、まずステップS310において、畳み込み開始ポインタFilPosが1より大きいか否かを判定する。1より大きいと判定された場合には、ステップS320に進んで、畳み込み開始ポインタFilPosを1だけデクリメントする。このデクリメントによって畳み込み開始ポインタFilPosがDATA_MAXから1まで減少すると、ステップS310にて「no」と判定され、ステップS330に進む。
ステップS330では、畳み込み開始ポインタFilPosの値をDATA_MAXに戻す。このようにして、N個のA/D入力データがデータバッファ62に記憶された後、データのA/D値が入力されるごとに、畳み込み開始ポインタFilPosの値をDATA_MAXから1に向かって減少させることにより、常にデータバッファ62の先頭のデータ記憶領域に記憶されるデータに対応するフィルタ係数の記憶領域を指示することができるようになる。
畳み込み開始ポインタFilPosの算出処理が終了すると、次に、図9に示すように、ステップS400にてフィルタ結果FilResultの格納処理が実施される。このフィルタ結果FilResultの格納処理について、図13のフローチャートを用いて説明する。
まず、ステップS410では、フィルタ結果FilResultの格納位置を示す格納位置ポインタStorePosが、格納可能な畳み込み演算結果の最大数STOREMAXよりも小さいか否かを判定する。このとき「yes」と判定されると、ステップS420に進んで、格納位置ポインタStorePosを1だけインクリメントする。一方、格納位置ポインタStorePosが最大数STOREMAXに達しており、「no」と判定された場合には、ステップS430に進んで、格納位置ポインタStorePosの値を1に設定する。
最後にステップS440では、このようにして算出された格納位置ポインタStorePosによって指示されるフィルタ結果記憶領域Result[StorePos]に、フィルタ結果FilResultの値を格納する。これにより、図2(b)に示すようなデジタルフィルタ処理結果が得られる。
以上、本発明の好ましい実施形態について説明したが、本発明は、上記の実施形態に制限されることなく、本発明の主旨を逸脱しない範囲において、種々、変形して実施することが可能である。
例えば、上述した実施形態においては、2N−1個のフィルタ係数を記憶する際に、1組目の最初のフィルタ係数FilterData1を除外したが、2組目の最後のフィルタ係数FilterDataNを除外するようにしても良い。ただし、このように2組目の最後のフィルタ係数FilterDataNを除外した場合には、畳み込み開始ポインタFilPosの初期値を1とする必要がある。
また、上述した実施形態においては、2N−1個のフィルタ係数を用いていたが、2N−1個よりも多い数のフィルタ係数、例えば2N個のフィルタ係数を用いても良い。2N個のフィルタ係数を用いる場合には、1組目の先頭あるいは2組目の最後のフィルタ係数を除外することなく、2組のフィルタ係数が順番に記憶される。
フィルタ係数の記憶領域が末尾の記憶領域かどうかの判定処理を不要とするためには、常にN個のフィルタ係数を連続した記憶領域から取り出すことが可能であれば良い。そのためには最低限2N−1個のフィルタ係数が記憶されていれば足りるが、それよりも多いフィルタ係数を用いて、畳み込み演算を行なうことも可能である。
さらに、上述した実施形態では、畳み込み演算開始ポインタFilPosを用いて、2N−1個のフィルタ係数記憶領域におけるフィルタ係数読み出し開始位置を定めていたが、例えば、データバッファ62におけるバッファポインタDataPosを参照して、フィルタ係数読出し開始位置を定めることも可能である。
40 ECU
50 A/D
60 デジタルフィルタ部
62 データバッファ
64 フィルタ係数記憶部
66 演算部
68 フィルタ結果格納バッファ
50 A/D
60 デジタルフィルタ部
62 データバッファ
64 フィルタ係数記憶部
66 演算部
68 フィルタ結果格納バッファ
Claims (3)
- 一定時間周期でサンプリングされる複数のデータに対して各々フィルタ係数を乗じた後に積算することによってフィルタ演算を行なうデジタルフィルタであって、
前記データに関して、最新データ及び過去データからなる計N個分のデータをそれぞれ記憶するN個のデータ記憶領域を有し、そのN個のデータ記憶領域の先頭から末尾にかけて時系列にデータを記憶するとともに、最新データの記憶先が末尾のデータ記憶領域まで達した場合に、その最新データ記憶先が先頭のデータ記憶領域に戻るデータ記憶手段と、
前記N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、2組分のフィルタ係数を記憶すべく2N個のフィルタ係数記憶領域を有するフィルタ係数記憶手段と、
前記2N個のフィルタ係数記憶領域において、前記N個のデータ記憶領域の先頭に記憶されているデータに対応するフィルタ係数が記憶されているフィルタ係数記憶領域を指示する指示手段とを備え、
前記指示手段によって指示されたフィルタ係数記憶領域を先頭として、それに続くフィルタ係数記憶領域から読み出されるN個のフィルタ係数を用いて、前記フィルタ演算を行なうことを特徴とするデジタルフィルタ。 - 一定時間周期でサンプリングされる複数のデータに対して各々フィルタ係数を乗じた後に積算することによってフィルタ演算を行なうデジタルフィルタであって、
前記データに関して、最新データ及び過去データからなる計N個分のデータをそれぞれ記憶するN個のデータ記憶領域を有し、そのN個のデータ記憶領域の先頭から末尾にかけて時系列にデータを記憶するとともに、最新データの記憶先が末尾のデータ記憶領域まで達した場合に、その最新データ記憶先が先頭のデータ記憶領域に戻るデータ記憶手段と、
前記N個のデータの各々に対応するN個のフィルタ係数を1組としたとき、その2組分のフィルタ係数において、第1組目の最初のフィルタ係数と第2組目の最後のフィルタ係数とのいずれかを除いた2N−1個のフィルタ係数を記憶する2N−1個のフィルタ係数記憶領域を有するフィルタ係数記憶手段と、
前記2N−1個のフィルタ係数記憶領域において、前記N個のデータ記憶領域の先頭に記憶されているデータに対応するフィルタ係数が記憶されているフィルタ係数記憶領域を指示する指示手段とを備え、
前記指示手段によって指示されたフィルタ係数記憶領域を先頭として、それに続くフィルタ係数記憶領域から読み出されるN個のフィルタ係数を用いて、前記フィルタ演算を行なうことを特徴とするデジタルフィルタ。 - 前記指示手段は、前記最新データが前記データ記憶手段のいずれかのデータ記憶領域に記憶される度に、指示すべきフィルタ係数記憶領域を1つずらすように構成されていることを特徴とする請求項1又は請求項2に記載のデジタルフィルタ。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004056641A JP2005252389A (ja) | 2004-03-01 | 2004-03-01 | デジタルフィルタ |
US11/065,261 US20050190831A1 (en) | 2004-03-01 | 2005-02-25 | Digital filter enabling consecutive readout of filter coefficients from a continuous sequence of storage locations during convolution calculation |
DE102005009370A DE102005009370A1 (de) | 2004-03-01 | 2005-03-01 | Digitales Filter, das ein fortlaufendes Auslesen von Filterkoeffizienten aus einer kontinuierlichen Sequenz von Speicherorten während einer Faltungsberechnung erlaubt |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2004056641A JP2005252389A (ja) | 2004-03-01 | 2004-03-01 | デジタルフィルタ |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2005252389A true JP2005252389A (ja) | 2005-09-15 |
Family
ID=34879826
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2004056641A Pending JP2005252389A (ja) | 2004-03-01 | 2004-03-01 | デジタルフィルタ |
Country Status (3)
Country | Link |
---|---|
US (1) | US20050190831A1 (ja) |
JP (1) | JP2005252389A (ja) |
DE (1) | DE102005009370A1 (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE102008011614B4 (de) * | 2008-02-28 | 2011-06-01 | Continental Automotive Gmbh | Vorrichtung zur Verarbeitung eines Klopfsensorsignals |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5475628A (en) * | 1992-09-30 | 1995-12-12 | Analog Devices, Inc. | Asynchronous digital sample rate converter |
-
2004
- 2004-03-01 JP JP2004056641A patent/JP2005252389A/ja active Pending
-
2005
- 2005-02-25 US US11/065,261 patent/US20050190831A1/en not_active Abandoned
- 2005-03-01 DE DE102005009370A patent/DE102005009370A1/de not_active Withdrawn
Also Published As
Publication number | Publication date |
---|---|
US20050190831A1 (en) | 2005-09-01 |
DE102005009370A1 (de) | 2005-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP4134797B2 (ja) | ノッキング検出装置 | |
JP2587543B2 (ja) | ノッキング検出装置 | |
JPH0322770B2 (ja) | ||
JP3066241B2 (ja) | ディジタルフィルタ及び同ディジタルフィルタを用いたオーバサンプリング型アナログ/ディジタル変換器 | |
JP2008057418A (ja) | 車両用データ記録装置 | |
JP2005252389A (ja) | デジタルフィルタ | |
JP2006161645A (ja) | パワートレイン制御用センサ信号処理装置 | |
JP6311601B2 (ja) | 多段フィルタ処理装置及び方法 | |
JP4464380B2 (ja) | デジタルフィルタ | |
JP4420542B2 (ja) | 波形記録装置 | |
JP5033101B2 (ja) | D/aコンバータ | |
JP2003087098A (ja) | デジタルフィルタ | |
JP2817179B2 (ja) | デジタルストレージ・オシロスコープ | |
CN114650033B (zh) | 一种基于dsp的快速滤波方法 | |
JPH0235568B2 (ja) | ||
CN1937404B (zh) | 滤波器组及改善其效能的方法 | |
JP3007256B2 (ja) | 速度可変データ入力制御装置 | |
JP2622962B2 (ja) | Fftアナライザのズーミング装置 | |
JP2021153262A (ja) | フィルタ装置、送信システム、および受信システム | |
JPH07109973B2 (ja) | デジタル信号処理回路 | |
JP3274182B2 (ja) | 車載用データ入力装置 | |
JP3021093U (ja) | デジタルフィルタ | |
JP3759360B2 (ja) | 波形測定装置 | |
JPS58147223A (ja) | デイジタルフイルタ | |
JPS61296393A (ja) | 残響付加装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20060424 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20090317 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20090714 |