(57)【要約】【課題】周辺回路の動作速度に律速することなくＣＰＵ動作の高速化を図ると共に、それに伴う消費電力の上昇を抑制する。【解決手段】クロック生成回路１０は、互いに位相の揃った２つのクロック、即ちＣＰＵクロックＣＬＫＣＰＵ並びにバスクロックＣＬＫＢＵＳを生成する。ＢＩＵ（バスインターフェイスユニット）５１は、ＣＰＵクロックＣＬＫＣＰＵに基づいてコードバスを制御し、その一方でバスクロックＣＬＫＢＵＳに基づいて周辺バスを制御する。クロック生成回路１０は、ＭＣＵの動作モードに応じてＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳそれぞれの周波数を切り替える。例えばＣＰＵの高速動作を行うために、ＣＰＵクロックＣＬＫＣＰＵをバスクロックＣＬＫＢＵＳよりも高速にする。その場合でも、両クロックの位相は揃っているため、ＢＩＵ５１におけるコードバスおよび周辺バスの制御は容易に行うことが可能である。【選択図】        図２
2004310283.tif 000002
【特許請求の範囲】
【請求項１】
互いに位相の揃った第１および第２のクロックを生成するクロック生成回路と、
前記第１のクロックに基づき動作するＣＰＵ（中央演算処理装置）と、
前記ＣＰＵにより制御され、前記第２のクロックに基づき動作する周辺装置と、
前記第１のクロックに基づいて動作する第１のバスと、
前記第２のクロックに基づいて動作する第２のバスと、
前記第１および第２のバスの動作タイミング制御を行うＢＩＵ（バスインターフェイスユニット）とを有するマイクロコントローラであって、
前記クロック生成回路は、前記第１および第２のクロックの周波数を互いに同じにするか異ならしめるかの設定が保持されるレジスタを備え、前記レジスタに保持された前記設定に応じて、前記第１および第２のクロックの位相は揃えたままで周波数を切り替え、
前記第１および第２のクロックは、前記ＢＩＵに入力され、
前記ＢＩＵは、前記第１および第２のクロックに同期した所定のタイミングで前記第１および第２のバスのアイドル期間を交互に切り替えることにより、前記動作タイミング制御を行う
ことを特徴とするマイクロコントローラ。
【請求項２】
請求項１に記載のマイクロコントローラであって、
前記クロック生成回路は、
前記ＣＰＵに制御され、前記第１および第２のクロックの生成を停止させるクロック停止装置をさらに有し、
前記クロック停止装置は、
前記第２のクロックにおける単位周期が終了するタイミングに同期して、前記第１および第２のクロックの生成を停止させる
ことを特徴とするマイクロコントローラ。
【請求項３】
請求項１に記載のマイクロコントローラであって、
前記クロック生成回路は、
前記レジスタに保持された前記設定に関わらず、前記第１のおよび第２のクロックの周波数を同じにする手段をさらに備える
ことを特徴とするマイクロコントローラ。
【請求項４】
請求項１に記載のマイクロコントローラであって、
前記クロック生成回路は、
所定の基準クロックに基づいて前記第１および第２のクロックを生成し、さらに、
第３のクロックを出力するオシレータと、
前記基準クロックを、前記クロック生成回路の外部から入力される所定の外部クロック或いは前記第３のクロックに切り替える基準クロック切替回路と、
前記外部クロックをモニタして、前記外部クロックの停止を検出する外部クロック停止検出回路とを備え、
前記基準クロック切替回路は、前記外部クロックの停止が検出された場合に、前記基準クロックを前記第３のクロックに切り替える
ことを特徴とするマイクロコントローラ。
【請求項５】
請求項４に記載のマイクロコントローラであって、
前記クロック生成回路は、
前記外部クロックの停止が検出された場合に、前記レジスタに保持された前記設定に関わらず、前記第１のおよび第２のクロックの周波数を同じにする
ことを特徴とするマイクロコントローラ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、マイクロコントローラ（ＭＣＵ：Ｍｉｃｒｏ  Ｃｏｎｔｒｏｌｌｅｒ  Ｕｎｉｔ）に関するものであり、特に、その動作を規定するクロック信号の生成並びに制御に関するものである。
【０００２】
【従来の技術】
従来のマイクロコントローラ（以下「ＭＣＵ」と称する）においては、当該ＭＣＵ全体が単一のクロックに基づいて動作するものが一般的であった。また近年のＭＣＵの高速化の要求に伴い、クロックの高周波化が進んでいる。しかし、例えば単一のクロックで動作するＭＣＵ内で、高い周波数のクロックに対応可能なブロック（高速ブロック）と対応不可能なブロック（低速ブロック）とが存在した場合、ＭＣＵに使用するクロックの周波数は、低速ブロックが対応可能な範囲に設定せざるを得なく、当該ＭＣＵ全体の高速化を図ることができない。即ち、本来高速な動作が可能な高速ブロックの動作速度が、低速ブロックの動作速度により律速されてしまう。また、ＭＵＣの高速化を図るために、低速ブロックの大幅な設計変更が必要になるという問題もあった。
【０００３】
一方、ＭＣＵの中には、中央演算処理装置（ＣＰＵ）用のクロック（ＣＰＵクロック）の周波数と、周辺回路用のクロック（周辺クロック）の周波数とを任意に設定可能なものも提案されている（例えば、特許文献１）。
【０００４】
【特許文献１】
特開平１１−２７２６４４号公報（第１−７頁、第１−５図）
【０００５】
【発明が解決しようとする課題】
上記特許文献１に開示されている従来のＭＣＵにおいては、ＣＰＵクロックと周辺クロックの周波数が任意に設定可能であるが、ＣＰＵクロックと周辺クロックとの位相が一致しないケースが生じる。そのため、ＣＰＵが周辺回路にアクセスする際に両者の動作の同期をとるための回路（例えばラッチ回路）等をＭＣＵに設ける必要があり、ＭＣＵの回路構成の複雑化並びにコストの上昇といった問題が懸念される。
【０００６】
一方、上記特許文献１の図５にも開示されているが、ＣＰＵクロックを周辺クロックから生成するＭＣＵもある。そのようなＭＣＵでは、周辺クロックのパルスの間隔をあけることにより当該周辺クロックと異なる周波数のＣＰＵクロックを生成する。この場合、ＣＰＵと周辺回路との動作の同期は確保されるので、上記の問題は伴わない。
【０００７】
しかし、そのようなＭＣＵ内に高速ブロックと低速ブロックとが存在した場合、周辺クロックは低速ブロックが対応できる範囲の周波数に設定せざるを得ない。その結果、周辺クロックから生成されるＣＰＵクロックの周波数は周辺クロックの周波数に律速され、本来高速動作が可能なＣＰＵの性能を充分に発揮させることができなくなる。特にＣＰＵの動作の高速化が可能となった近年、この問題は大きくなっている。その対策として、高速なＣＰＵを搭載するＭＣＵには、周辺回路としても高速動作が可能なものを使用すればよいが、その場合、ＭＣＵのコスト上昇を招いてしまう。
【０００８】
また、ＭＣＵのクロック周波数を上げると、一般にＭＣＵ全体の消費電力が増大するという問題を伴う。特に携帯端末装置やノート型パソコンのようなバッテリー駆動を行う装置においては、低消費電力化は重要な課題である。
【０００９】
本発明は以上のような課題を解決するためになされたものであり、周辺回路の動作速度に律速することなくＣＰＵ動作の高速化を図ることを第１の目的とし、ＣＰＵ動作の高速化に伴う消費電力の上昇を抑えることを第２の目的とする。
【００１０】
【課題を解決するための手段】
本発明に係るマイクロコントローラは、互いに位相の揃った第１および第２のクロックを生成するクロック生成回路と、前記第１のクロックに基づき動作するＣＰＵ（中央演算処理装置）と、前記ＣＰＵにより制御され、前記第２のクロックに基づき動作する周辺装置と、前記第１のクロックに基づいて動作する第１のバスと、前記第２のクロックに基づいて動作する第２のバスと、前記第１および第２のバスの動作タイミング制御を行うＢＩＵ（バスインターフェイスユニット）とを有するマイクロコントローラであって、前記クロック生成回路は、前記第１および第２のクロックの周波数を互いに同じにするか異ならしめるかの設定が保持されるレジスタを備え、前記レジスタに保持された前記設定に応じて、前記第１および第２のクロックの位相は揃えたままで周波数を切り替え、前記第１および第２のクロックは、前記ＢＩＵに入力され、前記ＢＩＵは、前記第１および第２のクロックに同期した所定のタイミングで前記第１および第２のバスのアイドル期間を交互に切り替えることにより、前記動作タイミング制御を行う。
【００１１】
【発明の実施の形態】
＜実施の形態１＞
図１は本発明の実施の形態１に係るマイクロコントローラ（ＭＣＵ）の要部の構成を示すブロック図である。クロック生成回路１０は、ＭＣＵ内の各ブロックの動作タイミングおよび動作速度を規定するためのクロックを生成する。クロック生成回路１０には、クロックを生成するための基準となるメインクロックＸＩＮとサブクロックＸＣＩＮとが当該クロック生成回路１０の外部から入力される。メインクロックＸＩＮは通常動作時に使用される高速（高周波数）のクロックであり、サブクロックＸＣＩＮは例えばバッテリー駆動時などに使用される低消費電力機能に対応した比較的低速（低周波数）のクロックである。クロック生成回路１０は、メインクロックＸＩＮ或いはサブクロックＸＣＩＮに基づき、互いに位相の揃った（同期のとれた）第１のクロックであるＣＰＵクロックＣＬＫＣＰＵ並びに第２のクロックであるバスクロックＣＬＫＢＵＳの２つのクロックを生成する。
【００１２】
本明細書において、クロック生成回路１０がクロックを生成するための基準となるクロックを“基準クロック”と称する。即ち、本実施の形態では、クロック生成回路１０に外部から入力される外部クロックであるメインクロックＸＩＮ或いはサブクロックＸＣＩＮが基準クロックとなる。
【００１３】
ＭＣＵ全体の動作を制御するＣＰＵ５０にはＣＰＵクロックＣＬＫＣＰＵが入力され、当該ＣＰＵ５０はこのＣＰＵクロックＣＬＫＣＰＵに基づいて動作する。一方、ＢＩＵ（バスインターフェイスユニット）５１は、ＣＰＵ５０により制御されており、コードバスおよび周辺バスとのデータのやり取りを実行する。ＢＩＵ５１には、ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳが入力される。コードバスにはＣＰＵ５０で実行される実行コード（プログラム）等が格納されたＲＯＭ５２（Ｒｅａｄ  Ｏｎｌｙ  Ｍｏｍｏｒｙ）が接続されており、ＢＩＵ５１は、ＣＰＵクロックＣＬＫＣＰＵに基づいてコードバス上のＲＯＭ５２にアクセスして実行コードを読み出す。また、ＢＩＵ５１は、バスクロックＣＬＫＢＵＳに基づいて周辺バス上の周辺機能部５３ａ，５３ｂを制御する。即ち、周辺機能部５３ａ、５３ｂは、バスクロックＣＬＫＢＵＳに基づき動作する周辺装置である。なお、ＢＩＵ５１におけるＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳの制御については後述する。
【００１４】
ここで、本実施の形態においては、ＣＰＵ５０およびＲＯＭ５２は高周波数のクロック（高速クロック）に対応可能な高速ブロックであり、それに対し周辺機能部５３ａ，５３ｂは、高速クロックに対応不可能な低速ブロックであると仮定する。
【００１５】
図２は、当該ＭＣＵが有するクロック生成回路１０の構成を示すブロック図である。クロック生成回路１０には、高周波数のメインクロックＸＩＮ、並びに、比較的低周波数のサブクロックＸＣＩＮが入力される。ＰＬＬ回路１１には、メインクロックＸＩＮが入力され、当該メインクロックＸＩＮの周波数を所定の係数により逓倍したクロックＸＰＬＬ（以下「ＰＬＬクロック」と称する）を出力する。
【００１６】
第１のクロック切替器１２は、メインクロックＸＩＮとサブクロックＸＣＩＮの両方が入力され、両者のうち何れかを選択して出力する。第１のクロック切替器１２がメインクロックＸＩＮを出力するかサブクロックＸＣＩＮを出力するかは、第１の選択レジスタ１３に記憶されている設定値に応じて切り替わる。例えば、通常動作時にはメインクロックＸＩＮが選択され、バッテリー駆動時などにはサブクロックＸＣＩＮが選択される。
【００１７】
第２のクロック切替器１４は、ＰＬＬ回路１１の出力であるＰＬＬクロックＸＰＬＬおよび第１のクロック切替器１２の出力が入力され、両者のうち何れかを選択して出力する。第２のクロック切替器１４が、そのどちらを出力するかは、第２の選択レジスタ１５に記憶されている設定値に応じて切り替わる。即ち、第２のクロック切替器１４の出力クロックＭＣＬＫ（以下「選択クロック」と称する）は、メインクロックＸＩＮ、サブクロックＸＣＩＮ、ＰＬＬクロックＸＰＬＬのうちのいずれかである。
【００１８】
なお、第１の選択レジスタ１３並びに第２の選択レジスタ１５に記憶されている設定値は、ユーザの操作により入力設定されるものであってもよいし、当該ＭＣＵの動作状態に応じてＣＰＵ５０の制御により自動的に設定されるものであってもよい。
【００１９】
第２のクロック切替器１４が出力した選択クロックＭＣＬＫは、メイン分周部１６に入力される。メイン分周部１６は、分周比設定レジスタ１７および倍速設定レジスタ１８が記憶している設定値に応じて、互いに位相の揃ったＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳを生成して出力する。
【００２０】
以下、メイン分周部１６、分周比設定レジスタ１７、倍速設定レジスタ１８の詳細について説明する。図３は、メイン分周部１６の構成を示すブロック図である。メイン分周部１６は、分周カウンタ２０および第３のクロック切替器２１とから成る。分周カウンタ２０は選択クロックＭＣＬＫに対して分周を行い、選択クロックＭＣＬＫをＮ分周したＮ分周クロック（Ｎは整数）、２分周した２分周クロック、および１分周（即ち選択クロックＭＣＬＫそのもの）の１分周クロックの３種類のクロックを出力する。分周比設定レジスタ１７には、上記Ｎの値が設定値として記憶されている。上記の３つのクロックは、それぞれ第３のクロック切替器２１に入力される。
【００２１】
第３のクロック切替器２１は、ＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳとして、Ｎ分周クロック、２分周クロック、１分周クロックのうちの何れかをそれぞれ選択して出力する。Ｎ分周クロック、２分周クロック、１分周クロックは共に選択クロックＭＣＬＫを分周（１分周を含む）したものであるので、ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳとは、互いに位相が揃ったものとなる。
【００２２】
第３のクロック切替器２１において、ＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳのそれぞれとして、Ｎ分周クロック、２分周クロック、１分周クロックのうち何れのクロックが選択されるかは、ＭＣＵの動作モードに応じて切り替えられる。その動作モードの設定は倍速設定レジスタ１８に設定値として記憶されている。動作モードとＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳとの関係についての詳細は後述する。なお、当該倍速設定レジスタ１８に記憶される動作モードの設定値は、ユーザの操作により入力設定されるものであってもよいし、当該ＭＣＵの動作状態に応じてＣＰＵにより自動的に切り替えられるものであってもよい。
【００２３】
図４は、メイン分周部１６が有する分周カウンタ２０の回路構成の一例を示す図である。同図に示すように、分周カウンタ２０は、カウンタ回路２２（ここでは５ビットカウンタ）と一致回路２３とによって構成される。なお、図４中に示しているフリップフロップ素子は、Ｄフリップフロップである。また、上述したように、分周比設定レジスタ１７にはＮ分周クロックを得るための設定値Ｎ（ここではＮ＜２５）が記憶されている。
【００２４】
５ビットカウンタ２２は、入力される選択クロックＭＣＬＫのパルスをカウントし、一致回路２３は、そのカウント値と分周比設定レジスタ１７の設定値Ｎとを比較する。そして、カウント値と設定値Ｎとが一致した場合、Ｎ分周クロックの出力端子に１つのパルスを出力すると共に５ビットカウンタ２２のカウント値をリセットする。即ち、５ビットカウンタ２２は、分周比設定レジスタ１７に設定されたＮに基づく“Ｎ進カウンタ”として動作する。その結果、Ｎ分周クロックの出力端子からは、選択クロックＭＣＬＫをＮ分周したクロックが出力される。また、図４の如く、５ビットカウンタ２２の最下位ビット出力から２分周クロックが得られる。また、１分周クロックとしては選択クロックＭＣＬＫそのものが分周カウンタ２０から出力される。
【００２５】
ここで、本実施の形態に係るＭＣＵの動作モード並びに、それら動作モードの各々に対応した第３のクロック切替器２１の動作について説明する。図５は、本実施の形態に係るＭＣＵの動作モードの一例を示す図である。この例では、ＭＣＵの動作モードは、「ＸＩＮモード」、「ＸＩＮ／２モード」、「Ｎ分周モード」、「倍速モード」の４つに分類される。
【００２６】
以下、各動作モードについて説明する。まず、ＸＩＮモードは、第１のクロック切替器１２および第２のクロック切替器１４により、選択クロックＭＣＬＫしてメインクロックＸＩＮが選択される。そして、メイン分周部１６からは、選択クロックＭＣＬＫがそのままＣＰＵクロックＣＬＫＣＰＵ並びにバスクロックＣＬＫＢＵＳとして出力される。即ち、第３のクロック切替器２１の出力であるＣＰＵクロックＣＬＫＣＰＵ並びにバスクロックＣＬＫＢＵＳは、共に分周カウンタ２０から入力される１分周クロックである。なお、この動作モードでは、例えばＭＵＣの低消費電力機能が動作している場合など、選択クロックＭＣＬＫとしてメインクロックＸＩＮに代えてサブクロックＸＣＩＮが選択されるケースもあるが、メイン分周部１６の動作は同様であるので、説明は省略する。
【００２７】
ＸＩＮ／２モードは、選択クロックＭＣＬＫしてメインクロックＸＩＮが選択される。そして、第３のクロック切替器２１が出力するＣＰＵクロックＣＬＫＣＰＵ並びにバスクロックＣＬＫＢＵＳは、共に分周カウンタ２０から入力された２分周クロックである。即ち、ＣＰＵクロックＣＬＫＣＰＵ並びにバスクロックＣＬＫＢＵＳは、共にメインクロックＸＩＮを２分周したクロックでありる。この場合、上記ＸＩＮモードに比べ処理速度は遅くなるが消費電力が抑えられる。この動作モードでも、選択クロックＭＣＬＫによって、メインクロックＸＩＮに代えてサブクロックＸＣＩＮが選択されるケースもあるが、メイン分周部１６の動作は同様である。
【００２８】
Ｎ分周モードは、選択クロックＭＣＬＫしてＰＬＬクロックＸＰＬＬが選択される。そして、第３のクロック切替器２１が出力するＣＰＵクロックＣＬＫＣＰＵ並びにバスクロックＣＬＫＢＵＳは、共に分周カウンタ２０から入力されたＮ周クロックである。例えば、クロックを単に高速にしようとするならば、Ｎ分周モードでＮの値を小さくすればよい（例えばＮ＝１）。しかし、ＭＣＵ内で高速クロックに対応できない低速ブロックがある場合、Ｎの値は当該低速ブロックが対応できる程度にしか小さくできない。
【００２９】
ここで、本実施の形態においては、高速ブロックであるＣＰＵ５０およびＲＯＭ５２はＰＬＬクロックＸＰＬＬの２分周クロックに対応可能であり、且つ、低速ブロックである周辺機能部５３ａ，５３ｂがＰＬＬクロックＸＰＬＬの４分周クロックを超える速度には対応不可能であると仮定する。この場合、Ｎ分周モードにおいてＮの値を４よりも小さい値には設定することができない。つまり、ＣＰＵ５０の動作速度は、周辺機能部５３ａ，５３ｂにより律速されてしまう。本実施の形態では、Ｎ分周モードでは分周比設定レジスタ１７の設定値はＮ＝４に設定されるとする。また、低消費電力機能が動作している場合などは、Ｎの値はさらに大きい値に設定される。
【００３０】
倍速モードでは、選択クロックＭＣＬＫしてＰＬＬクロックＸＰＬＬが選択され、第３のクロック切替器２１は、ＣＰＵクロックＣＬＫＣＰＵとしては分周カウンタ２０から入力された２分周クロックを出力し、バスクロックＣＬＫＢＵＳとしてはＮ分周クロックを出力する。ここでも、Ｎ＝４に設定されるとする。即ち、倍速モードでは、ＣＰＵクロックＣＬＫＣＰＵは、ＰＬＬクロックＸＰＬＬの２分周クロック、バスクロックＣＬＫＢＵＳはＰＬＬクロックＸＰＬＬの４分周クロックとなる。よって、ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳは、互いに位相の揃った異なる周波数のクロックの組合せとなる。この例では、ＣＰＵ５０およびＲＯＭ５２は、周辺機能部５３ａ，５３ｂの２倍の速度のクロックにより動作することになる。
【００３１】
なお、以下の説明においては、説明の簡単のため、ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳとが同じ周波数の動作モード（ＸＩＮモード、ＸＩＮ／２モード、Ｎ分周モード）を広義に“通常モード”と称する。
【００３２】
図６は、第３のクロック切替器２１の構成の一例を示す回路図である。倍速設定レジスタ１８に記憶されている各動作モードに対応した設定値は、第３のクロック切替器２１に入力される。第３のクロック切替器２１はそれに応じて、出力するＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳのそれぞれを、１分周クロック、２分周クロック、Ｎ分周クロックの何れかに切り替える。図６の回路に対応した倍速設定レジスタ１８の設定値は、図５に示している。即ち、この例では、倍速設定レジスタ１８には３ビットの設定値データｂ１〜ｂ３が記憶されており、第３のクロック切替器２１は、ｂ１＝０，ｂ２＝０，ｂ３＝１のときはＸＩＮモード、ｂ１＝０，ｂ２＝１，ｂ３＝０のときＸＩＮ／２モード、ｂ１＝０，ｂ２＝０，ｂ３＝０のときＮ分周モード、ｂ１＝１，ｂ２＝０，ｂ３＝０のとき倍速モードとなるように動作する。
【００３３】
ここで、図６から分かるように、倍速設定レジスタ１８に保持される設定値ｂ１＝１のときは倍速モード、ｂ２＝０のときは通常モードになる。即ち、倍速設定レジスタ１８は、ＣＰＵクロックＣＬＫＣＰＵ（第１のクロック）とバスクロックＣＬＫＢＵＳ（第２のクロック）の周波数を互いに同じにするか異ならしめるかの設定値ｂ１が保持されるレジスタである。
【００３４】
図７は、図１に示したＢＩＵ５１の動作を説明するための図である。上述したように、ＢＩＵ５１は、ＣＰＵクロックＣＬＫＣＰＵに基づいてコードバスを制御してＲＯＭ５２にアクセスし、バスクロックＣＬＫＢＵＳに基づいて周辺バスを制御して周辺機能部５３ａ，５３ｂを制御する。まず図７における（ａ）は、通常モード（ＸＩＮモード、ＸＩＮ／２モード、Ｎ分周モード）における、コードバスサイクルと、周辺バスサイクルを示している。ＢＩＵ５１は、ＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳに同期した所定のタイミングでコードバスと周辺バスとのアイドル期間を交互に切り替えることで、コードバスと周辺バスの動作タイミング制御を行う。通常モードでは、ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳとが同じ周波数であるので、容易にアイドル時間の切り替え動作が可能である。
【００３５】
一方、図７における（ｂ）は、倍速モードにおける、コードバスサイクルと、周辺バスサイクルを示している。この場合も、ＢＩＵ５１は、ＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳに同期した所定のタイミングでコードバスと周辺バスとのアイドル期間を切り替えてそれぞれの動作タイミングの制御を行う。倍速モードでは、ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳとの周波数は異なるが、両クロックは位相が揃っているので、通常モードと同様に、容易にコードバスおよび周辺バスの動作タイミングの制御が可能である。また、ＢＩＵ５１がこのような動作タイミング制御を行うことにより、上記特許文献１のように、コードバスと周辺バスとの動作の同期をとるための回路を付加する必要はない。
【００３６】
さらに、ＢＩＵ５１において、ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳという異なる２つの周波数に基づく動作タイミングの制御を、コードバスと周辺バスとのいずれか片方ずつを有効する（他方はアイドル（無効）状態にする）ことにより実現しているので、当該動作タイミングの制御を容易に行うことができる。以上の説明では、倍速モードとしてＣＰＵクロックＣＬＫＣＰＵのバスクロックＣＬＫＢＵＳに対する周波数の比が２倍のケース（２倍速モード）について説明したが、ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳとの位相が揃っていれば、上記と同様の手法により、例えば当該周波数の比が３倍以上のケースであっても、容易に動作タイミングの制御を行うことが可能である。即ち、本発明に適用は、２倍速モードに限られるものではない。
【００３７】
本実施の形態における倍速モードでは、ＣＰＵクロックＣＬＫＣＰＵはＰＬＬクロックＸＰＬＬの２分周クロックであり、４分周クロックのバスクロックＣＬＫＢＵＳよりも高速である。よって、ＣＰＵ５０の高速動作が可能になる。一方、バスクロックＣＬＫＢＵＳの周波数はＮ分周モードと同様であるので、従来どおりの動作が可能である。つまり、倍速モードでは、周辺機能部５３ａ，５３ｂの動作に影響を与えることなく、ＣＰＵ５０の動作速度を上げることが可能である。言い換えれば、ＣＰＵ５０の動作速度が、周辺機能部５３ａ，５３ｂの動作速度により律速されることが防止されるので、ＭＣＵ全体の動作速度の向上に寄与できる。また、周辺機能部５３ａ，５３ｂとして高速動作が可能なものを使用せずにＣＰＵ５０の動作速度を上げることができることから、ＭＣＵ全体のコスト上昇を抑える効果もある。
【００３８】
＜実施の形態２＞
実施の形態１によれば、ＭＣＵの高速化を図ることができるが、ＭＣＵのクロック周波数を上げると、一般にＭＣＵ全体の消費電力が増大するという問題を伴う。その対策として、例えばスリープモードなど、ＭＣＵの動作が不要な場合に、クロックを停止させることが考えられる。それにより、低消費電力化を図ることができる。
【００３９】
図８は、実施の形態２に係るＭＣＵのクロック生成回路１０の構成を示すブロック図である。この図において図２と同様の機能を有する要素には同一符号を付しており、それらのここでの詳細な説明は省略する。同図に示すように、クロック生成回路１０は、クロック停止装置６０を有する。また、図示は省略するが、本実施の形態ではＣＰＵ５０は、クロック生成回路１０のクロック発生動作を停止させるためのクロック停止信号を出力する。クロック停止信号は、クロック生成回路１０のクロック停止装置６０に入力される。また、クロック停止装置６０には、メイン分周部１６が出力するバスクロックＣＬＫＢＵＳも入力される。
【００４０】
クロック停止装置６０は、第１のクロック切替器１２および第２のクロック切替器１４の入力側に配設される。そして、ＣＰＵクロックＣＬＫＣＰＵからのクロック停止信号に従って、第１のクロック切替器１２および第２のクロック切替器１４へのクロック入力（メインクロックＸＩＮ、サブクロックＸＣＩＮ、ＰＬＬクロックＸＰＬＬ）を停止させることで、クロック生成回路１０のクロック発生動作を停止させる。このとき、クロック停止装置６０は、バスクロックＣＬＫＢＵＳの１つの周期（単位周期）が終わるタイミングで、各クロックを停止させるよう動作する。
【００４１】
図８に示すように、クロック停止装置６０は、メインクロックＸＩＮ、サブクロックＸＣＩＮ、ＰＬＬクロックＸＰＬＬのそれぞれを停止させるための、クロック停止回路６１〜６３から構成される。図９は、それらクロック停止回路６１〜６３の回路構成の一例を示す図である。なお、ここでの説明においては、バスクロックＣＬＫＢＵＳの単位周期は、バスクロックＣＬＫＢＵＳのパルスの立上がりのタイミングで終了するものとする。
【００４２】
図９の回路によれば、クロック停止信号が“１（Ｈｉｇｈｔ）”のときは、入力クロックがそのまま出力クロックとして出力される。一方、クロック停止信号が“０（Ｌｏｗ）”に切り替わると、その後にバスクロックＣＬＫＢＵＳの立ち上がりのタイミングで、出力クロックが停止する。つまり、選択クロックＭＣＬＫは、バスクロックＣＬＫＢＵＳの単位周期が終わるタイミングまでメイン分周部１６に供給された直後に停止する。従って、クロックを停止した状態から復帰するときには、バスクロックＣＬＫＢＵＳの単位周期の先頭からクロックの生成が開始される。
【００４３】
その結果、クロック生成の停止／開始の切り替わり時においても、一定の長さの周期を有するＣＰＵクロックＣＬＫＣＰＵ並びにバスクロックＣＬＫＢＵＳが生成される。従って、ＭＣＵの低消費電力化に寄与できると共に、クロック生成の停止／開始の切り替わり時においてＭＣＵの動作が不安定になることが防止される。
【００４４】
＜実施の形態３＞
上述したように、「倍速モード」では、選択クロックＭＣＬＫとしてＰＬＬクロックＸＰＬＬが選択される。ＭＣＵの高速化を図る上で、メインクロックＸＩＮ、サブクロックＸＣＩＮ、ＰＬＬクロックＸＰＬＬのうちの最も高速なものを使用することが有効であるためである。
【００４５】
しかし、例えばユーザによる誤設定や、外部からのノイズの影響に起因するＣＰＵ５０の誤動作によって、選択クロックＭＣＬＫがＰＬＬクロックＸＰＬＬでない場合にもメイン分周部１６が倍速モード時の動作を行うことが考えられる。そこで、本実施の形態においては、選択クロックＭＣＬＫがＰＬＬクロックＸＰＬＬである場合にのみ、倍速モードに切り替わるクロック生成回路１０を提案する。
【００４６】
図１０は、本実施の形態に係るクロック生成回路１０の構成を示すブロック図である。ここでも図２と同様の機能を有する要素には同一符号を付している。また、本実施の形態においては、第２の選択レジスタ１５の設定値は、第２のクロック切替器１４がＰＬＬクロックＸＰＬＬを選択するように動作させる場合は“１”、それ以外は“０”であるとする。また、倍速設定レジスタ１８の設定値は、図５に示したものと同様であるとする。
【００４７】
ＡＮＤ回路６５には、第２の選択レジスタ１５の設定値と、倍速設定レジスタ１８の設定値のうち倍速モードか否かを示す設定値ｂ１とが入力され、その論理演算結果をメイン分周部１６に出力する。ＡＮＤ回路６５の出力は、図６に示した第３のクロック切替器２１に入力される設定値ｂ１の値として入力される。それ以外の部分に関しては実施の形態１と同様である。
【００４８】
従って、第３のクロック切替器２１が倍速モードに切り替わるのは、第２の選択レジスタ１５の設定値が“１”、且つ、倍速設定レジスタ１８の設定値ｂ１の値が“１”である場合のみである。言い換えれば、たとえ倍速設定レジスタ１８の設定値が倍速モードの設定であったとしても、第２の選択レジスタ１５の設定値が“１”でない限り、メイン分周部１６は通常モードの動作を行う。つまり、第２の選択レジスタ１５およびＡＮＤ回路６５は、倍速設定レジスタ１８に保持されている設定値ｂ１（ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳとを周波数を互いに同じにするか異ならしめるかの設定値）に関わらず、ＣＰＵクロックＣＬＫＣＰＵとバスクロックＣＬＫＢＵＳとを同じ周波数にする手段として機能している。
【００４９】
本実施の形態によれば、第２のクロック切替器１４が選択クロックＭＣＬＫとしてＰＬＬクロックＸＰＬＬを選択している場合に限り、倍速設定レジスタ１８はメイン分周部１６に倍速モードの動作を行わせることが可能である。つまり、選択クロックＭＣＬＫがＰＬＬクロックＸＰＬＬでない場合に、メイン分周部１６が倍速モード時の動作を行うことが無く、ユーザによる誤設定や、ノイズによる誤動作の影響を抑えることができる。
【００５０】
＜実施の形態４＞
クロック生成回路１０に外部から入力される（即ち、外部クロックである）基準クロックとしてのメインクロックＸＩＮの発振が停止した場合、ＰＬＬ回路１１は動作の基準となるクロックの入力が無くなるため、当該ＰＬＬ回路１１の動作が不安定になることが考えられる。その場合、選択クロックＭＣＬＫとしてＰＬＬクロックＸＰＬＬが選択された状態では、ＭＣＵの誤動作を引き起こす原因となるので、選択クロックＭＣＬＫをＰＬＬクロックＸＰＬＬ以外の信号に切り替えると共に、動作モードを倍速モード以外のものにする必要がある。また、不用意にＣＰＵクロックＣＬＫＣＰＵおよびバスクロックＣＬＫＢＵＳが停止してしまうことも、誤動作を引き起こし、ＭＣＵの動作が不安定になる要因である。
【００５１】
図１１は、本実施の形態に係るクロック生成回路１０の構成を示すブロック図である。ここでも図２と同様の機能を有する要素には同一符号を付している。クロック生成回路１０は、発振停止検出器７１、リングオシレータ７２および第４のクロック切替器７３（基準クロック切替回路）から構成される発振監視装置７０を有する。外部クロックであるメインクロックＸＩＮが通常どおり入力されている状態では、リングオシレータ７２は動作せず、このとき第４のクロック切替器７３はメインクロックＸＩＮを第１のクロック切替器１２に出力する。発振停止検出器７１は、メインクロックＸＩＮをモニタして、メインクロックＸＩＮの停止を検出する。
【００５２】
発振停止検出器７１によって、外部クロックであるメインクロックＸＩＮの停止が検出されると、発振監視装置７０は次のような動作を行う。即ち、リングオシレータ７２はメインクロックＸＩＮに切り替わって発振を開始し、メインクロックＸＩＮに代わる新たな基準クロック（第３のクロック）を出力する。第４のクロック切替器７３は、リングオシレータ７２が出力する基準クロックを第１のクロック切替器１２に出力するように切り替わる。さらに、発振停止検出器７１は、第１のクロック選択レジスタ１３、第２の選択レジスタ１５を制御して、選択クロックＭＣＬＫとしてリングオシレータ７２が出力する基準クロックが選択されるようにする（即ち、第２のクロック切替器１４がＰＬＬクロックＸＰＬＬを選択しないようにする）。それと共に、発振停止検出器７１は、倍速設定レジスタ１８を制御してメイン分周部１６が倍速モードで動作しないようにする。
【００５３】
即ち、本実施の形態によれば、クロック生成回路１０は、外部から入力されるメインクロックＸＩＮが停止した場合でも、リングオシレータ７２が出力する基準クロックに基づいてＣＰＵクロックＣＬＫＣＰＵ、バスクロックＣＬＫＢＵＳを生成する。従って、ＣＰＵ５０およびＢＩＵ５１の誤動作を防止でき、安定したＭＣＵの動作を行うことが可能になる。
【００５４】
【発明の効果】
本発明によれば、クロック生成回路は、第１および第２のクロックの周波数を互いに同じにするか異ならしめるかの設定が保持されるレジスタを備え、当該レジスタに保持された設定に応じて、第１および第２のクロックの位相は揃えたままで周波数を切り替える。即ち、互いに位相が揃った異なる周波数の第１および第２のクロックを生成可能である。よって、例えば周辺装置が低速ブロックでＣＰＵが高速ブロックの場合に、第１のクロックを第２のクロックよりも高速にすることで、周辺装置の正常な動作を確保しつつＣＰＵの高速化を図ることができる。言い換えれば、ＣＰＵの動作速度が、周辺回路の動作速度により律速されることが防止されるので、ＭＣＵ全体の動作速度の向上に寄与できる。また、ＭＣＵを構成する要素全てを高周波数のクロックに対応したものにすることなく、ＣＰＵの動作速度を上げることができることから、ＭＣＵ全体のコスト上昇を抑える効果も得られる。
【００５５】
さらに、第１および第２のクロックの周波数が互いに異なる場合においても、両者の位相は揃ったままであるので、例えばＢＩＵにおいて、容易に動作タイミング制御が可能である。例えば、コードバスと周辺バスとの動作の同期をとるための回路を付加する必要はない。
【図面の簡単な説明】
【図１】実施の形態１に係るマイクロコントローラ（ＭＣＵ）の要部構成を示すブロック図である。
【図２】実施の形態１に係るクロック生成回路の構成を示すブロック図である。
【図３】実施の形態１に係るクロック生成回路のメイン分周部の構成を示すブロック図である。
【図４】実施の形態１に係るクロック生成回路のメイン分周部が有する分周カウンタの回路構成の一例を示す図である。
【図５】実施の形態１に係るＭＣＵの動作モードの一例を示す図である。
【図６】実施の形態１に係るクロック生成回路のメイン分周部が有する第３のクロック切替器の回路構成の一例を示す図である。
【図７】実施の形態１に係るＭＣＵが有するＢＩＵの動作を説明するための図である。
【図８】実施の形態２に係るクロック生成回路の構成を示すブロック図である。
【図９】実施の形態２に係るクロック生成回路のクロック停止回路の回路構成の一例を示す図である。
【図１０】実施の形態３に係るクロック生成回路の構成を示すブロック図である。
【図１１】実施の形態４に係るクロック生成回路の構成を示すブロック図である。
【符号の説明】
ＸＩＮ  メインクロック、ＸＣＩＮ  サブクロック、ＸＰＬＬ  ＰＬＬクロック、ＣＬＫＣＰＵ  ＣＰＵクロック、ＣＬＫＢＵＳ  バスクロック、ＭＣＬＫ  選択クロック、１０  クロック生成回路、１１  ＰＬＬ回路、１２  第１のクロック切替器、１３第１の選択レジスタ、１４  第２のクロック切替器、１５  第２の選択レジスタ、１６  メイン分周部、１７  分周比設定レジスタ、１８  倍速設定レジスタ、２０  分周カウンタ、２１  第３のクロック切替器、２２  ５ビットカウンタ、２３  一致回路、５０  ＣＰＵ、５１  ＢＩＵ、５２  ＲＯＭ、５３ａ，５３ｂ  周辺機能部、６０  クロック停止装置、６１  クロック停止回路、６５  ＡＮＤ回路、７０  発振監視装置、７１  発振停止検出器、７２  リングオシレータ、７３  第４のクロック切替器。
【図１】
2004310283.tif 000003
【図２】
2004310283.tif 000004
【図３】
2004310283.tif 000005
【図４】
2004310283.tif 000006
【図５】
2004310283.tif 000007
【図６】
2004310283.tif 000008
【図７】
2004310283.tif 000009
【図８】
2004310283.tif 000010
【図９】
2004310283.tif 000011
【図１０】
2004310283.tif 000012
【図１１】
2004310283.tif 000013