(57)【要約】【課題】所定のイベントが発生したときに所望の処理をするまでの時間を短縮できる半導体集積回路を提供する。【解決手段】第１の機能ブロック（１，２）と、第１の機能ブロックに例外的処理を要求すべき事象（イベント）の発生を検出して対応する第１の機能ブロックに例外的処理を要求するイベント検出回路（４）と、第１の機能ブロックに対して例外的処理を要求すべき事象を発生させる第２の機能ブロック（７，８，９，１０）と、第１の機能ブロック及びイベント検出回路に供給される第１のシステムクロック信号（φＢ）の周波数を可変に選択可能にすると共にイベント検出回路（４）による所定のイベントの検出に基づいて周波数の選択状態を所定の状態に強制させる選択制御手段（１３１，１３２）とを有する。選択制御手段はクロック制御回路（１３）が有する。【選択図】　　　　図１
2004094930.tif 000002
【特許請求の範囲】
【請求項１】
第１システムクロック信号に同期して、例外処理とその他の処理とを実行する第１機能ブロックと、
イベントの発生を検出し、上記第１機能ブロックに対して、例外処理の実行を要求する要求信号を出力するイベント検出回路と、
上記イベントを発生する第２機能ブロックと、
上記第１システムクロック信号の周波数を変更する制御回路であって、上記要求信号に応答して、上記第１システムクロック信号を所定の周波数に変更する制御回路と、を具備することを特徴とする半導体集積回路。
【請求項２】
請求項１において、
上記制御回路は、
第１記憶領域と第２記憶領域とを有する第１レジスタ手段と、
上記所定の周波数を含む互いに異なる周波数の複数のクロック信号を受け、上記第１記憶領域が第１状態にされているとき、上記所定の周波数のクロック信号を、上記第１システムクロック信号として出力し、上記第１記憶領域が第２状態にされているとき、上記第２記憶領域に保持されている情報に従って、上記複数のクロック信号の内の一つを、上記第１システムクロック信号として出力するセレクタとを含むことを特徴とする半導体集積回路。
【請求項３】
請求項２において、
上記第１機能ブロックは、上記例外処理からの復帰に際して、上記第１記憶領域を上記第２状態に設定可能にする中央処理装置を含むことを特徴とする半導体集積回路。
【請求項４】
請求項３において、
上記第１機能ブロックは、上記例外処理の終了に応答して、終了信号を出力するデータトランスファーコントローラを含み、上記終了信号によって上記第１記憶領域が上記第２状態へ設定されることを特徴とする半導体集積回路。
【請求項５】
例外処理の要求に応答するために、上記例外処理に対応するメモリ内のベクタ領域から情報を取りこみ、第１システムクロック信号に従って動作する中央処理装置装置と、
イベントの発生を検出し、上記中央処理装置へ例外処理の要求を出力するイベント検出回路と、
上記第１システムクロック信号の周波数を指定する情報を保持する第１レジスタ手段と、
第２システムクロック信号を受け、内部クロック信号を形成するクロック信号形成回路を有し、形成された内部クロック信号に従って動作する周辺回路と、
上記周辺回路内のクロック信号形成回路による内部クロック信号の形成を制御する情報を保持する第２レジスタ手段とを具備し、
上記第１レジスタ手段及び上記第２レジスタ手段にセットされるべき情報は、上記ベクタ領域に対応する上記メモリ内の領域に保持され、上記例外処理が要求されたときに上記情報が上記第１レジスタ手段及び上記第２レジスタ手段へセットされることを特徴とする半導体集積回路。
【請求項６】
請求項５において、
上記中央処理装置は、上記例外処理の実行前に、上記第１レジスタ手段及び上記第２レジスタ手段に保持されている情報を、上記メモリのスタック領域へ退避し、
上記例外処理の完了後、上記情報は、上記ベクタ領域に対応する上記メモリ内の上記領域から取り出され、上記第１レジスタ手段及び上記第２レジスタ手段へセットされることを特徴とする半導体集積回路。
【請求項７】
第１クロック信号に従って動作し、第１の処理と例外処理とを実行するＣＰＵと、
イベントの検出によって、上記ＣＰＵに対して、例外処理の実行を要求する要求信号を発生するイベント検出回路と、
各々に共通に供給された第２クロック信号に従って動作する複数の周辺モジュールと、
所定のクロック信号を受けるクロック制御回路とを具備し、
上記クロック制御回路は、レジスタ内の制御情報に応答して、上記所定のクロック信号を可変に分周して可変周波数を有する上記第１クロック信号を発生し、
上記クロック制御回路は、上記所定のクロック信号に基づいて１つの周波数を有する上記第２クロック信号を発生し、
上記第１クロック信号の上記周波数は可変にされ、上記２クロック信号の上記周波数は可変にされず、
さらに、上記クロック制御回路は、上記イベント検出回路が発生する要求信号に応答して上記第１クロック信号の周波数を変更する制御回路を有することを特徴とする半導体集積回路。
【請求項８】
請求項７において、
上記第１クロック信号は、上記ＣＰＵが上記第１処理を実行しているとき、第１周波数を有し、
上記イベントの検出に応答して、上記レジスタ内の制御情報は、上記検出されたイベントのための制御情報に変更され、
上記第１クロック信号は、上記例外処理の間、第２周波数を有し、
上記例外処理の完了に応答して、上記制御情報は上記レジスタへ再格納され、
上記１クロック信号は、上記例外処理の完了の後、上記第１周波数を有することを特徴とする半導体集積回路。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、クロック信号に同期動作される複数個の機能ブロックを備えた半導体集積回路に係り、低消費電力を必要とするシングルチップマイクロコンピュータに利用して、特に有効な技術に関するものである。
【０００２】
【従来の技術】
平成６年３月に株式会社日立製作所から発行された『Ｈ８／３０４８シリーズハードウェアマニュアル』のＰ６０７乃至Ｐ６３２に記載されているように、シングルチップマイクロコンピュータの各機能ブロックは、システムクロック信号φを基準として動作する。かかるシステムクロック信号φは、シングルチップマイクロコンピュータに設けられたところの外部クロック入力端子（ＥＸＴＡＬ）に入力される外部クロック、又は、マイクロコンピュータに設けられたところの発振端子（ＥＸＴＡＬ、ＸＴＡＬ）に接続される水晶又はセラミックなどの振動子によって生成される原発振から生成される。また、マイクロコンピュータ内の各機能ブロックに固有のクロック信号を供給する例が特開平３−２８６２１３号に記載されている。また、特開平５−８１４４７号公報には、ＣＰＵ（中央処理装置）とその周辺回路を含むマイクロコンピュータにおいて夫々の周辺回路に、クロック信号の分周器とクロック選択手段を配置した技術が開示されている。特開平３−５８２０７には発振回路の出力を分周回路で分周し、分周されたクロック信号から一つを選択してシステムクロック信号とする技術が開示されている。
【０００３】
【発明が解決しようとする課題】
本発明者はシングルチップマイクロコンピュータのような半導体集積回路のシステムクロック信号について以下の検討を行った。
【０００４】
システムクロック信号φとしては、原発振と同等の周波数とするか、或いは所謂ギア機能すなわち原発振を分周して得た周波数とするかを選択することができる。そのようなシステムクロック信号はＣＰＵ（中央処理装置）やその周辺回路などに共通に供給される。上記ギア機能においては、シングルチップマイクロコンピュータの低消費電力化の観点から、ＣＰＵの処理すべき内容に応じて、システムクロック信号の周波数を切り換えることが望ましい。また、システムクロック信号として、原発振を定常的に２分周したものを選択すると考えた場合と、原発振の発振周波数を予め１／２とし、それをシステムクロック信号とした（当該原発振と同一の周波数）場合とを比べると、原発振器の動作周波数は、前者が後者に対して２倍になり、原発振器での消費電流は前者が後者の２倍になる。
【０００５】
一方、ＣＰＵの処理すべき内容に応じて、動作中にシステムクロック信号の周波数を切り換える場合には、次の問題点が生じてしまう。例えばシステムクロックφがシリアルコミュニケーションインタフェース（ＳＣＩ）の基準クロックとして使用されていると、システムクロック信号の分周比が１／２にされた場合、ＳＣＩの送受信のビットレート若しくはボーレートが１／２になってしまい、特に、調歩同期式通信の場合などには通信できなくなってしまう。このため、システムクロック信号の周波数を切り換える際には、切り換え後のシステムクロック信号に対応するように、ＳＣＩのビットレート若しくはボーレートの設定を変更しなければならない。したがってそのようなシステムクロック信号周波数の切換えはＳＣＩの動作停止中に行わなければならない。
【０００６】
同様に、一般のタイマなどでも、システムクロック信号がクロックソースとして使用されている場合、システムクロック信号の周波数を半分にすると、その周期が２倍になってしまうので、タイマに対しても設定を変更してやらなければ絶対的な計時時間が相違されることになってしまう。ＳＣＩやタイマ以外の殆どの周辺回路若しくは周辺機能に対しても同様の再設定処理を行わなければならず、それに要するソフトウェアの負担は無視し得るほど少なくはない。
【０００７】
更に、システムクロック信号の分周比を１／２から１／１に変更してシステムクロック信号の周波数を高くする場合も事情は同じである。特に、高速への変更は、ＣＰＵに対しての処理として高速処理が発生した場合であるが、かかる場合に、周辺機能のほとんどに、上記設定変更を行うのでは、時間的な無駄が大きく、高速処理が必要な状況に対応できなくなってしまう。
【０００８】
一方、マイクロコンピュータの各機能ブロックに、固有のクロック信号を供給する上述の特開平３−２８６２１３号では、各機能ブロックに供給されるクロック信号の分周比を独立に設定できるようになっている。したがって、一つの機能ブロックに対するクロック信号の分周比の変更が、他の機能ブロックに影響を与えることはなくなり、ソフトウェアの負担も少なくなる。
【０００９】
しかしながら、各機能ブロックに独立したクロック信号を供給する場合、必然的に、クロック配線の長さの合計、言い換えるならば、容量が大きくなってしまう。消費電流は、信号線の容量（Ｃ），電圧（Ｖ），周波数（ｆ）の積の総和、即ち、ΣＣ・Ｖ・ｆと表現されるから、かかるクロック配線で消費される消費電流もこれに比例して大きくなってしまう。クロック信号は、マイクロコンピュータ内部で最も周波数（ｆ）の高い信号であり、斯る消費電流は無視できない。少なくとも、低消費電力化を図るためには得策ではない。
【００１０】
また、各機能ブロックが任意の分周比で動作している場合、相互間のインタフェースで、一方のクロック信号の立ち上がり変化点が、他方のクロック信号のどの相になっているか不明であり、信号のセットアップ時間やホールド時間の確保が困難になってしまい、必然的に非同期的なインタフェースとならざるを得ない。かかる非同期的なインタフェースでは、論理設計が複雑であり、また、斯るインタフェースに必要な論理規模も大きくなってしまう。
【００１１】
更に、クロック信号の切り換えを専らソフトウェアによって行うと、所定のイベント例えばリセットや所定の割り込み要求などが発生して、ＣＰＵの高速処理を必要とする場合に、斯るイベントを割込として認識し、割込例外処理を実施し、割込処理ルーチンの中で、システムクロック信号の分周比を切り換えた後に、所望の処理をすることになってしまう。これでは、前記イベントが発生してから、所望の処理をするまでの時間が長くなってしまい、都合が悪い。
【００１２】
本発明の目的はシステムクロック信号に関し低消費電力化を実現できる半導体集積回路を提供することにある。
【００１３】
本発明の別の目的はソフトウェアの負担を小さくしてＣＰＵ等の内蔵機能ブロックの動作速度を可変にできる半導体集積回路を提供することにある。
【００１４】
本発明の更に別の目的は、所定のイベントが発生したときに所望の処理をするまでの時間を短縮できる半導体集積回路を提供することにある。
【００１５】
本発明のその他の目的は、供給されるシステムクロック信号の周波数が相違される機能ブロック間でのインタフェースを容易化できる半導体集積回路を提供することにある。
【００１６】
本発明の前記並びにその他の目的と新規な特徴は本明細書の記述及び添付図面から明らかになるであろう。
【００１７】
【課題を解決するための手段】
本願において開示される発明のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【００１８】
〔１〕半導体集積回路は、発振器（１２）からの出力に基づいて形成された周波数一定の第２のシステムクロック信号（φＳ）を複数個の機能ブロックに共通に供給するための第２のクロック信号配線（Ｌ２）と、上記発振器（１２）からの出力に対して分周比が選択可能にされ、周波数が上記第２のシステムクロック信号以下とされた第１のシステムクロック信号（φＢ）を形成するクロック制御回路（１３）と、上記クロック制御回路（１３）で形成される第１のシステムクロック信号を所定の機能ブロックに供給するための第１のクロック信号配線（Ｌ１）と、を備える。
【００１９】
〔２〕上記第１のクロック信号配線を介して第１のシステムクロック信号が供給される機能ブロックは、バスマスタ（１，２）とされる。マイクロコンピュータ等のデータプロセッサにおいて、バスマスタとして動作するＣＰＵは一般的に命令及びデータフェッチのためのバスサイクルを頻繁に起動する。半導体集積回路を低消費電力化するにはそれらバスマスタには分周比が可変のシステムクロック信号を供給することが得策だからである。
【００２０】
〔３〕上記第２のクロック信号配線を介して第２のシステムクロック信号が供給される機能ブロックは、バススレーブ（７，８，９，１０）とされる。バスマスタのシステムクロック信号の周波数を変更しても、シリアルコミュニケーションインタフェースのビットレート若しくはボーレート、そしてタイマの計時周期などを一定に保つようにして、それら周辺機能ブロックの設定変更を要しないようにするためである。
【００２１】
上記した手段によれば、周辺回路若しくはバススレーブのような機能ブロックへ供給される第２のシステムクロック信号（周辺クロック信号とも記す）とは独立に、バスマスタのような機能ブロックへ供給される第１のシステムクロック信号（バスマスタクロック信号とも記す）の分周比を可変にすることにより、ＣＰＵなどの動作状態に応じて、上記バスマスタクロック信号の分周比を大きくして、低消費電力化を実現することができる。
【００２２】
また、上記周辺クロック信号は固定にできるので、上記バスマスタクロック信号を変更しても、シリアルコミュニケーションインタフェースのビットレート乃至ボーレートや、タイマの周期などは一定に保たれるため、ＣＰＵなどへのシステムクロック信号の周波数変更によってそれらの周辺機能ブロックの設定を変更したりすることを要しない。
【００２３】
そして、上記周辺クロック信号などのクロック信号を複数の機能ブロックに共通なクロック信号とすることは、各機能ブロックに独立のクロック信号を供給するよりも、クロック配線の配線容量を小さくし、消費電力を小さくさせる。
【００２４】
〔４〕上記クロック制御回路（１３）には、第１のクロック信号（φＢ）の分周比を選択するための情報が上記バスマスタによって設定可能にされたレジスタ手段（１３２）を備えることができる。ＣＰＵなどのバスマスタによって分周比の選択が任意に行えるようにするためである。
【００２５】
〔５〕上記第１のクロック信号配線を介して第１のシステムクロック信号（φＢ）が供給されバスマスタとして動作する機能ブロックが接続される第１の内部データバス（ＩＤＢ）と、上記第２のクロック信号配線を介して第２のシステムクロック信号（φＳ）が供給され、バススレーブとして動作する機能ブロックが接続される第２の内部データバス（ＰＤＢ）とに、データバスは分離される。第１の内部データバスに接続されたバスマスタによって第２の内部データバスに接続されたところのバススレーブがアクセスされる場合、そのアクセスに応じて上記第１の内部データバスを第２の内部データバスに接続するバスコントローラ（３）が備えられる。第２の内部データバスには、接続された機能ブロックの出力が全て高インピーダンス状態のときに当該バスの状態を保持し、上記接続された機能ブロックがリードまたはライトされるときには、それに従ってバスの状態が変わるのを許容するホールド回路（ＨＤ１，ＨＤ２）が設けられる。ＣＰＵ等のバスマスタのように頻繁にバスサイクルを起動する機能ブロックを、バススレーブとは別のデータバスに接続することにより、頻繁にアクセスされるデータバスの負荷が小さくされる。アクセスに利用される頻度が相対的に低いデータバスについては、そこにおけるデータをホールド回路によって保持することにより、当該データバス上での充放電回数を減らして低消費電力を図る。このように、周辺機能ブロックはバスマスタに比較して動作頻度が低いので、所定の信号が入力された時のみ動作させるようにし、また、必要に応じてその動作が禁止可能にされることにより、半導体集積回路は一層低消費電力化される。このとき、動作禁止状態の周辺機能ブロックにおいて内部状態を保持することにより、動作許可後に直ちに動作を再開できる。
【００２６】
〔６〕上記第１のシステムクロック信号（φＢ）が供給される機能ブロックは当該第１のシステムクロック信号から第１のノーオーバラップの２相クロック信号（φ１Ｂ，φ２Ｂ）を形成するノーオーバラップ生成回路を供え、第２のシステムクロック信号（φＳ）が供給される機能ブロックは当該第２のシステムクロック信号から第２のノーオーバラップの２相クロック信号（φ１Ｓ，φ２Ｓ）を形成するノーオーバラップ生成回路（７００）を供え、第１のノーオーバラップ２相クロック信号（φ１Ｂ，φ２Ｂ）は第２のノーオーバラップ２相クロック信号（φ１Ｓ，φ２Ｓ）と部分的に位相が一致され（例えば図２３におけるφ１Ｓとφ２Ｂの立ち上がりタイミング）、第２のシステムクロック信号が供給される機能ブロック（例えば図１９のバススレーブ）は第２のノーオーバラップ２相クロック信号において上記位相が一致するタイミング（例えば図２３のステート３におけるφ１Ｓの立ち上がり）に同期して、第１のシステムクロック信号が供給される機能ブロック（例えば図１９のバスマスタ）へ供給すべき信号を変化させる。このインタフェース仕様に従えば、システムクロック信号が相違される機能ブロック間で、データが出力されてからそれを入力し、ラッチするまでに第２のシステムクロック信号（φＳ）の１周期以上の期間を確保できる。これにより、システムクロック信号の周波数が相違される機能ブロック間でのインタフェースを容易化する、換言すればインタフェースのためのタイミング設計を容易化する。このように、バスマスタクロック信号を、周辺クロック信号より、常に、同等か遅くし、バスマスタと周辺機能ブロック間のインタフェース信号を、バスマスタクロック信号と周辺クロック信号の例えば共通の変化点に同期させることにより、バスマスタと周辺機能ブロック間のインタフェースを、容易な同期インタフェースとすることを可能にする。ひいては、半導体集積回路の論理規模を縮小し、製造費用の低減及び低消費電力化に貢献する。
【００２７】
〔７〕上記第１のシステムクロック信号（φＢ）が供給される機能ブロックは当該第１のシステムクロック信号から第１のノーオーバラップの２相のクロック信号（φ１Ｂ，φ２Ｂ）を形成するノーオーバラップ生成回路を供え、第２のシステムクロック信号（φＳ）が供給される機能ブロックは当該第２のシステムクロック信号から第２のノーオーバラップの２相のクロック信号（φ１Ｓ，φ２Ｓ）を形成するノーオーバラップ生成回路（７００）を供える。上記第１のノーオーバラップの２相のクロック信号の第１相目のクロック信号（例えば図２０のφ１Ｂ）のローレベル期間は第２のノーオーバラップの２相のクロック信号の第１相目のクロック信号（例えば図２０のφ１Ｓ）のローレベル期間と一致され、第１のノーオーバラップ２相クロック信号の第２相目のクロック信号（例えば図２０のφ２Ｂ）のハイレベル期間は第２のノーオーバラップの２相のクロック信号の第２相目のクロック信号（例えば図２０のφ２Ｓ）のハイレベル期間と一致される。各機能ブロックの出力と入力とは第１相目又は第２相目の何れのクロック信号に同期させても、システムクロック信号が相違される機能ブロック間で、データが出力されてからそれを入力し、ラッチするまでは第２のシステムクロック信号（φＳ）の１周期以上の期間を確保できる。これが、システムクロック信号の周波数の相違される機能ブロック間でのインタフェースを容易化する、換言すればインタフェースのためのタイミング設計を容易化する。
【００２８】
〔８〕上記第１のシステムクロック信号（φＢ）と第２のシステムクロック信号（φＳ）とを選択的に外部に出力する出力回路（例えば図２６、図２７のＩＯＰ６０，ＩＯＰ６１）と、上記出力回路からの出力が非選択状態にされているとき、当該出力回路のクロック入力配線（１３１０，１３１１）を所定レベルに強制する論理回路（１３００，１３０１，１３０７）とが設けられている。システムクロック信号の外部出力を要しない場合には上記クロック入力配線における充放電が抑止されて低消費電力に寄与する。
【００２９】
〔９〕機能ブロック毎に個別的に内部クロック信号等の生成を抑止するという別の観点による本発明に係る半導体集積回路は、発振器（１２）からの出力に基づいて形成されるシステムクロック信号（φＳ）を受け該システムクロック信号に同期する複数相の内部クロック信号（φ１Ｓ，φ２Ｓ）を形成し、形成された内部クロック信号に従って動作する複数個の機能ブロック（７，８，９，１０）と、上記機能ブロック単位で内部クロック信号の形成を禁止させる情報を書き換え可能に保持するためのレジスタ手段（１３３）とを供え、上記機能ブロックは、上記レジスタ手段からの対応情報によって内部クロック信号の形成が禁止されるときに当該内部クロック信号の変化を一定の状態に停止させて内部状態を保持させる第１の内部クロック制御手段（７００）を備える。利用しない内蔵の機能ブロック内では内部クロック信号の変化が停止され、クロック信号の無駄な変化による充放電電流による電力消費を抑える。内部クロック信号停止状態において内部状態を保持させることは、動作再開が選択されたときに内部回路を改めて設定する手間を省く。
【００３０】
〔１０〕上記機能ブロックは更に、自分自身の動作が選択されることによって上記複数相の内部クロック信号（φ１Ｓ，φ２Ｓ）から内部タイミング信号（φ１−ＰＷＭ，φ２−ＰＷＭ）を形成し、自分自身の動作が非選択とされることによって内部タイミング信号の変化を一定の状態に停止させて内部状態を保持させる第２の内部クロック制御手段（７１０）を備える。動作の非選択状態において内部タイミング信号（φ１−ＰＷＭ，φ２−ＰＷＭ）を受ける回路での電力消費が抑止される。動作非選択状態において内部タイミング信号の変化が停止されたときに内部状態を保持させることは、動作再開のときに内部回路を改めて設定し直す手間を省く。
【００３１】
〔１１〕上記内部タイミング信号はノーオーバラップの２相のタイミング信号（φ１−ＰＷＭ，φ２−ＰＷＭ）であり、当該タイミング信号を受けて動作される回路は、その第１相目のタイミング信号を受けてダイナミックに動作されるダイナミック回路（２３）と、該ダイナミック回路に直列的に接続され第２相目のタイミング信号を受けてスタティックに動作されるスタティック回路（２１）とを含んで構成される。前記ノーオーバラップの２相のタイミング信号（φ１−ＰＷＭ，φ２−ＰＷＭ）のうちデューティ比の大きな相のタイミング信号はダイナミック回路に、デューティ比の小さい相のタイミング信号はスタティック回路に供給することにより、ダイナミック回路の出力負荷容量による情報保持時間が有限であっても当該ダイナミック回路によって情報を保持すべき期間を短くして、システムクロック信号の周波数を低減可能な範囲を広げることができる。さらに双方をスタティックラッチ回路で構成する場合に比べて回路の物理的規模を縮小できる。
【００３２】
〔１２〕イベント検出に基づいてシステムクロック信号の周波数を強制的に変更するという別の観点による本発明に係る半導体集積回路は、単数又は複数個の第１の機能ブロック（１，２）と、第１の機能ブロックに対して例外的処理を要求すべき内外の事象（イベント）の発生を検出して対応する第１の機能ブロックに例外的処理を要求する信号を出力するイベント検出回路（４）と、第１の機能ブロックに対して例外的処理を要求すべき事象を発生させる単数又は複数の第２の機能ブロック（７，８，９，１０）と、上記第１の機能ブロック及びイベント検出回路に供給される第１のシステムクロック信号（φＢ）の周波数を可変に選択可能にすると共に、上記イベント検出回路（４）による所定のイベントの検出に基づいて周波数の選択状態を所定の状態に強制させる選択制御手段（１３１，１３２）と、を有する。所定のイベントが発生したとき、設定されているシステムクロック信号周波数が低くても、選択制御手段がシステムクロック信号周波数の選択状態を所定の状態例えば最高周波数選択状態に強制することができ、これによって、所定のイベントが発生したときに所望の処理をするまでの時間が短縮される。
【００３３】
〔１３〕上記選択手段は、周波数選択のための制御情報を書き換え可能に保持する第１のレジスタ手段（１３２）と、この第１のレジスタ手段が保持する制御情報に従って第１のシステムクロック信号の周波数を選択するセレクタ（１３１）とを有し、第１のレジスタ手段は、第１の状態（＝”０”）において特定周波数（φＯＳＣ）の選択を指示すると共に上記イベント検出回路による所定のイベントの検出に基づいて上記第１の状態に強制される第１の記憶領域（ＭＳＭＥ）と、当該第１の記憶領域における第２の状態（ＭＳＭＥ＝”１”）において有意とされる周波数選択のための情報を格納する第２の記憶領域（ＣＫＳ１，ＣＫＳ０）とを備えて成る。所定のイベントが発生したとき、第１の記憶領域（ＭＳＭＥ）を第１の状態（＝”０”）に強制すればよいから、システムクロック信号を特定周波数に強制する処理が簡単になる。
【００３４】
〔１４〕上記第１の機能ブロックは中央処理装置（１）であり、上記イベント検出回路から上記例外的処理を要求する信号が与えられた中央処理装置は、当該例外的処理からの復帰に際して第１の記憶領域を第２の状態（ＭＳＭＥ＝”１”）に設定することができる。したがって、中央処理装置は要求された例外的処理を行った後、その要求があったときの処理又はその次の処理に復帰すべき場合であっても、第２の記憶領域（ＣＫＳ１，ＣＫＳ２）の値それ自体を退避及び復帰させることを要しない。
【００３５】
〔１５〕上記第１の機能ブロックはデータトランスファコントローラ（２）であり、上記イベント検出回路から上記例外的処理を要求する信号が与えられたデータトランスファコントローラは、当該例外的処理の終了を指示する信号（１３２５）を出力し、上記論理手段は当該終了を指示する信号の活性状態によって第１の記憶領域を第２の状態（ＭＳＭＥ＝”１”）に設定することができる。これにより、システムクロック信号を元に戻すのに中央処理装置若しくはソフトウェアに負担をかけない。
【００３６】
〔１６〕上記第２の機能ブロック（７，８，９，１０）は、それに供給される周波数が一定の第２のシステムクロック信号（φＳ）から内部クロック信号（φ１Ｓ，φ２Ｓ）を形成し、それによって動作され、第２の機能ブロック単位に上記内部クロック信号の形成を禁止させるための情報を書き換え可能に保持する第２のレジスタ手段（１３３）を設け、上記イベント検出回路による所定のイベントの検出（例えばリセット）に基づいて、上記第２のレジスタ手段は、内部クロック信号の形成を禁止する状態に初期化されるものである。リセット等の所定イベントの発生時における初期的な状態での電力消費を低減させるためである。
【００３７】
〔１７〕システムクロック信号の周波数を強制的に変更するために割り込みベクタなどのベクタと対の制御情報を利用するという更に別の観点による発明は、中央処理装置（１）と、中央処理装置に対して例外的処理を要求するための信号を出力するイベント検出回路（４）と、中央処理装置の周辺回路（７，８，９，１０）と、上記中央処理装置及びイベント検出回路に供給される第１のシステムクロック信号（φＢ）の周波数を選択可能に指示する第１のレジスタ手段（１３２）と、第２のシステムクロック信号（φＳ）を受けて動作される上記周辺回路単位にその内部クロック信号の形成を禁止させるための情報を書き換え可能に保持する第２のレジスタ手段（１３３）とを供え、上記中央処理装置はイベント検出回路から例外的処理が要求されたとき、第１及び第２のレジスタ手段に設定すべき制御情報を、当該要求に応ずるベクタと対を成す領域（図３０のアドレス０，４，８，１２）から取得するものである。イベントの種類に応じて低消費電力設定を細かく行えるようにするためである。
【００３８】
〔１８〕上記中央処理装置（１）は、イベント検出回路（４）から例外的処理の要求があったとき、第１及び第２のレジスタ手段に、当該要求に応ずるベクタと対を成す領域から取得した制御情報を設定する前に、当該例外的処理からの復帰のために第１及び第２のレジスタ手段の値を退避させる。要求された例外的処理の終了後に、イベント発生直前の状態に復帰しなければならない場合に対処するためである。
【００３９】
〔１９〕プリスケーラで生成可能な低分周比のプリスケーラクロック信号はプリスケーラから供給せずに、機能ブロック内の分周器で個別的に生成させるというその他の観点による発明は、発振器（１２）からの出力に基づいてシステムクロック信号を形成するクロック制御回路（１３）と、クロック制御回路からのシステムクロック信号を受けて動作される複数個の機能ブロックとを備えて成る半導体集積回路において、システムクロック信号（φＳ）とは別に相対的に分周比の小さなクロック信号（図６のφＳ／２）を必要とする機能ブロックには機能ブロック毎にシステムクロック信号を分周する分周器（７２０）を設け、相対的に分周比の大きなクロック信号（φ／８，φ／１６）を必要とする複数個の機能ブロックに対しては共通に当該クロック信号を生成して供給するプリスケーラ（１４）を設けて構成される。低分周比のクロック信号も直接複数の機能ブロックに供給する場合には、低分周比故に当該クロック信号伝達系における電力消費が大きくなってしまうからである。
【００４０】
【発明の実施の形態】
《シングルチップマイクロコンピュータの機能ブロック》　図１には本発明に係る半導体集積回路の一実施例であるシングルチップマイクロコンピュータのブロック図が示される。このシングルチップマイクロコンピュータは、中央処理装置（ＣＰＵ）１、データトランスファコントローラ（ＤＴＣ）２、バスコントローラ（ＢＳＣ）３、割り込みコントローラ４、リード・オンリ・メモリ（ＲＯＭ）５、ランダム・アクセス・メモリ（ＲＡＭ）６、タイマ７、ウオッチドッグタイマ（ＷＤＴ）８、シリアルコミュニケーションインタフェース（ＳＣＩ）９、アナログ／ディジタル（Ａ／Ｄ）変換器１０、第１乃至第１１入出力ポートＩＯＰ１〜ＩＯＰ１１、クロック発振器（ＣＰＧ）１２、クロック制御回路１３、及びプリスケーラ１４の機能ブロック（回路モジュールとも称する）を供え、これらの機能ブロックは、特に制限されないが、公知のＣＭＯＳ半導体集積回路の製造技術により単結晶シリコンのような１個の半導体基板上に形成される。上記タイマは一例としてＰＷＭ（Ｐｕｌｓｅ　Ｗｉｄｔｈ　Ｍｏｄｕｌａｔｉｏｎ）タイマを含み、タイマ７において特にＰＷＭタイマを指すときは便宜上ＰＷＭタイマ７と記す。
【００４１】
上記シングルチップマイクロコンピュータには、複数の外部端子が設けられている。外部端子のうち、電源端子には、グランドレベル（Ｖｓｓ）、電源電圧レベル（Ｖｃｃ）、アナログ用グランドレベル（ＡＶｓｓ）、アナログ用電源電圧レベル（ＡＶｃｃ）が供給されている。外部端子には、上記電源端子以外に、専用制御端子が設けられており、これらの端子として、リセット（ＲＥＳ）、スタンバイ（ＳＴＢＹ）、モード制御（ＭＤ０〜ＭＤ２）、クロック入力（ＥＸＴＡＬ、ＸＴＡＬ）、マスク不可能な割り込み（ＮＭＩ）の各端子がある。
【００４２】
《シングルチップマイクロコンピュータの内部バス構成》　図１に示される上記各機能ブロックは、内部バスによって相互に接続される。内部バスはアドレスバス及びデータバスの他にリード信号、ライト信号、さらにはバスサイズ信号などを含むコントロールバスから成る。内部のアドレスバスにはＩＡＢとＰＡＢが存在する。内部のデータバスとしてはＩＤＢとＰＤＢが存在する。これらのＩＡＢ、ＰＡＢ及びＩＤＢ、ＰＤＢのバスは、バスコントローラ３によって、互いにインタフェースされている。
【００４３】
内部データバスＩＤＢ，内部アドレスバスＩＡＢは、バスマスタとして動作することができるＣＰＵ１またはＤＴＣ２の何れかが選択的にバス権を有して、使用される。何れにバス権を与えるかは、バスコントローラ３の制御によって決まる。バスコントローラ３は、内部アドレスバスＩＡＢに出力された情報を解読して、何れの機能ブロックが選択されたかを判定する機能ブロック選択回路ＭＳを含む。機能ブロック選択回路ＭＳは、アドレス信号によって選択されるべき機能ブロックを識別し、識別された機能ブロックに対応するモジュール選択信号（図示せず）を活性化する。この機能ブロック選択回路ＭＳにて解読された情報に従って、ＩＡＢとＰＡＢとの間及びＩＤＢとＰＤＢとの間が接続されるか、接続されないかが決定（選択）される。すなわち、そのときのアクセス対象が内部バスＩＡＢ，ＩＤＢに結合された回路モジュールである場合にはバスコントローラ３は内部バスＰＡＢ，ＰＤＢをＩＡＢ，ＩＤＢに接続しない。一方、アクセス対象が内部バスＰＡＢ，ＰＤＢに結合された回路モジュールである場合にはバスコントローラ３は内部バスＰＡＢ，ＰＤＢをＩＡＢ，ＩＤＢに接続する。本明細書において、バスマスタとは、バスへのアドレスの出力（形成）が可能であり、データの入出力も可能であるモジュールを意味し、バススレーブとは、バスへのアドレスの出力（形成）が不可能であり、アドレスの入力と、データの入出力又はデータの出力が可能なモジュールを意味する。
【００４４】
内部バスＩＡＢ、ＩＤＢはＣＰＵ１、ＤＴＣ２、ＲＯＭ５、ＲＡＭ６、バスコントローラ３に接続される。更に、内部アドレスバスＩＡＢは図示しない外部アドレスバスと接続可能にするために、入出力ポートＩＯＰ１〜ＩＯＰ３に接続され、内部データバスＩＤＢは図示しない外部データバスと接続可能にするために、入出力ポートＩＯＰ４、ＩＯＰ５に接続される。内部バスＰＡＢ、ＰＤＢはバスコントローラ３、タイマ７、ウオッチドッグタイマ８、ＳＣＩ９、Ａ／Ｄ変換器１０、割込コントローラ４、及び入出力ポートＩＯＰ１〜ＩＯＰ１１に接続される。内部バスＰＡＢ、ＰＤＢが入出力ポートＩＯＰ１〜ＩＯＰ１１を介して外部アクセスに利用されるときのバスインタフェース制御はバスコントローラ３が行う。
【００４５】
上記内部バスをＩＡＢ，ＩＤＢとＰＡＢ，ＰＤＢとの２系統化するに当たっては、バスアクセスを伴った利用頻度の多い回路モジュールには相対的に負荷の小さなバスを共有させることを考慮してある。また、ＣＰＵ１によるバスアクセスの内では、命令フェッチの回数がデータアクセスの回数に比較して多くされる。また、ＣＰＵ１の処理性能を向上させるためには、処理する内容に応じて命令をフェッチしていかなければならず、単位時間当たりの命令フェッチの頻度が高くされる。この点を考慮して本実施例ではバスマスタモジュールとして動作されるＣＰＵ１，ＤＴＣ２と、ＣＰＵ１の作業領域とされるＲＡＭ６やプログラムなどを格納したＲＯＭ５などとをその他の回路モジュールと切り放して相対的に負荷の小さな内部バスＩＡＢ，ＩＤＢに接続してある。
【００４６】
ＣＰＵ１によるバスアクセスの内では、命令フェッチの回数がデータアクセスの回数に比較して多くされる。また、ＣＰＵ１の処理性能を向上させるためには、処理する内容に応じて命令をフェッチしていかなければならず、単位時間当たりの命令フェッチの頻度が高くされる。ＣＰＵ１の命令は内蔵ＲＯＭ５または図示しない外部メモリに置く場合が大部分である。したがってプログラムメモリが外部メモリである場合にも入出力ポートＩＯＰ１〜ＩＯＰ５を介して内部バスＩＡＢ，ＩＤＢを利用すればよく、命令フェッチと無関係な回路モジュールが多数接続されていて負荷が比較的大きくされた内部バスＰＡＢ、ＰＤＢを使用しないで済む。
【００４７】
内部バスＰＡＢ，ＰＤＢは、それが使用されていないとき、そのバスにおける以前の値を保持するようにされている。例えば、内部バスＰＤＢの各信号線にはスタティックラッチ回路が結合され、内部バスＰＤＢが使用されてない場合にはこれに出力端子が接続される回路モジュールの当該出力端子は高出力インピーダンス状態とされ、上記スタティックラッチ回路によって前の値が保持される。ＣＭＯＳ回路を用いれば、この場合、信号状態が変化しないため、これらＰＤＢの消費電流をほぼ０とすることができる。ＰＡＢ、ＰＤＢは、図１に示されるように、接続される対象が多く、配線容量が大きいため、これらに発生する信号変化の頻度を減少させることによって、換言すれば相対的に利用頻度の低い回路モジュールが接続されていることによって、低消費電力化に貢献することができる。即ち、バスアクセスを伴った利用頻度の多い回路モジュールには相対的に負荷の小さなバスＩＡＢ，ＩＤＢが共有される。
【００４８】
《シングルチップマイクロコンピュータのクロック供給系統》　本実施例のシングルチップマイクロコンピュータはクロック発振器１２及びクロック制御回路１３によって生成されるシステムクロック信号に同期して動作される。各機能ブロックはそのようなシステムクロック信号に基づいて形成された、互いにノーオーバラップの２相クロック信号にて動作される。本実施例に従えば、システムクロック信号はφＢとφＳに大別される。便宜上システムクロック信号φＳとφＢを総称して単にシステムクロック信号φとも記す。同様にφＳに基づいて形成されるノーオーバラップ２相のクロック信号φ１Ｓ，φ２Ｓ、そしてφＢに基づいて形成されるノーオーバラップの２相クロック信号φ１Ｂ，φ２Ｂに対してもそれらを総称して単にφ１，φ２と記すことがある。また、クロック発振器１２から出力されるクロック信号はφＯＳＣとして図示される。
【００４９】
上記システムクロック信号φＢは、バスマスタクロックとして、例えばＣＰＵ１、ＤＴＣ２、バスコントローラ３、割込コントローラ４、更に、外部バスのインタフェース用に、入出力ポートＩＯＰ１〜ＩＯＰ５に供給される。システムクロック信号φＢを各回路モジュールへ供給するためのクロック信号配線は、Ｌ１として図示されている。クロック信号φＢはクロック制御回路１３において、クロック信号φＯＳＣを分周することにより形成される。本実施例においては、この分周比が選択可能にされている。クロック信号φＢの分周比が大きくされれば、これに比例して、システムクロック信号φＢを受ける回路モジュールの部分の動作周波数は低くなり、消費電流も低減される。かかる部分は、原則的には常に動作状態である。例えば、割込コントローラ４は常に割込要求の発生を監視しなければならず、割込要求が発生すれば、所定の状態遷移を発生したり、ＣＰＵ１やＤＴＣ２に処理を要求したりしなければならないためである。したがってそのような回路部分において、その動作周波数をクロック信号φＢで制御できることはシングルチップマイクロコンピュータ全体における消費電力を必要に応じて低減することを実現する。
【００５０】
他方のシステムクロック信号φＳは、周辺クロックとして、例えばタイマ７、ウオッチドッグタイマ８、ＳＣＩ９、Ａ／Ｄ変換器１０、入出力ポートＩＯＰ１〜ＩＯＰ１１に供給される。システムクロック信号φＳを各回路モジュールへ供給するためのクロック信号配線はＬ２として図示されている。
【００５１】
図１からも明らかなようにクロック信号は、ＲＯＭ５，ＲＡＭ６を除く各機能ブロックに供給され、全体としてのクロック信号配線長は相当長くされる。図１に示されるように、クロック信号φＢが供給される機能ブロックと、クロック信号φＳが供給される機能ブロックとは、それぞれある程度局在化されている。これによって、クロック信号のための総配線長を抑制することができる。少なくとも、全ての機能ブロックに夫々独立のクロック信号を供給する場合よりも全体の配線長を短くすることができる。クロック信号の総配線長を抑制することにより、当該配線に寄生する容量成分を抑制できる。クロック信号は信号変化の周波数が大きいために、クロック信号配線の容量を抑制することにより（配線長を短くすることにより）、消費電力を抑制することが可能になる。
【００５２】
システムクロック信号φＢの周波数は例えば後述するようにソフトウェアによる分周比の設定次第で変更することができる。これに対して、システムクロック信号φＳの周波数は固定とされる。また、クロック制御回路１３は、ＤＴＣ２、タイマ７、ウオッチドッグタイマ８、ＳＣＩ９、Ａ／Ｄ変換器１０に対して、クロック制御信号を供給する。かかるクロック制御信号は、上記機能ブロック内におけるクロック信号の動作（クロック信号の変化）を許可／停止するものである。かかるクロック制御については、例えば、特開昭６０ー１９５６３１号公報などに記載されている。しかしながら、かかる例にはクロックの動作が停止された期間中の、機能ブロックの動作については考えられていない。本発明者らの検討によれば、機能ブロックのクロックが停止された期間中は、内部状態を保持すべきである。そのような機能ブロックはシステムクロック信号φＳに基づいて形成されたノーオーバラップの２相クロック信号φ１，φ２に同期動作されるようになっており、その詳細は図３の（Ａ）〜（Ｃ）に基づいて後述するが、φ１に同期した順序回路をダイナミック回路で構成し、φ２に同期した順序回路をスタティック回路で構成する。
【００５３】
《シングルチップマイクロコンピュータにおけるモジュールストップ》　シングルチップマイクロコンピュータにおけるモジュールストップの内容についてその詳細は後述するが、概略的には以下の通りである。クロック制御回路１３から、ＤＴＣ２、タイマ７、ウオッチドッグタイマ８、ＳＣＩ９、Ａ／Ｄ変換器１０に対して、クロック停止信号すなわちモジュールストップ信号（図１においては夫々に与えられるモジュールストップ信号をＭＳＴＰと総称して図示してある）が与えられる。かかるモジュールストップ信号ＭＳＴＰは、クロック制御回路１３から、各機能ブロックに対してそれ固有の信号として与えられる。複数チャネルから成るＳＣＩのような場合にはチャネル毎にモジュールストップ信号ＭＳＴＰを割り当てることも可能である。かかる機能ブロック単位のクロック停止については、平成６年３月（株）日立製作所発行『Ｈ８／３０４８シリーズ　ハードウェアマニュアル』Ｐ６０７乃至Ｐ６３２、及び特開昭６０−１９５６３１号公報などに記載されている。なお、ウオッチドッグタイマ８は、ウオッチドッグタイマとして機能しているとき、モジュールストップ信号は無効とされる。これは、ウオッチドッグタイマ８は、システムを監視する機能上、誤って、停止されてしまうのを防止するためである。その詳細については後述する。前記平成６年３月（株）日立製作所発行『Ｈ８／３０４８シリーズ　ハードウェアマニュアル』Ｐ６０７乃至Ｐ６３２では、クロック停止時には、機能ブロックがリセット状態になってしまい、内部レジスタの再設定などが必要である、とされる。例えば、調歩同期式ＳＣＩでは、動作再開時に、１フレーム分のプリアンブルを出力したりして、直ちに動作を行うことができない。ＰＷＭタイマ７では、クロック選択やデューティの設定などが必要になってしまう。これに対して、本実施例では、クロック停止時に、機能ブロックが内部状態を保持するようにされる。
【００５４】
《クロック同期型内蔵メモリの採用》　図２は図１のシングルチップマイクロコンピュータの変形例を示すブロック図である。図２に示されるシングルチップマイクロコンピュータは、図１に対してＲＯＭ５及びＲＡＭ６がクロック信号に同期動作される回路形式とされ、例えばそれらにはＣＰＵ１に供給されるのと同様のクロック信号φＢが供給される。このように内蔵メモリＲＯＭ５，ＲＡＭ６をバスマスタＣＰＵ１，ＤＴＣ２のクロックに同期させて動作させることにより、高速な動作を行うことができる。クロックに同期動作されるＲＡＭ６としてはクロックド・スタティックＲＡＭなどを挙げることができる。クロックに同期動作されるＲＯＭ５としてはマスクＲＯＭ、ＥＥＰＲＯＭ、及びフラッシュメモリなどを挙げることができる。
【００５５】
《各機能ブロックの内部回路》　図３の（Ａ）には各機能ブロックを構成する論理回路の代表的なブロック例が示されている。夫々の論理回路は基本的には、組合回路２０と、その出力を入力としてクロック信号φ２に同期して動作する順序回路２１と、順序回路２１の出力を入力とする組合回路２２と、組み合わせ回路２２の出力を入力としてクロック信号φ１に同期して動作される順序回路２３とを代表とした回路を基本単位として含む。また、必要に応じて、順序回路２３から組み合わせ回路２０へ信号が循環的に伝達されるように構成してもよい。図示されていないが、外部からの入力信号はいずれかの回路に入力され、外部への出力信号はいずれかの回路から出力される。
【００５６】
図３の（Ｂ）には代表的に示された上記順序回路２１，２３をＣＭＯＳダイナミック回路で構成する例が示される。例えば順序回路２１はＣＭＯＳクロックドインバータ２１０とＣＭＯＳインバータ２１１との直列回路で構成され、順序回路２３はＣＭＯＳクロックドインバータ２３０とＣＭＯＳインバータ２３１との直列回路で構成される。順序回路２１においてクロックドインバータ２１０はクロック信号φ２のハイレベルによって出力動作可能にされ、順序回路２３においてクロックドインバータ２３０はクロック信号φ１のハイレベルによって出力動作可能にされる。Ｐチャンネル型ＭＯＳトランジスタ２１２は動作待機時にローレベルにされる信号ＳＩＧによってオン状態とされ、インバータ２１１の入力を電源電圧に強制して内部を、前の値の保持状態にする。この信号ＳＩＧとしては、図９で述べる発振器停止信号１３５に類似した信号を使うことができる。
【００５７】
図３の（Ｂ）に示される回路形式において情報伝達はクロックドインバータ２１０，２３０の出力負荷容量に対する充電及び放電によってダイナミックに行われる。このように２相のノーオーバラップクロック信号（ノーオーバラップクロック信号は、ノンオーバラップクロック信号とも称する）φ１，φ２とダイナミック回路を用いることによって、トランジスタ数を縮小でき、半導体集積回路の物理的規模を縮小できる。しかしながら、これは負荷容量に蓄えた電荷でデータの保持を行っているので、負荷容量からの漏洩電流が存在するために、データの保持は有限の時間しか行うことができない。例えば、漏洩電流を一定とすれば、ハイレベルを保持した状態では、データはＶ−ｉｔ／Ｃと表現できる。Ｃは容量、Ｖは電源電圧、ｉは漏洩電流、ｔは経過時間である。時間経過に従って、出力端子の電圧は低下する。このような電圧を入力しているＣＭＯＳ回路のしきい値電圧をＶｔｈとすれば、Ｃ（Ｖ−Ｖｔｈ）／ｉ以下の時間しかデータを保持することができない。したがってこの時間内にデータを更新する必要がある。換言すればクロックドインバータ２１０，２３０のようなスイッチ素子のスイッチング周波数をｉ／Ｃ（Ｖ−Ｖｔｈ）以下にすることはできない。これにより、クロック停止時などのように内部動作の停止時には、スイッチング周波数を十分高くできず、データを保持することができなくなる。
【００５８】
そのようなクロック停止状態でも、データを保持しようとすれば、夫々の順序回路２１，２３にダイナミック回路を用いず、スタティック回路を用いることが考えられる。スタティック回路はダイナミック回路に比べて、トランジスタ数が増加し、半導体集積回路の物理的規模を増加させる。トランジスタ数が増加すれば、配線も増加し、配線数及びトランジスタ数に比例して、消費電流も増加する。
【００５９】
図３の（Ｃ）には本実施例のシングルチップマイクロコンピュータに用いられているＣＭＯＳダイナミック回路の一例が示される。同図においてクロック信号φ１に同期した順序回路２３はダイナミック回路、クロック信号φ２に同期した順序回路２１はスタティック回路で構成されている。当該スタティック回路はインバータ２１１にクロックドインバータ２１３が逆並列接続で追加され、クロックドインバータ２１０とは逆相で出力動作可能にされる。なお、順序回路２３における出力段のインバータ２３１は論理極性を合わせるために付加されており必要に応じて削除してもよい。図３の（Ｃ）の例に従えば、クロック停止時、及び動作待機時には、クロック信号φ１がハイレベル、φ２がロウレベルとされ、順序回路２１はその直前の入力データをラッチして後段の組み合わせ回路２２へ供給し、順序回路２３の状態を前の値の保持状態へ制御する。なお、動作待機時とは、クロックは停止されていないが、所定のイベントが発生していない場合に、以前の状態を保持して動作を停止している状態を意味する。前記所定のイベントとしては、例えば、ＰＷＭタイマ７の場合、ＣＰＵ１などのバスマスタによるリード／ライトや、後述するカウントアップクロックの発生などがある。
【００６０】
図３の（Ｃ）において順序回路２３を構成するダイナミック回路は６個のＭＯＳトランジスタにより、同じく図３の（Ｃ）において順序回路２１を構成するスタティック回路は１０個のＭＯＳトランジスタにより構成される。図３の（Ｂ）においては順序回路２３を構成するダイナミック回路は６個のＭＯＳトランジスタにより、同じく図３の（Ｂ）において順序回路２１を構成するダイナミック回路は７個のＭＯＳトランジスタにより構成される。また、全部をスタティック回路にすれば、何れの順序回路２１，２３も１０個のＭＯＳトランジスタにて構成される。したがって、この部分を比較すれば、図３の（Ｃ）の構成における１６トランジスタに対し、全部をダイナミック回路とすれば１３トランジスタ、全部をスタティック回路にすれば２０トランジスタであり、図３の（Ｃ）の構成は、双方をダイナミック回路とする場合に比べて約１．２３倍、双方をスタティック回路とする場合に比べて約０．８倍のトランジスタ数で済む。
【００６１】
また、図３の（Ｃ）に示されるように、順序回路としてスタティック回路とダイナミック回路を交互に配置し、ノーオーバラップの２相クロック信号φ１，φ２のデューティ比（本明細書では、デューティ比＝ハイレベルの期間／１周期である）を５０％からずらし、デューティ比の大きい方をダイナミック回路のクロック信号とする。換言すれば、ダイナミック回路に含まれる上記クロックドインバータ２３０の高出力インピーダンス期間を、スタティック回路に含まれる上記クロックドインバータ２１０の高出力インピーダンス期間よりも短くする。これにより、例えばシステムクロック信号φＢの周波数を低減可能な範囲を広げることができるようになる。例えば図２０に示される５０％よりも大きなデューティ比のクロック信号φ１Ｂをダイナミック回路のクロックφ１に、５０％よりも小さなデューティ比のクロック信号φ２Ｂをスタティック回路のクロックφ２に採用する。
【００６２】
《プリスケーラクロック》　システムクロック信号の他に、いわゆるプリスケーラクロック信号を所定の機能ブロックに供給することがある。すなわち、システムクロック信号を必要に応じて分周する場合に当該分周器を個々の機能ブロックに配置する場合に比べ、プリスケーラを用いる場合には各種分周比のクロック信号を集中的に形成して必要な分周比のクロックを必要な機能ブロックに振り分けるので、各機能ブロックの分周器を共通化でき、チップ全体における論理規模の縮小を図ることができる。
【００６３】
しかしながら、本発明者らの検討によれば、プリスケーラクロック信号は、各機能ブロックが共通に利用する性質上、クロック配線長が長く、配線容量が大きくなる。更に、低分周比のプリスケーラクロックは信号変化頻度が高い。このため、消費電流も大きくなる。これを考慮した本実施例においては、低分周比のプリスケーラクロック信号に応じた比較的周波数の高いクロック信号は、機能ブロックに対して共通のプリスケーラが担わず各機能ブロックが、個々の分周回路を用いて個別に生成するようにされる。
【００６４】
図４にはプリスケーラ１４の一例がブロック図で示されている。同図には代表的に下位４桁分の構成が示され、各桁を構成するラッチ回路は１４０〜１４３として例示され、その回路構成は代表的に詳細が示されたラッチ回路１４０の構成と同じである。ラッチ回路１４０は、２入力ノアゲート１４０１，１４０２にて成るスタティックラッチを主体に構成され、その出力段には端子ＣＳにて出力制御されるクロックドインバータ１４０３が配置され、当該スタティックラッチの入力段には端子ＣＭの論理値によって開閉機能を行う２入力アンドゲート１４０４，１４０５が配置される。入力端子Ｔは２入力型の排他的論理和ゲート１４０６の一方の入力端子に結合され、他方の入力端子にはクロックドインバータ１４０３の出力が帰還される。上記アンドゲート１４０４には排他的論理和ゲート１４０６の出力が、上記アンドゲート１４０５には排他的論理和ゲート１４０６の出力がインバータ１４０７にて反転されて夫々供給される。最下位のラッチ回路１４０の入力端子Ｔには論理値”１”が供給され、下位側のカウントアップクロックφ／４ＵＰ，φ／８ＵＰ，φ／１６ＵＰ，…が上位の入力端子Ｔに与えられて縦列形態に接続されている。
【００６５】
各桁のラッチ回路１４０，１４１，１４２，１４３，…は、端子ＣＭが論理値”１”（特に制限されないが本実施例ではハイレベル）のときに保持したデータを更新する。端子Ｔが論理値”０”（特に制限されないが本実施例ではローレベル）であればデータ保持、端子Ｔが論理値”１”であればデータ反転とされる。即ち、端子ＣＭと端子ＣＳは同時に論理値１にされない。換言すればφ１，φ２はノーオーバラップ２相のクロック信号とされる。端子ＣＳのハイレベルにおいてクロックドインバータ１４０３は出力動作可能にされ、端子ＣＳのローレベルにおいて高出力インピーダンス状態にされる。端子ＣＭの論理値”１”においてアンドゲート１４０４，１４０５の他方の入力が、当該アンドゲート１４０４，１４０５の出力に反映されてラッチデータの更新が行われる。このとき、端子Ｔがローレベルならばそれまでラッチされていたデータがそのまま保持され、端子Ｔがハイレベルならばそれまでラッチされていたデータは反転される。端子ＣＭのローレベルにおいて１４０４，１４０５の出力は双方ともにローレベルに強制されて２個のノアゲート１４０１，１４０２から成るスタティックラッチはそれまでの状態をスタティックに保持する。
【００６６】
上記ノーオーバラップ２相のクロック信号φ１，φ２は上記クロック信号φＯＳＣから生成される。その生成回路１４４は図４に示されるように相互に一方の出力が他方の入力に遅延回路１４４１，１４４２を介して帰還される一対のアンドゲート１４４３，１４４４を主体とし、クロック信号φ１，φ２の停止時にφ１をハイレベルに強制する出力制御用のオアゲート１４４５、φ２をローレベルに強制する出力制御用のアンドゲート１４４６を備えて成る。アンドゲート１４４４はφＯＳＣ及び遅延回路１４４１を介する帰還信号の夫々の反転信号に対して論理積を採る。アンドゲート１４４３は遅延回路１４４２を介する帰還信号の反転信号とφＯＳＣとの論理積を採る。アンドゲート１４４６はプリスケーラモジュールストップ信号ＭＳＴＰＰＳＣの反転信号とアンドゲート１４４４の出力とに対して論理積を採る。プリスケーラモジュールストップ信号ＭＳＴＰＰＳＣについてはその詳細を後述するが、その論理値”０”によってクロック信号φ１，φ２の出力を許容し、論理値”１”によって当該クロック信号φ１，φ２の出力を禁止する。クロック信号φ１，φ２の出力禁止状態においてφ１はハイレベル、φ２はローレベルに固定される。したがって、このとき各種プリスケーラクロック信号の変化も抑止される。
【００６７】
図４に示されるプリスケーラ１４は前記クロック信号φＯＳＣをカウントアップする。例えば、平成５年３月（株）日立製作所発行『Ｈ８／３００３　ハードウェアマニュアル』ｐ５５５に記載されるようなプリスケーラは、分周クロックφ／２、φ／４、φ／８…などを順次生成している。本実施例のプリスケーラ１４は更に、それぞれの桁のカウントアップクロックφ／２ＵＰ、φ／４ＵＰ、φ／８ＵＰ…も生成する。当該桁におけるカウントアップ信号（桁上げ信号）は、当該桁よりも下位側の全ての桁上げ信号と当該桁におけるラッチ回路の出力とに対する論理積信号として得られる。
【００６８】
本実施例においてプリスケーラ１４にて生成されるクロック信号（プリスケーラクロック信号）は所定の機能ブロック、例えばタイマ７、ＳＣＩ９、Ａ／Ｄ変換器１０などに供給される。この場合に、そのような機能ブロックに供給されるプリスケーラクロック信号はφ／８以上の分周比のプリスケーラクロック信号とされる。φ／２、φ／４及びφ／２ＵＰ、φ／４ＵＰなどのような相対的に分周比の小さな（周波数の高い）クロック信号はプリスケーラ１４から外部の機能ブロックには出力されない。分周比の低いクロック信号もプリスケーラ１４から一括して各機能ブロックに供給する場合には相当に長いクロック配線上で高い周波数に同期して充放電が高速に行われるため消費電力が大きくなり、しかも各機能ブロックがそのような高い周波数のクロック信号をシステムクロック信号φＳとは別に利用するとは限らず、そのような電力消費が無駄になることも大いに予想される。したがって、φ／２のように比較的周波数の高いクロック信号はシステムクロック信号φＳを機能ブロック内部で分周して利用する。これによって電力消費を低減することができる。
【００６９】
図５の（Ａ）〜（Ｉ）にはプリスケーラ１４の動作タイミングチャートが示されている。プリスケーラクロック信号はクロック信号φ１に同期したタイミングで変化される。夫々の桁のカウントアップクロックは自分よりも下位の桁のラッチ回路出力が全ビット論理値”１”になると論理値”１”にされ、その後のφ１に同期して、その桁が変化される。即ち、各桁の出力Ｑの１周期に１回上位桁へのカウントアップクロックが発生する。例えば、φ／８とφ／１６ＵＰは同一の周期を持つ信号であり、φ／１６ＵＰのハイレベル期間はクロック信号φ／２のハイレベル期間に一致される。
【００７０】
《モジュールストップ》　図６にはＰＷＭタイマ７のブロック図が示される。ＰＷＭタイマ７は、ノーオーバラップ生成回路７００、クロック制御回路７１０、分周器７２０、リードライト制御回路７３０、カウンタクロック制御回路７４０、出力制御７５０、バスインタフェース７６０、制御レジスタ（ＴＣＲ）７７１、カウンタ（ＴＣＮＴ）７７２、デューティレジスタ（ＤＴＲ）７７３、比較器（ＣＭＰ）７７４から構成される。
【００７１】
ノーオーバラップ生成回路７００は、クロック信号φＳを入力し、互いにノーオーバラップの関係にあり、φＳと同相のクロック信号φ１Ｓと、クロック信号φ１Ｓに対して逆相のクロック信号φ２Ｓとを夫々生成する。このノーオーバラップ生成回路７００の一例は図７の（Ａ）に示されるように相互に一方の出力が他方の入力に遅延回路７０１，７０２を介して帰還される一対のアンドゲート７０３，７０４を主体とし、クロック信号φ１Ｓ，φ２Ｓを停止すべきときに当該クロック信号φ１Ｓをハイレベルに強制する出力制御用のオアゲート７０５、クロック信号φ２Ｓをローレベルに強制する出力制御用のアンドゲート７０６を備えて成る。アンドゲート７０４はクロック信号φＳ及び遅延回路７０１を介する帰還信号の夫々の反転信号に対して論理積を採る。アンドゲート７０３はクロック信号φＳと遅延回路７０２を介する帰還信号の反転信号との論理積を採る。アンドゲート７０６は一方の入力に供給されるタイマモジュールストップ信号ＭＳＴＰＰＷＭの反転信号とアンドゲート７０４の出力とに対して論理積を採る。タイマモジュールストップ信号ＭＳＴＰＰＷＭについてはその詳細を後述するが、その論理値”０”によってクロック信号φ１Ｓ，φ２Ｓの出力を許容し、論理値”１”によって当該クロック信号φ１Ｓ，φ２Ｓの出力を禁止する。即ちタイマモジュールストップ信号ＭＳＴＰＰＷＭが論理値”１”のとき、φ１Ｓがハイレベル、φ２Ｓがローレベルの状態に固定される。このようにタイマモジュールストップ信号ＭＳＴＰＰＷＭはＰＷＭタイマ７を動作させる必要のないときにクロック信号φ１Ｓ，φ２Ｓを所定の論理値を以て停止させるための制御信号とされる。
【００７２】
ノーオーバラップ生成回路７００で生成されたクロック信号φ１Ｓ，φ２Ｓは分周器７２０、クロック制御回路７１０、及びカウンタクロック制御回路７４０に限って供給される。
【００７３】
分周器７２０は、クロック信号φ１Ｓ及びφ２Ｓを入力して、クロック信号φＳ／２を生成する。この論理構成は、図４で説明したプリスケーラ１４における最下位の論理構成を以て実現することができる。クロック信号φＳに対して分周比の比較的小さなクロック信号φＳ／２については機能ブロック内の分周器で生成する。これはプリスケーラの項目で説明した通り低消費電力化を図るための考慮である。
【００７４】
カウンタクロック制御回路７４０はプリスケーラクロックとしてφ／１６ＵＰ、φ／６４ＵＰ、及びφ／２５６ＵＰを入力し、併せて前記分周器７２０で生成したクロック信号φＳ／２を入力する。これらの入力クロック信号から所望の入力クロック信号が選択され、選択された入力クロック信号がカウントアップに使われる。すなわち、制御レジスタ（ＴＣＲ）７７１のＣＫ１、ＣＫ０ビットによって、選択されるべき入力クロック信号を指定し、この指定により、カウンタクロック制御回路７４０で、入力クロック信号の選択が行われ、選択されたクロック信号の周期に同期してカウントアップクロック信号７４１が生成される。このカウントアップクロック信号７４１の生成は、上記制御レジスタ（ＴＣＲ）内のＯＥ（アウトプット・イネーブル）ビットが”１”のときに許可され、”０”のときに禁止される。カウンタ（ＴＣＮＴ）７７２は当該カウントアップクロック信号７４１に同期してカウントアップ動作を行う。
【００７５】
クロック制御回路７１０は、クロック信号φ１Ｓ及びφ２Ｓ、ＣＰＵ１の出力するアドレス信号によって生成されたＰＷＭタイマ選択信号ＭＳＰＷＭ＃（記号＃はそれが付された信号がローイネーブル、即ち負論理の信号であることを意味する）、及びカウンタクロック制御回路７４０から出力されるカウントアップクロック信号７４１を入力して、クロック信号φ１−ＰＷＭ、φ２−ＰＷＭをＴＣＲ７７１，ＴＣＮＴ７７２，ＣＭＰ７７４，ＤＴＲ７７３，バスインタフェース７６０，出力制御回路７５０に供給する。クロック信号φ１−ＰＷＭ，φ２−ＰＷＭは、ＣＰＵ１がＰＷＭタイマ７をリード／ライトしたとき、または、カウントアップクロック信号が発生したときに有効になる。そのほかの場合は、φ１−ＰＷＭがハイレベル、φ２−ＰＷＭがロウレベルの状態に固定される。
【００７６】
リードライト制御回路７３０は、バスコントローラ３を介して、ＣＰＵ１の出力する内部アドレス、リード信号ＲＤ、ライト信号ＷＲ、そしてＰＷＭタイマ選択信号ＭＳＰＷＭ＃を入力して、各レジスタとバスインタフェースを制御して、各レジスタと例えばＣＰＵ１との間のデータの入出力を制御する。
【００７７】
出力制御回路７５０は、ＣＭＰ７７４の出力するコンペアマッチ信号７８０と、ＴＣＮＴ７７２の出力するオーバフロー信号７８１、及びＴＣＲ７７１からのＯＥビットを入力して、ＰＷＭ信号を出力する。ＯＥビットが論理値”１”にセットされると、ＰＷＭ信号は所定の、入出力ポートと兼用の端子から外部に出力される。ＰＷＭ信号は、コンペアマッチ時（コンペアマッチ信号７８０が論理値”１”）には論理値”１”を出力し、オーバフロー時（オーバフロー信号７８１が論理値”１”）には論理値”０”を出力する。
【００７８】
バスインタフェース７６０は、リードライト制御回路７３０の制御によって、内部データバスＰＤＢとＰＷＭタイマ７の内部のモジュールデータバスとの間での情報の入出力を行う。
【００７９】
ＴＣＲ７７１は、ＯＥビットとＣＫ１〜ＣＫ０を有し、リードライト制御回路７３０の制御に従ってデータが入出力される。ＯＥビットが”１”にセットされると、ＰＷＭタイマ７は動作する。ＣＫ１〜ＣＫ０ビットは前述の通り、カウントクロック周期を選択するためのビットとされる。ＴＣＮＴ７７２は、リードライト制御回路７３０の制御に従ってデータを入出力する。また、カウンタクロック制御回路７４０の出力するカウントクロック信号７４１によってカウントアップ動作を行う。カウントアップ動作によって、オーバフローが発生した場合、ＴＣＮＴ７７２は、オーバフロー信号７８１を活性状態とする。ＤＴＲ７７３は、リードライト制御回路７３０の制御に従ってデータを入出力する。ＣＭＰ７７４は、ＴＣＮＴ７７２及びＤＴＲ７７３の出力を入力して比較し、その結果が一致したときにコンペアマッチ信号７８０を活性状態とする。
【００８０】
図７の（Ｂ）にはクロック制御回路７１０の一例が示されている。クロック制御回路７１０は、２個の論理和回路７１１，７１２、１個の論理積回路７１３で構成される。タイマ選択信号ＭＳＰＷＭ＃の反転信号とカウントアップクロック信号７４１とが論理和回路７１１に入力される。論理和回路７１１の出力の反転信号とクロック信号φ１Ｓとが論理和回路７１２に入力され、この出力がクロック信号φ１−ＰＷＭとされる。また、論理和回路７１１の出力とクロック信号φ２Ｓが論理積回路７１３に入力され、この出力がクロック信号φ２−ＰＷＭとされる。クロック信号φ１−ＰＷＭ，φ２−ＰＷＭは、ＣＰＵ１がＰＷＭタイマ７をリード／ライトするためにタイマ選択信号ＭＳＰＷＭ＃を活性状態にしたとき、または、カウントアップクロック信号７４１が発生したときに有効になる。そのほかの場合は、クロック信号φ１−ＰＷＭがハイレベル、クロック信号φ２−ＰＷＭがロウレベルの状態に固定される。つまり、所定のイベント（ＣＰＵ１のリード／ライト、及び、カウントアップクロック信号の発生）が生じたときのみ、各部に供給されるべきクロックφ１−ＰＷＭ、φ２−ＰＷＭがクロック変化を行う。従ってクロック信号φ１−ＰＷＭ、φ２−ＰＷＭを受けて、それに同期して動作される回路、即ちノーオーバラップ生成回路７００，クロック制御回路７１０，分周器７２０，カウンタクロック制御回路７４０以外の機能ブロックは、上記所定のイベントが発生したときのみ動作される。そのほかの状態では信号の変化が抑止され、消費電流が抑止される。
【００８１】
ノーオーバラップ生成回路７００は、上述のように図７の（Ａ）のような構成にされ、モジュールストップ信号ＭＳＴＰＰＷＭのハイレベルによってφ１Ｓがハイレベル、φ２Ｓがローレベルに固定される。図７の（Ｂ）からも明らかなようにノーオーバラップ生成回路７００における上記モジュールストップ状態においてはクロック信号φ１−ＰＷＭ，φ２−ＰＷＭも夫々所定のレベルに固定される。このようにＰＷＭタイマ７を全く利用しない場合にはモジュールストップ信号ＭＳＴＰＰＷＭにて内部のクロック信号φ１Ｓ，φ２Ｓ，φ１−ＰＷＭ，φ２−ＰＷＭの変化を抑止し、ＰＷＭタイマ７を利用する場合にも上記所定のイベントが発生するまで内部のクロック信号φ１−ＰＷＭ，φ２−ＰＷＭの変化を抑止することによって、低消費電力を図ることができる。
【００８２】
上述のノーオーバラップ生成回路７００及びクロック制御回路７１０による内部クロック信号の変化を選択的に抑止する構成はその他の回路モジュール例えばＷＤＴ８，ＳＣＩ９，Ａ／Ｄ１０にも同様に適用されている。高分周比のプリスケーラクロック信号の供給と内部分周器による低分周比のクロック生成に関しても同様である。
【００８３】
図７の（Ｃ）にはＷＤＴ８に採用されるノーオーバラップ生成回路の例が示される。図７の（Ａ）に示したノーオーバラップ生成回路７００に対して論理積回路７０７が追加されている。論理積回路７０７の一方の入力にはＷＤＴ８に割り当てられたモジュールストップ信号ＭＳＴＰＷＤＴが供給され、他方の入力にはウオッチドッグタイマモードを指定するＷＤＴＭビットの反転信号供給される。ＷＤＴ８はインターバルタイマとしても利用可能にされ、それをウオッチドッグタイマとして利用する場合にはＷＤＴＭビットが論理値”１”にされる。所定のレジスタにＷＤＴＭビットが設けられ、このビットを例えばＣＰＵ１によって論理値”１”にして、ウオッチドッグタイマモードを指定すれば、換言すれば、一旦、ウオッチドッグタイマモードが指定されると、モジュールストップ信号ＭＳＴＰＷＤＴによるモジュールストップの指示は無視される。これにより、ＷＤＴ８を利用したシステム監視の機能が誤って解除される事態を防止でき、システムの信頼性向上に寄与する。
【００８４】
図８には図６のＰＷＭタイマの動作タイミングチャートが示されている。ＣＰＵ１はステートＳ３からＰＷＭタイマ７のＴＣＲ７７１をライトする。かかるライト動作は３ステートを要し、先ずステートＳ３においてモジュール選択信号ＭＳＰＷＭ＃がロウレベルとされる。モジュール選択信号ＭＳＰＷＭ＃がロウレベルにされると、図７の（Ｂ）に示される論理和回路７１１の出力がハイレベルとなって、クロック信号φ１−ＰＷＭ、φ２−ＰＷＭがφ１Ｓ、φ２Ｓに同期して変化を開始する。なお、ＭＳＰＷＭ＃はφ１Ｓに同期している。ライト動作の３ステート目（ステートＳ５の開始タイミング）でＯＥビットが”１”にセットされる。また、ＣＫ１〜ＣＫ０が設定され、この設定されたＣＫ１〜ＣＫ０により、例えばクロック信号φＳ／２が選択される。
【００８５】
ＯＥビットが”１”にセットされた状態で、分周器７２０の生成するクロック信号φＳ／２がカウントアップクロック信号７４１とされ、このカウントアップクロック信号がハイレベルの期間において、クロック信号φ１−ＰＷＭ、φ２−ＰＷＭがクロック信号φ１Ｓ、φ２Ｓに従って変化され、ＰＷＭタイマ７はカウントアップ動作を行う。ステートＳ６〜ステートＳ１２の期間は、φ１−ＰＷＭ，φ２−ＰＷＭの周期は、クロック信号φ１Ｓ，φ２Ｓをそのまま使用する場合に比較して、１／２にされる。これに従って、ノーオーバラップ生成回路７００，クロック制御回路７１０，分周器７２０，カウンタクロック制御回路７４０以外の回路ブロックの動作頻度も１／２になり、かかる部分の消費電流も１／２にすることができる。例えば、かかる部分の論理規模と、ノーオーバラップ生成回路７００，クロック制御回路７１０，分周器７２０，カウンタクロック制御回路７４０の論理規模との比が、８：２であるとすれば、ＰＷＭタイマ７全体の消費電流も６／１０にすることができる。カウントアップクロックにφ／１６ＵＰを選択すると、これはφＳ／８の周波数に等しいから、前記部分の消費電流は１／８とされ、ＰＷＭタイマ７全体の消費電流を３／１０にすることができる。
【００８６】
また、ステートＳ１３〜ステートＳ１５におけるＣＰＵ１のライト動作によって、ＯＥビットが”０”にクリアされると、論理和回路７１１の出力がロウレベルにされ、これによってφ１−ＰＷＭはハイレベル、φ２−ＰＷＭはロウレベルに固定される。ＰＷＭタイマ７のタイマ動作中（ステートＳ３〜ステートＳ５、ステートＳ７、ステートＳ９、ステートＳ１１、ステートＳ１３〜ステートＳ１５）は、φ１−ＰＷＭ、φ２−ＰＷＭのパルス幅が同等であり、動作の中断中は、直流的に、φ１−ＰＷＭがハイレベル、φ２−ＰＷＭがロウレベルとされている。この動作の中断状態において内部状態は保持されている。すなわち、ＰＷＭタイマ７のノーオーバラップ生成回路７００，クロック制御回路７１０，分周器７２０，カウンタクロック制御回路７４０以外の回路ブロックにおける順序回路は、図３の（Ｃ）で示したような順序回路が使われ、クロック信号φ２がクロック信号φ２−ＰＷＭとされ、クロック信号φ１がクロック信号φ１−ＰＷＭとされるからである。
【００８７】
同様に、モジュールストップモードでは、モジュールストップ信号ＭＳＴＰＰＷＭが活性状態になり、φ１Ｓがハイレベル、φ２Ｓがロウレベルの状態で停止し、更に、φ１−ＰＷＭがハイレベル、φ２−ＰＷＭがロウレベルの状態で停止する。この状態においてＰＷＭタイマ７自体の状態は、前記同様に、保持される。例えば、ＴＣＲ７７１の内容や、ＤＴＲ７７３，ＴＣＮＴ７７２の内容は保持される。モジュールストップ解除後に、ＴＣＲ７７１の再設定などを行う必要はない。モジュールストップ状態では、ＣＰＵ１によるリード／ライトも行えない。φ１Ｓ及びφ２Ｓが停止するので、ＰＷＭタイマ７全体の信号変化が抑止され、その間における消費電流は実質的に０とされる。なお、図７の（Ａ）に示されるタイマモジュールストップ信号ＭＳＴＰＰＷＭの供給ラインに、論理積回路の出力を接続し、当該論理積回路にタイマモジュールストップ信号ＭＳＴＰＰＷＭとタイマモジュール選択信号ＭＳＰＷＭ＃を供給するようにしてやれば、モジュールストップ状態を設定していても、ＰＷＭタイマ７はＣＰＵ１からリード／ライト可能にされる。
【００８８】
《クロック制御回路》　図９には図１に示されるシングルチップマイクロコンピュータのクロック発振器１２及びクロック制御回路１３のブロック図が示されている。クロック制御回路１３は、分周器１３０、セレクタ１３１、クロック制御レジスタ１３２、モジュールストップ制御レジスタ１３３、スタンバイ制御回路１３４で構成される。モジュールストップ制御レジスタ１３３は選択可能な機能ブロックに対応して、所定のビット数分設けられている。すなわち、選択可能な機能ブロックに、それぞれ対応したビットが、モジュールストップ制御レジスタ１３３に設けられている。発振器１２には、ＥＸＴＡＬ、ＸＴＡＬ端子を介して水晶振動子が接続され、又はＥＸＴＡＬ端子から外部クロックが供給される。水晶振動子を利用する場合、この水晶振動子と回路１２とによって、発振回路が構成されるとみなすことができる。発振回路１２は、特に制限されないが、水晶振動子の固有振動数、又は外部クロックの周波数と同一の周波数のクロック信号φＯＳＣを生成する。発振器１２はスタンバイ制御回路１３４から発振器停止信号１３５が与えられ、スタンバイ状態において発振器停止信号１３５が活性状態にされることによって発振器１２は停止され、クロック信号φＯＳＣは例えばハイレベルに固定されてその変化が停止される。なお、発振器１２はデューティ補正回路を内蔵してもよい。また、発振器１２は分周器を内蔵して、水晶振動子又は外部クロックを２分周したクロック信号をφＯＳＣとして出力してもよい。これらについては、例えば、平成５年３月（株）日立製作所発行『Ｈ８／３００３
ハードウェアマニュアル』Ｐ５５３乃至Ｐ５６０に記載されている。
【００８９】
分周器１３０は、クロック信号φＯＳＣを入力して、例えば順次２分周を行い、クロック信号φＯＳＣ／２、φＯＳＣ／４、φＯＳＣ／８を生成する。セレクタ１３１は、クロック信号φＯＳＣ、φＯＳＣ／２、φＯＳＣ／４、φＯＳＣ／８を入力して、クロック制御レジスタ１３２のＭＳＭＥビット，ＣＫＳ１，ＣＫＳ０ビットで選択されたクロック信号を、システムクロック信号φＢとして出力し、シングルチップマイクロコンピュータにおける上記ＣＰＵ１などに供給する。或はφＯＳＣ／２、φＯＳＣ／４、φＯＳＣ／８の代りにカウントアップクロックφＯＳＣ／４ＵＰ、φＯＳＣ／８ＵＰ、φＯＳＣ／１６ＵＰを入力するようにしてもよい。セレクタ１３１によって選択内容を変更する場合、特に、変更前と変更後でクロック信号の位相を合わせるようなことは行わない。例えばクロック信号φＳ（セレクタ１３１内部で生成できる場合にはφ１Ｓ）の立ち上がりに同期して変更することによって、遷移時の最小パルス幅が、クロック信号φＳ（φＯＳＣ）のパルス幅以上になる。低消費電力状態として、クロック信号を停止する場合にはφＯＳＣがハイレベルとされ、クロック信号φＢ及びφＳもハイレベルとされる。図１０の（Ａ）にはＭＳＭＥビット、ＣＫＳ１ビット、ＣＫＳ０ビットの論理値によるクロック信号の選択態様の一例が示される。ＣＫＳ１，ＣＫＳ０はＭＳＭＥ＝”１”のとき有意とされ、ＭＳＭＥ＝”０”のときはＣＫＳ１，ＣＫＳ０に拘わらずφＳ＝φＯＳＣとされる。
【００９０】
図１０の（Ｂ）には、上記ＭＳＭＥビット、ＣＫＳ１ビット、ＣＫＳ０ビットによって制御されるセレクタの一実施例が示される。同図において、ＡＧ１０１は、ＣＫＳ１ビット、ＣＫＳ０ビット及びＭＳＭＥビットを受け、これらのビットが”１”のとき、”１”を出力するアンドゲート（論理積回路）であり、ＡＧ１０２は、ＣＫＳ０ビットの反転信号、ＣＫＳ１ビット及びＭＳＭＥビットを受け、ＣＫＳ０＝”０”、ＣＫＳ１＝”１”、ＭＳＭＥ＝”１”のとき、”１”を出力するアンドゲートであり、ＡＧ１０３は、ＣＫＳ１ビットの反転信号、ＣＫＳ０ビット及びＭＳＭＥビットを受け、ＣＫＳ１＝”０”、ＣＫＳ０＝”１”、ＭＳＭＥ＝”１”のとき、”１”を出力するアンドゲートである。ＡＧ１０４は、ＣＫＳ０ビットの反転信号、ＣＫＳ１の反転信号を受け、ＣＫＳ０＝”０”、ＣＫＳ１＝”０”のとき、”１”を出力するアンドゲートであり、ＮＧ１０１は、上記ＡＧ１０４の出力とＭＳＭＥビットの反転信号を受け、ＡＧ１０４の出力が”１”又はＭＳＭＥ＝”０”のとき、”１”を出力するオアゲート（論理和回路）である。そのため、オアゲートＮＧ１０１は、ＭＳＭＥビットが”０”のとき、又はＣＫＳ０ビットとＣＫＳ１ビットが共に”０”のときに、”１”を出力する。
【００９１】
ＡＧ１０５は、上記オアゲートＮＧ１０１の出力とクロック信号φＯＳＣを受けるアンドゲートであり、ＡＧ１０６は、上記アンドゲートＡＧ１０３の出力と分周されたクロック信号φＯＳＣ／２とを受けるアンドゲートであり、ＡＧ１０７は、上記アンドゲートＡＧ１０２の出力と分周されたクロック信号φＯＳＣ／４を受けるアンドゲートであり、ＡＧ１０８は、上記アンドゲートＡＧ１０１の出力と分周されたクロック信号φＯＳＣ／８を受けるアンドゲートである。これらのアンドゲートＡＧ１０５〜ＡＧ１０８の出力は、オアゲートＮＧ１０２に供給され、該オアゲートＮＧ１０２から上記システムクロック信号φＢが出力される。このように、セレクタを構成することにより、オアゲートＮＧ１０２からは、図１０の（Ａ）に示されている各ビットの組み合わせに従った周波数を有するシステムクロック信号φＢが出力される。
【００９２】
クロック制御レジスタ１３２及びモジュールストップ制御レジスタ１３３は、内部データバスＰＤＢに接続され、ＣＰＵ１からリード／ライト可能とされる。クロック制御レジスタ１３２は、ＭＳＭＥビット、ＣＫＳ１、ＣＫＳ０ビットを、セレクタ１３１に出力すると共に、ＳＳＢＹビットをスタンバイ制御回路１３４に出力する。モジュールストップ制御レジスタ１３３は、モジュールストップ信号ＭＳＴＰを各機能ブロックに供給する。スタンバイ制御回路１３４は、例えば、フリップフロップで構成され、制御レジスタ１３２のＳＳＢＹビットが論理値”１”の状態で、ＣＰＵ１がスリープ命令を実行する（スリープ命令実行信号が活性状態）と、かかるフリップフロップがセット状態にされる。このフリップフロップのセット状態により、発振器停止信号１３５が活性状態になり、発振器１２の発振動作が停止されてシングルチップマイクロコンピュータはスタンバイ状態となる。また、スタンバイ状態で外部割り込み要求やリセットが発生すると、例えば、割り込みコントローラ４の制御によって、スタンバイ解除信号１３６が活性状態になり、前記フリップフロップはリセット状態にされる。このリセット状態によって、発振器停止信号１３５が非活性状態になり、発振器１２の発振動作が再開されてスタンバイ状態が解除される。スタンバイ状態解除時に、発振安定時間を設けるようにするとよいが、解除の詳細な手順や構成は本発明に直接の関係がないので、その詳細な説明は省略する。尚、ＣＰＵ１がスリープ命令を実行するとＣＰＵ１内部の動作クロックは停止される。ＳＳＢＹビットが論理値”０”にされているときにＣＰＵ１がスリープ命令を実行したときはクロック発振器１２の発振動作は停止されない。ＣＰＵ１がスリープ命令を実行して当該ＣＰＵ１にセットされた状態（ＣＰＵ１のスリープ状態）は割り込みやリセットによって解除可能にされる。
【００９３】
図１１の（Ａ），（Ｂ）にはモジュールストップモードを制御するモジュールストップ制御レジスタ１３３のレジスタ構成と中速モードを制御するクロック制御レジスタ１３２のレジスタ構成例が示されている。図１２の（Ａ）〜（Ｃ）、図１３の（Ａ）〜（Ｂ）、及び図１４の（Ａ）〜（Ｃ）にはそれらレジスタの各ビットの詳細が示されている。
【００９４】
モジュールストップ制御レジスタ１３３は、ＣＰＵ１によってリード／ライト可能な８ビットのレジスタで、ビットＭＳＴＰ７〜ＭＳＴＰ３を有し、ＭＳＴＰ７はデータトランスファコントローラ（ＤＴＣ）２、ＭＳＴＰ６はタイマ７、ＭＳＴＰ５はウオッチドッグタイマ（ＷＤＴ）８、ＭＳＴＰ４はシリアルコミュニケーションインタフェース（ＳＣＩ）９、ＭＳＴＰ３はＡ／Ｄ変換器１０に対応する。図１２の（Ａ）〜（Ｃ）及び図１３の（Ａ）〜（Ｂ）に示されているように、これらにより、機能ブロック単位で、別々にモジュールストップ状態を指定することができる。ＰＷＭタイマ７のための上記モジュールストップ信号ＭＳＴＰＰＷＭは、ビットＭＳＴＰ６が論理値”１”にセットされることによって活性状態にされる。ビットＭＳＴＰ５に設定された論理値”１”は図７の（Ｃ）に基づいて説明した通り、実質的にウオッチドッグタイマモードでないときに有効とされる。電源投入後或いはリセット後におけるこれらのビットの初期値は、特に制限されないが、論理値”１”であり、リセット後は、モジュールストップ状態とされる。動作開始直後の消費電流を低減するようにしている。例えば、モジュールストップ状態の機能ブロックと、動作状態の機能ブロックの論理規模の比に応じて、消費電流が低減される。例えば、斯る比率を４：６とすると、消費電流は６／１０に低減できる。
【００９５】
プリスケーラ１４は、プリスケーラクロック信号の供給対象であるタイマ７、ＷＤＴ８、ＳＣＩ９、Ａ／Ｄ変換器１０が全てモジュールストップ状態とされた時、即ち、ＭＳＴＰ６〜ＭＳＴＰ３ビットが全て”１”にセットされ、且つＷＤＴ８がウオッチドッグタイマモードでないときに、プリスケーラモジュールストップ信号ＭＳＴＰＰＳＣが活性状態になって、停止状態とされる。図９に従えばプリスケーラ１４のためのモジュールストップ信号ＭＳＴＰＰＳＣはビットＭＳＴＰ６〜ＭＳＴＰ３に対応するモジュールストップ信号とウオッチドッグタイマモード信号ＷＤＴＭの反転信号との論理積を採る論理積回路１３７によって形成される。なお、モジュールストップ制御レジスタ１３３のビット２〜ビット０はリザーブビットであり、リードすると”０”が読み出され、ライトは無効とされる。
【００９６】
クロック制御レジスタ１３２は、図１１の（Ａ）に示されるようにＳＳＢＹ、ＭＳＭＥ、ＣＫＳ１、ＣＫＳ０の４ビットを有する。図１４の（Ａ）に示されるように、ＳＳＢＹビットはスタンバイ状態への遷移を制御する。ＳＳＢＹビットが論理値”１”にセットされた状態で、ＣＰＵ１がスリープ命令を実行すると、クロック発振器１２の発振動作が停止されて、シングルチップマイクロコンピュータはスタンバイ状態に遷移し、ＳＳＢＹビットが論理値”０”にクリアされた状態で、ＣＰＵ１がスリープ命令を実行すると、ＣＰＵ１内部のクロック信号が停止されてＣＰＵ１は所謂スリープ状態に遷移する。このようなスタンバイ状態では、シングルチップマイクロコンピュータ全体が停止するが、スリープ状態では、ＣＰＵ１のみが停止する。
【００９７】
図１４の（Ｂ）及び図１４の（Ｃ）に示されているように、ビットＭＳＭＥは中速モードの許可ビットであり、このビットが論理値”１”にセットされているときにのみ、ビットＣＫＳ１、ＣＫＳ０によるクロック信号の指定が有効になる。斯るビットＭＳＭＥ、ＣＫＳ１、ＣＫＳ０がセレクタに供給されることにより、φＯＳＣ、φＯＳＣ／２、φＯＳＣ／４、φＯＳＣ／８から、マイクロコンピュータのシステムクロック信号φＢが選択される。なお、システムクロック信号φＢの１周期の時間を１ステートと呼ぶ。クロック信号φＢとしてクロック信号φＯＳＣ以外のクロックが選択された状態を中速モードと呼ぶ。なお、ビット６乃至ビット３はリザーブビットであり、リードすると”０”が読み出され、ライトは無効である。
【００９８】
図１５には本実施例のシングルチップマイクロコンピュータにおけるシステムクロック信号に着目した概略的な動作フローチャートが示されている。リセット直後、シングルチップマイクロコンピュータは、モジュールストップ状態とされ、ＣＰＵ１などのバスマスタは高速モード（φＢ＝φＯＳＣ）で動作を開始する。そして中速モードかの判定が行われ（ＳＴ１）、高速動作が必要でなければクロック制御レジスタに所望の値をライトして、中速モードに遷移する（ＳＴ２）。動作を必要とする機能ブロックに対応しては、モジュールストップ制御レジスタに所望の値をライトして、所要の機能ブロックに対するモジュールストップ状態を解除をする（ＳＴ３）。その後、各機能ブロックの設定を行う（ＳＴ４）。例えば、各機能ブロックの制御レジスタなどに所望の値を初期的にライトすることによって行う。そしてＣＰＵ１により所望の処理が行われるが（ＳＴ５）、その際に高速処理が必要でなければ中速モードに遷移可能にするために、クロック信号φＢを変化させるべきかを判定して（ＳＴ６）、その結果に従ってクロック制御レジスタが設定される（ＳＴ７）。特定の機能ブロックを動作させる必要がなくなったり、特定の機能ブロックの動作が新たに必要になったときに対処するために動作させるべき回路モジュール（機能ブロック）に変更が有るかの判定が行われ（ＳＴ８）、変更すべきときにはモジュールストップ制御レジスタに所望の値をライトして、モジュールストップ状態を変更する（ＳＴ９）。そしてスタンバイ状態にすべきか否かを判定し（ＳＴ１０）、マイクロコンピュータ全体の動作を中断する必要があれば、ＳＳＢＹビットを”１”にセットして、スリープ命令を実行し（ＳＴ１１）、スタンバイ状態に遷移する（ＳＴ１２）。外部割り込みが発生すると、スタンバイ状態から復帰して動作を再開する（ＳＴ１３）。上述のようにスタンバイ状態においてモジュールの内部状態は保持されているので、スタンバイ状態の解除後は各機能ブロックの設定例えば各機能ブロックの制御レジスタなどへのライトを行う必要はない。上記の各ステップにおけるレジスタの設定はプログラムによって行う。例えば、レジスタを指定し、それにデータをライトする命令を、ＣＰＵ１によって実行することにより、レジスタへの設定が行われる。
【００９９】
《割込み要求等に伴うφＢの切換え》　本発明者らの検討によれば、低消費電力化のためのクロックの切り換えをソフトウェアで行うと、所定のイベント例えばＣＰＵ１への割り込みが発生してＣＰＵ１を高速処理させる必要がある場合、かかるイベントを割込として認識し、割込例外処理を実施し、その割込処理ルーチンの中で、システムクロックの分周比を切り換えた後に、所望の処理をすることになってしまう。これでは、前記イベントが発生してから、所望の処理をするまでの動作速度を速めることができず、割り込みに対する応答時間が長くなってしまい、都合が悪い。本実施例では、割込要求や転送要求などの所定のイベントが発生すると、制御ビットＭＳＭＥが自動的に論理値”０”にクリアされ、ＣＰＵ１やＤＴＣ２をクロック信号φＢの最高周波数であるφＯＳＣに同期動作させる高速モードに遷移できるようになっている。割込み例外処理からのリターン時に、ビットＭＳＭＥは論理値”１”にセットされる。ソフトウェアでビットＭＳＭＥを論理値”１”にセットすると、設定済の制御ビットＣＫＳ０，ＣＫＳ１に従った動作モードになる。ＤＴＣ起動要求（ＤＴＣ転送要求）が発生すると、同様に制御ビットＭＳＭＥビットが、自動的に論理値”０”にクリアされ、ＣＰＵ１及びＤＴＣ２は高速モードに遷移する。ＤＴＣデータ転送が終了すると、ＭＳＭＥビットが、自動的に論理値”１”にセットされ、設定済の制御ビットＣＫＳ０，ＣＫＳ１に従った動作モードになる。ＤＴＣ２に外部からの転送リクエスト端子があれば、外部からの転送要求があった場合も同様にすることができる。
【０１００】
図１６にはＭＳＭＥビットの概略ブロック図が示される。ＭＳＭＥビットは、例えばセット・リセット型のフリップフロップ１３２０を主体として構成される。フリップフロップ１３２０のデータ入力端子Ｄは内部データバスＰＤＢの所定の信号線に接続され、クロック入力端子Ｃは、論理積回路１３２１の出力、即ちＣＰＵ１のバス権を示す信号とライト信号とアドレスデコード信号との論理積信号とされる。なお、上記アドレスデコード信号は、アドレスバスＩＡＢの内容を解読して得られる信号であり、クロック制御レジスタ１３２のアドレスが与えられたことを示す信号である。出力端子Ｑは、クロック制御回路１３のセレクタ１３１に与えられると共に、クロックドバッファ１３２２を介してデータバスに出力される。クロックドバッファ１３２２は上記デコード信号とリード信号を入力とする２入力の論理積回路１３２３のハイレベル出力によって出力動作可能にされ、それ以外の状態においては高出力インピーダンス状態にされる。リセット入力端子Ｒには、リセット信号とＤＴＣ転送要求信号とＣＰＵ割り込み信号との論理和信号が論理和回路１３２４から与えられる。セット入力端子Ｓには、ＤＴＣ転送終了信号１３２５が与えられる。ＤＴＣ転送終了信号１３２５は、ＤＴＣ２から出力され、例えばデータ転送終了時にＤＴＣ２が活性化する。上記リセット信号としては、外部からのリセット信号ＲＥＳ又はウオッチドッグタイマＷＤＴ８の出力信号が使われる。また、上記ＤＴＣ転送要求信号は、割込みコントローラ４から供給され、上記ＣＰＵ割込み信号も、割込みコントローラ４から供給される。
【０１０１】
上記ＣＰＵ割り込み信号及びＤＴＣ転送要求信号はイベント発生信号とされる。ＤＴＣ２が割り込みコントローラ４からのＤＴＣ転送要求以外に外部からの転送要求の入力端子を持つ場合には、当該外部からの転送要求信号と割り込みコントローラからの転送要求信号との論理和信号がＤＴＣ転送要求信号として上記論理和回路１３２４に供給される。なお、ＣＰＵ１のマスク情報を参照して、ＣＰＵ１のマスクレベル以下の割り込み要求が発生しても、イベントとして認識されない。割り込みマスクについては、例えば、平成５年３月（株）日立製作所発行『Ｈ８／３００３　ハードウェアマニュアル』Ｐ８９乃至Ｐ１１５に記載されている。
【０１０２】
図１７には割り込み要求発生時における動作タイミングの一例が示される。ビットＣＫＳ１が”０”にクリアされ、ビットＣＫＳ０が”１”にセットされ、ビットＭＳＭＥが”１”にセットされた状態で、φＢ＝φＯＳＣ／２で動作している状態（中速モードの状態）において、ステートＳ５で、割り込み要求信号が発生すると、ＭＳＭＥビットが”０”にクリアされ、φＢ＝φＯＳＣとなり、ＣＰＵ１及びＤＴＣ２などは高速モードにされる。ＣＰＵ１が、割り込み例外処理を行い、高速モードで処理すべき処理を終了すると、ＣＰＵ１はその動作プログラムに従ってＭＳＭＥビットをソフトウェアで”１”にセットする。例えばステートＳ１５でＭＳＭＥビットが”１”にセットされ、φＢ＝φＯＳＣ／２とされ、その後ＣＰＵ１はリターン命令を実行して、元の処理に遷移される。
【０１０３】
図１８にはＤＴＣ起動要求発生時における動作タイミングの一例が示される。図１７と同様に、まず、ＣＰＵ１は、中速モード（ビットＣＫＳ１が”０”にクリアされ、ビットＣＫＳ０が”１”にセットされ、ビットＭＳＭＥが”１”にセットされた状態で、φＢ＝φＯＳＣ／２とされている）で動作している。このときＤＴＣの起動要因となっているＤＴＣ転送要求が発生すると、ビットＭＳＭＥが”０”にクリアされ、φＢ＝φＯＳＣとされてＣＰＵ１及びＤＴＣ２などが動作される。ＤＴＣが起動されると、例えば起動要因となった割り込み要因がクリアされ、データ転送が行われる。必要なデータ転送が終了すると、ＤＴＣ２からのＤＴＣ転送終了信号１３２５が活性状態になり、これによってＭＳＭＥビットが”１”にセットされ、ＣＰＵ１などの機能ブロックの動作速度は元の速度に戻される。
【０１０４】
《インタフェース信号》　図１９にはバスマスタとバススレーブとのインタフェースの一例が概略的に示されてい。同図にはインタフェース信号Ｉ／Ｆ１とＩ／Ｆ２が代表的に示されている。図２０にはバスマスタクロックとバススレーブクロックの一例のタイミングが示されている。本実施例に従えばバスマスタは、クロック信号φＢに同期動作されるＣＰＵ１及びＤＴＣ２であり、バススレーブはクロック信号φＳに同期動作されるＷＤＴ８やＳＣＩ９などの機能ブロックを意味する。
【０１０５】
クロック信号φＢは、上記セレクタ１３１による選択状態に応じてクロック信号φＳよりも常に周期が長いか同等にされ、クロック信号φＢの立ち下がりエッジはφＳの立ち上がりエッジに同期している。φ１Ｓ，φ２ＳはφＳから生成されたノーオーバラップの２相クロック信号であり、φ１Ｂ，φ２ＢはφＢから生成されたノーオーバラップの２相クロック信号である。図２０においてクロック信号φＢのデューティは５０％以上にされている。クロック信号φＢは、例えばクロック信号φＳに相当するクロック信号φＯＳＣをデューティ５０％で２分周した信号と４分周した信号との論理和によって形成することができる。或はカウントアップ信号φＯＳＣ／８ＵＰの反転としてもよい。特に図２０の例では、クロック信号φ１Ｂのローレベル期間はクロック信号φ１Ｓのローレベル期間に一致され、クロック信号φ２Ｂのハイレベル期間はクロック信号φ２Ｓのハイレベル期間に一致されている。換言すれば、クロック信号φ１Ｂのローレベルのパルス幅はクロック信号φ１Ｓのそれと等しく、クロック信号φ２Ｂのハイレベルのパルス幅はφ２Ｓのそれと等しくされている。
【０１０６】
図１９の例ではバスマスタの出力信号はクロック信号φ１Ｂのハイレベルへの変化に同期して、出力され、バスマスタへの入力信号は、クロック信号２Ｂのハイレベルからローレベルへの変化に同期してラッチされる。バススレーブへの入力信号は、クロック信号φ２Ｓのハイレベルからローレベルへの変化に同期してラッチされ、バススレーブの出力信号はクロック信号φ１Ｓのハイレベルへの変化に同期して、出力される。図２０を参照すると、バスマスタは、クロック信号φＢ及びφ１Ｂのハイレベル期間に同期して出力し、バススレーブは、φＳ及びφ１Ｓのハイレベル期間に同期して、出力する。また、バスマスタは、クロック信号φＢがローレベルでφ２Ｂがハイレベルの期間に、入力する（ラッチは、クロック信号φ２Ｂのハイレベルからローレベルへの変化に同期して行われる）。バススレーブは、φＳがローレベルでφ２Ｓがハイレベルの期間に、入力する（ラッチはクロック信号φ２Ｓのハイレベルからローレベルへの変化に同期して行われる）。例えば、図２０において、インタフェース信号Ｉ／Ｆ１はバスマスタからバススレーブへのインタフェース信号とされる。インタフェース信号Ｉ／Ｆ１は、ステートＳ９のφ１Ｂのハイレベルへの変化に同期してバスマスタから出力され、ステートＳ９のφ２Ｓのハイレベルからローレベルへの変化に同期してバススレーブにラッチされる。また、インタフェース信号Ｉ／Ｆ２はバススレーブから、バスマスタへのインタフェース信号とされる。インタフェース信号Ｉ／Ｆ２は、ステートＳ３のφ１Ｓのハイレベルへの変化に同期してバススレーブから出力され、ステートＳ４のφ２Ｂのハイレベルからローレベルへの変化に同期してバスマスタにラッチされる。したがって、信号の出力開始から取り込みまで、必ず、クロック信号φＳの１ステート以上の期間を確保できる。これにより、タイミング設計は、中速モードを考慮しない場合、即ちφＢ＝φＯＳＣとした場合と同様にすることができる。
【０１０７】
図２１及び図２２には入出力制御のための同期クロック信号を図１９及び図２０と逆にした場合が示される。図２１の例ではバスマスタの出力はクロック信号φ２Ｂのハイレベルへの変化に同期され、バスマスタへの入力はクロック信号１Ｂのハイレベルからローレベルへの変化に同期してラッチされる。バススレーブへの入力はクロック信号φ１Ｓのハイレベルからローレベルへの変化に同期してラッチされ、バススレーブの出力はクロック信号φ２Ｓのハイレベルへの変化に同期される。図２２を参照すると、バスマスタの出力はクロック信号φＢのローレベル及びφ２Ｂのハイレベル期間に、バススレーブの出力はφＳのローレベル及びφ２Ｓのハイレベル期間に同期して行われる。バスマスタの入力はクロック信号φＢ及びφ１Ｂがハイレベルの期間に行われる（ラッチはクロック信号φ１Ｂのハイレベルからローレベルへの変化に同期して行われる）、バススレーブの入力はφＳ及びφ１Ｓがハイレベルの期間に行われる（ラッチはクロック信号φ１Ｓのハイレベルからローレベルへの変化に同期して行われる）。例えば、図２２において、インタフェース信号Ｉ／Ｆ１はバスマスタからバススレーブへのインタフェース信号とされる。インタフェース信号Ｉ／Ｆ１は、ステートＳ４のφ２Ｂのハイレベルへの変化に同期してバスマスタから出力され、ステートＳ５のφ１Ｓのハイレベルからローレベルへの変化に同期してバススレーブにラッチされる。また、インタフェース信号Ｉ／Ｆ２はバススレーブから、バスマスタへのインタフェース信号とされる。インタフェース信号Ｉ／Ｆ２は、ステートＳ７のφ２Ｓのハイレベルへの変化に同期してバススレーブから出力され、ステートＳ１２のφ１Ｂのハイレベルからローレベルへの変化に同期してバスマスタにラッチされる。したがって、信号の出力開始から取り込みまで、必ず、クロック信号φＳの１ステート以上の期間を確保できる。これにより、タイミング設計は、中速モードを考慮しない場合、即ちφＢ＝φＯＳＣとした場合と同様にすることができる。
【０１０８】
図２０及び図２２に示されるように、バスマスタの動作クロック（φ１Ｂ，φ２Ｂ）は、バススレーブの動作クロック（φ１Ｓ，φ２Ｓ）に比べ周波数が低いため、バスマスタからバススレーブへのインタフェース信号は、必ず、当該バスマスタの出力ステートと同じステートでバススレーブが認識できる。そのため、バスマスタのステート単位で、インタフェース信号は任意のパルス幅とすることができる。かかるインタフェース信号には、リード信号・ライト信号などのバスアクセス信号、或いは割込要因クリア信号などを割り当てることができる。
【０１０９】
図２０及び図２２に示されるように、バススレーブの動作クロックはバスマスタの動作クロックに比べ周波数が高いため、バススレーブからバスマスタへのインタフェース信号は、バススレーブの出力後、バスマスタに認識されるタイミング（当該バススレーブのステート）を一定にすることはできない。したがって、これらのインタフェース信号は、所謂ハンドシェーク信号とするのが良い。かかるインタフェース信号には、割込要求信号信号、或いはＤＴＣ起動要求信号などを割り当てることができる。例えば、割込要求信号は、一旦、要因フラグが”１”にセットされ、活性状態になると、これを保持する。ＣＰＵが割込要求信号を認識して、割込要因フラグを”０”にクリアすると、割込要求信号が非活性状態になるようにされる。また、これらのインタフェース信号は１ステートで認識されるようにはしない。１ステート期間のみで使用する場合には、入力側でエッジ検出を行うようにする。尚、そのときの出力期間を、選択可能なシステムクロック信号φＢの最長の周期即ちクロック信号φＯＳＣ／８の周期以上の期間とすれば、ハンドシェークは一切要しない。
【０１１０】
バスマスタ間、或いはバススレーブ間の要求信号は任意のタイミングとすることができる。
【０１１１】
図２３にはバスマスタクロックとバススレーブクロックの別の動作タイミングが示される。図２０及び図２２とは相違して、クロック信号φＢは中速モードでもデューティ５０％とされる。クロック信号φＢはφＳよりも常に周期が同等か長く、クロック信号φＢの立ち上がりエッジはφＳの立ち上がりエッジに同期している。各機能ブロック間のインタフェース信号の入出力タイミングは図１９と同様であり、詳しくは次の通りである。すなわち、バスマスタ（バススレーブ）は、φＢとφ１Ｂのハイレベル期間（φＳとφ１Ｓのハイレベル期間）に同期して出力が許容される（出力信号変化が許容される）。信号入力に関してバスマスタ（バススレーブ）は、φＢがローレベルでφ２Ｂがハイレベルの期間（φＳがローレベルでφ２Ｓがハイレベルの期間）に入力が許容される。バスマスタの入力ラッチタイミングはクロック信号φ２Ｂのハイレベルからローレベルへの変化に同期され、バススレーブの入力ラッチタイミングはクロック信号φ２Ｓのハイレベルからローレベルへの変化に同期される。例えば、図において、インタフェース信号Ｉ／Ｆ１はバスマスタから、バススレーブへのインタフェース信号とされる。インタフェース信号Ｉ／Ｆ１は、ステートＳ９のφ１Ｂに同期してバスマスタから出力され、ステートＳ９のφ２Ｓのハイレベルからローレベルへの変化に同期してバススレーブにラッチされる。また、インタフェース信号Ｉ／Ｆ２はバススレーブから、バスマスタへのインタフェース信号とされる。インタフェース信号Ｉ／Ｆ２は、ステートＳ３のφ１Ｓに同期してバススレーブから出力され、ステートＳ４のφ２Ｂのハイレベルからローレベルへの変化に同期してバスマスタにラッチされる。従って、信号の出力開始から取り込みまで、必ず、クロック信号φＳの１ステート以上の期間を確保できる。これにより、タイミング設計は、中速モードを考慮しない場合、即ちφＢ＝φＯＳＣとした場合と同様にすることができる。
【０１１２】
図２３のタイミングにおいて着目すべき点は、クロック信号φ２Ｂの立ち上がりがクロック信号φ１Ｓの立ち上がりタイミングに一致され、この点においてクロック信号φ２Ｂとφ１Ｓとは部分的に位相が一致されている。この位相が一致したタイミングにおいて、バススレーブからバスマスタへの信号出力が行われるようになっている。
【０１１３】
このとき、図２３のクロック信号を用いたインタフェース制御タイミングを図２１のように逆にした場合には、φＢとφＳとの位相によって、信号の出力開始から取り込みまでの時間が確保できない場合があり、信号が正しく伝達できない場合がある。例えば、バススレーブが図２３のステートＳ６におけるφ２Ｓの立ち上がりに同期して信号を出力したとき、バスマスタはステートＳ７におけるφ１Ｂの立ち下がりに同期して入力データをラッチすることが許容され、信号出力からその信号の入力ラッチまでの間にクロック信号φＳの１／２周期しか確保することができない。これは、信号が１本だけの場合には問題にならなくても、信号が複数存在するバスのような場合、複数の信号の内、旧い信号が伝達されるものと、新しい信号が伝達されるものが混在することが発生し、これらの組み合わせによって意味をなす場合に無意味なデータとなってしまったり、誤動作の原因となったりする場合がある。
【０１１４】
図１９のようなインタフェース仕様で図２３のようなクロック信号波形を利用する場合には、図２３に示されるように、バスマスタの動作クロックがバススレーブの動作クロックに比べて周波数が低いため、バスマスタから、バススレーブへのインタフェース信号は、必ず、バスマスタの出力と同じステートでバススレーブに認識される。そのため、ステート単位で、インタフェース信号は、任意のパルス幅とすることができる。かかるインタフェース信号には、リード信号・ライト信号などのバスアクセス信号、或いは割込要因クリア信号などを割り当てることができる。
【０１１５】
バススレーブの動作クロックがバスマスタの動作クロックに比べ周波数が高いため、図２３においてバススレーブから、バスマスタへのインタフェース信号は、バススレーブの出力後、バスマスタに認識されるタイミング（当該バススレーブのステート）を一定にすることはできない。したがってそれらのインタフェース信号は、所謂ハンドシェーク信号とすることが良い。かかるインタフェース信号には、割込要求信号信号、或いはＤＴＣ起動要求信号などを割り当てることができる。尚、そのときの出力期間を、選択可能なシステムクロック信号φＢの最長の周期即ちクロック信号φＯＳＣ／８の周期以上の期間とすれば、ハンドシェークは一切要しない。
【０１１６】
ここで図２０及び図２２のクロック信号波形について更に説明を加える。図２０、図２２より明らかなようにφ２Ｂのハイレベル期間はφ１Ｓのローレベル期間に含まれる。従ってφ１Ｓの立ち上がりに同期するバススレーブの出力からφ２Ｂの立ち下がりに同期するバスマスタの入力信号ラッチ動作までには実質的にφＳの１ステート分の余裕時間を少なくとも確保することができる。またφ２Ｓのハイレベル期間はφ１Ｂのローレベル期間に含まれる。従ってφ１Ｂの立ち上がりに同期するバスマスタの出力からφ２Ｓの立ち下がりに同期するバススレーブの入力信号ラッチ動作までには実質的にφＳの１ステート分の余裕時間を少なくとも確保することができる。これらのことは、図１９，図２１の双方のインタフェース仕様に対して成立する。これに対し、図２３のようにクロック信号φ２Ｂのハイレベルへの立ち上がり変化とφ１Ｓのハイレベルへの立ち上がり変化との位相が一致している関係のクロック信号φ１Ｓ，φ２Ｓ，φ１Ｂ，φ２Ｂなどを用いる場合には、当該位相一致のタイミングをバススレーブからバスマスタへの信号出力タイミングとして利用するバスインタフェース仕様（例えば図１９のインタフェース仕様）においてのみ、信号の出力から当該信号の入力ラッチまでにφＳの１ステート分の余裕時間を確保することができる。
【０１１７】
《実際のバスインタフェースタイミング例》　図２４及び図２５には実際のバスインタフェースタイミングの一例が示される。各図のタイミングは、図２０及び図２２に示されるクロック信号を利用した場合のもので、上述のようにそのインタフェース仕様は図１９、図２１の何れも全く同様に利用できるため、信号の種類に応じて最適な何れか一方のインタフェース仕様が採用されている例である。各図において、バスマスタからは、アドレス（ＰＡＢ経由）、機能ブロック信号（ＭＳ＃）、リード信号ＲＤ＃、ライト信号ＷＲ＃が与えられる。図２４においてステートＳ５から、バスマスタのリード動作が行われる。すなわち、ステートＳ５からステートＳ１６まで、アドレスバス及び機能ブロック選択信号（ＭＳ＃）が有効になる。バスマスタの第１ステート（ステートＳ５からＳ８）のφ２Ｂに同期して、リード信号ＲＤ＃が活性状態（ローレベル）になる。バススレーブはこのリード信号ＲＤ＃の活性状態への遷移を検出して、レジスタリード信号及びバスインタフェースラッチ信号を当該バススレーブ内部で活性状態にする。例えば図６において、レジスタ７７１またはタイマカウンタ７７２などが、レジスタリード信号により指定され、指定されたレジスタ，カウンタからモジュールデータバスを介して、バスインタフェース７６０に、データが転送され、ラッチされる。レジスタリード信号などのバススレーブ内の制御信号は例えば図６のリードライト制御回路７３０の出力制御信号に含まれる。そしてステートＳ９における次のφ２Ｓに同期して、前記ラッチされたデータがデータバスに出力される。リード信号ＲＤ＃が非活性状態とされた後、ステートＳ１６の次のステートにおけるφ１Ｓの変化に同期して、データバスがハイインピーダンス状態にされる。リード信号ＲＤ＃はバスマスタの第３ステート（ステートＳ１３からＳ１６）のφ２Ｂの立ち上がりに同期して非活性状態にされる。バスマスタはこのクロック信号φ２Ｂの立ち下がりに同期してデータバスの内容をラッチする。
【０１１８】
図２５においてはステートＳ５から、バスマスタのライト動作が行われる。ステートＳ５からステートＳ１６まで、アドレスバス及び機能ブロック選択信号（ＭＳ＃）が有効になる。バスマスタの第１ステート（ステートＳ５からＳ８）におけるφ２Ｂの立ち上がりに同期して、ライトデータがデータバスに出力される。バスマスタの第２ステート（ステートＳ９からＳ１２）のφ１Ｂの立ち上がりに同期して、ライト信号ＷＲ＃が活性状態（ローレベル）になる。バススレーブはこのライト信号ＷＲ＃の活性状態への遷移を検出して、バスインタフェースラッチ信号及びレジスタライト信号を活性状態にする。ライトデータがバスインタフェースにラッチされ、バスインタフェースから、モジュールデータバスを介して、指定されたレジスタまたはタイマカウンタなどに、データが転送され、ライトされる。かかる信号は例えば図６のリードライト制御回路７３０の出力する制御信号に含まれる。バスマスタの第３ステート（ステートＳ１３からＳ１６）におけるφ２Ｂの立ち上がりに同期して、ライト信号が非活性状態になる。
【０１１９】
《クロック信号φの外部出力》　図２６に示されるようにシングルチップマイクロコンピュータは、外部にシステムクロック信号φＳ，φＢを出力することができる。すなわち、システムクロック信号φＳを、他の半導体集積回路装置などの基準クロックにする場合と、システムクロック信号φＢをもとにして外部バスに同期した制御信号を生成する場合とがある。本発明においては、他の半導体集積回路装置などの基準クロックにするためにシステムクロック信号φＳを、また、外部バスに同期した制御信号を生成するためにシステムクロック信号φＢを出力可能にする。そのための出力端子ＴφＳ，ＴφＢは所定の入出力ポートＩＯＰにそれぞれ独立に設けられる。例えば、クロック信号φＳの出力は入出力ポートＩＯＰ６０に、クロック信号φＢの出力は入出力ポートＩＯＰ６１に割り当てられている。入出力ポートＩＯＰ６０，ＩＯＰ６１はその他の入出力機能に兼用され、図１に示される入出力ポートＩＯＰ６に含まれる。
【０１２０】
このとき、クロック信号φＳ及びφＢはクロック制御回路１３で生成され、外部には上述の入出力ポートＩＯＰ６０，ＩＯＰ６１を介して出力される。クロック信号φＳ及びφＢは、半導体集積回路内では実質的に最高速の部類の信号である。また、クロック制御回路１３と入出力ポートＩＯＰ６０，ＩＯＰ６１との間の配線１３１０，１３１１は機能ブロック間に延在され、比較的大きな容量成分を持つ。したがってそのようなクロック信号の外部出力に際してはその比較的大きな容量成分と高いクロック周波数により消費電流も大きくなる。
【０１２１】
これらφＳ又はφＢの外部出力は、必要な動作であるので、電流を消費するのは止むを得ない。しかしながら、シングルチップマイクロコンピュータなどでは、外部にクロックを出力する必要がない場合も多い。クロック出力を停止することは、例えば、特願昭６０−１８４２０７号に記載されているように、低消費電力化のほか、カップリングノイズの低減、不要輻射の低減に効果がある。これに対応するため、本実施例では、クロック信号φＳまたはφＢを外部に出力しない場合には、クロック制御回路１３と入出力ポートＩＯＰ６０，ＩＯＰ６１と間の信号を例えば論理値”０”のレベルに固定し、クロック配線１３１０，１３１１上で信号変化が発生しないようにして、消費電流を低減するようになっている。例えば図２６に概略的に示されるように、クロック制御回路１３にて生成されたクロック信号φＳの外部出力用に論理積回路１３００とクロックドライバ１３０２の直列回路が設けられ、クロックドライバ１３０２の出力がクロック配線を介して入出力ポートＩＯＰ６０に接続される。同様にクロック制御回路１３にて生成されたクロック信号φＢの外部出力用に論理積回路１３０１とクロックドライバ１３０３の直列回路が設けられ、クロックドライバ１３０３の出力がクロック配線を介して入出力ポートＩＯＰ６１に接続される。入出力ポートＩＯＰ６０，ＩＯＰ６１に対する出力の許可は対応する入出力ポートＩＯＰ６の図示しないデータディレクションレジスタの対応するビットＤＤＲ６０，ＤＤＲ６１を用いることができる。ビットＤＤＲ６０，ＤＤＲ６１を論理値”１”にセットすればＩＯＰ６０，ＩＯＰ６１は出力許可状態とされる。これはφＳとφＢに対して独立に制御可能である。このとき、上記論理積回路１３００の他方の入力には出力許可ビットＤＤＲ６０の反転信号が供給され、論理積回路１３０１の他方の入力には出力許可ビットＤＤＲ６１の反転信号が供給される。したがって、ＩＯＰ６０，ＩＯＰ６１にクロック信号φＳ，φＢの出力が許可されていない状態においては論理積回路１３００，１３０１の出力がローレベルに固定される。これによって、外部にクロック信号φＳ，φＢを出力しないときにはクロックドライバ１３０２，１３０３以降のクロック配線での消費電力を低減でき、その上、カップリングノイズや不要輻射（不所望な電波の発生）を低減することができる。
【０１２２】
図２７にはクロック信号φＳ又はφＢの何れか一方を選択的に外部出力可能にした場合の変形例が示される。このときクロック制御レジスタ１３２には図２８の（Ａ）及び（Ｂ）に示されるＰＨＩＳビットが備えられる。図２８の（Ｂ）に示されるように、ＰＨＩＳビットが論理値”１”のときはクロック信号φＳを、論理値”０”のときはクロック信号φＢを外部に出力することを指示するものとされる。出力すべきクロック信号の選択は論理積回路１３０４，１３０５と論理和回路１３０６から成るセレクタによって行われる。このセレクタで選択されたクロック信号の外部出力の許可は上記入出力ポートＩＯＰ６０に対する出力許可ビットＤＤＲ６０にて行われ、当該出力許可ビットは図２６の場合と同様に反転されて論理積回路１３０７に供給され、出力許可ビットＤＤＲ６０によってクロック信号が出力許可される場合にだけセレクタの出力クロック信号が論理積回路１３０７及びクロックドライバ１３０８からクロック配線を介して入出ポートＩＯＰ６１に与えられるようになっている。クロック信号の外部端子Ｔφへの出力が禁止されているときは、上記同様論理積回路１３０７の出力が論理値”０”に固定され、その結果クロックドライバ１３０８以降のクロック配線での消費電力の低減などを実現することができる。
【０１２３】
《内部バスの多分割》　図２９にはシングルチップマイクロコンピュータの内部バスのその他の分割例が示されている。図２９は特にシングルチップマイクロコンピュータの内部バスに着目したブロック図である。バッファＢＵＦは入出力ポートＩＯＰ１〜ＩＯＰ５に含まれ、外部アドレスバス及び外部データバスとインタフェースされるバッファ回路である。
【０１２４】
図１に示される内部アドレスバスＰＡＢ及び内部データバスＰＤＢは、図２９においてそれぞれ、内部アドレスバスＰＡＢ１及び内部データバスＰＤＢ１と、内部アドレスバスＰＡＢ２及び内部データバスＰＤＢ２に分割されており、内部バスＰＡＢ１及びＰＤＢ１には入出力ポートＩＯＰ１〜ＩＯＰ６、ＷＤＴ８、スタティックラッチ回路ＨＤ１が結合され、内部バスＰＡＢ２及びＰＤＢ２にはＩＯＰ７〜１１、タイマ７、ＳＣＩ９、Ａ／Ｄ変換器１０、及びスタティックラッチ回路ＨＤ２が接続される。
【０１２５】
内部バスＰＡＢ１とＰＡＢ２、そして内部バスＰＤＢ１とＰＤＢ２は、夫々配線長即ち配線容量が同等になるようにされ、且つ、それら全体の配線容量が図１の場合における内部バスＰＡＢとＰＤＢの配線容量よりも大きくならないように、回路ブロックの実際のレイアウトに即して、分割された内部バスと回路モジュールとの割り当てが決定されている。論理的には、入出力ポートＩＯＰ、タイマ７、ＷＤＴ８、ＳＣＩ９、Ａ／Ｄ変換器１０は、分割された何れのバスに接続すべきかの制約はない。
【０１２６】
前記バスコントローラ３に含まれるモジュールセレクトの判定によって、ＰＡＢ１とＰＤＢ１、ＰＡＢ２とＰＤＢ２の何れかが活性状態になるようにされる。また、ＲＯＭ５又はＲＡＭ６がアクセスされる場合には、ＰＡＢ１とＰＤＢ１、ＰＡＢ２とＰＤＢ２の何れもが、非活性状態にされる。非活性状態の場合、内部アドレスバスＰＡＢ１とＰＡＢ２は直前の値を保持するようにされる。また、バスコントローラ３及びＷＤＴ８などの機能ブロックの出力がハイインピーダンスとされたとき、内部データバスＰＤＢ１とＰＤＢ２の前の値は、スタティックラッチ回路ＨＤ１及びＨＤ２によって保持される。スタティックラッチ回路ＨＤ１及びＨＤ２は、例えば各信号線毎に逆並列接続された２個のインバータ回路が設けられて構成され、ＰＤＢ１，ＰＤＢ２の状態を保持するようにされ、他の機能ブロックがデータを出力した場合には、斯る出力データによるバスの駆動を優先されることができるような比較的小さな駆動能力を有するようにされる。即ち、スタティックラッチ回路ＨＤ１，ＨＤ２を構成するインバータ回路の出力電流は、ＰＤＢ１，ＰＤＢ２の漏洩電流より大きく、機能ブロックの出力電流より、十分に小さくされている。尚、図１の内部バスＰＤＢやＰＡＢの分割数は３以上とすること可能である。内部アドレスバスＰＡＢの本数が少なければ、内部アドレスバスＰＡＢは共通にして、内部データバスＰＤＢのみ分割するようにしてもよい。
【０１２７】
《低消費電力情報のベクタ化》　割り込み要求などに対する処理の高速化のためにクロック信号φＢの周波数を強制的に高くする手段として、図９及び図１０の（Ａ）などで説明したクロック制御レジスタ１３２のＭＳＭＥビットを利用するほかに、割り込み処理（リセットのような例外処理も含む）の開始時に、ベクタとして低消費電力情報を取り込むようにしてもよい。ＣＰＵ１のアドレス空間の一部には、各々割込みに対応した複数のベクタが予め書き込まれている。割込みの要求が発生すると、ＣＰＵ１は、その割込みに対応したベクタを取り込み、取り込んだベクタに保持されている割込みに関する情報に従った処理を行う。すなわち、割込みの要求が発生すると、ＣＰＵ１は、その割込みに対応したベクタを指すアドレスを出力し、そのアドレスによって示されているベクタ領域から上記割込みに関する情報を取り込む。本実施例においては、この情報として、当該割込みによって実行されるべきプログラム（ハンドラプログラム）のスタートアドレスと低消費電力情報とがある。割込みの要求に応答して、上記スタートアドレスは、ハンドラプログラムの実行のために、ＣＰＵ１内のプログラムカウンタ（図示せず）にセットされ、上記低消費電力情報は、後で述べるように、モジュールストップ制御レジスタ１３３及びクロック制御レジスタ１３２にセットされる。また、割込み要求に対する処理が終了した後、元のプログラムに復帰するために、後で述べるように、ステータスレジスタの内容と、復帰するアドレスとが、割込み要求に応答する際、ＣＰＵ１内のスタックポインタ（図示せず）で指定されるＣＰＵ１のアドレス空間内のアドレス領域（スタック領域）へ書き込まれる。後の説明から理解されるように、本実施例においては、上記ステータスレジスタの内容、復帰アドレスの他に、上記モジュールストップ制御レジスタ１３３及びクロック制御レジスタ１３２の内容も、上記スタックポインタで指定されるスタック領域へ書き込まれる（スタックされる）。例えば割り込みベクタは割り込みによって実行すべきハンドラのスタートアドレスと共に低消費電力情報として中速モードの設定やモジュールストップの設定を行うための制御情報を保有する。この場合、クロック制御レジスタ１３２の初期値はリセットベクタの低消費電力情報によって決定することができ、これを中速モードにするようにしておくとよい。そのようにすれば、リセット後の低消費電力状態を、直ちに設定できるので、ソフトウェアの負担を軽減し、また、中速モードからのスタートが可能になるなど、消費電流を低減することができる。
【０１２８】
図３０の（Ａ）〜（Ｃ）には低消費電力状態を指定するベクタ配列とその場合のスタックの例が示される。この例に従えば低消費電力情報は、図３０の（Ｂ）に示されるように８ビットとされる。すなわち、低消費電力情報は、モジュールストップ制御レジスタ１３３のビット７〜２（ＭＳＴＰ７〜ＭＳＴＰ２）に対応する６ビット（低消費電力情報のビット７〜２）と、クロック制御レジスタ１３２のビット０及びビット１（ＣＫＳ０，ＣＫＳ１）に対応する２ビット（低消費電力情報のビット１、０）とを含む。図３０の（Ａ）に示されるベクタにおいて、スタートアドレスはアドレス空間が１６ＭＢであるならば２４ビットとされる。図３０の（Ｃ）に示されるように、スタック領域には、復帰アドレスと復帰先において利用される低消費電力情報の他に、ＣＰＵ１の内部状態を保持するステータスレジスタに対する１６ビット分の記憶領域が含まれる。上記ステータスレジスタには、演算の結果を示すコンディションコードや、割り込みマスクビットなどが含まれる。尚、以下の説明において、モジュールストップ制御レジスタ１３３のビット７〜２（ＭＳＴＰ７〜ＭＳＴＰ２）と、クロック制御レジスタ１３２のビット０及びビット１（ＣＫＳ０，ＣＫＳ１）とを併せて低消費電力状態制御レジスタと称する。
【０１２９】
図３１には、例外処理時及びリターン時の動作タイミングが示されている。特に制限はされないものの、ＲＯＭ５及びＲＡＭ６は１ステートでリード／ライト可能とされる。命令及びベクタはＲＯＭ５に、スタック領域はＲＡＭ６に配置されるものとする。例外処理時には、その時点のプログラムカウンタ（ＰＣ）の値及び低消費電力状態制御レジスタ（クロック制御レジスタ１３２のＣＫ０，ＣＫ１とモジュールストップ制御レジスタ１３３のＭＳＴＰ２〜ＭＳＴＰ７）の情報、及び図示しない上記ステータスレジスタの内容がスタック領域に待避される（ステートＳ１〜Ｓ５）。すなわち、上記低消費電力状態制御レジスタの内容を読み出すために専用のリード信号ＲＤ−ＬＰＣＲ＃が活性状態にされる（ステートＳ２〜Ｓ４）と共に、ライト信号ＷＲ＃も活性状態にされ、上記制御レジスタの内容がスタック領域に書き込まれる。スタックの動作に続いて、ＲＯＭ５からベクタとして、低消費電力状態制御レジスタ及びＰＣの内容がリードされる（Ｓ６〜Ｓ９）。ＲＯＭ５からリードされた低消費電力状態制御レジスタはＣＰＵに取り込まれず、低消費電力状態制御レジスタに書き込まれる（Ｓ６〜Ｓ８）。このための専用のライト信号ＷＲ−ＬＰＣＲ＃が活性状態にされる。これによってステートＳ７から、低消費電力制御レジスタの内容が変更され、中速モードの設定や、モジュールストップの設定が変更になる。ベクタとしてのスタートアドレスはＣＰＵ内部の図示しないプログラムカウンタに取り込まれ、斯るスタートアドレスからＣＰＵ１は命令の実行を開始する（Ｓ１１〜Ｓ１３）。
【０１３０】
リターン時には、ＲＡＭ６内のスタック領域から、ステータスレジスタ、低消費電力状態制御レジスタ、ＰＣの内容がリードされる（Ｓ１４〜Ｓ１８）。スタック領域からリードされた低消費電力状態制御レジスタの内容は、ＣＰＵ１に取り込まれず、低消費電力状態制御レジスタに書き込まれる。復帰アドレスは、ＣＰＵ１の内部に取り込まれ、かかるアドレスからＣＰＵ１は命令の実行を開始する。ステータスレジスタはＣＰＵ１の内部に格納される。Ｓ１６から、低消費電力制御レジスタの内容が復帰される。中速モードの設定や、モジュールストップの設定が復帰され、Ｓ６以前の状態と同様になる。Ｓ６以前、Ｓ１６以後を中速モード、Ｓ７〜Ｓ１５を高速モードに設定しておけば、図１７と同様の動作を、ソフトウェアの負荷なく、実現できる。割込毎に、低消費電力状態を設定できるので、高速処理が必要でない割込要求に対しては、適当な動作速度にして、消費電力を無駄にすることがない。また、モジュールストップによって、機能ブロックの内部状態を保持しつつ、停止できるので、例えば、ＤＴＣ２をモジュールストップとすれば、ＤＴＣ２がバスを使用することによってＣＰＵ１の動作を中断したりすることを防ぐことができ、高速な割込処理ルーチンの実行が必要な場合などに有効である。
【０１３１】
図３２には低消費電力制御レジスタの１ビットの構成が代表的に示される。上述のようにクロック制御レジスタ１３２のビット１，０及びモジュールストップ制御レジスタ１３３のビット７〜２が低消費電力制御レジスタを構成する。図３２の構成は図１６に対して、２個の論理和回路１３２５，１３２６が追加され、クロック入力端子Ｃには、論理和回路１３２５を介して、前記専用ライト信号ＷＲ−ＬＰＣＲが与えられ、アドレスに拘わらずデータバスの内容が入力される。また、クロックドバッファ１３２２のリード信号にも、論理和回路１３２６を介して、前記専用リード信号ＲＤ−ＬＰＣＲが与えられ、アドレスに関わらずレジスタの内容がデータバスに出力する。これらの、専用ライト信号ＷＲ−ＬＰＣＲ及び専用リード信号ＲＤ−ＬＰＣＲは、例えばＣＰＵ１によって形成され、クロック制御レジスタ１３２のビット１，０、及びモジュールストップ制御レジスタ１３３のビット７〜２に共通の信号とされる。尚、図３２においてＲＤ，ＷＲ，ＲＤ−ＬＰＣＲ，ＷＲ−ＬＰＣＲの各信号は、理解を容易化するために正論理の信号として図示されている。
【０１３２】
《サブクロック発振器の例》　図３３にはクロック発振器及びクロック制御回路の別の例が示される。この例は図９に対して、第２の発振器１２Ａ、分周器１３０Ａ、セレクタ１３１Ａ、及びノーオーバラップ生成回路１３８が追加されている。第２の発振器１２ＡのＥＸＴＡＬＬ、ＸＴＡＬＬには、例えば、３２．７６８ｋＨｚのような水晶発振子を接続する。２組の発振器を持つシングルチップマイクロコンピュータとして、例えば、前記平成４年９月（株）日立製作所発行『Ｈ８／３８３４　ＨＤ６４７３８３４　ＨＤ６４３３８３４　ハードウェアマニュアル』に記載のものがある。第２の分周器１３０Ａは前記同様に８分周を行い、分周されたクロック信号φＯＳＣ／２，φＯＳＣ／４，φＯＳＣ／８はクロック制御レジスタ１３２からの制御ビットにてセレクタ１３１Ａが選択する。これによって選択されたクロック信号に基づいてノーオーバラップ生成回路１３８はノーオーバラップの２相のクロッククロック信号φ１Ｌ、φ２Ｌを生成し、所要の機能ブロック、例えば、ＣＰＵ１及びタイマ７に供給する。かかるノーオーバラップ生成回路１３８は、低い動作周波数かつ低電圧動作に適合するように、前記各機能ブロックに内蔵されるものと相違される。低周波数のため、２相クロック信号φＬ１，φＬ２をＣＰＵ１，タイマ７などに供給しても、消費電力のための不利益は生じない。
【０１３３】
特に制限されないが、ノーオーバラップの２相のクロッククロック信号φ１Ｌ、φ２Ｌはシングルチップマイクロコンピュータを時計処理に利用する場合に用いるものとされる。クロック制御レジスタ１３２はウオッチモードビットＷＭを有し、これが論理値”１”にされることによってシングルチップマイクロコンピュータは時計処理に必要な最低の動作周波数で動作される。時計処理は例えばシングルチップマイクロコンピュータの制御対象に時計が含まれているような場合に１秒毎のような一定時間毎に時計表示を更新するような処理であり、ノーオーバラップ２相のクロッククロック信号φ１Ｌ、φ２Ｌによって計時動作されるタイマによる一定時間毎のタイマ割り込みによってＣＰＵ１に時計処理を実行させる。
【０１３４】
図３４には図３３のクロック制御回路１３からのその他の機能ブロックへの上記クロック信号φ１Ｌ、φ２Ｌの供給態様を専ら示すシングルチップマイクロコンピュータの概略ブロック図が示される。このブロック図は例えば上記時計処理を考慮するものである。図３４のシングルチップマイクロコンピュータにおいては、図３３のクロック制御回路１３の他、ＣＰＵ１、バスコントローラ３、割り込みコントローラ４、入出力ポートＩＯＰ１〜ＩＯＰ１１、及びタイマ７が代表的に示される。各回路ブロックに示されるＮＯＶは、入力クロック信号からノーオーバラップの２相のクロック信号を形成するノーオーバラップ生成回路である。図１で説明した内部バスＩＡＢ，ＩＤＢに結合されるＣＰＵ１、バスコントローラ３及び割り込みコントローラ４のノーオーバラップ生成回路ＮＯＶには上記クロック信号φＢが供給され、図１で説明した内部バスＰＡＢ，ＰＤＢに結合されるタイマ７及びＩＯＰ１〜ＩＯＰ１１のノーオーバラップ生成回路ＮＯＶには上記クロック信号φＳが供給される。更に、各機能ブロック１，３，４，７，ＩＯＰ１〜ＩＯＰ１１には上記ノーオーバラップの２相のクロック信号φＬ１，φＬ２が供給され、夫々の機能ブロックにおいてノーオーバラップ生成回路ＮＯＶから出力される２相クロック信号又は２相クロック信号φＬ１，φＬ２の何れを内部同期クロック信号として利用するかを選択するためのセレクタＳＥＬが設けられている。タイマ７は、ＣＰＵ１などによって設定される内部制御レジスタの制御ビットなどに従ってセレクタの選択が行われる。タイマ７が複数のチャネルから構成されるような場合、チャネル毎にかかる制御レジスタとセレクタＳＥＬを有するようにすればよい。ＣＰＵ１、バスコントローラ３、割り込みコントローラ４、及び入出力ポートＩＯＰ１〜ＩＯＰ１１のセレクタＳＥＬは、クロック制御回路１３から出力されるウオッチモードビットＷＭにて選択状態が決定される。
【０１３５】
ウオッチモードビットが論理値”１”にされると、タイマ７において所定のチャネル以外はモジュールストップ状態とされる。タイマ７における当該所定のチャネルは制御ビットにてセレクタＳＥＬでクロック信号φＬ１，φＬ２を選択し、クロック信号φＬ１，φＬ２を利用して例えば時計処理を間欠的に行うための計時動作を行って一定時間毎にタイマ割り込み信号を出力する。ＣＰＵ１、バスコントローラ３、割込コントローラ４及びＩＯＰ１〜ＩＯＰ１１においては論理値”１”のウオッチモードビットＷＭにてセレクタでクロック信号φＬ１，φＬ２が選択され、これによってそれら機能ブロックは時計用の低周波数のクロック信号φＬ１，φＬ２に同期動作される。タイマ７は一定時間毎に時計用処理のための割り込み信号を発生し、ＣＰＵ１はそれに応答して間欠的に時計処理を行う。ウオッチモードビットＷＭが活性状態にされているとき、第１の発振器１２は発振動作が停止される。ウオッチモードはＣＰＵ１がウオッチモードビットＷＭを論理値”０”にすることによって解除される。
【０１３６】
上記実施例によれば以下の効果を得るものである。〔１〕システムクロック信号をφＳとφＢとし、クロック信号配線の総配線容量をさほど大きくせずに、システムクロック信号φＢの分周比を可変にして、機能ブロックの絶対的な基準クロックを確保しつつ、システムクロック信号φＢを可変にしてバスマスタの消費電力を低減し、ひいては半導体集積回路全体の消費電力を低減することができる。消費電力を低減することにより、不要輻射（不所望な電波の発生）を低減することができる。
【０１３７】
〔２〕ＳＣＩやタイマなどの周辺回路には周波数一定のシステムクロック信号φＳが供給されるので、ＣＰＵ等へのシステムクロック信号φＢの周波数が変更されても、ＳＣＩのビットレート若しくはボーレート、そしてタイマの計時周期などを一定に保つことができ、ＣＰＵなどの動作周波数を変更してもそれら周辺機能ブロックの設定変更を要しない。
【０１３８】
〔３〕上記クロック制御回路１３には、システムクロック信号クφＢの分周比を選択するための情報が上記バスマスタによって設定可能にされたレジスタ手段１３２を備えるから、ＣＰＵなどのバスマスタによって分周比の選択を任意に行うことができる。
【０１３９】
〔４〕データバスは、システムクロック信号φＢが供給されＣＰＵなどの機能ブロックが接続される内部データバスＩＤＢと、システムクロック信号φＳが供給されバススレーブとして動作される機能ブロックが接続される内部データバスＰＤＢとに分離される。ＣＰＵ等のバスマスタのように頻繁にバスサイクルを起動する機能ブロックを、バススレーブとは別のデータバスに接続することにより、頻繁にアクセスされるデータバスの負荷が小さくされ、低消費電力に寄与する。また、高速化にも寄与することができる。アクセスに利用される頻度が相対的に低いデータバスの前の値をホールド回路ＨＤ１，ＨＤ２によって保持することにより、当該データバス上での充放電回数を減らして低消費電力に寄与することができる。
【０１４０】
〔５〕１相クロック信号としてのシステムクロック信号φＳ，φＢを機能ブロックに供給し、各機能ブロック内部で、２相クロック信号を生成することにより、クロック信号配線の総配線容量を低減して、消費電力を低減することができる。
【０１４１】
〔６〕プリスケーラクロック信号を用いる場合、低分周比のプリスケーラクロック信号は各機能ブロック毎に内部で生成し、分周比の大きなプリスケーラクロック信号は共通に生成することによって、論理規模をさほど増大させず、信号変化周波数の大きな信号を機能ブロック間信号としないことによって、消費電力を低減することができる。
【０１４２】
〔７〕バススレーブからバスマスタへの機能ブロック間信号を例えば図２０及び図２３で説明したようにφ１Ｓに同期して行うことにより、インタフェースを容易にすることができる。
【０１４３】
〔８〕機能ブロックの内部状態を保持可能にすることにし、かつ、常時クロックを供給する部分を限定することによって、動作中であっても、信号変化を局限し、消費電力を低減できる。また、クロックを停止しても、内部状態を保持することによって、ソフトウェアによる再設定の負担を省くことができる。
【０１４４】
〔９〕データバスをはじめとする、内部バスを分割して、容量を分割し、非活性状態のバスに対しては信号変化を抑止することによって、１回の動作で変化する信号が充放電すべき容量を低減して、消費電力を低減できる。
【０１４５】
〔１０〕割込や、外部端子の信号変化の情報を検出する、割込コントローラのようなイベント検出回路を設け、イベントが発生したときに、自動的にφＢの分周比を変更したり、モジュールストップの状態を変更したりすることにより、イベントが発生してから、所望の処理を行うまでの時間を短縮でき、これによって、処理性能を向上できる。変更にあたって、変更前の情報を、例えばスタック領域などに待避し、新しい情報を例えば、ベクタとともにロードすることによって、任意の設定を行うことができるようになる。
【０１４６】
〔１１〕クロック信号φＳとφＢに相当するクロック信号を外部に出力可能とし、かつ、ソフトウェアでその出力を禁止可能とすることによって、クロック信号φＳを外部半導体集積回路の基準クロックとしたり、クロック信号φＢをバス制御回路の制御信号としたり、することができる。また、必要なければ出力を禁止して、消費電力の低減、カップリングノイズの低減、不要輻射の低減を図ることができる。
【０１４７】
以上本発明者によってなされた発明を実施例に基づいて具体的に説明したが、本発明はそれに限定されるものではなく、その要旨を逸脱しない範囲において種々変更可能であることは言うまでもない。
【０１４８】
例えば、クロック信号を非対称にする場合は、上記実施例に限定されない。動作が不必要な任意の場合に一方がハイレベル、他方をロウレベルとして停止することができる。例えばＣＰＵがウェイト状態とされるような場合に適用することができる。全てのタイミング回路をスタティック型にすれば、クロック信号を非対称にすることはなく、中速モードの場合のφＢも、デューティ比５０％のクロック信号とすることもできる。
【０１４９】
クロック制御レジスタは、ＣＰＵからリード／ライト可能なほか、外部端子の設定によって変更可能としてもよい。例えば、所定の端子の入力によって、クロック制御レジスタの初期設定値を変更可能としてもよい。所定の端子がロウレベルの状態でリセットすると高速クロックで動作し、その後ＣＰＵの設定で低速動作可能とする、また、所定の端子がハイレベルの状態でリセットすると低速クロックで動作し、その後ＣＰＵの設定で高速動作可能とする、ようにすることができる。
【０１５０】
バスタイミングの詳細については、種々変更可能である。ＩＡＢ・ＩＤＢとＰＡＢ・ＰＤＢのタイミングを同一としたが、これがずれていてもよい。イベントには、例えば、外部バス解放などを含めることができる。外部にバスを解放した場合、自動的にバスマスタが中速モードになったり、或いはＤＴＣをモジュールストップ状態にすることもできる。ベクタとして与えられる低消費電力情報も８ビットに限定されない。任意のビット数とすることができる。専用のリード信号、専用のライト信号を複数組持ってもよい。
【０１５１】
低消費電力制御レジスタの構成についても種々変更可能である。ダイナミック回路、スタティック回路の具体的な回路構成も種々変更が可能である。例えば、スタティック回路はフリップフロップで構成することができる。また、クロックは２相のノーオーバラップに限定されない。３相以上、或いはオーバーラップクロックとすることができる。一部の相のクロックを長く、その他の相のクロックを短くすればよい。
【０１５２】
データ転送装置として、ＤＴＣを内蔵した場合について説明したが、これは、ＤＭＡコントローラ（ＤＭＡＣ）であってもよい。実施例中のＤＴＣは、ＤＭＡＣと読み変えてもよい。これらがＣＰＵと独立した機能ブロックである必要はなく、ＣＰＵの一部として実現されてもよい。この場合、マイクロＤＭＡ、或いはマクロサービス、或いはインテリジェントＩ／Ｏサービスなどの呼称が用いられる場合がある。シングルチップマイクロコンピュータのその他の機能ブロックについても何等制約されない。機能ブロックの数や、モジュールストップの指定方法なども任意にすることができる。
【０１５３】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータに適用した場合について説明したが、それに限定されるものではなく、その他の半導体集積回路にも適用可能であり、本発明は少なくとも、クロックに同期して動作するシステムを構成する半導体集積回路に適用することができる。
【０１５４】
【発明の効果】
本願において開示される発明のうち代表的なものによって得られる効果を簡単に説明すれば下記の通りである。
【０１５５】
〔１〕周波数一定の第２のシステムクロック信号（φＳ）を複数個の機能ブロックに共通に供給し、分周比が選択可能にされ周波数が上記第２のシステムクロック信号以下とされた第１のシステムクロック信号（φＢ）を所定の機能ブロックに供給することにより、第１のシステムクロック信号（φＢ）が供給される機能ブロックの状態に応じてその動作周波数を変えて低消費電力を図ることができる。このとき、当該第１のシステムクロック信号の周波数を変更しても第２のシステムクロック信号（φＳ）を受けて動作される複数個の機能ブロックの動作速度は変化されないので、そのような第１のシステムクロック信号の周波数変更による電力消費の制御に際して第２のシステムクロック信号（φＳ）を受けて動作される複数個の機能ブロックに対しては動作条件を再設定したりするための処理を一切要しない。
【０１５６】
〔２〕上記第１のクロック信号配線を介して第１のシステムクロック信号が供給される機能ブロックをバスマスタとすることにより、当該バスマスタには分周比可変のシステムクロック信号が供給されることになる。マイクロコンピュータ等のデータプロセッサにおいてバスマスタとしてのＣＰＵは一般的に命令及びデータフェッチのためのバスサイクルを頻繁に起動するから、低消費電力化に効果的である。
【０１５７】
〔３〕上記第２のクロック信号配線を介して第２のシステムクロック信号が供給される機能ブロックをバススレーブとすることにより、バスマスタのシステムクロック信号の周波数を変更しても、シリアルコミュニケーションインタフェースのビットレート若しくはボーレート、そしてタイマの計時周期などを一定に保つようにでき、それら周辺機能ブロックの設定変更を要しないようにすることができる。
【０１５８】
〔４〕第１のクロック信号（φＢ）の分周比を選択するための情報が上記バスマスタによって設定可能にされたレジスタ手段（１３２）を採用することにより、ＣＰＵなどのバスマスタによって分周比の選択を任意に行うことができる。
【０１５９】
〔５〕ＣＰＵ等のバスマスタのように頻繁にバスサイクルを起動する機能ブロックを、バススレーブとは別のデータバスに接続することにより、頻繁にアクセスされるデータバスの負荷が小さくされるから、この点においても低消費電力を達成する。アクセスに利用される頻度が相対的に低いデータバスの前の値をホールド回路によって保持（前値保持）することによっても、当該データバス上での充放電回数を減らして低消費電力に寄与する。
【０１６０】
〔６〕第１及び第２の夫々のシステムクロック信号に基づいて生成されたノーオーバラップの２相クロック信号を部分的に位相が一致するようにし、当該位相が一致するタイミングに同期して、第２のシステムクロック信号に同期動作される機能ブロックから、第１のシステムクロック信号に同期動作される機能ブロック（相対的に動作速度が遅くされ得る機能ブロック）へ供給すべき信号を変化させることにより、システムクロック信号周波数の相違される機能ブロック間でのインタフェースを容易化、換言すればインタフェースのためのタイミング設計を容易化することができる。
【０１６１】
〔７〕第１及び第２の夫々のシステムクロック信号に基づいて生成された夫々のノーオーバラップの２相クロック信号の第１相目クロック信号同士はローレベル期間が一致される位相を有し、第２相目クロック信号同士はハイレベル期間が一致される位相を有することにより、各機能ブロックの出力と入力とは第１相目又は第２相目の何れのクロック信号に同期させても、システムクロック信号が相違される機能ブロック間で、データ出力からそれを入力してラッチするまでは第２のシステムクロック信号（φＳ）の１周期以上の期間を確保でき、これによってシステムクロック信号周波数の相違される機能ブロック間でのインタフェースを容易化、換言すればインタフェースのためのタイミング設計を容易化することができる。
【０１６２】
〔８〕第１のシステムクロック信号（φＢ）と第２のシステムクロック信号（φＳ）とを選択的に外部に出力する出力回路からの出力が非選択状態にされるとき、当該出力回路のクロック入力配線を所定レベルに強制することにより、システムクロック信号の外部出力を要しない場合には上記クロック入力配線における充放電を抑止して、低消費電力に寄与することができる。
【０１６３】
〔９〕機能ブロック毎に個別的に内部クロック信号等の生成を抑止することにより、利用しない内蔵機能ブロック内では内部クロック信号の変化が停止され、クロック信号の無駄な変化による充放電電流による電力消費を抑えることができる。このとき、内部クロック信号停止状態において内部状態を保持させることにより、動作再開が選択されたときに内部回路を改めて設定する手間を省くことができる。
【０１６４】
〔１０〕自分自身の動作が非選択とされることによって内部タイミング信号の発生を抑止することによって低消費電力を実現できる。内部タイミング信号の変化が停止されたときに内部状態を保持させることにより、動作再開のときに内部回路を改めて設定し直す手間を省くことができる。
【０１６５】
〔１１〕ノーオーバラップの２相の内部タイミング信号を受けて動作される回路を、その第１相目のタイミング信号を受けてダイナミックに動作されるダイナミック回路と、該ダイナミック回路に直列的に接続され第２相目のタイミング信号を受けてスタティックに動作されるスタティック回路とを含んで構成することにより、ノーオーバラップの２相のタイミング信号うちデューティの大きな相のタイミング信号をダイナミック回路に、デューティの小さい相のタイミング信号をスタティック回路に供給すれば、ダイナミック回路の出力負荷容量による情報保持時間が有限であっても当該ダイナミック回路が情報を保持すべき期間を短くして、第１のシステムクロック信号の周波数を低減可能な範囲を広げることができる。さらに双方をスタティックラッチ回路で構成する場合に比べて回路の物理的規模を縮小できる。
【０１６６】
〔１２〕イベント検出に基づいて第１のシステムクロック信号の周波数を強制することにより、所定のイベントが発生したとき、設定されているシステムクロック信号周波数が低くても、システムクロック信号周波数の選択状態を所定の状態例えば最高周波数選択状態に強制することができ、これによって、所定のイベントが発生したときそれに応答する所望の処理をするまでの時間を短縮することができる。
【０１６７】
〔１３〕イベント発生によって所定の記憶領域（ＭＳＭＥ）が所定の値に書き換えられることによってシステムクロック信号周波数を強制することにより、システムクロック信号を特定周波数に強制する処理を簡単化できる。
【０１６８】
〔１４〕イベント発生によって中央処理装置に要求された例外的処理から復帰するときに中央処理装置が上記記憶領域（ＭＳＭＥ）を所定の値に戻すことにより、周波数を選択的に指定する情報の記憶領域（ＣＫＳ１，ＣＫＳ２）の値それ自体を退避及び復帰させることをも要しない。
【０１６９】
〔１５〕周波数が強制されたシステムクロック信号を受ける機能ブロックが中央処理装置以外のデータトランスファコントローラであるときに、イベントの発生によって例外的処理が要求されたデータトランスファコントローラは当該例外的処理の終了を指示する信号を出力し、それによって上記記憶領域（ＭＳＭＥ）を所定の値に戻すことにより、中央処理装置若しくはソフトウェアに負担をかけずにシステムクロック信号を元に戻すことができる。
【０１７０】
〔１６〕機能ブロック単位に内部クロック信号の形成を禁止させるための情報を書き換え可能に保持するレジスタ手段（１３３）を設け、リセットなどの所定のイベント発生に基づいて、そのレジスタ手段を内部クロック信号の形成を禁止する状態に初期化することにより、リセット等の所定イベント発生時における初期的な状態における電力消費を低減させることができる。
【０１７１】
〔１７〕システムクロック信号の周波数強制に割り込みベクタなどのベクタと対の制御情報を利用することにより、イベントの種類に応じて低消費電力設定を細かく行うことができる。
【０１７２】
〔１８〕上記割り込みベクタなどのベクタと対の制御情報を利用する場合に、イベント発生時には当該ベクタと対の制御情報によって現在の低消費電力制御のための情報が消失されないように退避させることにより、イベント発生によって要求された例外的処理の終了後に、電力制御状態もイベント発生直前の状態に復帰させることができる。
【０１７３】
〔１９〕プリスケーラで生成可能な低分周比のプリスケーラクロック信号はプリスケーラから供給せずに、機能ブロック内の分周器で個別的に生成させることにより、低分周比のクロック信号もプリスケーラから直接複数の機能ブロックに供給する場合に比べて低消費電力化を図ることができる。
【図面の簡単な説明】
【図１】本発明に係る半導体集積回路の一実施例であるシングルチップマイクロコンピュータのブロック図である。
【図２】図１のシングルチップマイクロコンピュータの変形例を示すブロック図である。
【図３】各機能ブロックの代表的な論理回路の構成例を（Ａ）によって示し、順序回路をＣＭＯＳダイナミック回路で構成する例を（Ｂ）によって示し、本実施例のシングルチップマイクロコンピュータに用いられているＣＭＯＳダイナミック回路の一例を（Ｃ）によって示す説明図である。
【図４】プリスケーラの一例を示すブロック図である。
【図５】プリスケーラの一例の動作タイミングを（Ａ）〜（Ｉ）によって示す説明図である。
【図６】ＰＷＭタイマの一例を示すブロック図である。
【図７】ノーオーバラップ生成回路の一例を（Ａ）によって示し、クロック制御回路の一例を（Ｂ）によって示し、ＷＤＴに採用されるノーオーバラップ生成回路の一例を（Ｃ）によって示す論理回路図である。
【図８】図６のＰＷＭタイマの一例の動作タイミングチャートである。
【図９】図１に示されるシングルチップマイクロコンピュータのクロック発振器及びクロック制御回路の一例を示すブロック図である。
【図１０】ＭＳＭＥビット、ＣＫＳ１ビット、ＣＫＳ０ビットの論理値によるクロック信号の選択態様の一例を（Ａ）によって示し、セレクタの論理を（Ｂ）によって示す説明図である。
【図１１】モジュールストップモードを制御するモジュールストップ制御レジスタのレジスタ構成と中速モードを制御するクロック制御レジスタのレジスタ構成例を（Ａ）及び（Ｂ）によって示す説明図である。
【図１２】モジュールストップ制御レジスタにおけるＭＳＴＰ７〜ＭＳＴＰ５を（Ａ）〜（Ｃ）によって示す説明図である。
【図１３】モジュールストップ制御レジスタにおけるＭＳＴＰ４〜ＭＳＴＰ３を（Ａ）及び（Ｂ）によって示す説明図である。
【図１４】クロック制御レジスタを（Ａ）〜（Ｃ）によって示す説明図である。
【図１５】本実施例のシングルチップマイクロコンピュータにおけるシステムクロック信号に着目した概略的な動作フローチャートである。
【図１６】ＭＳＭＥビットの概略的な一例を示すブロック図である。
【図１７】割り込み要求発生時における一例の動作タイミングチャートである。
【図１８】ＤＴＣ起動要求発生時における一例の動作タイミングチャートである。
【図１９】バスマスタとバススレーブとの間における第１のインタフェース仕様の概略説明図である。
【図２０】図１９に従ったバスマスタクロックとバススレーブクロックの一例のタイミングチャートである。
【図２１】バスマスタとバススレーブとの間における第２のインタフェース仕様の概略説明図である。
【図２２】図２１に従ったバスマスタクロックとバススレーブクロックの一例のタイミングチャートである。
【図２３】バスマスタクロックとバススレーブクロックの別の動作タイミングチャートである。
【図２４】バススレーブに対するリード動作におけるバスインタフェースの一例のタイミングチャートである。
【図２５】バススレーブに対するライト動作におけるバスインタフェースの一例のタイミングチャートである。
【図２６】クロック信号φＳ及びφＢを選択的に外部出力可能にする構成の一例説明図である。
【図２７】クロック信号φＳ又はφＢの何れか一方を選択的に外部出力可能にする構成の一例説明図である。
【図２８】図２７の構成に必要とされるＰＨＩＳビットを（Ａ）及び（Ｂ）によって示す説明図である。
【図２９】シングルチップマイクロコンピュータの内部バスのその他の分割例を示す概略ブロック図である。
【図３０】低消費電力状態を指定するベクタ配列とその場合のスタックの一例説明図である。
【図３１】低消費電力情報をベクタに配置する実施例における例外処理時及びリターン時の一例の動作タイミングチャートである。
【図３２】低消費電力制御レジスタの１ビット分の構成を代表的に示す一例ブロック図である。
【図３３】クロック発振器及びクロック制御回路の別の例を示すブロック図である。
【図３４】図３３のクロック制御回路からのその他の機能ブロックへのクロック信号φ１Ｌ、φ２Ｌの供給態様を専ら示すシングルチップマイクロコンピュータの概略ブロック図である。
【符号の説明】
１　中央処理装置（ＣＰＵ）
２　データトランスファコントローラ（ＤＴＣ）
３　バスコントローラ
４　割り込みコントローラ
５　ＲＯＭ
６　ＲＡＭ
７　タイマ（ＰＷＭタイマ）
７００　ノーオーバラップ生成回路
７１０　クロック制御回路
７２０　分周器
８　ウオッチドッグタイマ（ＷＤＴ）
９　シリアルコミュニケーションインタフェース（ＳＣＩ））
１０　アナログ／ディジタル（Ａ／Ｄ）変換器
１２　クロック発振器
１３　クロック制御回路
１３０　分周器
１３１　セレクタ
１３２　クロック制御レジスタ
１３２５　ＤＴＣ転送終了信号
１３３　モジュールストップ制御レジスタ
１３００，１３０１，１３０７　アンドゲート
１３１０，１３１１　システムクロック信号の外部出力用配線
１４　プリスケーラ
ＩＯＰ６０，ＩＯＰ６１　入出力ポート
ＩＤＢ，ＩＡＢ　内部バス
ＰＤＢ，ＰＡＢ　内部バス
φＯＳＣ　クロック信号
φＳ，φＢ　システムクロック信号
Ｌ１，Ｌ２　クロック信号配線
φ１Ｓ，φ２Ｓ　ノーオーバラップ２相のクロック信号
φ１Ｂ，φ２Ｂ　ノーオーバラップ２相のクロック信号
φ１−ＰＷＭ，φ２−ＰＷＭ　ノーオーバラップ２相のタイミング信号
ＭＳＴＰ　モジュールストップ信号
ＭＳＴＰＰＳＣ　プリスケーラモジュールストップ信号
【図１】
2004094930.tif 000003
【図２】
2004094930.tif 000004
【図３】
2004094930.tif 000005
【図４】
2004094930.tif 000006
【図５】
2004094930.tif 000007
【図６】
2004094930.tif 000008
【図７】
2004094930.tif 000009
【図８】
2004094930.tif 000010
【図９】
2004094930.tif 000011
【図１０】
2004094930.tif 000012
【図１１】
2004094930.tif 000013
【図１２】
2004094930.tif 000014
【図１３】
2004094930.tif 000015
【図１４】
2004094930.tif 000016
【図１５】
2004094930.tif 000017
【図１６】
2004094930.tif 000018
【図１７】
2004094930.tif 000019
【図１８】
2004094930.tif 000020
【図１９】
2004094930.tif 000021
【図２０】
2004094930.tif 000022
【図２１】
2004094930.tif 000023
【図２２】
2004094930.tif 000024
【図２３】
2004094930.tif 000025
【図２４】
2004094930.tif 000026
【図２５】
2004094930.tif 000027
【図２６】
2004094930.tif 000028
【図２７】
2004094930.tif 000029
【図２８】
2004094930.tif 000030
【図２９】
2004094930.tif 000031
【図３０】
2004094930.tif 000032
【図３１】
2004094930.tif 000033
【図３２】
2004094930.tif 000034
【図３３】
2004094930.tif 000035
【図３４】
2004094930.tif 000036