(57)【要約】【課題】  ソフトウェア上の処理が簡略化され、コストの低減を図ることが可能なクロック補正回路を提供すること。【解決手段】  本発明に係るクロック補正回路は、メインクロックＡと、メインクロックＡよりも周波数が低いサブクロックＢとが入力され、メインクロックＡの周波数の誤差を補正して出力するクロック補正回路であって、サブクロックＢの１周期に含まれるメインクロックＡのパルス数をカウントするパルス数カウンタ２０１と、パルス数カウンタ２０１がカウントしたパルス数と予め定められた基準パルス数とを用いて補正情報を算出する演算部２０３と、補正情報に基づいてクロック補正信号を出力する休止信号カウンタ２０４と、クロック補正信号に基づいてメインクロックＡの出力を補正するゲート２０５とを有する。【選択図】  図１
2006309479.tif 000002
【特許請求の範囲】
【請求項１】
第１のクロック信号と、前記第１のクロック信号よりも周波数が低い第２のクロック信号とが入力され、前記第１のクロック信号の周波数の誤差を補正して出力するクロック補正回路であって、
前記第２のクロック信号の１周期に含まれる前記第１のクロック信号のパルス数をカウントするパルス数カウンタと、
前記パルス数カウンタがカウントしたパルス数と予め定められた基準パルス数とを用いて補正情報を算出する演算部と、
前記補正情報に基づいてクロック補正信号を出力する補正信号出力部と、
前記クロック補正信号に基づいて前記第１のクロック信号の出力を補正する出力ゲートとを有するクロック補正回路。
【請求項２】
前記基準パルス数は、前記第１のクロック信号の周波数の誤差範囲内における最も低い周波数に対応するパルス数であることを特徴とする請求項１に記載のクロック補正回路。
【請求項３】
前記補正情報は、前記パルス数カウンタがカウントしたパルス数を前記パルス数カウンタがカウントしたパルス数と予め定められた基準パルス数との差で割ることにより求まる休止周期であり、
前記クロック補正信号は前記第１のクロック信号の出力をマスクする信号であることを特徴とする請求項２に記載のクロック補正回路。
【請求項４】
前記補正信号出力部は、前記第１のクロック信号に同期して動作し、前記休止周期に応じて前記クロック補正信号を出力することを特徴とする請求項３に記載のクロック補正回路。
【請求項５】
前記第２のクロック信号は３２．７６８ｋＨｚの水晶振動子により発振されることを特徴とする請求項１乃至４いずれかに記載のクロック補正回路。
【請求項６】
第１のクロック信号の周波数誤差を補正するクロック補正方法であって、
前記第１のクロック信号よりも低い周波数の第２のクロック信号の１周期に含まれる前記第１のクロック信号のパルス数をカウントし、
カウントされた前記第２のクロック信号の１周期に含まれる前記第１のクロック信号のパルス数と、予め定められた基準パルス数とを用いて補正情報を算出し、
前記補正情報に基づいて前記第１のクロック信号の出力を補正するクロック補正方法。
【請求項７】
前記基準パルス数が前記第１のクロック信号の誤差範囲内における最も低い周波数であることを特徴とする請求項６に記載のクロック補正方法。
【請求項８】
第１のクロック信号を出力する第１のクロック発振回路と、
前記第１のクロック信号よりも周波数が低い第２のクロック信号を出力するする第２のクロック発振回路と、
前記第２のクロック信号の１周期に含まれる前記第１のクロック信号のパルス数をカウントするパルス数カウンタと、
前記パルス数カウンタがカウントしたパルス数と予め定められた基準パルス数とを用いて補正情報を算出する演算部と、
前記補正情報に基づいてクロック補正信号を出力する補正信号出力部と、
前記クロック補正信号に基づいて前記第１のクロック信号の出力を補正する出力ゲートと、
前記出力ゲートを介して前記第１のクロック信号が供給される第１のタイマと、
前記第２のクロック信号が供給される第２のタイマとを有するマイクロコントローラ。
【請求項９】
前記基準パルス数が前記第１のクロック信号の誤差範囲内における最も低い周波数であることを特徴とする請求項８に記載のマイクロコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はシングルチップマイコン及びシングルチップマイコンのクロック補正方法に関し、特に動作クロックとしてＲＣ発振を使用したシングルチップマイコンに関する。
【背景技術】
【０００２】
シングルチップマイコンは半導体チップ上にＣＰＵやタイマ等を集積したマイコンであり、これらＣＰＵやタイマはクロック発生回路から供給されるクロックによって動作している。また、時計機能を有するシングルチップマイコンにおいては、ＣＰＵを動作させるための高速なメインクロック発振回路とは別に、時計タイマ用の低速で高精度のサブクロック発振回路を有する。
【０００３】
サブクロックの発振には、時計用に普及している、安価に入手が可能な３２．７６８ｋＨｚの水晶振動子を用いた水晶発振回路が使われている。一方、メインクロックの発振にはサブクロックよりも周波数の高い水晶振動子を使う場合もあれば、抵抗と容量によるＲＣ発振回路を使う場合もある。
【０００４】
水晶発振回路とＲＣ発振回路とを比較すると、水晶発振回路の方が発振周波数が高精度ではあるもののコストは高くなる。また、水晶振動子はシングルチップマイコンに集積できないため、外部に付加しなければならないのに対し、ＲＣ発振回路は外付け部品が不要であり、更にコスト的に有利となる。従って、低価格帯のシングルチップマイコンではメインクロックにＲＣ発振回路を使う場合が多い。
【０００５】
従来のシングルチップマイコンの構成例を図４に示す。図４に示すように、マイコン１はＣＰＵ２、タイマ３、時計タイマ４及びクロック発生回路５を有する。ＣＰＵ２及びタイマ３はメインクロックＡに基づいて動作し、時計タイマ４はサブクロックＢに基づいて動作する。
【０００６】
クロック発生回路５には、メインクロックＡの発振用に水晶発振回路６とＲＣ発振回路７とを内蔵しており、メインクロック選択器８により両者の一方の信号を選択可能である。これにより、発振周波数の精度が必要な場合は水晶振動子を外付けして水晶発振回路６を使用し、水晶振動子程の精度が必要ない場合は外付け部品が不要であるＲＣ発振回路７を用いてコストダウンを図ることができる。
【０００７】
また、クロック発生回路５はサブクロックＢの発振用に水晶発振回路９を有している。水晶発振回路９は外付けの水晶振動子１０の信号に基づいてサブクロックＢを生成する。水晶振動子１０には、安価に入手可能な３２．７６８ｋＨｚの水晶振動子が主に用いられる。
【０００８】
ＲＣ発振回路で使用する抵抗と容量は、製造時の条件や動作時の電圧、温度によって変動するため、発振周波数を高精度に保つのは困難である。メインクロックＡは、ＣＰＵ２及びタイマ３の動作に使用される。よって、メインクロックＡが所望の周波数から変化すると、タイマ３は正確な時間を作成できなくなり動作に不具合が生じる。タイマ３のカウントする時間に誤差が生じることによる不具合の例を次に示す。
【０００９】
例えばＵＡＲＴ（Universal Asynchronous Receiver Transmitter）の１ビットを取り込む周期をタイマで作成している場合、５％以上変動すると通信ができなくなってしまう。その理由を図５のＵＡＲＴ受信時のタイミング図を用いて説明する。図５（ａ）に示すように、ＵＡＲＴ受信では、まず入力端子の立ち下がりを検出してタイマをスタートする。そのタイマが１ビットの半分の時間をカウントした時に再度入力端子をサンプリングし、その結果がロウレベルであればスタートビットとして認識する。その後タイマをリスタートして今度は１ビット分の時間をカウントする毎に入力端子をサンプリングして結果をシフトレジスタに格納していく。ストップビットを検出するまでこの動作を繰り返し行う。今、ＵＡＲＴのデータがスタートビットからストップビットまで１０ビットで構成されていた場合、タイマに供給されるメインクロックの周波数が＋５％速くなってしまうと、ストップビットの時点では誤差が累積して＋５０％（＝＋５％×１０）となり、図５（ｂ）のようにサンプリングタイミングがストップビットを外れてしまうため、ストップビットを受信できなくなってしまう。
【００１０】
この様な問題を解決するため、ＲＣ発振回路の周波数の変動を検出し、周波数の変動に応じてタイマでカウントするクロック数を変化させる技術が特許文献１に開示されている。特許文献１によれば、例えばＲＣ発振回路の所望の周期が１．０ｍｓｅｃであり、このＲＣ発振回路のクロックを用いて６０ｍｓｅｃの時間をカウントする場合、カウントするクロック数は６０クロックである。この場合において、ＲＣ発振回路のクロック周期が温度や動作電圧による誤差によって１．２ｍｓｅｃになった場合、カウントするクロック数を５０とすることによって６０ｍｓｅｃの時間をカウントする。
【００１１】
特許文献１に記載された技術を用いる場合、カウントするクロック数を変更することによって所望の時間のカウントを可能とする。この場合には、ＲＣ発信回路のクロック周期と基準となるクロック周期との誤差を算出し、その誤差から補正係数を求め、その補正係数を用いてタイマのカウント数を補正するという処理が必要であり、ソフトウェア上の処理が複雑化する。
【００１２】
また、特許文献１に記載された実施例においては、ＲＣ発振回路のクロック周期を直接測定可能であるような、高周波数の水晶振動子が必要であり、ＲＣ発振回路による低コスト化のメリットが失われてしまう。
【００１３】
また、特許文献２には、電子回路に制御される周辺デバイスが、クロックマスク信号を発信することによって、電子回路へのクロック信号の供給をマスクする技術が開示されている。しかしながら、この公報に開示された技術は周辺デバイスとそれを制御する電子回路との動作速度の差を補正するためのものであり、本発明が前提とするクロック周期の誤差を補正する方法とは異なるものである。
【特許文献１】特開平１０−４９２５１号公報
【特許文献２】特開平３−２７６２１８号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
上記したように、従来のクロック補正技術においては、ソフトウェア上の処理が複雑化し、また、高周波数の水晶振動子を用いるため低コスト化が不可能であった。
【課題を解決するための手段】
【００１５】
本発明に係るクロック補正回路は、第１のクロック信号（例えば、本発明の実施の形態におけるメインクロックＡ）と、前記第１のクロック信号よりも周波数が低い第２のクロック信号（例えば、本発明の実施の形態におけるサブクロックＢ）とが入力され、前記第１のクロック信号の周波数の誤差を補正して出力するクロック補正回路であって、前記第２のクロック信号の１周期に含まれる前記第１のクロック信号のパルス数をカウントするパルス数カウンタと、前記パルス数カウンタがカウントしたパルス数と予め定められた基準パルス数とを用いて補正情報を算出する演算部と、前記補正情報に基づいてクロック補正信号を出力する補正信号出力部（例えば、本発明の実施の形態における休止信号カウンタ２０４）と、前記クロック補正信号に基づいて前記第１のクロック信号の出力を補正する出力ゲートとを有する。
【００１６】
他方、本発明に係るクロック補正方法は、第１のクロック信号の周波数誤差を補正するクロック補正方法であって、前記第１のクロック信号よりも低い周波数の第２のクロック信号の１周期に含まれる前記第１のクロック信号のパルス数をカウントし、カウントされた前記第２のクロック信号の１周期に含まれる前記第１のクロック信号のパルス数と、予め定められた基準パルス数とを用いて補正情報を算出し、前記補正情報に基づいて前記第１のクロック信号の出力を補正する。
【００１７】
他方、本発明にかかるマイクロコントローラは、第１のクロック信号を出力する第１のクロック発振回路と、前記第１のクロック信号よりも周波数が低い第２のクロック信号を出力するする第２のクロック発振回路と、前記第２のクロック信号の１周期に含まれる前記第１のクロック信号のパルス数をカウントするパルス数カウンタと、前記パルス数カウンタがカウントしたパルス数と予め定められた基準パルス数とを用いて補正情報を算出する演算部と、前記補正情報に基づいてクロック補正信号を出力する補正信号出力部と、前記クロック補正信号に基づいて前記第１のクロック信号の出力を補正する出力ゲートと、前記出力ゲートを介して前記第１のクロック信号が供給される第１のタイマと、前記第２のクロック信号が供給される第２のタイマとを有する。
【発明の効果】
【００１８】
本発明により、ソフトウェア上の処理が簡略化され、コストの低減を図ることが可能なクロック補正回路及びクロック補正方法を提供することができる。
【発明を実施するための最良の形態】
【００１９】
以下に、本発明を適用可能な実施の形態が説明される。以下の説明は、本発明の実施形態を説明するものであり、本発明が以下の実施形態に限定されるものではない。説明の明確化のため、以下の記載は、適宜、省略及び簡略化がなされている。又、当業者であれば、以下の実施形態の各要素を、本発明の範囲において容易に変更、追加、変換することが可能である。
【００２０】
図１は、本実施形態に係るクロック補正回路が適用されるマイコンを示すブロック図である。図１に示すように、本実施形態に係るマイコン１０１は、ＣＰＵ１０２、タイマ１０３、時計タイマ１０４、クロック発生回路１０５及び水晶振動子１１０を有する。クロック発生回路１０５は、水晶発振回路１０６、ＲＣ発振回路１０７、メインクロック選択器１０８、水晶発振回路１０９及びクロック補正回路２００を有する。
【００２１】
ＣＰＵ１０２は、メインクロックＡに基づき、マイコン１０１を制御する。タイマ１０３は、メインクロックＡに基づき、マイコン１０１の動作に必要な時間を作成する。時計タイマ１０４は、サブクロックＢに基づき、マイコン１０１に内蔵された時計を動作させる。
【００２２】
クロック発生回路１０５はメインクロックＡ及びサブクロックＢを生成し、ＣＰＵ１０２、タイマ１０３及び時計タイマ１０４に供給する。水晶発振回路１０６は、外部に水晶振動子を接続することができる。外部に水晶振動子を接続することにより、この水晶振動子がメインクロックＡに用いるクロック信号を発振し、水晶発振回路１０６が出力する。ＲＣ発振回路１０７は、抵抗と容量によりメインクロックＡに用いるクロック信号を発振し、出力する。
【００２３】
メインクロック選択器１０８は、水晶発振回路１０６が出力するクロック信号と、ＲＣ発振回路１０７が出力するクロック信号とを切り換える。水晶発振回路１０９は外付けの水晶振動子１１０に接続されている。サブクロックＢに用いるクロック信号は、水晶振動子１１０が発振し、水晶発振回路１０９が出力する。水晶振動子１１０には、時計用に普及している３２．７６８ｋＨｚの水晶振動子を用いることができる。メインクロックＡに用いられる周波数は、少なくともサブクロックＢに用いられる周波数よりも高い。
【００２４】
クロック補正回路２００は、パルス数カウンタ２０１、基準パルス数記憶部２０２、演算部２０３、休止周期カウンタ２０４及びゲート２０５を有する。クロック補正回路２００は、メインクロックＡとしてＲＣ発振回路１０７が選択されている場合に、メインクロックＡのクロック周期の誤差をサブクロックＢを用いて補正する機能を有する。
【００２５】
パルス数カウンタ２０１は、サブクロックＢ及びメインクロックＡが入力され、サブクロックＢの１周期毎に、その間のメインクロックＡのパルス数をカウントする。基準パルス数記憶部２０２は、サブクロックＢの１周期に含まれるメインクロックＡの基準となるパルス数を記憶している。
【００２６】
クロック補正回路２００は、サブクロックＢの１周期に含まれるメインクロックＡのパルス数が、基準パルス数記憶部２０２に記憶されたパルス数になるように補正を行う。基準パルス数記憶部２０２に記憶されるパルス数は、ＲＣ発振回路１０７として用いられる発振回路の周波数の変動誤差範囲内において、最も低い周波数に対応したパルス数が記憶されることが好ましい。理由については後述する。
【００２７】
演算部２０３は、パルス数カウンタ２０１がカウントしたパルス数と、基準パルス数記憶部２０２に記憶されているパルス数とから、休止周期を算出する。休止周期カウンタ２０４は、メインクロックＡ及び演算部２０３が算出した休止周期情報が入力され、メインクロックＡをカウントしながら、休止周期情報に示される周期毎に休止信号を出力する。
【００２８】
ゲート２０５は、メインクロックＡとタイマ１０３との間に設けられ、通常はメインクロックＡをそのままタイマ１０３に出力するが、休止周期カウンタ２０４から休止信号が入力された場合はメインクロックＡをマスクし、タイマ１０３にメインクロックＡを出力しないよう動作する。ゲート２０５は、例えば休止信号の反転信号とメインクロックＡとの論理和を出力する論理和回路で構成することができる。
【００２９】
図２及び図３を用いて、演算部２０３、休止周期カウンタ２０４及びゲート２０５がタイマ１０３に出力するメインクロックＡをマスクする動作を具体的に説明する。図２は、メインクロックＡ及びサブクロックＢのタイミングを示す図であり、図３はクロック補正回路２００の動作を示すフローチャートである。例として、ＲＣ発振回路１０７の周波数特性が８ＭＨｚ±５％である場合の例を説明する。この場合、メインクロックＡは７．６ＭＨｚ〜８．４ＭＨｚの幅で変動する。従って、基準パルス数記憶部２０２には、７．６ＭＨｚに対応する２３２（≒７６００ｋＨｚ／３２．７６８ｋＨｚ）クロックが基準パルス数として記憶されている。
【００３０】
この場合において、ＲＣ発振回路１０７の周波数が誤差範囲内で最大の８．４ＭＨｚに変動したとすると、パルス数カウンタ２０１にカウントされるパルス数は約２５６．３（≒８４００ｋＨｚ／３２．７６８ｋＨｚ）クロックとなる。図２に示すタイミングｔ１、ｔ２はサブクロックＢのパルスタイミングである。図２に示すタイミングｔ１の更に１周期前のサブクロックＢ（タイミングｔ０とする）でパルス数カウンタ２０１がメインクロックＡのカウントをスタートしたとすると（Ｓ３０１）、図２に示すタイミングｔ１までの間に、パルス数カウンタ２０１には２５６クロック、又は２５７クロックのパルス数がカウントされる。
【００３１】
今、図２に示すｔ１までのサブクロックＢの１周期において２５７クロックがパルス数カウンタ２０１にカウントされたとする。パルス数カウンタ２０１はカウントしたパルス数の情報を演算部２０３へ出力する（Ｓ３０２）。そして、再度メインクロックＡのカウントをスタートする（Ｓ３０３）。以後、パルス数カウンタ２０１は、サブクロックＢが入力される度に、Ｓ３０２及びＳ３０３を繰り返す。
【００３２】
演算部２０３はカウントされたパルス数と基準パルス数とを比較し、カウントされたパルス数と基準パルス数との差を算出する（Ｓ３０４）。ここでは、増加パルス数は２５クロックである。演算部２０３はカウントされたパルス数を増加パルス数で割り、休止周期を求める。ここでは、休止周期は２５７／２５≒１０となる。演算部２０３は、求めた休止周期情報を休止周期カウンタ２０４に出力する（Ｓ３０５）。休止周期カウンタ２０４は、休止周期情報を受信すると、メインクロックＡのカウントをリスタートする（Ｓ３０６）。ここまでの動作（Ｓ３０１〜Ｓ３０６）を図２のｔ１に示すタイミングで行う。
【００３３】
休止周期カウンタ２０４は、入力されるメインクロックＡと受信した休止周期情報の休止周期とが一致するか否かを判断し（Ｓ３０７）、一致する場合はゲート２０５に対して休止信号を出力する（Ｓ３０８）。ここでは、休止周期カウンタ２０４は１０クロックに１回の頻度でゲート２０５に休止信号を出力する。尚、休止周期カウンタ２０４は、休止信号を出力すると同時にメインクロックＡのカウントをリスタートしても良いし、次の休止周期情報が入力されるまで、所定の周期毎に休止信号を出力しても良い。但し、休止周期カウンタ２０４は、演算部２０３から休止周期情報が入力された場合は、必ずＳ３０６に戻り、メインクロックＡのカウントをリスタートする。
【００３４】
演算部２０３は、サブクロックＢのパルスタイミング毎に周期的に休止周期情報を出力するため、休止周期カウンタ２０４が休止周期情報を受信した場合に、必ずＳ３０６に戻ることによって、少なくともサブクロックＢの周期毎に、タイマ１０３に供給するクロックを補正することができる。
【００３５】
ゲート２０５は、休止信号を受信したクロックにおいては、メインクロックＡをマスクし、タイマ１０３にクロックを供給しない。この様に、ゲート２０５に休止信号を出力することによって、サブクロックＢの周期毎に、タイマ１０３に供給されるクロックを基準パルス数記憶部２０２に記憶されたクロック周期に合わせて補正することができる。
【００３６】
上記の場合においては、図２に示すタイミングｔ１からｔ２の間、１０クロックに１クロックの頻度でメインクロックＡがマスクされる。従って、ｔ１からｔ２の間にタイマ１０３に供給されるパルス数は２３２クロックであり、基準パルス数記憶部２０２に記憶されているパルス数と同数になる。従って、タイマ１０３に供給されるクロックは、少なくともサブクロックＢの周期毎においては、７．６ＭＨｚに補正されることとなる。
【００３７】
基準パルス数記憶部２０２に記憶するパルス数が、ＲＣ発振回路１０７の誤差範囲のうち最も低い周波数ではない場合、パルス数カウンタ２０１でカウントされたパルス数が基準パルス数よりも少ない場合がる。この様な場合、メインクロックＡの誤差を補正するためには、サブクロックＢの１周期に含まれるメインクロックＡのパルス数を増やす処理が必要となり、パルス数を増やす処理と、パルス数を減じる処理との２通りの処理が必要となる。
【００３８】
基準パルス数記憶部２０２に記憶するパルス数を、ＲＣ発振回路１０７の誤差範囲のうち最も低い周波数に合わせることによって、パルス数カウンタ２０１がサブクロックＢの１周期でカウントするメインクロックＡのパルス数は、少なくとも基準パルス数記憶部に記憶されているパルス数以上となる。従って、メインクロックＡの誤差の補正に当たっては、上記したようにパルス数を減じる、即ちクロックを間引く処理のみ必要であり、処理を簡略化することができる。
【００３９】
また、演算部２０３が求めたサブクロックＢの１周期に含まれるメインクロックＡのパルス数と基準パルス数との差を、サブクロックＢの１周期毎にまとめて間引くのではなく、図２に示されるように休止周期毎に分散して間引くことによって、休止周期毎にクロックが補正されていることとなり、クロック周期の補正をより高精度に行うことが可能となる。
【００４０】
但し、サブクロックＢの１周期に含まれるメインクロックＡのパルス数と基準パルス数との差を、サブクロックＢに基づいてまとめて間引いても良い。休止周期を求める必要がない分、更に処理を簡略化することができる。この場合、クロック補正の精度は低下するが、少なくともサブクロックＢの１周期に含まれるメインクロックＡのパルス数を合わせることはできるため、上記の説明の態様と適宜選択されることが好ましい。
【００４１】
以上説明したように、本発明に係るクロック補正回路では、クロック信号を補正するためのソフトウェア上の処理を簡略化することが可能である。また、ＲＣ発振回路を用いても高精度なクロック信号を得ることが可能であるため、コストの低減を図ることが可能である。
【図面の簡単な説明】
【００４２】
【図１】本発明の実施の形態に係るシングルチップマイコンの構成を示すブロック図である。
【図２】本発明の実施の形態に係るメインクロックとサブクロックのパルスタイミングを示すタイミング図である。
【図３】本発明の実施の形態に係るクロック補正回路の動作を示すフローチャートである。
【図４】従来技術に係るシングルチップマイコンの構成を示すブロック図である。
【図５】従来技術に係るＵＡＲＴの受信におけるタイミング図である。
【符号の説明】
【００４３】
１  マイコン、２  ＣＰＵ、３  タイマ、４  時計タイマ、５  クロック発生回路、
６  水晶発振回路、７  ＲＣ発振回路、８  メインクロック選択器、９  水晶発振回路、
１０  水晶振動子、１０１  マイコン、１０２  ＣＰＵ、１０３  タイマ、
１０４  時計タイマ、１０５  クロック発生回路、１０６  水晶発振回路、
１０７  ＲＣ発振回路、１０８  メインクロック選択器、１０９  水晶発振回路、
１１０  水晶振動子、２００  クロック補正回路、２０１  パルス数カウンタ、
２０２  基準パルス数記憶部、２０３  演算部、２０４  休止周期カウンタ、
２０５  ゲート、Ａ  メインクロック、Ｂ  サブクロック
【図１】
2006309479.tif 000003
【図２】
2006309479.tif 000004
【図３】
2006309479.tif 000005
【図４】
2006309479.tif 000006
【図５】
2006309479.tif 000007