(57)【特許請求の範囲】
【請求項１】
クロック信号を生成するクロック発生回路と、
前記クロック信号を受けるデータ処理部と、
を備え、
前記クロック発生回路は、
源クロック信号を生成する発振器と、
前記源クロック信号をイネーブルして前記クロック信号を出力する出力回路、
前記データ処理部によって前記イネーブルの割合が設定される設定回路を有る制御回路と、
前記設定回路の内容を変更する変更回路と、
を備え、
前記変更回路は、
前記データ処理部によって（ｍ＋ｎ）ビット長の前記設定回路の目標値が設定されるレジスタと、
前記設定回路の内容をインクリメントまたはデクリメントする演算器と、
を備え、
前記演算器は前記レジスタに設定される目標値の下位ｎビットを固定して、上位ｍビットを所定値インクリメントまたはデクリメントするようにし、
前記設定回路の値が前記目標値まで段階的に増加または減少するようにされる半導体装置。
【請求項２】
請求項１の半導体装置において、
前記クロック発生回路と前記データ処理部とに接続されるバスとを備え、
前記変更回路は前記設定回路の内容を前記バス以外から変更可能である半導体装置。
【請求項３】
請求項２の半導体装置において、
前記半導体装置の状態を検知する検知回路を備え、
前記変更回路は前記検知回路の検知結果に基づいて前記設定回路の内容の加算または減算を行うようにされる半導体装置。
【請求項４】
請求項３の半導体装置において、
前記検知回路は電圧を検知する半導体装置。
【請求項５】
請求項３の半導体装置において、
前記検知回路は温度を検知する半導体装置。
【請求項６】
請求項３の半導体装置において、
前記変更回路は、
前記検知回路の検知結果と所定の基準値とを比較する比較器と、
前記バスを介して前記データ処理部によって設定されるレジスタと、
前記比較器の比較結果に基づいて、前記設定回路の内容に前記レジスタの内容を加算するまたは前記設定回路の内容から前記レジスタの内容を減算する演算器と、
を備える半導体装置。
【請求項７】
請求項１の半導体装置において、
前記制御回路は、
前記源クロック信号を計数するカウンタと、
前記カウンタの重みを変更する重み反転回路と、
前記重み反転回路の内容と前記設定回路の内容とを比較する比較器と、
を備え、
前記比較器の比較結果に基づいて前記源クロック信号をイネーブルするイネーブル信号を生成するようにされる半導体装置。
【請求項８】
請求項７の半導体装置において、
前記出力回路は、
前記源クロック信号の反転信号で前記イネーブル信号をラッチするラッチ回路と、
前記源クロック信号と前記ラッチ回路の出力信号とを入力とする論理ゲートと、
を備える半導体装置。
【請求項９】
第１および第２のクロック信号を生成するクロック発生回路と、
前記第１のクロック信号で動作する第１の領域と、
前記第２のクロック信号で動作する第２の領域と、
を備え、
前記クロック発生回路は、
源クロック信号を生成する発振器と、
第１のデューティを有する第１の制御信号を生成する第１のクロック制御回路と、
前記第１の制御信号に基づいて前記源クロック信号を時間的に部分的許可または禁止
して前記第１のクロック信号を出力することが可能な第１のクロック出力回路と、
前記第１の制御信号の内容を変更する第１の変更回路と、
第２のデューティを有する第２の制御信号を生成する第２のクロック制御回路と、
前記第２の制御信号に基づいて前記源クロック信号を時間的に部分的許可または禁止して前記第２のクロック信号を出力することが可能な第２のクロック出力回路と、
前記第２の制御信号の内容を変更する第２の変更回路と、
を備え、
前記第１及び第２の変更回路は、
（ｍ＋ｎ）ビット長の設定回路の目標値が設定されるレジスタと、
前記設定回路の内容をインクリメントまたはデクリメントする演算器と、
を備え、
前記演算器は前記レジスタに設定される目標値の下位ｎビットを固定して、上位ｍビットを所定値インクリメントまたはデクリメントするようにし、
前記第１及び第２の制御信号が前記目標値まで段階的に増加または減少するようにされる半導体装置。
【請求項１０】
請求項９の半導体装置において、前記第１および第２の領域はそれぞれ前記源クロック信号の立ち上がりエッジに同期して動作するようにされる半導体装置。
【請求項１１】
請求項１０の半導体装置において、
前記第１の領域はＣＰＵを備え、前記第２の領域は周辺回路を備える半導体装置。
【請求項１２】
請求項１０の半導体装置において、
前記第１の領域はＣＰＵと周辺回路のバスインタフェース部とを備え、前記第２の領域は前記周辺回路の周辺機能部を備える半導体装置。
【請求項１３】
請求項１０の半導体装置において、
前記第１および第２のクロック制御回路は、それぞれ
前記源クロック信号を計数するカウンタと、
前記カウンタの重みを変更する重み反転回路と、
前記第１および第２の制御信号のデューティを保持するレジスタと、
前記重み反転回路の出力と前記レジスタの内容とを比較する比較器と、
を有し、
前記比較器の比較結果に基づいて前記源クロック信号の出力を許可するイネーブル信号を生成するようにされる半導体装置。
【請求項１４】
請求項１３の半導体装置において、
前記重み反転回路の値と前記レジスタの値との合計が前記レジスタに設定可能な最大値以上の場合、前記イネーブル信号をアサートするようにされ、
前記重み反転回路の値と前記レジスタの値との合計が前記レジスタに設定可能な最大値より小さい場合、前記イネーブル信号をネゲートするようにされる半導体装置。
【請求項１５】
請求項１４の半導体装置において、
前記第１および第２のクロック出力回路は、それぞれ、
前記源クロック信号の反転信号で前記イネーブル信号をラッチするラッチ回路と、
前記源クロック信号と前記ラッチ回路の出力信号とを入力とする論理ゲートと、
を備える半導体装置。
【請求項１６】
請求項１３の半導体装置において、
前記レジスタの内容はＣＰＵによって設定可能とされる半導体装置。
【請求項１７】
請求項１３の半導体装置において、
前記クロック発生回路とＣＰＵとに接続されるバスとを備え、
前記クロック発生回路は前記レジスタの内容を前記バス以外から変更可能な変更回路を備える半導体装置。
【請求項１８】
請求項１７の半導体装置において、
前記変更回路によって前記レジスタの内容を加算または減算を行うようにされる半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は半導体装置に関し、例えば所定の動作用クロックに従って動作する半導体装置に適用可能である。
【背景技術】
【０００２】
半導体装置の一例であるマイクロコンピュータは、機器制御用途に広く用いられている。半導体装置の低消費電力化は、携帯機器の連続利用可能時間（電池寿命）の延長や省エネルギーなどの要求により重要な課題である。特に小型の携帯機器においては、連続利用時間の要求以外に、システムの小型化・低価格化のために十分な電流を供給させるだけの電源装置が設置できないため、半導体装置で消費が許容できる最大電流に厳しい制限が設けられることが多い。また、機器の小型化に伴い、熱設計の観点からも、消費電力制御をきめ細かく行う必要がある。
半導体装置の消費電力は、簡単には、動作するクロック周波数に比例する。従来、クロックを１／Ｎ（Ｎは自然数）に分周することで、消費電力を低減する手法が広く使用されている。
なお、本開示に関連する先行技術文献として、例えば日本国特開２０１１−１１４６３０号公報またはこれに対応する米国特許第８６４５７４２号がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１１−１１４６３０号公報
【特許文献２】米国特許第８６４５７４２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述のようにクロックを１／Ｎに分周する技術では、設定可能な最大のクロック周波数を基準に考えると、ＣＰＵ等のデータ処理部の処理能力（処理性能）および消費電力は、１倍、１／２倍、１／４倍などになる。よって、半導体装置の処理性能および消費電力を１／Ｎ倍以外の割合で制御することができない。
本開示の課題と新規な特長は、本発明書の記述および添付図面か明らかになるであろう。
【課題を解決するための手段】
【０００５】
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りでる。
実施形態に係る半導体装置は源クロック信号を時間的に部分的に許可または禁止することでデータ処理部を含む領域に供給するクロック信号を生成する。
【発明の効果】
【０００６】
上記実施形態によれば、半導体装置の処理能力と消費電力を１／Ｎ倍以外の割合でも制御することができる。
【図面の簡単な説明】
【０００７】
【図１Ａ】実施形態１に係る半導体装置の構成を説明するためのブロック図である。
【図１Ｂ】実施形態１に係る半導体装置のクロック信号の波形を説明するための図である。
【図１Ｃ】実施形態２に係る半導体装置を説明するためのブロック図である。
【図１Ｄ】実施形態３に係る半導体装置の構成を説明するためのブロック図である。
【図１Ｅ】実施形態３に係る半導体装置のクロック信号の波形を説明するための図である。
【図２】実施例１に係るマイクロコンピュータを説明するためのブロック図である。
【図３】実施例１に係るクロック発生回路を説明するためのブロック図である。
【図４】実施例１に係るクロック発生回路の詳細を説明するためのブロック図である。
【図５】実施例１に係る重み反転回路を説明するための概念図である。
【図６】実施例１に係るクロック発生回路のクロックイネーブル信号出力態様を説明するための図である。
【図７】実施例１に係るクロック発生回路のクロックイネーブル信号出力態様を説明するための図である。
【図８】実施例１に係るクロック発生回路が生成するクロック信号を説明するためのタイミング図である。
【図９】変形例１に係るクロック発生回路を説明するためのブロック図である。
【図１０】変形例２に係るクロック発生回路を説明するためのブロック図である。
【図１１】変形例３に係るクロック発生回路を説明するためのブロック図である。
【図１２】変形例３に係るクロック発生回路を説明するためのタイミング図である。
【図１３】実施例２に係るマイクロコンピュータを説明するためのブロック図である。
【発明を実施するための形態】
【０００８】
以下、実施形態、実施例および変形例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【０００９】
まず、クロックを１／Ｎ倍に分周する技術を用いて処理性能および消費電力を１倍と１／２倍との間にする技術について説明する。例えば、消費電力を７５％に抑えたい場合、１倍の動作と１／２倍の動作を切り替えながら使用しなければならず、不便であるとともに、そのための処理を必要とし、本来必要でない電力を消費することになる。また、平均の電力は７５％に抑えることができても、１倍の動作時は消費電力が高いので、これに対応するための、電源設計などを行わなければならない。また、１倍の動作と１／２倍の動作を切り替えるとき、消費電力が大きく変化し、不所望の電圧変動を生じる可能性があり、これに対応するための電源設計などを行わなければならない。
【００１０】
＜実施形態１＞
次に、第１の実施形態（実施形態１）に係る半導体装置について図１Ａおよび図１Ｂを用いて説明する。図１Ａは実施形態１に係る半導体装置の構成示すブロック図である。図１Ｂは実施形態１に係る半導体装置のクロック信号の波形を示す図である。
実施形態１に係る半導体装置はクロック発生回路（ＣＰＧ）とデータ処理部（ＤＰＵ）とを備える。クロック発生回路（ＣＰＧ）は、発振器（ＯＳＣ）と、発信器（ＯＳＣ）で生成される源クロック信号（ＣＬＫＯ）に基づいてクロック制御信号（ＣＫＣ）を生成する制御回路（ＣＣ）と、源クロック信号（ＣＬＫＯ）をクロック制御信号（ＣＫＣ）で時間的に部分的許可（イネーブル）または禁止（ディスエーブル）してクロック信号（ＣＬＫ）を出力する出力回路（ＯＣ）と、を備える。クロック発生回路（ＣＰＧ）はクロック信号（ＣＬＫ）をデータ処理部に供給する。データ処理部（ＤＰＵ）は制御回路（ＣＣ）に源クロック信号（ＣＬＫＯ）を許可または禁止する割合を設定することが可能である。図１Ｂの破線は源クロック信号（ＣＬＫＯ）が禁止されたことを示している。なお、クロック信号（ＣＬＫ）はデータ処理部（ＤＰＵ）以外の機能ブロックにも供給される。
クロック信号（ＣＬＫ）の破線部分は源クロック信号（ＣＬＫＯ）の出力が禁止されてクロックパルスが発生せず、クロック信号（ＣＬＫ）の実線部分は源クロック信号（ＣＬＫＯ）の出力が許可されてクロックパルスが発生する。これにより、クロック信号（ＣＬＫ）の単位時間当たりのクロックパルス数を変化させることができ、クロック信号（ＣＬＫ）は源クロック信号（ＣＬＫＯ）の１／Ｎ倍以外のクロックパルス数（周波数）になることができる。よって、実施形態に係る半導体装置は所要の性能と消費電力を実現することができる。
【００１１】
＜実施形態２＞
次に、第２の実施形態（実施形態２）に係る半導体装置について図１Ｃを用いて説明する。図１Ｃは実施形態２に係る半導体装置の構成を示すブロック図である。
実施形態２に係る半導体装置は実施形態１に係る半導体装置にクロック発生回路（ＣＰＧ）およびデータ処理部（ＤＰＵ）に接続されるバスと、制御回路（ＣＣ）の内容をバス以外から変更可能な変更回路（ＡＣ）とを追加した構成である。すなわち、実施形態２に係る半導体装置はクロック発生回路（ＣＰＧ）とデータ処理部（ＤＰＵ）とバス（ＢＵＳ）とを備える。クロック発生回路（ＣＰＧ）は発振器（ＯＳＣ）と制御回路（ＣＣ）と出力回路（ＯＣ）と変更回路（ＡＣ）を備える。制御回路（ＣＣ）は発振器（ＯＳＣ）で生成される源クロック信号（ＣＬＫＯ）に基づいてクロック制御信号（ＣＫＣ）を生成する。出力回路（ＯＣ）は源クロック信号（ＣＬＫＯ）をクロック制御信号（ＣＫＣ）で時間的に部分的許可または禁止してクロック信号（ＣＬＫ）を出力する。変更回路（ＡＣ）はバス（ＢＵＳ）以外を経由して制御回路（ＣＣ）の内容を変更可能なである。データ処理部（ＤＰＵ）は制御回路（ＣＣ）に源クロック信号（ＣＬＫＯ）を許可または禁止する割合を設定することが可能である。図１Ｅの破線は源クロック信号（ＣＬＫＯ）が禁止されたことを示している。なお、クロック信号（ＣＬＫ）はデータ処理部（ＤＰＵ）以外の機能ブロックにも供給される。
変更回路（ＡＣ）によって源クロック信号（ＣＬＫＯ）を許可または禁止する割合を変更することが可能であるので、データ処理部（ＤＰＵ）により制御回路（ＣＣ）の内容を変更する必要がなくなる。これによって、制御を容易にしたり自動的に実行したりすることが可能になる。
【００１２】
＜実施形態３＞
次に、第３の実施形態（実施形態３）に係る半導体装置について図１Ｄおよび図１Ｅを用いて説明する。図１Ｄは実施形態３に係る半導体装置の構成を示すブロック図である。図１Ｅは実施形態３に係る半導体装置のクロック信号の波形を示す図である。
実施形態３に係る半導体装置は実施形態１に係る半導体装置の制御回路（ＣＣ）と出力回路（ＯＣ）とを少なくとも２組備え、第１のクロック信号（ＣＬＫ１）を第１領域に供給し、第２のクロック信号（ＣＬＫ２）を第２領域に供給するようにされる。すなわち、実施形態３に係る半導体装置は、第１のクロック信号（ＣＬＫ１）および第２のクロック信号（ＣＬＫ２）を生成するクロック発生回路（ＣＰＧ）と、第１のクロック信号（ＣＬＫ１）で動作する第１の領域と、第２のクロック信号（ＣＬＫ２）で動作する第２の領域と、を備える。クロック発生回路（ＣＰＧ）は発振器（ＯＳＣ）と第１のクロック制御回路（ＣＣ）と第１のクロック出力回路（ＯＣ）と第２のクロック制御回路（ＣＣ）と第２のクロック出力回路（ＯＣ）とを備える。発振器（ＯＳＣ）は源クロック信号を生成する。第１のクロック制御回路（ＣＣ）は第１のデューティを有する第１の制御信号（ＣＫＣ）を生成する。第１のクロック出力回路（ＯＣ）は第１の制御信号（ＣＫＣ）に基づいて源クロック信号（ＣＬＫＯ）を時間的に部分的許可または禁止して第１のクロック信号（ＣＬＫ１）を出力することが可能である。第２のクロック制御回路（ＣＣ）は第２のデューティを有する第２の制御信号（ＣＫＣ）を生成する。第２のクロック出力回路（ＯＣ）は第２の制御信号（ＣＫＣ）に基づいて源クロック信号（ＣＬＫＯ）を時間的に部分的許可または禁止して第２のクロック信号（ＣＬＫ２）を出力することが可能である。
実施形態１と同様に、第１のクロック信号（ＣＬＫ１）および第２のクロック信号（ＣＬＫ２）の破線部分は源クロック信号（ＣＬＫＯ）の出力が禁止されてクロックパルスが発生せず、第１のクロック信号（ＣＬＫ１）および第２のクロック信号（ＣＬＫ２）の実線部分は源クロック信号（ＣＬＫＯ）の出力が許可されてクロックパルスが発生する。これにより、第１のクロック信号（ＣＬＫ１）と第２のクロック信号（ＣＬＫ２）の単位時間当たりのクロックパルス数（周波数）を異ならせることができる。
第１のクロック信号（ＣＬＫ１）および第２のクロック信号（ＣＬＫ２）の立ち上がりエッジおよび立下りエッジは源クロック信号（ＣＬＫＯ）の立ち上がりエッジおよび立下りエッジに相当するので、第１領域と第２領域とのインタフェースは、源クロック信号（ＣＬＫＯ）に対する同期設計とすることができる。よって、第１領域と第２領域とインタフェース設計を容易にすることができ、その構成を簡略にすることができる。
【００１３】
実施形態２と実施形態３とを組み合わせることができる。例えば、実施形態３に係る半導体装置に変更回路（ＡＣ）を追加し、制御回路（ＣＣ）の内容を変更するようにしてもよい。
【実施例１】
【００１４】
まず、第１の実施例（実施例１）に係るマイクロコンピュータについて図２を用いて説明する。図２は実施例に係るマイクロコンピュータの構成を示すブロック図である。
半導体装置の一例であるマイクロコンピュータ１０は、クロック発生回路（ＣＰＧ）１１と、ＣＰＵ１２と、メモリ１３と、周辺回路（ＩＯ）１４と、を含んで構成され、公知の半導体製造技術により1つの半導体基板上に形成される。ＣＰＵ１２はマイクロコンピュータ１０全体の処理を司る。ＣＰＵ１２は実施形態に係る半導体装置のデータ処理部（ＤＰＵ）の一例である。メモリ１３はＣＰＵ１２の処理プログラムなどの格納用の不揮発性メモリ（ＲＯＭ）とＣＰＵ１２の作業領域およびデータの一時記憶用の揮発性メモリ（ＲＡＭ）とを備える。周辺回路（ＩＯ）１４はタイマ、ＳＣＩ（Serial Communication Interface）、Ａ／Ｄ(Analog/Digital)変換器、ポート、センサなどを備える。
マイクロコンピュータ１０の機能ブロックは、内部バス１５によって相互に接続される。ＣＰＵ１２は、内部バス１５を介して、メモリ１３や周辺回路１４に含まれるレジスタをリード／ライトする。周辺回路１４は各種の入出力端子を持つ。ＣＰＵ１２およびメモリ１３は第１領域とされ、クロック発生回路１１から第１領域の動作用のクロック信号（以下、「ＣＬＫ１」と略する。）が供給される。周辺回路１４は第２領域とされ、クロック発生回路１１から第２領域の動作用のクロック信号（以下、「ＣＬＫ２」と略する。）が供給される。第１領域および第２領域はお互いに異なるクロック信号で動作することができる。
【００１５】
次に、実施例１に係るクロック発生回路について図３から図９を用いて説明する。図３は実施例１に係るクロック発生回路の構成を示すブロック図である。図４は実施例１に係るイネーブル生成部およびクロックゲーティング部の構成を示すブロック図である。図５は実施例１に係る重み反転回路を説明するための図である。図６はクロックイネーブル信号の生成の仕方を説明するための図である。実施例１は実施形態１および実施形態３の実施例である。
図３に示すように、クロック発生回路（ＣＰＧ）１１は、発振器（ＯＳＣ）１１０と、制御回路である第１のイネーブル生成部（ＥＮ）１１１−１と、出力回路である第１のクロックゲーティング部（ＣＧ）１１２−１と、制御回路である第２のイネーブル生成部（ＥＮ）１１１−２と、出力回路である第２のクロックゲーティング部（ＣＧ）１１２−２と、を備える。発振器１１０は源クロック信号（以下、「ＣＬＫＯ」と略する。）を生成する。発振器１１０はマイクロコンピュータ１０に外付けされる水晶振動子等によって源クロック信号を生成し、必要に応じてＰＬＬ等の逓倍回路や分周回路などを含むことができる。
【００１６】
図４に示すように、第１のイネーブル生成部１１１−１は、カウンタ（ＣＮＴ）２１と、重み反転回路（ＷＲＣ）２２と、比較器（ＣＭＰ）２３と、デューティレジスタ（ＤＲ）２４と、を備える。第２のイネーブル生成部１１１−２は第１のイネーブル生成部１１１−１と同様な構成である。デューティレジスタ２４は内部バス１５を介して、ＣＰＵ１２からリード／ライトされる。カウンタ２１は、ＣＬＫＯでカウントアップする。カウンタ２１、デューティレジスタ２４は、例えば８ビットとし、カウンタ２１はＣＬＫＯを０〜２５５をカウントする。カウンタ２１は、デューティレジスタ２４と比較し、カウンタ２１の1周期の間（２５６単位）に、デューティレジスタ２４で指定した期間に制御信号であるクロックイネーブル信号（以下、「ＣＫＥ」と略する。）を活性化する。ＣＫＥが、平滑化されて、活性化（アサート）されるように、カウンタ２１のビットの重みを重み反転回路２２で逆転させて比較器２３で比較を行う。カウンタ２１の出力のビット配列を、｛ＣＮＴ［７］,  ...  ,ＣＮＴ［１］,ＣＮＴ［０］｝＝ＣＮＴとし、重み反転回路２２によって、並び替えられたビット配列を、｛ＣＮＴ［０］,ＣＮＴ［１］,  ...  ,ＣＮＴ［７］｝＝ＣＮＴ＿ＩＮＶ＝ＷＲＣとする。図５に示すように、例えば、カウンタ２１の値が＄０８であるとすると、重み反転回路２２で＄１０に変換される。ここで、デューティレジスタ２４のビット配列を{ＤＲ［７］,  ...  ,ＤＲ［１］,ＤＲ［０］}＝ＤＲとし、ＤＲ≧ＣＮＴ＿ＩＮＶのとき、ＣＫＥを活性化する。設計的には、ＤＲ＋ＣＮＴ＿ＩＮＶ≧２５５（ＣＮＴ＿ＩＮＶ≧２５５−ＤＲ）としても同等である。なお、カウンタ２１およびデューティレジスタ２４がｎビットの場合は、ＤＲ＋ＣＮＴ＿ＩＮＶ≧２ｎ−１のとき、ＣＫＥを活性化する。言い換えると、ＤＲとＣＮＴ＿ＩＮＶとの合計がデューティレジスタ２４に設定可能な値の最大値以上のときＣＫＥを活性化し、ＤＲとＣＮＴ＿ＩＮＶとの合計がデューティレジスタ２４に設定可能な値の最大値より小さいときＣＫＥを非活性化する。デューティレジスタ２４にはＣＫＥのデューティ（パルス幅をパルス周期で割ったもの）が設定される。
第１のイネーブル生成部１１１−１は、上記の構成のほか、過去の２５６単位のＣＫＥの数を保持し、これとデューティレジスタ２４の内容とを比較し、過去の２５６単位のＣＫＥの数がデューティレジスタ２４に格納された値以下の場合にＣＫＥを活性化し、デューティレジスタ２４に格納された値より大きい場合はＣＫＥを非活性化するように構成してもよい。第２のイネーブル生成部１１１−２も第１のイネーブル生成部１１１−１と同様にしてもよい。
【００１７】
図４に示すように、第１のクロックゲーティング部１１２−１は、アンドゲート２５とラッチ２６とで構成される。ラッチ２６は、ＣＬＫＯの反転をクロック信号とし、第１のイネーブル生成部１１１−１が出力するＣＫＥを入力する。アンドゲート２５は、ＣＬＫＯとラッチ２６の出力を入力してＣＬＫ１を生成する。ＣＫＥがハイレベルとされる（活性化される）と、ＣＬＫＯの出力が許可（イネーブル）されて、次のＣＬＫＯに相当するクロック信号を供給する。ＣＫＥがロウレベルとされる（非活性化される）と、ＣＬＫＯの出力が禁止（マスク）されて、次のＣＬＫＯに相当するクロック信号を供給しない（ロウレベルとなる）。これにより、ＣＬＫＯは、ＣＫＥのハイレベルの期間にアンドゲート２５を介して出力され、ＣＫＥのロウレベルの期間には出力されない。ＣＬＫＯの出力を許可または禁止する回路はアンドゲート２５に限定されるものではなく、ノアゲートやトランスファゲートであってもよい。第２のクロックゲーティング部１１２−２は第１のクロックゲーティング部１１２−１と同様な構成であり、第２のイネーブル生成部１１１−２が出力するＣＫＥとＣＬＫＯによりＣＬＫ２を生成する。
クロック発生回路１１から、各領域ないし各回路にクロック信号を分配する途中で、各回路の論理などによって、従来同様に、クロックゲーティングを行うことができる。例えば、第１領域へのＣＬＫ１の供給を停止して第１領域を停止状態にしたり、第１領域の一部の機能ブロック（例えば、ＣＰＵ）へのＣＬＫ１の供給を停止してＣＰＵを停止状態にしたりすることができる。
【００１８】
図６はＤＲ、ＷＲＣ、ＣＮＴの具体例を示す図である。図７はクロックイネーブル信号の出力態様を説明するための図である。図８（Ａ）は実施例１に係るクロック発生回路の第１のイネーブル生成部のＤＲ＝１７０の場合のタイミング図である。図８（Ｂ）は実施例１に係るクロック発生回路の第２のイネーブル生成部のＤＲ＝１９１の場合のタイミング図である。
上述の通り、ＤＲ＋ＣＮＴ＿ＩＮＶ≧２５５が成立するとき、比較器２３によってＣＫＥがアサートされる。図６に示すように、例えばデューティレジスタ２４に設定された値が２（ＤＲ＝２）の場合は、重み反転回路２２の出力の値が２５３〜２５５（ＣＮＴ＿ＩＮＶ＝２５３〜２５５）のときＣＫＥが活性化され、このときのカウンタ２１の値は１９１、１２７、２５５（ＣＮＴ＝１９１、１２７、２５５）である。ＤＲ＝４の場合は、ＣＮＴ＿ＩＮＶ＝２５１〜２５５のときＣＫＥが活性化され、このときのＣＮＴ＝２２３、６３、１９１、１２７、２５５である。ＤＲ＝８の場合は、ＣＮＴ＿ＩＮＶ＝２４７〜２５５のときＣＫＥが活性化され、このときのＣＮＴ＝２３９、３１、１５９、９５、２２３、６３、１９１、１２７、２５５である。図７では、横軸にカウンタ２１のカウント値（ＣＮＴ）、縦軸にデューティレジスタ２４の設定値（ＤＲ）を示す。図７における○印の箇所で、ＣＫＥが活性化される。例えば、ＤＲ＝２に設定すると、ＣＮＴ＝１２７、１９１、２５５のときに、ＣＫＥが活性化される。また、ＤＲ＝６３に設定すると、ＣＮＴが４の倍数＋３のときに、ＣＫＥが活性化される。ＤＲ＝１２７に設定すると、ＣＮＴが奇数のときに、ＣＫＥが活性化される。図４に示される構成では、ＷＲＣ重み反転回路２２によりカウンタ２１のビットの重みが反転されることによって、○印の箇所が横軸方向で局在化せずに均一に配置される。換言すれば、ＣＫＥの活性状態は、周期内での偏りが小さくなるように分配されるように平滑化される。
【００１９】
図８（Ａ）に示すように、第１のイネーブル生成部１１１−１のデューティレジスタ２４の設定値を１７０（ＤＲ＝１７０）にした場合、平均してＣＬＫＯの３回の内２回（１７１／２５６＝約６７％）で、ＣＬＫＯがイネーブル（ENABLE）されて、ＣＬＫ１が生成される。言い換えると、平均してＣＬＫＯの３回の内１回（８５／２５６＝約３３％）で、ＣＬＫＯがマスク（MASK）されて、ＣＬＫ１が生成されない。ＣＬＫ１が供給される第１領域は、ＣＬＫ１の立ち上がりエッジに同期して動作し、出力信号（OUTPUT SIGNAL）はＣＬＫ１の立ち上がりエッジで切り換る。
図８（Ｂ）に示すように、第２のイネーブル生成部１１１−２のデューティレジスタ２４の設定値を１９１（ＤＲ＝１９１）にした場合、ＣＬＫＯの４回の内３回（１９２／２５６＝７５％）で、ＣＬＫＯがイネーブル（ENABLE）されて、ＣＬＫ２が生成される。言い換えると、平均してＣＬＫＯの４回の内１回（６４／２５６＝２５％）で、ＣＬＫＯがマスク（MASK）されて、ＣＬＫ２が生成されない。ＣＬＫ２が供給される第２領域は、ＣＬＫ２の立ち上がりエッジに同期して動作し、出力信号（OUTPUT SIGNAL）はＣＬＫ２の立ち上がりエッジで切り換る。
ＣＬＫ１およびＣＬＫの立ち上がりエッジはＣＬＫＯの立ち上がりエッジに相当するから、第１領域と第２領域とのインタフェースは、ＣＬＫＯに対する同期設計を行えばよいことになる。後述する実施例２における第２領域を複数に分割してインタフェースする場合も同様である。
カウンタ２１をリセットなどで初期化して、それぞれの領域のカウンタ２１を同期することで、デューティレジスタ２４の値が大きい（速い）方のＣＫＥは、デューティレジスタ２４の値が小さい（遅い）方のＣＫＥを包含することになるので、遅い方が速い方を待つ必要がなく、インタフェースを容易にすることができる。
【００２０】
＜変形例１＞
実施例１の第１の変形例（変形例１）に係るクロック発生回路について図９を用いて説明する。図９は変形例１に係るクロック発生回路の構成を示すブロック図である。
変形例１に係るクロック発生回路（ＣＰＧ）１１Ａは、クロック発生回路１１の構成の他に、分周器（ＤＩＶ）１１４および分周選択レジスタ（ＳＥＬ）１１３を含む。分周器（ＤＩＶ）１１４は源クロック（ＣＬＫＯ）を分周して、第２のイネーブル生成部（ＥＮ）１１１−２、第２のクロックゲーティング部（ＣＧ）１１２−２に供給する。また、クロック発生回路１１Ａは第３領域の動作用のクロック信号（ＣＬＫ３）を供給する。
第３領域は、図示はしないが、周辺回路１４に含まれる機能ブロックの内、信号のハイレベル幅とロウレベル幅が等しい、または、クロック信号の周波数を固定にする必要がある機能ブロックを含む。適切な分周比で、クロック信号のハイレベル幅とロウレベル幅が合った、周波数が一定のクロック信号を供給することができる。
また、第２領域クロック（ＣＬＫ２）はＣＬＫＯに代えて第３領域クロック（ＣＬＫ３）に基づいて生成される。
【００２１】
＜変形例２＞
実施例１の第２の変形例（変形例２）に係るクロック発生回路について図１０を用いて説明する。図１０は変形例２に係るクロック発生回路の構成を示すブロック図である。変形例２は実施形態２の実施例でもある。
変形例２に係るクロック発生回路１１Ｂはクロック発生回路１１に変更回路１１５Ｂが追加され、第１のイネーブル生成部（ＥＮ）１１１−１を制御する。変更回路１１５Ｂは比較器（ＣＭＰ）１１６と演算器（ＡＵ）１１７とオフセットレジスタ（ＯＳＲ）１１８とを備える。比較器１１６は、特に制限はされないものの、周辺回路１４に含まれる、電圧、温度などセンサの出力信号（SENSOR OUTPUT）を入力する。これを基準値（ＲＥＦ）と比較器１１６で比較する。電圧の場合は、第１領域に供給される電圧が、基準値（ＲＥＦ）より低いことを検出する。温度の場合は、基準値（ＲＥＦ）より高いことを検出する。この検出がなされると、比較器１１６は演算器１１７に指示して、デューティレジスタ２４の内容から、オフセットレジスタ１１８の値を減算するようにする。これによって、ＣＬＫ１のパルス数の生成を低減して消費電流を低減するようにする。これによって、電圧の降下や温度の上昇を回復することができる。また、第１領域に供給される電圧が基準値（ＲＥＦ）より高いこと、温度が基準値（ＲＥＦ）より低いことを検出した場合は、比較器１１６は演算器１１７に指示して、デューティレジスタ２４の内容に、オフセットレジスタ１１８の値を加算するようにすることもできる。第２のイネーブル生成部（ＥＮ）１１１−２は第１のイネーブル生成部（ＥＮ）１１１−１と同様に変更回路１１５Ｂによって制御されることができる。
センサが検出する対象は、割り込み要求信号や割り込み要求信号の要求数などとしてもよい。例えば、割り込み要求信号の要求数が基準値（ＲＥＦ）より大きければ、比較器１１６は演算器１１７に指示して、デューティレジスタ２４の内容に、オフセットレジスタ１１８の値を加算して、ＣＬＫ１のパルス数の生成を増加して、処理性能を上げるようにする。割り込み要求信号の要求数が基準値（ＲＥＦ）より小さければ、比較器１１６は演算器１１７に指示して、デューティレジスタ２４の内容から、オフセットレジスタ１１８の値を減算して、消費電力を低減するようにする。
センサが検出する対象としては、割り込みマスクレベルなどを利用することもできるし、ＤＭＡコントローラなどのデータ転送装置を内蔵する場合は、この起動要求信号やバス権要求信号などを利用することもできる。また、センサが検出する対象として、ＳＣＩなどの通信状態を利用することもできる。これらを組み合わせて利用することもできる。いずれの場合も、処理能力を向上する場合にはクロック信号のパルス数の生成を増加させ、処理能力がさほど必要でない場合はクロック信号のパルス数の生成を低減して、消費電流を低減するようにできる。これをきめ細かく制御することができる。基準値（ＲＥＦ）は、ハードウェアで固定的に生成してもよいし、ソフトウェアで設定可能にしてもよい。
【００２２】
＜変形例３＞
実施例１の第３の変形例（変形例３）に係るクロック発生回路について図１１および図１２を用いて説明する。図１１は変形例３に係るクロック発生回路の構成を示すブロック図である。図１２は変形例３に係るクロック発生回路のタイミングを示すタイミング図である。変形例３は実施形態２の実施例でもある。
変形例３に係るクロック発生回路（ＣＰＧ）１１Ｃはクロック発生回路１１に変更回路１１５Ｃが追加され、第１のイネーブル生成部（ＥＮ）１１１−１を制御する。変更回路１１５Ｃは演算器（ＡＵ）１１７とライトデータレジスタ（ＷＲ）１１９とを備える。ライトデータレジスタ１１９へライトしたデータは、直接第１のイネーブル生成部１１１−１のデューティレジスタ２４へ転送されず、ライトデータレジスタ１１９の内容になるまで、第１のイネーブル生成部１１１−１のデューティレジスタ２４の内容を演算器１１７でインクリメントする。インクリメントは所要の間隔や所要の幅で行うようにする。これにより供給する第１領域の動作用のクロック信号（ＣＬＫ１）の変化を小さくし、消費電力の変動を小さくすることができる。
例えば、第１領域が停止状態から動作状態に遷移する場合に、動作状態への遷移直後は、第１のイネーブル生成部１１１−１のデューティレジスタ２４の内容を小さく設定し、前記同様にデューティレジスタ２４の内容を演算器１１７でインクリメントするようにすることができる。第１領域が動作状態から停止状態に遷移する場合には、逆にデクリメントを行ってから停止状態に遷移することができる。第２のイネーブル生成部（ＥＮ）１１１−２は第１のイネーブル生成部（ＥＮ）１１１−１と同様に変更回路１１５Ｃによって制御されることができる。
例えば、デューティレジスタ２４に＄００を設定した状態で、ライトデータレジスタ１１９へ＄ＦＦをライトするものとする。この場合、本例においては、ライトデータレジスタの下位６ビット（＄３Ｆ）はそのまま使用し、上位２ビットを演算器１１７で０１ずつインクリメントするようにし、デューティレジスタ２４の内容を＄００→＄３Ｆ→＄７Ｆ→＄ＢＦ→＄ＦＦと変化させる。この変化は、カウンタ２１の下位４ビットが００００のときに発生するようにする。クロックイネーブル信号（ＣＫＥ）のデューティが２５％→５０％→７５％→１００％と、各１６クロックの時間を持って変化するので、動作電流の急激な変化を抑制することができる。デューティレジスタ２４のインクリメントの値や時間間隔は任意に変更することができる。
【実施例２】
【００２３】
実施形態の第２の実施例（実施例２）に係るマイクロコンピュータについて図１３を用いて説明する。図１３は実施例２に係るマイクロコンピュータを示すブロック図である。
実施例２に係るマイクロコンピュータ１０Ｄは実施例１に係るマイクロコンピュータ１０と周辺回路（ＩＯ）を除いて基本的に同じである。マイクロコンピュータ１０ＤはＩＯを複数単位備えるとともに、例示した第１の周辺回路（ＩＯ−１）１４−１は、バスインタフェース部（ＢＩＦ）１４１−１と周辺機能部（ＰＦ）１４１−２に分割されている。また、第２の周辺回路（ＩＯ−２）１４−２も、バスインタフェース部（ＢＩＦ）１４２−１と周辺機能部（ＰＦ）１４２−２に分割されている。例えば、第１の周辺回路１４−１および第２の周辺回路１４−２は、それぞれタイマ、ＳＣＩとする。タイマの場合、周辺機能部１４１−２にはカウンタやコンペアレジスタ、比較器などのタイマの機能を含む。ＳＣＩの場合、周辺機能部１４２−２にはデータレジスタやシフトレジスタなどのシリアルコミュニケーションの機能を含む。
マイクロコンピュータ１０Ｄにおいては、第１のイネーブル生成部（ＥＮ）１１１−１のデューティレジスタ２４の設定値を、第２のイネーブル生成部（ＥＮ）１１１−２のデューティレジスタ２４の設定値以上として使用する。
第１のバスインタフェース部１４１−１および第２のバスインタフェース部１４２−１は第１領域とされ、ＣＰＵ１２と同一のクロック信号（ＣＬＫ１）で動作するようにする。これにより、バスアクセス時のオーバヘッドなく、効率的なリード／ライトを実現できる。
リードは、第１の周辺機能部１４１−２および第２の周辺機能部１４２−２に含まれる内部ＩＯレジスタを、第１のバスインタフェース部１４１−１および第２のバスインタフェース部１４２−１で選択して内部バス１５に出力すればよい。ライトは、内部バス１５で与えられたデータを、第２領域のクロックイネーブルに同期して、第１の周辺機能部１４１−２および第２の周辺機能部１４２−２に与えればよい。この場合、ライト動作の完了が遅れるので、この完了より早く、次のライトが要求された場合に、不所望に、次のライトが実行できない、あるいは待たされる可能性がある。これに対し、連続したライトの必要性が高ければ、当該内部ＩＯレジスタは第１のバスインタフェース部１４１−１および第２のバスインタフェース部１４２−１に含め、ＣＬＫ１でライトが完了するようにすれば、連続ライトを可能にすることができる。
第１の周辺機能部１４１−２および第２の周辺機能部１４２−２は、その機能や使用方法に応じて、第２のイネーブル生成部１１１−２のデューティレジスタ２４を設定し、クロックイネーブル信号（ＣＫＥ）を低減して低消費電力を実現できる。第１のバスインタフェース部１４１−１および第２のバスインタフェース部はＣＬＫ１で動作するが、その論理規模は、第１の周辺機能部１４１−２および第２の周辺機能部１４２−２に比較して十分に小さく、第２のイネーブル生成部１１１−２のＣＫＥを低減することによる低消費電力の効果を阻害することはない。さらに、第１のバスインタフェース部１４１−１および第２のバスインタフェース部１４２−１のクロック信号を、内部バス１５の当該ＩＯ選択信号で、さらに、イネーブルするようにしてもよい。この場合、バスアクセスと第１のバスインタフェース部１４１−１および第２のバスインタフェース部１４２−１は同一のクロック信号であり、バスアクセスが行われないときに、容易にクロックゲーティングを行うことができ、第１のバスインタフェース部１４１−１および第２のバスインタフェース部１４２−１の消費電力を低減できる。１つの周辺回路（ＩＯ）に対するバスアクセスの頻度は十分に小さいので、周辺回路（ＩＯ）全体を第２領域とするよりも、低消費電力を実現できる。
【００２４】
マイクロコンピュータ１０Ｄは、クロック発生回路１１の代わりに、変形例１のクロック発生回路１１Ａ、変形例２のクロック発生回路１１Ｂまたは変形例３のクロック発生回路１１Ｃを用いることができる。
【００２５】
以上の実施例および変形例によれば以下の作用効果を得るものである。
（１）デューティを設定可能にし、このデューティに従って、クロック信号をイネーブルすることによって、性能・消費電力をきめ細かく設定できる。デューティをカウンタと比較することで応答性をよくすることができる。カウンタの重みを反転して比較することで、クロック信号の偏りをなくすことができ、消費電力の変動を小さくすることができる。クロック信号を複数種類供給することによって、マイクロコンピュータの仕様ないし応用動作に即した、設定を行うことができる。複数のクロック信号を切り替えることに比べて、簡単で小規模な回路で実現でき、切り替えのための制御や回路を容易にすることができる。
（２）性能・消費電力をきめ細かい設定が可能であり、マイクロコンピュータを利用したシステムの電源や熱設計を容易にできる。または、電源や熱設計の制約に応じて、性能・消費電力をきめ細かく設定できる。
（３）電圧や温度を検知する回路によって、デューティを制御可能にする。これにより、不所望の誤動作などに到る前に、消費電力を低減することができる。システム設計時のマージンなどを小さくすることができ、システムを効率化することができる。
（４）上記（１）〜（３）の制御を容易にしたり、自動的に実行したりすることによって、ソフトウェアの開発およびそのためのプログラムなどを不要とすることができる。プログラムを削減することによって、消費電力の削減に寄与することができる。
（５）マイクロコンピュータの消費電力が変化する場合に、段階的にデューティを変更することによって、消費電力の変化を緩和することができ、内部または外部の電源設計を容易にしたり、簡略にしたりすることができる。費用の低減に寄与することができる。
（６）複数種類のクロック信号間のインタフェースは、一般的な同期設計とすることができ、インタフェース設計を容易にでき、その構成を簡略にできる。
【００２６】
以上、本発明者によってなされた発明を実施形態、実施例および変形例に基づき具体的に説明したが、本発明は、上記実施形態、実施例および変形例に限定されるものではなく、種々変更可能であることはいうまでもない。
【００２７】
例えば、マイクロコンピュータの詳細な構成は任意に変更することができる。周辺回路（ＩＯ）の種類や数は任意にすることができる。クロック信号を供給する領域の数は２または３に限定されず、任意に増やすことができる。
源クロックの生成方法は任意に変更することができる。複数の発振器を持ち、これらの発振器から源クロック信号を選択可能にすることもできる。
クロック発生回路が複数のクロック信号を生成する場合、複数のイネーブル生成部のカウンタ（ＣＮＴ）を共通にし、クロック発生回路はカウンタ（ＣＮＴ）を１つのみ有するようにしてもよい。
カウンタ（ＣＮＴ）とデューティレジスタ（ＤＲ）のビット数なども任意に変更することができる。イネーブル生成部毎にカウンタ（ＣＮＴ）とデューティレジスタ（ＤＲ）のビット数などを変えてもよい。
電圧、温度などセンサの出力に呼応したデータ転送装置のデータ転送によって、デューティレジスタ（ＤＲ）を設定するようにすることもできる。
クロックゲーティングの具体的な回路は変更可能であり、クロックの領域の設定やクロックツリーの構造なども任意にすることができる。
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野である、シングルチップマイクロコンピュータに適用した場合について説明したが、それに限定されるものではなく、メモリの一部を、マイクロコンピュータの外部に設けるようにしてもよい。その他の半導体装置、例えば、デジタルシグナルプロセッサ（ＤＳＰ）を中心にした半導体装置も利用可能であり、本発明は少なくとも、クロックに同期した論理構造を持つ半導体装置に適用することができる。
【符号の説明】
【００２８】
１０・・・マイクロコンピュータ
１１・・・クロック発生回路（ＣＰＧ）
１２・・・ＣＰＵ
１３・・・メモリ
１４・・・周辺回路（ＩＯ）
１５・・・内部バス
１６・・・変更回路
２１・・・カウンタ（ＣＮＴ）
２２・・・重み反転回路（ＷＲＣ）
２３・・・比較器（ＣＭＰ）
２４・・・デューティレジスタ（ＤＲ）
２５・・・アンドゲート
２６・・・ラッチ
１１０・・・発振器（ＯＳＣ）
１１１−１・・・第１のイネーブル生成部（ＥＮ）
１１１−２・・・第２のイネーブル生成部（ＥＮ）
１１２−１・・・第１のクロックゲーティング部（ＣＧ）
１１２−２・・・第２のクロックゲーティング部（ＣＧ）
１１３・・・分周選択レジスタ（ＳＥＬ）
１１４・・・分周器（ＤＩＶ）
１１５Ｂ，１１５Ｃ・・・変更回路
【図１Ａ】
0006441166.tif 000002
【図１Ｂ】
0006441166.tif 000003
【図１Ｃ】
0006441166.tif 000004
【図１Ｄ】
0006441166.tif 000005
【図１Ｅ】
0006441166.tif 000006
【図２】
0006441166.tif 000007
【図３】
0006441166.tif 000008
【図４】
0006441166.tif 000009
【図５】
0006441166.tif 000010
【図６】
0006441166.tif 000011
【図７】
0006441166.tif 000012
【図８】
0006441166.tif 000013
【図９】
0006441166.tif 000014
【図１０】
0006441166.tif 000015
【図１１】
0006441166.tif 000016
【図１２】
0006441166.tif 000017
【図１３】
0006441166.tif 000018