図1から図3を参照して、本発明の第1の実施の形態を説明する。
図1は、本実施の形態に係る装置の構成を示すブロック図である。本装置は、第1発振回路11、第2発振回路12、発振器制御回路13、割り込み入力回路14、CPU15、周辺回路16を具備している。
第1発振回路11は、発振器制御回路13から発振制御信号CTRLaを入力し、クロック信号CLKaを第2発振回路12に出力する。第2発振回路12は、発振器制御回路13から発振制御信号CTRLbと、第1発振回路11からクロック信号CLKaとを入力し、クロック信号CLKbを出力する。クロック信号CLKbは、CPU15と周辺回路16に供給される。発振器制御回路13は、CPU15から発振停止要求信号STPQと、周辺回路16から発振要求信号BUSYとを入力し、第1発振回路11に発振制御信号CTRLaを、第2発振回路12に発振制御信号CTRLbを出力する。
CPU15は、第2発振回路12から出力されるクロック信号CLKbと、割り込み入力回路14から出力される割り込み信号INTとを入力し、発振停止要求信号STPQを出力し、周辺回路16と制御やデータなどの各種信号SGNLを入出力する。CPU15へのクロック信号は、ここではクロック信号CLKbを直接供給しているが、分周回路やドライブ回路などを介して供給されてもよい。
割り込み入力回路14は、周辺回路16から割り込み要求信号REQを入力し、CPU15に割り込み信号INTを出力する。周辺回路16は、第2発振回路12から出力されるクロック信号CLKbを入力し、発振器制御回路13に発振要求信号BUSYを、割り込み入力回路14に割り込み要求信号REQを出力し、CPU15と制御やデータなどの各種信号SGNLを入出力する。
第1発振回路11は、発振制御信号CTRLaの制御によって発振を開始し、停止する。第2発振回路12は、発振制御信号CTRLbの制御によって発振を開始し、停止する。
発振器制御回路13は、周辺回路16から入力する発振要求信号BUSYが活性化すると、発振制御信号CTRLaと発振制御信号CTRLbとを活性化し、発振を指示する。CPUから発振停止要求信号STPQが入力すると発振器制御回路13は、発振要求信号BUSYが活性化状態でなければ発振制御信号CTRLaおよびCTRLbを非活性にし、発振停止を指示する。
割り込み入力回路14は、周辺回路16から入力する割り込み要求信号REQが活性化すると、CPU15に対して割り込み信号INTを活性化し、割り込み要求があったことを通知する。CPU15は、動作の基準信号としてクロック信号CLKbを入力し、動作する。CPU15は周辺回路16との間で各種信号SGNLを入出力し、周辺回路16を制御し、情報の入出力を行う。割り込み入力回路14から入力する割り込み信号INTが活性化すると、CPU15は割り込みに応じて一連の割り込み処理を行う。CPU15における処理が終了すると、CPU15は第1発振回路11と第2発振回路12の発振を停止させるために発振器停止要求命令を実行し、発信停止要求信号STPQを活性化する。その後CPU15は低電力モード指定命令を実行し、動作モードを低電力モードに移行する。
周辺回路16は、第2発振回路12が出力するクロック信号CLKbを入力してクロック信号を必要とする回路部分は動作する。周辺回路16は、CPU15との間で各種信号SGLNを入出力し、CPU15の制御を受けて情報の入出力を行う。また、本装置のスイッチを入れるなどの操作が行われると、周辺回路16はクロック信号に依存せずに発振要求信号BUSYを活性化する。さらに、操作が行われたことをCPU15に通知するため、割り込み入力回路14に対して割り込み要求信号REQを活性化する。割り込み要求信号REQは、発振要求信号BUSYとは異なりクロック信号に同期して出力されてもよい。
第1発振回路11は、発振器21とカウンタ22とゲート回路23とを備えている。発振器21は、発振制御信号CTRLaが活性化すると発振を開始する。発振器21の出力は、カウンタ22とゲート回路23に入力する。カウンタ22は、発振制御信号CTRLaが活性化すると発振器21の出力のパルス数を計数する。パルス数が予め設定された数を超過するとゲート回路23を制御して発振器21の出力をクロック信号CLKaとして出力する。この計数するパルス数は、発振器21の発振が安定するようになるまでの時間を設定する。カウンタ22は、発振器21の発振が安定するようになるまでのパルス数を計数するので、設定されたパルス数以上は計数しなくてもよい。よって、第1発振回路11の出力であるクロック信号CLKaは、発振が安定してから出力されることになる。
第2発振回路12は、PLL回路26とカウンタ27とゲート回路28とを備えている。PLL回路26は、発振制御信号CTRLbが活性化すると、クロック信号CLKaを逓倍させた信号を発振する。PLL回路26の出力は、ゲート回路28に入力する。カウンタ27は、発振制御信号CTRLbが活性化すると第1発振回路11の出力であるクロック信号CLKaのパルス数を計数する。パルス数が予め設定された数を超過するとゲート回路28を制御してPLL回路26の出力をクロック信号CLKbとして出力する。このパルス数を計数して得られる時間は、PLL回路26がクロック信号CLKaを供給されて発振し、逓倍された目的の周波数になるまでのPLLロック時間である。PLL回路26の発振が安定するようになるまでのパルス数を計数するので、設定されたパルス数以上は計数しなくてもよい。よって、第2発振回路12の出力であるクロック信号CLKbは、発振が安定してから出力されることになる。
図2は、本実施の形態に係るCPU15のソフトウェア動作を示すフローチャートである。CPU15では、ベースとなるメイン処理と割り込み信号によって起動される割り込み処理が行われる。メイン処理は、割り込みが発生する前の処理Aと割り込み発生後の処理Bに分けられているが、割り込みがなければ処理を分割しなくてよく、ステップS11、ステップS12が連続して処理される。処理が終了すると、発振器停止要求命令を実行する(ステップS13)。発振器停止要求命令が実行されると、CPU15から出力される発振停止要求信号が活性化する。続いてCPU15の動作状態を低電力モードに移行するため、低電力モード指定命令を実行する(ステップS14)。低電力モード指定命令は、CPU15自体に対する命令である。次に起動されるまで待機する状態にするため、CPU15を停止状態にして消費電力を削減するものである。低電力モードでは、CPU15はクロック信号の入力は不要である。
割り込み処理は、割り込み信号INTが活性化すると実行される。割り込み処理が開始すると、割り込み要因の解析、割り込み要因に対応した処理など、割り込みに関する処理が実行される(ステップS21)。その後、発振器を停止するため、発振器停止要求命令を実行し(ステップS22)、発振停止要求信号を活性化する。メイン処理を実行中に割り込みが発生した場合は、割り込み処理が終了すると割り込み発生前に実行していた処理に戻るため、メイン処理を実行中の割り込み処理かどうかを判定し(ステップS23)、実行中であればそのまま割り込み処理を終了する(ステップS23:YES)。メイン処理実行中でなければ(ステップS23:NO)、割り込み処理を終了するとその後の処理はないので、低電力モード指定命令を実行して低電力モードに移行する(ステップS24)。
メイン処理と割り込み処理について時間を追って説明する。メイン処理の処理A(ステップS11)が終了したところで割り込みが発生すると、割り込み処理に移行する。割り込みに関する処理が実行され(ステップS21)、発振器停止要求命令が実行され(ステップS22)、メイン処理が実行中であるため(ステップS23:YES)、割り込み処理を終了し、メイン処理に戻る。メイン処理では、割り込み発生前の続きの処理Bを実行する(ステップS12)。処理Bが終了すると、発振器停止要求命令を実行し(ステップS13)、低電力モード指定命令を実行して低電力モードに移行する(ステップS14)。低電力モードは待機状態であり、例えば、スイッチを押すなどの操作があると、処理すべき事象が発生したので割り込みが発生する。低電力モード中にクロック信号が入力されて割り込み信号INTが活性化すると、割り込み処理が起動され、割り込みに関する処理が実行される(ステップS21)。割り込みに関する処理が終了すると、発振器停止要求命令を実行し(ステップS22)、メイン処理は実行していないときの割り込み処理であるから(ステップS23:NO)、低電力モード指定命令を実行し(ステップS24)、割り込み処理を終了して低電力モードの待機状態となる。
図3は、本実施の形態に係るタイミングチャートである。メイン処理実行中に割り込みが発生し、メイン処理を中断して割り込み処理を実行する。割り込み処理終了後、メイン処理を続行する。メイン処理終了後、低電力モードで待機する。待機中に操作があって割り込みが発生する。
電源投入によって発振器21(g)は発振し、第1発振回路11からクロック信号CLKa(h)が出力される。クロック信号CLKaが第2発振回路12に入力されると、PLL回路26(i)は発振器21より高い周波数でクロック信号CLKaに位相同期して発振し、第2発振回路12はクロック信号CLKb(j)を出力する。クロック信号CLKbは、直接或いは間接的にCPU15と周辺回路16にクロック信号として供給され、CPU15と周辺回路16が動作する。CPU15(b)は、メイン処理(処理A)を実行し、周辺回路16(d)は動作中で、発振要求信号BUSY(e)は活性化している。
CPU15がメイン処理(処理A)を実行中に、時刻T11において操作が加わり、周辺回路16から割り込み入力回路14を通して割り込み信号INTが活性化する。時刻T12においてCPU15は割り込みを認知して割り込み処理を開始する。
割り込み処理終了直前CPU15は発振器停止要求命令を実行し(図2:ステップS22)、時刻T13において発振器制御回路13に入力される発振停止要求信号STPQが活性化する。周辺回路16が動作中で発振要求信号BUSYが活性化しているため、発振停止要求信号STPQが活性化したことを示す情報は、発振器制御回路13内に保持されるが、発振制御信号CTRLaおよびCTRLbは活性化(発振指示)したままとなる。
CPU15は割り込み処理を終了してメイン処理(処理B)を続行する。メイン処理(処理B)が終了すると、発振器停止要求命令を実行し(図2:ステップS13)、時刻T14において発振停止要求信号STPQが活性化する。CPU15は、低電力モード指定命令を実行して低電力モードになる。周辺回路16は動作中で発振要求信号BUSYが活性化しているため、発振停止要求信号STPQが活性化した情報は、発振器制御回路13内に保持され、発振制御信号CTRLaおよびCTRLbは活性化(発振指示)したままとなる。
時刻T15において、周辺回路16の動作が完了して停止状態になると、発振要求信号BUSYが非活性となリ、発振器制御回路13は内部に保持していた発振停止要求に基づいて発振制御信号CTRLaおよびCTRLbを非活性(発振停止)にする。発振制御信号CTRLaおよびCTRLbが非活性になると、発振器21とPLL回路26は発振を停止する。クロック信号CLKa/bが停止するため、CPU15および周辺回路16にはクロック信号が供給されず、消費電力を抑制することが可能となる。
時刻T16において、スイッチを入れるなどの操作が加わると、周辺回路16のその操作に対応する回路部分により発振要求信号BUSYが活性化する。発振要求信号BUSYが活性化すると、発振器制御回路13は、発振制御信号CTRLaおよびCTRLbを活性化する。発振制御信号CTRLaが活性化すると、発振器21が発振を開始する。発振器21の出力はカウンタ22により計数され、時間ta後に予め設定されたカウント数を超えるとゲート回路23が発振器21の出力をクロック信号CLKaとして出力する。カウント数は、発振を開始してから発振状態が安定するまでの時間taになるように設定しておく。発振が不安定な時期にパルス数を計数するのであるから、計数するパルス数は概数でよい。
時刻T17においてクロック信号CLKaが出力されると、PLL回路26が発振を開始するとともに、カウンタ27はクロック信号CLKaのパルス数をカウントし、PLL回路26の発振が安定するまでの時間tbを計測する。時間tbは、PLL回路26が第1発振回路11から供給されるクロック信号CLKaを逓倍させて目的の周波数になるまでのPLLロック時間である。カウンタ27が予め設定されたパルス数を計数すると、PLL回路26の発振は安定しているものとしてゲート回路28はクロック信号CLKbを出力する。
時刻T18においてクロック信号CLKbが出力されると周辺回路16は、クロックによる動作をはじめ、時刻T16において操作された事象を処理し、割り込み入力回路14への割り込み要求信号REQを活性化する。割り込み入力回路14は、クロック信号CLKbが供給されて待機状態であったCPU15に割り込み信号INTを与える。
CPU15は、時刻T19において割り込み処理を開始し、時刻T21において発振器停止要求命令を実行して発振停止要求信号STPQが活性化する。このとき、周辺回路16は、まだ動作中であり、クロック信号CLKbの供給を停止できないため、発振器制御回路13は、内部に発振停止要求の情報を保持して周辺回路16の動作終了を待つ。
時刻T22に周辺回路16の動作が終了すると、発振要求信号BUSYが非活性になり、発振器制御回路13は、発振制御信号CTRLaおよびCTRLbを非活性にし、発振器21およびPLL回路26は発振停止状態になる。
時刻T23において、スイッチを入れるなどの操作が加わると、時刻T16の場合と同様に、周辺回路16のその操作に対応する回路部分により発振要求信号BUSYが活性化し、発振器制御回路13は発振制御信号CTRLaおよびCTRLbを活性化し、発振器21が発振を開始する。発振器21が発振を開始して時間ta後にクロック信号CLKaが出力され、その時間tb後にクロック信号CLKbが出力される。
クロック信号CLKbが供給されると、周辺回路16は動作を開始する。時刻T26においてCPU15に割り込みを発生させ、CPU15は割り込み処理を開始する。
周辺回路16は、時刻T25において動作を終了して停止状態になり、発振要求信号BUSYは非活性になる。このときCPU15は割り込み処理の最中であり、まだ発振停止要求信号を出力していない。そのため、発振器制御回路13は、発振制御信号CTRLaおよびCTRLbを活性化したままとなる。
時刻T26においてCPU15が発振器停止要求命令を実行して発振停止要求信号が活性化すると、発振器制御回路13は発振制御信号CTRLaおよびCTRLbを非活性にし、発振器21およびPLL回路26の発振を停止させる。
このようにして発振回路の発振を制御することによって、発振回路自体の消費電力を削減することはもとより、CPU15、周辺回路16の待機中の消費電力も削減することが可能となる。また、ゲート回路23、28によって発振が安定するまで発振回路からクロック信号は出力されず、クロック信号は常に安定した状態となる。さらに、メイン処理、割り込み処理において処理終了直前に発振器停止要求命令を実行するだけでハードウェアの状態に合わせて発振器の停止が可能となリ、ソフトウェアデバッグが簡略化でき、開発期間を短縮できる。
図4から図6を参照して、本発明の第2の実施の形態を説明する。本実施の形態では、周辺回路16のクロック動作は比較的遅く、周辺回路16はクロック信号CLKaにより動作し、CPU15は、クロック信号CLKbで動作する。
図4は、本実施の形態に係る装置の構成を示すブロック図である。本装置は、第1発振回路11、第2発振回路12、発振器制御回路13、割り込み入力回路14、CPU15、周辺回路16を具備している。
第1発振回路11は、発振器制御回路13から発振制御信号CTRLaを入力し、クロック信号CLKaを第2発振回路12と周辺回路16に出力する。第2発振回路12は、発振器制御回路13から発振制御信号CTRLbと、第1発振回路11からクロック信号CLKaとを入力し、クロック信号CLKbを出力する。クロック信号CLKbは、CPU15に供給される。発振器制御回路13は、CPU15から発振停止要求信号STPQと、周辺回路16から発振要求信号BUSYとを入力し、第1発振回路11に発振制御信号CTRLaを、第2発振回路12に発振制御信号CTRLbを出力する。
CPU15は、第2発振回路12から出力されるクロック信号CLKbと、割り込み入力回路14から出力される割り込み信号INTとを入力し、発振停止要求信号STPQを出力し、周辺回路16と制御やデータなどの各種信号SGNLを入出力する。CPU15へのクロック信号は、ここではクロック信号CLKbを直接供給しているが、分周回路やドライブ回路などを介して供給されてもよい。
割り込み入力回路14は、周辺回路16から割り込み要求信号REQを入力し、CPU15に割り込み信号INTを出力する。周辺回路16は、第1発振回路11から出力されるクロック信号CLKaを入力し、発振器制御回路13に発振要求信号BUSYを、割り込み入力回路14に割り込み要求信号REQを出力し、CPU15と制御やデータなどの各種信号SGNLを入出力する。
第1発振回路11は、発振制御信号CTRLaの制御によって発振を開始し、停止する。第2発振回路12は、発振制御信号CTRLbの制御によって発振を開始し、停止する。
発振器制御回路13は、周辺回路16から入力する発振要求信号BUSYが活性化すると、発振制御信号CTRLaと発振制御信号CTRLbとを活性化し、発振を指示する。CPUから発振停止要求信号STPQが入力すると発振器制御回路13は、発振制御信号CTRLbを非活性にし、第2発振回路12に発振停止を指示する。また、発振要求信号BUSYが活性化状態でなければ発振制御信号CTRLaを非活性にして第1発振回路11に発振停止を指示し、発振要求信号BUSYが活性化状態であれば、非活性状態になるまで待機する。
割り込み入力回路14は、周辺回路16から入力する割り込み要求信号REQが活性化すると、CPU15に対して割り込み信号INTを活性化し、割り込み要求があったことを通知する。CPU15は、動作の基準信号としてクロック信号CLKbを入力し、動作する。CPU15は周辺回路16との間で各種信号SGNLを入出力し、周辺回路16を制御し、情報の入出力を行う。割り込み入力回路14から入力する割り込み信号INTが活性化すると、CPU15は割り込みに応じて一連の割り込み処理を行う。CPU15における処理が終了すると、CPU15は第1発振回路11と第2発振回路12の発振を停止させるために発振器停止要求命令を実行し、発信停止要求信号STPQを活性化する。その後CPU15は低電力モード指定命令を実行し、動作モードを低電力モードに移行する。
周辺回路16は、第1発振回路11が出力するクロック信号CLKaを入力してクロック信号を必要とする回路部分は動作する。周辺回路16は、CPU15との間で各種信号SGLNを入出力し、CPU15の制御を受けて情報の入出力を行う。また、本装置のスイッチを入れるなどの操作が行われると、周辺回路16はクロック信号に依存せずに発振要求信号BUSYを活性化する。さらに、操作が行われたことをCPU15に通知するため、割り込み入力回路14に対して割り込み要求信号REQを活性化する。割り込み要求信号REQは、発振要求信号BUSYとは異なりクロック信号に同期して出力されてもよい。
第1発振回路11は、発振器21とカウンタ22とゲート回路23とを備えている。発振器21は、発振制御信号CTRLaが活性化すると発振を開始する。発振器21の出力は、カウンタ22とゲート回路23に入力する。カウンタ22は、発振制御信号CTRLaが活性化すると発振器21の出力のパルス数を計数する。パルス数が予め設定された数を超過するとゲート回路23を制御して発振器21の出力をクロック信号CLKaとして出力する。この計数するパルス数は、発振器21の発振が安定するようになるまでの時間を設定する。カウンタ22は、発振器21の発振が安定するようになるまでのパルス数を計数するので、設定されたパルス数以上は計数しなくてもよい。よって、第1発振回路11の出力であるクロック信号CLKaは、発振が安定してから出力されることになる。
第2発振回路12は、PLL回路26とカウンタ27とゲート回路28とを備えている。PLL回路26は、発振制御信号CTRLbが活性化すると、クロック信号CLKaを逓倍させた信号を発振する。PLL回路26の出力は、ゲート回路28に入力する。カウンタ27は、発振制御信号CTRLbが活性化すると第1発振回路11の出力であるクロック信号CLKaのパルス数を計数する。パルス数が予め設定された数を超過するとゲート回路28を制御してPLL回路26の出力をクロック信号CLKbとして出力する。このパルス数を計数して得られる時間は、PLL回路26がクロック信号CLKaを供給されて発振し、逓倍された目的の周波数になるまでのPLLロック時間である。PLL回路26の発振が安定するようになるまでのパルス数を計数するので、設定されたパルス数以上は計数しなくてもよい。よって、第2発振回路12の出力であるクロック信号CLKbは、発振が安定してから出力されることになる。
図5は、本実施の形態に係るCPU15のソフトウェア動作を示すフローチャートである。CPU15では、ベースとなるメイン処理と割り込み信号によって起動される割り込み処理が行われる。メイン処理は、割り込みが発生する前の処理Aと割り込み発生後の処理Bに分けられているが、割り込みがなければ処理を分割しなくてよく、ステップS11、ステップS12が連続して処理される。処理が終了すると、発振器停止要求命令を実行する(ステップS13)。発振器停止要求命令が実行されると、CPU15から出力される発振停止要求信号が活性化する。続いてCPU15の動作状態を低電力モードに移行するため、低電力モード指定命令を実行する(ステップS14)。低電力モード指定命令は、CPU15自体に関する命令である。次に起動されるまで待機する状態にするため、CPU15を停止状態にして消費電力を削減するものである。低電力モードでは、CPU15はクロック信号の入力は不要である。
割り込み処理は、割り込み信号INTが活性化すると実行される。割り込み処理が開始すると、割り込み要因の解析、割り込み要因に対応した処理など、割り込みに関する処理が実行される(ステップS31)。その後、メイン処理を実行中に割り込みが発生した場合は、割り込み処理が終了すると割り込み発生前に実行していた処理に戻るため、メイン処理を実行中の割り込み処理かどうかを判定し(ステップS32)、実行中であればそのまま割り込み処理を終了する(ステップS32:YES)。メイン処理実行中でなければ(ステップS32:NO)、割り込み処理を終了するとその後の処理はないので、発振器を停止するため、発振器停止要求命令を実行し(ステップS33)、発振停止要求信号を活性化する。その後、低電力モード指定命令を実行して低電力モードに移行する(ステップS34)。
メイン処理と割り込み処理について時間を追って説明する。メイン処理の処理A(ステップS11)が終了したところで割り込みが発生すると、割り込み処理に移行する。割り込みに関する処理が実行され(ステップS31)、メイン処理が中断しているか判定する(ステップS32)。メイン処理が実行中であるため(ステップS32:YES)、割り込み処理を終了してメイン処理に戻る。メイン処理では、割り込み発生前の続きの処理Bを実行する(ステップS12)。処理Bが終了すると、発振器停止要求命令を実行し(ステップS13)、低電力モード指定命令を実行して低電力モードに移行する(ステップS14)。低電力モードは待機状態であり、例えば、スイッチを押すなどの操作があると、処理すべき事象が発生したので割り込みが発生する。低電力モード中にクロック信号が入力されて割り込み信号INTが活性化すると、割り込み処理が起動され、割り込みに関する処理が実行される(ステップS31)。割り込みに関する処理が終了すると、メイン処理は実行していないときの割り込み処理であるから(ステップS32:NO)、発振器停止要求命令(ステップS33)と、低電力モード指定命令を実行し(ステップS34)、割り込み処理を終了して低電力モードの待機状態となる。
図6は、本実施の形態に係るタイミングチャートである。メイン処理実行中に割り込みが発生し、メイン処理を中断して割り込み処理を実行する。割り込み処理終了後、メイン処理を続行する。メイン処理終了後、低電力モードで待機する。待機中に操作があって割り込みが発生する。
電源投入によって発振器21(h)は発振し、第1発振回路11からクロック信号CLKa(i)が出力される。クロック信号CLKaは、第2発振回路12と周辺回路16に供給される。クロック信号CLKaが第2発振回路12に入力されると、PLL回路26(j)は発振器21より高い周波数でクロック信号CLKaに位相同期して発振し、第2発振回路12はクロック信号CLKb(k)を出力する。クロック信号CLKbは、直接或いは間接的にCPU15にクロック信号として供給され、CPU15が動作する。CPU15(b)は、メイン処理(処理A)を実行し、周辺回路16(d)は動作中で、発振要求信号BUSY(e)は活性化している。
CPU15がメイン処理(処理A)を実行中に、時刻T31において操作が加わり、周辺回路16から割り込み入力回路14を通して割り込み信号INTが活性化する。時刻T32においてCPU15は割り込みを認知して割り込み処理を開始する。
メイン処理実行中の割り込み処理であるから、割り込み処理が終了すると、CPU15はメイン処理(処理B)を続行する。メイン処理(処理B)が終了すると、発振器停止要求命令を実行し(図5:ステップS13)、時刻T34において発振停止要求信号STPQが活性化する。発振器制御回路13は、発振停止要求信号STPQに基づいて発振制御信号CTRLbを非活性にし、PLL回路26の発振を停止させる。CPU15は、低電力モード指定命令を実行して低電力モードになる。なお、PLL回路26の発振の停止は、CPU15が低電力モード指定命令を実行して低電力モードに移行するまで遅延させてある。一方、周辺回路16は動作中で発振要求信号BUSYが活性化しているため、発振停止要求信号STPQが活性化した情報は、発振器制御回路13内に保持され、発振制御信号CTRLaは活性化(発振指示)したままとなる。
時刻T35において、周辺回路16の動作が完了して停止状態になると、発振要求信号BUSYが非活性となリ、発振器制御回路13は内部に保持していた発振停止要求に基づいて発振制御信号CTRLaを非活性(発振停止)にする。発振制御信号CTRLaが非活性になると、発振器21は発振を停止する。クロック信号CLKaおよびCLKbが停止するため、CPU15および周辺回路16にはクロック信号が供給されず、消費電力を抑制することが可能となる。
時刻T36において、スイッチを入れるなどの操作が加わると、周辺回路16のその操作に対応する回路部分により発振要求信号BUSYが活性化する。発振要求信号BUSYが活性化すると、発振器制御回路13は、発振制御信号CTRLaおよびCTRLbを活性化する。発振制御信号CTRLaが活性化すると、発振器21が発振を開始する。発振器21の出力はカウンタ22により計数され、時間ta後に予め設定されたカウント数を超えるとゲート回路23が発振器21の出力をクロック信号CLKaとして出力する。カウント数は、発振を開始してから発振状態が安定するまでの時間taになるように設定しておく。発振が不安定な時期にパルス数を計数するのであるから、計数するパルス数は概数でよい。
時刻T37においてクロック信号CLKaが出力されると、PLL回路26が発振を開始するとともに、カウンタ27はクロック信号CLKaのパルス数をカウントし、PLL回路26の発振が安定するまでの時間tbを計測する。時間tbは、PLL回路26が第1発振回路11から供給されるクロック信号CLKaを逓倍させて目的の周波数になるまでのPLLロック時間である。カウンタ27が予め設定されたパルス数を計数すると、PLL回路26の発振は安定しているものとしてゲート回路28はクロック信号CLKbを出力する。
クロック信号CLKaが供給されると周辺回路16は動作を開始し、時刻T36において操作された事象を処理し、割り込み入力回路14への割り込み要求信号REQを活性化する。割り込み入力回路14は、時刻T38にクロック信号CLKbが供給されたCPU15に割り込み信号INTを与え、CPU15は、割り込み処理を開始する。
時刻T39において割り込み処理を終了するCPU15は、発振器停止要求命令を実行して発振停止要求信号STPQが活性化する。発振器制御回路13は、発振停止要求信号STPQに基づいて発振制御信号CTRLbを非活性にし、PLL回路26の発振を停止させる。このとき、周辺回路16は、まだ動作中であり、クロック信号CLKaの供給を停止できないため、発振器制御回路13は、内部に発振停止要求の情報を保持して周辺回路16の動作終了を待つ。
時刻T41に周辺回路16の動作が終了すると、発振要求信号BUSYが非活性になる。発振器制御回路13は、発振制御信号CTRLaを非活性にし、発振器21を発振停止状態にする。
時刻T42において、スイッチを入れるなどの操作が加わると、時刻T36の場合と同様に、周辺回路16のその操作に対応する回路部分により発振要求信号BUSYが活性化し、発振器制御回路13は発振制御信号CTRLaおよびCTRLbを活性化し、発振器21が発振を開始する。発振器21が発振を開始して時間ta後にクロック信号CLKaが出力され、その時間tb後にクロック信号CLKbが出力される。
クロック信号CLKaが供給されると、周辺回路16は動作を開始し、時刻T43においてCPU15に割り込みを発生させ、CPU15は割り込み処理を開始する。
周辺回路16は、時刻T44において動作を終了して停止状態になり、発振要求信号BUSYは非活性になる。このときCPU15は割り込み処理の最中であり、まだ発振停止要求信号を出力していない。そのため、発振器制御回路13は、発振制御信号CTRLaおよびCTRLbを活性化したままとなる。
時刻T45においてCPU15が発振器停止要求命令を実行して発振停止要求信号が活性化すると、発振器制御回路13は発振制御信号CTRLaおよびCTRLbを非活性にし、発振器21およびPLL回路26の発振を停止させる。
このようにして発振回路の発振を制御することによって、発振回路自体の消費電力を削減することはもとより、CPU15、周辺回路16の待機中の消費電力も削減することが可能となる。また、ゲート回路23、28によって発振が安定するまで発振回路からクロック信号は出力されず、クロック信号は常に安定した状態となる。さらに、発振器停止要求命令をソフトウェア上の動作管理だけで実行するとハードウェアの状態に合わせて発振器の停止が可能となリ、ソフトウェアデバッグが簡略化でき、開発期間を短縮できる。
図7と図8を参照して、本発明の第3の実施の形態を説明する。本実施の形態では、周辺回路は、比較的低速な処理を行う低い周波数のクロックを使用する周辺回路17と、比較的高速な処理を行う高い周波数のクロックを使用する周辺回路18に分かれ、それぞれ別のクロックを供給する形態である。本実施の形態のソフトウェア動作は、図2または図5と同じ動作となるため、ここでは説明を省略する。
図7は、本実施の形態に係る装置の構成を示すブロック図である。本装置は、第1発振回路11、第2発振回路12、発振器制御回路13、割り込み入力回路14、CPU15、周辺回路17および18を具備している。
第1発振回路11は、発振器制御回路13から発振制御信号CTRLaを入力し、クロック信号CLKaを第2発振回路12と周辺回路17に出力する。第2発振回路12は、発振器制御回路13から発振制御信号CTRLbと、第1発振回路11からクロック信号CLKaとを入力し、クロック信号CLKbを出力する。クロック信号CLKbは、CPU15と周辺回路18に供給される。発振器制御回路13は、CPU15から発振停止要求信号STPQと、周辺回路17から発振要求信号BUSYa、周辺回路18から発振要求信号BUSYbとを入力し、第1発振回路11に発振制御信号CTRLaを、第2発振回路12に発振制御信号CTRLbを出力する。
CPU15は、第2発振回路12から出力されるクロック信号CLKbと、割り込み入力回路14から出力される割り込み信号INTとを入力し、発振停止要求信号STPQを出力し、周辺回路17および18と制御やデータなどの各種信号SGNLaおよびSGNLbを入出力する。CPU15へのクロック信号は、ここではクロック信号CLKbを直接供給しているが、分周回路やドライブ回路などを介して供給されてもよい。
割り込み入力回路14は、周辺回路17および18から割り込み要求信号REQaおよびREQbを入力し、CPU15に割り込み信号INTを出力する。周辺回路17は、第1発振回路11から出力されるクロック信号CLKaを入力し、発振器制御回路13に発振要求信号BUSYaを、割り込み入力回路14に割り込み要求信号REQaを出力し、CPU15と制御やデータなどの各種信号SGNLaを入出力する。周辺回路18は、第2発振回路12から出力されるクロック信号CLKbを入力し、発振器制御回路13に発振要求信号BUSYbを、割り込み入力回路14に割り込み要求信号REQbを出力し、CPU15と制御やデータなどの各種信号SGNLbを入出力する。
第1発振回路11は、発振制御信号CTRLaの制御によって発振を開始し、停止する。第2発振回路12は、発振制御信号CTRLbの制御によって発振を開始し、停止する。
発振器制御回路13は、周辺回路17から入力する発振要求信号BUSYaが活性化すると、発振制御信号CTRLaを活性化して発振を指示し、周辺回路18から入力する発振要求信号BUSYbが活性化すると、発振制御信号CTRLaと発振制御信号CTRLbとを活性化して発振を指示する。CPUから発振停止要求信号STPQが入力すると発振器制御回路13は、発振要求信号BUSYaとBUSYbとが活性化状態でなければ発振制御信号CTRLaおよびCTRLbを非活性にして発振停止を指示し、発振要求信号BUSYbが活性化状態でなければ発振制御信号CTRLbを非活性にし、発振停止を指示する。
割り込み入力回路14は、周辺回路17から入力する割り込み要求信号REQaまたは周辺回路18から入力する割り込み信号REQbが活性化すると、CPU15に対して割り込み信号INTを活性化し、割り込み要求があったことを通知する。CPU15は、動作の基準信号としてクロック信号CLKbを入力し、動作する。CPU15は周辺回路17および18との間で各種信号SGNLaおよびSGNLbを入出力し、周辺回路17および18を制御し、情報の入出力を行う。割り込み入力回路14から入力する割り込み信号INTが活性化すると、CPU15は割り込みに応じて一連の割り込み処理を行う。CPU15における処理が終了すると、CPU15は第1発振回路11と第2発振回路12の発振を停止させるために発振器停止要求命令を実行し、発信停止要求信号STPQを活性化する。その後CPU15は低電力モード指定命令を実行し、動作モードを低電力モードに移行する。
周辺回路17は、第1発振回路11が出力するクロック信号CLKaを入力してクロック信号を必要とする回路部分は動作する。周辺回路17は、CPU15との間で各種信号SGLNaを入出力し、CPU15の制御を受けて情報の入出力を行う。また、本装置のスイッチを入れるなどの操作が行われると、周辺回路17はクロック信号に依存せずに発振要求信号BUSYaを活性化する。さらに、操作が行われたことをCPU15に通知するため、割り込み入力回路14に対して割り込み要求信号REQaを活性化する。割り込み要求信号REQaは、発振要求信号BUSYaとは異なりクロック信号に同期して出力されてもよい。
周辺回路18は、第2発振回路12が出力するクロック信号CLKbを入力してクロック信号を必要とする回路部分は動作する。周辺回路18は、CPU15との間で各種信号SGLNbを入出力し、CPU15の制御を受けて情報の入出力を行う。また、本装置のスイッチを入れるなどの操作が行われると、周辺回路18はクロック信号に依存せずに発振要求信号BUSYbを活性化する。さらに、操作が行われたことをCPU15に通知するため、割り込み入力回路14に対して割り込み要求信号REQbを活性化する。割り込み要求信号REQbは、発振要求信号BUSYbとは異なりクロック信号に同期して出力されてもよい。
第1発振回路11は、発振器21とカウンタ22とゲート回路23とを備えている。発振器21は、発振制御信号CTRLaが活性化すると発振を開始する。発振器21の出力は、カウンタ22とゲート回路23に入力する。カウンタ22は、発振制御信号CTRLaが活性化すると発振器21の出力のパルス数を計数する。パルス数が予め設定された数を超過するとゲート回路23を制御して発振器21の出力をクロック信号CLKaとして出力する。この計数するパルス数は、発振器21の発振が安定するようになるまでの時間を設定する。カウンタ22は、発振器21の発振が安定するようになるまでのパルス数を計数するので、設定されたパルス数以上は計数しなくてもよい。よって、第1発振回路11の出力であるクロック信号CLKaは、発振が安定してから出力されることになる。
第2発振回路12は、PLL回路26とカウンタ27とゲート回路28とを備えている。PLL回路26は、発振制御信号CTRLbが活性化すると、クロック信号CLKaを逓倍させた信号を発振する。PLL回路26の出力は、ゲート回路28に入力する。カウンタ27は、発振制御信号CTRLbが活性化すると第1発振回路11の出力であるクロック信号CLKaのパルス数を計数する。パルス数が予め設定された数を超過するとゲート回路28を制御してPLL回路26の出力をクロック信号CLKbとして出力する。このパルス数を計数して得られる時間は、PLL回路26がクロック信号CLKaを供給されて発振し、逓倍された目的の周波数になるまでのPLLロック時間である。計数するパルス数は、PLL回路26の発振が安定するようになるまでのパルス数を計数するので、設定されたパルス数以上は計数しなくてもよい。よって、第2発振回路12の出力であるクロック信号CLKbは、発振が安定してから出力されることになる。
図8は、本実施の形態に係るタイミングチャートである。ソフトウェアの動作は、図2によるものとし、メイン処理実行中に割り込みが発生し、メイン処理を中断して割り込み処理を実行する。割り込み処理終了後、メイン処理を続行する。メイン処理終了後、低電力モードで待機する。待機中に操作があって割り込みが発生する。
電源投入によって発振器21(j)は発振し、第1発振回路11からクロック信号CLKa(k)が出力される。クロック信号CLKaが第2発振回路12に入力されると、PLL回路26(l)は発振器21より高い周波数でクロック信号CLKaに位相同期して発振し、第2発振回路12はクロック信号CLKb(m)を出力する。クロック信号CLKaは、直接或いは間接的に周辺回路17に供給され、周辺回路17が動作する。クロック信号CLKbは、直接或いは間接的にCPU15と周辺回路18に供給され、CPU15と周辺回路18が動作する。CPU15(b)は、メイン処理(処理A)を実行し、周辺回路17(d)および18(e)は動作中で、発振要求信号BUSYa(f)およびBUSYb(g)は活性化している。
CPU15がメイン処理(処理A)を実行中に、時刻T51において操作が加わり、周辺回路17または18から割り込み入力回路14を通して割り込み信号INTが活性化する。時刻T52においてCPU15は割り込みを認知して割り込み処理を開始する。
割り込み処理終了直前CPU15は発振器停止要求命令を実行し(図2:ステップS22)、時刻T53において発振器制御回路13に入力される発振停止要求信号STPQが活性化する。周辺回路17および18が動作中で発振要求信号BUSYaおよびBUSYbが活性化しているため、発振停止要求信号STPQが活性化したことを示す情報は、発振器制御回路13内に保持されるが、発振制御信号CTRLaおよびCTRLbは活性化(発振指示)したままとなる。
CPU15は割り込み処理を終了してメイン処理(処理B)を続行する。メイン処理(処理B)が終了すると、発振器停止要求命令を実行し(図2:ステップS13)、時刻T54において発振停止要求信号STPQが活性化する。CPU15は、低電力モード指定命令を実行して低電力モードになる。周辺回路17および18は動作中で発振要求信号BUSYaおよびBUSYbが活性化しているため、発振停止要求信号STPQが活性化した情報は、発振器制御回路13内に保持され、発振制御信号CTRLaおよびCTRLbは活性化(発振指示)したままとなる。
時刻T55において、周辺回路18の動作が完了して停止状態になると、発振要求信号BUSYbが非活性となリ、発振器制御回路13は内部に保持していた発振停止要求に基づいて発振制御信号CTRLbを非活性(発振停止)にする。発振制御信号CTRLbが非活性になると、PLL回路26は発振を停止する。クロック信号CLKbが停止するため、CPU15および周辺回路18にはクロック信号が供給されず、消費電力を抑制することが可能となる。
時刻T56において、周辺回路17の動作が完了して停止状態になると、発振要求信号BUSYaが非活性となリ、発振器制御回路13は発振要求信号BUSYbの状態と内部に保持していた発振停止要求に基づいて発振制御信号CTRLaも非活性(発振停止)にする。発振制御信号CTRLaが非活性になると、発振器21は発振を停止する。クロック信号CLKaも停止するため、周辺回路17にもクロック信号が供給されず、消費電力をさらに抑制することが可能となる。
時刻T57において、スイッチを入れるなどの操作が加わると、周辺回路17および18のその操作に対応する回路部分により発振要求信号BUSYaおよびBUSYbが活性化する。ここでは、周辺回路17と18のどちらが起動されても発振要求信号BUSYaおよびBUSYbが活性化するように構成しているが、関連する周辺回路のみが起動される構成にしてもよい。周辺回路18が起動される場合は、基本となるクロック信号CLKaが必要になるため、第1発振回路11を発振させる。周辺回路17が起動される場合、周辺回路18およびCPU15はすぐに起動される必要がなく、周辺回路17の処理によって周辺回路18およびCPU15を起動する必要が発生したとき第2発振回路12を発振させるとよい。そのような構成では、さらに消費電力の削減に効果がある。このようにして発振要求信号BUSYaおよびBUSYbが活性化すると、発振器制御回路13は、発振制御信号CTRLaおよびCTRLbを活性化する。
発振制御信号CTRLaが活性化すると、発振器21が発振を開始する。発振器21の出力はカウンタ22により計数され、時間ta後に予め設定されたカウント数を超えるとゲート回路23が発振器21の出力をクロック信号CLKaとして出力する。カウント数は、発振を開始してから発振状態が安定するまでの時間taになるように設定しておく。発振が不安定な時期にパルス数を計数するのであるから、計数するパルス数は概数でよい。
時刻T58においてクロック信号CLKaが出力されると、PLL回路26が発振を開始するとともに、カウンタ27はクロック信号CLKaのパルス数をカウントし、PLL回路26の発振が安定するまでの時間tbを計測する。時間tbは、PLL回路26が第1発振回路11から供給されるクロック信号CLKaを逓倍させて目的の周波数になるまでのPLLロック時間である。カウンタ27が予め設定されたパルス数を計数すると、PLL回路26の発振は安定しているものとしてゲート回路28はクロック信号CLKbを出力する。
時刻T58においてクロック信号CLKaが出力される周辺回路17が、時刻T59においてクロック信号CLKbが出力されると周辺回路18が、クロックによる動作をはじめる。時刻T57において操作された事象は周辺回路17または18が処理し、割り込み入力回路14への割り込み要求信号REQaまたはREQbを活性化する。割り込み入力回路14は、クロック信号CLKbが供給されたCPU15に割り込み信号INTを与える。
CPU15は、時刻T61において割り込み処理を開始し、時刻T62において発振器停止要求命令を実行して発振停止要求信号STPQが活性化する。このとき、周辺回路17および18は、まだ動作中であり、クロック信号CLKaおよびCLKbの供給を停止できないため、発振器制御回路13は、内部に発振停止要求の情報を保持して周辺回路17および18の動作終了を待つ。
時刻T63に周辺回路17の動作が終了すると、発振要求信号BUSYaが非活性になるが、発振要求信号BUSYbが活性状態であるため、第1発振回路11を停止することはできない。時刻T64になって周辺回路18の動作が終了すると、発振要求信号BUSYbも非活性になり、発振器制御回路13は、発振制御信号CTRLaおよびCTRLbを非活性にし、発振器21およびPLL回路26は発振停止状態にする。
時刻T65において、スイッチを入れるなどの操作が加わると、時刻T57の場合と同様に、発振要求信号BUSYaおよびBUSYbが活性化し、発振器制御回路13は発振制御信号CTRLaおよびCTRLbを活性化し、発振器21が発振を開始する。発振器21が発振を開始して時間ta後にクロック信号CLKaが出力され、その時間tb後にクロック信号CLKbが出力される。
クロック信号CLKaが時刻T66に供給されると周辺回路17が、時刻T67にクロック信号CLKbが供給されると周辺回路18とCPU15が動作を開始する。操作に対する処理が行われて割り込みが発生し、時刻T68にCPU15は割り込み処理を開始する。
周辺回路18は、時刻T69において動作を終了して停止状態になり、発振要求信号BUSYbは非活性になる。周辺回路17は、時刻T71において動作を終了して停止状態になり、発振要求信号BUSYaは非活性になる。このときCPU15は割り込み処理の最中であり、まだ発振停止要求信号を出力していない。そのため、発振器制御回路13は、発振制御信号CTRLaおよびCTRLbを活性化したままとなる。
時刻T72においてCPU15が発振器停止要求命令を実行して発振停止要求信号が活性化すると、発振器制御回路13は発振制御信号CTRLaおよびCTRLbを非活性にし、発振器21およびPLL回路26の発振を停止させる。
このようにして発振回路の発振を制御することによって、発振回路自体の消費電力を削減することはもとより、CPU15、周辺回路17および18の待機中の消費電力も削減することが可能となる。また、ゲート回路23、28によって発振が安定するまで発振回路からクロック信号は出力されず、クロック信号は常に安定した状態となる。さらに、メイン処理、割り込み処理において処理終了直前に発振器停止要求命令を実行するだけでハードウェアの状態に合わせて発振器の停止が可能となリ、ソフトウェアデバッグが簡略化でき、開発期間を短縮できる。