(57)【要約】【課題】回路設計を容易に行うことができる。【解決手段】半導体集積回路１０は、クロック制御回路１１と、モジュール１２〜１４とを有している。クロック制御回路１１は、半導体集積回路１０の外部から入力され、他の回路（図示せず）との同期を取るためのシステムクロックｓｙｓ＿ＣＬＫおよびモジュール１２〜１４を動作させるためにそれぞれ供給されるｉｎｐｕｔ信号群およびモジュール１２〜１４からそれぞれ出力されるｏｕｔｐｕｔ信号群に基づいて、モジュール１２〜１４をそれぞれ所定期間だけ動作させるために必要なクロックＣＬＫを生成し、モジュール１２〜１４に供給する。すなわち、外部からモジュール１２〜１４をクロック制御するための専用信号を受け取ることなく、また、モジュール１２〜１４の内部でクロック制御するためだけの専用回路を設計することなくクロックＣＬＫの制御を行っている。【選択図】図１
2009053746.tif 000002
【特許請求の範囲】
【請求項１】
入力されるクロックに応じて所定の動作を行う複数のクロック制御対象回路に前記クロックを供給するクロック制御回路において、
外部から供給されるシステムクロックと、前記クロック制御対象回路が処理する処理対象の信号と、前記クロック制御対象回路が処理した処理後の信号とで前記クロックを生成することを特徴とするクロック制御回路。
【請求項２】
前記処理対象の信号の変化を検出する信号検出部と、前記信号検出部の検出に基づいて、当該クロック制御回路のクロックの生成を開始させる動作開始信号を生成する動作開始信号生成部とを有することを特徴とする請求項１記載のクロック制御回路。
【請求項３】
前記処理後の信号の変化を検出する処理後信号検出部と、前記処理後信号検出部の検出に基づいて、当該クロック制御回路のクロックの生成を終了させるか否かを判断する動作終了判断部とをさらに有することを特徴とする請求項１記載のクロック制御回路。
【請求項４】
前記動作終了判断部は、前記処理後信号検出部が検出した所定期間後に、前記クロックの生成を終了させることを特徴とする請求項３記載のクロック制御回路。
【請求項５】
入力されるクロックに応じて所定の動作を行う複数のクロック制御対象回路と、
外部から供給されるシステムクロックと、前記クロック制御対象回路が処理する処理対象の信号と、前記クロック制御対象回路が処理した処理後の信号とで前記クロックを生成するクロック制御回路と、
を有することを特徴とする半導体集積回路。
【請求項６】
前記クロック制御対象回路が処理した処理後の信号は、前記クロック制御対象回路がクロック制御だけを目的とした回路からの出力信号を含まない信号であることを特徴とする請求項１記載のクロック制御回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はクロック制御回路および半導体集積回路に関し、特に、入力されるクロックに応じて所定の動作を行う複数のクロック制御対象回路にクロックを供給するクロック制御回路およびこのクロック制御回路を備える半導体集積回路に関する。
【背景技術】
【０００２】
例えばＵＳＢ（universal bus）等の、特定の用途向けのハードウエアマクロＩＰ（Intellectual Property）を構成する半導体集積回路が知られている。
一般的にこのような半導体集積回路は、クロックを入力することで所定の動作を行うクロック制御対象回路と、この回路にクロックを供給するためのクロック制御回路とを備えている。このクロック制御対象回路にクロックを供給する場合には、必要最小限の期間に限ってクロックを供給することが消費電力の観点からも望ましい。このため、様々なクロック制御対象回路に対応できるようなクロック制御回路が知られている（例えば、特許文献１、２参照。）。
【０００３】
図１０は、従来の半導体集積回路の回路構成を示すブロック図である。
半導体集積回路９０は、モジュール（クロック制御対象回路）９１〜９３に対し、クロックを供給するクロック制御回路９４を有している。
【０００４】
クロック制御回路９４は、システムクロックｓｙｓ＿ＣＬＫと、モジュール９１〜９３それぞれに対応して設けられ半導体集積回路９０の外部から入力されるクロック制御専用信号とに基づいて、モジュール９１〜９３へのクロックＣＬＫの供給期間を判断し、その期間だけクロックＣＬＫを供給する。
【０００５】
また、モジュール９１〜９３は、それぞれクロックＣＬＫが入力された状態でｉｎｐｕｔ信号群が入力されると、所定の動作を行い、動作を完了すると、ｏｕｔｐｕｔ信号群を出力するとともに、動作の完了を示すためのクロック制御専用ｏｕｔｐｕｔ信号群をクロック制御回路９４に出力する。
【特許文献１】特開２００４−１２７０５８号公報
【特許文献２】特開２００５−５６２１４号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、従来の回路構成ではクロック制御回路９４がクロックＣＬＫを生成する場合にのみ必要なクロック制御専用信号を半導体集積回路９０の外部で生成したり、モジュール９１〜９３が、ｏｕｔｐｕｔ信号群とは別個に、クロック制御専用ｏｕｔｐｕｔ信号群を生成したりする必要があるため、機能が異なるモジュール毎にこのような生成動作を行わせようとすると、モジュールの設計が煩雑になる。このため、モジュール単位のクロック制御の実現が困難であるという問題があった。
【０００７】
特に、各モジュールが備えるクロック制御専用ｏｕｔｐｕｔ信号群を作成する回路は、ｏｕｔｐｕｔ信号群を出力する回路（本来の出力回路）と同等のパイプラインを設計する必要がある。
【０００８】
ここで、クロック制御専用ｏｕｔｐｕｔ信号群は、種々のタイミングで入力される場合があるため、クロック制御回路９４におけるパイプラインを考慮したカウンタ（クロックを何個動かして止める、を数えるカウンタ）の設計は、それらの入力タイミング差や、出力タイミングとのオーバラップ等を考慮する必要があり、クロックＣＬＫの供給期間を決めるカウンタのビット幅が回路毎にばらつく等、かなりの煩雑な作業となる。
【０００９】
さらに、モジュール９１〜９３の出力信号の変化直後にクロックを停止させると、モジュール９１〜９３からｏｕｔｐｕｔ信号群が完全に出力されない場合もある。
本発明はこのような点に鑑みてなされたものであり、回路設計を容易に行うことができるクロック制御回路および半導体集積回路を提供することを目的とする。また、他の目的としてデータ出力を確実に行うことができるクロック制御回路および半導体集積回路を提供することを目的とする。
【課題を解決するための手段】
【００１０】
本発明では上記課題を解決するために、入力されるクロックに応じて所定の動作を行う複数のクロック制御対象回路に前記クロックを供給するクロック制御回路において、外部から供給されるシステムクロックと、前記クロック制御対象回路が処理する処理対象の信号と、前記クロック制御対象回路が処理した処理後の信号とで前記クロックを構成することを特徴とするクロック制御回路が提供される。
【００１１】
このようなクロック制御回路によれば、クロック制御専用の信号を用いることなく各クロック制御対象回路に対してクロック制御が行われる。
【発明の効果】
【００１２】
本発明では、クロック制御対象回路の入力信号および出力信号と、システムクロックとでクロックを構成することにより、クロック制御専用の信号を用いることなく各クロック制御対象回路に対してクロック制御を行うことができるため、各クロック制御対象回路が独立してクロック制御を行うことができる。このため、回路構成を容易なものとすることができる。
【発明を実施するための最良の形態】
【００１３】
以下、本発明の実施の形態を、図面を参照して詳細に説明する。
図１は、実施の形態の半導体集積回路を示すブロック図である。
図１に示す半導体集積回路１０は、クロック制御回路１１と、モジュール１２〜１４とを有している。
【００１４】
クロック制御回路１１は、半導体集積回路１０の外部から入力され、他の回路（図示せず）との同期を取るためのシステムクロックｓｙｓ＿ＣＬＫ、モジュール１２〜１４を動作させるためにそれぞれ供給されるｉｎｐｕｔ信号群およびモジュール１２〜１４からそれぞれ出力されるｏｕｔｐｕｔ信号群に基づいて、モジュール１２〜１４をそれぞれ所定期間だけ動作させるために必要なクロックＣＬＫを生成し、モジュール１２〜１４に供給する。すなわち、外部からモジュール１２〜１４を動作させるための専用信号を受け取ることなく、クロックＣＬＫの制御を行っている。
【００１５】
より詳しくは、モジュール１２〜１４に入力される信号は、これらのモジュール１２〜１４の出力信号を生成するために必要な信号であり、クロック制御回路１１のクロック制御を行うためだけを目的とした信号は含まれていない。
【００１６】
また、モジュール１２〜１４から出力される信号は、これらのモジュール１２〜１４の出力信号を生成するために必要な入力信号から生成される信号であり、クロック制御回路１１のクロック制御を行うためだけを目的とした信号を入力してモジュール１２〜１４が生成した出力信号は含まれていない。
【００１７】
なお、図１では、モジュール１２に入力される信号を「モジュールＡ用ｉｎｐｕｔ信号群」と表記し、モジュール１２から出力される信号を「モジュールＡ用ｏｕｔｐｕｔ信号群」と表記している。同様に、モジュール１３に入力される信号を「モジュールＢ用ｉｎｐｕｔ信号群」と表記し、モジュール１３から出力される信号を「モジュールＢ用ｏｕｔｐｕｔ信号群」と表記している。モジュール１４に入力される信号を「モジュールＣ用ｉｎｐｕｔ信号群」と表記し、モジュール１４から出力される信号を「モジュールＣ用ｏｕｔｐｕｔ信号群」と表記している。
【００１８】
モジュール１２、１３、１４は、それぞれクロック制御回路１１から供給されるクロックＣＬＫに応じて（クロックＣＬＫが供給されている期間のみ）所定の動作を行う機能を有している。例えばモジュール１２は、クロックＣＬＫが供給されている期間のみ、モジュールＡ用ｉｎｐｕｔ信号群の入力を受けつけ、入力された信号群を用いて処理を行い、モジュールＡ用ｏｕｔｐｕｔ信号群を出力する。
【００１９】
このモジュール１２〜１４としては特に限定されないが、ＳＯＣ（System On Chip）のトップレベルの場合、例えば、ＲＯＭやＳＲＡＭ、ＤＲＡＭ等のメモリや、ＵＡＲＴ、ＳＰＩ、Ｉ２Ｃ、ＵＳＢ、Ｅｔｈｅｒｎｅｔ（登録商標）、ＡＴＭ、ＪＴＡＧ等の通信Ｉ／Ｆや、ＰＣＩ、ＰＣＩ＿Ｅｘｐｒｅｓｓ、ＡＨＢ、ＨＤＤ  Ｉ／Ｆ、各種メモリカードＩ／Ｆ等のバスＩ／Ｆや、暗号化回路／復号化回路や、ＪＰＥＧ等の静止画ＣＯＤＥＣ、ＭＰＥＧ等の動画ＣＯＤＥＣ、画像認識等の画像処理回路や、音声処理回路等が挙げられる。
【００２０】
また、ＳＯＣのトップ下の階層にあるデバイスレベルの場合、例えば、ＵＳＢの送信機能回路、受信機能回路、レジスタ制御回路等のように機能分割された回路が挙げられる。
次に、ＳＯＣのトップ下の階層にあるデバイスレベルの場合におけるモジュール１２〜１４の内部構成について、代表的にモジュール１２の内部構成について説明する。
【００２１】
図２は、モジュールの内部構成を示す回路図である。
モジュール１２は、ｓｔａｔｅマシン１２１と、デコーダ１２２とフリップフロップ（ＦＦ）１２３とを有している。
【００２２】
このモジュール１２には、変化を検出するための信号ｓｔａｔｅ＿ｅｎ＿１および信号ｓｔａｔｅ＿ｅｎ＿２と、その時点の状態を示す７ビットの信号ｓｔａｔｅ＿ｄａｔａ［７：０］が入力される。これら３つの信号が、モジュールＡ用ｉｎｐｕｔ信号群を構成している。
【００２３】
ｓｔａｔｅマシン１２１は、ｓｔａｔｅデコーダ１２１ａと、ｓｔａｔｅマシンＦＦ１２１ｂとを有している。
ｓｔａｔｅデコーダ１２１ａは、入力される信号に応じて次の状態を示すビットデータを生成し、ｓｔａｔｅマシンＦＦ１２１ｂに供給する。
【００２４】
ｓｔａｔｅマシンＦＦ１２１ｂは、このビットデータを状態遷移用のクロックＣＬＫに従ってラッチする。すなわち、ある状態から次の状態への遷移を指示する検出信号が入力されると、クロックＣＬＫの次の変化エッジに応じて状態が変化することになる。
【００２５】
また、ｓｔａｔｅマシンＦＦ１２１ｂは、ｓｔａｔｅマシン１２１の状態（例えば３ビットのバイナリ信号が‘０００’（以下、（３‘ｂ０００）と示す）のときはアイドル状態、（３‘ｂ００１）のときはライト状態等）を示す３ビットの信号ｓｔａｔｅ＿ｒｅｇ［２：０］および信号ｓｔａｔｅ＿ｒｅｇ［２：０］以外に他のモジュールの制御信号となる信号や、他のモジュールに出力する信号を構成する信号ｏｕｔ＿ｓｅｌ＿１、信号ｏｕｔ＿ｓｅｌ＿２を出力する。
【００２６】
また、ｓｔａｔｅマシンＦＦ１２１ｂの出力は、ｓｔａｔｅデコーダ１２１ａにも供給される。
デコーダ１２２は、信号ｏｕｔ＿ｓｅｌ＿２とデータ信号ｓｔａｔｅ＿ｄａｔａ［７：０］とをデコードしてＦＦ１２３に出力する。
【００２７】
ＦＦ１２３は、デコーダ１２２の出力信号を、クロックＣＬＫに同期させた３ビットの信号ｏｕｔ＿ｄａｔａ［２：０］を出力する。
次に、クロック制御回路の内部構成について説明する。
【００２８】
図３は、クロック制御回路の内部構成を示す回路図である。
クロック制御回路１１は、ｓｔａｒｔ信号生成回路（信号検出部）２１と、ｃｏｕｎｔ＿ｅｎ信号生成回路（処理後信号検出部）３１と、クロックイネーブルカウンタ回路（動作終了判断部）４１と、クロックイネーブル信号生成回路（動作開始信号生成部）５１とＡＮＤ回路６１とを有している。各回路には、Ｌｏｗアクティブのリセット信号ＸＲＳＴが状況に応じて入力される。
【００２９】
ｓｔａｒｔ信号生成回路２１は、ｉｎｐｕｔ信号群と、ＡＮＤ回路６１が出力するクロックＣＬＫと、クロックイネーブルカウンタ回路４１が出力する最上位ビット信号ｃｏｕｎｔ［２］とに基づいて、クロックイネーブル信号生成回路５１の動作を開始させる信号ｓｔａｒｔを生成する。
【００３０】
ｃｏｕｎｔ＿ｅｎ信号生成回路３１は、ｏｕｔｐｕｔ信号群と、クロックＣＬＫと、最上位ビット信号ｃｏｕｎｔ［２］とに基づいて、クロックイネーブルカウンタ回路４１が備えるカウンタ（後述）をカウントアップさせる信号ｃｏｕｎｔ＿ｅｎと、カウンタをリセットさせる信号ｃｈ＿ｏｕｔｐｕｔとを生成する。
【００３１】
クロックイネーブルカウンタ回路４１は、信号ｃｏｕｎｔ＿ｅｎと、信号ｃｈ＿ｏｕｔｐｕｔと、クロックＣＬＫと、クロックイネーブル信号生成回路５１が出力する信号ｃｌｋ＿ｅｎと、自身が生成するｃｏｕｎｔ［２：０］とに基づいて、３ビットのカウンタ信号ｃｏｕｎｔ［２：０］を生成する。また、このカウンタ信号ｃｏｕｎｔ［２：０］の最上位ビット信号ｃｏｕｎｔ［２］を制御信号として出力する。
【００３２】
クロックイネーブル信号生成回路５１は、最上位ビット信号ｃｏｕｎｔ［２］と、クロックＣＬＫとに基づいて、クロックＣＬＫの出力期間を規定するクロックイネーブル信号ｃｌｋ＿ｅｎを生成する。
【００３３】
ＡＮＤ回路６１は、システムクロックｓｙｓ＿ＣＬＫと、クロックイネーブル信号ｃｌｋ＿ｅｎの両方が入力されると、クロックＣＬＫを出力する。
なお、図３に記載されている各信号の詳細については、後に詳述する。
【００３４】
次に、ｓｔａｒｔ信号生成回路２１の内部構成について詳しく説明する。
図４は、ｓｔａｒｔ信号生成回路の内部構成を示す回路図である。
ｓｔａｒｔ信号生成回路２１は、フリップフロップ（ＦＦ）２１１〜２１３と、比較回路２１４〜２１６と、ＯＲ回路２１７と、ｓｔａｒｔ信号出力回路２１８とを有している。
【００３５】
ＦＦ２１１〜２１３は、それぞれに入力される信号ｓｔａｔｅ＿ｅｎ＿１、信号ｓｔａｔｅ＿ｅｎ＿２およびデータ信号ｓｔａｔｅ＿ｄａｔａ［７：０］をクロックＣＬＫの立ち下がりエッジでラッチする。
【００３６】
比較回路２１４〜２１６は、それぞれＦＦ２１１〜２１３に入力される信号ｓｔａｔｅ＿ｅｎ＿１、信号ｓｔａｔｅ＿ｅｎ＿２、データ信号ｓｔａｔｅ＿ｄａｔａ［７：０］と、ＦＦ２１１〜２１３から出力される信号とを比較し、異なっている場合（ｉｎｐｕｔ信号群の変化を検出した場合）に‘１ｂ（バイナリ）’を出力する。例えば、クロックＣＬＫが入力されていない場合に、信号ｓｔａｔｅ＿ｅｎ＿１、信号ｓｔａｔｅ＿ｅｎ＿２、データ信号ｓｔａｔｅ＿ｄａｔａ［７：０］のいずれかが入力されると、対応する比較回路２１４〜２１６が‘１ｂ（バイナリ）’を出力する。
【００３７】
ＯＲ回路２１７は、比較回路２１４〜２１６の出力のＯＲ（論理和）をとり、信号ｃｈ＿ｉｎｐｕｔを出力する。ここで、これら出力のうちいずれか１つが‘１ｂ（バイナリ）’であれば、信号ｃｈ＿ｉｎｐｕｔの論理は‘１ｂ（バイナリ）’になり、いずれも‘０ｂ（バイナリ）’であれば‘０ｂ（バイナリ）’となる。
【００３８】
ｓｔａｒｔ信号出力回路２１８は、信号ｃｈ＿ｉｎｐｕｔ、信号ｃｏｕｎｔ［２］およびリセット信号ＸＲＳＴの入力に基づいて、信号ｓｔａｒｔを生成し、出力する。
ここで、信号ｃｈ＿ｉｎｐｕｔのセット（アサート）は、信号ｓｔａｒｔのセット条件となる。
【００３９】
リセット信号ＸＲＳＴおよび最上位ビット信号ｃｏｕｎｔ［２］のセットは、信号ｓｔａｒｔのリセット（ネゲート）条件となる。
このように、ｓｔａｒｔ信号生成回路２１は、信号ｓｔａｔｅ＿ｅｎ＿１、信号ｓｔａｔｅ＿ｅｎ＿２、データ信号ｓｔａｔｅ＿ｄａｔａ［７：０］のうちの少なくとも１つが変化すると、信号ｓｔａｒｔをセットする。そして、リセット信号ＸＲＳＴまたは最上位ビット信号ｃｏｕｎｔ［２］がセットされると、信号ｓｔａｒｔをリセットする。
【００４０】
次に、ｃｏｕｎｔ＿ｅｎ信号生成回路の内部構成について詳しく説明する。
図５は、ｃｏｕｎｔ＿ｅｎ信号生成回路の内部構成を示す回路図である。
ｃｏｕｎｔ＿ｅｎ信号生成回路３１は、ＦＦ３１１〜３１３と、比較回路３１４〜３１６と、ＯＲ回路３１７と、ｃｏｕｎｔ＿ｅｎ信号出力回路３１８とを有している。
【００４１】
ＦＦ３１１〜３１３は、それぞれに入力される信号ｏｕｔ＿ｓｅｌ＿１、信号ｓｔａｔｅ＿ｒｅｇ［２：０］および信号ｏｕｔ＿ｄａｔａ［２：０］をクロックＣＬＫの立ち下がりエッジでラッチする。
【００４２】
比較回路３１４〜３１６は、それぞれＦＦ３１１〜３１３に入力される信号ｏｕｔ＿ｓｅｌ＿１、信号ｓｔａｔｅ＿ｒｅｇ［２：０］、信号ｏｕｔ＿ｄａｔａ［２：０］と、ＦＦ３１１〜３１３から出力される信号とを比較し、異なっている場合（ｏｕｔｐｕｔ信号群の変化を検出した場合）に‘１ｂ（バイナリ）’を出力する。
【００４３】
ＯＲ回路３１７は、比較回路３１４〜３１６の出力のＯＲ（論理和）をとり、信号ｃｈ＿ｏｕｔｐｕｔを出力する。ここで、これら出力のうちいずれか１つが‘１ｂ（バイナリ）’であれば、信号ｃｈ＿ｏｕｔｐｕｔの論理は‘１ｂ（バイナリ）’になり、いずれも‘０ｂ（バイナリ）’であれば信号ｃｈ＿ｏｕｔｐｕｔの論理は‘０ｂ（バイナリ）’となる。
【００４４】
ｃｏｕｎｔ＿ｅｎ信号出力回路３１８は、信号ｃｈ＿ｏｕｔｐｕｔ、信号ｃｏｕｎｔ［２］およびリセット信号ＸＲＳＴの入力に基づいて、信号ｃｏｕｎｔ＿ｅｎを生成し、出力する。
【００４５】
ここで、信号ｃｈ＿ｏｕｔｐｕｔのセットは、信号ｃｏｕｎｔ＿ｅｎのセット条件となる。
リセット信号ＸＲＳＴのセットは、信号ｃｏｕｎｔ＿ｅｎのリセット条件となる。
【００４６】
最上位ビット信号ｃｏｕｎｔ［２］のセットは、信号ｃｏｕｎｔ＿ｅｎのリセット条件となる。
このように、ｃｏｕｎｔ＿ｅｎ信号生成回路３１は、信号ｏｕｔ＿ｓｅｌ＿１、信号ｓｔａｔｅ＿ｒｅｇ［２：０］、信号ｏｕｔ＿ｄａｔａ［２：０］のうちの少なくとも１つが変化すると、信号ｃｈ＿ｏｕｔｐｕｔおよび信号ｃｏｕｎｔ＿ｅｎをセットする。そして、リセット信号ＸＲＳＴまたは最上位ビット信号ｃｏｕｎｔ［２］がセットされると、信号ｃｈ＿ｏｕｔｐｕｔおよび信号ｃｏｕｎｔ＿ｅｎをリセットする。
【００４７】
次に、クロックイネーブルカウンタ回路４１の構成について詳しく説明する。
図６は、クロックイネーブルカウンタ回路の構成を示す回路図である。
クロックイネーブルカウンタ回路４１は、３つのＤ−ＦＦで構成される３ビットのカウンタを構成している。
【００４８】
クロックイネーブルカウンタ回路４１は、ｃｏｕｎｔ＿ｅｎ信号生成回路３１からの信号ｃｏｕｎｔ＿ｅｎが入力された状態でクロックＣＬＫの立ち下がりエッジが入力される度に、出力する３ビットカウンタ信号ｃｏｕｎｔ［２：０］の値を１ずつインクリメントする。
【００４９】
リセット信号ＸＲＳＴのセットは、３ビットカウンタ信号ｃｏｕｎｔ［２：０］の値を（３‘ｂ０００）にリセットする条件となる。
また、信号ｃｈ＿ｏｕｔｐｕｔがアサートした場合も、３ビットカウンタ信号ｃｏｕｎｔ［２：０］の値を（３‘ｂ０００）にリセットする。
【００５０】
また、クロックイネーブル信号ｃｌｋ＿ｅｎのリセットは、３ビットカウンタ信号ｃｏｕｎｔ［２：０］の値を（３‘ｂ０００）にリセットする条件となる。
次に、クロックイネーブル信号生成回路５１とＡＮＤ回路６１の構成について詳しく説明する。
【００５１】
図７は、クロックイネーブル信号生成回路およびＡＮＤ回路の構成を示す回路図である。
リセット信号ＸＲＳＴのセットは、クロックイネーブル信号ｃｌｋ＿ｅｎのセット条件になる（リセット期間中にクロックがないと値が更新されないため）。
【００５２】
信号ｓｔａｒｔは、クロックイネーブル信号ｃｌｋ＿ｅｎのセット条件になる。
最上位ビット信号ｃｏｕｎｔ［２］は、クロックイネーブル信号ｃｌｋ＿ｅｎのリセット条件になる。
【００５３】
このような構成とすることにより、クロック制御回路１１は、出力信号の変化を検出してから４クロックの間、次のｏｕｔｐｕｔ信号群の入力がない場合は、クロックイネーブルカウンタ回路４１が、最上位ビット信号ｃｏｕｎｔ［２］をセットし、クロックイネーブル信号生成回路５１が、クロックイネーブル信号ｃｌｋ＿ｅｎをリセットする。これにより、クロック制御回路１１は、モジュール１２へのクロックの供給を停止する。すなわち、クロックＣＬＫの終了時期は、出力信号の無変化を４クロック連続して検出したときである。
【００５４】
次に、半導体集積回路１０の動作を、２つの動作例を用いて説明する。
図８は、実施の形態の半導体集積回路の動作波形を示す図である。
まず、ｓｔａｒｔ信号生成回路２１が、信号ｓｔａｔｅ＿ｅｎ＿１の変化を検出すると、信号ｓｔａｒｔをセットする。これにより、クロックイネーブル信号生成回路５１が信号ｃｌｋ＿ｅｎをセットする（時刻Ｔ１）。これによって、ＡＮＤ回路６１は、クロックＣＬＫの出力を開始する。
【００５５】
次に、ｃｏｕｎｔ＿ｅｎ信号生成回路３１が、モジュール１２が出力する信号ｓｔａｔｅ＿ｒｅｇ［２：０］の変化を検出すると、信号ｃｏｕｎｔ＿ｅｎをセットする。これにより、クロックイネーブルカウンタ回路４１が、カウントアップを開始する（時刻Ｔ２）。ここで、モジュール１２に入力された信号ｓｔａｔｅ＿ｅｎ＿１のアサートによりスタートした、ｓｔａｔｅマシン１２１の状態が変化し、信号ｓｔａｔｅ＿ｒｅｇ［２：０］がアイドル状態（３‘ｂ０００）から（３‘ｂ００１）に変化する。
【００５６】
次に、信号ｓｔａｔｅ＿ｒｅｇ［２：０］が（３‘ｂ００１）からアイドル状態（３‘ｂ０００）に戻り、ｃｏｕｎｔ＿ｅｎ信号生成回路３１が、信号ｏｕｔ＿ｓｅｌ＿１の変化を検出すると、信号ｃｈ＿ｏｕｔｐｕｔをリセットする。これにより、クロックイネーブルカウンタ回路４１は、３ビットカウンタ信号ｃｏｕｎｔ［２：０］をリセットする（時刻Ｔ３）。信号ｃｏｕｎｔ＿ｅｎはセット状態のままなので（信号ｃｈ＿ｏｕｔｐｕｔは、信号ｃｏｕｎｔ＿ｅｎのリセット条件ではないので）、クロックイネーブルカウンタ回路４１は、カウントを続ける（再開する）。
【００５７】
その後、クロックイネーブルカウンタ回路４１は、３ビットカウンタ信号ｃｏｕｎｔ［２：０］が（３‘ｂ１００）になると、最上位ビット信号ｃｏｕｎｔ［２］信号をセットする。これにより、クロックイネーブル信号生成回路５１は、信号ｃｌｋ＿ｅｎをリセットする。これによって、ＡＮＤ回路６１は、クロックＣＬＫの出力を停止する。また、ｃｏｕｎｔ＿ｅｎ信号生成回路３１は、信号ｃｏｕｎｔ＿ｅｎをリセットする（時刻Ｔ４）。
【００５８】
図９は、実施の形態の半導体集積回路の他の動作波形を示す図である。
まず、ｓｔａｒｔ信号生成回路２１が、信号ｓｔａｔｅ＿ｅｎ＿２の変化を検出すると、信号ｓｔａｒｔをセットする。これにより、クロックイネーブル信号生成回路５１は、信号ｃｌｋ＿ｅｎをセットする（時刻Ｔ１ａ）。これによって、ＡＮＤ回路６１は、クロックＣＬＫの出力を開始する。
【００５９】
次に、ｃｏｕｎｔ＿ｅｎ信号生成回路３１が、モジュール１２が出力する信号ｓｔａｔｅ＿ｒｅｇ信号の変化を検出すると、信号ｃｏｕｎｔ＿ｅｎをセットする。これにより、クロックイネーブルカウンタ回路４１は、カウントアップを開始する（時刻Ｔ２ａ）。ここで、モジュール１２に入力された信号ｓｔａｔｅ＿ｅｎ＿２のアサートによりスタートしたｓｔａｔｅマシン１２１の状態が変化し、信号ｓｔａｔｅ＿ｒｅｇ［２：０］がアイドル状態（３‘ｂ０００）から（３‘ｂ００１）に変化する。
【００６０】
次に、信号ｓｔａｔｅ＿ｒｅｇ［２：０］が（３‘ｂ１１１）からアイドル状態（３‘ｂ０００）に戻り、ｃｏｕｎｔ＿ｅｎ信号生成回路３１が、信号ｏｕｔ＿ｓｅｌ＿２の変化を検出すると、信号ｃｈ＿ｏｕｔｐｕｔをリセットする。これにより、クロックイネーブルカウンタ回路４１は、３ビットカウンタ信号ｃｏｕｎｔ［２：０］をリセットする（時刻Ｔ３ａ）。信号ｃｏｕｎｔ＿ｅｎはセットされているので、クロックイネーブルカウンタ回路４１は、カウントを続ける（再開する）。
【００６１】
その後、ｃｏｕｎｔ＿ｅｎ信号生成回路３１が、信号ｏｕｔ＿ｄａｔａ［２：０］の変化を検出すると、信号ｃｈ＿ｏｕｔｐｕｔをリセットする。これにより、クロックイネーブルカウンタ回路４１は、３ビットカウンタ信号ｃｏｕｎｔ［２：０］をリセットする（時刻Ｔ４ａ）。
【００６２】
その後、クロックイネーブルカウンタ回路４１は、３ビットカウンタ信号ｃｏｕｎｔ［２：０］が（３‘ｂ１００）になると、最上位ビット信号ｃｏｕｎｔ［２］信号をセットする。これにより、クロックイネーブル信号生成回路５１は、信号ｃｌｋ＿ｅｎをリセットする。これによって、ＡＮＤ回路６１は、クロックＣＬＫの出力を停止する。また、ｃｏｕｎｔ＿ｅｎ信号生成回路３１は、信号ｃｏｕｎｔ＿ｅｎをリセットする（時刻Ｔ５ａ）。
【００６３】
以上述べたように、本実施の形態の半導体集積回路１０によれば、クロック制御回路１１が、モジュール１２〜１４にそれぞれ入力されるｉｎｐｕｔ信号群およびモジュール１２〜１４からそれぞれ出力されるｏｕｔｐｕｔ信号群と、システムクロックｓｙｓ＿ＣＬＫとでモジュール１２〜１４を動作させる期間を規定するクロックＣＬＫを作成するようにしたので、クロック制御用の専用信号を必要としない。
【００６４】
これにより、モジュール１２〜１４が独立してクロック制御を行うことができる。このため、半導体集積回路１０の回路構成を容易なものとすることができる。
また、クロック制御回路１１は、ｉｎｐｕｔ信号群の最初の変化を検出したときを開始時期とし、ｏｕｔｐｕｔ信号群の変化を検出した時期から４カウントした時期を終了時期とする信号ｃｌｋ＿ｅｎを生成するようにしたので、クロックＣＬＫの終了時期が明確になり、パイプラインを考慮する必要がなくなる。これにより、設計の煩雑さが軽減される。また、モジュール１２〜１４毎にクロック制御回路を設けることにより、モジュール単位でクロック制御が可能となり、半導体集積回路１０の消費電力を節減することができる。
【００６５】
また、クロックイネーブル信号生成回路５１は、クロックイネーブルカウンタ回路４１のカウント値が（３‘ｂ１００）になったとき（信号が変化しないと判断したとき）に、最上位ビット信号ｃｏｕｎｔ［２］を出力して信号ｃｌｋ＿ｅｎをリセットするようにしたので、データが完全に出力されないことを容易に防止することができる。なお、最上位ビット信号ｃｏｕｎｔ［２］を出力させるカウント値は、クロックＣＬＫを終了させたい時期に応じて任意の値に設定できることは言うまでもない。
【００６６】
以上、本発明のクロック制御回路および半導体集積回路を、図示の実施の形態に基づいて説明したが、本発明はこれに限定されるものではなく、各部の構成は、同様の機能を有する任意の構成のものに置換することができる。また、本発明に、他の任意の構成物や工程が付加されていてもよい。
【００６７】
また、本発明は、前述した実施の形態のうちの、任意の２以上の構成（特徴）を組み合わせたものであってもよい。
（付記１）  入力されるクロックに応じて所定の動作を行う複数のクロック制御対象回路に前記クロックを供給するクロック制御回路において、
外部から供給されるシステムクロックと、前記クロック制御対象回路が処理する処理対象の信号と、前記クロック制御対象回路が処理した処理後の信号とで前記クロックを生成することを特徴とするクロック制御回路。
【００６８】
（付記２）  前記クロック制御対象回路は、前記処理対象の信号の論理の変化に応じて必ず前記処理後の信号の論理が変化する回路であることを特徴とする付記１記載のクロック制御回路。
【００６９】
（付記３）  前記クロックは、前記システムクロックに同期したクロックであることを特徴とする付記１記載のクロック制御回路。
（付記４）  前記処理対象の信号の変化を検出する信号検出部と、前記信号検出部の検出に基づいて、当該クロック制御回路のクロックの生成を開始させる動作開始信号を生成する動作開始信号生成部とを有することを特徴とする付記１記載のクロック制御回路。
【００７０】
（付記５）  前記処理後の信号の変化を検出する処理後信号検出部と、前記処理後信号検出部の検出に基づいて、当該クロック制御回路のクロックの生成を終了させるか否かを判断する動作終了判断部とをさらに有することを特徴とする付記１記載のクロック制御回路。
【００７１】
（付記６）  前記動作終了判断部は、前記処理後信号検出部が検出した所定期間後に、前記クロックの生成を終了させることを特徴とする付記５記載のクロック制御回路。
（付記７）  前記動作終了判断部は、前記クロックに応じて有効期間をカウントし、カウント数が所定回数に達すると、前記クロックの生成を終了するカウント回路を有することを特徴とする付記５記載のクロック制御回路。
【００７２】
（付記８）  前記クロック制御対象回路が処理した処理後の信号は、前記クロック制御対象回路がクロック制御だけを目的とした回路からの出力信号を含まない信号であることを特徴とする付記１記載のクロック制御回路。
【００７３】
（付記９）  入力されるクロックに応じて所定の動作を行う複数のクロック制御対象回路と、
外部から供給されるシステムクロックと、前記クロック制御対象回路が処理する処理対象の信号と、前記クロック制御対象回路が処理した処理後の信号とで前記クロックを生成するクロック制御回路と、
を有することを特徴とする半導体集積回路。
【図面の簡単な説明】
【００７４】
【図１】実施の形態の半導体集積回路を示すブロック図である。
【図２】モジュールの内部構成を示す回路図である。
【図３】クロック制御回路の内部構成を示す回路図である。
【図４】ｓｔａｒｔ信号生成回路の内部構成を示す回路図である。
【図５】ｃｏｕｎｔ＿ｅｎ信号生成回路の内部構成を示す回路図である。
【図６】クロックイネーブルカウンタ回路の構成を示す回路図である。
【図７】クロックイネーブル信号生成回路およびＡＮＤ回路の構成を示す回路図である。
【図８】実施の形態の半導体集積回路の動作波形を示す図である。
【図９】実施の形態の半導体集積回路の他の動作波形を示す図である。
【図１０】従来の半導体集積回路の回路構成を示すブロック図である。
【符号の説明】
【００７５】
１０  半導体集積回路
１１  クロック制御回路
１２、１３、１４  モジュール
２１  ｓｔａｒｔ信号生成回路
３１  ｃｏｕｎｔ＿ｅｎ信号生成回路
４１  クロックイネーブルカウンタ回路
５１  クロックイネーブル信号生成回路
６１  ＡＮＤ回路
１２１  ｓｔａｔｅマシン
１２１ａ  ｓｔａｔｅデコーダ
１２１ｂ  ｓｔａｔｅマシンＦＦ
１２２  デコーダ
１２３、２１１〜２１３、３１１〜３１３  ＦＦ
２１４〜２１６、３１４〜３１６  比較回路
２１７、３１７  ＯＲ回路
２１８  ｓｔａｒｔ信号出力回路
３１８  ｃｏｕｎｔ＿ｅｎ信号出力回路
ＣＬＫ  クロック
ｓｙｓ＿ＣＬＫ  システムクロック
【図１】
2009053746.tif 000003
【図２】
2009053746.tif 000004
【図３】
2009053746.tif 000005
【図４】
2009053746.tif 000006
【図５】
2009053746.tif 000007
【図６】
2009053746.tif 000008
【図７】
2009053746.tif 000009
【図８】
2009053746.tif 000010
【図９】
2009053746.tif 000011
【図１０】
2009053746.tif 000012