(57)【要約】【課題】クロック信号のシームレスな切り替えが可能なクロック供給回路を提供する。【解決手段】マルチプレクサ１１０は、供給された複数のクロック信号のうちクロック指定信号ＳＥＬにより指定されたクロック信号を第１の中間クロックＣＬＫ＿Ｍ１として出力する。反転回路１２０は、クロック反転信号ＩＮＶＥＲＴに応答して、供給された第１の中間クロックＣＬＫ＿Ｍ１を、そのまま、又は、信号レベルを反転させて第２の中間クロックＣＬＫ＿Ｍ２として出力する。Ｄフリップフロップ１３０、１３１は、停止信号ＳＴＯＰを第２の中間クロックＣＬＫ＿Ｍ２の立ち上がりエッジ及び立ち下がりエッジに同期させてマスク信号ＭＡＳＫを生成する。ＡＮＤゲート１４０は、第２の中間クロックＣＬＫ＿Ｍ２とマスク信号ＭＡＳＫとから出力クロックＣＬＫ＿Ｏを生成し、出力する。【選択図】図２
2009009544.tif 000002
【特許請求の範囲】
【請求項１】
クロック指定信号に応答して、供給された複数のクロック信号のうちクロック指定信号により指定されたクロック信号を出力するマルチプレクサと、
クロック反転信号に応答して、前記マルチプレクサが出力したクロック信号をそのまま、又は、信号レベルを反転させて出力するクロック反転部と、
クロック信号の出力を停止するタイミングとクロック信号の出力の停止を解除するタイミングとを指示する出力停止信号と、前記クロック反転部が出力したクロック信号と、が供給され、前記出力停止信号が指示する停止タイミングと解除タイミングとをそれぞれ前記クロック信号のエッジに同期させることにより、前記クロック反転部が出力するクロック信号をマスクするためのマスク信号を生成するマスク信号生成部と、
前記クロック反転部が出力したクロック信号を前記マスク信号生成部が生成したマスク信号でマスクすることによりマスク済クロック信号を生成し、ハードウェアに供給するマスク部と、
を備える、ことを特徴とするクロック供給回路。
【請求項２】
前記マスク信号生成部は、それぞれデータ入力端子とクロック入力端子とデータ出力端子とを備えた、エッジトリガタイプの第１のＤフリップフロップと、第１のＤフリップフロップとは逆のトリガ極性を有するエッジトリガタイプの第２のＤフリップフロップとから構成され、第１と第２のＤフリップフロップはクロック入力端子に前記クロック反転部が出力したクロック信号が供給され、第１のＤフリップフロップはデータ入力端子に出力停止信号が供給され、第２のＤフリップフロップはデータ入力端子に第１のＤフリップフロップのデータ出力端子から出力された信号が供給され、第２のＤフリップフロップはデータ出力端子からマスク信号を出力する、
ことを特徴とする請求項１に記載のクロック供給回路。
【請求項３】
前記出力停止信号は、前記クロック指定信号が第１のクロック信号から第２のクロック信号への切り替えを指示する際に、第１のクロック信号の周期を１．５倍した時間に所定のセットアップ時間ＴｓｅｔｕｐＡと所定のホールド時間ＴｈｏｌｄＢとを加えた時間以上切り替えタイミングよりも前のタイミングを停止タイミングとして指示し、前記切り替えタイミングよりも所定のセットアップ時間ＴｓｅｔｕｐＣに所定のホールド時間ＴｈｏｌｄＤを加えた時間以上後のタイミングを解除タイミングとして指示する、
ことを特徴とする請求項１に記載のクロック供給回路。
【請求項４】
前記出力停止信号は、前記クロック反転信号がクロック信号の信号レベルを反転することを指示又は信号レベルの反転を解除することを指示する際に、該指示のタイミングよりも、クロック信号の周期を１．５倍した時間に所定のセットアップ時間ＴｓｅｔｕｐＡと所定のホールド時間ＴｈｏｌｄＢとを加えた時間以上前のタイミングを停止タイミングとして指示し、前期指示のタイミングから所定のセットアップ時間ＴｓｅｔｕｐＣに所定のホールド時間ＴｈｏｌｄＤを加えた時間が経過したタイミングを解除タイミングとして指示する、
ことを特徴とする請求項１に記載のクロック供給回路。
【請求項５】
クロック信号の切り替えを指示するクロック切り替え指示信号に応答して前記出力停止信号を生成する停止信号生成部と、
前記クロック切り替え指示信号に応答して前記クロック指定信号を生成するクロック指定信号生成部と、をさらに備える、
ことを特徴とする請求項１に記載のクロック供給回路。
【請求項６】
前記停止信号生成部は、供給されたクロック切り替え指示信号を遅延させて出力する第１の遅延回路と、前記クロック切り替え指示信号と前記第１の遅延回路から出力された信号とが供給され、供給された信号の信号レベルが一致する状態から一致しない状態に変化するタイミングを停止タイミングとし、一致しない状態から一致する状態に変化するタイミングを解除タイミングとして指示する出力停止信号を生成する一致回路と、を備え、
前記クロック指定信号生成部は、供給されたクロック切り替え指示信号を遅延させてクロック指定信号として出力する第２の遅延回路を備える、
ことを特徴とする請求項５に記載のクロック供給回路。
【請求項７】
クロック信号を分周して分周クロック生成用信号を生成する分周クロック生成用信号生成部、をさらに備え、
前記マスク信号生成部は、前記出力停止信号に代えて前記分周クロック生成用信号生成部が生成した分周クロック生成用信号と、前記クロック反転部が出力したクロック信号と、が供給され、分周クロック生成用信号のエッジを前記クロック信号のエッジに同期させることによりマスク信号を生成する、
ことを特徴とする請求項１に記載のクロック供給回路。
【請求項８】
前記分周クロック生成用信号生成部は、
クロック信号のエッジをカウントし、カウント値をディジタルデータとして出力するカウンタと、
前記カウンタが出力したディジタルデータに基づいて、前記クロック信号を分周した分周クロック生成用信号を生成し、出力する信号生成部と、
前記カウンタをリセットするカウント値を示すリセット値を出力するレジスタと、
前記レジスタが出力したリセット値と、前記カウンタが出力したディジタルデータが示すカウント値とを比較し、リセット値とカウント値とが一致する場合に、前記カウンタをリセットするリセット信号を前記カウンタに出力する比較部と、を備える、
ことを特徴とする請求項７に記載のクロック供給回路。
【請求項９】
請求項１乃至８に記載のクロック供給回路と、
前記ハードウェアを構成し、前記クロック供給回路からクロック信号が供給されるダイナミックリコンフィギュラブルハードウェアと、
から構成されるダイナミックリコンフィギュラブル回路。
【請求項１０】
クロック指定信号に応答して、供給された複数のクロック信号のうちクロック指定信号により指定されたクロック信号を出力する指定クロック出力ステップと、
クロック反転信号に応答して、前記指定クロック出力ステップで出力したクロック信号をそのまま、又は、信号レベルを反転させて出力するクロック反転ステップと、
出力停止信号が指示するクロック信号の出力を停止するタイミングとクロック信号の出力の停止を解除するタイミングとをそれぞれ前記クロック反転ステップで出力したクロック信号のエッジに同期させることによりマスク信号を生成するマスク信号生成ステップと、
前記クロック反転ステップで出力したクロック信号を前記マスク信号生成ステップで生成したマスク信号でマスクすることによりマスク済クロック信号を生成するマスクステップと、
前記マスクステップで生成したマスク済クロック信号を、ハードウェアに供給するクロック信号供給ステップと、
を備える、ことを特徴とするクロック供給方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック供給回路及びクロック供給方法に関する。
【背景技術】
【０００２】
近年、アプリケーションプログラム（以下、アプリケーションとする）の実行時に、動的に回路構成を切り替えることが可能であるハードウェアに関する技術、いわゆるダイナミックリコンフィギュラブル技術が開発されている。ダイナミックリコンフィギュラブル技術では、ソフトウェアがハードウェア構造をほとんど意識せずに、専用論理回路並の性能を容易に実現できる環境を作り出すことが可能となる。
【０００３】
これに伴い、ＡＳＩＣ（Ａｐｐｌｉｃａｔｉｏｎ  Ｓｐｅｃｉｆｉｃ  Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）を設計する場合のような複雑な設計作業を簡素化し、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）やＬＳＩ（Ｌａｒｇｅ  Ｓｃａｌｅ  Ｉｎｔｅｇｒａｔｉｏｎ）等の開発期間を短縮化できる仕組みが用意されつつある。アプリケーションの開発時のシミュレーションさえ通過すれば、ダイナミックリコンフィギュラブルプロセッサの実チップでの実行が完全に保証される。このため、ＡＳＩＣの検証作業といった煩雑な作業に振り回されることもなくなる。
【０００４】
また、ダイナミックリコンフィギュラブル技術では、回路構成を高速に切り替えることが可能となるため、一つのチップを様々な専用ＬＳＩに瞬時に作り替えることができる。つまり、コンピュータの仮想記憶のように、その時々で必要な回路構成に切り替えることができる。
【０００５】
上述したダイナミックリコンフィギュラブル技術に関しては、例えば特許文献１に開示されている。
【特許文献１】特許第３５４０７９６号公報
【０００６】
上述したダイナミックリコンフィギュラブル技術を用いてＬＳＩを実現する場合、通常は実装する回路間で使用するクロックが異なる。例えば、アプリケーションとして、ＤＥＳ（Data Encryption Standard）、ＪＰＥＧ（Joint Photographic Experts Group）、ワイヤレスＬＡＮ（Wireless Local Area Network）を切り替えて実行する場合、それぞれのアプリケーションを実行するために実装される回路を効率的に動作させるためのクロック信号はそれぞれ異なる。また、同一アプリケーションにおいてもモードや状況により、クロック信号を変更した方が消費電力等の観点で好ましい場合がある。このため、クロック信号を停止、反転、分周し、或いは、異種のクロック信号に切り替えて各回路に供給する回路が必要である。
【発明の開示】
【発明が解決しようとする課題】
【０００７】
しかしながら、従来のクロック供給回路では、異種のクロック信号への切り替え時、或いは、クロック信号の反転時にクロック信号にハザードが発生する問題があった。このため、回路構成を変更してから、初期化しない回路は実装できなかった。また、ハザードを発生させないように、クロック信号を停止してから回路構成を変更し、その後復帰動作に移行する方法では、迅速に回路構成を変更することができなかった。
【０００８】
さらに、別の方法として、クロック信号の切り替え機構を設けず、同周波数や同位相のクロック信号で動作する回路のみを実装する方法もあった。しかし、この方法では、ＦＰＧＡが実現しているような効率の良いハードウェアの実装はできず、また、使用できるアプリケーションも限定されてしまう。
【０００９】
本発明は、上記問題に鑑みてなされたものであり、クロック信号のシームレスな切り替えが可能な小サイズでシンプルなクロック供給回路、及びそのクロック供給方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の第１の観点に係るクロック供給回路は、
クロック指定信号に応答して、供給された複数のクロック信号のうちクロック指定信号により指定されたクロック信号を出力するマルチプレクサと、
クロック反転信号に応答して、前記マルチプレクサが出力したクロック信号をそのまま、又は、信号レベルを反転させて出力するクロック反転部と、
クロック信号の出力を停止するタイミングとクロック信号の出力の停止を解除するタイミングとを指示する出力停止信号と、前記クロック反転部が出力したクロック信号と、が供給され、前記出力停止信号が指示する停止タイミングと解除タイミングとをそれぞれ前記クロック信号のエッジに同期させることにより、前記クロック反転部が出力するクロック信号をマスクするためのマスク信号を生成するマスク信号生成部と、
前記クロック反転部が出力したクロック信号を前記マスク信号生成部が生成したマスク信号でマスクすることによりマスク済クロック信号を生成し、ハードウェアに供給するマスク部と、
を備える、ことを特徴とする。
【００１１】
前記マスク信号生成部は、それぞれデータ入力端子とクロック入力端子とデータ出力端子とを備えた、エッジトリガタイプの第１のＤフリップフロップと、第１のＤフリップフロップとは逆のトリガ極性を有するエッジトリガタイプの第２のＤフリップフロップとから構成され、第１と第２のＤフリップフロップはクロック入力端子から前記クロック反転部が出力したクロック信号が供給され、第１のＤフリップフロップはデータ入力端子から出力停止信号が供給され、第２のＤフリップフロップはデータ入力端子から第１のＤフリップフロップのデータ出力端子から出力された信号が供給され、第２のＤフリップフロップはデータ出力端子からマスク信号を出力してもよい。
【００１２】
前記出力停止信号は、前記クロック指定信号が第１のクロック信号から第２のクロック信号への切り替えを指示する際に、第１のクロック信号の周期を１．５倍した時間に所定のセットアップ時間ＴｓｅｔｕｐＡと所定のホールド時間ＴｈｏｌｄＢとを加えた時間以上切り替えタイミングよりも前のタイミングを停止タイミングとして指示し、前記切り替えタイミングよりも所定のセットアップ時間ＴｓｅｔｕｐＣに所定のホールド時間ＴｈｏｌｄＤを加えた時間以上後のタイミングを解除タイミングとして指示してもよい。
【００１３】
前記出力停止信号は、前記クロック反転信号がクロック信号の信号レベルを反転することを指示又は信号レベルの反転を解除することを指示する際に、該指示のタイミングよりも、クロック信号の周期を１．５倍した時間に所定のセットアップ時間ＴｓｅｔｕｐＡと所定のホールド時間ＴｈｏｌｄＢとを加えた時間以上前のタイミングを停止タイミングとして指示し、前期指示のタイミングから所定のセットアップ時間ＴｓｅｔｕｐＣに所定のホールド時間ＴｈｏｌｄＤを加えた時間が経過したタイミングを解除タイミングとして指示してもよい。
【００１４】
クロック信号の切り替えを指示するクロック切り替え指示信号に応答して前記出力停止信号を生成する停止信号生成部と、
前記クロック切り替え指示信号に応答して前記クロック指定信号を生成するクロック指定信号生成部と、をさらに備えてもよい。
【００１５】
前記停止信号生成部は、供給されたクロック切り替え指示信号を遅延させて出力する第１の遅延回路と、前記クロック切り替え指示信号と前記第１の遅延回路から出力された信号とが供給され、供給された信号の信号レベルが一致する状態から一致しない状態に変化するタイミングを停止タイミングとし、一致しない状態から一致する状態に変化するタイミングを解除タイミングとして指示する出力停止信号を生成する一致回路と、を備え、
前記クロック指定信号生成部は、供給されたクロック切り替え指示信号を遅延させてクロック指定信号として出力する第２の遅延回路を備えてもよい。
【００１６】
クロック信号を分周して分周クロック生成用信号を生成する分周クロック生成用信号生成部、をさらに備え、
前記マスク信号生成部は、前記出力停止信号に代えて前記分周クロック生成用信号生成部が生成した分周クロック生成用信号と、前記クロック反転部が出力したクロック信号と、が供給され、分周クロック生成用信号のエッジを前記クロック信号のエッジに同期させることによりマスク信号を生成してもよい。
【００１７】
前記分周クロック生成用信号生成部は、
クロック信号のエッジをカウントし、カウント値をディジタルデータとして出力するカウンタと、
前記カウンタが出力したディジタルデータに基づいて、前記クロック信号を分周した分周クロック生成用信号を生成し、出力する信号生成部と、
前記カウンタをリセットするカウント値を示すリセット値を出力するレジスタと、
前記レジスタが出力したリセット値と、前記カウンタが出力したディジタルデータが示すカウント値とを比較し、リセット値とカウント値とが一致する場合に、前記カウンタをリセットするリセット信号を前記カウンタに出力する比較部と、を備えてもよい。
【００１８】
ダイナミックリコンフィギュラブルハードウェアに供給するクロック信号として前期クロック供給回路から供給されたクロック信号を使用するために、前期クロック供給回路をダイナミックリコンフィギュラブル回路に組み込でもよい。
【００１９】
上記目的を達成するために、本発明の第２の観点に係るクロック供給方法は、
クロック指定信号に応答して、供給された複数のクロック信号のうちクロック指定信号により指定されたクロック信号を出力する指定クロック出力ステップと、
クロック反転信号に応答して、前記指定クロック出力ステップで出力したクロック信号をそのまま、又は、信号レベルを反転させて出力するクロック反転ステップと、
出力停止信号が指示するクロック信号の出力を停止するタイミングとクロック信号の出力の停止を解除するタイミングとをそれぞれ前記クロック反転ステップで出力したクロック信号のエッジに同期させることによりマスク信号を生成するマスク信号生成ステップと、
前記クロック反転ステップで出力したクロック信号を前記マスク信号生成ステップで生成したマスク信号でマスクすることによりマスク済クロック信号を生成するマスクステップと、
前記マスクステップで生成したマスク済クロック信号を、ハードウェアに供給するクロック信号供給ステップと、
を備える、ことを特徴とする。
【発明の効果】
【００２０】
本発明にかかるクロック供給回路及びクロック供給方法によれば、小サイズでシンプルな回路で種々のクロック信号の供給と、そのシームレスな切り替えが可能となる。
【発明を実施するための最良の形態】
【００２１】
以下、図面に基づき、本発明の実施の形態に係るクロック供給回路の構成と動作について説明する。
【００２２】
図１は、本発明の実施の形態に係るクロック供給回路１００が適用されるシステムの構成図である。
【００２３】
クロック供給回路１００は、制御信号生成部７００から供給された制御信号に基づいて、クロック信号をダイナミックリコンフィギュラブルハードウェア２００に供給する回路である。
【００２４】
クロック供給回路１００は、システムクロック生成部３００からシステムクロックＣＬＫ＿ＳＹＳ、第１のクロック信号生成部４００から第１のクロック信号ＣＬＫ＿ＩＡ、第２のクロック信号生成部６００から第２のクロック信号ＣＬＫ＿ＩＢがそれぞれクロック信号として供給される。
【００２５】
また、クロック供給回路１００は、制御信号生成部７００からクロック信号を停止させるための停止信号ＳＴＯＰと、複数のクロック信号から特定のクロック信号を指定するクロック指定信号ＳＥＬと、クロック信号の信号レベルを反転させるか否かを指示するクロック反転信号ＩＮＶＥＲＴと、が供給される。さらに、クロック供給回路１００は、分周クロック生成用信号生成部５００から分周クロック生成用信号ＣＬＫ＿ＤＩＶが供給される。そして、クロック供給回路１００は、これらのクロック信号や制御信号に基づいて生成した出力クロックＣＬＫ＿Ｏをダイナミックリコンフィギュラブルハードウェア２００に供給する。
【００２６】
また、クロック供給回路１００は、システムクロック生成部３００から供給されたシステムクロックＣＬＫ＿ＳＹＳを直接、ダイナミックリコンフィギュラブルハードウェア２００に供給する。
【００２７】
ダイナミックリコンフィギュラブルハードウェア２００は、動的に回路構成（ハードウェア構成）を切り替えながら、回路構成に対応するアプリケーションを実行する。
【００２８】
ダイナミックリコンフィギュラブルハードウェア２００は、クロック供給回路１００から供給される出力クロックＣＬＫ＿Ｏにより各アプリケーション用の回路が動作する。なお、アプリケーションに依存しない回路部分は、クロック供給回路１００から供給されるシステムクロックＣＬＫ＿ＳＹＳにより動作する。
【００２９】
システムクロック生成部３００は、システムクロックＣＬＫ＿ＳＹＳを生成する回路であり、第１のクロック信号生成部４００は、第１のクロック信号ＣＬＫ＿ＩＡを生成する回路であり、第２のクロック信号生成部６００は、第２のクロック信号ＣＬＫ＿ＩＢを生成する回路である。これらの回路は、それぞれ水晶発振子などを用いた発振回路などから構成される。ＰＬＬ（Ｐｈａｓｅ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）回路などを含んでいてもよい。
【００３０】
システムクロック生成部３００は、生成したシステムクロックＣＬＫ＿ＳＹＳを、クロック供給回路１００、及び、制御信号生成部７００に供給する。第１のクロック信号生成部４００は、生成した第１のクロック信号ＣＬＫ＿ＩＡを、クロック供給回路１００及び分周クロック生成用信号生成部４００に供給する。第２のクロック信号生成部６００は、生成した第２のクロック信号ＣＬＫ＿ＩＢを、クロック供給回路１００に供給する。
【００３１】
分周クロック生成用信号生成部５００は、第１のクロック信号生成部４００から供給された第１のクロック信号ＣＬＫ＿ＩＡから分周クロック生成用信号ＣＬＫ＿ＤＩＶを生成し、クロック供給回路１００に供給する。分周クロック生成用信号生成部５００の詳細については後述する。
【００３２】
制御信号生成部７００は、クロック供給回路１００にクロック信号のシームレスな切り替えを実現させるために、各制御信号を生成し、クロック供給回路１００に供給する。具体的には、制御信号生成部７００は、システムクロック生成部４００から供給されたシステムクロックＣＬＫ＿ＳＹＳに基づいて、停止信号ＳＴＯＰと、クロック指定信号ＳＥＬと、クロック反転信号ＩＮＶＥＲＴとを生成し、クロック供給回路１００に供給する。制御信号生成部７００は、ＣＰＵなどから構成される。
【００３３】
次に、図２を用いて、本発明の実施の形態に係るクロック供給回路１００の構成を詳細に説明する。
【００３４】
図２に示すように、クロック供給回路１００は、マルチプレクサ１１０と、反転回路１２０と、Ｄフリップフロップ１３０、１３１と、ＡＮＤゲート１４０と、を備える。
【００３５】
マルチプレクサ１１０は、制御端子に供給された信号に基づいて、２つの入力端子から供給されたクロック信号のうちいずれか一方のクロック信号を出力端子から出力する。マルチプレクサ１１０は、論理ゲートなどから構成され、２つの入力端子と、１つの出力端子と、１つの制御端子とを備える。一方の入力端子は、第１のクロック信号生成部４００に接続され、他方の入力端子は、第２のクロック信号生成部６００に接続される。また、制御端子は、制御信号生成部７００に接続され、出力端子は、反転回路１２０の入力端子に接続される。
【００３６】
マルチプレクサ１１０は、一方の入力端子から第１のクロック信号ＣＬＫ＿ＩＡ、他方の入力端子から第２のクロック信号ＣＬＫ＿ＩＢ、制御端子からクロック指定信号ＳＥＬが供給される。また、マルチプレクサ１１０は、制御端子に供給されたクロック指定信号ＳＥＬがＨレベルのとき第１のクロック信号ＣＬＫ＿ＩＡを、Ｌレベルのとき第２のクロック信号ＣＬＫ＿ＩＢを、第１の中間クロック信号ＣＬＫ＿Ｍ１として出力端子から出力する。
【００３７】
反転回路１２０は、反転制御端子から供給された信号に基づいて、入力端子から供給されたクロック信号をそのまま又は反転して出力端子から出力する。反転回路１２０は、論理ゲートＸＮＯＲなどから構成され、１つの入力端子と、１つの出力端子と、１つの反転制御端子とを備える。
【００３８】
入力端子は、マルチプレクサ１１０の出力端子に接続され、反転制御端子は、制御信号生成部７００に接続される。また、出力端子は、Ｄフリップフロップ１３０のクロック入力端子と、Ｄフリップフロップ１３１のクロック入力端子と、ＡＮＤゲート１４０の一方の入力端子とに接続される。
【００３９】
反転回路１２０は、入力端子から第１の中間クロック信号ＣＬＫ＿Ｍ１が供給され、反転制御端子からクロック反転信号ＩＮＶＥＲＴが供給される。また、反転回路１２０は、出力端子から第２の中間クロック信号ＣＬＫ＿Ｍ２を出力する。なお、反転回路１２０は、クロック反転信号ＩＮＶＥＲＴがＨレベルのとき第１の中間クロック信号ＣＬＫ＿Ｍ１をそのまま出力端子から出力し、Ｌレベルのとき第１の中間クロック信号ＣＬＫ＿Ｍ１を反転して出力端子から出力する。
【００４０】
Ｄフリップフロップ１３０は、保持する内部データを出力端子から出力するフリップフロップであり、クロック入力端子から供給された信号の立ち上がりエッジ毎に、内部データが入力端子から供給されるデータで更新される。Ｄフリップフロップ１３０は、論理ゲートなどから構成され、１つのデータ入力端子と、１つのクロック入力端子と、１つの出力端子とを備える。
【００４１】
データ入力端子は、制御信号生成部７００に接続され、クロック入力端子は、反転回路１２０の出力端子に接続され、出力端子は、Ｄフリップフロップ１３１のデータ入力端子に接続される。
【００４２】
Ｄフリップフロップ１３０は、データ入力端子から停止信号ＳＴＯＰが供給され、クロック入力端子から第２の中間クロック信号ＣＬＫ＿Ｍ２が供給される。また、Ｄフリップフロップ１３０は、第２の中間クロック信号ＣＬＫ＿Ｍ２の立ち上がりエッジに停止信号ＳＴＯＰを同期させた信号である同期停止信号ＳＴＯＰ＿Ｓを出力端子から出力する。
【００４３】
Ｄフリップフロップ１３１は、Ｄフリップフロップ１３０とほぼ同じ構成であるが、クロック入力端子は反転入力端子である。このため、Ｄフリップフロップ１３１の内部データは、クロック入力端子に供給された信号の立ち下がりエッジ毎に更新される。
【００４４】
データ入力端子は、Ｄフリップフロップ１３０の出力端子に接続され、クロック入力端子は、反転回路１２０の出力端子に接続され、出力端子は、ＡＮＤゲート１４０の一方の入力端子に接続される。
【００４５】
Ｄフリップフロップ１３１は、データ入力端子から同期停止信号ＳＴＯＰ＿Ｓが供給され、クロック入力端子から第２の中間クロック信号ＣＬＫ＿Ｍ２が供給される。また、Ｄフリップフロップ１３１は、第２の中間クロック信号ＣＬＫ＿Ｍ２の立ち下がりエッジに同期停止信号ＳＴＯＰ＿Ｓを同期させた信号であるマスク信号ＭＡＳＫを出力端子から出力する。
【００４６】
ＡＮＤゲート１４０は、２つの入力端子から入力した信号に対応する値の論理積を求め、求めた論理積に対応する信号を出力端子から出力する論理ゲートである。ＡＮＤゲート１４０は、２つの入力端子と、１つの出力端子とを備える。
【００４７】
一方のデータ入力端子は、Ｄフリップフロップ１３１の出力端子に接続され、他方の入力端子は、反転回路１２０の出力端子に接続され、出力端子は、ダイナミックリコンフィギュラブルハードウェア２００の図示しないクロック入力端子に接続される。
【００４８】
ＡＮＤゲート１４０は、一方のデータ入力端子からマスク信号ＭＡＳＫが供給され、他方の入力端子から第２の中間クロックＣＬＫ＿Ｍ２が供給される。また、ＡＮＤゲート１４０は、第２の中間クロックＣＬＫ＿Ｍ２をマスク信号ＭＡＳＫでマスクしたクロックである出力クロックＣＬＫ＿Ｏを出力端子から出力する。
【００４９】
なお、クロック供給回路１００は、システムクロック生成部３００から供給されたシステムクロックＣＬＫ＿ＳＹＳを、直接、ダイナミックリコンフィギュラブルハードウェア２００に出力する。
【００５０】
（クロック信号の停止動作）
次に、図３に示すタイムチャートを用いて、図２に示すクロック供給回路を用いたクロック信号の停止動作を説明する。なお、図３、図５、図６、図８及び図１１では、理解を容易にするためセットアップ時間、ホールド時間及びパス遅延はないものとしてタイムチャートを示す。
【００５１】
まず、図３のタイムチャートに示される各信号について簡単に説明する。なお、理解を容易にするため、クロック指定信号ＳＥＬはＨレベル（第１のクロック信号ＣＬＫ＿ＩＡを指定）、クロック反転信号ＩＮＶＥＲＴはＨレベル（反転なし）に固定する。このため、第１の中間クロック信号ＣＬＫ＿Ｍ１と、第２の中間クロック信号ＣＬＫ＿Ｍ２とは、第１のクロック信号ＣＬＫ＿ＩＡと同じ信号となるため図３に示さない。
【００５２】
第１のクロック信号ＣＬＫ＿ＩＡは、第２のクロック信号ＣＬＫ＿ＩＢと周波数の異なるクロック信号であり、マルチプレクサ１１０の一方の入力端子から継続的に供給される。
【００５３】
停止信号ＳＴＯＰと同期停止信号ＳＴＯＰ＿Ｓは、マスク信号ＭＡＳＫを生成するための信号である。マスク信号ＭＡＳＫは、クロック信号の切り替え中やアプリケーションとしてクロック信号が不要な時に出力クロックＣＬＫ＿Ｏの出力を停止するために出力クロックＣＬＫ＿Ｏにマスクをかけるための信号である。停止信号ＳＴＯＰ、同期停止信号ＳＴＯＰ＿Ｓ及びマスク信号ＭＡＳＫは、Ｈレベルでオフ（マスクなし）、Ｌレベルでオン（マスクあり）とする。
【００５４】
出力クロックＣＬＫ＿Ｏは、クロック供給回路１００からダイナミックリコンフィギュラブルハードウェア２００に供給するクロック信号である。
【００５５】
次に、各時刻におけるクロック供給回路１００の動作を説明する。
【００５６】
時刻がｔ１までは、停止信号ＳＴＯＰはＬレベルであり、このため同期停止信号ＳＴＯＰ＿Ｓ、マスク信号ＭＡＳＫは全てＬレベルである。また、マスク信号ＭＡＳＫはＬレベルであるため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿ＯとしてＬレベルの信号を出力する。
【００５７】
時刻がｔ１において、制御信号生成部７００が停止信号ＳＴＯＰをＨレベルにする。
【００５８】
時刻がｔ２になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち上がりエッジが発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＨレベルになる。
【００５９】
時刻がｔ３になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち下がりエッジが発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＨレベルになる。このため、マスク信号ＭＡＳＫによるマスクが解除され、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿Ｏとして第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）を出力する。
【００６０】
時刻がｔ４になると、制御信号生成部７００が停止信号ＳＴＯＰをＬレベルにする。
【００６１】
時刻がｔ５になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち上がりエッジが発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＬレベルになる。
【００６２】
時刻がｔ６になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち下がりエッジが発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＬレベルになる。このため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿ＯとしてＬレベルの信号を出力する。
【００６３】
以上のように、制御信号生成部７００が停止信号ＳＴＯＰのレベルを変化させることにより、クロック供給回路１００は、ハザードを発生させることなく出力クロックＣＬＫ＿Ｏの出力を停止することができる。なお、本回路構成によれば、停止信号ＳＴＯＰのレベルを第１のクロック信号ＣＬＫ＿ＩＡと非同期に変化させてもよい。
【００６４】
（分周クロックの生成動作）
次に、図２に示すクロック供給回路を用いた分周クロックの生成動作を説明する。まず、図４を用いて、分周クロック生成用信号生成部５００の構成について詳細に説明をする。
【００６５】
分周クロック生成用信号生成部５００は、供給されたクロック信号を用いて、分周クロック生成用信号を生成する。
【００６６】
図４に示すように、分周クロック生成用信号生成部５００は、カウンタ５１０と、信号生成回路５２０と、比較回路５３０と、レジスタ５４０と、を備える。
【００６７】
カウンタ５１０は、供給されたクロック信号の立ち上がりエッジをカウントし４ビットの値として出力する同期リセット端子付きのカウンタである。カウンタ５１０は、例えば、４つのＴフリップフロップから構成される。
【００６８】
カウンタ５１０は、第１のクロック信号生成部４００から第１のクロック信号ＣＬＫ＿ＩＡが供給され、比較回路５３０からリセット信号ＲＳＴが供給される。また、カウンタ５１０は、信号生成回路５２０と、比較回路５３０とに４ビットのディジタル信号を出力する。
【００６９】
信号生成回路５２０は、カウンタ５１０から供給されたディジタル信号から分周クロック生成用信号ＣＬＫ＿ＤＩＶを生成し、クロック供給回路１００に出力する。信号生成回路５２０は、論理ゲートなどから構成され、４ビットのディジタル信号のうち任意のディジタル信号のＡＮＤやＯＲをとるなどして、分周クロック生成用信号ＣＬＫ＿ＤＩＶを生成する。なお、本回路は、Ｎ：１分周のみを作るのであれば、０を検出する４入力のＯＲ回路で実現できる。
【００７０】
信号生成回路５２０は、カウンタ５１０から４ビットのディジタル信号が供給され、生成した分周クロック生成用信号ＣＬＫ＿ＤＩＶをクロック供給回路１００に出力する。
【００７１】
比較回路５３０は、カウンタ５１０から供給されたディジタル信号の値と、レジスタ５４０から供給されたディジタル信号の値とを比較し、一致する場合にカウンタ５１０にリセット信号を出力する。比較回路５３０は、論理ゲートなどから構成される。
【００７２】
比較回路５３０は、カウンタ５１０とレジスタ５４０とからそれぞれ４ビットのディジタル信号が供給され、カウンタ５１０にリセット信号ＲＳＴを出力する。
【００７３】
レジスタ５４０は、比較回路５３０に４ビットのディジタル信号を供給する。レジスタ５４０は、例えばフリップフロップなどから構成され、図示しないＣＰＵなどからバスを介してデータの書き込みが可能な４ビットの汎用レジスタである。
【００７４】
次に、分周クロック生成用信号生成部５００の動作について説明する。
【００７５】
カウンタ５１０には、第１のクロック信号生成部４００から第１のクロック信号ＣＬＫ＿ＩＡが供給される。カウンタ５１０は、供給されたクロック信号の立ち上がりエッジでカウントする。
【００７６】
ここで、あらかじめ、図示しないＣＰＵがレジスタ５４０に、４ビットのディジタルデータとして「００１１」を書き込んでおく。すると、カウンタ５１０から供給されたディジタル信号の値が「００１１」となった後に、比較回路５３０は、カウンタ５１０にリセット信号ＲＳＴを出力する。すると、カウンタ５１０内のフリップフロップの値がクリアされ、結果として４分周したクロック信号が生成される。
【００７７】
なお、リセットする値が、「００１１」の場合、４分周となるが、信号生成回路５２０において、０を検出するため４ビットの論理和をとることにより、図５に示すような１クロック分の分周クロック生成用信号ＣＬＫ＿ＤＩＶが得られる。なお、本回路構成を用いれば、レジスタの値を切り替えることで、任意の分周比のクロック信号へハザードなしで切り替えることができる。
【００７８】
次に、図５に示すタイムチャートを用いて、図２に示すクロック供給回路１００を用いた分周クロックの生成動作を説明する。ただし、分周クロックの生成動作では、理解を容易にするため、停止信号ＳＴＯＰの代わりに分周クロック生成用信号ＣＬＫ＿ＤＩＶをクロック供給回路１００に供給する構成としている。制御信号生成部７００内部やクロック供給回路１００内部にて、停止信号ＳＴＯＰと分周クロック生成用信号ＣＬＫ＿ＤＩＶのＡＮＤをとり、得られた信号を停止信号ＳＴＯＰとしてクロック供給回路１００内部で使用する構成としてもよい。なお、クロック信号の停止動作と同様に、クロック指定信号ＳＥＬはＨレベル（第１のクロック信号ＣＬＫ＿ＩＡを指定）、クロック反転信号ＩＮＶＥＲＴはＨレベル（反転なし）に固定する。
【００７９】
時刻がｔ１までは、分周クロック生成用信号ＣＬＫ＿ＤＩＶはＬレベルであり、このため同期停止信号ＳＴＯＰ＿Ｓ、マスク信号ＭＡＳＫは全てＬレベルである。また、マスク信号ＭＡＳＫはＬレベルであるため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿ＯとしてＬレベルの信号を出力する。
【００８０】
時刻がｔ１において、分周クロック生成用信号生成部５００から供給される分周クロック生成用信号ＣＬＫ＿ＤＩＶがＨレベルになる。
【００８１】
時刻がｔ２になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち上がりエッジが発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＨレベルになる。
【００８２】
時刻がｔ３になると、分周クロック生成用信号生成部５００から供給される分周クロック生成用信号ＣＬＫ＿ＤＩＶがＬレベルになる。
【００８３】
時刻がｔ４になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち下がりエッジが発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＨレベルになる。このため、マスク信号ＭＡＳＫによるマスクが解除され、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿Ｏとして第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）を出力する。
【００８４】
時刻がｔ５になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち上がりエッジが発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＬレベルになる。
【００８５】
時刻がｔ６になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち下がりエッジが発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＬレベルとなる。このため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿ＯとしてＬレベルの信号を出力する。
【００８６】
以上のように、分周クロック生成用信号生成部５００から供給された分周クロック生成用信号ＣＬＫ＿ＤＩＶに基づくマスク信号ＭＡＳＫで第１のクロック信号ＣＬＫ＿ＩＡをマスクした分周クロック（出力クロックＣＬＫ＿Ｏ）をダイナミックリコンフィギュラブルハードウェア２００に供給することができる。なお、分周クロック生成用信号生成部５００において、分周比を変更した場合であっても、ハザードなく切り替えたクロック信号の供給が可能である。また、出力クロックＣＬＫ＿Ｏが供給される後段の回路は、出力クロックＣＬＫ＿Ｏのクロックパルス幅が最も短いとき、言い換えると第２の中間クロックＣＬＫ＿Ｍ２の周波数が最も高く分周もされていないときのパルス幅（最小パルス幅）で正常に動作するように予め設計を行う。そうする事で、分周比の変更によりＤＵＴＹ比が変更されても、パルス幅は最小パルス幅よりも小さくはならないため、後段の回路は問題なく動作する。
【００８７】
（異種クロック信号への切り替え動作）
次に、図６に示すタイムチャートを用いて、図２に示すクロック供給回路を用いた異種クロック信号への切り替え動作を説明する。なお、理解を容易にするため、クロック反転信号ＩＮＶＥＲＴはＨレベル（反転なし）に固定する。従って、第１の中間クロックＣＬＫ＿Ｍ１は、第２の中間クロックＣＬＫ＿Ｍ２と同じ信号となるため図６に示さない。
【００８８】
まず、図６のタイムチャートに示される各信号について簡単に説明する。なお、説明済の信号については、ここでは説明を省略する。
【００８９】
第２のクロック信号ＣＬＫ＿ＩＢは、第１のクロック信号ＣＬＫ＿ＩＡと非同期なクロック信号であり、マルチプレクサ１１０の他方の入力端子から継続的に供給される。クロック指定信号ＳＥＬは、第１のクロック信号ＣＬＫ＿ＩＡと第２のクロック信号ＣＬＫ＿ＩＢのうちいずれか一方の信号を指定する信号である。
【００９０】
次に、各時刻におけるクロック供給回路１００の動作を説明する。
【００９１】
時刻がｔ１までは、停止信号ＳＴＯＰはＨレベルであり、このため同期停止信号ＳＴＯＰ＿Ｓ、マスク信号ＭＡＳＫは全てＨレベルである。また、クロック指定信号ＳＥＬはＨレベルのため、第２の中間クロックＣＬＫ＿Ｍ２として第１のクロック信号ＣＬＫ＿ＩＡがそのまま出力される。また、マスク信号ＭＡＳＫはＨレベルのため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿Ｏとして第１のクロック信号ＣＬＫ＿ＩＡを出力する。
【００９２】
時刻がｔ１において、制御信号生成部７００が停止信号ＳＴＯＰをＬレベルにする。
【００９３】
時刻がｔ２になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち上がりエッジが発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＬレベルになる。
【００９４】
時刻がｔ３になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち下がりエッジが発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＬレベルになる。このため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿Ｏを出力しない状態になる。
【００９５】
時刻がｔ４になると、制御信号生成部７００がクロック指定信号ＳＥＬをＬレベルにする。このため、第２の中間クロックＣＬＫ＿Ｍ２は、第２のクロック信号ＣＬＫ＿ＩＢに切り替わる。
【００９６】
時刻がｔ５になると、制御信号生成部７００が停止信号ＳＴＯＰをＨレベルにする。
【００９７】
時刻がｔ６になった時点で、第２の中間クロックＣＬＫ＿Ｍ２（第２のクロック信号ＣＬＫ＿ＩＢ）の立ち上がりエッジが発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＨレベルになる。
【００９８】
時刻がｔ７になった時点で、第２の中間クロックＣＬＫ＿Ｍ２（第２のクロック信号ＣＬＫ＿ＩＢ）の立ち下がりエッジが発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＨレベルになる。このため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿Ｏとして第２のクロック信号ＣＬＫ＿ＩＢを出力する。
【００９９】
以上のように、制御信号生成部７００が停止信号ＳＴＯＰとクロック指定信号ＳＥＬのレベルを、第１のクロック信号ＣＬＫ＿ＩＡと第２のクロック信号ＣＬＫ＿ＩＢに対して非同期に変化させても、以下に説明する切り替え時間を守ることにより、ダイナミックリコンフィギュラブルハードウェア２００に供給するクロック信号をシームレスに切り替えることができる。
【０１００】
次に、異種クロック信号への切り替え時間について説明する。
【０１０１】
図７は、図２に示すクロック供給回路を用いて異種クロック信号へ切り替える場合の切り替え時間を説明するためのタイムチャートである。
【０１０２】
前述のように、マスク信号ＭＡＳＫがＬレベルの期間にクロック指定信号ＳＥＬのレベルを切り替えることにより出力クロックＣＬＫ＿Ｏにハザードを発生させることなくクロック信号を切り替えることができる。ここでは、停止信号ＳＴＯＰをＬレベルにし、再び停止信号ＳＴＯＰをＨレベルにするまでの時間を切り替え時間Ｔとする。
【０１０３】
まず、ハザードを発生させない条件のもと、最低限必要な切り替え時間Ｔが最大となるのは、第２の中間クロックＣＬＫ＿Ｍ２（第１のクロック信号ＣＬＫ＿ＩＡ）の立ち上がりエッジ（時刻＝ｔ２）よりもセットアップ時間ＴｓｅｔｕｐＡだけ前の時刻（時刻＝ｔ１）に停止信号ＳＴＯＰをＬレベルにし、この立ち上がりエッジの１．５周期後の立ち下がりエッジ（時刻＝ｔ４）よりもホールド時間ＴｈｏｌｄＢ後の時刻（時刻＝ｔ５）にクロック指定信号ＳＥＬをＬレベルにする場合である。理由を以下に説明する。
【０１０４】
停止信号ＳＴＯＰをＬレベルにしてから、第２の中間クロックＣＬＫ＿Ｍ２の立ち上がりエッジと立ち下がりエッジが順番に発生すれば、マスク信号ＭＡＳＫはＬレベルとなる。この２つのエッジを発生させるためには、第２の中間クロックＣＬＫ＿Ｍ２の１．５周期分の時間が必要である。ただし、厳密には、セットアップ時間ＴｓｅｔｕｐＡやホールド時間ＴｈｏｌｄＢを考慮する必要がある。
【０１０５】
ここで、セットアップ時間ＴｓｅｔｕｐＡは、フリップフロップのセットアップマージンを満たす目的でクロックに対してデータを早く入れないといけない時間である。セットアップ時間ＴｓｅｔｕｐＡは、式（１）のように表すことができる。
（数１）
ＴｓｅｔｕｐＡ＝ＳｔｏｐＤｅｌａｙ１＋ＳｅｔｕｐＭａｒｇｉｎ−ＣＬＫ＿ＩＡＤｅｌａｙ１  （１）
【０１０６】
なお、ＳｔｏｐＤｅｌａｙ１は、停止信号ＳＴＯＰがシステムクロックＣＬＫ＿ＳＹＳ上における適当なポイントからＤフリップフロップ１３０に伝搬するまでの伝搬時間（遅延時間）である。また、ＳｅｔｕｐＭａｒｇｉｎは、Ｄフリップフロップ１３０のセットアップマージンである。そして、ＣＬＫ＿ＩＡＤｅｌａｙ１は、第１のクロック信号ＣＬＫ＿ＩＡが適当なポイントからＤフリップフロップ１３０に伝搬するまでの伝搬時間（遅延時間）である。
【０１０７】
ここで、例えば、セットアップ時間ＴｓｅｔｕｐＡが確保できる時刻（時刻＝ｔ１以前）に停止信号ＳＴＯＰをＬレベルにすると、直後の立ち上がりエッジ（時刻ｔ＝２）で確実に同期停止信号ＳＴＯＰ＿ＳをＬレベルとすることができる。その為、セットアップ時間ＴｓｅｔｕｐＡがぎりぎり確保できない時刻から１クロック後に同期停止信号ＳＴＯＰ＿ＳをＬレベルとする場合に、最低限必要な切り替え時間Ｔが最大となる。
【０１０８】
また、ホールド時間ＴｈｏｌｄＢは、フリップフロップのライブラリ毎に規定されるパルス幅制限を満たし、ＡＮＤゲート１４０で確実にＭＡＳＫ処理が保証される目的でクロックに対してデータを遅く入れないといけない時間である。ホールド時間ＴｈｏｌｄＢは、式（２）のように表すことができる。
（数２）
ＴｈｏｌｄＢ＝ＣＬＫ＿ＩＡＤｅｌａｙ２＋ＣＬＫＰｕｌｓｅＬｉｍｉｔ１−ＳｅｌＤｅｌａｙ１  （２）
【０１０９】
なお、ＣＬＫ＿ＩＡＤｅｌａｙ２は、第１のクロック信号ＣＬＫ＿ＩＡが適当なポイントからマルチプレクサ１１０に伝搬するまでの伝搬時間（遅延時間）である。また、ＣＬＫＰｕｌｓｅＬｉｍｉｔ１は、Ｄフリップフロップ１３０、１３１のパルス幅制限である。そして、ＳｅｌＤｅｌａｙ１は、クロック指定信号ＳＥＬがシステムクロックＣＬＫ＿ＳＹＳ上における適当なポイントからマルチプレクサ１１０に伝搬するまでの伝搬時間（遅延時間）である。
【０１１０】
ここで、ＣＬＫＰｕｌｓｅＬｉｍｉｔ１が満たされない場合、Ｄフリップフロップ１３１の出力がＬレベルに切り替わって安定する前に第２の中間クロックＣＬＫ＿Ｍ２が切り替わり、Ｄフリップフロップ１３１のクロック入力端子に不正規なクロック信号が供給される。このため、マスク信号ＭＡＳＫが想定しているタイミングでＬレベルになることが保証されず、後段のＡＮＤゲート１４０による正常なマスク動作が保証されない。
【０１１１】
なお、ホールド時間ＴｈｏｌｄＢが確保できない時刻（時刻＝ｔ５以前）に、クロック指定信号ＳＥＬをＬレベルにすると、マスク信号ＭＡＳＫがＬレベルとなる前に第２の中間クロックＣＬＫ＿Ｍ２が切り替わることになり、出力クロックＣＬＫ＿Ｏへハザードが伝搬する可能性がある。その為、ホールド時間ＴｈｏｌｄＢがぎりぎり確保できる時刻にクロック指定信号ＳＥＬをＬレベルにする場合が、ハザードを発生させない限界となる。
【０１１２】
また、クロック指定信号ＳＥＬをＬレベルにしてから停止信号ＳＴＯＰをＨレベルに戻すまでの時間を考える場合、セットアップ時間ＴｓｅｔｕｐＣとホールド時間ＴｈｏｌｄＤを考慮する必要がある。
【０１１３】
ここで、セットアップ時間ＴｓｅｔｕｐＣは、フリップフロップのライブラリ毎に規定されるパルス幅制限を満たし、ＡＮＤゲート１４０で確実にＭＡＳＫ処理が保証される目的でクロックに対してデータを早く入れないといけない時間である。セットアップ時間ＴｓｅｔｕｐＣは、式（３）のように表すことができる。
（数３）
ＴｓｅｔｕｐＣ＝ＳｅｌＤｅｌａｙ２＋ＣＬＫＰｕｌｓｅＬｉｍｉｔ２−ＣＬＫ＿ＩＢＤｅｌａｙ１  （３）
【０１１４】
なお、ＳｅｌＤｅｌａｙ２は、クロック指定信号ＳＥＬがシステムクロックＣＬＫ＿ＳＹＳ上における適当なポイントからマルチプレクサ１１０に伝搬するまでの伝搬時間（遅延時間）である。また、ＣＬＫＰｕｌｓｅＬｉｍｉｔ２は、Ｄフリップフロップ１３０、１３１のパルス幅制限である。さらに、ＣＬＫ＿ＩＢＤｅｌａｙ１は、第２のクロック信号ＣＬＫ＿ＩＢが適当なポイントからマルチプレクサ１１０に伝搬するまでの伝搬時間（遅延時間）である。
【０１１５】
ここでは、Ｄフリップフロップ１３１の入力データが変化しない事を前提にしており、一般的なフリップフロップライブラリでは出力が安定しているため、ＣＬＫＰｕｌｓｅＬｉｍｉｔ２は、マルチプレクサの切り替えで発生したエッジをクロックエッジが抜かさない事だけを保証するように、通常は０以上であればよい。ただし、用いるフリップフロップやＡＮＤゲート等のライブラリにより、規定する必要がある場合はＣＬＫＰｕｌｓｅＬｉｍｉｔ２を設定する。
【０１１６】
なお、セットアップ時間ＴｓｅｔｕｐＣが確保できない時刻（時刻＝ｔ５以降）に、クロック指定信号ＳＥＬをＬレベルにすると、第２の中間クロックＣＬＫ＿Ｍ２が切り替わる前にマスク信号ＭＡＳＫがＨレベルになることになり、出力クロックＣＬＫ＿Ｏへハザードが伝搬する可能性がある。その為、セットアップ時間ＴｓｅｔｕｐＣがぎりぎり確保できる時刻にクロック指定信号ＳＥＬをＬレベルにする場合が、ハザードを発生させない限界となる。
【０１１７】
また、ホールド時間ＴｈｏｌｄＤは、フリップフロップのホールドマージンを満たす目的でクロックに対してデータを遅く入れないといけない時間である。ホールド時間ＴｈｏｌｄＤは、式（４）のように表すことができる。
（数４）
ＴｈｏｌｄＤ＝ＣＬＫ＿ＩＢＤｅｌａｙ２＋ＨｏｌｄＭａｒｇｉｎ−ＳｔｏｐＤｅｌａｙ２  （４）
【０１１８】
なお、ＣＬＫ＿ＩＢＤｅｌａｙ２は、第２のクロック信号ＣＬＫ＿ＩＢが適当なポイントからＤフリップフロップ１３０に伝搬するまでの伝搬時間（遅延時間）である。また、ＨｏｌｄＭａｒｇｉｎは、Ｄフリップフロップ１３０のホールドマージンである。さらに、ＳｔｏｐＤｅｌａｙ２は、停止信号ＳＴＯＰがシステムクロックＣＬＫ＿ＳＹＳ上における適当なポイントからＤフリップフロップ１３０に伝搬するまでの伝搬時間（遅延時間）である。
【０１１９】
なお、ホールド時間ＴｈｏｌｄＤが確保できない時刻（時刻＝ｔ７以前）に、停止信号ＳＴＯＰをＨレベルにすると、直前の立ち下がりエッジ（時刻＝ｔ６：ここではクロック指定信号ＳＥＬによるハザードで立ち上がりも同時に発生したと仮定し、同期停止信号ＳＴＯＰ＿Ｓとマスク信号ＭＡＳＫが同時に変化すると想定する。）でクロック切り替え直後の不安定なクロック期間にマスク信号ＭＡＳＫが変化し、マスク解除動作が正常なタイミングで行われず、出力クロックＣＬＫ＿Ｏへハザードが伝搬する可能性がある。その為、ホールド時間ＴｈｏｌｄＤがぎりぎり確保できる時刻に停止信号ＳＴＯＰをＨレベルにする場合が、マスクを解除できる限界となる。
【０１２０】
従って、ハザードを発生させない条件のもとでの切り替え時間Ｔの最小値を最小時間Ｔｍｉｎとすると、第１のクロック信号ＣＬＫ＿ＩＡの周期をＴａとして式（５）のようになる。
（数５）
Ｔｍｉｎ＝Ｔａ×１．５＋ＴｓｅｔｕｐＡ＋ＴｈｏｌｄＢ＋ＴｓｅｔｕｐＣ＋ＴｈｏｌｄＤ  （５）
【０１２１】
切り替え時間Ｔは、切り替え時間Ｔ１と切り替え時間Ｔ２とを用いて式（６）のように表現できる。以下に、ハザードを発生させない条件のもと、切り替え時間Ｔを最小に設定することができる、切り替え時間Ｔ１と切り替え時間Ｔ２の最小値の求め方について説明する。
（数６）
Ｔ＝Ｔ１＋Ｔ２  （６）
【０１２２】
まず、切り替え時間Ｔ１について説明する。切り替え時間Ｔ１は、停止信号ＳＴＯＰをＬレベルにしてからクロック指定信号ＳＥＬを切り替えるまでの時間である。ハザードを発生させない条件のもとでの切り替え時間Ｔ１の最小値を最小切り替え時間Ｔ１ｍｉｎとすると、式（７）のようになる。
（数７）
Ｔ１ｍｉｎ＝Ｔａ×１．５＋ＴｓｅｔｕｐＡ＋ＴｈｏｌｄＢ  （７）
【０１２３】
なお、切り替え時間Ｔ１が最小切り替え時間Ｔ１ｍｉｎよりも小さい場合、例えば、時刻＝ｔ４から時刻＝ｔ５の間に、クロック指定信号ＳＥＬを切り替える場合、ｔ４からのホールド時間ＴｈｏｌｄＢが確保されず、出力クロックＣＬＫ＿Ｏへハザードが伝搬する可能性がある。
【０１２４】
次に、切り替え時間Ｔ２について説明する。切り替え時間Ｔ２は、クロック指定信号ＳＥＬを切り替えてから停止信号ＳＴＯＰをＨレベルにするまでの時間である。ハザードを発生させない条件のもとでの切り替え時間Ｔ２の最小値を最小切り替え時間Ｔ２ｍｉｎとすると、式（８）のようになる。
（数８）
Ｔ２ｍｉｎ＝ＴｓｅｔｕｐＣ＋ＴｈｏｌｄＤ  （８）
【０１２５】
なお、切り替え時間Ｔ２が最小切り替え時間Ｔ２ｍｉｎよりも小さい場合、例えば、時刻＝ｔ６から時刻＝ｔ７の間に、クロック指定信号ＳＥＬを切り替える場合、ｔ６までのホールド時間ＴｈｏｌｄＤが確保されず、出力クロックＣＬＫ＿Ｏへハザードが伝搬する可能性がある。
【０１２６】
ここで、式（７）の右辺の「ＴｓｅｔｕｐＡ＋ＴｈｏｌｄＢ」には、第１のクロック信号ＣＬＫ＿ＩＡの遅延時間として、−項のＣＬＫ＿ＩＡＤｅｌａｙ１と＋項のＣＬＫ＿ＩＡＤｅｌａｙ２とが含まれ、互いに打ち消しあう。このため、第１のクロック信号ＣＬＫ＿ＩＡの遅延時間の起点はどこにおいてもよい。
【０１２７】
同様に、式（８）の右辺の「ＴｓｅｔｕｐＣ＋ＴｈｏｌｄＤ」には、第２のクロック信号ＣＬＫ＿ＩＢの遅延時間として、−項のＣＬＫ＿ＩＢＤｅｌａｙ１と＋項のＣＬＫ＿ＩＢＤｅｌａｙ２とが含まれ、互いに打ち消しあう。このため、第２のクロック信号ＣＬＫ＿ＩＢの遅延時間の起点はどこにおいてもよい。
【０１２８】
また、式（７）の右辺の「ＴｓｅｔｕｐＡ＋ＴｈｏｌｄＢ」には、データの遅延時間として、＋項のＳｔｏｐＤｅｌａｙ１と−項のＳｅｌＤｅｌａｙ１とが含まれる。また、式（８）の右辺の「ＴｓｅｔｕｐＣ＋ＴｈｏｌｄＤ」には、データの遅延時間として、＋項のＳｅｌＤｅｌａｙ２と−項のＳｔｏｐＤｅｌａｙ２とが含まれる。ここで、停止信号ＳＴＯＰとクロック指定信号ＳＥＬをそれぞれ生成するフリップフロップのクロックは共にシステムクロックＣＬＫ＿ＳＹＳである。このため、それぞれのフリップフロップに入力されているクロックが合流するところ以前を遅延時間の起点とすればどこを起点としてもよい。
【０１２９】
また、セットアップ時間ＴｓｅｔｕｐＡとホールド時間ＴｈｏｌｄＤは単純にシステムクロックＣＬＫ＿ＳＹＳと第２の中間クロックＣＬＫ＿Ｍ２とのスペック（セットアップ時間＋ホールド時間により相殺されるため、特に限定する必要がない任意のクロック信号の起点を定めた時の、Ｄフリップフロップ１３０におけるセットアップ時間とホールド時間）で定義できる。ホールド時間ＴｈｏｌｄＢとセットアップ時間ＴｓｅｔｕｐＣは同様の値、マスク生成部ＡＮＤゲート１４０及びＤフリップフロップ１３０、１３１のクロック入力部における直前、直後の動作が保証されるパルス幅から求めることが可能な第２の中間クロックＣＬＫ＿Ｍ２のエッジに対する最低限の時間間隔と定義する。
【０１３０】
制御信号生成部７００は、式（７）、（８）に示すような切り替え時間を設けて各制御信号を供給することにより、ハザードを発生させずに最小時間でのクロック信号の切り替えが可能となる。
【０１３１】
具体的には、制御信号生成部７００には、システムクロック生成部３００から、システムクロックＣＬＫ＿ＳＹＳが供給されるため、これをカウンタでカウントするなどして所定のクロック分だけ信号を遅延させる。
【０１３２】
すなわち、システムクロックＣＬＫ＿ＳＹＳの周期をＴｓｙｓとして、式（９）を満たすような最小の整数ｎと、式（１０）を満たすような最小の整数ｍを求める。そして、停止信号ＳＴＯＰをＬレベルにしてからシステムクロックＣＬＫ＿ＳＹＳをｎ回カウントしてクロック指定信号ＳＥＬを変化させ、ｍ回カウントして停止信号ＳＴＯＰを戻すように信号を生成する。
（数９）
Ｔａ×１．５＋ＴｓｅｔｕｐＡ＋ＴｈｏｌｄＢ≦Ｔｓｙｓ×ｎ  （９）
（数１０）
ＴｓｅｔｕｐＣ＋ＴｈｏｌｄＤ≦Ｔｓｙｓ×ｍ  （１０）
【０１３３】
なお、セットアップ時間ＴｓｅｔｕｐＡ、ＴｓｅｔｕｐＣやホールド時間ＴｈｏｌｄＢ、ＴｈｏｌｄＤについては、厳密にはパス遅延も考慮する必要があるが、システムクロックＣＬＫ＿ＳＹＳと第１のクロック信号ＣＬＫ＿ＩＡとが共に適当なポイントで同期しているとみなして検証すれば、ＳＴＡ（Ｓｔａｔｉｃ  Ｔｉｍｉｎｇ  Ａｎａｌｙｓｉｓ）ツールなどを用いて簡単に求めることができる。これは、セットアップ時間とホールド時間を加算する計算式になっているのでクロック遅延が相殺されるためである。
【０１３４】
なお、上述の例では、ダイナミックリコンフィギュラブルハードウェア２００のハードウェア構成を切り替える時間を考慮していないが、同期化したマスク信号ＭＡＳＫを用いれば、この動作に同期して切り替えることに困難はない。
【０１３５】
（クロック信号の反転動作）
次に、図８に示すタイムチャートを用いて、図２に示すクロック供給回路におけるクロック信号の反転動作を説明する。なお、理解を容易にするため、クロック指定信号ＳＥＬはＨレベル（第１のクロック信号ＣＬＫ＿ＩＡを指定）に固定した。従って、第１の中間クロックＣＬＫ＿Ｍ１は、第１のクロック信号ＣＬＫ＿ＩＡと同じ信号となるため図８に示さない。
【０１３６】
まず、図８のタイムチャートに示される各信号について簡単に説明する。なお、説明済の信号については、ここでは説明を省略する。
【０１３７】
第２の中間クロックＣＬＫ＿Ｍ２は、出力クロックＣＬＫ＿Ｏを生成するためのクロック信号であり、第１の中間クロックＣＬＫ＿Ｍ１そのもの、又は、信号レベルを反転させた信号である。また、クロック反転信号ＩＮＶＥＲＴは、第１の中間クロックＣＬＫ＿Ｍ１の信号レベルを反転させるか否かを指定する信号であり、制御信号生成部７００から供給される。
【０１３８】
次に、各時刻におけるクロック供給回路１００の動作を説明する。
【０１３９】
時刻がｔ１までは、停止信号ＳＴＯＰはＨレベルであり、このため同期停止信号ＳＴＯＰ＿Ｓ、マスク信号ＭＡＳＫは全てＨレベルである。また、クロック反転信号ＩＮＶＥＲＴはＨレベルのため、第２の中間クロックＣＬＫ＿Ｍ２として第１の中間クロックＣＬＫ＿Ｍ１（第１のクロック信号ＣＬＫ＿ＩＡ）がそのまま出力される。また、マスク信号ＭＡＳＫはＨレベルのため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿Ｏとして第１のクロック信号ＣＬＫ＿ＩＡを出力する。
【０１４０】
時刻がｔ１において、制御信号生成部７００は停止信号ＳＴＯＰをＬレベルにする。
【０１４１】
時刻がｔ２になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち上がりエッジが発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＬレベルとなる。
【０１４２】
時刻がｔ３になった時点で、第１のクロック信号ＣＬＫ＿ＩＡ（第２の中間クロックＣＬＫ＿Ｍ２）の立ち下がりエッジが発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＬレベルとなる。このため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿ＯとしてＬレベルの信号を出力する。
【０１４３】
時刻がｔ４になると、制御信号生成部７００はクロック反転信号ＩＮＶＥＲＴをＬレベルにする。このため、第２の中間クロックＣＬＫ＿Ｍ２は、第１の中間クロックＣＬＫ＿Ｍ１（第１のクロック信号ＣＬＫ＿ＩＡ）を反転したクロック信号に切り替わる。
【０１４４】
時刻がｔ５になると、制御信号生成部７００は停止信号ＳＴＯＰをＨレベルにする。
【０１４５】
時刻がｔ６になった時点で、第２の中間クロックＣＬＫ＿Ｍ２の立ち上がりエッジ（第１のクロック信号ＣＬＫ＿ＩＡの立ち下がりエッジ）が発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＨレベルになる。
【０１４６】
時刻がｔ７になった時点で、中間クロックＣＬＫ＿Ｍの立ち下がりエッジ（第１のクロック信号ＣＬＫ＿ＩＡの立ち上がりエッジ）が発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＨレベルとなる。このため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿Ｏとして第１のクロック信号ＣＬＫ＿ＩＡを反転したクロックを出力する。
【０１４７】
以上のように、制御信号生成部７００がクロック反転信号ＩＮＶＥＲＴのレベルを第１のクロック信号ＣＬＫ＿ＩＡと非同期に変化させても、ダイナミックリコンフィギュラブルハードウェア２００に供給するクロック信号をシームレスに反転させることができる。
【０１４８】
なお、クロック信号の反転時間については、前述の異種クロック信号への切り替え時間と同様に考えることができる。すなわち、クロック反転信号ＩＮＶＥＲＴのレベルを変化させるタイミングを、クロック指定信号ＳＥＬのレベルを変化させるタイミングと考えればよい。従って、ここでは説明を省略する。
【０１４９】
（変形例）
上記の実施の形態では、制御信号生成部７００は、制御信号として、停止信号ＳＴＯＰと、クロック指定信号ＳＥＬと、クロック反転信号ＩＮＶＥＲＴとを全て生成し、クロック供給回路１００に供給していた。
【０１５０】
しかし、例えば、停止信号ＳＴＯＰとクロック指定信号ＳＥＬは、クロック信号の切り替えのタイミングと、クロック信号の種類とを指定するクロック切り替え指示信号ＳＷ＿ＣＬＫに基づいて、クロック供給回路１０１で生成することも可能である。以下、変形例に係るクロック供給回路の構成と動作について説明する。
【０１５１】
図９は、変形例に係るクロック供給回路１０１が適用されるシステムの構成図である。
【０１５２】
図１に示したシステムとは、制御信号生成部から出力されている制御信号のみが相違する。
【０１５３】
制御信号生成部７０１は、クロック切り替え指示信号ＳＷ＿ＣＬＫと、クロック反転信号ＩＮＶＥＲＴとをクロック供給回路１０１に供給する。
【０１５４】
次に、図１０を用いて、変形例に係るクロック供給回路１０１の構成を詳細に説明する。
【０１５５】
図１０に示すように、クロック供給回路１０１は、マルチプレクサ１１０と、反転回路１２０と、Ｄフリップフロップ１３０、１３１と、ＡＮＤゲート１４０と、第１の遅延回路１５０と、第２の遅延回路１５１と、ＸＮＯＲゲート１６０と、を備える。
【０１５６】
マルチプレクサ１１０の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。一方の入力端子は、第１のクロック信号生成部４００に接続され、他方の入力端子は、第２のクロック信号生成部６００に接続される。また、制御端子は、第１の遅延回路１５１の出力端子に接続され、出力端子は、反転回路１２０の入力端子に接続される。
【０１５７】
マルチプレクサ１１０は、一方の入力端子から第１のクロック信号ＣＬＫ＿ＩＡが供給され、他方の入力端子から第２のクロック信号ＣＬＫ＿ＩＢが供給され、制御端子から第２の遅延信号ＤＥＬＡＹ２が供給される。
【０１５８】
なお、マルチプレクサ１１０は、制御端子に入力された第２の遅延信号ＤＥＬＡＹ２がＨレベルのとき第１のクロック信号ＣＬＫ＿ＩＡを、Ｌレベルのとき第２のクロック信号ＣＬＫ＿ＩＢを、第１の中間クロックＣＬＫ＿Ｍ１として出力端子から出力する。
【０１５９】
反転回路１２０の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。入力端子は、マルチプレクサ１１０の出力端子に接続され、反転制御端子は、制御信号生成部７００に接続される。出力端子は、Ｄフリップフロップ１３０のクロック入力端子と、Ｄフリップフロップ１３１のクロック入力端子と、ＡＮＤゲート１４０の一方の入力端子とに接続される。
【０１６０】
反転回路１２０は、入力端子から第１の中間クロック信号ＣＬＫ＿Ｍ１が供給され、反転制御端子からクロック反転信号ＩＮＶＥＲＴが供給される。また、反転回路１２０は、第２の中間クロック信号ＣＬＫ＿Ｍ２を出力端子から出力する。
【０１６１】
なお、反転回路１２０は、クロック反転信号ＩＮＶＥＲＴがＨレベルのとき第１の中間クロック信号ＣＬＫ＿Ｍ１をそのまま出力端子から出力し、Ｌレベルのとき第１の中間クロック信号ＣＬＫ＿Ｍ１を反転して出力端子から出力する。
【０１６２】
Ｄフリップフロップ１３０の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。データ入力端子は、ＸＮＯＲゲート１６０の出力端子に接続され、クロック入力端子は、反転回路１２０の出力端子に接続され、出力端子は、Ｄフリップフロップ１３１のデータ入力端子に接続される。
【０１６３】
Ｄフリップフロップ１３０は、データ入力端子から停止信号ＳＴＯＰが供給され、クロック入力端子から第２の中間クロックＣＬＫ＿Ｍ２が供給される。また、Ｄフリップフロップ１３０は、同期停止信号ＳＴＯＰ＿Ｓを出力端子から出力する。
【０１６４】
Ｄフリップフロップ１３１の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。データ入力端子は、Ｄフリップフロップ１３０の出力端子に接続され、クロック入力端子は、反転回路１２０の出力端子に接続され、出力端子は、ＡＮＤゲート１４０の一方の入力端子に接続される。
【０１６５】
Ｄフリップフロップ１３１は、データ入力端子から同期停止信号ＳＴＯＰ＿Ｓが供給され、クロック入力端子から第２の中間クロックＣＬＫ＿Ｍ２が供給される。また、Ｄフリップフロップ１３１は、マスク信号ＭＡＳＫを出力端子から出力する。
【０１６６】
ＡＮＤゲート１４０の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。一方のデータ入力端子は、Ｄフリップフロップ１３１の出力端子に接続され、他方の入力端子は、反転回路１２０の出力端子に接続され、出力端子は、ダイナミックリコンフィギュラブルハードウェア２００の図示しないクロック入力端子に接続される。
【０１６７】
ＡＮＤゲート１４０は、一方のデータ入力端子からマスク信号ＭＡＳＫが供給され、他方の入力端子から第２の中間クロックＣＬＫ＿Ｍ２が供給される。また、ＡＮＤゲート１４０は、第２の中間クロックＣＬＫ＿Ｍ２をマスク信号ＭＡＳＫでマスクしたクロック信号である出力クロックＣＬＫ＿Ｏを出力端子から出力する。
【０１６８】
第１の遅延回路１５０は、カウンタ、Ｄフリップフロップ、Ｄラッチ、メモリなどを構成する論理ゲートなどから構成される遅延回路である。第１の遅延回路１５０は、１つの入力端子と、１つのクロック入力端子と、１つの出力端子とを備える。第１の遅延回路１５０は、入力端子に供給された信号を第１の遅延時間Ｄ１だけ遅延させ、出力端子から出力する。
【０１６９】
入力端子は、制御信号生成部７０１に接続され、クロック入力端子は、システムクロック生成部３００に接続され、出力端子は、ＸＮＯＲゲート１６０の一方の入力端子に接続される。
【０１７０】
第１の遅延回路１５０は、入力端子からクロック切り替え指示信号ＳＷ＿ＣＬＫが供給され、クロック入力端子からシステムクロックＣＬＫ＿ＳＹＳが供給される。第１の遅延回路１５０は、クロック切り替え指示信号ＳＷ＿ＣＬＫを第１の遅延時間Ｄ１だけ遅延させた第１の遅延信号ＤＥＬＡＹ１を出力端子から出力する。
【０１７１】
第２の遅延回路１５１は、入力端子から供給された信号を第２の遅延時間Ｄ２だけ遅延させ、出力端子から出力する遅延回路である。第２の遅延回路１５１は、第１の遅延回路１５０と同様の構成であるが、遅延時間が異なる。
【０１７２】
入力端子は、制御信号生成部７０１に接続され、クロック入力端子は、システムクロック生成部３００に接続され、出力端子は、マルチプレクサ１１０の制御端子に接続される。
【０１７３】
第２の遅延回路１５１は、入力端子からクロック切り替え指示信号ＳＷ＿ＣＬＫが供給され、クロック入力端子からシステムクロックＣＬＫ＿ＳＹＳが供給される。また、第２の遅延回路１５１は、クロック切り替え指示信号ＳＷ＿ＣＬＫを第２の遅延時間Ｄ２だけ遅延させた第２の遅延信号ＤＥＬＡＹ２を出力端子から出力する。
【０１７４】
ＸＮＯＲゲート１６０は、２つの入力端子から供給された信号に対応する値の排他的論理和を求め、求めた排他的論理和を反転した値に対応する信号を出力端子から出力する論理ゲートである。ＸＮＯＲゲート１６０は、２つの入力端子と、１つの出力端子とを備える。
【０１７５】
一方の入力端子は、制御信号生成部７０１に接続され、他方の入力端子は、第１の遅延回路１５０の出力端子に接続され、出力端子は、Ｄフリップフロップ１３０のデータ入力端子に接続される。
【０１７６】
ＸＮＯＲゲート１６０は、一方の入力端子からクロック切り替え指示信号ＳＷ＿ＣＬＫが供給され、他方の入力端子から第１の遅延信号ＤＥＬＡＹ１が供給される。また、ＸＮＯＲゲート１６０は、停止信号ＳＴＯＰを出力端子から出力する。
【０１７７】
次に、図１１に示すタイムチャートを用いて、図１０に示すクロック供給回路における異種クロック信号への切り替え動作を説明する。なお、システムクロックＣＬＫ＿ＳＹＳは第１の遅延回路１５０と第２の遅延回路１５１とで用いられるだけであり、他の回路に影響を与えないため、ここでは理解を容易にするため省略する。なお、理解を容易にするため、クロック反転信号ＩＮＶＥＲＴはＨレベル（反転なし）に固定した。
【０１７８】
まず、図１１のタイムチャートに示される各信号について簡単に説明する。なお、既に説明した信号については、ここでは説明しない。
【０１７９】
クロック切り替え指示信号ＳＷ＿ＣＬＫは、Ｈレベルで第１のクロック信号ＣＬＫ＿ＩＡ設定を指示し、Ｌレベルで第２のクロック信号ＣＬＫ＿ＩＢ設定を指示する信号である。
【０１８０】
第１の遅延信号ＤＥＬＡＹ１は、クロック切り替え指示信号ＳＷ＿ＣＬＫを遅延時間Ｄ１だけ遅延させた信号であり、遅延させたエッジで停止信号ＳＴＯＰをオフする（Ｈレベルに戻す）役割を果たす信号である。第２の遅延信号ＤＥＬＡＹ２は、クロック切り替え指示信号ＳＷ＿ＣＬＫを遅延時間Ｄ２だけ遅延させた信号であり、マルチプレクサ１１０から出力されるクロック信号を選択する役割を果たす信号である。
【０１８１】
次に、各時刻におけるクロック供給回路１０１の動作を説明する。
【０１８２】
時刻がｔ１までは、クロック切り替え指示信号ＳＷ＿ＣＬＫはＨレベルであり、停止信号ＳＴＯＰ、同期停止信号ＳＴＯＰ＿Ｓ、マスク信号ＭＡＳＫ、第１の遅延信号ＤＥＬＡＹ１、第２の遅延信号ＤＥＬＡＹ２は全てＨレベルである。また、第２の遅延信号ＤＥＬＡＹ２はＨレベルであるため、第２の中間クロックＣＬＫ＿Ｍ２は第１のクロック信号ＣＬＫ＿ＩＡとなる。また、マスク信号ＭＡＳＫはＨレベルのため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿Ｏとして第１のクロック信号ＣＬＫ＿ＩＡを出力する。
【０１８３】
時刻がｔ１において、制御信号生成部７０１がクロック切り替え指示信号ＳＷ＿ＣＬＫをＬレベルにすると、停止信号ＳＴＯＰがＬレベルになる。
【０１８４】
時刻がｔ２になった時点で、第２の中間クロックＣＬＫ＿Ｍ２の立ち上がりエッジが発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＬレベルとなる。
【０１８５】
時刻がｔ３になった時点で、第２の中間クロックＣＬＫ＿Ｍ２の立ち下がりエッジが発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＬレベルになる。このため、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿ＯとしてＬレベルの信号を出力する。
【０１８６】
時刻がｔ４になると、ｔ１から第２の遅延時間Ｄ２が経過し、第２の遅延信号ＤＥＬＡＹ２がＬレベルになる。このため、第２の中間クロックＣＬＫ＿Ｍ２は、第２のクロック信号ＣＬＫ＿ＩＢに切り替わる。
【０１８７】
時刻がｔ５になると、ｔ１から第１の遅延時間Ｄ１が経過し、第１の遅延信号ＤＥＬＡＹ１がＬレベルになる。このため、停止信号ＳＴＯＰがＨレベルに戻る。なお、ここでは遅延時間Ｄ１は遅延時間Ｄ２よりも大きい値としているが、遅延時間Ｄ１の方が小さい値となることもある。これらの遅延時間は、上述の異種クロック信号への切り替え動作で示した方法により求めることができる。
【０１８８】
時刻がｔ６になると、第２の中間クロックＣＬＫ＿Ｍ２の立ち上がりエッジが発生する。このため、Ｄフリップフロップ１３０の内部データが更新され、同期停止信号ＳＴＯＰ＿ＳはＨレベルに戻る。
【０１８９】
時刻がｔ７になった時点で、第２の中間クロックＣＬＫ＿Ｍ２の立ち下がりエッジが発生する。このため、Ｄフリップフロップ１３１の内部データが更新され、マスク信号ＭＡＳＫはＨレベルになる。そして、ＡＮＤゲート１４０は、出力クロックＣＬＫ＿Ｏとして第２のクロック信号ＣＬＫ＿ＩＢを出力する。
【０１９０】
以上のような動作により、クロック供給回路１０１は、クロック切り替え指示信号ＳＷ＿ＣＬＫに基づいて、自ら停止信号ＳＴＯＰとクロック指定信号ＳＥＬとを生成することができる。かかる構成であっても、ダイナミックリコンフィギュラブルハードウェア２００に供給するクロック信号をシームレスに切り替える効果が得られる。
【０１９１】
なお、この発明は上記実施形態及び上記変形例に限定されず、種々の変形及び応用が可能である。
【０１９２】
上記変形例では、第１の遅延信号ＤＥＬＡＹ１、第２の遅延信号ＤＥＬＡＹ２、停止信号ＳＴＯＰを生成するために、第１の遅延回路１５０と、第２の遅延回路１５１と、ＸＮＯＲゲート１６０を用いた。しかし、これらの信号のレベルを切り替えるタイミングを制御できれば構成は任意である。
【０１９３】
また、上記実施の形態では、２つのクロック信号を切り替える場合について説明したが、３つ以上のクロック信号を切り替えるものであってもよい。例えば、３つのクロック信号を切り替える場合、クロック切り替え指示信号ＳＷ＿ＣＬＫは、２ビットのディジタル信号から構成される。そして、遅延回路１５０、１５１、ＸＮＯＲゲート１６０を、それぞれ２つ用意する。
【０１９４】
そして、別途ＡＮＤゲートを用意し、２つの入力端子に、２つのＸＮＯＲゲート１６０の出力を接続し、出力端子をＤフリップフロップ１３０のデータ入力端子に接続すればよい。また、マルチプレクサ１１０は、２つの制御端子を備え、３つの入力端子を備えればよい。
【０１９５】
また、本実施の形態では、メタステーブルが発生した場合に、ダイナミックリコンフィギュラブルハードウェア２００に供給するクロック信号が不安定な値とならないように、Ｄフリップフロップを直列に２段接続する構成とした。しかし、例えば、クロック信号の周波数が高い場合は、メタステーブルの発生確率に応じて、さらに３段、４段とＤフリップフロップの段数を増やしてもよい。
【０１９６】
また、変形例では、クロック切り替え指示信号ＳＷ＿ＣＬＫに基づいて、停止信号ＳＴＯＰと、クロック指定信号ＳＥＬとを生成する例を示した。しかし、クロック切り替え指示信号ＳＷ＿ＣＬＫに基づいて、停止信号ＳＴＯＰと、クロック反転信号ＩＮＶＥＲＴとを生成するようにしてもよい。
【図面の簡単な説明】
【０１９７】
【図１】本発明の実施の形態に係るクロック供給回路が適用されるシステムの構成図である。
【図２】本発明の実施の形態に係るクロック供給回路の構成図である。
【図３】図２に示すクロック供給回路におけるクロック信号の停止動作を説明するためのタイムチャートである。
【図４】分周クロック生成用信号生成部の一例を示すブロック図である。
【図５】分周クロック生成用信号から分周クロック信号を生成する動作を説明するためのタイムチャートである。
【図６】図２に示すクロック供給回路における異種クロック信号への切り替え動作を説明するためのタイムチャートである。
【図７】図２に示すクロック供給回路を用いて異種クロック信号へ切り替える場合の切り替え時間を説明するためのタイムチャートである。
【図８】図２に示すクロック供給回路におけるクロック信号の反転動作を説明するためのタイムチャートである。
【図９】変形例に係るクロック供給回路が適用されるシステムの構成図である。
【図１０】変形例に係るクロック供給回路の構成図である。
【図１１】図１０に示すクロック供給回路における異種クロック信号への切り替え動作を説明するためのタイムチャートである。
【符号の説明】
【０１９８】
１００、１０１  クロック供給回路
１１０  マルチプレクサ
１２０  反転回路
１３０、１３１、１３２  Ｄフリップフロップ
１４０  ＡＮＤゲート
１５０  第１の遅延回路
１５１  第２の遅延回路
１６０  ＸＮＯＲゲート
２００  ダイナミックリコンフィギュラブルハードウェア
３００  システムクロック生成部
４００  第１のクロック信号生成部
５００  分周クロック生成用信号生成部
６００  第２のクロック信号生成部
７００、７０１  制御信号生成部
【図１】
2009009544.tif 000003
【図２】
2009009544.tif 000004
【図３】
2009009544.tif 000005
【図４】
2009009544.tif 000006
【図５】
2009009544.tif 000007
【図６】
2009009544.tif 000008
【図７】
2009009544.tif 000009
【図８】
2009009544.tif 000010
【図９】
2009009544.tif 000011
【図１０】
2009009544.tif 000012
【図１１】
2009009544.tif 000013