(57)【要約】  パルス計数部１０７と、パルス計時部１０９と、オーバーフローレジスタＯＶＦに保持するオーバーフロー検出部１０８と、パルス計数部１０７の出力をパルス計数レジスタＣＮに保持しパルス計時部１０９の出力をパルス計時レジスタＣＴに保持するキャプチャー部１１０と、パルス計数レジスタＣＮとパルス計時レジスタＣＴとオーバーフローレジスタＯＶＦとを読み取り周波数演算値Ｆを算出する演算部１１３（周波数算出部）と、を備え、演算部１１３は、パルス計時部１０９がオーバーフローした場合、前回割込時におけるパルス計時データ（ＹＴ）に、キャプチャークロックＣＫ＿ＣＡＰの周期／計時クロックＣＫ＿ＴＩＭの周期で得られる所定の定数（ＴＣＡＰ）を加算して、最後のパルスＰＥからの時間／計時クロックＣＫ＿ＴＩＭの周期で得られるパルス計時データ（ＸＴ）を求める。
2011114438.tif 000002
【特許請求の範囲】
【請求項１】
外部からの入力信号のパルス数を計数するパルス計数部と、
計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、
前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、
一定周期毎に測定結果を得るキャプチャークロックのタイミングで、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、
前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、
を備え、
前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時におけるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックであるパルス計時データを求めることにより、前記周波数演算値を算出すること、
を特徴とする速度検出装置。
【請求項２】
外部からの入力信号のパルス数を計数するパルス計数部と、
計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、
前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、
一定周期毎に測定結果を得るキャプチャークロックのタイミングで、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、
前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、
を備え、
前記周波数算出部は、所定の周期内に入力されたパルスが０個の場合、直後にパルスが入力されると仮定した周波数演算値と、前回の周波数演算値と、の低い方の値を選択することにより、周波数演算値を推定すること、
を特徴とする速度検出装置。
【請求項３】
外部からの入力信号のパルス数を計数するパルス計数部と、
計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、
前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、
一定周期毎に測定結果を得るキャプチャークロックのタイミングで、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、
前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、
を備え、
前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時におけるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックであるパルス計時データを求めることにより、前記周波数演算値を算出し、
所定の周期内に入力されたパルスが０個の場合、直後にパルスが入力されると仮定した周波数演算値と、前回の周波数演算値と、の低い方の値を選択することにより、周波数演算値を推定すること、
を特徴とする速度検出装置。
【請求項４】
前記オーバーフロー検出部は、
前記オーバーフローレジスタを、前記パルス計時部が所定の最大値を超えたことを検出してセットし、前記周波数算出部からクリアされるまで保持するように構成され、
前記周波数算出部は、
前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がない場合、オーバーフローが発生していないと判断すると共に、前記オーバーフローレジスタをクリアし、
前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がある場合、前記オーバーフローレジスタの値によりオーバーフローが発生しているか否かを判断すること、
を特徴とする請求項１〜３のいずれか１つに記載の速度検出装置。
【請求項５】
前記オーバーフロー検出部は、
前記オーバーフローレジスタを、パルス計時部が所定の最大値を超えたことを検出してセットし、前記周波数算出部からクリアされるまで保持するように構成され、
前記周波数算出部は、
前記オーバーフローレジスタがセットされている場合、所定のメモリーに、オーバーフローの発生を示すオーバーフローフラグをセットすると共に、前記オーバーフローレジスタをクリアし、
前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がある場合、オーバーフローが発生していないと判断し、前記オーバーフローフラグをクリアすること、
を特徴とする請求項１〜３のいずれか１つに記載の速度検出装置。
【請求項６】
前記オーバーフロー検出部は、
オーバーフロービットを、パルス計時部が所定の最大値を超えたことを検出してセットし、パルスによりクリアし、
前記キャプチャークロックにあわせて、前記オーバーフロービットを前記オーバーフローレジスタに保持すること、
を特徴とする請求項１〜３のいずれか１つに記載の速度検出装置。
【請求項７】
前記周波数算出部は、
パルス計時レジスタのビット数を拡張して保持する変数であるパルス計時データを備え、
今回割込時におけるパルス計数レジスタの値から、前回割込時におけるパルス計数レジスタの値を減じた値に基づき、前回割込時から今回割込時の間に入力されたパルスの数を求め、
前記パルス計時部でオーバーフローが発生していない場合、前記パルス計時レジスタの値により、パルス計時データを求め、
前記パルス計時部でオーバーフローが発生している場合、前回のパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算することで、最後のパルスからの時間／前記計時クロックであるパルス計時データを求め、
下記演算式により周波数演算値を求めること、
を特徴とする請求項１〜３のいずれか１つに記載の速度検出装置。
ＮＵＭが０以外の場合、
Ｆ＝ＮＵＭ＊Ｆｔｉｍ÷（ＴＣＡＰ＋ＹＴ−ＸＴ）
ＮＵＭが０の場合、
Ｆ＝ＭＩＮ（Ｆｔｉｍ÷ＸＴ，Ｆ）
ここで、
右辺に現れるＦは、前回の周波数演算値。
左辺に現れるＦは、今回の周波数演算値。
ＮＵＭは、前回割込時から今回割込時の間に入力されたパルスの数。
Ｆｔｉｍは、計時クロック周波数。
ＴＣＡＰは、前記キャプチャークロックの周期を、計時クロックの周期で割った所定の定数。
ＸＴは、今回割込時における最後のパルスからの時間／計時クロックの周期であるパルス計時データ。
ＹＴは、前回割込時における最後のパルスからの時間／計時クロックの周期である前回のパルス計時データ。
【請求項８】
前記周波数算出部は、
前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取りバッファリングするバッファ処理部と、
前記キャプチャークロックの周期の整数倍の演算周期毎に起動し、前記バッファ処理部でバッファしたデータに基づき、演算周波数を算出する演算処理部と、
を有し、
前記バッファ処理部は、
前記パルス計数レジスタの値と前記パルス計時レジスタの値とを時系列的に記憶するリングバッファと、前記リングバッファの現在の位置を保持するリングバッファポインタとを備え、
今回割込時におけるパルス計数レジスタの値から前回割込時におけるパルス計数レジスタの値を減じた値と、第１のマスク値と、の論理積から前回割込時から今回割込時の間に入力されたパルスの数を求め、
前回のパルス計数データに、前回割込時から今回割込時の間に入力されたパルスの数を加算した値と、第２のマスク値と、の論理積により今回のパルス計数データを求め、
ここで、マスク値は２のべき乗−１の形式で表され、第２のマスク値は第１のマスク値より大きい値であり、
前記パルス計時部でオーバーフローが発生していない場合、前記パルス計時レジスタの値により、パルス計時データを求め、
前記パルス計時部でオーバーフローが発生している場合、前回のパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算することで、最後のパルスからの時間／前記計時クロックであるパルス計時データを求め、
リングバッファの現在の位置の次の位置に、パルス計数データおよびパルス計時データを保存してからポインタを更新する処理を含み、
前記演算処理部は、
ポインタの値を参照し、今回のポインタ位置と、今回のポインタ位置から所定の演算周期分過去に遡ったポインタ位置と、を求め、
リングバッファを参照して、今回のパルス計数データから、所定の演算周期分過去のパルス計数データを減じた値と、第２のマスク値と、の論理積から、所定の演算周期の間に入力されたパルスの数を求め、
下記演算式により周波数演算値を求めること、
を特徴とする請求項１〜３のいずれか１つに記載の速度検出装置。
ＮＵＭが０以外の場合、
Ｆ＝ＮＵＭ＊Ｆｔｉｍ÷（ＴＣＡＬ＋Ｔ［Ｃ１］−Ｔ［Ｃ０］）
ＮＵＭが０の場合、
Ｆ＝ＭＩＮ（Ｆｔｉｍ÷Ｔ［Ｃ０］，Ｆ）
ここで、
右辺に現れるＦは、前回の周波数演算値。
左辺に現れるＦは、今回の周波数演算値。
ＮＵＭは、所定の演算周期の間に入力されたパルスの数。
Ｆｔｉｍは、計時クロック周波数。
ＴＣＡＬは、所定の演算周期を、計時クロック周期で割った所定の定数。
Ｔ［Ｃ０］は、今回のパルス計時データ。
Ｔ［Ｃ１］は、所定の演算周期分過去のパルス計時データ。
【請求項９】
前記波形整形部の後段に設置されたフィルタ部と、
前記フィルタ部に必要なクロックを供給するフィルタクロック発生部と、
を備え、
前記フィルタ部は、フィルタクロックでパルス信号をサンプリングし、所定回数の連続一致を条件に、出力を変化させること、
を特徴とする請求項１〜３のいずれか１つに記載の速度検出装置。
【請求項１０】
前記エッジ検出部と、前記パルス計数部と、前記オーバーフロー検出部と、前記パルス計時部と、前記キャプチャー部と、前記フィルタ部とを複数備え、
前記フィルタクロック発生部を共用すること、
を特徴とする請求項９に記載の速度検出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、運動物体の速度、回転速度、または回転数等に比例した周波数を有する交流信号を検出する速度検出装置に関する。
【背景技術】
【０００２】
従来から、パルス信号から運動物体（電気車両等）の速度を検出し、種々の制御（例えば、空転や滑走の防止）等に用いる装置がよく知られている。例えば、下記特許文献１〜２に示される速度検出装置が挙げられる。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平８−２３３８４２号公報
【特許文献２】特開平８−１３６５６３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００４】
しかし、上記特許文献１に示される速度検出装置は、パルス計数レジスタとパルス計時レジスタとのセットが得られる周期であるキャプチャー周期が一定していないため、後段でデジタルフィルタ処理を入れ難いという課題があった。そのためデジタルフィルタ処理を後段に入れる場合には、マイクロプロセッサ側の演算周期毎に、そのとき得られている最新のパルス計数レジスタとパルス計時レジスタとのセットを用いて周波数を求め、バッファリングしていくことになる。そのため、場合によっては一部のデータは使われずに捨てられる状況もあり、周波数の精度劣化の要因になっているという課題があった。【０００５】
また、上記特許文献２に示される速度検出装置では、パルスの時間を測定するためのカウンターの値をラッチするのに、パルスエッジでラッチし、さらにキャプチャークロックでさらにラッチさせるため、ハードウェアリソースが余分に必要であるという課題があった。【０００６】
また、上記特許文献２に示される速度検出装置では、所定の周期内にパルスエッジが１個も入力されなかった場合と、オーバーフローが発生している場合との処置内容が明示されていないという課題があった。【０００７】
本発明は、上記に鑑みてなされたものであって、周波数の精度劣化がなく、常にデータ更新され、回路規模も比較的小さく、ソフトウェアへのオーバーヘッドも少ない速度検出装置を得ることを目的とする。
【課題を解決するための手段】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、外部からの入力信号のパルス数を計数するパルス計数部と、計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、一定周期毎に測定結果を得るキャプチャークロックのタイミングで、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、を備え、前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時におけるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックであるパルス計時データを求めることにより、前記周波数演算値を算出すること、を特徴とする。
【発明の効果】
【０００９】
この発明によれば、キャプチャー周期を一定にしているため、周波数の精度劣化がなく、常にデータ更新され、回路規模も比較的小さく、ソフトウェアへのオーバーヘッドも少なくできるという効果を奏する。
【図面の簡単な説明】
【００１０】
【図１】図１は、本発明の実施の形態１にかかる速度検出装置の構成例を示す図である。
【図２】図２は、図１のオーバーフロー検出部と演算部との構成例を示す図である。
【図３】図３は、本発明の実施の形態２にかかる速度検出装置のオーバーフロー検出部と演算部との構成例を示す図である。
【図４】図４は、本発明の実施の形態３にかかる速度検出装置のオーバーフロー検出部と演算部との構成例を示す図である。
【図５】図５は、図１の速度検出装置の設計手順の一例を示す図である。
【図６】図６は、図１の演算部の処理手順の一例を示す図である。
【図７】図７は、図１の演算部の処理内容の説明図である。
【図８】図８は、図１の速度検出装置のハードウェア部分の一の動作を説明するための図である。
【図９】図９は、図１の速度検出装置のハードウェア部分の他の動作を説明するための図である。
【図１０】図１０は、本発明の実施の形態４にかかる演算部の構成例を示す図である。
【図１１】図１１は、本発明の実施の形態４にかかる速度検出装置の設計手順の一例を示す図である。
【図１２】図１２は、図１０のバッファ処理部の処理手順の一例を示す図である。
【図１３】図１３は、図１０の演算処理部の処理手順の一例を示す図である。
【図１４】図１４は、図１０の演算部の処理内容の説明図である。
【図１５】図１５は、図１０の演算部の他の処理内容の説明図である。
【図１６】図１６は、本発明の実施の形態５にかかる速度検出装置の構成例を示す図である。
【図１７】図１７は、本発明の実施の形態６にかかる速度検出装置の構成例を示す図である。
【図１８】図１８は、特許文献１に示される速度検出装置の精度劣化の一例を示す図である。
【図１９】図１９は、特許文献１に示される速度検出装置のシミュレーション結果の一例を示す図である。
【図２０】図２０は、本発明の実施の形態４にかかる速度検出装置のシミュレーション結果の一例を示す図である。
【発明を実施するための形態】
【００１１】
以下に、本発明にかかる速度検出装置の実施の形態を図面に基づいて詳細に説明する。なお、この実施の形態によりこの発明が限定されるものではない。
【００１２】
実施の形態１．
図１は、本発明の実施の形態１にかかる速度検出装置の構成例を示す図である。速度検出装置１の役割は、入力信号ＩＮの周波数を検出することである。関連図は、図１〜図９である。
【００１３】
実施の形態１の速度検出装置１は、主たる構成として、波形整形部１０１と、エッジ検出部１０６と、パルス計数部１０７と、計時クロック発生部１０３と、パルス計時部１０９と、キャプチャークロック発生部１０４と、オーバーフロー検出部１０８と、キャプチャー部１１０と、割込要求部１１１と、演算部（周波数算出部）１１３と、を有して構成されている。
【００１４】
速度検出装置１は、図１では単体の装置のように記載しているが、ある装置の一部の機能であってもよい。名前も速度検出装置でなくてもよく、「＊＊制御装置」や、「＊＊制御システム」と呼ばれることもある。
【００１５】
本明細書の中では、数式の中に右辺と左辺に同じ変数名が出てくることがある。その場合右辺の変数前回値を使うことを意味している。
【００１６】
波形整形部１０１は、入力信号ＩＮを波形整形して矩形波（パルス信号Ｐ）に変換すると共に、フォトカプラなどを用いて入力信号ＩＮと装置内部の信号の絶縁を行う。
【００１７】
エッジ検出部１０６は、パルス信号Ｐの立ち上がりまたは立下りのどちらか一方のエッジのみを検出し、パルスエッジ（パルス）ＰＥとして出力する。このパルスエッジＰＥは、エッジが検出された瞬間だけ所定のパルス幅のＨとなり、それ以外はＬとなる。
【００１８】
計時クロック発生部１０３は、パルス計時部１０９が時間を計測するための計時クロックＣＫ＿ＴＩＭを発生する。
【００１９】
キャプチャークロック発生部１０４は、一定周期毎に測定結果を得るためのタイミングであるキャプチャークロックＣＫ＿ＣＡＰを発生する。
【００２０】
パルス計数部１０７は、出力値の初期状態が０であり、エッジ検出部１０６からのパルスエッジＰＥによって、出力値をカウントアップするように構成されている。つまり、このカウンターにはリセット条件はなく、フリーランで動作する。
【００２１】
パルス計時部１０９は、計時クロック発生部１０３からの計時クロックＣＫ＿ＴＩＭによりカウントアップし、エッジ検出部１０６からのパルスエッジＰＥによってクリアされることで、最後のパルスエッジＰＥからの時間を測定する。
【００２２】
キャプチャー部１１０は、キャプチャークロック発生部１０４からのキャプチャークロックＣＫ＿ＣＡＰのタイミングで、パルス計数部１０７からのライブパルス計数値ＬＮをパルス計数レジスタＣＮに保持する。また、キャプチャー部１１０は、キャプチャークロック発生部１０４からのキャプチャークロックＣＫ＿ＣＡＰのタイミングで、パルス計時部１０９からのライブパルス計時値ＬＴをパルス計時レジスタＣＴに保持する。
【００２３】
ここで、パルス計時部１０９とキャプチャー部１１０とオーバーフロー検出部１０８との関係を説明する。パルス計時部１０９は、最後に入力したパルスエッジＰＥからの時間を計測していて、キャプチャーが発生した際に、キャプチャー部１１０によって、その瞬間の値がキャプチャーされる。キャプチャー部１１０は、最後に入力したパルスエッジＰＥからキャプチャーが発生するまでの時間を保持していることになる。また、このタイマー（パルス計時部１０９）は、キャプチャー周期Ｔｃａｐの間を十分に測定可能なビット幅を用意すればよく、それ以上に長い間パルスエッジＰＥが入力されない場合、オーバーフローして、オーバーフロー検出部１０８でオーバーフローが検出される。
【００２４】
割込要求部１１１は、キャプチャークロック発生部１０４からのキャプチャークロックＣＫ＿ＣＡＰのタイミングで、割込要求ＩＲＱを出力する。また、割込要求部１１１は、演算部１１３からの割込要求クリア要求ＩＣＲＱ（図示せず）によって、割込要求ＩＲＱを取りやめる。なお、割込要求クリア要求ＩＣＲＱに関しては、後述する。
【００２５】
図２は、図１のオーバーフロー検出部と演算部との構成例を示す図である。オーバーフロー検出部１０８は、パルス計時部１０９からのライブパルス計時値ＬＴが所定の最大値を超えたことを検出してオーバーフローレジスタＯＶＦをセット（ＯＶＦ＝１）し、演算部１１３からリセットされるまでオーバーフローレジスタＯＶＦを保持する。
【００２６】
演算部１１３は、オーバーフローレジスタＯＶＦがセットされている場合であっても、前回割込時のパルス計数レジスタの値と、今回割込時のパルスレジスタの値と、の差があるとき、オーバーフローが発生していないと判断するとともに、オーバーフローレジスタＯＶＦをリセットする。また、演算部１１３は、前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差が無い場合には、オーバーフローレジスタＯＶＦの値により、オーバーフローが発生しているか否かを判断する。オーバーフローしているか否かは、オーバーフローフラグＯＶＦＦに設定される。
【００２７】
図８および図９に、実施の形態１にかかる速度検出装置１の動作の一例を示す。
【００２８】
図８は、図１の速度検出装置のハードウェア部分の一の動作を説明するための図である。図８には、オーバーフローが発生していない場合における各信号のタイミングチャートが示されている。ライブパルス計数値ＬＮは、パルスエッジＰＥに応じてカウントアップされ、キャプチャークロックＣＫ＿ＣＡＰのタイミングでパルス計数レジスタＣＮに保持される。ライブパルス計時値ＬＴは、最後のパルスエッジＰＥが入力されてから次のパルスエッジＰＥによってクリアされるまで増加し、キャプチャークロックＣＫ＿ＣＡＰのタイミングでパルス計時レジスタＣＴに保持される。
【００２９】
図９は、図１の速度検出装置のハードウェア部分の他の動作を説明するための図である。図９には、オーバーフローが発生している場合における各信号のタイミングチャートが示され、ライブパルス計数値ＬＮは、パルス計数レジスタＣＮに保持され、ライブパルス計時値ＬＴは、パルス計時レジスタＣＴに保持される。
【００３０】
例えば、図９の場合、演算部１１３は、２つめのキャプチャークロックＣＫ＿ＣＡＰの後、前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差があるため、オーバーフローが発生していないと判断し、オーバーフローレジスタＯＶＦの値をクリアする。ここで、図９の２つめのキャプチャークロックＣＫ＿ＣＡＰから３つめのキャプチャークロックＣＫ＿ＣＡＰまでの間で、ライブパルス計時値ＬＴが所定の最大値を超えたため、オーバーフロー検出部１０８は、オーバーフローレジスタＯＶＦをセット（ＯＶＦ＝１）する。演算部１１３は、前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値との差が無く、かつ、ＯＶＦの値が１であることで、オーバーフローが発生していると判断する。
【００３１】
図５は、図１の速度検出装置の設計手順の一例を示す図である。以下、速度検出装置１の設計手順例を説明する。
・スペック設定ステップ３０１
キャプチャー周期Ｔｃａｐ、最大入力周波数Ｆｍａｘ、最小入力周波数Ｆｍｉｎ、目標精度ＡＣＣｔを設定する。例えば、
キャプチャー周期  Ｔｃａｐ＝２．５ｍｓ
最大入力周波数  Ｆｍａｘ＝８０００Ｈｚ
最小入力周波数  Ｆｍｉｎ＝１Ｈｚ
目標精度  ＡＣＣｔ＝２００ｐｐｍ＊２．５ｍｓ＝０．５ｐｐｍ・ｓ
とする。
・計時クロック周波数設定ステップ３０２
計時クロック周波数  Ｆｔｉｍ≧１／ＡＣＣｔ−１／Ｔｃａｐ（例えば、≧１．９９９６ＭＨｚで、ここでは２．５ＭＨｚに設定する。）
・ハードウェア設定ステップ３０３
パルス計数必要ビット数  Ｎｗｉｄｔｈ＝Ｒｏｕｎｄｕｐ（ｌｏｇ（Ｆｍａｘ＊Ｔｃａｐ）／ｌｏｇ（２），０）
パルス計時必要ビット数  Ｔｗｉｄｔｈ＝Ｒｏｕｎｄｕｐ（ｌｏｇ（Ｆｔｉｍ＊Ｔｃａｐ）／ｌｏｇ（２），０）
例えば、両者は、それぞれ、５、１３となるため、パルス計数部１０７のビット数を５、パルス計時部１０９のビット数を１３に設定する。
・各種演算定数算出ステップ３０４
各種定数を求める。この値は、後述する演算部１１３で用いられる。
パルス計数マスク値０  ＮＭＡＳＫ０＝２＾Ｎｗｉｄｔｈ−１
パルス計数最大値  ＮＭＡＸ＝Ｆｍａｘ＊Ｔｃａｐ
パルス計時マスク値０  ＴＭＡＳＫ０＝２＾Ｔｗｉｄｔｈ−１
キャプチャー周期指数  ＴＣＡＰ＝Ｔｃａｐ＊Ｆｔｉｍ
パルス計時最大値  ＴＭＡＸ＝Ｆｔｉｍ／Ｆｍｉｎ
例えば、上記はそれぞれ、０ｘ１ｆ、１６０、０ｘ１ｆｆｆ、６２５０、２５０００００となる。
【００３２】
図６は、図１の演算部の処理手順の一例を示す図である。演算部１１３は、割込要求ＩＲＱにより起動し、主たる構成として、データ読込ステップ２０１と、オーバーフロー処理ステップ２０２と、割込要求クリアステップ２０３と、分子演算ステップ２０４と、分母演算ステップ２０５と、周波数演算ステップ２０６と、前回値設定ステップ２０７と、を有して構成されている。なお、計時クロック周期は、１／計時クロック周波数Ｆｔｉｍである。
【００３３】
・読込ステップ２０１
演算部１１３は、キャプチャー部１１０よりＣＮ、ＣＴを読み取りローカル変数ＸＮ、ＸＴにコピーする。
・オーバーフロー処理ステップ２０２
演算部１１３は、図２、図３、図４の何れかを実施してオーバーフローフラグＯＶＦＦを得る。
・割込要求クリアステップ２０３
演算部１１３は、割込要求クリア要求ＩＣＲＱを出力する。
・分子演算ステップ２０４
演算部１１３は、下記の式にて、ローカル変数ＮＵＭを求める。
ＮＵＭ＝ＭＩＮ（（ＸＮ−ＹＮ）＆ＮＭＡＳＫ０，ＮＭＡＸ）
即ち、今回割込時におけるパルス計数レジスタの値（ＸＮ）から、前回割込時におけるパルス計数レジスタの値（ＹＮ）を減じた値に基づき、前回割込時から今回割込時の間（直前のキャプチャー周期Ｔｃａｐの間）に入力されたパルスエッジの数ＮＵＭを求める。
・分母演算ステップ２０５
演算部１１３は、下記の式にて、ＸＴを求める。
ＯＶＦＦ＝０即ちオーバーフローなしの時、
ＸＴ＝ＸＴ＆ＴＭＡＳＫ０
即ち、演算部１１３は、パルス計時部１０９でオーバーフローが発生していない場合、パルス計時レジスタＣＴの値により、パルス計時データＸＴを求める。
それ以外、即ちオーバーフローありの時、
ＸＴ＝ＭＩＮ（ＹＴ＋ＴＣＡＰ，ＴＭＡＸ）
このオーバーフローありの時の設定については、パルス計時レジスタＣＴがオーバーフローで無効であるため、前回値ＹＴから計算しているのである。ただし、上限ＴＭＡＸを設けている。なお、ソフトウェアで値を足しこんでいるので、周波数の精度劣化が発生するのかというと、そうではない。仮にパルス計時部１０９のビット幅が十分あったとしたら、キャプチャー周期Ｔｃａｐの時間にキャプチャー周期指数ＴＣＡＰ分増加する。従って、これによる周波数の精度劣化はない。ハードウェア（パルス計時部１０９）は短い時間に関して分担し、ソフトウェアは長い時間に関して分担しているのである。即ち、演算部１１３は、パルス計時部１０９がオーバーフローしている場合、前回のパルス計時データ（ＹＴ）に、キャプチャークロック周期／計時クロック周期で得られる所定の定数値（ＴＣＡＰ）を加算して、最後のパルスエッジＰＥからの時間／計時クロック周期であるパルス計時データ（ＸＴ）を求める。
・周波数演算ステップ２０６
演算部１１３は、ステップ２０５で得られたパルス計時データ（ＸＴ）を用いて、下記演算式にて周波数演算値Ｆを算出する。
ＮＵＭが０のとき、
Ｆ＝ＭＩＮ（Ｆｔｉｍ／ＸＴ，Ｆ）
即ち、演算部１１３は、所定の周期内に入力されたパルスエッジＰＥが０個の場合、直後にパルスエッジＰＥが入力されると仮定した周波数演算値（Ｆｔｉｍ／ＸＴ）と、前回の周波数演算値Ｆと、の低い方の値を選択することにより、周波数演算値Ｆを推定する。
それ以外のとき、
Ｆ＝ＮＵＭ＊Ｆｔｉｍ／（ＴＣＡＰ＋ＹＴ−ＸＴ）
・前回値設定ステップ２０７
演算部１１３は、次回の演算のために、ＸＴと、ＸＮを、前回値ＹＴとＹＮとへ保存する。ここでひとつ注意点がある。※前回値ＹＴはパルス計数最大値ＴＭＡＸで初期化しなければならない。
【００３４】
ここで、図７を用いて、演算部１１３の処理を解説する。図７は、図１の演算部の処理内容の説明図である。ＣＡＳＥ１は、図７の１つめのキャプチャークロックＣＫ＿ＣＡＰが入力されてから、２つめのキャプチャークロックＣＫ＿ＣＡＰが入力されるまでの間に、パルスエッジＰＥが１個以上入ってきている例である。図では、パルスエッジＰＥの数ＮＵＭが１２個であり、また（ＴＣＡＰ＋ＹＴ−ＸＴ）／Ｆｔｉｍと記載した区間には、パルス周期が１２周期ある。よって、周波数演算値Ｆを求める式の分子として、ＮＵＭの値で問題ないことが分かる。
【００３５】
また、周波数演算値Ｆを求める式の分母、つまり１２周期分の時間については、（ＴＣＡＰ＋ＹＴ−ＸＴ）／Ｆｔｉｍ、と図示したところをみれば、ＴＣＡＰ／Ｆｔｉｍ、と図示した時間より、ＹＴ／Ｆｔｉｍ分左側が長く、ＸＴ／Ｆｔｉｍ分右側が短くなっていることから、（ＴＣＡＰ＋ＹＴ−ＸＴ）／Ｆｔｉｍで正しいことは明白だろう。
【００３６】
そのため、周波数演算値Ｆを求める式として「Ｆ＝ＮＵＭ＊Ｆｔｉｍ／（ＴＣＡＰ＋ＹＴ−ＸＴ）」が正しいことが分かる。
【００３７】
次にＣＡＳＥ２では、図７の１つめのキャプチャークロックＣＫ＿ＣＡＰが入力されてから、２つめのキャプチャークロックＣＫ＿ＣＡＰが入力されるまで間（所定の周期内）に、パルスエッジＰＥが１つも入ってきていない状態である。このとき、情報としては、パルスエッジＰＥが入ってきていないからといって何もないのではなく、現時点で、最後のパルスエッジＰＥからＸＴ／Ｆｔｉｍだけ経過しているため、少なくとも、周波数としてＦｔｉｍ／ＸＴよりは小さいことは明白である。従って、演算部１１３は、前回の周波数演算値ＦとＦｔｉｍ／ＸＴとの小さい方を、新しい周波数演算値Ｆとして出力する。つまり「Ｆ＝ＭＩＮ（Ｆｔｉｍ／ＸＴ，Ｆ）」という式を使っている。
【００３８】
このように、演算部１１３は、所定の周期内に入力されたパルスエッジの数が０個であっても、直後に仮にパルスエッジＰＥが入力されると仮定した周波数演算値（即ち、計時クロック周波数／パルス計時データで得られる値）と、前回の周波数演算値（Ｆ）と、の低い方の値を選択することにより、周波数演算値Ｆを推定する。
【００３９】
図１８は、特許文献１に示される速度検出装置の精度劣化の一例を示す図である。図１８には、パルス計数レジスタとパルス計時レジスタとのセットが得られる周期であるキャプチャー周期Ｔｃａｐ（キャプチャータイミング）と、マイクロプロセッサ側の演算周期Ｔｃａｌとが示されている。図１８に示すように、特許文献１に示される速度検出装置では、キャプチャー周期Ｔｃａｐが一定でないため、デジタルフィルタ処理を後段に入れた場合には、マイクロプロセッサ側の演算周期毎に得られる最新のパルス計数レジスタとパルス計時レジスタとのセットを用いて周波数を求め、バッファリングしていくことになる。従って、図１８に示すように、一部のデータが使われずに捨てられる場合があり、周波数の精度劣化の要因になっていた。一方、実施の形態１にかかる速度検出装置１では、このような問題が発生しない。
【００４０】
以上説明したように、実施の形態１にかかる速度検出装置１は、パルス計数部１０７と、パルス計時部１０９と、計時クロック発生部１０３と、キャプチャークロック発生部１０４と、オーバーフロー検出部１０８と、キャプチャー部１１０と、演算部１１３とを有し、キャプチャー周期Ｔｃａｐが一定になるようにしたので、特許文献１に示される速度検出装置のように、一部のデータが使われずに捨てられるというケースがなく、周波数の精度劣化が生じない。
【００４１】
また、実施の形態１にかかる速度検出装置１は、パルスエッジＰＥが入ってくるかどうかに関わらず、キャプチャークロックＣＫ＿ＣＡＰによって定期的にデータ（周波数演算値Ｆ）の取得が行われ、データが更新されるので、下記特許文献１に示される速度検出装置であったような、パルスエッジＰＥが無いときにデータが更新されないといった問題は発生しない。即ち、特許文献１に示される速度検出装置では、パルスエッジＰＥが入力されない場合、パルス計数レジスタとパルス計時レジスタとのセット（キャプチャー周期Ｔｃａｐ）が得られないため、最新の周波数演算値Ｆが求めることができないという問題があった。さらに、その対処方法として、パルス信号が長期に渡って入力されていないことを検出するパルス欠落検出手段を設け、パルス欠落しているときには、周波数演算値を０と認識するという処理を行わなければならなかったが、本発明の実施の形態１にかかる速度検出装置１では、このようなパルス欠落検出手段は不要である。
【００４２】
また、実施の形態１にかかる速度検出装置１では、キャプチャークロックＣＫ＿ＣＡＰによって定期的にデータ取得が行われるため、ハードウェアのタイマーに大きな値を格納する必要がなく、格段に小さなリソースによって低い周波数に対応できる。即ち、特許文献１に示される速度検出装置では、低い周波数まで認識可能とするためには、その周波数に相当する周期分の時間を測定可能な容量の時間計測回路を設けなければならない。例えば、計時用クロック＝１ＭＨｚ、１６ビット幅のパルス計時部で計時する場合、１ＭＨｚ／６５５３６＝１５．３Ｈｚが測定可能な下限周波数となる。このように、特許文献１に示される速度検出装置では、低い周波数に対応するために大きなハードウェアリソースが必要となるという問題があったのに対して、本発明の実施の形態１にかかる速度検出装置１では、このような大きなハードウェアリソースが不要である。
【００４３】
また、実施の形態１にかかる速度検出装置１によれば、パルスの時間測定用カウンターを１つのラッチのみで構成すればよい（本実施の形態では、キャプチャー部１１０のパルス計時レジスタＣＴ）。即ち、特許文献２に示される速度検出装置では、パルスの時間を測定するためのカウンターの値をラッチするためにパルスエッジでラッチし、さらにキャプチャークロックでさらにラッチさせるため、二重のラッチが必要であったが、本発明の実施の形態１にかかる速度検出装置１では、余分なハードウェアリソースが不要である。
【００４４】
また、実施の形態１にかかる速度検出装置１は、パルス計時部１０９がオーバーフローした場合、前回割込時におけるパルス計時データ（ＹＴ）に、キャプチャークロック周期／計時クロック周期で得られる所定の定数値（ＴＣＡＰ）を加算することで、最後のパルスエッジＰＥからの時間／計時クロック周期であるパルス計時データ（ＸＴ）を求めるように構成されている。特許文献２に示される速度検出装置は、オーバーフローが発生している場合の処置内容が明示されていなかったが、本発明の実施の形態１にかかる速度検出装置１では、これらの処置内容も明確に示している。
【００４５】
また、実施の形態１にかかる速度検出装置１によれば、所定の周期内に入力されたパルスエッジの数が０個の場合、直後に仮にパルスエッジＰＥが入力されると仮定した周波数演算値と、前回の周波数演算値と、の低い方の値を選択するようにしたので、パルスエッジＰＥが入ってくるかどうかに関わらず、計時クロックＣＫ＿ＴＩＭによって、定期的に周波数演算値Ｆを得ることが可能である。特許文献２に示される速度検出装置は、所定の周期内にパルスエッジＰＥが１つも入力されなかった場合の処置内容が明示されていなかったが、本発明の実施の形態１にかかる速度検出装置１では、これらの処置内容も明確に示している。
【００４６】
実施の形態２．
次に、オーバーフローの検出方法が若干異なるものを紹介する。実施の形態１では、オーバーフローしているか否かをオーバーフロー検出部１０８のオーバーフローレジスタＯＶＦで管理していた。実施の形態２では、オーバーフローしているか否かを、メモリーで管理する。それ以外は全く変わらないので、変更のある部分のみの説明を行う。
【００４７】
図３は、本発明の実施の形態２にかかる速度検出装置のオーバーフロー検出部と演算部との構成例を示す図である。オーバーフロー検出部１０８は、実施の形態１と同様である。
【００４８】
演算部１１３は、オーバーフローしているか否かを判断し、オーバーフローフラグＯＶＦＦをメモリーに保持するように構成され、オーバーフローレジスタＯＶＦがセットされている場合、オーバーフローが発生していると判断してオーバーフローフラグＯＶＦＦをセットするとともに、オーバーフロー検出部１０８のオーバーフローレジスタＯＶＦをクリアする。また、前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がある場合、演算部１１３は、オーバーフローが発生していないと判断してオーバーフローフラグＯＶＦＦをクリアする。
【００４９】
図３のオーバーフロー検出部１０８および演算部１１３の動作を説明する。図３のオーバーフロー検出部１０８は、ライブパルス計時値ＬＴが最大値を超えたとき、オーバーフローレジスタＯＶＦをセットする。演算部１１３は、割込処理によって、オーバーフローフラグＯＶＦＦをセットし、オーバーフローフラグＯＶＦＦを保持するとともに、オーバーフロー検出部１０８のオーバーフローレジスタＯＶＦをクリアする。即ち、オーバーフローレジスタＯＶＦが０から１に変化したとき、オーバーフローフラグＯＶＦＦが保持されるとともに、オーバーフローレジスタＯＶＦがクリアされる。
【００５０】
以上説明したように、実施の形態２にかかる速度検出装置１は、オーバーフローしているか否かを判断し、オーバーフローフラグＯＶＦＦをメモリーに保持するように構成されているので、実施の形態１と同様の効果と共に、演算部１１３の構成を簡素化することが可能である。
【００５１】
実施の形態３．
次に、さらにオーバーフローの検出方法が若干異なるものを紹介する。実施の形態１、２では、オーバーフローしているか否かをオーバーフロー検出部１０８および演算部１１３で協調して行うが、実施の形態３では、オーバーフローしているか否かを、オーバーフロー検出部１０８で自動的に判定し、演算部１１３では、このオーバーフローレジスタＯＶＦを読み込んでオーバーフローフラグＯＶＦＦに設定する。
【００５２】
図４は、本発明の実施の形態３にかかる速度検出装置のオーバーフロー検出部と演算部との構成例を示す図である。オーバーフロー検出部１０８は、ライブパルス計時値ＬＴが最大値を超えたときオーバーフローレジスタＯＶＦをセットするとともに、パルスエッジＰＥによりオーバーフローレジスタＯＶＦをクリアする。即ち、実施の形態１および２は、演算部１１３の割込処理によって、オーバーフローレジスタＯＶＦをクリアする態様であるが、実施の形態３は、パルスエッジＰＥによって、オーバーフローレジスタＯＶＦをクリアするように構成されている。さらに、オーバーフロー検出部１０８は、オーバーフローレジスタＯＶＦの値（１または０）を、キャプチャークロックＣＫ＿ＣＡＰのタイミングで保持するように構成されている。演算部１１３は、オーバーフロー検出部１０８で保持されたオーバーフローレジスタＯＶＦを読み込んでオーバーフローフラグＯＶＦＦに設定する。
【００５３】
以上説明したように、実施の形態３にかかる速度検出装置１は、オーバーフローしているか否かをオーバーフロー検出部１０８で判定するようにしたので、実施の形態１と同様の効果と共に、演算部１１３の構成を一層簡素化することが可能である。
【００５４】
実施の形態４．
次に、ハードウェアの制約などにより、パルス計数部１０７のビット数や、パルス計時部１０９のビット数をあまり大きく出来ないが、精度を高める目的で、周波数を求める分母にあたるベース時間（＝演算周期）を大きくしたいケースのために、実施の形態３に比べて、演算部１１３の構成を変更した実施の形態４を説明する。
【００５５】
図１０は、本発明の実施の形態４にかかる演算部の構成例を示す図である。関連図は、図１０〜図１４である。実施の形態４にかかる速度検出装置１は、ソフトウェアに少しだけ負担をかけることで、ハードウェアの規模（パルス計数部１０７のビット数、パルス計時部１０９）を小さく保つように設計されている。
【００５６】
図１０に示される演算部１１３は、バッファ処理部９０１と、演算処理部９０２とを有して構成されている。
【００５７】
バッファ処理部９０１は、周波数を求めるところは行わず、割込要求ＩＲＱによって、リングバッファへの書き込み処理を行う。周波数を演算する部分は、演算周期Ｔｃａｌ毎の演算処理部９０２に移す。より具体的には、バッファ処理部９０１は、パルス計数レジスタＣＮの値を時系列的に記憶するパルス計数リングバッファＮ［  ］と、パルス計時レジスタＣＴの値を時系列的に記憶するパルス計時リングバッファＴ［  ］と、リングバッファの現在の位置を保持するリングバッファポインタＰＮＴとを有している。
【００５８】
演算処理部９０２は、キャプチャークロックの周期の整数倍の演算周期Ｔｃａｌ（所定の演算周期）毎に起動し、バッファ処理部９０１でバッファされたデータに基づいて、周波数演算値Ｆを算出する。
【００５９】
図１１は、本発明の実施の形態４にかかる速度検出装置の設計手順の一例を示す図である。
・スペック設定ステップ６０１
演算周期Ｔｃａｌ、最大入力周波数Ｆｍａｘ、最小入力周波数Ｆｍｉｎ、目標精度ＡＣＣｔを設定する。例えば、
演算周期  Ｔｃａｌ＝２０ｍｓ
最大入力周波数  Ｆｍａｘ＝８０００Ｈｚ
最小入力周波数  Ｆｍｉｎ＝１Ｈｚ
目標精度  ＡＣＣｔ＝２５ｐｐｍ＊２０ｍｓ＝０．５ｐｐｍ・ｓ
とする。
・計時クロック周波数設定ステップ６０２
Ｆｔｉｍ≧１／ＡＣＣｔ−１／Ｔｃａｌ  例えば、≧１．９９９９５ＭＨｚで、ここでは２．５ＭＨｚに設定する。
・キャプチャー周期設定ステップ６０３
ハードウェア制約、ソフトウェア制約を考慮し、以下の条件を満たす様にキャプチャー周期Ｔｃａｐを設定する。
パルス計数必要ビット数  Ｎｗｉｄｔｈ＝Ｒｏｕｎｄｕｐ（ｌｏｇ（Ｆｍａｘ＊Ｔｃａｐ）／ｌｏｇ（２），０）
パルス計時必要ビット数  Ｔｗｉｄｔｈ＝Ｒｏｕｎｄｕｐ（ｌｏｇ（Ｆｔｉｍ＊Ｔｃａｐ）／ｌｏｇ（２），０）
上記必要ビット数が大きくなると、ハードウェア制約となり、Ｔｃａｐが小さくなると、割込頻度が増え、ソフトウェア制約となる。バランスを考慮して決定する。例えば、Ｔｃａｐ＝２．５ｍｓ、Ｎｗｉｄｔｈ＝５、Ｔｗｉｄｔｈ＝１３に設定する。
・各種演算定数算出ステップ６０４
各種定数を求める。この値は後述する演算部１１３で用いられる。
パルス計数マスク値０（第１のマスク値）  ＮＭＡＳＫ０  ＝  ２＾Ｎｗｉｄｔｈ−１
パルス計数最大値  ＮＭＡＸ  ＝  Ｆｍａｘ  ＊  Ｔｃａｌ
パルス計数マスク値１（第２のマスク値）  ＮＭＡＳＫ１  ＝  ２＾（Ｒｏｕｎｄｕｐ（ｌｏｇ（ＮＭＡＸ）／ｌｏｇ（２），０））−１
パルス計時マスク値０  ＴＭＡＳＫ０  ＝  ２＾Ｔｗｉｄｔｈ−１
キャプチャー周期指数  ＴＣＡＰ  ＝  Ｔｃａｐ  ＊  Ｆｔｉｍ
パルス計時最大値  ＴＭＡＸ  ＝  Ｆｔｉｍ  ／  Ｆｍｉｎ
演算周期指数  ＴＣＡＬ  ＝  Ｔｃａｌ  ＊  Ｆｔｉｍ
例えば、上記はそれぞれ、０ｘ１ｆ、１６０、０ｘｆｆ、０ｘ１ｆｆｆ、６２５０、２５０００００、５００００となる。
【００６０】
図１２は、図１０のバッファ処理部の処理手順の一例を示す図である。バッファ処理部９０１は、割込要求ＩＲＱにより起動し、主たる構成として、データ読込ステップ４０１と、オーバーフロー処理ステップ４０２と、割込要求クリアステップ４０３と、計数値編集ステップ４０４と、計時値編集ステップ４０５と、バッファ更新ステップ４０６と、ポインタ更新ステップ４０７と、前回値設定ステップ４０８と、を有して構成されている。
【００６１】
・データ読込ステップ４０１
バッファ処理部９０１は、キャプチャー部１１０よりＣＮ、ＣＴを読み取り、ローカル変数ＸＮ、ＸＴにコピーする。
・オーバーフロー処理４０２
バッファ処理部９０１は、図２、図３、図４の何れかを実施してオーバーフローフラグＯＶＦＦを得る。
・割込要求クリアステップ４０３
バッファ処理部９０１は、割込要求クリア要求ＩＣＲＱを出力する。
・計数値編集ステップ４０４
バッファ処理部９０１は、下記の式にて、キャプチャー周期Ｔｃａｐ用から演算周期Ｔｃａｌ用にビット拡張した値ＸＮを求める。
ＸＮ＝（ＹＮ＋（ＸＮ−ＹＮ）＆ＮＭＡＳＫ０）＆ＮＭＡＳＫ１
即ち、バッファ処理部９０１は、今回割込時におけるパルス計数レジスタＸＮの値から前回割込時におけるパルス計数レジスタＹＮの値を減じた値と、ＮＭＡＳＫ０と、の論理積から、前回割込時から今回割込時の間に入力されたパルスエッジの数を求める。さらに、バッファ処理部９０１は、前回のパルス計数データ（ＹＮ）に、前回割込時から今回割込時の間に入力されたパルスエッジの数を加算した値と、ＮＭＡＳＫ１と、の論理積により今回のパルス計数データ（ＸＮ）を求める。
・計時値編集ステップ４０５
バッファ処理部９０１は、下記の式にて、最後にパルスエッジＰＥが入力されてから、キャプチャークロックＣＫ＿ＣＡＰまでの時間ＸＴを求める。
ＯＶＦＦ＝０即ちオーバーフローなしの時、
ＸＴ＝ＸＴ＆ＴＭＡＳＫ０
即ち、バッファ処理部９０１は、パルス計時部１０９でオーバーフローが発生していない場合、パルス計時レジスタＣＴの値によって、パルス計時データＸＴを求める。
それ以外のとき、
ＸＴ＝ＭＩＮ（ＹＴ＋ＴＣＡＰ，ＴＭＡＸ）
即ち、バッファ処理部９０１は、パルス計時部１０９でオーバーフローが発生している場合、前回のパルス計時データ（ＹＴ）に、キャプチャークロック周期／計時クロック周期で得られる所定の定数値（ＴＣＡＰ）を加算することで、最後のパルスエッジＰＥからの時間／計時クロック周期であるパルス計時データ（ＸＴ）を求める。
・バッファ更新ステップ４０６
バッファ処理部９０１は、次のリングバッファポインタの位置ＰＮＴ２を求める。
下記の式にて、リングバッファを更新する。
Ｎ［ＰＮＴ２］＝ＸＮ
Ｔ［ＰＮＴ２］＝ＸＴ
・ポインタ更新ステップ４０７
バッファ処理部９０１は、リングバッファポインタＰＮＴを更新する。
・前回値設定ステップ４０８
バッファ処理部９０１は、下記の式にて、前回値を設定する。
ＹＮ＝ＸＮ
ＹＴ＝ＸＴ
【００６２】
ここでひとつ注意点がある。パルス計時リングバッファＴ［  ］はパルス計数最大値ＴＭＡＸで初期化されていなければならない。
【００６３】
図１３は、図１０の演算処理部の処理手順の一例を示す図である。演算処理部９０２は、演算周期Ｔｃａｌ毎に起動し、主たる構成として、ポインタ読込ステップ５０１と、分子演算ステップ５０２と、周波数演算値Ｆを求める周波数演算ステップ５０３と、を有して構成されている。
【００６４】
・ポインタ読込ステップ５０１
演算処理部９０２は、リングバッファポインタＰＮＴを一度だけ参照し、ローカル変数Ｃ０には今回のポインタ位置を設定し、ローカル変数Ｃ１にはＣ０からＴＣＡＬ／ＴＣＡＰ個分遡ったポインタ位置を設定する。
・分子演算ステップ５０２
演算処理部９０２は、下記の式にて、ＮＵＭを求める。
ＮＵＭ  ＝  ＭＩＮ（（Ｎ［Ｃ０］−Ｎ［Ｃ１］）＆ＭＡＳＫ１，ＮＭＡＸ）
即ち、演算処理部９０２は、リングバッファを参照して、今回のパルス計数データ（Ｎ［Ｃ０］）から、所定の演算周期（ＴＣＡＬ／ＴＣＡＰ）分遡った位置のパルス計数データ（Ｎ［Ｃ１］）を減じた値と、ＭＡＳＫ１との論理積から、所定の演算周期の間に入力されたパルスエッジの数ＮＵＭを求める。
・周波数演算ステップ５０３
演算処理部９０２は、下記の式にて、Ｆを求める。
ＮＵＭが０のとき、
Ｆ＝ＭＩＮ（Ｆｔｉｍ／Ｔ［Ｃ０］，Ｆ）
それ以外のとき、
Ｆ＝ＮＵＭ＊Ｆｔｉｍ／（ＴＣＡＬ＋Ｔ［Ｃ１］−Ｔ［Ｃ０］）
【００６５】
ここで、図１４および図１５を用いて、演算部１１３の処理を解説する。図１４は、図１０の演算部の処理内容の説明図であり、図１５は、図１０の演算部の他の処理内容の説明図である。
【００６６】
図１４において、ＣＡＳＥ１は、パルスエッジＰＥが１個以上入ってきている例である。図では、ＮＵＭが１２個であり、また（ＴＣＡＬ＋Ｔ［Ｃ１］−Ｔ［Ｃ０］）／Ｆｔｉｍと記載した区間には、パルス周期が１２周期ある。よって、周波数を求める式の分子としてＮＵＭの値で問題ないことが分かる。
【００６７】
また、周波数演算値Ｆを求める式の分母、つまり１２周期分の時間については、（ＴＣＡＬ＋Ｔ［Ｃ１］−Ｔ［Ｃ０］）／Ｆｔｉｍと図示したところをみれば、ＴＣＡＬ／Ｆｔｉｍと図示した時間より、Ｔ［Ｃ１］／Ｆｔｉｍ分左側が長く、Ｔ［Ｃ０］／Ｆｔｉｍ分右側が短くなっていることから、（ＴＣＡＬ＋Ｔ［Ｃ１］−Ｔ［Ｃ０］）／Ｆｔｉｍで正しいことは明白だろう。
【００６８】
そのため、周波数演算値Ｆを求める式として、「Ｆ  ＝  ＮＵＭ＊Ｆｔｉｍ／（ＴＣＡＬ＋Ｔ［Ｃ１］−Ｔ［Ｃ０］）」が正しいことが分かる。
【００６９】
次にＣＡＳＥ２では、パルスエッジＰＥが１つも入ってきていない状態である。このとき、情報としては、パルスエッジＰＥが入ってきていないからといって何もないのではなく、現時点で、最後のパルスエッジＰＥからＴ［Ｃ０］／Ｆｔｉｍだけ経過しているため、少なくとも、周波数として、Ｆｔｉｍ／Ｔ［Ｃ０］よりは小さいことは明白である。従って、演算部１１３は、前回の周波数演算値ＦとＦｔｉｍ／Ｔ［Ｃ０］との小さい方を、新しい周波数演算値Ｆとして出力する。つまり、「Ｆ＝ＭＩＮ（Ｆｔｉｍ／Ｔ［Ｃ０］，Ｆ）」という式を使っている。
【００７０】
なお、図１５のＣＡＬは、本演算部１１３が動作している部分を示すが、これはソフトウェアの負荷変動の都合上、ぴったり演算周期Ｔｃａｌとはならず、毎回多少変動する。しかし、これは演算には全く影響しない。なぜなら、ポインタ読込ステップ５０１でリングバッファポインタＰＮＴを一度だけ参照することで、直前のキャプチャデータの位置を憶え、それから所定の数だけポインタを遡ることできっちり演算周期Ｔｃａｌ間のデータを参照することができるからである。よって、非常に稀ではあるが、図１５に示すようなタイミングで本演算部１１３が動作した場合には、ＣＡＳＥ１では、図中Ｇ（ギャップ）と示されている区間のデータは用いられず、ＣＡＳＥ２では、図中Ｗ（ラップ）と示されている区間のデータは２度使われる。
【００７１】
ここで、図１９および図２０を用いて、シミュレーション結果の説明を行う。図１９は、特許文献１に示される速度検出装置のシミュレーション結果の一例を示す図であり、図２０は、本発明の実施の形態４にかかる速度検出装置のシミュレーション結果の一例を示す図である。
【００７２】
図１９において、従来の速度検出装置では、７０１の動作で、周波数演算値Ｆが、１５．３Ｈｚで飽和しているは、パルス信号Ｐが入力されない期間であるためである。また、従来の速度検出装置では、７０２の動作が示すように、入力周波数０の状態から１パルスだけ、入力信号ＩＮが入力された場合、最低認識周波数を認識してしまう。
【００７３】
図２０において、実施の形態４にかかる速度検出装置１では、パルスエッジＰＥが入ってくるかどうかに関わらず、計時クロックＣＫ＿ＴＩＭによって定期的にデータ取得が行われる。図２０の８０１の動作を図１９の７０１の動作と比較すると、図２０の８０１の動作には図１９の７０１に見られるような飽和は見られない。さらに、図１９の７０２の動作に見られるような、最低周波数を認識してしまう現象も見られない。
【００７４】
以上説明したように、実施の形態４にかかる速度検出装置１によれば、ソフトウェアに少し負担をかけるだけで、ハードウェアの規模（パルス計数部１０７のビット数、パルス計時部１０９）を更に小さく保つことができる。特許文献１に示される速度検出装置のように、データが使われることなく失われるケースは稀にあるものの、周波数の精度劣化とはいえない。
【００７５】
実施の形態５．
次に、ノイズの影響を除去するために、フィルタ部１０５を追加した実施の形態５について説明する。図１６は、本発明の実施の形態５にかかる速度検出装置の構成例を示す図である。以下、実施の形態１と同一部分には同一符号を付してその説明を省略し、ここでは異なる部分についてのみ述べる。
【００７６】
図１６の速度検出装置１は、主たる構成として、波形整形部１０１と、フィルタクロック発生部１０２と、フィルタ部１０５と、エッジ検出部１０６と、パルス計数部１０７と、計時クロック発生部１０３と、パルス計時部１０９と、キャプチャークロック発生部１０４と、オーバーフロー検出部１０８と、キャプチャー部１１０と、割込要求部１１１と、演算部１１３と、を有して構成されている。実施の形態５では、実施の形態１と異なる要素として、波形整形部１０１の後段に設置されたノイズ除去用のフィルタ部１０５と、フィルタ部１０５に必要なクロックを供給するフィルタクロック発生部１０２とを有している。
【００７７】
フィルタ部１０５は、フィルタクロックＣＫ＿ＦＩＬでパルス信号Ｐをサンプリングし、所定回数の連続一致を条件に、出力を変化させるように構成されている。
【００７８】
ノイズの周波数は一般的に高く、回路に混入した場合、パルス信号Ｐが高速に変化する。そのため、フィルタクロックＣＫ＿ＦＩＬと連続一致の回数を適切に設定すれば、ノイズ成分は完全にカットできる。また、入力信号ＩＮに重畳されるノイズではなくても、波形整形部１０１の出力波形が振動的になった場合には、ノイズと同様に高い周波数成分を含んでしまうが、この場合も同様に、本フィルタ回路で除去することができる。さらに、フィルタ部１０５はフィルタであるので、若干の応答遅れが発生するが、キャプチャー周期Ｔｃａｐに比べて十分短いものであり、図示しない後段のシステムへは全く影響を与えない。
【００７９】
ここで、フィルタを設定する上での注意点がある。波形整形部１０１ではフォトカプラを用いて絶縁することがある。この場合、フォトカプラのＯＮ時間とＯＦＦ時間との違いによって、高い周波数を入力信号ＩＮに入力したとき、入力信号ＩＮのデューティ比がたとえ５０：５０だとしても、パルス信号Ｐのデューティ比が大きく偏ってしまうことがある。フィルタクロックＣＫ＿ＦＩＬと連続一致の回数によって得られる帯域については、このデューティ比の偏りを考慮して、実際に使用する帯域より十分高い帯域に設定しなければならない。例えば、スペック上の最大入力周波数で、パルス信号Ｐのデューティ比１：９９となった場合でも認識可能な帯域としてもよいだろう。
【００８０】
以上説明したように、実施の形態５にかかる速度検出装置１は、波形整形部１０１の後段に設置され、フィルタクロックＣＫ＿ＦＩＬでパルス信号Ｐをサンプリングし、数回の連続一致を条件に出力を変化させるフィルタ部１０５を備えるようにしたので、実施の形態１〜４の効果に加えて、波形整形部１０１の出力波形が振動的になった場合でも、高いノイズフィルタ効果を得ることが可能である。
【００８１】
実施の形態６．
次に、多チャンネル化した実施の形態６について説明する。図１７は、本発明の実施の形態６にかかる速度検出装置の構成例を示す図である。以下、実施の形態５と同一部分には同一符号を付してその説明を省略し、ここでは異なる部分についてのみ述べる。
【００８２】
図１７の速度検出装置１は、主たる構成として、波形整形部１０１と、フィルタクロック発生部１０２と、フィルタ部１０５と、エッジ検出部１０６と、パルス計数部１０７と、計時クロック発生部１０３と、パルス計時部１０９と、キャプチャークロック発生部１０４と、オーバーフロー検出部１０８と、キャプチャー部１１０と、割込要求部１１１と、演算部１１３と、を有して構成されている。実施の形態５では、実施の形態１と異なる要素として、波形整形部１０１の後段に設置されたノイズ除去用のフィルタ部１０５と、フィルタ部１０５に必要なクロックを供給するフィルタクロック発生部１０２とを有している。
【００８３】
図１７の速度検出装置１は、波形整形部１０１、フィルタ部１０５、エッジ検出部１０６、パルス計数部１０７、パルス計時部１０９、オーバーフロー検出部１０８、およびキャプチャー部１１０を複数有し、さらに、フィルタクロック発生部１０２、計時クロック発生部１０３、キャプチャークロック発生部１０４、および割込要求部１１１を有して構成されている。即ち、図１７の速度検出装置１は、複数のチャンネルに対して、フィルタクロック発生部１０２、計時クロック発生部１０３、キャプチャークロック発生部１０４、および割込要求部１１１を共用する構成である。
【００８４】
以上説明したように、実施の形態６にかかる速度検出装置１は、計時クロック発生部１０３と、キャプチャークロック発生部１０４と、フィルタクロック発生部１０２と、割込要求部１１１と共用するようにしたので、多チャンネル化した場合でも割込要求ＩＲＱ発生頻度は変わらないため、ソフトウェアへのオーバーヘッドを抑えることが可能である。特許文献１に示される速度検出装置では、多チャンネル化した際に、チャンネル毎に、ばらばらに割込要求ＩＲＱが発生するため、この割込要求ＩＲＱが割込頻度を上げ、ソフトウェアへのオーバーヘッドが発生する場合があるという問題があったが、実施の形態６の速度検出装置１では、多チャンネル化しても割込要求ＩＲＱ発生頻度は変わらず、ソフトウェアへのオーバーヘッドを抑えることが可能である。
【００８５】
なお、本発明の実施の形態１〜６にかかる速度検出装置は、波形整形部１０１と、エッジ検出部１０６と、計時クロック発生部１０３と、キャプチャークロック発生部１０４とを有して構成されているが、これに限定されるものではなく、波形整形部１０１と、エッジ検出部１０６と、計時クロック発生部１０３と、キャプチャークロック発生部１０４とを速度検出装置の外部に設置し、そこから得られたパルスエッジＰＥ、キャプチャークロックＣＫ＿ＣＡＰ、計時クロックＣＫ＿ＴＩＭを用いてもよい。
【００８６】
また、本発明の実施の形態１〜６にかかる速度検出装置は、鉄道車両の向けの速度検出装置を例に説明したが、他にも周波数信号を測定するあらゆる機器にも適用可能である。その他、本発明は、その趣旨を逸脱しない範囲で種々変形して実施可能である。
【産業上の利用可能性】
【００８７】
以上のように、本発明にかかる速度検出装置は、鉄道車両向け速度検出装置を始め、他にも周波数信号を測定するあらゆる機器に適用可能であり、特に、周波数の精度劣化がなく、常にデータ更新され、回路規模も比較的小さく、ソフトウェアへのオーバーヘッドも少ない発明として有用である。
【符号の説明】
【００８８】
１  速度検出装置
１０１  波形整形部
１０２  フィルタクロック発生部
１０３  計時クロック発生部
１０４  キャプチャークロック発生部
１０５  フィルタ部
１０６  エッジ検出部
１０７  パルス計数部
１０８  オーバーフロー検出部
１０９  パルス計時部
１１０  キャプチャー部
１１１  割込要求部
１１３  演算部（周波数算出部）
７０１，７０２，８０１周波数演算値の波形
９０１  バッファ処理部
９０２  演算処理部
ＡＣＣｔ  目標精度
ＣＫ＿ＣＡＰ  キャプチャークロック
ＣＫ＿ＦＩＬ  フィルタクロック
ＣＫ＿ＴＩＭ  計時クロック
ＣＮ  パルス計数レジスタ
ＣＴ  パルス計時レジスタ
Ｆ  周波数演算値
Ｆｍａｘ  最大入力周波数
Ｆｍｉｎ  最小入力周波数
Ｆｔｉｍ  計時クロック周波数
ＩＣＲＱ  割込要求クリア要求
ＩＮ  入力信号
ＩＲＱ  割込要求
ＬＮ  ライブパルス計数値
ＬＴ  ライブパルス計時値
Ｎ［  ］  パルス計数リングバッファ
ＮＭＡＳＫ０  パルス計数マスク値０（第１のマスク値）
ＮＭＡＳＫ１  パルス計数マスク値１（第２のマスク値）
ＮＭＡＸ  パルス計数最大値
ＮＵＭ  パルスエッジの数
Ｎｗｉｄｔｈ  パルス計数必要ビット数
ＯＶＦ  オーバーフローレジスタ
ＯＶＦＦ  オーバーフローフラグ
Ｐ  パルス信号
ＰＥ  パルスエッジ（パルス）
ＰＮＴ  リングバッファポインタ
Ｔ［  ］  パルス計時リングバッファ
ＴＣＡＬ  演算周期指数
ＴＣＡＰ  キャプチャー周期指数（所定の定数）
Ｔｃａｐ  キャプチャー周期
Ｔｃａｌ  演算周期
ＴＭＡＳＫ０  パルス計時マスク値０
ＴＭＡＸ  パルス計時最大値
Ｔｗｉｄｔｈ  パルス計時必要ビット数
【図１】
2011114438.tif 000003
【図２】
2011114438.tif 000004
【図３】
2011114438.tif 000005
【図４】
2011114438.tif 000006
【図５】
2011114438.tif 000007
【図６】
2011114438.tif 000008
【図７】
2011114438.tif 000009
【図８】
2011114438.tif 000010
【図９】
2011114438.tif 000011
【図１０】
2011114438.tif 000012
【図１１】
2011114438.tif 000013
【図１２】
2011114438.tif 000014
【図１３】
2011114438.tif 000015
【図１４】
2011114438.tif 000016
【図１５】
2011114438.tif 000017
【図１６】
2011114438.tif 000018
【図１７】
2011114438.tif 000019
【図１８】
2011114438.tif 000020
【図１９】
2011114438.tif 000021
【図２０】
2011114438.tif 000022
【手続補正書】
【提出日】平成23年8月2日(2011.8.2)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】  上述した課題を解決し、目的を達成するために、本発明は、外部からの入力信号のパルス数を計数するパルス計数部と、計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、一定周期毎に測定結果を得るキャプチャークロックのタイミングで、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、を備え、前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時における最後のパルスからの時間／前記計時クロックの周期であるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックの周期であるパルス計時データを求めることにより、前記周波数演算値を算出し、所定の周期内に入力されたパルスが０個の場合、直後にパルスが入力されると仮定した周波数演算値と、前回の周波数演算値と、の低い方の値を選択することにより、周波数演算値を推定すること、を特徴とする。
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
外部からの入力信号のパルス数を計数するパルス計数部と、  計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、  前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、  一定周期毎に測定結果を得るキャプチャークロックのタイミングで、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、  前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、  を備え、  前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時における最後のパルスからの時間／前記計時クロックの周期であるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックの周期であるパルス計時データを求めることにより、前記周波数演算値を算出し、 所定の周期内に入力されたパルスが０個の場合、直後にパルスが入力されると仮定した周波数演算値と、前回の周波数演算値と、の低い方の値を選択することにより、周波数演算値を推定すること、  を特徴とする速度検出装置。
【請求項２】
前記オーバーフロー検出部は、  前記オーバーフローレジスタを、前記パルス計時部が所定の最大値を超えたことを検出してセットし、前記周波数算出部からクリアされるまで保持するように構成され、  前記周波数算出部は、  前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がない場合、オーバーフローが発生していないと判断すると共に、前記オーバーフローレジスタをクリアし、  前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がある場合、前記オーバーフローレジスタの値によりオーバーフローが発生しているか否かを判断すること、  を特徴とする請求項１に記載の速度検出装置。
【請求項３】
前記オーバーフロー検出部は、  前記オーバーフローレジスタを、パルス計時部が所定の最大値を超えたことを検出してセットし、前記周波数算出部からクリアされるまで保持するように構成され、  前記周波数算出部は、  前記オーバーフローレジスタがセットされている場合、所定のメモリーに、オーバーフローの発生を示すオーバーフローフラグをセットすると共に、前記オーバーフローレジスタをクリアし、  前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がある場合、オーバーフローが発生していないと判断し、前記オーバーフローフラグをクリアすること、  を特徴とする請求項１に記載の速度検出装置。
【請求項４】
前記オーバーフロー検出部は、  オーバーフロービットを、パルス計時部が所定の最大値を超えたことを検出してセットし、パルスによりクリアし、  前記キャプチャークロックにあわせて、前記オーバーフロービットを前記オーバーフローレジスタに保持すること、  を特徴とする請求項１に記載の速度検出装置。
【請求項５】
前記周波数算出部は、  パルス計時レジスタのビット数を拡張して保持する変数であるパルス計時データを備え、  今回割込時におけるパルス計数レジスタの値から、前回割込時におけるパルス計数レジスタの値を減じた値に基づき、前回割込時から今回割込時の間に入力されたパルスの数を求め、  前記パルス計時部でオーバーフローが発生していない場合、前記パルス計時レジスタの値により、パルス計時データを求め、  前記パルス計時部でオーバーフローが発生している場合、前回のパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算することで、最後のパルスからの時間／前記計時クロックであるパルス計時データを求め、  下記演算式により周波数演算値を求めること、  を特徴とする請求項１に記載の速度検出装置。ＮＵＭが０以外の場合、  Ｆ＝ＮＵＭ＊Ｆｔｉｍ÷（ＴＣＡＰ＋ＹＴ−ＸＴ）ＮＵＭが０の場合、  Ｆ＝ＭＩＮ（Ｆｔｉｍ÷ＸＴ，Ｆ）ここで、右辺に現れるＦは、前回の周波数演算値。左辺に現れるＦは、今回の周波数演算値。ＮＵＭは、前回割込時から今回割込時の間に入力されたパルスの数。Ｆｔｉｍは、計時クロック周波数。ＴＣＡＰは、前記キャプチャークロックの周期を、計時クロックの周期で割った所定の定数。ＸＴは、今回割込時における最後のパルスからの時間／計時クロックの周期であるパルス計時データ。ＹＴは、前回割込時における最後のパルスからの時間／計時クロックの周期である前回のパルス計時データ。ＭＩＮは、最小値を返す関数。
【請求項６】
前記周波数算出部は、  前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取りバッファリングするバッファ処理部と、  前記キャプチャークロックの周期の整数倍の演算周期毎に起動し、前記バッファ処理部でバッファしたデータに基づき、演算周波数を算出する演算処理部と、  を有し、  前記バッファ処理部は、  前記パルス計数レジスタの値と前記パルス計時レジスタの値とを時系列的に記憶するリングバッファと、前記リングバッファの現在の位置を保持するリングバッファポインタとを備え、  今回割込時におけるパルス計数レジスタの値から前回割込時におけるパルス計数レジスタの値を減じた値と、第１のマスク値と、の論理積から前回割込時から今回割込時の間に入力されたパルスの数を求め、  前回のパルス計数データに、前回割込時から今回割込時の間に入力されたパルスの数を加算した値と、第２のマスク値と、の論理積により今回のパルス計数データを求め、  ここで、マスク値は２のべき乗−１の形式で表され、第２のマスク値は第１のマスク値より大きい値であり、  前記パルス計時部でオーバーフローが発生していない場合、前記パルス計時レジスタの値により、パルス計時データを求め、  前記パルス計時部でオーバーフローが発生している場合、前回のパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算することで、最後のパルスからの時間／前記計時クロックであるパルス計時データを求め、  リングバッファの現在の位置の次の位置に、パルス計数データおよびパルス計時データを保存してからポインタを更新する処理を含み、  前記演算処理部は、  ポインタの値を参照し、今回のポインタ位置と、今回のポインタ位置から所定の演算周期分過去に遡ったポインタ位置と、を求め、  リングバッファを参照して、今回のパルス計数データから、所定の演算周期分過去のパルス計数データを減じた値と、第２のマスク値と、の論理積から、所定の演算周期の間に入力されたパルスの数を求め、  下記演算式により周波数演算値を求めること、  を特徴とする請求項１に記載の速度検出装置。ＮＵＭが０以外の場合、  Ｆ＝ＮＵＭ＊Ｆｔｉｍ÷（ＴＣＡＬ＋Ｔ［Ｃ１］−Ｔ［Ｃ０］）ＮＵＭが０の場合、  Ｆ＝ＭＩＮ（Ｆｔｉｍ÷Ｔ［Ｃ０］，Ｆ）ここで、右辺に現れるＦは、前回の周波数演算値。左辺に現れるＦは、今回の周波数演算値。ＮＵＭは、所定の演算周期の間に入力されたパルスの数。Ｆｔｉｍは、計時クロック周波数。ＴＣＡＬは、所定の演算周期を、計時クロック周期で割った所定の定数。Ｔ［Ｃ０］は、今回のパルス計時データ。Ｔ［Ｃ１］は、所定の演算周期分過去のパルス計時データ。ＭＩＮは、最小値を返す関数。
【請求項７】
前記波形整形部の後段に設置されたフィルタ部と、  前記フィルタ部に必要なクロックを供給するフィルタクロック発生部と、  を備え、  前記フィルタ部は、フィルタクロックでパルス信号をサンプリングし、所定回数の連続一致を条件に、出力を変化させること、  を特徴とする請求項１に記載の速度検出装置。
【請求項８】
前記エッジ検出部と、前記パルス計数部と、前記オーバーフロー検出部と、前記パルス計時部と、前記キャプチャー部と、前記フィルタ部とを複数備え、  前記フィルタクロック発生部を共用すること、  を特徴とする請求項７に記載の速度検出装置。
【請求項９】
外部からの入力信号のパルス数を計数するパルス計数部と、  計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、  前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、  一定周期毎に測定結果を得るキャプチャークロックのタイミングで、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、  前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、  を備え、  前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時における最後のパルスからの時間／前記計時クロックの周期であるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックの周期であるパルス計時データを求めることにより、前記周波数演算値を算出し、  前記オーバーフロー検出部は、  オーバーフロービットを、パルス計時部が所定の最大値を超えたことを検出してセットし、パルスによりクリアし、前記キャプチャークロックにあわせて、前記オーバーフロービットを前記オーバーフローレジスタに保持すること、  を特徴とする速度検出装置。
【請求項１０】
外部からの入力信号のパルス数を計数するパルス計数部と、  計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、  前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、  一定周期毎に測定結果を得るキャプチャークロックのタイミングで、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、  前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、  を備え、  前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時における最後のパルスからの時間／前記計時クロックの周期であるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックの周期であるパルス計時データを求めることにより、前記周波数演算値を算出し、  パルス計時レジスタのビット数を拡張して保持する変数であるパルス計時データを備え、  今回割込時におけるパルス計数レジスタの値から、前回割込時におけるパルス計数レジスタの値を減じた値に基づき、前回割込時から今回割込時の間に入力されたパルスの数を求め、  前記パルス計時部でオーバーフローが発生していない場合、前記パルス計時レジスタの値により、パルス計時データを求め、  前記パルス計時部でオーバーフローが発生している場合、前回のパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算することで、最後のパルスからの時間／前記計時クロックであるパルス計時データを求め、  下記演算式により周波数演算値を求めること、  を特徴とする速度検出装置。ＮＵＭが０以外の場合、  Ｆ＝ＮＵＭ＊Ｆｔｉｍ÷（ＴＣＡＰ＋ＹＴ−ＸＴ）ＮＵＭが０の場合、  Ｆ＝ＭＩＮ（Ｆｔｉｍ÷ＸＴ，Ｆ）ここで、右辺に現れるＦは、前回の周波数演算値。左辺に現れるＦは、今回の周波数演算値。ＮＵＭは、前回割込時から今回割込時の間に入力されたパルスの数。Ｆｔｉｍは、計時クロック周波数。ＴＣＡＰは、前記キャプチャークロックの周期を、計時クロックの周期で割った所定の定数。ＸＴは、今回割込時における最後のパルスからの時間／計時クロックの周期であるパルス計時データ。ＹＴは、前回割込時における最後のパルスからの時間／計時クロックの周期である前回のパルス計時データ。ＭＩＮは、最小値を返す関数。
【手続補正書】
【提出日】平成23年11月8日(2011.11.8)
【手続補正１】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
上述した課題を解決し、目的を達成するために、本発明は、外部からの入力信号のパルス数を計数するパルス計数部と、計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、一定周期毎に測定結果を得るキャプチャークロックのタイミングで割込要求を出力することにより、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、を備え、前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時における最後のパルスからの時間／前記計時クロックの周期であるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックの周期であるパルス計時データを求めることにより、前記周波数演算値を算出し、所定の周期内に入力されたパルスが０個の場合、直後にパルスが入力されると仮定した周波数演算値と、前回の周波数演算値と、の低い方の値を選択することにより、周波数演算値を推定すること、を特徴とする。 
【手続補正２】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
外部からの入力信号のパルス数を計数するパルス計数部と、
計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、
前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、
一定周期毎に測定結果を得るキャプチャークロックのタイミングで割込要求を出力することにより、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、
前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、
を備え、
前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時における最後のパルスからの時間／前記計時クロックの周期であるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックの周期であるパルス計時データを求めることにより、前記周波数演算値を算出し、
所定の周期内に入力されたパルスが０個の場合、直後にパルスが入力されると仮定した周波数演算値と、前回の周波数演算値と、の低い方の値を選択することにより、周波数演算値を推定すること、
を特徴とする速度検出装置。
【請求項２】
前記オーバーフロー検出部は、
前記オーバーフローレジスタを、前記パルス計時部が所定の最大値を超えたことを検出してセットし、前記周波数算出部からクリアされるまで保持するように構成され、
前記周波数算出部は、
前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がない場合、オーバーフローが発生していないと判断すると共に、前記オーバーフローレジスタをクリアし、
前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がある場合、前記オーバーフローレジスタの値によりオーバーフローが発生しているか否かを判断すること、
を特徴とする請求項１に記載の速度検出装置。
【請求項３】
前記オーバーフロー検出部は、
前記オーバーフローレジスタを、パルス計時部が所定の最大値を超えたことを検出してセットし、前記周波数算出部からクリアされるまで保持するように構成され、
前記周波数算出部は、
前記オーバーフローレジスタがセットされている場合、所定のメモリーに、オーバーフローの発生を示すオーバーフローフラグをセットすると共に、前記オーバーフローレジスタをクリアし、
前回割込時のパルス計数レジスタの値と、今回割込時のパルス計数レジスタの値と、の差がある場合、オーバーフローが発生していないと判断し、前記オーバーフローフラグをクリアすること、
を特徴とする請求項１に記載の速度検出装置。
【請求項４】
前記オーバーフロー検出部は、
オーバーフロービットを、パルス計時部が所定の最大値を超えたことを検出してセットし、パルスによりクリアし、
前記キャプチャークロックにあわせて、前記オーバーフロービットを前記オーバーフローレジスタに保持すること、
を特徴とする請求項１に記載の速度検出装置。
【請求項５】
前記周波数算出部は、
パルス計時レジスタのビット数を拡張して保持する変数であるパルス計時データを備え、
今回割込時におけるパルス計数レジスタの値から、前回割込時におけるパルス計数レジスタの値を減じた値に基づき、前回割込時から今回割込時の間に入力されたパルスの数を求め、
前記パルス計時部でオーバーフローが発生していない場合、前記パルス計時レジスタの値により、パルス計時データを求め、
前記パルス計時部でオーバーフローが発生している場合、前回のパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算することで、最後のパルスからの時間／前記計時クロックであるパルス計時データを求め、
下記演算式により周波数演算値を求めること、
を特徴とする請求項１に記載の速度検出装置。
ＮＵＭが０以外の場合、
Ｆ＝ＮＵＭ＊Ｆｔｉｍ÷（ＴＣＡＰ＋ＹＴ−ＸＴ）
ＮＵＭが０の場合、
Ｆ＝ＭＩＮ（Ｆｔｉｍ÷ＸＴ，Ｆ）
ここで、
右辺に現れるＦは、前回の周波数演算値。
左辺に現れるＦは、今回の周波数演算値。
ＮＵＭは、前回割込時から今回割込時の間に入力されたパルスの数。
Ｆｔｉｍは、計時クロック周波数。
ＴＣＡＰは、前記キャプチャークロックの周期を、計時クロックの周期で割った所定の定数。
ＸＴは、今回割込時における最後のパルスからの時間／計時クロックの周期であるパルス計時データ。
ＹＴは、前回割込時における最後のパルスからの時間／計時クロックの周期である前回のパルス計時データ。
ＭＩＮは、最小値を返す関数。
【請求項６】
前記周波数算出部は、
前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取りバッファリングするバッファ処理部と、
前記キャプチャークロックの周期の整数倍の演算周期毎に起動し、前記バッファ処理部でバッファしたデータに基づき、演算周波数を算出する演算処理部と、
を有し、
前記バッファ処理部は、
前記パルス計数レジスタの値と前記パルス計時レジスタの値とを時系列的に記憶するリングバッファと、前記リングバッファの現在の位置を保持するリングバッファポインタとを備え、
今回割込時におけるパルス計数レジスタの値から前回割込時におけるパルス計数レジスタの値を減じた値と、第１のマスク値と、の論理積から前回割込時から今回割込時の間に入力されたパルスの数を求め、
前回のパルス計数データに、前回割込時から今回割込時の間に入力されたパルスの数を加算した値と、第２のマスク値と、の論理積により今回のパルス計数データを求め、
ここで、マスク値は２のべき乗−１の形式で表され、第２のマスク値は第１のマスク値より大きい値であり、
前記パルス計時部でオーバーフローが発生していない場合、前記パルス計時レジスタの値により、パルス計時データを求め、
前記パルス計時部でオーバーフローが発生している場合、前回のパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算することで、最後のパルスからの時間／前記計時クロックであるパルス計時データを求め、
リングバッファの現在の位置の次の位置に、パルス計数データおよびパルス計時データを保存してからポインタを更新する処理を含み、
前記演算処理部は、
ポインタの値を参照し、今回のポインタ位置と、今回のポインタ位置から所定の演算周期分過去に遡ったポインタ位置と、を求め、
リングバッファを参照して、今回のパルス計数データから、所定の演算周期分過去のパルス計数データを減じた値と、第２のマスク値と、の論理積から、所定の演算周期の間に入力されたパルスの数を求め、
下記演算式により周波数演算値を求めること、
を特徴とする請求項１に記載の速度検出装置。
ＮＵＭが０以外の場合、
Ｆ＝ＮＵＭ＊Ｆｔｉｍ÷（ＴＣＡＬ＋Ｔ［Ｃ１］−Ｔ［Ｃ０］）
ＮＵＭが０の場合、
Ｆ＝ＭＩＮ（Ｆｔｉｍ÷Ｔ［Ｃ０］，Ｆ）
ここで、
右辺に現れるＦは、前回の周波数演算値。
左辺に現れるＦは、今回の周波数演算値。
ＮＵＭは、所定の演算周期の間に入力されたパルスの数。
Ｆｔｉｍは、計時クロック周波数。
ＴＣＡＬは、所定の演算周期を、計時クロック周期で割った所定の定数。
Ｔ［Ｃ０］は、今回のパルス計時データ。
Ｔ［Ｃ１］は、所定の演算周期分過去のパルス計時データ。
ＭＩＮは、最小値を返す関数。
【請求項７】
波形整形部の後段に設置されたフィルタ部と、
前記フィルタ部に必要なクロックを供給するフィルタクロック発生部と、
を備え、
前記フィルタ部は、フィルタクロックでパルス信号をサンプリングし、所定回数の連続一致を条件に、出力を変化させること、
を特徴とする請求項１に記載の速度検出装置。
【請求項８】
エッジ検出部と、前記パルス計数部と、前記オーバーフロー検出部と、前記パルス計時部と、前記キャプチャー部と、前記フィルタ部とを複数備え、
前記フィルタクロック発生部を共用すること、
を特徴とする請求項７に記載の速度検出装置。
【請求項９】
外部からの入力信号のパルス数を計数するパルス計数部と、
計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、
前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、
一定周期毎に測定結果を得るキャプチャークロックのタイミングで割込要求を出力することにより、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、
前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、
を備え、
前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時における最後のパルスからの時間／前記計時クロックの周期であるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックの周期であるパルス計時データを求めることにより、前記周波数演算値を算出し、
前記オーバーフロー検出部は、
オーバーフロービットを、パルス計時部が所定の最大値を超えたことを検出してセットし、パルスによりクリアし、前記キャプチャークロックにあわせて、前記オーバーフロービットを前記オーバーフローレジスタに保持すること、
を特徴とする速度検出装置。
【請求項１０】
外部からの入力信号のパルス数を計数するパルス計数部と、
計時クロックによりカウントアップし、パルスによってクリアされることで、最後のパルスからの時間を計時するパルス計時部と、
前記パルス計時部がオーバーフローしたことを検出しオーバーフローレジスタに保持するオーバーフロー検出部と、
一定周期毎に測定結果を得るキャプチャークロックのタイミングで割込要求を出力することにより、前記パルス計数部からの出力をパルス計数レジスタに保持すると共に、前記パルス計時部からの出力をパルス計時レジスタに保持するキャプチャー部と、
前記パルス計数レジスタの値と、前記パルス計時レジスタの値と、前記オーバーフローレジスタの値と、を読み取り、所定の演算により、周波数演算値を算出する周波数算出部と、
を備え、
前記周波数算出部は、前記パルス計時部がオーバーフローした場合、前回割込時における最後のパルスからの時間／前記計時クロックの周期であるパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算して、最後のパルスからの時間／前記計時クロックの周期であるパルス計時データを求めることにより、前記周波数演算値を算出し、
パルス計時レジスタのビット数を拡張して保持する変数であるパルス計時データを備え、
今回割込時におけるパルス計数レジスタの値から、前回割込時におけるパルス計数レジスタの値を減じた値に基づき、前回割込時から今回割込時の間に入力されたパルスの数を求め、
前記パルス計時部でオーバーフローが発生していない場合、前記パルス計時レジスタの値により、パルス計時データを求め、
前記パルス計時部でオーバーフローが発生している場合、前回のパルス計時データに、前記キャプチャークロックの周期／前記計時クロックの周期で得られる所定の定数を加算することで、最後のパルスからの時間／前記計時クロックであるパルス計時データを求め、
下記演算式により周波数演算値を求めること、
を特徴とする速度検出装置。
ＮＵＭが０以外の場合、
Ｆ＝ＮＵＭ＊Ｆｔｉｍ÷（ＴＣＡＰ＋ＹＴ−ＸＴ）
ＮＵＭが０の場合、
Ｆ＝ＭＩＮ（Ｆｔｉｍ÷ＸＴ，Ｆ）
ここで、
右辺に現れるＦは、前回の周波数演算値。
左辺に現れるＦは、今回の周波数演算値。
ＮＵＭは、前回割込時から今回割込時の間に入力されたパルスの数。
Ｆｔｉｍは、計時クロック周波数。
ＴＣＡＰは、前記キャプチャークロックの周期を、計時クロックの周期で割った所定の定数。
ＸＴは、今回割込時における最後のパルスからの時間／計時クロックの周期であるパルス計時データ。
ＹＴは、前回割込時における最後のパルスからの時間／計時クロックの周期である前回のパルス計時データ。
ＭＩＮは、最小値を返す関数。
【国際調査報告】
2011114438.tif 000023
2011114438.tif 000024
2011114438.tif 000025
2011114438.tif 000026
2011114438.tif 000027