説明

クロック供給回路及びクロック供給方法

【課題】クロック信号のシームレスな切り替えが可能なクロック供給回路を提供する。
【解決手段】マルチプレクサ110は、供給された複数のクロック信号のうちクロック指定信号SELにより指定されたクロック信号を第1の中間クロックCLK_M1として出力する。反転回路120は、クロック反転信号INVERTに応答して、供給された第1の中間クロックCLK_M1を、そのまま、又は、信号レベルを反転させて第2の中間クロックCLK_M2として出力する。Dフリップフロップ130、131は、停止信号STOPを第2の中間クロックCLK_M2の立ち上がりエッジ及び立ち下がりエッジに同期させてマスク信号MASKを生成する。ANDゲート140は、第2の中間クロックCLK_M2とマスク信号MASKとから出力クロックCLK_Oを生成し、出力する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、クロック供給回路及びクロック供給方法に関する。
【背景技術】
【0002】
近年、アプリケーションプログラム(以下、アプリケーションとする)の実行時に、動的に回路構成を切り替えることが可能であるハードウェアに関する技術、いわゆるダイナミックリコンフィギュラブル技術が開発されている。ダイナミックリコンフィギュラブル技術では、ソフトウェアがハードウェア構造をほとんど意識せずに、専用論理回路並の性能を容易に実現できる環境を作り出すことが可能となる。
【0003】
これに伴い、ASIC(Application Specific Integrated Circuit)を設計する場合のような複雑な設計作業を簡素化し、IC(Integrated Circuit)やLSI(Large Scale Integration)等の開発期間を短縮化できる仕組みが用意されつつある。アプリケーションの開発時のシミュレーションさえ通過すれば、ダイナミックリコンフィギュラブルプロセッサの実チップでの実行が完全に保証される。このため、ASICの検証作業といった煩雑な作業に振り回されることもなくなる。
【0004】
また、ダイナミックリコンフィギュラブル技術では、回路構成を高速に切り替えることが可能となるため、一つのチップを様々な専用LSIに瞬時に作り替えることができる。つまり、コンピュータの仮想記憶のように、その時々で必要な回路構成に切り替えることができる。
【0005】
上述したダイナミックリコンフィギュラブル技術に関しては、例えば特許文献1に開示されている。
【特許文献1】特許第3540796号公報
【0006】
上述したダイナミックリコンフィギュラブル技術を用いてLSIを実現する場合、通常は実装する回路間で使用するクロックが異なる。例えば、アプリケーションとして、DES(Data Encryption Standard)、JPEG(Joint Photographic Experts Group)、ワイヤレスLAN(Wireless Local Area Network)を切り替えて実行する場合、それぞれのアプリケーションを実行するために実装される回路を効率的に動作させるためのクロック信号はそれぞれ異なる。また、同一アプリケーションにおいてもモードや状況により、クロック信号を変更した方が消費電力等の観点で好ましい場合がある。このため、クロック信号を停止、反転、分周し、或いは、異種のクロック信号に切り替えて各回路に供給する回路が必要である。
【発明の開示】
【発明が解決しようとする課題】
【0007】
しかしながら、従来のクロック供給回路では、異種のクロック信号への切り替え時、或いは、クロック信号の反転時にクロック信号にハザードが発生する問題があった。このため、回路構成を変更してから、初期化しない回路は実装できなかった。また、ハザードを発生させないように、クロック信号を停止してから回路構成を変更し、その後復帰動作に移行する方法では、迅速に回路構成を変更することができなかった。
【0008】
さらに、別の方法として、クロック信号の切り替え機構を設けず、同周波数や同位相のクロック信号で動作する回路のみを実装する方法もあった。しかし、この方法では、FPGAが実現しているような効率の良いハードウェアの実装はできず、また、使用できるアプリケーションも限定されてしまう。
【0009】
本発明は、上記問題に鑑みてなされたものであり、クロック信号のシームレスな切り替えが可能な小サイズでシンプルなクロック供給回路、及びそのクロック供給方法を提供することを目的とする。
【課題を解決するための手段】
【0010】
上記目的を達成するために、本発明の第1の観点に係るクロック供給回路は、
クロック指定信号に応答して、供給された複数のクロック信号のうちクロック指定信号により指定されたクロック信号を出力するマルチプレクサと、
クロック反転信号に応答して、前記マルチプレクサが出力したクロック信号をそのまま、又は、信号レベルを反転させて出力するクロック反転部と、
クロック信号の出力を停止するタイミングとクロック信号の出力の停止を解除するタイミングとを指示する出力停止信号と、前記クロック反転部が出力したクロック信号と、が供給され、前記出力停止信号が指示する停止タイミングと解除タイミングとをそれぞれ前記クロック信号のエッジに同期させることにより、前記クロック反転部が出力するクロック信号をマスクするためのマスク信号を生成するマスク信号生成部と、
前記クロック反転部が出力したクロック信号を前記マスク信号生成部が生成したマスク信号でマスクすることによりマスク済クロック信号を生成し、ハードウェアに供給するマスク部と、
を備える、ことを特徴とする。
【0011】
前記マスク信号生成部は、それぞれデータ入力端子とクロック入力端子とデータ出力端子とを備えた、エッジトリガタイプの第1のDフリップフロップと、第1のDフリップフロップとは逆のトリガ極性を有するエッジトリガタイプの第2のDフリップフロップとから構成され、第1と第2のDフリップフロップはクロック入力端子から前記クロック反転部が出力したクロック信号が供給され、第1のDフリップフロップはデータ入力端子から出力停止信号が供給され、第2のDフリップフロップはデータ入力端子から第1のDフリップフロップのデータ出力端子から出力された信号が供給され、第2のDフリップフロップはデータ出力端子からマスク信号を出力してもよい。
【0012】
前記出力停止信号は、前記クロック指定信号が第1のクロック信号から第2のクロック信号への切り替えを指示する際に、第1のクロック信号の周期を1.5倍した時間に所定のセットアップ時間TsetupAと所定のホールド時間TholdBとを加えた時間以上切り替えタイミングよりも前のタイミングを停止タイミングとして指示し、前記切り替えタイミングよりも所定のセットアップ時間TsetupCに所定のホールド時間TholdDを加えた時間以上後のタイミングを解除タイミングとして指示してもよい。
【0013】
前記出力停止信号は、前記クロック反転信号がクロック信号の信号レベルを反転することを指示又は信号レベルの反転を解除することを指示する際に、該指示のタイミングよりも、クロック信号の周期を1.5倍した時間に所定のセットアップ時間TsetupAと所定のホールド時間TholdBとを加えた時間以上前のタイミングを停止タイミングとして指示し、前期指示のタイミングから所定のセットアップ時間TsetupCに所定のホールド時間TholdDを加えた時間が経過したタイミングを解除タイミングとして指示してもよい。
【0014】
クロック信号の切り替えを指示するクロック切り替え指示信号に応答して前記出力停止信号を生成する停止信号生成部と、
前記クロック切り替え指示信号に応答して前記クロック指定信号を生成するクロック指定信号生成部と、をさらに備えてもよい。
【0015】
前記停止信号生成部は、供給されたクロック切り替え指示信号を遅延させて出力する第1の遅延回路と、前記クロック切り替え指示信号と前記第1の遅延回路から出力された信号とが供給され、供給された信号の信号レベルが一致する状態から一致しない状態に変化するタイミングを停止タイミングとし、一致しない状態から一致する状態に変化するタイミングを解除タイミングとして指示する出力停止信号を生成する一致回路と、を備え、
前記クロック指定信号生成部は、供給されたクロック切り替え指示信号を遅延させてクロック指定信号として出力する第2の遅延回路を備えてもよい。
【0016】
クロック信号を分周して分周クロック生成用信号を生成する分周クロック生成用信号生成部、をさらに備え、
前記マスク信号生成部は、前記出力停止信号に代えて前記分周クロック生成用信号生成部が生成した分周クロック生成用信号と、前記クロック反転部が出力したクロック信号と、が供給され、分周クロック生成用信号のエッジを前記クロック信号のエッジに同期させることによりマスク信号を生成してもよい。
【0017】
前記分周クロック生成用信号生成部は、
クロック信号のエッジをカウントし、カウント値をディジタルデータとして出力するカウンタと、
前記カウンタが出力したディジタルデータに基づいて、前記クロック信号を分周した分周クロック生成用信号を生成し、出力する信号生成部と、
前記カウンタをリセットするカウント値を示すリセット値を出力するレジスタと、
前記レジスタが出力したリセット値と、前記カウンタが出力したディジタルデータが示すカウント値とを比較し、リセット値とカウント値とが一致する場合に、前記カウンタをリセットするリセット信号を前記カウンタに出力する比較部と、を備えてもよい。
【0018】
ダイナミックリコンフィギュラブルハードウェアに供給するクロック信号として前期クロック供給回路から供給されたクロック信号を使用するために、前期クロック供給回路をダイナミックリコンフィギュラブル回路に組み込でもよい。
【0019】
上記目的を達成するために、本発明の第2の観点に係るクロック供給方法は、
クロック指定信号に応答して、供給された複数のクロック信号のうちクロック指定信号により指定されたクロック信号を出力する指定クロック出力ステップと、
クロック反転信号に応答して、前記指定クロック出力ステップで出力したクロック信号をそのまま、又は、信号レベルを反転させて出力するクロック反転ステップと、
出力停止信号が指示するクロック信号の出力を停止するタイミングとクロック信号の出力の停止を解除するタイミングとをそれぞれ前記クロック反転ステップで出力したクロック信号のエッジに同期させることによりマスク信号を生成するマスク信号生成ステップと、
前記クロック反転ステップで出力したクロック信号を前記マスク信号生成ステップで生成したマスク信号でマスクすることによりマスク済クロック信号を生成するマスクステップと、
前記マスクステップで生成したマスク済クロック信号を、ハードウェアに供給するクロック信号供給ステップと、
を備える、ことを特徴とする。
【発明の効果】
【0020】
本発明にかかるクロック供給回路及びクロック供給方法によれば、小サイズでシンプルな回路で種々のクロック信号の供給と、そのシームレスな切り替えが可能となる。
【発明を実施するための最良の形態】
【0021】
以下、図面に基づき、本発明の実施の形態に係るクロック供給回路の構成と動作について説明する。
【0022】
図1は、本発明の実施の形態に係るクロック供給回路100が適用されるシステムの構成図である。
【0023】
クロック供給回路100は、制御信号生成部700から供給された制御信号に基づいて、クロック信号をダイナミックリコンフィギュラブルハードウェア200に供給する回路である。
【0024】
クロック供給回路100は、システムクロック生成部300からシステムクロックCLK_SYS、第1のクロック信号生成部400から第1のクロック信号CLK_IA、第2のクロック信号生成部600から第2のクロック信号CLK_IBがそれぞれクロック信号として供給される。
【0025】
また、クロック供給回路100は、制御信号生成部700からクロック信号を停止させるための停止信号STOPと、複数のクロック信号から特定のクロック信号を指定するクロック指定信号SELと、クロック信号の信号レベルを反転させるか否かを指示するクロック反転信号INVERTと、が供給される。さらに、クロック供給回路100は、分周クロック生成用信号生成部500から分周クロック生成用信号CLK_DIVが供給される。そして、クロック供給回路100は、これらのクロック信号や制御信号に基づいて生成した出力クロックCLK_Oをダイナミックリコンフィギュラブルハードウェア200に供給する。
【0026】
また、クロック供給回路100は、システムクロック生成部300から供給されたシステムクロックCLK_SYSを直接、ダイナミックリコンフィギュラブルハードウェア200に供給する。
【0027】
ダイナミックリコンフィギュラブルハードウェア200は、動的に回路構成(ハードウェア構成)を切り替えながら、回路構成に対応するアプリケーションを実行する。
【0028】
ダイナミックリコンフィギュラブルハードウェア200は、クロック供給回路100から供給される出力クロックCLK_Oにより各アプリケーション用の回路が動作する。なお、アプリケーションに依存しない回路部分は、クロック供給回路100から供給されるシステムクロックCLK_SYSにより動作する。
【0029】
システムクロック生成部300は、システムクロックCLK_SYSを生成する回路であり、第1のクロック信号生成部400は、第1のクロック信号CLK_IAを生成する回路であり、第2のクロック信号生成部600は、第2のクロック信号CLK_IBを生成する回路である。これらの回路は、それぞれ水晶発振子などを用いた発振回路などから構成される。PLL(Phase Locked Loop)回路などを含んでいてもよい。
【0030】
システムクロック生成部300は、生成したシステムクロックCLK_SYSを、クロック供給回路100、及び、制御信号生成部700に供給する。第1のクロック信号生成部400は、生成した第1のクロック信号CLK_IAを、クロック供給回路100及び分周クロック生成用信号生成部400に供給する。第2のクロック信号生成部600は、生成した第2のクロック信号CLK_IBを、クロック供給回路100に供給する。
【0031】
分周クロック生成用信号生成部500は、第1のクロック信号生成部400から供給された第1のクロック信号CLK_IAから分周クロック生成用信号CLK_DIVを生成し、クロック供給回路100に供給する。分周クロック生成用信号生成部500の詳細については後述する。
【0032】
制御信号生成部700は、クロック供給回路100にクロック信号のシームレスな切り替えを実現させるために、各制御信号を生成し、クロック供給回路100に供給する。具体的には、制御信号生成部700は、システムクロック生成部400から供給されたシステムクロックCLK_SYSに基づいて、停止信号STOPと、クロック指定信号SELと、クロック反転信号INVERTとを生成し、クロック供給回路100に供給する。制御信号生成部700は、CPUなどから構成される。
【0033】
次に、図2を用いて、本発明の実施の形態に係るクロック供給回路100の構成を詳細に説明する。
【0034】
図2に示すように、クロック供給回路100は、マルチプレクサ110と、反転回路120と、Dフリップフロップ130、131と、ANDゲート140と、を備える。
【0035】
マルチプレクサ110は、制御端子に供給された信号に基づいて、2つの入力端子から供給されたクロック信号のうちいずれか一方のクロック信号を出力端子から出力する。マルチプレクサ110は、論理ゲートなどから構成され、2つの入力端子と、1つの出力端子と、1つの制御端子とを備える。一方の入力端子は、第1のクロック信号生成部400に接続され、他方の入力端子は、第2のクロック信号生成部600に接続される。また、制御端子は、制御信号生成部700に接続され、出力端子は、反転回路120の入力端子に接続される。
【0036】
マルチプレクサ110は、一方の入力端子から第1のクロック信号CLK_IA、他方の入力端子から第2のクロック信号CLK_IB、制御端子からクロック指定信号SELが供給される。また、マルチプレクサ110は、制御端子に供給されたクロック指定信号SELがHレベルのとき第1のクロック信号CLK_IAを、Lレベルのとき第2のクロック信号CLK_IBを、第1の中間クロック信号CLK_M1として出力端子から出力する。
【0037】
反転回路120は、反転制御端子から供給された信号に基づいて、入力端子から供給されたクロック信号をそのまま又は反転して出力端子から出力する。反転回路120は、論理ゲートXNORなどから構成され、1つの入力端子と、1つの出力端子と、1つの反転制御端子とを備える。
【0038】
入力端子は、マルチプレクサ110の出力端子に接続され、反転制御端子は、制御信号生成部700に接続される。また、出力端子は、Dフリップフロップ130のクロック入力端子と、Dフリップフロップ131のクロック入力端子と、ANDゲート140の一方の入力端子とに接続される。
【0039】
反転回路120は、入力端子から第1の中間クロック信号CLK_M1が供給され、反転制御端子からクロック反転信号INVERTが供給される。また、反転回路120は、出力端子から第2の中間クロック信号CLK_M2を出力する。なお、反転回路120は、クロック反転信号INVERTがHレベルのとき第1の中間クロック信号CLK_M1をそのまま出力端子から出力し、Lレベルのとき第1の中間クロック信号CLK_M1を反転して出力端子から出力する。
【0040】
Dフリップフロップ130は、保持する内部データを出力端子から出力するフリップフロップであり、クロック入力端子から供給された信号の立ち上がりエッジ毎に、内部データが入力端子から供給されるデータで更新される。Dフリップフロップ130は、論理ゲートなどから構成され、1つのデータ入力端子と、1つのクロック入力端子と、1つの出力端子とを備える。
【0041】
データ入力端子は、制御信号生成部700に接続され、クロック入力端子は、反転回路120の出力端子に接続され、出力端子は、Dフリップフロップ131のデータ入力端子に接続される。
【0042】
Dフリップフロップ130は、データ入力端子から停止信号STOPが供給され、クロック入力端子から第2の中間クロック信号CLK_M2が供給される。また、Dフリップフロップ130は、第2の中間クロック信号CLK_M2の立ち上がりエッジに停止信号STOPを同期させた信号である同期停止信号STOP_Sを出力端子から出力する。
【0043】
Dフリップフロップ131は、Dフリップフロップ130とほぼ同じ構成であるが、クロック入力端子は反転入力端子である。このため、Dフリップフロップ131の内部データは、クロック入力端子に供給された信号の立ち下がりエッジ毎に更新される。
【0044】
データ入力端子は、Dフリップフロップ130の出力端子に接続され、クロック入力端子は、反転回路120の出力端子に接続され、出力端子は、ANDゲート140の一方の入力端子に接続される。
【0045】
Dフリップフロップ131は、データ入力端子から同期停止信号STOP_Sが供給され、クロック入力端子から第2の中間クロック信号CLK_M2が供給される。また、Dフリップフロップ131は、第2の中間クロック信号CLK_M2の立ち下がりエッジに同期停止信号STOP_Sを同期させた信号であるマスク信号MASKを出力端子から出力する。
【0046】
ANDゲート140は、2つの入力端子から入力した信号に対応する値の論理積を求め、求めた論理積に対応する信号を出力端子から出力する論理ゲートである。ANDゲート140は、2つの入力端子と、1つの出力端子とを備える。
【0047】
一方のデータ入力端子は、Dフリップフロップ131の出力端子に接続され、他方の入力端子は、反転回路120の出力端子に接続され、出力端子は、ダイナミックリコンフィギュラブルハードウェア200の図示しないクロック入力端子に接続される。
【0048】
ANDゲート140は、一方のデータ入力端子からマスク信号MASKが供給され、他方の入力端子から第2の中間クロックCLK_M2が供給される。また、ANDゲート140は、第2の中間クロックCLK_M2をマスク信号MASKでマスクしたクロックである出力クロックCLK_Oを出力端子から出力する。
【0049】
なお、クロック供給回路100は、システムクロック生成部300から供給されたシステムクロックCLK_SYSを、直接、ダイナミックリコンフィギュラブルハードウェア200に出力する。
【0050】
(クロック信号の停止動作)
次に、図3に示すタイムチャートを用いて、図2に示すクロック供給回路を用いたクロック信号の停止動作を説明する。なお、図3、図5、図6、図8及び図11では、理解を容易にするためセットアップ時間、ホールド時間及びパス遅延はないものとしてタイムチャートを示す。
【0051】
まず、図3のタイムチャートに示される各信号について簡単に説明する。なお、理解を容易にするため、クロック指定信号SELはHレベル(第1のクロック信号CLK_IAを指定)、クロック反転信号INVERTはHレベル(反転なし)に固定する。このため、第1の中間クロック信号CLK_M1と、第2の中間クロック信号CLK_M2とは、第1のクロック信号CLK_IAと同じ信号となるため図3に示さない。
【0052】
第1のクロック信号CLK_IAは、第2のクロック信号CLK_IBと周波数の異なるクロック信号であり、マルチプレクサ110の一方の入力端子から継続的に供給される。
【0053】
停止信号STOPと同期停止信号STOP_Sは、マスク信号MASKを生成するための信号である。マスク信号MASKは、クロック信号の切り替え中やアプリケーションとしてクロック信号が不要な時に出力クロックCLK_Oの出力を停止するために出力クロックCLK_Oにマスクをかけるための信号である。停止信号STOP、同期停止信号STOP_S及びマスク信号MASKは、Hレベルでオフ(マスクなし)、Lレベルでオン(マスクあり)とする。
【0054】
出力クロックCLK_Oは、クロック供給回路100からダイナミックリコンフィギュラブルハードウェア200に供給するクロック信号である。
【0055】
次に、各時刻におけるクロック供給回路100の動作を説明する。
【0056】
時刻がt1までは、停止信号STOPはLレベルであり、このため同期停止信号STOP_S、マスク信号MASKは全てLレベルである。また、マスク信号MASKはLレベルであるため、ANDゲート140は、出力クロックCLK_OとしてLレベルの信号を出力する。
【0057】
時刻がt1において、制御信号生成部700が停止信号STOPをHレベルにする。
【0058】
時刻がt2になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち上がりエッジが発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはHレベルになる。
【0059】
時刻がt3になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち下がりエッジが発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはHレベルになる。このため、マスク信号MASKによるマスクが解除され、ANDゲート140は、出力クロックCLK_Oとして第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)を出力する。
【0060】
時刻がt4になると、制御信号生成部700が停止信号STOPをLレベルにする。
【0061】
時刻がt5になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち上がりエッジが発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはLレベルになる。
【0062】
時刻がt6になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち下がりエッジが発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはLレベルになる。このため、ANDゲート140は、出力クロックCLK_OとしてLレベルの信号を出力する。
【0063】
以上のように、制御信号生成部700が停止信号STOPのレベルを変化させることにより、クロック供給回路100は、ハザードを発生させることなく出力クロックCLK_Oの出力を停止することができる。なお、本回路構成によれば、停止信号STOPのレベルを第1のクロック信号CLK_IAと非同期に変化させてもよい。
【0064】
(分周クロックの生成動作)
次に、図2に示すクロック供給回路を用いた分周クロックの生成動作を説明する。まず、図4を用いて、分周クロック生成用信号生成部500の構成について詳細に説明をする。
【0065】
分周クロック生成用信号生成部500は、供給されたクロック信号を用いて、分周クロック生成用信号を生成する。
【0066】
図4に示すように、分周クロック生成用信号生成部500は、カウンタ510と、信号生成回路520と、比較回路530と、レジスタ540と、を備える。
【0067】
カウンタ510は、供給されたクロック信号の立ち上がりエッジをカウントし4ビットの値として出力する同期リセット端子付きのカウンタである。カウンタ510は、例えば、4つのTフリップフロップから構成される。
【0068】
カウンタ510は、第1のクロック信号生成部400から第1のクロック信号CLK_IAが供給され、比較回路530からリセット信号RSTが供給される。また、カウンタ510は、信号生成回路520と、比較回路530とに4ビットのディジタル信号を出力する。
【0069】
信号生成回路520は、カウンタ510から供給されたディジタル信号から分周クロック生成用信号CLK_DIVを生成し、クロック供給回路100に出力する。信号生成回路520は、論理ゲートなどから構成され、4ビットのディジタル信号のうち任意のディジタル信号のANDやORをとるなどして、分周クロック生成用信号CLK_DIVを生成する。なお、本回路は、N:1分周のみを作るのであれば、0を検出する4入力のOR回路で実現できる。
【0070】
信号生成回路520は、カウンタ510から4ビットのディジタル信号が供給され、生成した分周クロック生成用信号CLK_DIVをクロック供給回路100に出力する。
【0071】
比較回路530は、カウンタ510から供給されたディジタル信号の値と、レジスタ540から供給されたディジタル信号の値とを比較し、一致する場合にカウンタ510にリセット信号を出力する。比較回路530は、論理ゲートなどから構成される。
【0072】
比較回路530は、カウンタ510とレジスタ540とからそれぞれ4ビットのディジタル信号が供給され、カウンタ510にリセット信号RSTを出力する。
【0073】
レジスタ540は、比較回路530に4ビットのディジタル信号を供給する。レジスタ540は、例えばフリップフロップなどから構成され、図示しないCPUなどからバスを介してデータの書き込みが可能な4ビットの汎用レジスタである。
【0074】
次に、分周クロック生成用信号生成部500の動作について説明する。
【0075】
カウンタ510には、第1のクロック信号生成部400から第1のクロック信号CLK_IAが供給される。カウンタ510は、供給されたクロック信号の立ち上がりエッジでカウントする。
【0076】
ここで、あらかじめ、図示しないCPUがレジスタ540に、4ビットのディジタルデータとして「0011」を書き込んでおく。すると、カウンタ510から供給されたディジタル信号の値が「0011」となった後に、比較回路530は、カウンタ510にリセット信号RSTを出力する。すると、カウンタ510内のフリップフロップの値がクリアされ、結果として4分周したクロック信号が生成される。
【0077】
なお、リセットする値が、「0011」の場合、4分周となるが、信号生成回路520において、0を検出するため4ビットの論理和をとることにより、図5に示すような1クロック分の分周クロック生成用信号CLK_DIVが得られる。なお、本回路構成を用いれば、レジスタの値を切り替えることで、任意の分周比のクロック信号へハザードなしで切り替えることができる。
【0078】
次に、図5に示すタイムチャートを用いて、図2に示すクロック供給回路100を用いた分周クロックの生成動作を説明する。ただし、分周クロックの生成動作では、理解を容易にするため、停止信号STOPの代わりに分周クロック生成用信号CLK_DIVをクロック供給回路100に供給する構成としている。制御信号生成部700内部やクロック供給回路100内部にて、停止信号STOPと分周クロック生成用信号CLK_DIVのANDをとり、得られた信号を停止信号STOPとしてクロック供給回路100内部で使用する構成としてもよい。なお、クロック信号の停止動作と同様に、クロック指定信号SELはHレベル(第1のクロック信号CLK_IAを指定)、クロック反転信号INVERTはHレベル(反転なし)に固定する。
【0079】
時刻がt1までは、分周クロック生成用信号CLK_DIVはLレベルであり、このため同期停止信号STOP_S、マスク信号MASKは全てLレベルである。また、マスク信号MASKはLレベルであるため、ANDゲート140は、出力クロックCLK_OとしてLレベルの信号を出力する。
【0080】
時刻がt1において、分周クロック生成用信号生成部500から供給される分周クロック生成用信号CLK_DIVがHレベルになる。
【0081】
時刻がt2になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち上がりエッジが発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはHレベルになる。
【0082】
時刻がt3になると、分周クロック生成用信号生成部500から供給される分周クロック生成用信号CLK_DIVがLレベルになる。
【0083】
時刻がt4になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち下がりエッジが発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはHレベルになる。このため、マスク信号MASKによるマスクが解除され、ANDゲート140は、出力クロックCLK_Oとして第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)を出力する。
【0084】
時刻がt5になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち上がりエッジが発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはLレベルになる。
【0085】
時刻がt6になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち下がりエッジが発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはLレベルとなる。このため、ANDゲート140は、出力クロックCLK_OとしてLレベルの信号を出力する。
【0086】
以上のように、分周クロック生成用信号生成部500から供給された分周クロック生成用信号CLK_DIVに基づくマスク信号MASKで第1のクロック信号CLK_IAをマスクした分周クロック(出力クロックCLK_O)をダイナミックリコンフィギュラブルハードウェア200に供給することができる。なお、分周クロック生成用信号生成部500において、分周比を変更した場合であっても、ハザードなく切り替えたクロック信号の供給が可能である。また、出力クロックCLK_Oが供給される後段の回路は、出力クロックCLK_Oのクロックパルス幅が最も短いとき、言い換えると第2の中間クロックCLK_M2の周波数が最も高く分周もされていないときのパルス幅(最小パルス幅)で正常に動作するように予め設計を行う。そうする事で、分周比の変更によりDUTY比が変更されても、パルス幅は最小パルス幅よりも小さくはならないため、後段の回路は問題なく動作する。
【0087】
(異種クロック信号への切り替え動作)
次に、図6に示すタイムチャートを用いて、図2に示すクロック供給回路を用いた異種クロック信号への切り替え動作を説明する。なお、理解を容易にするため、クロック反転信号INVERTはHレベル(反転なし)に固定する。従って、第1の中間クロックCLK_M1は、第2の中間クロックCLK_M2と同じ信号となるため図6に示さない。
【0088】
まず、図6のタイムチャートに示される各信号について簡単に説明する。なお、説明済の信号については、ここでは説明を省略する。
【0089】
第2のクロック信号CLK_IBは、第1のクロック信号CLK_IAと非同期なクロック信号であり、マルチプレクサ110の他方の入力端子から継続的に供給される。クロック指定信号SELは、第1のクロック信号CLK_IAと第2のクロック信号CLK_IBのうちいずれか一方の信号を指定する信号である。
【0090】
次に、各時刻におけるクロック供給回路100の動作を説明する。
【0091】
時刻がt1までは、停止信号STOPはHレベルであり、このため同期停止信号STOP_S、マスク信号MASKは全てHレベルである。また、クロック指定信号SELはHレベルのため、第2の中間クロックCLK_M2として第1のクロック信号CLK_IAがそのまま出力される。また、マスク信号MASKはHレベルのため、ANDゲート140は、出力クロックCLK_Oとして第1のクロック信号CLK_IAを出力する。
【0092】
時刻がt1において、制御信号生成部700が停止信号STOPをLレベルにする。
【0093】
時刻がt2になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち上がりエッジが発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはLレベルになる。
【0094】
時刻がt3になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち下がりエッジが発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはLレベルになる。このため、ANDゲート140は、出力クロックCLK_Oを出力しない状態になる。
【0095】
時刻がt4になると、制御信号生成部700がクロック指定信号SELをLレベルにする。このため、第2の中間クロックCLK_M2は、第2のクロック信号CLK_IBに切り替わる。
【0096】
時刻がt5になると、制御信号生成部700が停止信号STOPをHレベルにする。
【0097】
時刻がt6になった時点で、第2の中間クロックCLK_M2(第2のクロック信号CLK_IB)の立ち上がりエッジが発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはHレベルになる。
【0098】
時刻がt7になった時点で、第2の中間クロックCLK_M2(第2のクロック信号CLK_IB)の立ち下がりエッジが発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはHレベルになる。このため、ANDゲート140は、出力クロックCLK_Oとして第2のクロック信号CLK_IBを出力する。
【0099】
以上のように、制御信号生成部700が停止信号STOPとクロック指定信号SELのレベルを、第1のクロック信号CLK_IAと第2のクロック信号CLK_IBに対して非同期に変化させても、以下に説明する切り替え時間を守ることにより、ダイナミックリコンフィギュラブルハードウェア200に供給するクロック信号をシームレスに切り替えることができる。
【0100】
次に、異種クロック信号への切り替え時間について説明する。
【0101】
図7は、図2に示すクロック供給回路を用いて異種クロック信号へ切り替える場合の切り替え時間を説明するためのタイムチャートである。
【0102】
前述のように、マスク信号MASKがLレベルの期間にクロック指定信号SELのレベルを切り替えることにより出力クロックCLK_Oにハザードを発生させることなくクロック信号を切り替えることができる。ここでは、停止信号STOPをLレベルにし、再び停止信号STOPをHレベルにするまでの時間を切り替え時間Tとする。
【0103】
まず、ハザードを発生させない条件のもと、最低限必要な切り替え時間Tが最大となるのは、第2の中間クロックCLK_M2(第1のクロック信号CLK_IA)の立ち上がりエッジ(時刻=t2)よりもセットアップ時間TsetupAだけ前の時刻(時刻=t1)に停止信号STOPをLレベルにし、この立ち上がりエッジの1.5周期後の立ち下がりエッジ(時刻=t4)よりもホールド時間TholdB後の時刻(時刻=t5)にクロック指定信号SELをLレベルにする場合である。理由を以下に説明する。
【0104】
停止信号STOPをLレベルにしてから、第2の中間クロックCLK_M2の立ち上がりエッジと立ち下がりエッジが順番に発生すれば、マスク信号MASKはLレベルとなる。この2つのエッジを発生させるためには、第2の中間クロックCLK_M2の1.5周期分の時間が必要である。ただし、厳密には、セットアップ時間TsetupAやホールド時間TholdBを考慮する必要がある。
【0105】
ここで、セットアップ時間TsetupAは、フリップフロップのセットアップマージンを満たす目的でクロックに対してデータを早く入れないといけない時間である。セットアップ時間TsetupAは、式(1)のように表すことができる。
(数1)
TsetupA=StopDelay1+SetupMargin−CLK_IADelay1 (1)
【0106】
なお、StopDelay1は、停止信号STOPがシステムクロックCLK_SYS上における適当なポイントからDフリップフロップ130に伝搬するまでの伝搬時間(遅延時間)である。また、SetupMarginは、Dフリップフロップ130のセットアップマージンである。そして、CLK_IADelay1は、第1のクロック信号CLK_IAが適当なポイントからDフリップフロップ130に伝搬するまでの伝搬時間(遅延時間)である。
【0107】
ここで、例えば、セットアップ時間TsetupAが確保できる時刻(時刻=t1以前)に停止信号STOPをLレベルにすると、直後の立ち上がりエッジ(時刻t=2)で確実に同期停止信号STOP_SをLレベルとすることができる。その為、セットアップ時間TsetupAがぎりぎり確保できない時刻から1クロック後に同期停止信号STOP_SをLレベルとする場合に、最低限必要な切り替え時間Tが最大となる。
【0108】
また、ホールド時間TholdBは、フリップフロップのライブラリ毎に規定されるパルス幅制限を満たし、ANDゲート140で確実にMASK処理が保証される目的でクロックに対してデータを遅く入れないといけない時間である。ホールド時間TholdBは、式(2)のように表すことができる。
(数2)
TholdB=CLK_IADelay2+CLKPulseLimit1−SelDelay1 (2)
【0109】
なお、CLK_IADelay2は、第1のクロック信号CLK_IAが適当なポイントからマルチプレクサ110に伝搬するまでの伝搬時間(遅延時間)である。また、CLKPulseLimit1は、Dフリップフロップ130、131のパルス幅制限である。そして、SelDelay1は、クロック指定信号SELがシステムクロックCLK_SYS上における適当なポイントからマルチプレクサ110に伝搬するまでの伝搬時間(遅延時間)である。
【0110】
ここで、CLKPulseLimit1が満たされない場合、Dフリップフロップ131の出力がLレベルに切り替わって安定する前に第2の中間クロックCLK_M2が切り替わり、Dフリップフロップ131のクロック入力端子に不正規なクロック信号が供給される。このため、マスク信号MASKが想定しているタイミングでLレベルになることが保証されず、後段のANDゲート140による正常なマスク動作が保証されない。
【0111】
なお、ホールド時間TholdBが確保できない時刻(時刻=t5以前)に、クロック指定信号SELをLレベルにすると、マスク信号MASKがLレベルとなる前に第2の中間クロックCLK_M2が切り替わることになり、出力クロックCLK_Oへハザードが伝搬する可能性がある。その為、ホールド時間TholdBがぎりぎり確保できる時刻にクロック指定信号SELをLレベルにする場合が、ハザードを発生させない限界となる。
【0112】
また、クロック指定信号SELをLレベルにしてから停止信号STOPをHレベルに戻すまでの時間を考える場合、セットアップ時間TsetupCとホールド時間TholdDを考慮する必要がある。
【0113】
ここで、セットアップ時間TsetupCは、フリップフロップのライブラリ毎に規定されるパルス幅制限を満たし、ANDゲート140で確実にMASK処理が保証される目的でクロックに対してデータを早く入れないといけない時間である。セットアップ時間TsetupCは、式(3)のように表すことができる。
(数3)
TsetupC=SelDelay2+CLKPulseLimit2−CLK_IBDelay1 (3)
【0114】
なお、SelDelay2は、クロック指定信号SELがシステムクロックCLK_SYS上における適当なポイントからマルチプレクサ110に伝搬するまでの伝搬時間(遅延時間)である。また、CLKPulseLimit2は、Dフリップフロップ130、131のパルス幅制限である。さらに、CLK_IBDelay1は、第2のクロック信号CLK_IBが適当なポイントからマルチプレクサ110に伝搬するまでの伝搬時間(遅延時間)である。
【0115】
ここでは、Dフリップフロップ131の入力データが変化しない事を前提にしており、一般的なフリップフロップライブラリでは出力が安定しているため、CLKPulseLimit2は、マルチプレクサの切り替えで発生したエッジをクロックエッジが抜かさない事だけを保証するように、通常は0以上であればよい。ただし、用いるフリップフロップやANDゲート等のライブラリにより、規定する必要がある場合はCLKPulseLimit2を設定する。
【0116】
なお、セットアップ時間TsetupCが確保できない時刻(時刻=t5以降)に、クロック指定信号SELをLレベルにすると、第2の中間クロックCLK_M2が切り替わる前にマスク信号MASKがHレベルになることになり、出力クロックCLK_Oへハザードが伝搬する可能性がある。その為、セットアップ時間TsetupCがぎりぎり確保できる時刻にクロック指定信号SELをLレベルにする場合が、ハザードを発生させない限界となる。
【0117】
また、ホールド時間TholdDは、フリップフロップのホールドマージンを満たす目的でクロックに対してデータを遅く入れないといけない時間である。ホールド時間TholdDは、式(4)のように表すことができる。
(数4)
TholdD=CLK_IBDelay2+HoldMargin−StopDelay2 (4)
【0118】
なお、CLK_IBDelay2は、第2のクロック信号CLK_IBが適当なポイントからDフリップフロップ130に伝搬するまでの伝搬時間(遅延時間)である。また、HoldMarginは、Dフリップフロップ130のホールドマージンである。さらに、StopDelay2は、停止信号STOPがシステムクロックCLK_SYS上における適当なポイントからDフリップフロップ130に伝搬するまでの伝搬時間(遅延時間)である。
【0119】
なお、ホールド時間TholdDが確保できない時刻(時刻=t7以前)に、停止信号STOPをHレベルにすると、直前の立ち下がりエッジ(時刻=t6:ここではクロック指定信号SELによるハザードで立ち上がりも同時に発生したと仮定し、同期停止信号STOP_Sとマスク信号MASKが同時に変化すると想定する。)でクロック切り替え直後の不安定なクロック期間にマスク信号MASKが変化し、マスク解除動作が正常なタイミングで行われず、出力クロックCLK_Oへハザードが伝搬する可能性がある。その為、ホールド時間TholdDがぎりぎり確保できる時刻に停止信号STOPをHレベルにする場合が、マスクを解除できる限界となる。
【0120】
従って、ハザードを発生させない条件のもとでの切り替え時間Tの最小値を最小時間Tminとすると、第1のクロック信号CLK_IAの周期をTaとして式(5)のようになる。
(数5)
Tmin=Ta×1.5+TsetupA+TholdB+TsetupC+TholdD (5)
【0121】
切り替え時間Tは、切り替え時間T1と切り替え時間T2とを用いて式(6)のように表現できる。以下に、ハザードを発生させない条件のもと、切り替え時間Tを最小に設定することができる、切り替え時間T1と切り替え時間T2の最小値の求め方について説明する。
(数6)
T=T1+T2 (6)
【0122】
まず、切り替え時間T1について説明する。切り替え時間T1は、停止信号STOPをLレベルにしてからクロック指定信号SELを切り替えるまでの時間である。ハザードを発生させない条件のもとでの切り替え時間T1の最小値を最小切り替え時間T1minとすると、式(7)のようになる。
(数7)
T1min=Ta×1.5+TsetupA+TholdB (7)
【0123】
なお、切り替え時間T1が最小切り替え時間T1minよりも小さい場合、例えば、時刻=t4から時刻=t5の間に、クロック指定信号SELを切り替える場合、t4からのホールド時間TholdBが確保されず、出力クロックCLK_Oへハザードが伝搬する可能性がある。
【0124】
次に、切り替え時間T2について説明する。切り替え時間T2は、クロック指定信号SELを切り替えてから停止信号STOPをHレベルにするまでの時間である。ハザードを発生させない条件のもとでの切り替え時間T2の最小値を最小切り替え時間T2minとすると、式(8)のようになる。
(数8)
T2min=TsetupC+TholdD (8)
【0125】
なお、切り替え時間T2が最小切り替え時間T2minよりも小さい場合、例えば、時刻=t6から時刻=t7の間に、クロック指定信号SELを切り替える場合、t6までのホールド時間TholdDが確保されず、出力クロックCLK_Oへハザードが伝搬する可能性がある。
【0126】
ここで、式(7)の右辺の「TsetupA+TholdB」には、第1のクロック信号CLK_IAの遅延時間として、−項のCLK_IADelay1と+項のCLK_IADelay2とが含まれ、互いに打ち消しあう。このため、第1のクロック信号CLK_IAの遅延時間の起点はどこにおいてもよい。
【0127】
同様に、式(8)の右辺の「TsetupC+TholdD」には、第2のクロック信号CLK_IBの遅延時間として、−項のCLK_IBDelay1と+項のCLK_IBDelay2とが含まれ、互いに打ち消しあう。このため、第2のクロック信号CLK_IBの遅延時間の起点はどこにおいてもよい。
【0128】
また、式(7)の右辺の「TsetupA+TholdB」には、データの遅延時間として、+項のStopDelay1と−項のSelDelay1とが含まれる。また、式(8)の右辺の「TsetupC+TholdD」には、データの遅延時間として、+項のSelDelay2と−項のStopDelay2とが含まれる。ここで、停止信号STOPとクロック指定信号SELをそれぞれ生成するフリップフロップのクロックは共にシステムクロックCLK_SYSである。このため、それぞれのフリップフロップに入力されているクロックが合流するところ以前を遅延時間の起点とすればどこを起点としてもよい。
【0129】
また、セットアップ時間TsetupAとホールド時間TholdDは単純にシステムクロックCLK_SYSと第2の中間クロックCLK_M2とのスペック(セットアップ時間+ホールド時間により相殺されるため、特に限定する必要がない任意のクロック信号の起点を定めた時の、Dフリップフロップ130におけるセットアップ時間とホールド時間)で定義できる。ホールド時間TholdBとセットアップ時間TsetupCは同様の値、マスク生成部ANDゲート140及びDフリップフロップ130、131のクロック入力部における直前、直後の動作が保証されるパルス幅から求めることが可能な第2の中間クロックCLK_M2のエッジに対する最低限の時間間隔と定義する。
【0130】
制御信号生成部700は、式(7)、(8)に示すような切り替え時間を設けて各制御信号を供給することにより、ハザードを発生させずに最小時間でのクロック信号の切り替えが可能となる。
【0131】
具体的には、制御信号生成部700には、システムクロック生成部300から、システムクロックCLK_SYSが供給されるため、これをカウンタでカウントするなどして所定のクロック分だけ信号を遅延させる。
【0132】
すなわち、システムクロックCLK_SYSの周期をTsysとして、式(9)を満たすような最小の整数nと、式(10)を満たすような最小の整数mを求める。そして、停止信号STOPをLレベルにしてからシステムクロックCLK_SYSをn回カウントしてクロック指定信号SELを変化させ、m回カウントして停止信号STOPを戻すように信号を生成する。
(数9)
Ta×1.5+TsetupA+TholdB≦Tsys×n (9)
(数10)
TsetupC+TholdD≦Tsys×m (10)
【0133】
なお、セットアップ時間TsetupA、TsetupCやホールド時間TholdB、TholdDについては、厳密にはパス遅延も考慮する必要があるが、システムクロックCLK_SYSと第1のクロック信号CLK_IAとが共に適当なポイントで同期しているとみなして検証すれば、STA(Static Timing Analysis)ツールなどを用いて簡単に求めることができる。これは、セットアップ時間とホールド時間を加算する計算式になっているのでクロック遅延が相殺されるためである。
【0134】
なお、上述の例では、ダイナミックリコンフィギュラブルハードウェア200のハードウェア構成を切り替える時間を考慮していないが、同期化したマスク信号MASKを用いれば、この動作に同期して切り替えることに困難はない。
【0135】
(クロック信号の反転動作)
次に、図8に示すタイムチャートを用いて、図2に示すクロック供給回路におけるクロック信号の反転動作を説明する。なお、理解を容易にするため、クロック指定信号SELはHレベル(第1のクロック信号CLK_IAを指定)に固定した。従って、第1の中間クロックCLK_M1は、第1のクロック信号CLK_IAと同じ信号となるため図8に示さない。
【0136】
まず、図8のタイムチャートに示される各信号について簡単に説明する。なお、説明済の信号については、ここでは説明を省略する。
【0137】
第2の中間クロックCLK_M2は、出力クロックCLK_Oを生成するためのクロック信号であり、第1の中間クロックCLK_M1そのもの、又は、信号レベルを反転させた信号である。また、クロック反転信号INVERTは、第1の中間クロックCLK_M1の信号レベルを反転させるか否かを指定する信号であり、制御信号生成部700から供給される。
【0138】
次に、各時刻におけるクロック供給回路100の動作を説明する。
【0139】
時刻がt1までは、停止信号STOPはHレベルであり、このため同期停止信号STOP_S、マスク信号MASKは全てHレベルである。また、クロック反転信号INVERTはHレベルのため、第2の中間クロックCLK_M2として第1の中間クロックCLK_M1(第1のクロック信号CLK_IA)がそのまま出力される。また、マスク信号MASKはHレベルのため、ANDゲート140は、出力クロックCLK_Oとして第1のクロック信号CLK_IAを出力する。
【0140】
時刻がt1において、制御信号生成部700は停止信号STOPをLレベルにする。
【0141】
時刻がt2になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち上がりエッジが発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはLレベルとなる。
【0142】
時刻がt3になった時点で、第1のクロック信号CLK_IA(第2の中間クロックCLK_M2)の立ち下がりエッジが発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはLレベルとなる。このため、ANDゲート140は、出力クロックCLK_OとしてLレベルの信号を出力する。
【0143】
時刻がt4になると、制御信号生成部700はクロック反転信号INVERTをLレベルにする。このため、第2の中間クロックCLK_M2は、第1の中間クロックCLK_M1(第1のクロック信号CLK_IA)を反転したクロック信号に切り替わる。
【0144】
時刻がt5になると、制御信号生成部700は停止信号STOPをHレベルにする。
【0145】
時刻がt6になった時点で、第2の中間クロックCLK_M2の立ち上がりエッジ(第1のクロック信号CLK_IAの立ち下がりエッジ)が発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはHレベルになる。
【0146】
時刻がt7になった時点で、中間クロックCLK_Mの立ち下がりエッジ(第1のクロック信号CLK_IAの立ち上がりエッジ)が発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはHレベルとなる。このため、ANDゲート140は、出力クロックCLK_Oとして第1のクロック信号CLK_IAを反転したクロックを出力する。
【0147】
以上のように、制御信号生成部700がクロック反転信号INVERTのレベルを第1のクロック信号CLK_IAと非同期に変化させても、ダイナミックリコンフィギュラブルハードウェア200に供給するクロック信号をシームレスに反転させることができる。
【0148】
なお、クロック信号の反転時間については、前述の異種クロック信号への切り替え時間と同様に考えることができる。すなわち、クロック反転信号INVERTのレベルを変化させるタイミングを、クロック指定信号SELのレベルを変化させるタイミングと考えればよい。従って、ここでは説明を省略する。
【0149】
(変形例)
上記の実施の形態では、制御信号生成部700は、制御信号として、停止信号STOPと、クロック指定信号SELと、クロック反転信号INVERTとを全て生成し、クロック供給回路100に供給していた。
【0150】
しかし、例えば、停止信号STOPとクロック指定信号SELは、クロック信号の切り替えのタイミングと、クロック信号の種類とを指定するクロック切り替え指示信号SW_CLKに基づいて、クロック供給回路101で生成することも可能である。以下、変形例に係るクロック供給回路の構成と動作について説明する。
【0151】
図9は、変形例に係るクロック供給回路101が適用されるシステムの構成図である。
【0152】
図1に示したシステムとは、制御信号生成部から出力されている制御信号のみが相違する。
【0153】
制御信号生成部701は、クロック切り替え指示信号SW_CLKと、クロック反転信号INVERTとをクロック供給回路101に供給する。
【0154】
次に、図10を用いて、変形例に係るクロック供給回路101の構成を詳細に説明する。
【0155】
図10に示すように、クロック供給回路101は、マルチプレクサ110と、反転回路120と、Dフリップフロップ130、131と、ANDゲート140と、第1の遅延回路150と、第2の遅延回路151と、XNORゲート160と、を備える。
【0156】
マルチプレクサ110の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。一方の入力端子は、第1のクロック信号生成部400に接続され、他方の入力端子は、第2のクロック信号生成部600に接続される。また、制御端子は、第1の遅延回路151の出力端子に接続され、出力端子は、反転回路120の入力端子に接続される。
【0157】
マルチプレクサ110は、一方の入力端子から第1のクロック信号CLK_IAが供給され、他方の入力端子から第2のクロック信号CLK_IBが供給され、制御端子から第2の遅延信号DELAY2が供給される。
【0158】
なお、マルチプレクサ110は、制御端子に入力された第2の遅延信号DELAY2がHレベルのとき第1のクロック信号CLK_IAを、Lレベルのとき第2のクロック信号CLK_IBを、第1の中間クロックCLK_M1として出力端子から出力する。
【0159】
反転回路120の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。入力端子は、マルチプレクサ110の出力端子に接続され、反転制御端子は、制御信号生成部700に接続される。出力端子は、Dフリップフロップ130のクロック入力端子と、Dフリップフロップ131のクロック入力端子と、ANDゲート140の一方の入力端子とに接続される。
【0160】
反転回路120は、入力端子から第1の中間クロック信号CLK_M1が供給され、反転制御端子からクロック反転信号INVERTが供給される。また、反転回路120は、第2の中間クロック信号CLK_M2を出力端子から出力する。
【0161】
なお、反転回路120は、クロック反転信号INVERTがHレベルのとき第1の中間クロック信号CLK_M1をそのまま出力端子から出力し、Lレベルのとき第1の中間クロック信号CLK_M1を反転して出力端子から出力する。
【0162】
Dフリップフロップ130の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。データ入力端子は、XNORゲート160の出力端子に接続され、クロック入力端子は、反転回路120の出力端子に接続され、出力端子は、Dフリップフロップ131のデータ入力端子に接続される。
【0163】
Dフリップフロップ130は、データ入力端子から停止信号STOPが供給され、クロック入力端子から第2の中間クロックCLK_M2が供給される。また、Dフリップフロップ130は、同期停止信号STOP_Sを出力端子から出力する。
【0164】
Dフリップフロップ131の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。データ入力端子は、Dフリップフロップ130の出力端子に接続され、クロック入力端子は、反転回路120の出力端子に接続され、出力端子は、ANDゲート140の一方の入力端子に接続される。
【0165】
Dフリップフロップ131は、データ入力端子から同期停止信号STOP_Sが供給され、クロック入力端子から第2の中間クロックCLK_M2が供給される。また、Dフリップフロップ131は、マスク信号MASKを出力端子から出力する。
【0166】
ANDゲート140の構成についてはここでは説明を省略し、各端子の接続先と動作のみ説明する。一方のデータ入力端子は、Dフリップフロップ131の出力端子に接続され、他方の入力端子は、反転回路120の出力端子に接続され、出力端子は、ダイナミックリコンフィギュラブルハードウェア200の図示しないクロック入力端子に接続される。
【0167】
ANDゲート140は、一方のデータ入力端子からマスク信号MASKが供給され、他方の入力端子から第2の中間クロックCLK_M2が供給される。また、ANDゲート140は、第2の中間クロックCLK_M2をマスク信号MASKでマスクしたクロック信号である出力クロックCLK_Oを出力端子から出力する。
【0168】
第1の遅延回路150は、カウンタ、Dフリップフロップ、Dラッチ、メモリなどを構成する論理ゲートなどから構成される遅延回路である。第1の遅延回路150は、1つの入力端子と、1つのクロック入力端子と、1つの出力端子とを備える。第1の遅延回路150は、入力端子に供給された信号を第1の遅延時間D1だけ遅延させ、出力端子から出力する。
【0169】
入力端子は、制御信号生成部701に接続され、クロック入力端子は、システムクロック生成部300に接続され、出力端子は、XNORゲート160の一方の入力端子に接続される。
【0170】
第1の遅延回路150は、入力端子からクロック切り替え指示信号SW_CLKが供給され、クロック入力端子からシステムクロックCLK_SYSが供給される。第1の遅延回路150は、クロック切り替え指示信号SW_CLKを第1の遅延時間D1だけ遅延させた第1の遅延信号DELAY1を出力端子から出力する。
【0171】
第2の遅延回路151は、入力端子から供給された信号を第2の遅延時間D2だけ遅延させ、出力端子から出力する遅延回路である。第2の遅延回路151は、第1の遅延回路150と同様の構成であるが、遅延時間が異なる。
【0172】
入力端子は、制御信号生成部701に接続され、クロック入力端子は、システムクロック生成部300に接続され、出力端子は、マルチプレクサ110の制御端子に接続される。
【0173】
第2の遅延回路151は、入力端子からクロック切り替え指示信号SW_CLKが供給され、クロック入力端子からシステムクロックCLK_SYSが供給される。また、第2の遅延回路151は、クロック切り替え指示信号SW_CLKを第2の遅延時間D2だけ遅延させた第2の遅延信号DELAY2を出力端子から出力する。
【0174】
XNORゲート160は、2つの入力端子から供給された信号に対応する値の排他的論理和を求め、求めた排他的論理和を反転した値に対応する信号を出力端子から出力する論理ゲートである。XNORゲート160は、2つの入力端子と、1つの出力端子とを備える。
【0175】
一方の入力端子は、制御信号生成部701に接続され、他方の入力端子は、第1の遅延回路150の出力端子に接続され、出力端子は、Dフリップフロップ130のデータ入力端子に接続される。
【0176】
XNORゲート160は、一方の入力端子からクロック切り替え指示信号SW_CLKが供給され、他方の入力端子から第1の遅延信号DELAY1が供給される。また、XNORゲート160は、停止信号STOPを出力端子から出力する。
【0177】
次に、図11に示すタイムチャートを用いて、図10に示すクロック供給回路における異種クロック信号への切り替え動作を説明する。なお、システムクロックCLK_SYSは第1の遅延回路150と第2の遅延回路151とで用いられるだけであり、他の回路に影響を与えないため、ここでは理解を容易にするため省略する。なお、理解を容易にするため、クロック反転信号INVERTはHレベル(反転なし)に固定した。
【0178】
まず、図11のタイムチャートに示される各信号について簡単に説明する。なお、既に説明した信号については、ここでは説明しない。
【0179】
クロック切り替え指示信号SW_CLKは、Hレベルで第1のクロック信号CLK_IA設定を指示し、Lレベルで第2のクロック信号CLK_IB設定を指示する信号である。
【0180】
第1の遅延信号DELAY1は、クロック切り替え指示信号SW_CLKを遅延時間D1だけ遅延させた信号であり、遅延させたエッジで停止信号STOPをオフする(Hレベルに戻す)役割を果たす信号である。第2の遅延信号DELAY2は、クロック切り替え指示信号SW_CLKを遅延時間D2だけ遅延させた信号であり、マルチプレクサ110から出力されるクロック信号を選択する役割を果たす信号である。
【0181】
次に、各時刻におけるクロック供給回路101の動作を説明する。
【0182】
時刻がt1までは、クロック切り替え指示信号SW_CLKはHレベルであり、停止信号STOP、同期停止信号STOP_S、マスク信号MASK、第1の遅延信号DELAY1、第2の遅延信号DELAY2は全てHレベルである。また、第2の遅延信号DELAY2はHレベルであるため、第2の中間クロックCLK_M2は第1のクロック信号CLK_IAとなる。また、マスク信号MASKはHレベルのため、ANDゲート140は、出力クロックCLK_Oとして第1のクロック信号CLK_IAを出力する。
【0183】
時刻がt1において、制御信号生成部701がクロック切り替え指示信号SW_CLKをLレベルにすると、停止信号STOPがLレベルになる。
【0184】
時刻がt2になった時点で、第2の中間クロックCLK_M2の立ち上がりエッジが発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはLレベルとなる。
【0185】
時刻がt3になった時点で、第2の中間クロックCLK_M2の立ち下がりエッジが発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはLレベルになる。このため、ANDゲート140は、出力クロックCLK_OとしてLレベルの信号を出力する。
【0186】
時刻がt4になると、t1から第2の遅延時間D2が経過し、第2の遅延信号DELAY2がLレベルになる。このため、第2の中間クロックCLK_M2は、第2のクロック信号CLK_IBに切り替わる。
【0187】
時刻がt5になると、t1から第1の遅延時間D1が経過し、第1の遅延信号DELAY1がLレベルになる。このため、停止信号STOPがHレベルに戻る。なお、ここでは遅延時間D1は遅延時間D2よりも大きい値としているが、遅延時間D1の方が小さい値となることもある。これらの遅延時間は、上述の異種クロック信号への切り替え動作で示した方法により求めることができる。
【0188】
時刻がt6になると、第2の中間クロックCLK_M2の立ち上がりエッジが発生する。このため、Dフリップフロップ130の内部データが更新され、同期停止信号STOP_SはHレベルに戻る。
【0189】
時刻がt7になった時点で、第2の中間クロックCLK_M2の立ち下がりエッジが発生する。このため、Dフリップフロップ131の内部データが更新され、マスク信号MASKはHレベルになる。そして、ANDゲート140は、出力クロックCLK_Oとして第2のクロック信号CLK_IBを出力する。
【0190】
以上のような動作により、クロック供給回路101は、クロック切り替え指示信号SW_CLKに基づいて、自ら停止信号STOPとクロック指定信号SELとを生成することができる。かかる構成であっても、ダイナミックリコンフィギュラブルハードウェア200に供給するクロック信号をシームレスに切り替える効果が得られる。
【0191】
なお、この発明は上記実施形態及び上記変形例に限定されず、種々の変形及び応用が可能である。
【0192】
上記変形例では、第1の遅延信号DELAY1、第2の遅延信号DELAY2、停止信号STOPを生成するために、第1の遅延回路150と、第2の遅延回路151と、XNORゲート160を用いた。しかし、これらの信号のレベルを切り替えるタイミングを制御できれば構成は任意である。
【0193】
また、上記実施の形態では、2つのクロック信号を切り替える場合について説明したが、3つ以上のクロック信号を切り替えるものであってもよい。例えば、3つのクロック信号を切り替える場合、クロック切り替え指示信号SW_CLKは、2ビットのディジタル信号から構成される。そして、遅延回路150、151、XNORゲート160を、それぞれ2つ用意する。
【0194】
そして、別途ANDゲートを用意し、2つの入力端子に、2つのXNORゲート160の出力を接続し、出力端子をDフリップフロップ130のデータ入力端子に接続すればよい。また、マルチプレクサ110は、2つの制御端子を備え、3つの入力端子を備えればよい。
【0195】
また、本実施の形態では、メタステーブルが発生した場合に、ダイナミックリコンフィギュラブルハードウェア200に供給するクロック信号が不安定な値とならないように、Dフリップフロップを直列に2段接続する構成とした。しかし、例えば、クロック信号の周波数が高い場合は、メタステーブルの発生確率に応じて、さらに3段、4段とDフリップフロップの段数を増やしてもよい。
【0196】
また、変形例では、クロック切り替え指示信号SW_CLKに基づいて、停止信号STOPと、クロック指定信号SELとを生成する例を示した。しかし、クロック切り替え指示信号SW_CLKに基づいて、停止信号STOPと、クロック反転信号INVERTとを生成するようにしてもよい。
【図面の簡単な説明】
【0197】
【図1】本発明の実施の形態に係るクロック供給回路が適用されるシステムの構成図である。
【図2】本発明の実施の形態に係るクロック供給回路の構成図である。
【図3】図2に示すクロック供給回路におけるクロック信号の停止動作を説明するためのタイムチャートである。
【図4】分周クロック生成用信号生成部の一例を示すブロック図である。
【図5】分周クロック生成用信号から分周クロック信号を生成する動作を説明するためのタイムチャートである。
【図6】図2に示すクロック供給回路における異種クロック信号への切り替え動作を説明するためのタイムチャートである。
【図7】図2に示すクロック供給回路を用いて異種クロック信号へ切り替える場合の切り替え時間を説明するためのタイムチャートである。
【図8】図2に示すクロック供給回路におけるクロック信号の反転動作を説明するためのタイムチャートである。
【図9】変形例に係るクロック供給回路が適用されるシステムの構成図である。
【図10】変形例に係るクロック供給回路の構成図である。
【図11】図10に示すクロック供給回路における異種クロック信号への切り替え動作を説明するためのタイムチャートである。
【符号の説明】
【0198】
100、101 クロック供給回路
110 マルチプレクサ
120 反転回路
130、131、132 Dフリップフロップ
140 ANDゲート
150 第1の遅延回路
151 第2の遅延回路
160 XNORゲート
200 ダイナミックリコンフィギュラブルハードウェア
300 システムクロック生成部
400 第1のクロック信号生成部
500 分周クロック生成用信号生成部
600 第2のクロック信号生成部
700、701 制御信号生成部

