(57)【特許請求の範囲】
【請求項１】
回転軸が所定角度回転する毎に、そのことを示すタイミングエッジが発生する回転信号と、該回転信号に前記タイミングエッジが発生してから該タイミングエッジが次に発生するまでのパルス間隔の最小時間よりも短い一定時間毎に所定の機器により発生される検出対象のデータとが、入力される信号処理装置であって、
所定回数分の前記パルス間隔である単位間隔毎に、その単位間隔において発生した前記データを、該データの発生順が識別可能に第１メモリに記憶すると共に、その単位間隔において前記第１メモリに記憶した前記データの数であるデータ数を計数する記憶制御手段と、
前記単位間隔が終了する毎に動作し、今回終了した前記単位間隔について前記記憶制御手段により計数された前記データ数を、所定の逓倍数を前記所定回数倍した値で割った除算値を求める除算値設定手段と、
前記単位間隔が終了する毎に動作し、前記除算値設定手段により求められた前記除算値を用いて、前記記憶制御手段により前記第１メモリに記憶された前記単位間隔分のデータのなかから、前記所定角度を前記逓倍数で割った角度だけ前記回転軸が回転する毎に発生されたデータである逓倍タイミングデータを選択すると共に、その選択した逓倍タイミングデータを前記第１メモリから第２メモリに転送する転送制御手段と、
を備えていることを特徴とする信号処理装置。
【請求項２】
請求項１に記載の信号処理装置において、
前記転送制御手段は、
前記記憶制御手段により前記第１メモリに記憶された前記単位間隔分のデータのなかから、１番目に発生したデータと、前記除算値を自然数倍した値を整数化処理した整数値よりも１だけ大きい値の順番で発生したデータを、前記逓倍タイミングデータとして選択するように構成されていること、
を特徴とする信号処理装置。
【請求項３】
請求項２に記載の信号処理装置において、
前記整数化処理は、切り捨て処理であること、
を特徴とする信号処理装置。
【請求項４】
請求項１ないし請求項３の何れか１項に記載の信号処理装置において、
前記所定回数は、１回であり、
前記回転信号には、前記回転軸の回転位置が基準位置に来たときに、前記タイミングエッジの発生間隔が、前記所定角度の所定数倍の角度だけ前記回転軸が回転するのに要する時間になる欠歯部が発生するようになっており、
前記回転信号に前記タイミングエッジが発生する毎に、今回発生した前記タイミングエッジが前記欠歯部の終了に該当する欠歯終了エッジであるか否かを判定する欠歯部判定手段を備え、
前記除算値設定手段は、前記欠歯部判定手段により前記タイミングエッジが前記欠歯終了エッジであると判定された場合には、前記記憶制御手段により計数された前記データ数を、前記逓倍数を前記所定数倍した値で割った除算値を求めること、
を特徴とする信号処理装置。
【請求項５】
請求項４に記載の信号処理装置において、
前記欠歯部判定手段は、
前記回転信号に前記タイミングエッジが発生する毎に動作し、今回終了した前記パルス間隔について前記記憶制御手段により計数された前記データ数と、前回終了した前記パルス間隔について前記記憶制御手段により計数された前記データ数とを比較することにより、今回発生した前記タイミングエッジが前記欠歯終了エッジであるか否かを判定すること、
を特徴とする信号処理装置。
【請求項６】
請求項１ないし請求項５の何れか１項に記載の信号処理装置において、
前記所定回数は、１回であること、
を特徴とする信号処理装置。
【請求項７】
請求項１ないし請求項６の何れか１項に記載の信号処理装置において、
前記回転軸は、エンジンのクランク軸であること、
を特徴とする信号処理装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、回転軸が一定角度回転したタイミング毎のデータをメモリに記憶するための信号処理装置に関する。
【背景技術】
【０００２】
例えば、エンジンを制御する装置においては、シリンダ内の圧力を検出する燃焼圧センサからの燃焼圧信号や、インジェクタに供給される燃料の圧力を検出する燃料圧センサからの燃料圧信号等、エンジンの制御に使用されるアナログセンサ信号を、Ａ／Ｄ変換器によりＡ／Ｄ変換し（デジタルデータに変換し）、その変換後のデータをエンジン制御用の制御処理に用いている。
【０００３】
また例えば、エンジンを制御する装置においては、エンジンのクランク軸の回転に同期してインジェクタや点火装置等を動作させるために、クランク軸が所定角度回転する毎にそのことを示すタイミングエッジが発生する回転信号が入力される。そして、回転信号としては、例えば、クランクセンサから出力されるクランク信号が知られており、そのクランク信号では、例えば１０°ＣＡ毎に特定方向のタイミングエッジが発生する。尚、「°」は角度の単位“度”の記号であり、「ＣＡ」とは、クランクアングル（クランク軸の回転角度）を意味している。
【０００４】
更に、例えば上記燃焼圧信号や燃料圧信号等、クランク軸の回転角度に関連性がある物理量を表す所定のセンサ信号については、回転信号の角度分解能（即ち、上記所定角度であり、回転信号にタイミングエッジが発生する間隔分のクランク角度）よりも小さい一定角度毎のデータを取得して処理することが要求されている。
【０００５】
ここで、その要望を実現するための方法としては、例えば、クランク信号から、そのクランク信号を逓倍した逓倍クロック（詳しくは、周期がクランク信号の周期の逓倍数分の１であるクロック）を生成すると共に、その逓倍クロックの想定最小周期よりも短い一定時間毎にセンサ信号をＡ／Ｄ変換器によりＡ／Ｄ変換し、そのＡ／Ｄ変換で一定時間毎に更新されるデータのうち、逓倍クロックの周期タイミング（詳しくは、逓倍クロックの１周期毎のタイミング）でのデータを、処理対象データ格納用のメモリに転送する方法が考えられる。尚、以下では、このような方法のことを、「逓倍クロック同期転送方式」という。
【０００６】
そして、逓倍クロックを生成するための手段は、クランク信号に所定角度毎のタイミングエッジが発生してから該タイミングエッジが次に発生するまでのパルス間隔（つまり、所定角度間隔）毎に、そのパルス間隔を計測するエッジ時間計測カウンタと、クランク信号にタイミングエッジが発生すると上記エッジ時間計測カウンタによる今回の計測値を逓倍数で除算した値がセットされるエッジ時間記憶レジスタと、そのエッジ時間記憶レジスタに記憶された時間毎に、逓倍クロックとしてのパルスを発生させる逓倍カウンタとから構成される。つまり、今回計測したクランク信号のパルス間隔時間に基づいて、クランク信号に次のタイミングエッジが発生するまでの逓倍クロックの周期を決定している（例えば特許文献１参照）。
【０００７】
しかし、上記の逓倍クロック同期転送方式では、次のような問題がある。尚、ここでは、クランク信号には１０°ＣＡ毎にタイミングエッジが発生すると共に、逓倍数が１０である場合（即ち、逓倍クロックの周期を１°ＣＡ分の時間にする場合）を例に挙げて説明する。
【０００８】
まず、エンジンが急に加速してクランク信号のパルス間隔が前回よりも短くなった場合には、本来ならばその１０°ＣＡ分のパルス間隔において、１°ＣＡ毎の逓倍クロックとしてのパルスが１０回発生しなければならないのに、その発生回数が１０回よりも少なくなってしまう。よって、データの転送タイミングに誤差が生じると共に、データの取り込み回数（メモリへの転送回数）が少なくなってしまう（いわゆるデータ抜けが起こる）。
【０００９】
逆に、エンジンが急に減速してクランク信号のパルス間隔が前回よりも長くなった場合には、その長くなった１０°ＣＡ分のパルス間隔において、１°ＣＡ毎の逓倍クロックとしてのパルスが１０回よりも多く発生してしまう。よって、データ転送のタイミングに誤差が生じると共に、データの取り込み回数が多くなってしまう。また、逓倍クロックが余分に発生しないようにするために、逓倍クロックの発生回数に制限値（いわゆるガード値）が設けられているのであれば、逓倍クロックの発生回数が制限値に達してからクランク信号に次のタイミングエッジが発生するまでは、逓倍クロックが発生しなくなるため、データが無くなってしまう角度領域が生じてしまうこととなる。
【００１０】
このように、逓倍クロック同期転送方式では、クランク軸の回転速度変動が生じた場合に、クランク信号の角度分解能（パルス間隔分のクランク角度）よりも小さい一定角度毎のデータをメモリに格納することができなくなってしまう。
【００１１】
こうした問題は、例えば特許文献２にも記載されている。そして、このような問題を解決するために、特許文献２には、下記（１）〜（３）からなる方法が記載されている。
（１）所定のクランク角度分の処理対象区間（期間）において、クランク信号に所定角度毎のタイミングエッジが発生する毎に、その時の時刻情報としてのフリーランタイマ値を、それがどのクランク角度での時刻情報であるかを識別可能に第１のメモリに順次記憶していく。
【００１２】
（２）上記処理対象区間において、クランク信号のパルス間隔時間の最小値よりも短い一定時間毎に、センサ信号のデータと、その時のフリーランタイマ値とを、対応させて第２のメモリに順次記憶していく。
【００１３】
（３）上記処理対象区間が終了したなら、第２のメモリに記憶された各フリーランタイマ値と、第１のメモリに記憶されたタイミングエッジ発生時の各フリーランタイマ値とから、第２のメモリ内の各データが記憶されたときのクランク角度を算出する。つまり、第２のメモリに記憶された各フリーランタイマ値を、第１のメモリの記憶内容（クランク信号にタイミングエッジが発生した時のクランク角度と時刻との関係）を用いて、クランク角度に換算する。
【００１４】
そして、このような方法によれば、第２のメモリ内の各データが記憶されたときのクランク角度を、クランク軸の回転速度変動に影響されずに求めることができる。
このため、上記（３）の処理が全て終了した後に、第２のメモリから、クランク信号の角度分解能よりも小さい所望の一定角度毎のデータを探し出して、その各データを処理対象データ格納用のメモリに記憶し、そのメモリ内のデータに対して目的の処理を行えば良い。
【先行技術文献】
【特許文献】
【００１５】
【特許文献１】特開２００１−２００７４７号公報
【特許文献２】特開２００５−２２０７９６号公報
【発明の概要】
【発明が解決しようとする課題】
【００１６】
しかしながら、特許文献２の方法では、回転軸としてのクランク軸の回転速度変動の影響を回避することができるものの、逓倍クロック同期転送方式と比較すると、少なくとも上記（１）の第１のメモリと上記（２）の第２のメモリとが更に必要になる。そして、その第１及び第２のメモリの必要記憶容量は、処理対象区間（データを収集する回転軸の角度領域）を長く設定すればするほど、大きくなってしまう。
【００１７】
そこで、本発明は、回転軸の回転速度変動に影響されにくく、且つ、必要なメモリ容量を抑えつつ、回転信号の角度分解能よりも小さい一定角度毎のデータをメモリに記憶可能な信号処理装置の提供を目的としている。
【課題を解決するための手段】
【００１８】
本発明の信号処理装置には、回転軸が所定角度回転する毎に、そのこと（即ち、回転軸が所定角度回転したこと）を示すタイミングエッジが発生する回転信号と、その回転信号にタイミングエッジが発生してから該タイミングエッジが次に発生するまでのパルス間隔の最小時間よりも短い一定時間毎に所定の機器により発生される検出対象のデータとが入力される。そして、この信号処理装置は、記憶制御手段と、除算値設定手段と、転送制御手段とを備えている。
【００１９】
記憶制御手段は、所定回数分の前記パルス間隔である単位間隔毎に、その単位間隔において発生した前記データを、該データの発生順が識別可能に第１メモリに記憶すると共に、その単位間隔において第１メモリに記憶したデータの数であるデータ数を計数する。
【００２０】
そして、除算値設定手段は、前記単位間隔が終了する毎に動作し、今回終了した単位間隔について記憶制御手段により計数されたデータ数を、所定の逓倍数を前記所定回数倍した値で割った除算値を求める。
【００２１】
つまり、前記所定角度を「Ａ」とし、前記所定回数を「ｎ」とすると、単位間隔は、回転軸が「Ａ×ｎ」度回転する分の期間であり、逓倍数を「Ｂ」とし、「Ａ×ｎ」度分の単位間隔において第１メモリに記憶されたデータの数を「Ｃ」とすると、除算値設定手段は、「Ｃ／（Ｂ×ｎ）」の値を求めることとなる。
【００２２】
また、転送制御手段も、前記単位間隔が終了する毎に動作する。
そして、転送制御手段は、除算値設定手段により求められた除算値を用いて、記憶制御手段により第１メモリに記憶された単位間隔分のデータのなかから、前記所定角度（即ち、回転信号の角度分解能）を前記逓倍数で割った角度（以下、逓倍角度ともいう）だけ回転軸が回転する毎に発生されたデータである逓倍タイミングデータを選択すると共に、その選択した逓倍タイミングデータを第１メモリから第２メモリに転送する。
【００２３】
つまり、第１メモリに記憶される単位間隔分で且つ一定時間毎のデータの発生順を考えた場合、除算値設定手段により求められる除算値は、第１メモリに記憶された単位間隔分のデータのうち、逓倍角度（「Ａ／Ｂ」度）毎の逓倍タイミングデータが何番目おきに発生したデータであるかを表すこととなる。このため、転送制御手段は、その除算値を用いて、第１メモリに記憶された単位間隔分のデータのなかから逓倍タイミングデータを選択し、その選択した逓倍タイミングデータを第１メモリから第２メモリに転送している。
【００２４】
そして、除算値設定手段により求められる除算値は、第１メモリに記憶されたデータが発生したときの単位間隔の長さに応じて変化する（単位間隔が長いほど大きくなる）情報であり、転送制御手段は、その除算値を用いて、第１メモリ内のデータのなかから逓倍タイミングデータを選択する。
【００２５】
つまり、転送制御手段は、今回の単位間隔の長さ情報を用いて、その今回の単位間隔において一定時間毎に発生したデータのなかから、逓倍タイミングデータを選択している。このため、回転軸の回転速度変動の影響を受けずに、逓倍タイミングデータを選択して第２メモリに転送することができる。
【００２６】
しかも、第１メモリの記憶容量は、単位間隔分の最大個数のデータであって、単位間隔が、想定される最大値になった場合の、単位間隔分のデータを記憶可能な容量であれば良く、このことは、データを収集する対象の回転軸の角度領域（何度から何度までという処理対象区間）が、単位間隔分の角度（上記「Ａ×ｎ」度）の何倍になっても変わらない。
【００２７】
よって、このような信号処理装置によれば、回転軸の回転速度変動に影響されにくく、且つ、必要なメモリ容量を抑えつつ、回転信号の角度分解能よりも小さい一定角度（逓倍角度）毎のデータ（逓倍タイミングデータ）をメモリ（第２メモリ）に記憶させることができる。
【００２８】
尚、第１メモリと第２メモリとの各々は、物理的に別々のメモリであっても良いし、物理的に同一のメモリにおける異なる記憶領域であっても良い。
また、除算値設定手段は、除算値を、上記「Ｃ／（Ｂ×ｎ）」の演算を実施することによって求めるようになっていても良いし、マップから求めるようになっていても良い。後者の場合、逓倍数（Ｂ）と所定回数（ｎ）は既知であることから、例えば、様々な値のデータ数（Ｃ）の各々と、その各データ数について求められるべき除算値とを、対応付けて記憶したデータマップを、所定のマップ記憶部に予め記憶しておき、除算値設定手段は、そのデータマップから、記憶制御手段により計数されたデータ数に対応する除算値を、読み出して求めるように構成しても良い。
【００２９】
ところで、転送制御手段は、例えば、記憶制御手段により第１メモリに記憶された単位間隔分のデータのなかから、１番目（最初）に発生したデータと、前記除算値を自然数倍（１倍、２倍、３倍、…）した値を整数化処理した整数値よりも１だけ大きい値の順番で発生したデータを、逓倍タイミングデータとして選択するように構成することができる。
【００３０】
このように構成すれば、除算値が整数にならなかった場合でも、逓倍タイミングデータを適切に選択することができる。つまり、逓倍タイミングデータとして妥当なデータを選択することができる。
【００３１】
また、整数化処理としては、一般に、切り捨て（小数点以下切り捨て）処理と、切り上げ（小数点以下切り上げ）処理と、四捨五入（小数点以下四捨五入）処理との何れかが考えられるが、そのなかでも、切り捨て処理を採用すれば、処理が簡単になるという利点がある。
【００３２】
一方、前記所定回数（ｎ）は、１回でも２回以上（複数回）でも良いが、特に１回ならば、回転信号の角度分解能よりも小さい逓倍角度毎の逓倍タイミングデータを第２メモリに記憶することに関して、回転軸の回転速度変動の影響を最も受けにくくすることができる。尚、所定回数（ｎ）が１回であるということは、単位間隔がパルス間隔であるということである。
【００３３】
また、所定回数（ｎ）が１であると共に、回転信号に欠歯部が発生するのであれば、次のように構成することで対応することができる。尚、その欠歯部とは、回転軸の回転位置が基準位置に来たときに、タイミングエッジの発生間隔（パルス間隔）が、前記所定角度の所定数（Ｎ）倍の角度だけ回転軸が回転するのに要する時間になる部分である。
【００３４】
まず、欠歯部判定手段を設ける。その欠歯部判定手段は、回転信号にタイミングエッジが発生する毎に、今回発生したタイミングエッジが欠歯部の終了に該当する欠歯終了エッジであるか否か（換言すれば、今回のパルス間隔が欠歯部であるか否か）を判定する。
【００３５】
そして、除算値設定手段は、欠歯部判定手段によりタイミングエッジが欠歯終了エッジであると判定された場合には、記憶制御手段により計数されたデータ数（この場合、今回終了した欠歯部としてのパルス間隔において第１メモリに記憶されたデータの数）を、逓倍数（Ｂ）を前記所定数（Ｎ）倍した値（Ｂ×Ｎ）で割った除算値を求めるように構成する。
【００３６】
このように構成すれば、回転信号に欠歯部が発生した場合でも、その欠歯部に該当するパルス間隔において第１メモリに記憶されたデータのなかから、逓倍タイミングデータを精度良く選択して第２メモリに転送することができる。
【００３７】
尚、勿論この場合、第１メモリの記憶容量は、欠歯部に該当するパルス間隔に着目して、そのパルス間隔分の最大個数のデータを記憶可能な容量に設定しておけば良い。
また例えば、欠歯部判定手段は、回転信号にタイミングエッジが発生する毎に動作して、今回終了したパルス間隔について記憶制御手段により計数されたデータ数（以下、「今回のデータ数」という）と、前回終了したパルス間隔について記憶制御手段により計数されたデータ数（以下、「前回のデータ数」という）とを比較することにより、今回発生したタイミングエッジが欠歯終了エッジであるか否かを判定するように構成することができる。つまり、記憶制御手段によって計数されるデータ数は、パルス間隔の長さに比例するため、今回のデータ数と前回のデータ数とを比較することで、今回のパルス間隔が欠歯部か否かの判定が可能である。
【００３８】
そして、この構成によれば、今回発生したタイミングエッジが欠歯終了エッジであるか否かを、記憶制御手段を利用して判定することができるため、追加構成が少なくて済む。
一方、回転軸としては、例えば、エンジンのクランク軸やモータの回転軸等が考えられる。そして、例えば、回転軸がエンジンのクランク軸であれば、第２メモリに記憶されるデータを、例えばエンジンを制御するために使用することができ、回転軸がモータの回転軸であれば、第２メモリに記憶されるデータを、例えばモータを制御するために使用することができる。
【図面の簡単な説明】
【００３９】
【図１】第１実施形態の信号処理装置の構成を表す構成図である。
【図２】第１実施形態の作用の一例を説明する説明図である。
【図３】クランク信号の欠歯部の説明図である。
【図４】第２実施形態の信号処理装置の構成を表す構成図である。
【発明を実施するための形態】
【００４０】
以下に、本発明が適用された実施形態の信号処理装置について説明する。
［第１実施形態］
図１に示す本実施形態の信号処理装置１は、自動車のエンジンを制御するエンジン制御装置に設けられる。そして、この信号処理装置１には、エンジンを制御するために使用されるアナログセンサ信号の電圧値を表す検出対象のデータが、一定時間Ｔｓ毎に更新されて入力される。
【００４１】
本実施形態においては、アナログセンサ信号がＡ／Ｄ変換器（ＡＤＣ）３により一定時間Ｔｓ毎にＡ／Ｄ変換され、そのＡ／Ｄ変換器３から一定時間Ｔｓ毎に出力されるデータがデジタルフィルタ（ＤＦ）５に順次入力される。そして、デジタルフィルタ５にてフィルタ処理された後のデータであって、一定時間毎に更新されるデータが、そのデジタルフィルタ５から当該信号処理装置１に入力される。つまり、Ａ／Ｄ変換器３からデジタルフィルタ５を介して一定時間Ｔｓ毎に出力されるアナログセンサ信号のＡ／Ｄ変換データが、信号処理装置１に入力される。
【００４２】
尚、Ａ／Ｄ変換器３からのデータが、デジタルフィルタ５を介さずに信号処理装置１に入力されるようになっていても良い。また、アナログセンサ信号は、例えば、シリンダ内の圧力を検出する燃焼圧センサからの燃焼圧信号であるが、インジェクタに供給される燃料の圧力を検出する燃料圧センサからの燃料圧信号等でもよい。また、デジタルフィルタ５のフィルタ処理としては、例えば、ローパスフィルタの処理が考えられるが、ハイパスフィルタやバンドパスフィルタ等の処理でも良い。
【００４３】
更に、信号処理装置１には、回転信号として、エンジンのクランク軸の回転角度を表すクランクセンサからのクランク信号も入力される。そのクランク信号は、クランク軸が所定角度回転する毎に、そのことを示すタイミングエッジが発生する信号である。
【００４４】
尚、本実施形態において、上記所定角度は、例えば１０°である。また、タイミングエッジは、立ち上がりエッジと立ち下がりエッジとのうちの、一方であるのが一般的であるが、両方であっても良い。また、上記一定時間Ｔｓは、クランク信号のパルス間隔（即ち、クランク信号にタイミングエッジが発生してから該タイミングエッジが次に発生するまでの１０°ＣＡ分の間隔）の最小時間よりも、短い時間に設定されており、例えば１０μｓである。また、以下では、クランク信号のパルス間隔のことを、単に「パルス間隔」ともいい、クランク信号におけるタイミングエッジのことを、単に「クランクエッジ」ともいう。
【００４５】
そして、信号処理装置１は、クランク信号のパルス間隔において発生したデジタルフィルタ５からのデータを記憶するためのバッファ７と、バッファ７にパルス間隔分のデータを記憶するための制御を行う記憶制御部９と、バッファ７に記憶されたパルス間隔分のデータのうちの何れかが、クランクエッジが発生する毎に転送されるＲＡＭ１１と、バッファ７の各アドレスに記憶されているデータのうち、転送要求が与えられたときに入力されているロードアドレスのデータを、バッファ７からＲＡＭ１１に転送するＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ１３と、ＤＭＡコントローラ１３へのロードアドレスを、バッファ７の先頭アドレスから１アドレスずつ切り替えていく処理を行うロードアドレス切替部１５と、バッファ７に記憶されたデータのうちで、クランク信号の角度分解能である上記所定角度（本実施形態では１０°）を逓倍数で割った逓倍角度（＝１０°／逓倍数）だけクランク軸が回転したタイミング毎に発生された逓倍タイミングデータがＲＡＭ１１に転送されるように、ＤＭＡコントローラ１３に対して転送要求を出力する転送要求出力制御部１７と、を備えている。
【００４６】
記憶制御部９は、第１カウンタ２１と、ストア制御器２３とを有している。
第１カウンタ２１は、クランクエッジによってリセットされる。
そして、ストア制御器２３は、デジタルフィルタ５からデータが出力される毎（即ち、デジタルフィルタ５からのデータが更新される一定時間Ｔｓ毎）に動作して、バッファ７のアドレスのうち、該バッファ７の先頭アドレスに第１カウンタ２１の値（以下、単に「第１カウンタ値」ともいう）を加えたアドレスへ、デジタルフィルタ５からのデータを記憶する。更に、ストア制御器２３は、バッファ７へのデータ記憶（データのストア）を行う毎に、第１カウンタ２１をカウントアップ（＋１）する。尚、本実施形態において、バッファ７には、１つのアドレスに１つのデータが記憶されるようになっている。
【００４７】
このため、記憶制御部９は、クランク信号のパルス間隔毎に、そのパルス間隔においてデジタルフィルタ５から出力されたデータを、バッファ７の先頭アドレスから順に記憶すると共に、そのパルス間隔においてバッファ７に記憶したデータの数を、第１カウンタ２１によって計数することとなる。よって、第１カウンタ値は、バッファ７にデータを記憶する際のアドレスポインタとして使用されると共に、バッファ７に記憶されたパルス間隔分のデータ数を表すこととなる。
【００４８】
ロードアドレス切替部１５は、第２カウンタ２５と、ロードアドレス制御器２７とを有している。
また、転送要求出力制御部１７は、クランクエッジが発生する毎に、第１カウンタ２１のリセット直前の値（以下、「リセット時の第１カウンタ値」という）が記憶される第１レジスタ２９を有している。つまり、クランクエッジが発生すると、第１カウンタ値が第１レジスタ２９にコピーされてから、第１カウンタ２１がリセットされるようになっている。
【００４９】
そして、ロードアドレス切替部１５において、第２カウンタ２５は、クランクエッジによってリセットされると共に、そのリセット時から、データの発生間隔（更新間隔）である一定時間Ｔｓよりも十分に短い一定時間（本実施形態では例えば０．１μｓ）Ｔｃ毎の内部クロックによってカウントアップされる。更に、第２カウンタ２５のカウントアップは、該第２カウンタ２５の値（以下、「第２カウンタ値」ともいう）が、第１レジスタ２９に記憶されている値（リセット時の第１カウンタ値）から１を引いた値に達すると停止される。
【００５０】
また、ロードアドレス制御器２７は、ＤＭＡコントローラ１３にロードアドレスを出力する回路である。そして、ロードアドレス制御器２７は、クランクエッジが発生すると、ＤＭＡコントローラ１３へのロードアドレスを、バッファ７の先頭アドレスに第２カウンタ値を加えたアドレスにする。
【００５１】
このため、クランクエッジが発生すると、ＤＭＡコントローラ１３へのロードアドレスは、バッファ７の先頭アドレスから、「リセット時の第１カウンタ値−１」番目のアドレスまで、一定時間Ｔｃ毎に順次切り替えられることとなる。
【００５２】
尚、第２カウンタ値は、ＤＭＡコントローラ１３へのロードアドレスのポインタとして使用されるため、その第２カウンタ値により、ＤＭＡコントローラ１３への現在のロードアドレスを把握することができる。
【００５３】
また、転送要求出力制御部１７は、上記第１レジスタ２９に加えて、逓倍数が記憶される第２レジスタ３１と、クランクエッジが発生して第１レジスタ２９内のリセット時の第１カウンタ値が更新される毎に動作し、その第１レジスタ２９内のリセット時の第１カウンタ値を、第２レジスタ３１内の逓倍数で割った除算値を算出する演算器３３と、演算器３３の演算結果である除算値が記憶される第３レジスタ３５と、加算要求が与えられると、そのときに入力されている加数を、第３レジスタ３５に記憶されている除算値に加数して、その演算結果である加算値を出力する加算器３７と、クランクエッジが発生すると記憶値が０にリセットされると共に、加算器３７に上記加算要求が与えられて該加算器３７から加算値が出力される毎に、その加算器３７からの加算値を記憶し、更に、記憶している値を、加算器３７へ上記加数として出力する第４レジスタ３９と、ＤＭＡ転送要求制御器４１と、を備えている。
【００５４】
そして、ＤＭＡ転送要求制御器４１は、クランクエッジが発生して第２カウンタ２５と第４レジスタ３９がリセットされると動作を開始し、第４レジスタ３９の値（詳しくは、第４レジスタ３９に記憶されている値）を整数化処理した整数値と第２カウンタ値とを比較して、その両値が一致していれば、ＤＭＡコントローラ１３に転送要求を出力すると共に、加算器３７に加算要求を出力する。更に、ＤＭＡ転送要求制御器４１は、クランクエッジが発生してからの転送要求及び加算要求の出力回数が、第２レジスタ３１内の逓倍数に達すると、次回のクランクエッジが発生するまで動作を休止する。つまり、クランクエッジが発生してからの転送要求及び加算要求の出力回数には制限値があり、その制限値は逓倍数である。
【００５５】
尚、本実施形態では、上記整数化処理として、小数点以下を切り捨てる処理を行っている。このため、ＤＭＡ転送要求制御器４１は、第４レジスタ３９の値の小数点以下を切り捨てた整数部の値と、第２カウンタ値とを比較する。また、以下では、整数化処理によって得られる整数値のことを「整数化値」という。また、演算器３３は、上記除算値を、「リセット時の第１カウンタ値／逓倍数」の演算を実施して求めることに代えて、例えば、マップから求めるように構成しても良い。つまり、逓倍数が既知の固定値であるならば、例えば、様々な値の「リセット時の第１カウンタ値」の各々と、その各値について求められるべき除算値とを、対応付けて記録したデータマップを、所定のマップ記憶部に予め記憶しておき、演算器３３は、そのデータマップから、第１レジスタ２９内のリセット時の第１カウンタ値に対応する除算値を、読み出して求めるように構成しても良い。
【００５６】
このような転送要求出力制御部１７において、演算器３３で算出された除算値が“Ｄ”であったとすると、クランクエッジが発生した時点では、第４レジスタ３９とロードアドレス切替部１５の第２カウンタ２５とが共にリセットされるため、クランクエッジの発生時点において、ＤＭＡ転送要求制御器４１は、第４レジスタ３９の値の整数化値（この時点では“０”）と第２カウンタ値（この時点では“０”）とが一致していると判断し、ＤＭＡコントローラ１３に転送要求を出力すると共に、加算器３７に加算要求を出力することとなる。
【００５７】
そして、そのとき、第２カウンタ値は“０”であり、ロードアドレス切替部１５のロードアドレス制御器２７からＤＭＡコントローラ１３へのロードアドレスは、バッファ７の先頭アドレスになっているため、ＤＭＡコントローラ１３に転送要求が出力されると、そのバッファ７の先頭アドレスのデータが、ＤＭＡコントローラ１３によってＲＡＭ１１に転送される。
【００５８】
また、そのとき、第４レジスタ３９の値も“０”であるため、加算器３７に加算要求が出力されると、加算器３７からの加算値は、第３レジスタ３５内の除算値“Ｄ”となり、その“Ｄ”が第４レジスタ３９に記憶される。つまり、第４レジスタ３９の値が“０”から“Ｄ”に更新される。
【００５９】
そして、その後、第２カウンタ２５が前述の内部クロックによりカウントアップされて、第２カウンタ値が“Ｄ”の整数化値になると、再び、ＤＭＡ転送要求制御器４１は、第４レジスタ３９の値の整数化値と第２カウンタ値とが一致していると判断して、ＤＭＡコントローラ１３に転送要求を出力すると共に、加算器３７に加算要求を出力することとなる。
【００６０】
すると、そのとき、ロードアドレス制御器２７からＤＭＡコントローラ１３へのロードアドレスは、バッファ７の先頭アドレスに“Ｄ”の整数化値を加えたアドレスになっているため、ＤＭＡコントローラ１３に転送要求が出力されると、バッファ７に記憶されているデータのうち、バッファ７の先頭アドレスに“Ｄ”の整数化値を加えたアドレス（即ち、先頭アドレスを１番目として、「“Ｄ”の整数化値＋１」番目のアドレス）のデータが、ＤＭＡコントローラ１３によってＲＡＭ１１に転送される。
【００６１】
また、そのとき、第４レジスタ３９の値は“Ｄ”であるため、加算器３７に加算要求が出力されると、加算器３７からの加算値は“Ｄ×２”となり、その“Ｄ×２”が第４レジスタ３９に記憶される。つまり、第４レジスタ３９の値が“Ｄ”から“Ｄ×２”に更新される。
【００６２】
更にその後、第２カウンタ２５が内部クロックによりカウントアップされて、第２カウンタ値が“Ｄ×２”の整数化値になると、再び、ＤＭＡ転送要求制御器４１は、第４レジスタ３９の値の整数化値と第２カウンタ値とが一致していると判断して、ＤＭＡコントローラ１３に転送要求を出力すると共に、加算器３７に加算要求を出力することとなる。
【００６３】
そして、そのとき、ロードアドレス制御器２７からＤＭＡコントローラ１３へのロードアドレスは、バッファ７の先頭アドレスに“Ｄ×２”の整数化値を加えたアドレスになっているため、ＤＭＡコントローラ１３に転送要求が出力されると、バッファ７に記憶されているデータのうち、バッファ７の先頭アドレスに“Ｄ×２”の整数化値を加えたアドレス（即ち、先頭アドレスを１番目として、「“Ｄ×２”の整数化値＋１」番目のアドレス）のデータが、ＤＭＡコントローラ１３によってＲＡＭ１１に転送される。
【００６４】
また、そのとき、第４レジスタ３９の値は“Ｄ×２”であるため、加算器３７に加算要求が出力されると、加算器３７からの加算値は“Ｄ×３”となり、その“Ｄ×３”が第４レジスタ３９に記憶される。つまり、第４レジスタ３９の値が“Ｄ×２”から“Ｄ×３”に更新される。
【００６５】
そして、上記のＤＭＡ転送要求制御器４１の動作は、転送要求及び加算要求の出力回数が第２レジスタ３１内の逓倍数に達するまで行われる。
つまり、転送要求出力制御部１７において、第３レジスタ３５、加算器３７、第４レジスタ３９及びＤＭＡ転送要求制御器４１は、ロードアドレス切替部１５の第２カウンタ２５と連携することにより、ＤＭＡコントローラ１３へのロードアドレスが、バッファ７の先頭アドレスになった時と、その先頭アドレスに除算値“Ｄ”を自然数倍（１倍、２倍、３倍…）した値の整数化値を加えたアドレスになった時とに、ＤＭＡコントローラ１３へ転送要求を出力している。
【００６６】
そして、バッファ７には、クランク信号のパルス間隔においてデジタルフィルタ５から出力されたデータが、先頭アドレスから順に記憶される。このため、バッファ７には、パルス間隔における一定時間Ｔｓ毎のデータが、発生した順に、先頭アドレスから記憶されていることとなる。
【００６７】
よって、信号処理装置１では、転送要求出力制御部１７における第３レジスタ３５、加算器３７、第４レジスタ３９及びＤＭＡ転送要求制御器４１と、ロードアドレス切替部１５と、ＤＭＡコントローラ１３とが、記憶制御部９によりバッファ７に記憶されたパルス間隔分のデータのなかから、１番目に発生したデータと、除算値“Ｄ”を自然数倍した値の整数化値よりも１だけ大きい値の順番で発生したデータとの各々を、逓倍タイミングデータとして選択して、その選択した逓倍タイミングデータをバッファ７からＲＡＭ１１に転送していることになる。
【００６８】
尚、この信号処理装置１が設けられるエンジン制御装置には、エンジンを制御するための処理を行うＣＰＵ４５や、そのＣＰＵ４５が実行するプログラムが記憶されたＲＯＭ（図示省略）等からなるマイコンが搭載されている。そして、少なくともＲＡＭ１１と第２レジスタ３１は、そのマイコンのＣＰＵ４５によってアクセス可能であり、第２レジスタ３１には、ＣＰＵ４５によって逓倍数が書き込まれる。また、ＣＰＵ４５は、ＲＡＭ１１に転送された逓倍タイミングデータを読み出してエンジン制御用の処理を行う。例えば、その処理としては、Ａ／Ｄ変換対象のアナログセンサ信号が燃焼圧信号であれば、燃焼割合の算出処理や失火検出処理やノック検出処理等が考えられる。一方、信号処理装置１は、上記マイコンの一部として（マイコンと同じチップ内に）構成されていても良い。
【００６９】
次に、以上のような信号処理装置１の動作例について、図２を用い説明する。
尚、図２は、クランクエッジが時刻ｔ１と時刻ｔ２とで発生すると共に、その時刻ｔ１から時刻ｔ２までのパルス間隔において、デジタルフィルタ５から信号処理装置１へ新たな４個のデータＤ１〜Ｄ４が入力され、更に、逓倍数が“２”の場合を表している。また、図２において、上から２段目の「ＡＤＣ，ＤＦタイミング」は、一定時間Ｔｓ毎のＡ／Ｄ変換器３によるＡ／Ｄ変換タイミングであり、デジタルフィルタ５からのデータが更新されるタイミングでもある。また、図２及び以下の説明において、Ａ０，Ａ１，Ａ２…の各々は、バッファ７の先頭からの各アドレスであり、Ａ０が先頭アドレスである。
【００７０】
図２において、時刻ｔ１に示すように、クランクエッジが発生すると、第１カウンタ２１がリセットされる。そして、その後、デジタルフィルタ５から新たなデータが出力される毎に、ストア制御器２３により、そのデジタルフィルタ５からの各データ（Ｄ１，Ｄ２，Ｄ３，Ｄ４）が、バッファ７の先頭からの各アドレス（Ａ０，Ａ１，Ａ２，Ａ３）に順次記憶され、また、そのバッファ７へのデータ記憶が実施される毎に、第１カウンタ２１がカウントアップされる。
【００７１】
そして、時刻ｔ２に示すように、次のクランクエッジが発生すると、その時点において、この例では、第１カウンタ値が“４”になっているため、その“４”が、リセット時の第１カウンタ値として第１レジスタ２９にコピーされ、そのコピー後に、第１カウンタ２１がリセットされる。そして更に、演算器３３が動作して、第１レジスタ２９に記憶された“４”を、逓倍数の“２”で割った値（＝２）が、除算値として求められて第３レジスタ３５に記憶される。
【００７２】
また、時刻ｔ２でクランクエッジが発生すると、第２カウンタ２５と第４レジスタ３９がリセットされ、図２における５段目に示すように、第２カウンタ２５は、データの更新間隔Ｔｓよりも十分に短い一定時間Ｔｃ毎に、「リセット時の第１カウンタ値−１」の値（この例では“３”）になるまでカウントアップされる。その結果、ロードアドレス制御器２７からＤＭＡコントローラ１３へのロードアドレスが、一定時間Ｔｃ毎に「Ａ０」から「Ａ３」まで順次切り替えられることとなる。尚、図２において、上から５段目以降の各々は、時刻ｔ２の付近を拡大して表している。
【００７３】
そして、第２カウンタ値が、“０”の時と、第３レジスタ３５内の除算値（＝２）を自然数倍した値の整数化値になった時（この例では“２”になった時）との各々であって、ＤＭＡコントローラ１３へのロードアドレスが「Ａ０」の時と「Ａ２」の時とに、ＤＭＡ転送要求制御器４１からＤＭＡコントローラ１３へ転送要求が出力される。
【００７４】
このため、時刻ｔ２でクランクエッジが発生すると、バッファ７に記憶された今回の（直前の）パルス期間分のデータ（Ｄ１，Ｄ２，Ｄ３，Ｄ４）のうち、先頭アドレス（Ａ０）に記憶されているデータ（Ｄ１）と、３番目のアドレス（Ａ２）に記憶されているデータ（Ｄ３）とが、ＤＭＡコントローラ１３によってＲＡＭ１１に転送（即ちＤＭＡ転送）されることとなる。
【００７５】
また、他の具体例として、例えば、図２において、時刻ｔ１でクランクエッジが発生してから、時刻ｔ２で次のクランクエッジが発生するまでのパルス間隔に、デジタルフィルタ５から信号処理装置１へ、４個ではなく、１０個のデータが入力され、更に、逓倍数が“４”がであった場合について説明する。
【００７６】
その場合、時刻ｔ１から時刻ｔ２までのパルス間隔において、バッファ７には、一定時間Ｔｓ毎に、先頭アドレス（Ａ０）から合計１０個のデータが格納されることとなり、第１カウンタ値は“１０”になる。
【００７７】
そして、時刻ｔ２で次のクランクエッジが発生すると、第１カウンタ２１から第１レジスタ２９に、リセット時の第１カウンタ値として“１０”がコピーされ、そのコピー後に、第１カウンタ２１がリセットされる。そして更に、演算器３３が動作して、第１レジスタ２９に記憶された“１０”を、逓倍数の“４”で割った値（＝２．５）が、除算値として求められて第３レジスタ３５に記憶される。
【００７８】
また、時刻ｔ２でクランクエッジが発生すると、第２カウンタ２５と第４レジスタ３９がリセットされ、第２カウンタ２５は一定時間Ｔｃ毎に「リセット時の第１カウンタ値−１」の値（この例では“９”）になるまでカウントアップされる。
【００７９】
ここで、第２カウンタ値が“０”の時、第４レジスタ３９の値も“０”であるため、ＤＭＡ転送要求制御器４１からＤＭＡコントローラ１３へ転送要求が出力されて、バッファ７からＲＡＭ１１へのＤＭＡ転送が実施される。そして、以後は、第４レジスタ３９の値に除算値（＝２．５）が累積加算されて、その第４レジスタ３９の値が「０→２．５→５．０→７．５」と推移し、第２カウンタ値が“２”と“５”と“７”になった時にも、ＤＭＡ転送要求制御器４１からＤＭＡコントローラ１３へ転送要求が出力されて、バッファ７からＲＡＭ１１へのＤＭＡ転送が実施される。
【００８０】
よって、時刻ｔ２でクランクエッジが発生すると、バッファ７に記憶された今回の（直前の）パルス期間分のデータのうち、アドレス「Ａ０」，「Ａ２」，「Ａ５」，「Ａ７」の各々に記憶された４個のデータがＲＡＭ１１にＤＭＡ転送されることとなる。
【００８１】
尚、前述したように、ＤＭＡ転送要求制御器４１は、転送要求及び加算要求を、逓倍数の回数しか出力しないため、この例の場合、第４レジスタ３９の値は、“１０”や“１２．５”といった値にまで増加してくことはない。
【００８２】
以上のような信号処理装置１において、演算器３３により求められる除算値は、バッファ７に記憶されたパルス間隔分のデータのうち、逓倍タイミングデータが何番目おきに発生したデータであるかを表すこととなる。そして、バッファ７には、パルス間隔分のデータが、発生した順に先頭アドレスから記憶されるため、バッファ７におけるデータの記憶位置（アドレス）と発生順とは、一対一に対応している。
【００８３】
このため、この信号処理装置１では、演算器３３により求められた除算値を用いて、バッファ７に記憶されたパルス間隔分のデータのなかから逓倍タイミングデータ（厳密には、逓倍角度毎に発生したと考えられるデータであり、逓倍タイミングデータとして見なすデータ）を選択し、その選択した逓倍タイミングデータをバッファ７からＲＡＭ１１に転送している。
【００８４】
更に、演算器３３により求められる除算値は、バッファ７に記憶されたデータが発生したときのパルス間隔の長さに応じて変化する（即ち、パルス間隔が長いほど大きくなる）情報である。
【００８５】
よって、この信号処理装置１では、今回のパルス間隔の長さ情報を用いて、その今回のパルス間隔においてバッファ７に記憶した一定時間Ｔｓ毎のデータのなかから、逓倍タイミングデータを選択していることとなる。このため、エンジン（クランク軸）の回転速度変動の影響を受けずに、逓倍タイミングデータを選択してＲＡＭ１１に転送することができる。
【００８６】
しかも、バッファ７の記憶容量は、パルス間隔分の最大個数のデータ（即ち、パルス間隔が、想定される最大値になった場合の、パルス間隔分のデータ）を記憶可能な容量であれば良く、このことは、データを収集する対象のクランク角度領域（処理対象区間）が、パルス間隔分の角度の何倍になっても変わらない。
【００８７】
よって、このような本実施形態の信号処理装置１によれば、エンジンの回転速度変動に影響されにくく、且つ、必要なメモリ容量を抑えつつ、クランク信号の角度分解能よりも小さい一定角度（逓倍角度）毎のデータ（逓倍タイミングデータ）をＲＡＭ１１に記憶させることができる。
【００８８】
また、本実施形態の信号処理装置１では、ＤＭＡ転送要求制御器４１が、第４レジスタ３９の値の整数化値と第２カウンタ値とが一致したことをトリガとして、ＤＭＡコントローラ１３への転送要求と加算器３７への加算要求とを出力するようになっており、このことにより、前述したように、バッファ７内のパルス間隔分のデータのなかから、１番目に発生したデータと、演算器３３により求められた除算値を自然数倍（１倍、２倍、３倍、…）した値の整数化値よりも１だけ大きい値の順番で発生したデータとを、逓倍タイミングデータとして選択している。
【００８９】
そして、この構成によれば、除算値が整数にならなかった場合でも、逓倍タイミングデータを適切に選択することができる。つまり、逓倍タイミングデータとして妥当なデータを選択することができる。
【００９０】
また、整数化値を得るための整数化処理としては、切り捨て処理以外（例えば、小数点以下の切り上げ処理や四捨五入処理等）でも良いが、本実施形態では、切り捨て処理を採用しているため、他の処理を行う場合よりも、その整数化処理を行うための回路構成を簡単なものにすることができる。
【００９１】
尚、本実施形態では、エンジンのクランク軸が、回転軸の一例に相当し、Ａ／Ｄ変換器３とデジタルフィルタ５が、検出対象のデータを一定時間毎に発生する機器の一例に相当している。また、本実施形態では、パルス間隔が、所定回数分のパルス間隔である単位間隔の一例になっている。つまり、上記実施形態は、所定回数の一例として、１回を例示した実施形態である。
【００９２】
そして、本実施形態では、バッファ７が、第１メモリの一例に相当し、記憶制御部９が、記憶制御手段の一例に相当し、演算器３３が、除算値設定手段の一例に相当し、転送要求出力制御部１７における第３レジスタ３５、加算器３７、第４レジスタ３９及びＤＭＡ転送要求制御器４１と、ロードアドレス切替部１５と、ＤＭＡコントローラ１３とが、転送制御手段の一例に相当し、ＲＡＭ１１が、第２メモリの一例に相当している。また、第３レジスタ３５は、除算値の設定先である設定部の一例にも相当している。
【００９３】
［変形例］
一方、上記実施形態においては、バッファ７に、１回のパルス間隔分のデータを格納するようになっていたが、Ｍ回（Ｍは２以上の整数）のパルス間隔分のデータをバッファ７に格納するように構成しても良い。
【００９４】
その場合、下記２点の変形をすれば良い。
第１に、信号処理装置１には、クランク信号のクランクエッジがＭ回に１回の割合で入力されるようにする。つまり、クランク信号をＭ分周して信号処理装置１に入力させる。
【００９５】
第２に、第２レジスタ３１に「逓倍数×Ｍ」の値を格納しておくことにより、演算器３３が、「リセット時の第１カウンタ値／（逓倍数×Ｍ）」の値を除算値として求めるようにする。つまり、この場合の「リセット時の第１カウンタ値」は、上記第１の変形により、Ｍ回のパルス間隔においてバッファ７に記憶されたデータの数を表すこととなるため、演算器３３は、そのＭ回のパルス間隔分のデータ数を、「逓倍数×Ｍ」の値で割った除算値を求めることとなる。
【００９６】
但し、このような変形はせずに、上記実施形態のように構成する方が、逓倍角度毎のデータをＲＡＭ１１に記憶することに関して、クランク軸の回転速度変動の影響を最も受けにくくすることができるため、有利である。
【００９７】
［第２実施形態］
ところで、クランク信号に、いわゆる欠歯部が発生するのであれば、次の第２実施形態のように構成することで対応することができる。
【００９８】
尚、クランク信号の欠歯部とは、クランク軸の回転位置が１回転中における基準位置に来たときに、クランクパルスが所定の数だけ欠落する部分であり、クランクエッジの発生間隔（パルス間隔）が、前述の所定角度を所定数（Ｎ）倍した角度分の回転所要時間になる部分である。
【００９９】
一例として、本第２実施形態では、欠歯部でのクランクパルスの欠落数が“２”であって、上記所定数（Ｎ）が“３”であるとする。
このため、図３に示すように、クランク信号には、１０°ＣＡ毎（クランク軸が所定角度としての１０°回転する毎）に、０番から３３番までの３４個のクランクエッジが発生し、３４個目である３３番のクランクエッジが発生してから次の０番のクランクエッジが発生するまでの３０°ＣＡ分の時間が、欠歯部となる。また、以下では、欠歯部の終了に該当する０番のクランクエッジを、「欠歯終了エッジ」といい、欠歯部の開始に該当する３３番のクランクエッジを、「欠歯開始エッジ」という。
【０１００】
図４に示す第２実施形態の信号処理装置５１は、第１実施形態の信号処理装置１と比較すると、下記〈１〉と〈２〉の点が異なっている。
〈１〉転送要求出力制御部１７には、第５レジスタ５３と、欠歯判定部５５と、切替回路５７とが設けられている。
【０１０１】
第５レジスタ５３には、クランクエッジが発生する毎に、第１レジスタ２９の更新前の値が記憶される。このため、第５レジスタ５３には、今回のクランクエッジから見て１回前のクランクエッジが発生した際のリセット時の第１カウンタ値であって、第１レジスタ２９に記憶されるリセット時の第１カウンタ値の１つ前の値（以下、「前回リセット時の第１カウンタ値」という）が記憶されることとなる。
【０１０２】
そして、欠歯判定部５５は、クランクエッジが発生して第１レジスタ２９と第５レジスタ５３の各値が更新される毎に動作し、第１レジスタ２９に記憶されたリセット時の第１カウンタ値（以下「Ｃ１」と記す）と、第５レジスタ５３に記憶された前回リセット時の第１カウンタ値（以下「Ｃ０」と記す）とを比較することにより、今回発生したクランクエッジが欠歯終了エッジであるか否かを判定する。
【０１０３】
つまり、リセット時の第１カウンタ値は、一定時間Ｔｓを分解能としてパルス間隔の長さを測定した値であり、パルス間隔の長さに比例するため、欠歯判定部５５は、「Ｃ１」と「ＣＯ」との比率から、今回のクランクエッジが欠歯終了エッジであるか否か（換言すれば、今回のパルス間隔が欠歯部であるか否か）を判定する。
【０１０４】
具体的には、欠歯判定部５５は、「Ｃ１／Ｃ０」の値が所定の欠歯判定値以上であれば、今回のクランクエッジが欠歯終了エッジであると判定するように構成することができる。尚、欠歯判定値は、クランク軸の回転速度変動を考慮して、１０°ＣＡ分のパルス間隔と３０°ＣＡ分のパルス間隔とが識別可能な値に設定しておけば良い。
【０１０５】
そして、切替回路５７は、欠歯判定部５５によって今回のクランクエッジが欠歯終了エッジであると判定されなければ、第２レジスタ３１内の逓倍数を、そのまま、演算器３３とＤＭＡ転送要求制御器４１とに出力するが、欠歯判定部５５によって今回のクランクエッジが欠歯終了エッジであると判定されると、第２レジスタ３１内の逓倍数に上記所定数（Ｎ）を乗じた値を、補正後の逓倍数として、演算器３３とＤＭＡ転送要求制御器４１とに出力する。
【０１０６】
このため、欠歯判定部５５によって今回のクランクエッジが欠歯終了エッジであると判定されたなら、演算器３３は、第１レジスタ２９内のリセット時の第１カウンタ値を、「逓倍数×Ｎ」で割った除算値を算出することとなる。つまり、演算器３３により求められて第３レジスタ３５に記憶される除算値が、「１／Ｎ」の値に補正される。また更に、クランクエッジの発生後にＤＭＡ転送要求制御器４１から転送要求及び加算要求が出力される回数の制限値が、「逓倍数×Ｎ」の値に補正される。
【０１０７】
そして、上記欠歯判定部５５及び切替回路５７の動作は、クランクエッジが発生してから、第２カウンタ２５が最初にカウントアップされるまで（即ち、第２カウンタ値が０から１に増加するまで）よりも前に、完了するようになっている。
【０１０８】
以上の構成により、クランク信号に欠歯部が発生した場合でも、その欠歯部に該当するパルス間隔においてバッファ７に記憶されたデータのなかから、逓倍タイミングデータを精度良く選択してＲＡＭ１１に転送することができる。
【０１０９】
動作例を述べると、例えば、図３に示したように、欠歯部でのクランクパルスの欠落数が“２”であって、上記所定数（Ｎ）が“３”であり、また、Ａ／Ｄ変換間隔の一定時間Ｔｓが１０μｓであり、逓倍数が“４”であるとする。
【０１１０】
そして、クランク軸の回転速度変動がなく、クランクエッジが、１００μｓ、３００μｓ（欠歯部）、１００μｓの各間隔で発生したとする。
この場合、欠歯部直前の最初の区間（パルス間隔）については  バッファ７に１０個のデータが記憶されると共に、演算器３３の演算結果が「１０／４＝２．５」となる。このため、第１実施形態において説明した「他の具体例」の場合と同様に、バッファ７に記憶された１０個のデータのうち、アドレス「Ａ０」，「Ａ２」，「Ａ５」，「Ａ７」の各々に記憶された４個のデータがＲＡＭ１１にＤＭＡ転送されることとなる。
【０１１１】
そして、次の欠歯部の区間については、バッファ７に３０個のデータが記憶されると共に、演算器３３の演算結果が「３０／（４×３）＝２．５」となる。このため、バッファ７に記憶された３０個のデータのうち、アドレス「Ａ０」，「Ａ２」，「Ａ５」，「Ａ７」，「Ａ１０」，「Ａ１２」，「Ａ１５」，「Ａ１７」，「Ａ２０」，「Ａ２２」，「Ａ２５」，「Ａ２７」の各々に記憶された１２個のデータがＲＡＭ１１にＤＭＡ転送されることとなる。
【０１１２】
また、３つ目の区間については、最初の区間と同様に、バッファ７に１０個のデータが記憶され、その１０個のデータのうち、アドレス「Ａ０」，「Ａ２」，「Ａ５」，「Ａ７」の各々に記憶された４個のデータがＲＡＭ１１にＤＭＡ転送されることとなる。
【０１１３】
このように、上記〈１〉の構成を設けることで、３０°ＣＡ分の欠歯部についても、１０°ＣＡ分のパルス間隔（非欠歯部）と同様に、逓倍角度（１０°／４＝２．５°）毎に発生したと考えられるデータを選択して、ＲＡＭ１１に転送することができる。
【０１１４】
尚、本第２実施形態の場合、バッファ７の記憶容量は、欠歯部に該当するパルス間隔に着目して、そのパルス間隔分の最大個数のデータを記憶可能な容量に設定しておけば良い。
【０１１５】
〈２〉また更に、信号処理装置５１には、欠歯予測回路６１が設けられている。
その欠歯予測回路６１は、エッジ回数カウンタ６３と、エッジ数メモリ６５と、比較部６７とを備えている。
【０１１６】
そして、エッジ回数カウンタ６３は、クランクエッジによってカウントアップすると共に、欠歯判定部５５により今回のクランクエッジが欠歯終了エッジであると判定されるとリセットされる。このため、エッジ回数カウンタ６３の値は、クランクエッジが発生する毎に、図３の最下段に示す「エッジ番号」と同じ値に変化する。
【０１１７】
また、エッジ数メモリ６５には、クランク信号において欠歯終了エッジから次の欠歯開始エッジまでの、クランクエッジの発生回数である欠歯間エッジ数（即ち、「３６０°ＣＡ分のクランクエッジの総数−１」であり、本実施形態では“３３”）が記憶される。
【０１１８】
そして、比較部６７は、エッジ回数カウンタ６３の値と、エッジ数メモリ６５に記憶されている欠歯間エッジ数とを比較して、両値が一致したことを検知すると、今回発生したクランクエッジが欠歯開始エッジであること（即ち、クランク信号の次のパルス間隔が欠歯部であり、次のクランクエッジが欠歯終了エッジであること）を示す欠歯予測信号を出力する。
【０１１９】
このため、比較部６７からの上記欠歯予測信号をＣＰＵ４５や他の制御装置等に供給することで、そのＣＰＵ４５や他の制御装置等は、現在がクランク信号における欠歯部の期間であることを知ることができ、例えば、その欠歯部の期間に行うべき特定の処理を確実に行うことができるようになる。
【０１２０】
尚、エッジ数メモリ６５は、固定値が書き込まれる書換不能な不揮発性メモリであっても良いが、ＣＰＵ４５によって欠歯間エッジ数が書き込まれるレジスタなどの書換可能なメモリであれば、種類が異なるクランクセンサに対応することができ、汎用性が高くなるという利点がある。
【０１２１】
また、上記第２実施形態では、欠歯判定部５５が、欠歯部判定手段の一例に相当し、演算器３３と切替回路５７が、除算値設定手段の一例に相当している。
ところで、欠歯判定部５５は、例えば、それと同様の判定機能を有する他の装置からの判定結果信号に基づいて、今回発生したクランクエッジが欠歯終了エッジであるか否かを判定するようになっていても良いが、本第２実施形態では、信号処理装置５１に備えられている第１カウンタ２１を利用して、クランクエッジが欠歯終了エッジであるかの判定を行うため、上記判定結果信号を入力するための回路（例えば通信回路等）を追加しなくても済むという利点がある。
【０１２２】
一方、上記第２実施形態において、演算器３３が、除算値を前述のデータマップから求めるのであれば、欠歯判定部５５によって今回のクランクエッジが欠歯終了エッジであると判定された場合に、除算器３３がデータマップから求めた除算値を「１／Ｎ」にして第３レジスタ３５に記憶する、補正演算部を設ければ良い。
【０１２３】
また、他の構成例として、例えば、前述のデータマップを、第１データマップとして、マップ記憶部に記憶しておくと共に、その第１データマップとは別のデータマップであって、様々な値の「リセット時の第１カウンタ値」の各々と、その各値を「逓倍数×Ｎ」で割った除算値とを、対応付けて記録した第２データマップも、マップ記憶部に記憶しておき、演算器３３は、欠歯判定部５５によって今回のクランクエッジが欠歯終了エッジであると判定された場合には、上記第２データマップの方から除算値を読み出して求めるようになっていても良い。つまり、演算器３３は、欠歯判定部５５の判定結果に応じて、使用するデータマップを切り替えるように構成しても良い。
【０１２４】
以上、本発明の一実施形態について説明したが、本発明はこうした実施形態に何等限定されるものではなく、本発明の要旨を逸脱しない範囲において、種々なる態様で実施し得ることは勿論である。
【０１２５】
例えば、第１及び第２実施形態の信号処理装置１，５１に対して、下記〈ａ〉と〈ｂ〉の変形を加えても良い。
〈ａ〉記憶制御部９のストア制御器２３は、クランクエッジが発生してから、デジタルフィルタ５からのデータが最初に更新されたタイミング（図２の例においてデータＤ１が出力されたタイミング）では、今回のクランクエッジが発生する直前にバッファ７に記憶したデータ（図２の例において時刻ｔ１の直前に発生したデータＤ０）を、バッファ７の先頭アドレス（Ａ０）にコピーすると共に、今回のデータ（図２の例におけるデータＤ１）を、バッファ７の２番目のアドレス（Ａ１）に記憶し、更に、第１カウンタ２１に“２”をセットする。
【０１２６】
そして、その後、ストア制御器２３は、次のクランクエッジが発生するまでは、前述した実施形態と同様に動作する。つまり、デジタルフィルタ５から新たなデータが出力される毎に、バッファ７のアドレスのうち、該バッファ７の先頭アドレスに第１カウンタ値を加えたアドレスへ、デジタルフィルタ５からのデータを記憶すると共に、そのデータ記憶を行う毎に、第１カウンタ２１をカウントアップする。
【０１２７】
〈ｂ〉第１レジスタ２９には「リセット時の第１カウンタ値−１」の値が記憶される。
そして、上記〈ａ〉と〈ｂ〉の変形を加えれば、例えば図２の例において、時刻ｔ２でクランクエッジが発生したときには、バッファ７には、先頭アドレスから順に、Ｄ０，Ｄ１，Ｄ２，Ｄ３，Ｄ４の５個のデータが記憶されていると共に、第１カウンタ値が“５”になるが、上記〈ｂ〉の変形により、第１レジスタ２９には“４”が記憶されて、第２カウンタ２５は“０”から“３”まで変化することとなるため、その５個のデータ（Ｄ０〜Ｄ４）のうち、最後に発生したＤ４を除く４個のデータ（Ｄ０〜Ｄ３）が、ＲＡＭ１１に転送するか否かの選択候補となり、その４個のデータ（Ｄ０〜Ｄ３）のうち、先頭アドレス（Ａ０）に記憶されているデータ（Ｄ０）と、３番目のアドレス（Ａ２）に記憶されているデータ（Ｄ２）とが、ＲＡＭ１１に転送されることとなる。
【０１２８】
つまり、クランクエッジの発生時にデジタルフィルタ５から出力されていたデータ（上記の例ではＤ０）が、必ず選択されてＲＡＭ１１に転送されるようになる。
一方、回転信号としては、クランクセンサからの信号以外でも良い。例えば、エンジンのカム軸は、クランク軸と連動して回転するため、回転信号としては、そのカム軸の回転に応じてパルスを発生させるカムセンサ（カム軸センサ）からの信号であっても良い。
【０１２９】
また、回転軸も、クランク軸やカム軸に限らず、他の回転する軸でも良く、例えば、モータの回転軸や発電機の回転軸であっても良い。
また、バッファ７とＲＡＭ１１との各々は、物理的に別々のメモリであっても良いし、物理的に同一のメモリにおける異なる記憶領域であっても良い。
【符号の説明】
【０１３０】
１，５１…信号処理装置、３…Ａ／Ｄ変換器、５…デジタルフィルタ、７…バッファ
９…記憶制御部、１３…ＤＭＡコントローラ、１５…ロードアドレス切替部
１７…転送要求出力制御部、２１…第１カウンタ、２３…ストア制御器
２５…第２カウンタ、２７…ロードアドレス制御器、２９…第１レジスタ
３１…第２レジスタ、３３…演算器、３５…第３レジスタ、３７…加算器
３９…第４レジスタ、４１…ＤＭＡ転送要求制御器、５３…第５レジスタ
５５…欠歯判定部、５７…切替回路、６１…欠歯予測回路、６３…エッジ回数カウンタ
６５…エッジ数メモリ、６７…比較部
【図１】
0005678868.tif 000002
【図３】
0005678868.tif 000003
【図４】
0005678868.tif 000004
【図２】
0005678868.tif 000005