(57)【要約】      （修正有）【課題】タイマクロックとＣＰＵクロックとが非同期で動作している場合でも、外部信号の周期を正しく計測できるようにする。【解決手段】タイマ回路２００に、外部信号の発生間隔をタイマクロックに同期してカウントするタイマカウンタ２０１と、タイマカウンタ２０１の計数値をタイマクロックに同期して取り込むタイマレジスタ２０２と、タイマレジスタ２０２の値をＣＰＵクロックに同期して取り込むタイマレジスタ２０３とを備え、外部信号によりタイマカウンタ２０１の計数値をタイマクロックに同期してタイマレジスタ２０２にリロードし、そのタイマレジスタ２０２の値を、ＣＰＵクロックに同期してタイマレジスタ２０３に第２のリロードを行い、１回目の外部信号発生後、ＣＰＵがタイマレジスタ２０３の内容を読み取るまでの間に次の外部信号が発生した場合に、第２のリロードを保留し、ＣＰＵがタイマレジスタ２０３の内容を読み取った後に第２のリロードを行う。【選択図】図１
2005332097.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵを動作させるＣＰＵクロック信号とは非同期なタイマクロック信号によって動作するタイマ回路を内蔵したマイクロコンピュータにおいて、前記タイマ回路は、
外部信号の発生間隔を前記タイマクロックに同期してカウントするタイマカウンタと、
前記タイマカウンタの計数値をタイマクロックに同期して取り込む第１のタイマレジスタと、
前記第１のタイマレジスタの値を前記ＣＰＵクロックに同期して取り込む第２のタイマレジスタと、
前記外部信号のレベル変化を検出し、エッジ検出信号を発生するエッジ検出回路と、
前記エッジ検出信号により前記タイマカウンタの計数値をタイマクロックに同期して第１のタイマレジスタにリロードするための第１のリロード制御信号を出力し、該第１のリロード制御信号によって取り込まれた前記第１のタイマレジスタの値を、前記ＣＰＵクロックに同期して前記第２のタイマレジスタにリロードするための第２のリロード制御信号を出力し、１回目のエッジ検出発生後、ＣＰＵが前記第２のタイマレジスタの内容を読み取るまでの間に次のエッジ検出信号が発生した場合に、前記第２のリロード制御信号の出力を保留し、前記ＣＰＵが前記第２のタイマレジスタの内容を読み取った後に前記第２のリロード制御信号を出力するリロード制御回路とを備えていることを特徴とするマイクロコンピュータ。
【請求項２】
ＣＰＵを動作させるＣＰＵクロック信号とは非同期なタイマクロック信号によって動作するタイマ回路を内蔵したマイクロコンピュータにおいて、前記タイマ回路は、
外部信号の発生間隔を前記タイマクロック信号に同期して計数し、
外部信号のレベル変化を検出した時にエッジ検出信号と第１のリロード制御信号を出力し、
該第１のリロード制御信号に基づき、前記タイマクロック信号に同期して前記計数値を第１のタイマレジスタにセットすると共に、第１の割り込みレジスタに割り込み信号をセットし、またクロック同期化信号をセットし、
前記クロック同期化信号から前記ＣＰＵクロック信号に同期したリ第２のロード制御信号が生成されると、前記クロック同期化信号をリセットし、また、該第２のリロード制御信号が有効の時に前記第１のタイマレジスタの値をＣＰＵクロック信号に同期して動作する第２のタイマレジスタにセットし、更に、前記クロック同期化信号の有効化を保留するためのリロード保留信号をセットし、
前記ＣＰＵクロック信号に同期して割り込み信号がセットされた第２の割り込みレジスタからの割り込み信号に基づいて、前記ＣＰＵからの前記第２のタイマレジスタの内容の読み取り動作が発生すると、前記リロード保留信号をリセットすると共に前記第２のタイマレジスタの内容をデータバスに出力することを特徴とするマイクロコンピュータ。
【請求項３】
請求項１記載のマイクロコンピュータにおいて、前記タイマ回路における前記リロード制御回路は、１回目のエッジ検出発生後、ＣＰＵが前記第２のタイマレジスタの内容を読み取るまでの間に、２回目以降のエッジ検出信号が発生するたびにその発生を示すリロード制御信号を出力する手段であり、
前記タイマ回路は、前記リロード制御信号の発生数を前記タイマクロックに同期して計数するカウンタと、該カウンタの計数値を前記ＣＰＵクロックに同期して取り込むレジスタを更に備えたこと特徴とするマイクロコンピュータ。
【請求項４】
請求項１記載のマイクロコンピュータにおいて、ＣＰＵが前記タイマレジスタ２の内容を読み取るまでの間に、２回目以降の外部信号が発生すると、その発生回数を計数しておき、ＣＰＵによる前記タイマレジスタ２の２回目の読み取り終了後、タイマレジスタ２の内容の差分値と前記発生回数とに基づいて、前記外部信号の発生間隔の平均値を算出することを特徴とするマイクロコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、キャプチャ信号の間隔を測定する為のタイマを内蔵したマイクロコンピュータに関する。
【背景技術】
【０００２】
マイクロコンピュータは、入力／ポート、メモリ、ＣＰＵ等を有しており、これらの回路をソフトウェアで動作制御することで、さまざまな機能を実現できる。このため、家電製品の動作制御や、車のエンジン制御等その適用範囲は広い。
【０００３】
また、マイクロコンピュータは各機能の動作タイミングを制御する為のタイマが内蔵されている。マイクロコンピュータに内蔵されるタイマ回路には、例えばキャプチャタイマ（あるいはインプットタイマと呼ぶ）がある。
【０００４】
キャプチャタイマは、外部入力信号の発生間隔を計測する機能を有していおり、タイマカウンタを動作させた状態において、外部入力信号（キャプチャ信号）の電圧レベルの変化を検出すると、タイマカウンタの値がタイマレジスタに取り込まれる。そしてタイマレジスタ値と、次に発生した外部入力信号の電圧レベルの変化により更新されたタイマレジスタ値を用いて演算処理を行うことにより、外部入力信号の発生間隔を測定することができる。
【０００５】
図７は従来のキャプチャタイマの構成図であり、タイマカウンタ１０１、タイマレジスタ１０２、エッジ検出回路１０３、ステータスレジスタとして割り込みレジスタ１０４を備えている。なお、エッジ検出回路１０３においては、立ち下がりエッジの検出、立ち上がりエッジの検出、立ち上がり・立ち下がりの両エッジの検出という３種類の検出が可能となっている。またキャプチャタイマ１００にはＣＰＵからの操作によりタイマカウンタ１０１のスタートストップを制御するためのレジスタや、ステータスレジスタとして、タイマカウンタのＯＶＦの発生有無を表すレジスタが設けられている（図示を省略する）。
【０００６】
図８はキャプチャタイマ１００の動作説明図であり、タイマカウンタ１０１動作中に、外部入力信号（ＣＡＰ入力）がキャプチャタイマ１００に入力されると、外部入力信号の電圧レベルの変化をエッジ検出回路１０３が検出し、その検出信号を元にタイマカウンタ値がタイマレジスタ１０２に取り込まれ、同時に割り込み要求信号が生成される。
【０００７】
図９は図８のキャプチャタイマ動作の詳細タイミングを示したもので、ＣＰＵはタイマレジスタ１０２の値を処理するために、リード信号をキャプチャタイマ１００に対し出力し、キャプチャタイマ１００はＣＰＵからのリード信号を元にタイマレジスタ１０２の値をバスに出力する。
【０００８】
なお、ＣＰＵクロックとタイマカウンタが同一クロック（あるいは同期クロック）で動作するマイクロコンピュータにおいては、図１０に示すように、仮にエッジ検出信号が出力するタイミングと、ＣＰＵからのリード信号が同時に出力された場合でも、タイマカウンタ値がエッジ検出信号によって更新される前の値がバスに出力され、少なくともタイマレジスタが変化中の間違った値がバスに出力されることはない。
【０００９】
【特許文献１】特開平７−２６０８４５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、ＣＰＵクロックとタイマカウンタクロックが完全に非同期であるマイクロコンピュータの場合は、タイマカウンタ１０１、タイマレジスタ１０２、エッジ検出回路１０３はタイマクロック周期で動作する一方、ＣＰＵからのリード信号は、ＣＰＵクロック周期で発生するため、図１１に示すように、エッジ検出信号が出力するタイミングと、ＣＰＵからの読み出し信号がたまたま同時付近に出力された場合、キャプチャ信号の発生によりタイマレジスタ値が変化している途中の値がバスに出力される可能性がある。このため、この値に基づいて測定したキャプチャ信号の間隔は誤ったものとなる可能性があった。
【課題を解決するための手段】
【００１１】
この発明は、ＣＰＵを動作させるＣＰＵクロック信号とは非同期なタイマクロック信号によって動作するタイマ回路を内蔵したマイクロコンピュータにおいて、前記タイマ回路に、外部信号の発生間隔をタイマクロックに同期してカウントするタイマカウンタと、タイマカウンタの計数値をタイマクロックに同期して取り込む第１のタイマレジスタと、第１のタイマレジスタの値をＣＰＵクロックに同期して取り込む第２のタイマレジスタと、
外部信号のレベル変化を検出し、エッジ検出信号を発生するエッジ検出回路と、エッジ検出信号により前記タイマカウンタの計数値をタイマクロックに同期して第１のタイマレジスタにリロードするための第１のリロード制御信号を出力し、第１のリロード制御信号によって取り込まれた第１のタイマレジスタの値を、ＣＰＵクロックに同期して第２のタイマレジスタにリロードするための第２のリロード制御信号を出力し、１回目のエッジ検出発生後、ＣＰＵが第２のタイマレジスタの内容を読み取るまでの間に次のエッジ検出信号が発生した場合に、第２のリロード制御信号の出力を保留し、ＣＰＵが前記第２のタイマレジスタの内容を読み取った後に第２のリロード制御信号を出力するリロード制御回路とを備えている。
【発明の効果】
【００１２】
この発明のマイクロコンピュータによれば、内蔵するタイマ回路に、タイマクロックに同期して動作するタイマカウンタと第１のタイマレジスタと、第１の割り込みレジスタとを設け、またＣＰＵクロック信号に同期して動作する第２のタイマレジスタと第２の割り込みレジスタとを設けており、ＣＰＵからの第２のタイマレジスタの読み取りが終了するまで、第１のタイマレジスタの内容を第２のタイマレジスタへのリロードが禁止されるように制御されているので、タイマクロックとＣＰＵクロック信号とが非同期で動作するばあいにも、タイマカウンタの内容を誤読み取りすることがなく、外部信号（キャプチャ信号）の正常な間隔測定を行うことが可能となる。
【発明を実施するための最良の形態】
【００１３】
以下、この発明の実施の形態について、図面を参照して説明する。尚、図中、各構成要素の大きさ、形状及び配置関係は、この発明が理解できる程度に概略的に示してあるにすぎない。
【実施例１】
【００１４】
図１は、この発明の第１の実施例を示すキャプチャタイマ２００の回路図であって、エッジ検出回路の出力信号及びＣＰＵからのリード信号を入力したリロード制御回路２０４を設け、またタイマレジスタはタイマクロックに同期してタイマカウンタ値を取り込むタイマレジスタ２０２と、ＣＰＵクロックに同期して、タイマレジスタ２０２の値を取り込むタイマレジスタ２０３を設け、ＣＰＵはタイマレジスタ２０３の値をリードする構成になっている。また、１回目のキャプチャ発生後、ＣＰＵがタイマレジスタ２０３をリードするまでの間に２回目のキャプチャが発生した際、タイマレジスタ２０２は更新されるが、タイマレジスタ２０３は更新されないようにしたものである。
【００１５】
また割り込みレジスタにおいても、エッジ検出信号をタイマクロックに同期して取り込む割り込みレジスタ２０６と、割り込みレジスタ２０６の値をＣＰＵクロックに同期して取り込み、割り込み信号を発生する割り込みレジスタ２０７とを備えている。
【００１６】
図２は、リロード制御回路２０４の内部回路を示した回路図である。リロード制御回路は、リロード制御信号２生成回路（セレクタ１、フリップフロップ（Ｆ／Ｆ１、Ｆ／Ｆ２）、インバータ（ＩＮＶ１）、論理積回路（ＡＮＤ１、ＡＮＤ３）とで構成）と、リロード保留信号２生成回路（セレクタ２、フリップフロップ（Ｆ／Ｆ３）、論理積回路（ＡＮＤ２）、インバータ（ＩＮＶ２）で構成）とを備えている。なお、各Ｆ／Ｆについては、初期化（リセット）のためのリセット付きフリップフロップ使用している。
【００１７】
キャプチャ信号が入力され、エッジ検出信号が発生すると、リロード制御信号１が生成される。リロード制御信号２生成回路においては、エッジ検出信号が発生すると、セレクタ１経由でＦ／Ｆ１出力はタイマクロックに同期して”１”となり、ＡＮＤ１出力（クロック同期化信号）を”１”にする。そして、Ｆ／Ｆ２は、ＣＰＵクロックに同期してクロック同期化信号を取り込み、リロード制御信号２を”１”にする。リロード制御信号２が”１”になるとＦ／Ｆ１出力はＡＮＤ３経由でリセットされ”０”になり、クロック同期化信号も”０”となる。
【００１８】
リロード保留信号２生成回路において、リロード制御信号２が”１”になると、セレクタ２経由でＦ／Ｆ３はＣＰＵクロックに同期して、リロード保留信号２を”１”にする。よってクロック同期化信号は”０”になるので、ここで次のキャプチャ（エッジ検出信号）が発生し、Ｆ／Ｆ１出力が”１”になってもクロック同期化信号は”０”のままなので、リロード制御信号２は”発生しない（“１”にならない）。
【００１９】
リロード保留信号２が”１”の状態で、ＣＰＵリード信号が発生（“１”）すると、ＣＰＵクロックに同期してＦ／Ｆ３出力（リロード保留信号２）が”０”になり、保留されていたクロック同期化信号が”１”になるので、リロード制御信号２が発生（“１”）する。
【００２０】
図３は、実施例１のキャプチャタイマの基本動作を示すタイムチャートであり、ＣＰＵのクロックとタイマＣＬＫは完全に非同期クロックとする。基本的な動作は以下の通りである。
【００２１】
（Ｔ１）外部入力信号（ＣＡＰ入力）のレベル変化が発生すると、エッジ検出回路２０５はタイマクロックに同期して（Ｔ２）エッジ検出信号を発生する。リロード制御回路２０４は、エッジ検出信号により（Ｔ３）タイマクロックに同期したリロード制御信号１を出力する。このリロード制御信号１が発生すると、（Ｔ４）タイマレジスタ２０２がタイマクロックに同期してタイマカウンタ２０１の値を取り込むと同時に、（Ｔ５）割り込みレジスタ２０６がタイマＣＬＫに同期してセットされる。なお、割り込み信号は（Ｔ７）ＣＰＵクロックに同期して割り込みレジスタ２０７に取り込まれ、ＣＰＵに割り込みを通知する。
【００２２】
またタイマレジスタ２０２からタイマレジスタ２０３へのデータロードに際してクロック同期化が必要なため、リロード制御回路２０４は、リロード制御信号１が発生すると、タイマクロックに同期して（Ｔ６）クロック同期化信号を発生する。クロック同期化信号がセットされると、ＣＰＵクロックに同期して（Ｔ８）リロード制御信号２が発生する。この信号により、クロック同期化信号をリセットすると共に、次のＣＰＵクロックに同期して（Ｔ９）タイマレジスタ２０２の値がタイマレジスタ２０３に取り込まれ、（Ｔ１０）リロード保留信号２がＣＰＵクロックに同期してセットされる。
【００２３】
リロード保留信号２がセットされている間は、次にキャプチャが発生したとしても、ＣＰＵからのリード信号がこない限りクロック同期化信号は保留され、リロード制御信号２は発生しないためタイマレジスタ２０３の値は更新されない。そして、（Ｔ１１）ＣＰＵからのリード信号によってタイマレジスタ２０３の値がデータバスに出力されると共に、リロード保留信号２はクリアされる。なお、もし２回目のキャプチャ発生により２回目のクロック同期化信号が保留されている場合、リロード制御信号２のクリア後保留解除（セット）され、リロード制御信号２が発生する。
【００２４】
図４は、実施例１における外部信号（キャプチャ信号）の周期測定の例を示したタイムチャートである。なお、割り込みレジスタ２０６、２０７の動作は、この図では省略している。
【００２５】
１回目のキャプチャ発生により、タイマレジスタ２０２にカウンタ値（０ＸＣ）が取り込まれた後で、ＣＰＵからのリード信号が発生する前に、２回目のキャプチャが発生した場合には、タイマレジスタ２０２にはカウント値（０ｘ１５）が取り込まれるが、リロード保留信号２がセットされていて、クロック同期化信号はマスクされた状態になるため、２回目のリロード制御信号２は発生せず、タイマレジスタ２０３は更新されない。
【００２６】
ＣＰＵがリード信号によりカウンタ値”０ｘＣ”をリードした後、リロード保留信号２はクリアされ、マスクされていたクロック同期化信号がセットされることでリロード制御信号２が発生し、タイマレジスタ２０２の値（０ｘ１５）がタイマレジスタ２に取り込まれる。ＣＰＵは１回目にタイマレジスタ２０３からリードした値（０ｘＣ）と、２回目にタイマレジスタ２０３の値（０ｘ１５）を使用して演算することで、キャプチャ間隔を計測できる。
【００２７】
以上のように第１の実施例によれば、タイマクロック用のタイマレジスタ２０２と、ＣＰＵクロック用のタイマレジスタ２０３を設けることでＣＰＵクロックとタイマクロックが非同期であるマイクロコンピュータにおいても、ＣＰＵがタイマレジスタ値を読み取る時に誤データを読み取ることなく、正しいタイマレジスタ値を正しく読み取ることができ、またリロード制御回路２０４によりＣＰＵがタイマレジスタ２０３をリードするまでは２回目のキャプチャが発生してもタイマレジスタ２０３は更新されないようにし、ＣＰＵがタイマレジスタ２０３をリードする前に２回目のキャプチャが発生したとしても、１回目のキャプチャ発生によるタイマレジスタ２０３の値をリード後、２回目のキャプチャ発生によるタイマレジスタ２０３の値をリードすることが可能で、正常なキャプチャ間隔の計測が可能となる。
【実施例２】
【００２８】
図５は、この発明の第２の実施例を示すキャプチャタイマのブロック図である。実施例１において、例えば１回目のキャプチャ発生後、ＣＰＵがタイマレジスタ３０３の値を読み出すまでに非常時間が掛かり、２回目以降のキャプチャが多数回発生するケースもあるため、図５においてステータスレジスタ群にキャプチャ（ＣＡＰ）発生カウンタを追加し、１回目のキャプチャ発生後のキャプチャ回数をステータスレジスタに残すようにしたものである。なお、キャプチャ発生カウンタは、タイマクロックに同期してカウントするＣＡＰ発生カウンタ３０８と、その値をＣＰＵクロックに同期して取り込むためのＣＡＰ発生レジスタ３０９を有している。リロード制御回路３０４は第１の実施例における２０４と同様の回路であり、ＣＡＰ発生カウンタはリロード制御信号１でカウントを行う。
【００２９】
図６は、実施例２にのキャプチャタイマによる周期測定例を示すタイムチャートであり、１回目のキャプチャ発生後、２回目、３回目のキャプチャが発生した場合、リロード保留信号２がセットされている間にリロード制御信号１が発生するとタイマクロックに同期してＣＡＰ発生カウンタ３０８がカウントＵＰされる。ＣＡＰ発生レジスタ３０９はＣＡＰ発生カウンタ３０８の値をＣＰＵクロックで取り込む。
【００３０】
図６において、最終的にはタイマレジスタ３０３には３回目のキャプチャ発生による値（０ｘ１Ａ）が残るため、３回発生したキャプチャのキャプチャ間隔２回分の平均を求めるには、（０ｘ１Ａ−０ｘＣ）÷ＣＡＰカウンタ値（０ｘ２）となる。
【００３１】
以上のように第２の実施例によれば、キャプチャ発生後、ＣＰＵがタイマレジスタ３０３の値をリードするまでに時間がかかり、その間に多数のキャプチャが発生した場合でも、ＣＰＵはＣＡＰ発生レジスタ３０９の値を得ることで、演算により１回分のキャプチャ間隔の平均値を算出することが可能となる。
【００３２】
本発明は、キャプチャタイマ（インプットタイマ）を内蔵するマイクロコンピュータ（あるいはシステムＬＳＩ）に適用可能である。まず本発明の実施例でのタイマカウンタ、タイマレジスタについては、ビット数の制限はなく、測定したいキャプチャ周期に応じて例えば１６ビットカウンタ、または３２ビットカウンタとして良い。
【００３３】
また、キャプチャ発生回数を表すＣＡＰ発生カウンタについても同様で、用途に応じてビットを変更することが可能である。
【００３４】
また本発明ではタイマレジスタ１からタイマレジスタ２へのデータをロードする際に、同期化信号がセットされている間はキャプチャ検出を禁止としているが、もしこの間にキャプチャ発生がした場合に、Ｗａｒｎｉｎｇとしてその情報を残すレジスタをステータスレジスタ群に用意するように構成しても良い。
【図面の簡単な説明】
【００３５】
【図１】実施例１に於けるキャプチャタイマのブロック図である。
【図２】リロード制御回路の構成の一例を示す回路図である。
【図３】実施例１のキャプチャタイマの基本動作を示すタイムチャートである。
【図４】実施例１のキャプチャタイマの周期測定例を示すタイムチャートである。
【図５】実施例２に於けるキャプチャタイマのブロック図である。
【図６】実施例２のキャプチャタイマの周期測定例を示すタイムチャートである。
【図７】従来のキャプチャタイマのブロック図である。
【図８】従来のキャプチャタイマの動作説明図である。
【図９】従来のキャプチャタイマの動作タイムチャートである。
【図１０】従来のキャプチャタイマの動作タイムチャートである。
【図１１】従来のキャプチャタイマの動作タイムチャートである。
【符号の説明】
【００３６】
２００、３００    キャプチャタイマ
２０１、３０１    タイマカウンタ
２０２，３０２    タイマレジスタ
２０３、３０３    タイマレジスタ
２０４、３０４    リロード制御回路
２０５、３０５    エッジ検出回路
２０６、３０６    割り込みレジスタ
２０７、３０７    割り込みレジスタ
３０８      ＣＡＰ発生カウンタ
３０９      ＣＡＰ発生レジスタ
【図１】
2005332097.tif 000003
【図２】
2005332097.tif 000004
【図３】
2005332097.tif 000005
【図４】
2005332097.tif 000006
【図５】
2005332097.tif 000007
【図６】
2005332097.tif 000008
【図７】
2005332097.tif 000009
【図８】
2005332097.tif 000010
【図９】
2005332097.tif 000011
【図１０】
2005332097.tif 000012
【図１１】
2005332097.tif 000013