【特許請求の範囲】
【請求項1】
クロック指定信号に応答して、供給された複数のクロック信号のうちクロック指定信号により指定されたクロック信号を出力するマルチプレクサと、
クロック反転信号に応答して、前記マルチプレクサが出力したクロック信号をそのまま、又は、信号レベルを反転させて出力するクロック反転部と、
クロック信号の出力を停止するタイミングとクロック信号の出力の停止を解除するタイミングとを指示する出力停止信号と、前記クロック反転部が出力したクロック信号と、が供給され、前記出力停止信号が指示する停止タイミングと解除タイミングとをそれぞれ前記クロック信号のエッジに同期させることにより、前記クロック反転部が出力するクロック信号をマスクするためのマスク信号を生成するマスク信号生成部と、
前記クロック反転部が出力したクロック信号を前記マスク信号生成部が生成したマスク信号でマスクすることによりマスク済クロック信号を生成し、ハードウェアに供給するマスク部と、
を備える、ことを特徴とするクロック供給回路。
【請求項2】
前記マスク信号生成部は、それぞれデータ入力端子とクロック入力端子とデータ出力端子とを備えた、エッジトリガタイプの第1のDフリップフロップと、第1のDフリップフロップとは逆のトリガ極性を有するエッジトリガタイプの第2のDフリップフロップとから構成され、第1と第2のDフリップフロップはクロック入力端子に前記クロック反転部が出力したクロック信号が供給され、第1のDフリップフロップはデータ入力端子に出力停止信号が供給され、第2のDフリップフロップはデータ入力端子に第1のDフリップフロップのデータ出力端子から出力された信号が供給され、第2のDフリップフロップはデータ出力端子からマスク信号を出力する、
ことを特徴とする請求項1に記載のクロック供給回路。
【請求項3】
前記出力停止信号は、前記クロック指定信号が第1のクロック信号から第2のクロック信号への切り替えを指示する際に、第1のクロック信号の周期を1.5倍した時間に所定のセットアップ時間TsetupAと所定のホールド時間TholdBとを加えた時間以上切り替えタイミングよりも前のタイミングを停止タイミングとして指示し、前記切り替えタイミングよりも所定のセットアップ時間TsetupCに所定のホールド時間TholdDを加えた時間以上後のタイミングを解除タイミングとして指示する、
ことを特徴とする請求項1に記載のクロック供給回路。
【請求項4】
前記出力停止信号は、前記クロック反転信号がクロック信号の信号レベルを反転することを指示又は信号レベルの反転を解除することを指示する際に、該指示のタイミングよりも、クロック信号の周期を1.5倍した時間に所定のセットアップ時間TsetupAと所定のホールド時間TholdBとを加えた時間以上前のタイミングを停止タイミングとして指示し、前期指示のタイミングから所定のセットアップ時間TsetupCに所定のホールド時間TholdDを加えた時間が経過したタイミングを解除タイミングとして指示する、
ことを特徴とする請求項1に記載のクロック供給回路。
【請求項5】
クロック信号の切り替えを指示するクロック切り替え指示信号に応答して前記出力停止信号を生成する停止信号生成部と、
前記クロック切り替え指示信号に応答して前記クロック指定信号を生成するクロック指定信号生成部と、をさらに備える、
ことを特徴とする請求項1に記載のクロック供給回路。
【請求項6】
前記停止信号生成部は、供給されたクロック切り替え指示信号を遅延させて出力する第1の遅延回路と、前記クロック切り替え指示信号と前記第1の遅延回路から出力された信号とが供給され、供給された信号の信号レベルが一致する状態から一致しない状態に変化するタイミングを停止タイミングとし、一致しない状態から一致する状態に変化するタイミングを解除タイミングとして指示する出力停止信号を生成する一致回路と、を備え、
前記クロック指定信号生成部は、供給されたクロック切り替え指示信号を遅延させてクロック指定信号として出力する第2の遅延回路を備える、
ことを特徴とする請求項5に記載のクロック供給回路。
【請求項7】
クロック信号を分周して分周クロック生成用信号を生成する分周クロック生成用信号生成部、をさらに備え、
前記マスク信号生成部は、前記出力停止信号に代えて前記分周クロック生成用信号生成部が生成した分周クロック生成用信号と、前記クロック反転部が出力したクロック信号と、が供給され、分周クロック生成用信号のエッジを前記クロック信号のエッジに同期させることによりマスク信号を生成する、
ことを特徴とする請求項1に記載のクロック供給回路。
【請求項8】
前記分周クロック生成用信号生成部は、
クロック信号のエッジをカウントし、カウント値をディジタルデータとして出力するカウンタと、
前記カウンタが出力したディジタルデータに基づいて、前記クロック信号を分周した分周クロック生成用信号を生成し、出力する信号生成部と、
前記カウンタをリセットするカウント値を示すリセット値を出力するレジスタと、
前記レジスタが出力したリセット値と、前記カウンタが出力したディジタルデータが示すカウント値とを比較し、リセット値とカウント値とが一致する場合に、前記カウンタをリセットするリセット信号を前記カウンタに出力する比較部と、を備える、
ことを特徴とする請求項7に記載のクロック供給回路。
【請求項9】
請求項1乃至8に記載のクロック供給回路と、
前記ハードウェアを構成し、前記クロック供給回路からクロック信号が供給されるダイナミックリコンフィギュラブルハードウェアと、
から構成されるダイナミックリコンフィギュラブル回路。
【請求項10】
クロック指定信号に応答して、供給された複数のクロック信号のうちクロック指定信号により指定されたクロック信号を出力する指定クロック出力ステップと、
クロック反転信号に応答して、前記指定クロック出力ステップで出力したクロック信号をそのまま、又は、信号レベルを反転させて出力するクロック反転ステップと、
出力停止信号が指示するクロック信号の出力を停止するタイミングとクロック信号の出力の停止を解除するタイミングとをそれぞれ前記クロック反転ステップで出力したクロック信号のエッジに同期させることによりマスク信号を生成するマスク信号生成ステップと、
前記クロック反転ステップで出力したクロック信号を前記マスク信号生成ステップで生成したマスク信号でマスクすることによりマスク済クロック信号を生成するマスクステップと、
前記マスクステップで生成したマスク済クロック信号を、ハードウェアに供給するクロック信号供給ステップと、
を備える、ことを特徴とするクロック供給方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate


【公開番号】特開2009−9544(P2009−9544A)
【公開日】平成21年1月15日(2009.1.15)
【国際特許分類】
【出願番号】特願2008−7985(P2008−7985)
【出願日】平成20年1月17日(2008.1.17)
【出願人】(000219967)東京エレクトロン株式会社 (5,184)
【Fターム(参考)】