(57)【特許請求の範囲】
【請求項１】
入力クロック信号に応答して、出力クロック信号を発生するためのクロック発生回路であって、
前記入力クロック信号の単一のアクティブ・エッジの発生に応答して、出力クロック信号エッジのシーケンスを発生するためのリセット可能なラッチ回路、
前記ラッチ回路は、前記入力クロック信号の前記アクティブ・エッジの検出に応答して、検出回路から信号入力を受信するために接続された第１の入力を含んでおり、それにより前記ラッチ回路の第１の方向に第１の出力遷移を生じ、
前記ラッチ回路の出力は、遅延手段と第１のアクティブ・エッジ検出器によって、前記ラッチ回路の他の入力に接続され、前記遅延手段によって与えられた所定の遅延の後、第１の方向における出力遷移の検出に応答して、信号入力を、前記第１の方向から反対の方向にラッチ出力遷移を生じる前記他の入力に与え、
第２のアクティブ・エッジ検出器に結合された遅延手段を含み、所定の方向に前記ラッチ回路の遅延された出力遷移を検出し、各検出された遷移に応答して、それぞれの遅延増加後、前記ラッチ回路の前記第１の入力へ第１の方向にラッチ回路の他の出力遷移を生じる更なる入力を加える回路、及び
出力クロック信号エッジの所定の数の発生後に、前記ラッチ回路の動作を禁止するための回路、
を有することを特徴とするクロック発生回路。
【請求項２】
各々の前記遅延手段は、前記第１と第２のアクティブ・エッジ検出器の各々に結合された出力を有する共通の遅延手段によって与えられ、且つ前記第１と第２のアクティブ・エッジ検出器の一方は立ち上り検出器であり、他方は立ち下り検出器であることを特徴とする請求項１に記載のクロック発生回路。
【請求項３】
前記禁止回路は、出力クロック信号のエッジを計数するための計数回路を含み、前記ラッチ回路において発生する前記エッジは、所定の数を有する計数回路の計数の比較に基づいて比較器の出力に応答して禁止されることを特徴とする請求項１または請求項２に記載のクロック発生回路。
【請求項４】
前記ラッチ回路からの遅延した出力は、出力クロック信号エッジの所定の数の発生後、前記禁止回路によってディスエーブルされるゲート回路によってラッチ回路の前記第１の入力に接続されることを特徴とする請求項１に記載のクロック発生回路。
【請求項５】
前記所定の遅延の少なくとも１つは、複数の遅延素子と可変遅延回路段の伝播遅延を設定するために、複数の遅延素子の間で選択する選択回路を有する可変遅延回路段と直列の固定遅延回路段によって具現化されることを特徴とする請求項１または請求項２に記載のクロック発生回路。
【請求項６】
前記可変遅延回路段は、さらに、前記可変遅延回路段の前記選択回路に結合され、前記複数の遅延素子の各々と関連する複数のプログラム可能な素子を有し、前記プログラム可能な素子は、その関連する素子が前記可変遅延回路段に直列に接続されるべきであるか否かを表示することを特徴とする請求項５に記載のクロック発生回路。
【請求項７】
更に、複数のマルチプレックサを有し、その各々は関連したプログラム可能な素子に接続された第１の入力を有し、その各々は関連した選択ラインに接続された第２の入力を有し、且つその各々はテストモード入力に応答して、その関連した遅延素子が前記可変遅延回路段に直列に接続されるべきであるか否かを決定するためその関連した選択ラインまたはその関連したプログラム可能な素子の何れかを選択するテストモード入力に結合された制御入力を有することを特徴とする請求項５または請求項６に記載のクロック発生回路。
【請求項８】
シーケンスを禁止することによって入力クロック信号に応答する出力クロック信号を発生する方法であって、
リセット可能なラッチ回路を動作して、前記入力クロック信号の単一のアクティブ・エッジの発生に応答して、一連の出力クロック信号エッジを発生するステップと、
前記入力クロック信号の前記アクティブ・エッジの検出に応答して、前記ラッチ回路の第１の入力に信号入力を与え、それによって、第１の方向に前記ラッチ回路の第１の出力遷移を生じるステップ、
所定の遅延の後、信号入力を前記ラッチ回路の他の入力に与えることによって、第１の方向における出力遷移の第１のアクティブ・エッジ検出器による検出に応答して、前記第１の方向と逆の方向にラッチ回路の出力遷移を生じるステップ、
その後、所定の方向における前記ラッチ回路の出力遷移の第２のアクティブ・エッジ検出器による検出に応答して、所定の遅延の後、ラッチ回路の前記第１の入力へ更なる入力を与え、前記シーケンスの繰り返しを禁止するために、第１の方向に前記ラッチ回路の他の出力遷移を生じるステップ、及び
前記シーケンスの繰返しの選択された数の後、前記ラッチ回路の動作を禁止して、出力クロック信号エッジの所定の数を発生するステップ、
を有することを特徴とする方法。
【請求項９】
入力クロック周波数の乗算である周波数を有する出力クロック信号を発生するクロック乗算回路であって、
（ａ）入力クロックのアクティブ・エッジを検出する検出回路、
（ｂ）遅延ラインを含み、出力クロック・エッジによって規定された出力クロック信号を与えるエッジ発生回路、
（ｃ）前記エッジ発生回路は、前記入力クロックのアクティブ・エッジの検出に応答して、前記アクティブ・エッジに相当する第１の出力クロック・エッジを発生し、その後、前記遅延ラインを介して、前記第１の出力クロック・エッジと次のｎ−１出力クロック・エッジを連続的にフィードバックすることによって、ｎより多くの出力クロック・エッジ（ただし、ｎは少なくとも２）を発生し、且つ
（ｄ）第１の出力クロック・エッジの後、ｎ個の出力クロック・エッジの発生後、前記エッジ発生回路を禁止するために、出力クロック・エッジの発生に応答する禁止回路、
を有することを特徴とするクロック乗算回路。
【請求項１０】
クロック発生回路の出力発生回路の出力に、その入力に受信された入力クロック信号に応答する第１の出力クロック信号を発生するためのクロック発生回路であって、
前記クロック発生回路の入力に接続された入力を有し、遅延入力クロック信号をプリセットするための出力を有する第１の遅延回路段、
第１のラッチ入力及び第２のラッチ入力を有し、且つ前記クロック発生回路の出力に接続された出力を有するラッチ、
前記クロック発生回路の入力に接続された入力を有し、且つ前記第１のラッチ入力に接続された出力を有し、前記入力クロック信号の第１の遷移に応答する前記ラッチをセットするためのセット回路、及び
前記第１の遅延回路段の出力に接続された入力を有し、且つ前記第２のラッチ入力に接続された出力を有し、遅延された入力クロック信号の第１の遷移に応答するラッチをリセットするためのリセット回路、
を有することを特徴とするクロック発生回路。
【請求項１１】
更に、前記第１の遅延回路段の出力に接続された入力を有し、前記リセット回路に接続された出力を有する第２の遅延回路段、及び
前記第２の遅延回路段の出力に接続された入力を有し、前記リセット回路に接続された出力を有する第３の遅延回路段を有し、
前記セット回路は、前記クロック入力における第１の遷移及び前記第２の遅延回路段の出力における第１の遷移を検出するための、及びそれに応答する前記ラッチをセットするための回路を有し、且つ
前記リセット回路は、前記第１の遅延回路段の出力における第１の遷移及び前記第３の遅延回路段の出力における第１の遷移を検出するための、及びそれに応答する前記ラッチをリセットするための回路を有することを特徴とする請求項１０に記載のクロック発生回路。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、集積回路の分野に属する。さらに具体的には、集積回路における内部クロックの発生と、その分配機構とに関するものである。
【０００２】
【従来の技術と発明が解決しようとする課題】
今日の多くの集積回路は同期型であり、外部クロック信号に制御されて内部動作が実行される。高速クロックによって動作する高集積度の論理回路の例としては、マイクロプロセッサ、マイクロコンピュータ、数値演算コ・プロセッサなどがある。もちろん、メモリや、より小規模な論理回路などの他のより簡単な回路も外部クロック信号に制御されて動作するようにすることもできる。このような回路を用いたシステムのクロック信号は、独立した水晶発振回路を用いて発生させることもできるし、あるいは発振回路が他の論理動作回路とともに同じ集積回路チップ上に集積化されている場合には、水晶をクロック制御デバイズ自身の端子に接続することによって発生させるようにすることもできる。
【０００３】
当該技術において良く知られているように、クロック制御集積回路がその機能を実行する速度は一般にクロック信号の周波数に大きく依存している。これは、特にディジタル回路では、チップ内部の動作は直接あるいは間接に（周波数分周器、フェーズ・ロックド・ループなどを介して）受信クロック信号によって制御されるからである。そのような例として、例えばマイクロプロセッサをとってみると、回路がある与えられた時間内に実行することができる命令の数は、クロック信号の周波数によって変わる。
すべての動作機能がクロック周波数だけで決まるわけではなく、ある機能の動作速度はそれ以外の要因によっても制限される。しかし、特に、マイクロプロセッサや数値演算コ・プロセッサなどの複雑なクロック制御回路では、回路動作性能がクロック周波数に依存している部分がある。例えば、ある種の入出力動作は、クロック周波数によってよりも、むしろ、バスインターフェースの仕様によって制限されるが、一方、重要な中心的部分、すなわちＣＰＵ部分は、その動作速度がクロック周波数に直接に依存している。従って、このような回路においては、回路のある部分（例えば、マイクロプロセッサの中心的な部分、すなわちＣＰＵ部分）には高周波クロックを供給し、また、他の部分（例えば、バスインターフェース）にはより低い周波数のクロックを供給することによって利点を得ることができる。マイクロプロセッサの分野におけるこのような望ましい方法は、特にコア部分のクロック速度がバスインターフェースクロック速度の２倍であるときに、一般に倍速クロック法と呼ばれている。
【０００４】
入力されたクロック信号から、いろいろな周波数のクロック信号を導き出すための方法として、従来は、フェーズ・ロックド・ループ（ＰＬＬ）と１つあるいはそれ以上の数の周波数分周器とを組み合わせた回路が用いられていた。このような構成では、生成される出力クロック信号はＰＬＬによって入力信号を基準として生成されるので、出力クロックの安定性は入力信号に依存している。一方、出力からのフィードバック・ループにおける周波数分周比によって出力クロック信号と入力クロックとの間の相対的周波数が決定される。ところで、ＰＬＬ回路は瞬間的には入力クロック周波数の変化に対して応答することができず、新しい入力クロック信号周波数に対してロックするまでには、いくつかの遷移サイクルが必要である。ユーザがハードウェア・スイッチを介してより高速なクロック速度（例えば、８ＭＨｚ  の代わりに２０ＭＨｚ  ）に切り替えて使用することができる“ターボ”モードのパーソナル・コンピュータやワークステーションが出現したことによって、すばやく内部動作周波数を変化させる能力が、近年、重要となってきている。しかし、従来の技術では、ＰＬＬ回路が新しい周波数にロックするまでに過渡サイクルを必要とするので、ターボ・モードを選択する際に、あるいはターボ・モードから抜け出る際に、システムが誤動作を起こす可能性があった。
【０００５】
さらに、ＰＬＬをベースとした回路は一般に動作電源電圧範囲に制約があり、（主として、電圧制御発振器の動作において制約を生じる）、そのため、広い電源電圧範囲で動作させる回路に用いるには適していない。最新の製造技術によって、トランジスタのチャンネル長などの物理的サイスが１ミクロンを越えてさらに小さく微細化されるに至ったが、これにつれて、ホット・エレクトロン効果などの信頼性上の問題を回避する必要が生じ、従来より低い電源電圧（例えば、３．３ボルト）を使用することが普通のこととして企図されるようになってきた。従って、従来の５ボルトの電源電圧だけでなく、さらに低い３．３ボルトの電源電圧でも動作できることが、大規模集積回路にとってますます重要となりつつある。異なるクロック周波数を異なる回路部分に供給するための他の既知の技術では、２つの端子を備えさせて、それぞれから異なるクロック周波数の入力を行う。この技術では、例えばインテルの数値演算コ・プロセッサ８０３８７で用いられているように、特別に用意された端子の状態（外部的な配線接続、あるいはオン・チップのボンディング・パッドの配線接続）によって、どちらのクロック端子で受信されるクロック信号を用いるようにするのか、あるいは逆に無視するのかの選択がなされる。
【０００６】
他の倍速クロック手法では、内部周波数分周器を用いて、入力クロック周波数を分周し、この分周されたクロックを低速度で動作する回路に対して供給する。例えば、（入力周波数と比較して）２分の１の周波数のクロックをマイクロプロセッサのバスインターフェースを制御するのに用いることが行われている。このような構成では、周波数分周器は単にクロック周波数を低減するだけでなく、入力クロック信号のデューティ・サイクルおよびリンギング状態の変動を補正する働きがある。入力クロックの不安定性に対するそのような補正は、低速動作回路へ供給される分については実現されるが、入力クロック信号自体には不安定性が残っているので、入力クロックを直接にＣＰＵあるいはコア部の高速動作回路に対して用いることは不適当である。入力クロック信号の、ある位相がある種の内部コア動作を実行するのに、短すぎる可能性が出てくる（不安定であるときは、特にそうである）。
【０００７】
マイクロプロセッサや、数値演算コ・プロセッサのすべてが必ずしも２倍クロック・モードで動作するわけではない。例えば、比較的低速のコンピュータやワークステーションでは、単一の低い周波数クロック（例えば、８ＭＨz 程度）だけが利用可能で、このような低速クロック周波数でバス動作とＣＰＵやコアの両方の動作をさせるようになっている。このような環境においては、比較的低い周波数の入力クロック周波数をさらに分周させてバスインターフェースクロックを生成すると、深刻な性能低下を招くことになる。従って、このような応用においては、２倍クロック・モードで集積回路を動作させるのは望ましくない。
従来は、ウェーハの製造プロセスを開始する段階において、集積回路を倍速クロック型かあるいは非倍速クロック型のどちらにするかがすでに決定されており、顧客の要望に従ってそれぞれが必要な数量だけ製造されていた。ところが、回路の種類が増加するに従って、それらの製造品目を維持することは価格的に困難となってくる。特に、回路的な要求あるいは製造歩留がばらつく時には、なおさらのことである。従って、倍速クロックおよび非倍速クロックの両方の機能を有する集積回路を提供することが望まれている。
【０００８】
従来技術においては、制御信号によって複数のクロック信号のどれを集積回路の、どの機能部分（コア・ユニットやバス・インターフェース・ユニットなど）の動作制御に対して用いるかが選択される。ある特定の回路が複数のクロックの中のどれかに応答するように選択ができるようにするには、選択されたクロック信号に応答する能力を備えた比較的複雑な回路を必要とする。そのような回路は、回路動作速度を制御するのに用いられるクロックに対しての経路となってしまうか、あるいは経路に影響を与えるので、このような選択回路は回路の中の最もクリティカルなタイミング経路に必ず影響を与えることとなる。
さらに、マイクロプロセッサなどの集積回路に対する、従来の内部クロック分配技術では、外部から受信した信号に基づいて生成した内部クロックのデューティ・サイクルを最適化することは極めて困難であった。その理由は、いろいろなタイミングの仕様に適合させるために、外部クロックのデューティ・サイクルにはいろいろなものが用いられるからである。また、スイッチングが高速で行われるようになるに従ってリンギングやその他の雑音の影響を受けやすくなる。従って、マイクロプロセッサのクロック周波数が２５ＭＨｚ  へ増大し、さらにはそれ以上に増大するにつれて、外部クロック信号のリンギングやその他の雑音の影響を受けやすくなり、クロックの位相が不明確となってき、またうまく制御ができなくなってくる。そのようなわけで、内部クロック信号を外部クロック信号から生成するに当たり、特に高速動作においては、設計者は内部クロック信号の各位相の選択において妥協が必要となる。
【０００９】
【課題を解決するための手段】
本発明は、入力クロック信号に応答して複数の出力クロック信号を発生するクロック発生回路を具備し、これらの複数のクロック信号の各々は集積回路内の異なる機能部分へ供給されるようになされた集積回路に適用することができるものである。第１の出力クロック信号は、イネーブル信号の状態とはかかわりなく、入力クロック信号を基準として、これと一定の周波数関係を有するクロック信号として生成される。また、他の出力クロック信号をどのような周波数モードで生成すべきかを示すイネーブル信号がクロック発生回路へ供給される。イネーブル信号の供給は、例えば、チップのボンディング・パッドを固定電源あるいはアース電位にボンディングすることによって、行うことができ、このイネーブル信号の状態に依存して第２の出力クロック信号の周波数は、第１の出力クロック信号の２倍の周波数となるか、あるいは同じ周波数に選択される。
【００１０】
本発明の他の態様においては、クロック発生回路は、入力クロック信号に応答して出力クロック信号の生成を行う。クロック発生回路は遅延回路を有しており、ある１つのクロックの位相に対して最悪の場合となる遅延経路に基づいて遅延時間を選択することができるようになされている。この遅延時間によって、内部生成されたクロックのデューティ・サイクルが入力クロック信号のデューティ・サイクルとは独立に決定される。好適な実施例においては、遅延時間は固定部分と可変部分とを有する遅延回路によって発生される。この遅延回路の固定部分にはいろいろな種類のゲート遅延が含まれており、集積回路のプロセス、電圧、温度の変動およびその動作が遅延回路の変化と見合ったものとなっている。また、遅延回路の可変部分は遅延時間の調節を行うためのものであり、またこれによって遅延回路の特性付けがなされる。
【００１１】
【実施例】
まず、図１を参照する。この図は、異なるクロック周波数で動作することができる少なくとも２つの異なる機能部分を有し、本発明が好適に実現されている、マイクロプロセッサ、数値演算コ・プロセッサなどの集積回路２の構成を示したものである。この例においては、集積回路２は、好適には回路性能を最大に引き出すことができるように、可能な限り高速のクロック周波数で命令シーケンスあるいはその他の複雑な論理動作を実行するコア・ユニット４を有している。また、集積回路２は、さらにバスインターフェース・ユニット６を有している。このバスインターフェース・ユニット６は集積回路２の入力および出力端子（図示せず）と接続されており、また、コア・ユニット４とも内部バスのＩＢＵＳを介して接続されている。バスインターフェース・ユニット６はアドレスおよびデータ入力端子に供給される入力信号を受信して集積回路２のコア・ユニット４やその他の機能部の動作を制御し、またデータを出力端子から出力するための制御を行うように企図されている。バスインターフェース・ユニット６が、どのようなタイミング動作を必要とするかは、システムの他の集積回路部分の入出力の仕様によって決まり、コア・ユニット４におけるよりも低いクロック周波数で動作させる必要が起こりえる。
【００１２】
以下の説明の必要性から、集積回路２の入力端子のいくつかを図１に示す。ボンディング・ワイヤＷとボンディング・パッドＢＰを介して回路に接続されている様子が示されている。他の入力端子および出力端子も、もちろん、同様な方法で接続されているが、簡明とするために、図１には示されていない。図１に示されたボンディング・パッドＢＰの選択的な接続の役割については後に明らかになろう。また、通常の入力バッファが実際には集積回路２中に使用されているが、これらのバッファも簡明とするために図には示されていない。
図１の例において、集積回路２は入力クロック信号を端子ＣＬＫＩＮに受信できるようになっている。入力クロック信号としては外部発振器などの外部で発生された周期的なクロック信号を用いることもできるし、あるいはＣＬＫＩＮ端子に水晶を接続して入力クロック信号を同一チップ上に生成し、この水晶によってクロック周波数を決定するようにもできる。クロック制御回路８は端子ＣＬＫＩＮに入力された入力クロック信号と同じ周波数の内部クロック信号をコア・ユニット４へ（ラインＣＯＲＥＣＬＫを介して）供給し、また、バスインターフェース・ユニット６には端子ＣＬＫＩＮを入力された入力クロック信号の２分の１の周波数を有する内部クロック信号が（ラインＢＵＳＣＬＫを介して）供給される。２分の１周波数のクロック信号は周波数分周器１０によって生成され、ラインＢＵＳＣＬＫに供給される。周波数分周器１０は、この例では入力クロック信号周波数を２分の１に分周してからラインＢＵＳＣＬＫに供給する。
【００１３】
本発明の好適な実施例においては、クロック制御回路８は、さらにクロック発生器１２を有しており、このクロック発生器１２は端子ＣＬＫＩＮからの入力クロック信号を“セット”入力端子に入力し、また、プログラム可能な遅延回路段１４によって遅延された端子ＣＬＫＩＮからの入力クロック信号を“リセット”入力端子に入力するようになされている。本発明による実施例のプログラム可能な遅延回路段１４は、通常の（非テスト・モード）動作において用いられるデフォルトの遅延値を有しており、このデフォルトの遅延値は金属薄膜パターン、あるいは溶融可能な接続、または、その他のプログラム可能な素子（ＦＡＭＯＳトランジスタなど）によってプログラム可能な遅延回路段１４中に実現される。さらに、プログラム可能は遅延回路段１４は、端子ＴＥＳＴからテスト入力を入力するとともに、ｊ選択ライン１５ｊ  にＩＮ０  からＩＮｎ  までの選択された入力端子から信号を入力できるようになされており、この端子ＴＥＳＴに入力された論理状態によって特別なテスト・モードが選択されているとき、ｊ選択ライン１５ｊ  によって遅延回路段１４で発生する遅延時間の一部を選択することができる。
【００１４】
プログラム可能な遅延回路段１４およびクロック発生器１２はそれぞれライン２ＸＥＮから２倍クロック・モードを有効とするかどうかを表す信号を入力し、もし、２倍クロック・モードを有効とすべきことが示されたときには、ラインＣＯＲＥＣＬＫ上のコア・ユニットクロック周波数が、ラインＢＵＳＣＬＫのバスクロック周波数の２倍となるようになされる。この例においては、２倍速モードのクロックの選択は、製造プロセスのワイヤボンディング工程において、ライン２ＸＥＮと連結しているボンディング・パッドＢＰをＶｃｃ電源端子に接続する（この例では、２倍速クロック・モード選択される）か、あるいは、Ｖｓｓまたはアース端子に接続（２倍速クロック・モードを無効とする）ことによってなされる。
【００１５】
後に説明するように、本発明の実施例のクロック制御回路８は、ライン２ＸＥＮの状態によって制御され、ラインＣＯＲＥＣＬＫのクロック信号が２倍クロック・モードとなるか、あるいは非２倍クロック・モードとなるかが決定される。さらに、内部バスＩＢＵＳを介してのデータの入出力の制御を行うインターフェース回路も、好適にはライン２ＸＥＮの状態に従って制御され、コア・ユニット４とバスインターフェース・ユニット６との間の通信が、選択された内部クロックの関係に従って実行されるようになされている。そのようなインターフェース回路構成は当該技術に関して通常の技術を有する者にとっては明かであろう。
一般的に、クロック発生器１２は入力クロック信号エッジの１つに応答して２倍クロック・モードで動作する。なお、この明細書においては、「立ち上がり」という用語は信号の低レベルから高レベルへの遷移を指し、また、「立ち下がり」という用語は高レベルから低レベルへの遷移を指すのに用いられる。図１の例では、入力クロック信号の立ち上がりによってクロック発生器１２の出力（ラインＣＯＲＥＣＬＫ）が高レベルにセットされる。一方、クロック発生器１２は、プログラム可能な遅延回路段１４に設定された遅延時間だけ遅延して入力される入力クロック信号の立ち上がりを検知すると、ラインＣＯＲＥＣＬＫへの出力を低レベルにリセットする。プログラム可能な遅延回路段１４の遅延時間は、好適には、命令リセットあるいはコア・ユニット４の何らかの動作を実行するに当たって最悪の場合に必要となるクロック位相の遅延時間よりもわずかに長くなるように選択される。このような場合、クロック発生器１２は、入力クロック信号に基づいたエッジ・トリガによるセットおよびリセット動作を用い、端子ＣＬＫＩＮに入力される入力クロック信号と同じ周波数の内部クロック信号を、ある一定の位相期間の間ラインＣＯＲＥＣＬＫに発生させる。従って、入力クロック信号のデューティ・サイクルのばらつきが、ラインＣＯＲＥＣＬＫ上の内部クロック信号のデューティ・サイクルに影響を与えることがなくなる。本発明の好適な実施例においては、遅延時間は最悪の場合の論理演算経路の伝搬遅延時間に基づいて選択されるので、入力クロック信号のデューティ・サイクルにかかわらず、集積回路２は正しく動作することができ、従って、広範囲のデューティ・サイクルのタイミング仕様に対して正しい動作が可能である。
【００１６】
周波数分周器１０は端子ＣＬＫＩＮの入力クロック信号の２分の１の周波数のクロック信号をラインＢＵＳＣＬＫに発生させる。従って、バスインターフェース・ユニット６の動作は、外部に接続されている集積回路との整合性がとれるようなやり方で制御され、同時に、コア・ユニット４は可能な限り高速なクロック速度での動作ができるようになされている。
さて図２を参照しながら、本発明の好適な実施例の周波数分周器１０およびクロック発生器１２の構成について以下に説明する。
本発明のこの例における周波数分周器１０は本質的には従来の設計に基づいたものであり、出力を停止するためのリセット機能を有している。ラインＣＬＫＩＮを介して入力クロック信号が（もし必要ならば、バッファを経由して）インバータ１３および１７へ供給され、これらのインバータによって相補クロック信号および正クロック信号がラインＣＬＫｃおよびＣＬＫｔにそれぞれ発生される。各通過ゲート２４、２６はソース・ドレイン・チャンネル経路が互いに並列に接続された相補型ＭＯＳトランジスタから成っており、これらのトランジスタのゲートは相補的ラインＣＬＫｔおよびＣＬＫｃに接続され、これらの相補トランジスタが同時にオン・オフ動作をするようになされている。
【００１７】
ラインＲＳＴを介してリセット信号が集積回路２の他の部分から周波数分周器１０のＮＡＮＤゲート２２の入力端子とクロック発生器１２の開始／停止論理３０とに供給される。ラインＲＳＴの信号は、好適には集積回路２の中で通常の方法でバッファされ、これによって雑音による誤ったリセット動作が生じることが防止され、また、リセット後の確実な位相同期が保証される。ＮＡＮＤゲート２２の第２の入力端子は周波数分周器１０の出力のラインＢＵＳＣＬＫに接続されている。非リセット・モードにおいて、ラインＲＳＴが低論理レベルとなると、ＮＡＮＤゲート２２の一方の入力端子には（インバータ２１を介して）高論理レベル入力が与えられるので、ＮＡＮＤゲート２２の出力はラインＢＵＳＣＬＫの状態によって制御決定されることになる。
【００１８】
ＮＡＮＤゲート２２の出力は通過ゲート２４の一方の側に接続されている。通過ゲート２２を通過して、その他方の側へ現れる信号はラッチ２８に入力され、さらに（ラッチ２８によって反転された信号をインバータ２７によってさらに反転して元に戻してから）通過ゲート２６の一方の側に供給される。この例、および本発明による実施例の他の部分において、ラッチ２８は一対のクロス結合されたインバータで構成される。フィードバック・インバータはフィードフォオード・インバータと比較してずっと弱く駆動されるようになっており、これによって新しい論理レベルが入力端子に入力されたとき、すばやく重ね書きがなされるようになっている。この弱い方の駆動は、図２において、ラッチ２８のフィードバック・インバータに、（また、図２および３の他のラッチにおいて）アスタリスク記号（＊）を用いて示されている。
【００１９】
この例においては、通過ゲート２４は、ラインＣＬＫＩＮの入力クロック信号が低レベル位相となっている間、ＮＡＮＤ２２の出力状態をラッチ２９に通過伝達させるように動作する。従って、もし、ラインＲＳＴがこの位相の間、低レベルであれば、ラインＢＵＳＣＬＫの状態に対して相補的な論理関係となる信号が、入力クロック信号が低レベル位相となっている間、ラッチ２８に伝送供給される。ラッチ２８の状態は、インバータ２７によって反転されてから、通過ゲート２６に伝送供給される。
一方、通過ゲート２６の他方の側はラッチ２０に接続されており、インバータ１９を介してラインＢＵＳＣＬＫを駆動する。この例においては、通過ゲート２６のゲートはラインＣＬＫｔ、ＣＬＫｃによって制御され、通過ゲート２６が通過ゲート２４に対して相補的に動作するようになされており、従って、ラインＣＬＫＩＮの入力クロック信号が高レベル位相となっている間、通過ゲート２６は導通状態となる。従って、ラインＢＵＳＣＬＫが（インバータ１９によって反転した後に）ラッチ２０へ戻ってきて、このクロック出力が論理レベル遷移を起こすには、ラインＢＵＳＣＬＫの相補状態として、低レベル位相と高レベル位相との両方が必要となる。このような状況においては、ラインＢＵＳＣＬＫのトグル周波数は正確にラインＣＬＫＩＮの入力クロック信号の２分の１となる。
【００２０】
上記のように、ラインＲＳＴが低論理レベルであるときには、ＮＡＮＤゲート２２はラインＢＵＳＣＬＫの状態に応答して動作する。一方、リセットまたは停止動作においては、ラインＲＳＴは高論理レベルとなっており、従って、ＮＡＮＤゲート２２の出力は、ラインＢＵＳＣＬＫの状態にかかわらず、強制的に高レベルに維持される。従って、リセット状態の間、ラインＢＵＳＣＬＫは高レベルの状態に維持される。
開始／停止論理は（インバータ２１を介して）ラインＲＳＴ、ラインＢＵＳＣＬＫ、およびラインＳＴＲＴおよびラインＳＴＰに開始／停止信号のそれぞれの信号を入力する。開始／停止論理３０は、ラインＲＳＴのリセット状態に従って、また、開始および停止信号に従って、クロック発生器１２を有効にしたり、あるいは無効にしたりするのに必要となる組み合わせ論理回路を有している。後に説明するように、開始および停止信号によって、ラインＣＯＲＥＣＬＫの出力クロック信号の出力を停止することが可能となっている。
【００２１】
ラインＣＬＫＩＮへの入力クロック信号は、ＮＡＮＤゲート３６の反転入力端子に供給される。一方、ＮＡＮＤゲート３４の第２の入力端子にはライン２ＸＥＮからの信号が与えられ、この２ＸＥＮ信号が高レベルのときに２倍クロック動作が有効となる。ＮＡＮＤゲート３４の出力は反転遅延回路段３５を介してＮＡＮＤゲート３６の第２の入力端子に供給される。遅延回路段３５は、通常の１段遅延回路段をいくつか直列に接続した複数のインバータによって構成することもできるし、あるいは、通常の遅延回路を用いてＮＡＮＤゲート３４の出力信号を選択された時間だけ遅延させてからＮＡＮＤゲート３６の入力端子に伝達させるように構成することもできる。このように、ＮＡＮＤゲート３６は、ラインＣＬＫＩＮへ入力される入力クロック信号の立ち上がりに応答して、ＮＡＮＤゲート３４および遅延回路段３５の伝搬遅延時間に対応するパルス幅を有する低論理レベルパルスを出力する。ＮＡＮＤゲート３６の出力端子はｐチャンネル・トランジスタ３８のゲートに接続されており、このｐチャンネル・トランジスタ３８のソース・ドレイン・チャンネル経路はＶｃｃとラッチ４０の入力端子との間に挿入接続されている。ラッチ４０の出力は、インバータ４１を介してラインＣＯＲＥＣＬＫに出力される。
【００２２】
またラインＣＬＫＩＮからの入力クロック信号は、直列に接続された固定遅延回路段１４ｆおよび可変遅延回路段１４ｖにも入力される。この例においては、後にさらに詳細に説明するように、可変遅延回路段１４ｖはラインＴＥＳＴからおよびｊ選択ライン１５ｊから図１に示されているように入力信号を入力する。
可変遅延回路段１４ｖからラインＣＬＫＤＥＬＡＹに出力された信号は、ＮＡＮＤゲート４６の非反転入力端子およびＮＡＮＤゲート４４の反転入力端子に入力される。ＮＡＮＤゲート４４の第２の入力端子にはライン２ＸＥＮからの信号が入力される。上記の場合では、ＮＡＮＤゲート４４の出力はＮＡＮＤゲート４６の第２の入力端子に反転遅延回路段４５を介して入力される。その結果、ラインＣＬＫＤＥＬＡＹを介して可変遅延回路段１４ｖから供給される信号の立ち上がりに応答して、ＮＡＮＤゲート４６の出力端子から、ＮＡＮＤゲート４４および遅延回路段４５での遅延時間によって定まるパルス幅を有する低論理レベルパルスが出力される。ＮＡＮＤゲート４６の出力は、インバータ４７によって反転された後に、ｎチャンネル・トランジスタ４２のゲートに入力される。なお、このｎチャンネル・トランジスタ４２のソース・ドレイン・チャンネル経路はラッチ４０の入力端子とアースとの間に接続されている。
【００２３】
また、ＮＡＮＤゲート４６の開始／停止論理３０の出力端子から入力信号を受け取り、これによって、ラインＲＳＴからのリセット信号、および開始および停止信号、およびラインＳＴＲＴ、ＳＴＰからの信号によって、クロック発生器１２の２倍クロック・モード動作が制御される。例えば、もし、開始／停止論理３０から低論理レベル出力が出力された場合には、ＮＡＮＤゲート４６の出力は強制的に高レベルとなり、これによって、ｎチャンネル・トランジスタ４２は決して導通しない状態となる。このような場合においては、ラッチ４０は低レベルの重ね書きができないので、ラインＣＯＲＥＣＬＫへのクロック信号には遷移が起こらない。
ライン２ＸＥＮは、また、ＮＡＮＤゲート５０の反転入力端子に対しても入力される。また、ＮＡＮＤゲート５０の他の入力端子にはラインＣＬＫＩＮからの入力クロック信号が入力される。ＮＡＮＤゲート５０の出力は通過ゲート４８に（インバータ４９を介して）相補的に接続され、かくして、ライン２ＸＥＮが高レベルであるとき、２倍クロック・モードにおいて通過ゲート４８は非導通状態となる。
【００２４】
また、この例のクロック発生器１２は、ライン２ＸＥＮが低論理レベルとなる非２倍クロック・モードにおいて、２分の１周波数クロック信号をラインＣＯＲＥＣＬＫに供給することができる。ＮＡＮＤゲート３２の入力端子の１つには、周波数分周器１０のラッチ２８からの出力が入力され、また他方の入力端子には開始／停止論理３０からの出力が入力される。従って、ラッチ２８からクロック発生器１２の周波数分周器部分への信号供給は開始／停止論理３０からの信号によって通過・阻止制御を行うことが可能であり、こうして停止動作（周波数分周器１０へのラインＲＳＴ信号が高レベルの場合）、および同期がかけれた状態での再スタート動作が可能となっている。
ＮＡＮＤゲート３２の出力は通過ゲート４８の一方の側に入力される。通過ゲート４８の反対の側はラッチ４０の入力端子に結合されている。ＮＡＮＤゲート５０およびインバータ４９の作用によって、通過ゲート４８のｎチャンネル・トランジスタにはラインＣＬＫＩＮからの入力クロック信号に対応する信号が印加され、一方、通過ゲート４８のｐチャンネル・トランジスタにはラインＣＬＫＩＮからの入力クロック信号とは相補的論理関係となる信号に対応した信号が印加される。このようにして、通過ゲート４８は、周波数分周器１０の通過ゲート２６におけるのと同様の通過・阻止制御がなされる。その結果、非２倍クロック・モードにおいては、クロック発生器１２は周波数分周器１０と同様の構成となり、（ＮＡＮＤゲート２２、通過ゲート２４、ラッチ２８の第１の部分を共有する２つの回路によって）ラインＣＯＲＥＣＬＫに２分の１の周波数のクロック信号を出力する。従って、このモードでは、周波数ラインＣＯＲＥＣＬＫへのクロック信号とバスＣＬＫの信号とは同一である。
【００２５】
図４（ａ）はクロック発生器１２について、ライン２ＸＥＮを高論理レベルとすることによって選択される、２倍クロック・モードの動作を示したものである。説明をわかりやすくするために微小な伝搬遅延時間や充電のための遷移は図４（ａ）には示されていない。このモードでは、ラインＣＬＫＩＮからの立ち上がり信号によってまずＮＡＮＤゲート３６の出力（図４（ａ）のノードＳ）が低論理レベルに移行する。立ち上がり信号がＮＡＮＤゲート３４および遅延回路段３５を伝搬するまでこのＮＡＮＤゲート３６の出力は、低論理レベルのまま維持される。この遅延時間は図４（ａ）においてδ３５として示されており、この遅延時間によってノードＳの低論理レベルパルス幅が定められる。ノードＳの低レベル信号に応答して、トランジスタ３８が導通し、ラッチ４０の入力端子が高レベルに充電され、インバータ４１を介してラインＣＯＲＥＣＬＫが高レベルに駆動される。従って、２倍クロック・モードでは、入力クロック信号の立ち上がりによってクロック発生回路１２からラインＣＯＲＥＣＬＫへの出力がセットされる。
【００２６】
ラインＣＬＫＩＮからの入力クロックの立ち上がり信号も遅延回路段１４ｆ、１４ｖを伝搬し、遅延時間δ１４（すなわち、遅延回路段１４ｆ，１４ｖを通過するのに要する伝搬遅延時間）の後にラインＣＬＫＤＥＬＡＹに現れる。入力クロックの立ち上がり信号がラインＣＬＫＤＥＬＡＹに現れると、ＮＡＮＤゲート４６の出力は低論理レベルとなる（その他のＮＡＮＤゲート４６の入力は高レベル）。ＮＡＮＤゲート４６からの低論理レベル出力は、インバータ４７を介してｎチャンネル・トランジスタ４２のゲート（図２および４（ａ）におけるノードＲ）を高レベルに駆動する。これによって、トランジスタ４２が導通状態となり、ラッチ４０の入力端子がアース電位まで放電される。トランジスタ４２が導通状態となったのに応答して、次に、ラッチ４０およびインバータ４１によってラインＣＯＲＥＣＬＫが低レベルに駆動される。従って、ラインＣＬＫＤＥＬＡＹへの立ち上がり信号によって、クロック発生器１２からラインＣＯＲＥＣＬＫへの出力は、高レベル遷移からプログラム可能な遅延回路段１４の遅延時間δ１４だけ遅延して、低レベルにリセットされる。
【００２７】
当該技術の通常の技術を有する者にとっては、ノードＳが低論理レベルとなるパルス幅（すなわち、遅延時間δ３５）および、ノードＲが高論理レベルとなるパルス幅（すなわち、遅延時間δ４５）はラッチ４０の入力がそれぞれのサイクルにおいて完全に充放電されるのに十分であるように選択すべきであることは明かであろう。一方、これらの遅延時間はセットおよびリセットパルスが重なり合わないように選択されなければならない。もし、そのようなパルスの重なりが発生すると、トランジスタ３８および４２を介してクロー・バー状態（すなわち、Ｖｃｃとアースとが直接に短絡してしまう状態）が発生する。
クロック発生器１２の動作によって、入力クロック信号と同じ周波数を有するがデューティ・サイクルは入力クロック信号には依存しないクロック信号がラインＣＯＲＥＣＬＫに発生される。これは、ラインＣＯＲＥＣＬＫへのクロック信号の位相幅がセット・パルスとリセット・パルス（この例では、それぞれ低および高レベル）との間隔によって決定されることによっている。本発明の実施例においては、セット・パルスとリセット・パルスとの間隔はプログラム可能な遅延回路１４での遅延時間δ１４（すなわち、遅延回路段１４ｆ，１４ｖでの遅延時間）だけに依存するようになされており、ラインＣＬＫＩＮからの入力クロック信号のデューティ・サイクルには依存しない。実際、図４（ａ）の例において、ラインＣＯＲＥＣＬＫの高レベル期間はラインＣＬＫＩＮからの入力クロック信号の高レベル期間よりも長くなっているということがわかろう。これにより、後にさらに詳細に議論するように、ラインＣＯＲＥＣＬＫの内部高周波クロックのデューティ・サイクルの最適化を行う際に、入力クロック信号に依存した平均的最適化を行うのではなく、最悪の場合の位相に対して最適化することができる。
【００２８】
ラインＣＯＲＥＣＬＫのクロック信号のデューティ・サイクルの独立性は図４（ａ）の後の方のサイクル（時刻ｔ２  の後）においていっそう明らかである。これらのサイクルにおいて、時刻ｔ２  から後においては、ラインＣＬＫＩＮからの入力クロック信号のデューティ・サイクルは、図４（ａ）に示されているようにそれ以前のサイクルにおける場合よりも短くなっており、ラインＣＯＲＥＣＬＫの信号として望ましい幅と比較しておよそ半分である。しかしながら、以前のサイクルにおけるのと同様に、ラインＣＬＫＩＮからの立ち上がり信号によって低論理レベルパルスがノードＳに生成され、この信号がさらにラインＣＯＲＥＣＬＫを高レベルに駆動する。この立ち上がり時点から、遅延時間δ１４だけ経過するとラインＣＬＫＤＥＬＡＹが立ち上がり、これによってノードＲが高レベルに駆動され、またラインＣＯＲＥＣＬＫは低レベルに駆動される。その結果、ラインＣＯＲＥＣＬＫのクロック信号のデューティ・サイクルは、プログラム可能な遅延回路段１４の遅延時間δ１４によって決定させる一定の値に維持され、ラインＣＬＫＩＮからの入力クロック信号デューティ・サイクルに依存しない。
【００２９】
クロック発生器１２を、このように構成することによって、非常に安定した高周波内部クロックを、受信した高周波入力クロック信号に基づいて生成することができる。特にスイッチング速度が速くなると、リンギングおよびその他の雑音の影響を受けやすくなることを考慮すると、マイクロプロセッサのクロック周波数が２５ＭＨｚ  からさらにそれ以上に増大するに従い、高品質で高安定な外部クロック信号を発生、供給することは非常に困難となる。本発明の実施例によるクロック発生器１２では、クロック信号が入力クロック信号の立ち上がりと内部遅延とに基づいて生成されるので、ラインＣＯＲＥＣＬＫの出力クロック信号は、入力クロック信号の雑音やその他の不安定性にはほとんど影響を受けない。
図４（ｂ）を参照しながら、ライン２ＸＥＮを低論理レベルとしたときに得られるクロック発生器１２の非２倍クロック・モード動作について次に説明する。ライン２ＸＥＮを低論理レベルにすると、ＮＡＮＤゲート３４および４４は両方ともにその出力が強制的に高レベルとなり、このモードの間、トランジスタ３８および４２はともに遮断状態に維持される。また、ライン２ＸＥＮが低論理レベルとなると、ＮＡＮＤゲート５０がラインＣＬＫＩＮからの入力クロック信号に応答することができるようになり、通過ゲート４８にはラインＣＬＫＩＮに対応して相補ゲート信号が印加される。
【００３０】
図４（ｂ）に示されたサイクルは、ラインＢＵＳＣＬＫ（従って、ラッチ２０の入力のノードＩＮ２０）が高論理レベルであり、ラインＣＯＲＥＣＬＫ（従って、ラッチ４０の入力のノードＩＮ４０）が高論理レベルであるような初期条件で始まっている。ラインＣＬＫＩＮの立ち下がり信号によって（ラインＣＬＫｃの立ち上がりおよびラインＣＬＫｔの立ち下がりに対応する）、通過ゲート２４が導通状態となり、ラインＢＵＳＣＬＫの状態は、ＮＡＮＤ２２によって反転されて、ラッチ２８の入力ノードＩＮ２８に低論理レベルとして伝達される。この低論理レベルは、ＮＡＮＤゲート３２を介して（動作を可能とするために、開始／停止論理３０の出力は高レベルとなる）（ラッチ２８およびＮＡＮＤゲート３２によって２回反転される）通過ゲート４８の入力ノードＩＮ４８に低レベルとして伝達される。入力クロック信号がこのような位相となっている間、通過ゲート２６および４８は通過ゲート２４に対して相補的に動作するようになされているので、非導通状態となっている。
【００３１】
入力クロック信号が立ち上がると、通過ゲート２６および４８は導通状態になり、一方、通過ゲート２４は非導通状態になる。このとき、ラッチ２８はフィードバック・インバータとしての動作によって低論理レベル入力を維持する。通過ゲート２６が導通状態になると、ノードＩＮ２８の状態は（反転ラッチ２８およびインバータ２７によって反転された後）入力ラッチ２０のノードＩＮ２０に伝達され、かくしてラインＢＵＳＣＬＫは低論理レベルとなる。同様に、通過ゲート４８が導通状態になることによって、ノードＩＮ４８の低論理レベルがラッチ４０の入力（ノードＩＮ４０）に伝達され、かくしてラインＣＯＲＥＣＬＫにも伝達される。
周波数分周器１０およびクロック発生器１２の非２倍クロック・モードにおけるこのような動作はラインＢＵＳＣＬＫの状態がＮＡＮＤゲート２２を経由して周波数分周器１０にフィードバックされて交互に逆転しながら続行される。その結果、このモードでは、バスＣＬＫラインおよびＣＯＲＥＣＬＫラインの信号の周波数は互いに等しく、ラインＣＬＫＩＮへの入力クロック信号周波数の２分の１の周波数である。
【００３２】
図４（ａ）に関して前に注意したのと同様に、図４（ｂ）においても回路の伝搬遅延時間は簡明とするために示されていない。しかしながら、安定な動作を得るためにインバータ列などの遅延回路段を回路のある位置に挿入して、通過ゲートが遮断する際に通過ゲートの入力において論理遷移が同時には起こらないようにすることが望ましい。例えば、インバータ２７は所望の伝搬遅延時間を有するインバータ列で置き換えることができる。
さらに、クロック発生器１２は、ラインＣＯＲＥＣＬＫへの信号が相補クロック信号となるように、容易に構成を変えることができる。例えばラッチ４０およびトランジスタ３８、４２、４８による回路と同様ではあるが、ただし相補的に動作する回路を備えるようにすればよい。このような相補論理回路を追加して、図２に示された信号からもう１つのクロック信号を発生できることは、当該技術の通常の技術を有する者にとっては明らかであろう。
【００３３】
本発明の実施例においては、クロック制御回路８がライン２ＸＥＮの状態に応じて２倍クロック・モードあるいは非２倍クロック・モードのどちらでも選択的に動作可能である能力を有する。これによって、集積回路２の設計、および動作において従来技術と比較して著しい利点がもたらされる。従来技術においては、ある集積回路機能部分（コア・ユニットやバス・インターフェース・ユニットなど）に対して制御信号を選択し、そのクロック信号によってこの集積回路の機能部分の動作制御を行うには、選択されたクロック信号に応答してこのような機能を実行する比較的複雑な機能回路を必ず必要とし、このような回路は高周波内部クロックの最もクリティカルなタイミング経路に必ず影響を与える類のものであった。一方、本発明によるクロック制御回路８の、選択されたモードにおいて出力クロック信号を発生させる能力はコア・ユニット４などの機能回路を、クロック制御回路８によって決定されたコア・クロック周波数を有する単一の内部クロック信号に対してのみ応答するだけでよいように設計することを可能とする。
【００３４】
上記のように、クロック・モードの選択は、この例では、ボンディング・パッド２ＸＥＮを電源に接続するか、あるいはアースに接続するかによって行われる。このようなクロック・モードの選択方法によれば、単に１種類の集積回路２を製造するだけでよく、２種類の製品（２倍クロックあるいは非２倍クロック）を供給する必要がない。これは、特に製造業者にとっては有益である。動作モードの選択はウェーハ製造を開始する段階で行う必要がなく、組立工程において決定すればよい。さらに、本発明の実施例による集積回路２を用いれば、顧客は所望の動作モードを維持するために端子を高レベルまたは低レベルに駆動することの必要がない。
図４（ａ）の２倍クロック・モードに再び戻る。本発明によるクロック発生器１２が発生する内部クロック信号のデューティ・サイクルはプログラム可能な遅延回路段１４の遅延時間δ１４によって決まる。マイクロプロセッサや数値演算コ・プロセッサなどの最近の複雑な集積回路では、２つのクロック位相のどちらかによって、最悪の場合の論理伝搬経路の制御を行うようになっており、最悪の場合における位相幅が回路動作にとってクリティカルである（すなわち、もし、この最悪の場合のクロック位相幅が短すぎると回路は誤動作を起こす）。本発明の好適な実施例においては、図２に示されているように、プログラム可能な遅延回路段１４は好適には固定遅延回路段１４ｆと可変遅延回路段１４ｖとを有しており、遅延時間δ１４を、従って最悪の場合のクロック位相幅を、特性評価時点あるいは製造の検査工程において、または動作中に設定あるいは変更することができる。
【００３５】
遅延時間δ14の設定において、回路設計者はモデリングあるいは他の評価手段によって、コア・ユニット４の命令あるいは論理動作を行う際の最悪の場合の高速論理経路を見積り、この最悪の経路に対して必要とされる時間（ｔd ）に、さらに安全のためにマージン時間（ｔm ）を加えて、最小クロック位相幅（ｔh ＝ｔd ＋ｔm ）を決定しこれが遅延時間δ14に相当するようにすることが必要である。広範囲な仕様のすべての範囲で回路が動作するようにするため、好適には、比ｔd ／ｔh がいろいろな電圧、温度、およびプロセス条件に対して実質的に一定となるようにする。特に、マイクロプロセッサや数値演算コ・プロセッサなどの集積回路が、単に従来用いられている標準的な電源電圧Ｖｃｃレベル（すなわち、公称５ボルト）だけでなく、サブミクロンの物理サイズを有する最新の集積回路に対して必要となると考えられる、さらに低いＶｃｃレベル（すなわち公称3.３ボルト）を含む広い電圧範囲で動作するようにすることが望ましい。
【００３６】
さて、図３を参照する。本発明の好適な実施例によるプログラム可能な遅延回路段１４の構成について次に説明を行う。プログラム可能な遅延回路段１４の、この構成の特徴は最小クロック位相幅ｔh に影響を与えるような電圧、温度、およびプロセスの変動に対して整合することができる遅延時間δ14を供給する手段を備えていることである。また、必要に応じて、遅延時間δ14を変更することができる能力も備えている。
固定遅延回路段１４ｆは、ライン２ＸＥＮの相補信号によって制御される通過ゲート５９を介して、ラインＣＬＫＩＮからの入力クロック信号を、受け取る。非２倍クロック・モードにおいては（ラインＣＬＫＤＥＬＡＹへのクロック信号は用いられないので：図３および４（ｂ）を参照のこと）ライン２ＸＥＮをローレベルとすることによって、通過ゲート５９は非導通状態となされ、一方、２倍クロック・モードにおいては、通過ゲート５９は導通状態に維持される。本発明の実施例の固定遅延回路段１４ｆは、回路２のコア・ユニット４あるいはその他の機能部分の最悪の場合の伝搬遅延時間に基づいて選択された、いろいろな種類の論理回路による多数の遅延要素を含んでいる。同じ種類の多数の遅延要素（例えば、インバータ列）を用いるのではなく、いろいろな種類の遅延要素を用いることによって温度、プロセス、バイアス電圧などの変動によってもたらされる最悪の場合の論理経路の変動に対して固定遅延回路段１４ｆが高度に整合できるようになされている。いろいろな種類の回路要素間の伝搬遅延時間のばらつきによって電圧、温度、およびプロセスパラメータの関数としての変動が相殺されて打ち消される。本発明による実施例においては、固定遅延回路段１４ｆはラッチ５２、インバータ５３、ＮＯＲゲート５４（他の入力端子はアース電位に接続されている）、３入力ＮＡＮＤゲート５５（他の２つの入力は高レベルに維持されている）、２入力ＮＡＮＤゲート５６（他の入力は高レベルに維持されている）、通過ゲート５７（オン状態となるようにバイアスされている）、およびそれぞれＶｃｃおよびアースにバイアスされたキャパシタ５８ａ、５８ｂを含んでいる。なお、キャパシタ５８ａ、５８ｂはコア・ユニット４の寄生容量を表すためのものであり、固定遅延回路段１４ｆ中の独立したキャパシタによって実現されるか、あるいはその寄生容量によって実現するようにもできる。図３には、これらの遅延要素が各１個ずつ示されているが、実際には固定遅延回路段１４ｆはこれらの要素を複数個含むようにしたり、これらの要素を多数個直列に接続させたり、あるいはコア・ユニット４の最悪の場合の遅延経路を模擬したその他の要素の組み合わせを含むようにすることもできる。
【００３７】
本発明の実施例においては、可変遅延回路段１４ｖは、固定遅延回路段１４ｆからの出力を受け取り、これに選択可能な遅延量を附加してから、その結果をラインＣＬＫＤＥＬＡＹに出力する。本発明による実施例による可変遅延回路段１４ｖは、特別なテスト・モードにおいていろいろな遅延量を選択することができ、デフォルトの遅延量はメタル・マスクによってオプション選択されるようになっている。さらに、以下の説明によって明らかになるように、可変遅延回路段１４ｖの遅延量の選択は本質的にバイナリ・コードによって等間隔で増加するようにでき、これによって総体的な遅延時間δ14の選択を柔軟に行うことができる。
この例においては、可変遅延回路段１４ｖは４つの独立した選択可能な遅延経路を有している。最も主要な遅延経路はマルチプレクサ６４3 によって選択可能なようになされている４つのインバータ対６０の組である。同様に、次に主要な遅延経路はマルチプレクサ６４2 によって選択可能となされている２つのインバータ対６０である。さらに次に主要な遅延経路はマルチプレクサ６４1 によって選択可能となされた１つのインバータ対６０である。各インバータ対６０は、好適には同じ伝搬遅延時間（すなわち遅延δ’）を有している。最も微小な遅延経路はキャパシタ６１と通過ゲート６２との結合によって実現され、好適にはこの容量性負荷によってインバータ対６０の遅延δ’の２分の１に相当する遅延時間あるいは単一のインバータの伝搬遅延時間に相当する遅延時間を附加することができる。このように、４つの選択可能な経路は、２進数的に重み付け（それぞれ、２3 、２2 、２1 、２0 ）がなされているので、可変遅延回路段１４ｖの遅延時間は２進数的な選択が可能である。
【００３８】
マルチプレクサ６４（および通過ゲート６２）の７０３  から７００  のそれぞれのマルチプレクサに対して与えられる制御入力に応じて、固定遅延回路段１４ｆからの一連のクロック信号経路を関連する遅延経路を経由するようにも、あるいは遅延なしに次の段へ直接に伝達させるようにもできる。マルチプレクサ６３３  についてはその構成を図３に示してあるが、各マルチプレクサ６４３  、６４２  、６４１  はこれと同様に構成することができる。この例においては、通過ゲート６６のソース・ドレイン・チャンネル経路は入力クロック信号と次の段の入力端子との間に挿入されており、一方、通過ゲート６８のソース・ドレイン・チャンネル経路は最後の遅延要素６０と次の段の入力端子との間に挿入されている。各マルチプレクサ６４の通過ゲート６６、６８は関連するマルチプレクサ７０からインバータ６５、６７を介して印加される制御信号によって一方の通過ゲートがオンであるときには他方の通過ゲートがオフとなるように相補的にゲート制御される。従って、固定遅延回路段１４ｆ（または前のマルチプレクサ６４）からのクロック信号は、マルチプレクサ７０の出力によって、遅延されるか、あるいは遅延されないかの制御が行われて、可変遅延回路段１４ｖの次の段の入力に供給される。ソース・ドレイン・チャンネル経路がキャパシタ６１とラインＣＬＫＤＥＬＡＹとの間に接続され、またそのゲートがマルチプレクサ７００  の出力によって制御されるようになされた通過ゲート６２の結合によってキャパシタ６１による最小遅延量回路段の選択がなされる。
【００３９】
マルチプレクサ７０は、関連する選択ライン１５から入力されるテスト信号の中から値を選択するか、または、デフォルトとして与えられている値を選択し、マルチプレクサ６４（または、通過ゲート６２）と協働して関連する遅延値を含めるべきかどうかを決定する。マルチプレクサ７０は、テストモードを有効にすべきかどうかを示す信号によって制御される。各マルチプレクサ７０には、デフォルトの値が、入力と出力の両方ともが固定電位に結合されている関連する弱インバータ７７によって与えられている。例えば、図３において、各インバータ７７の入力および出力ともにＶｃｃに接続されており、この場合、各インバータ７７は高レベルの電圧をその出力端子に出力する。このような各インバータ７７の状態は出力と固定電位との間の接続をメタル・マスク、フューズ、レーザ・カットなどによって断ち切り、インバータ７７が反対の状態を出力するようにすることによって変更することができる。あるいは、電気的にプログラム可能な素子、レジスタ・ビット、ソフトウェア、またはその他の通常の技術を用いて、デフォルトの条件を設定するようにすることもできる。
【００４０】
この例においては、各マルチプレクサ７０の一方の入力端子には選択ライン１５の１つが接続されており、マルチプレクサ７０の他方の入力端子にはインバータ７７の出力端子が接続されている。また、これらのマルチプレクサの制御入力としては、ＮＡＮＤゲート７２の出力が与えられている。ＮＡＮＤゲート７２はライン２ＸＥＮからの信号をその１つの入力端子から受け取り、他方の入力端子からはラインＴＥＳＴ信号を受け取る。ＮＡＮＤゲート７２の出力は第１の通過ゲート７４のゲートに（インバータ７３を介して）相補的に接続されており、さらに、第２の通過ゲート７６のゲートに通過ゲート７４と相補的関係となるように接続されている。このような接続がなされているので、ＮＡＮＤゲート７２の出力の状態に応じて、通過ゲート７４あるいは通過ゲート７６のどちらか一方が導通状態となる。また、ＮＡＮＤゲート７２の出力は、次のマルチプレクサ７０の制御入力にラインを介して直接に供給されている。ＮＡＮＤゲート７２の出力を低レベルとすると、通過ゲート７４が導通状態となって、選択ライン１５がマルチプレクサ６４（マルチプレクサ７００  の場合には、通過ゲート６２）の制御入力に接続される。一方、ＮＡＮＤゲート７２から高レベル出力が出力された場合には、通過ゲート７６の方が導通状態となって、インバータ７７の出力がマルチプレクサ６４（マルチプレクサ７００  の場合には、通過ゲート６２）の制御入力に接続されることになる。
【００４１】
非２倍クロック・モード（ライン２ＸＥＮが低レベル）の動作においては、すべてのマルチプレクサ７０がインバータ７７から出力を選択し、かくして、デフォルトの遅延値が選択されるので、可変遅延回路段１４ｖが準安定状態あるいは未決定状態となることが防がれる。一方、２倍クロック・モードにおいては、ラインＴＥＳＴ（ＮＡＮＤゲート７２の他方の入力）の状態に応じて、マルチプレクサ７０の制御が行われる。非テスト・モード、すなわち通常の動作モードにおいては、インバータ７７のアレイ出力によって、可変遅延回路段１４ｖの遅延量が決定される。このときの、可変遅延回路段１４ｖの遅延量は、遅延が全くない場合から１５個のインバータの伝搬遅延時間までの範囲で、１つのインバータ（すなわちキャパシタ６１）に相当する遅延値きざみで、４個のインバータ７７によって２進的に選択可能である。
【００４２】
テストモードにおいては、選択ライン１５の状態によって、可変遅延回路段１４ｖの遅延量が、４つの選択ライン１５ｊの状態に応じて２進数的に決定される。テストモードを有効とする方法は、集積回路技術において知られている従来の技術の中のいずれかを用いることができる。例えば、専用のテストモード端子あるいはパッドを設ける方法、通常の入力端子の１つから回路に通常よりは過大な電圧を印加する方法、特別なコードを回路２に実行させる方法、あるいは、その他の技術が知られている。ラインＴＥＳＴを高レベルとすると、マルチプレクサ７０の通過ゲート７４はすべて導通状態となり、選択ライン１５の状態によって可変遅延量が決定される。従って、このテスト・モードにおいては、遅延時間δ１４をいろいろに変えながら回路２を動作させてみて、ある与えられた電圧あるいは温度条件下において、回路２が正しく動作することできる最小の遅延時間δ１４を、従ってまた、最小位相幅（ｔｈ  ）を決定することができる。
【００４３】
可変遅延回路段１４ｖを具備することによって、またこれをテストモードで用いることによって、集積回路２の生産において、および設計において多大の利点が得られることがわかろう。これは、初期のプロトタイプのサンプルを、テストモードで動作条件、動作機能をいろいろに変えながら、評価し、確実な動作をさせることができる最小の遅延時間δ１４を求め、この求められた遅延時間δ１４に応じて、可変遅延回路段１４ｖのインバータ７７の適当なライン出力を開放とすることによってデフォルトの値が妥当なものとなるように選択することができることによる。さらに、回路２が生産されている間、テストモードを用いて、定期的に最小遅延時間δ１４の測定を行い、インバータ７７の状態を設定するメタライゼーション・マスクを変更することができる。
【００４４】
もし望むならば、このような可変遅延回路段１４ｖの構成を用いて、インバータ７７の状態を、例えば各インバータ７７の出力に設けられたポリシリコンのフューズをレーザを用いて、あるいは大電流を流して切断することによって、各回路ごとに個々に設定することも可能である。あるいは、回路の制御業者は、スレショールド電圧、チャンネル長、あるいは、回路２の製造工程途中において測定することが可能な、その他のパラメータに基づいて、適当なメタル・マスクを生産のために選択することができる。もちろん、マルチプレクサ７０をレジスタに応答するようにして、可変遅延回路段１４ｖの伝搬遅延時間をソフトウェアによって選択するようにすることも可能である。
以上に述べたように、本発明の好適な実施例を用いることによって、最悪の場合のクロック位相幅を、電圧、温度、プロセスの変動に対してほぼ整合がとれている固定値と、さらにこれに加えて容易に選択することができる可変量とに依存して決定できる。従って、本発明の実施例によれば、不安定なデューティ・サイクルを有する外部入力クロック信号から高周波内部クロック（バス・クロック周波数の２倍）を生成する手段が得られる。また、内部クロックのデューティ・サイクルを温度やプロセス条件に整合するように調整、選択することができる能力が得られる。特に、このようにして生成される内部クロックは、電源電圧の変化に対して十分に安定であるので、従来の電源電圧（５ボルト）でも、また低電圧（３ボルト）でもどちらでも動作可能なマイクロプロセッサ、数値演算コ・プロセッサなどの高速で高度に複雑な論理回路を設計、製造することが可能である。
【００４５】
上記の本発明による実施例は、バス・インターフェース動作（ラインＢＵＳＣＬＫ）に対しては２分の１の周波数のクロックが、一方、コア・ユニット動作（ラインＣＯＲＥＣＬＫ）に対しては高速クロックが、どちらも同じ周波数の入力クロック信号から生成される、内部クロック分配システムである。もちろん、従来の周波数逓倍回路やその他の周波数合成回路を含むようにすることによって、入力クロック信号と比較してより高い、あるいは逆に、より低い周波数の内部クロック信号を発生するようにすることも可能である。当該技術の通常の技術を有する者にとっては、この明細書の記述および図面から、本発明をそのような応用に対して用いるようにすることができることは明白なことであろう。
次に図５を参照する。この図は、入力信号の２倍の周波数の内部クロック信号をラインＣＯＲＥＣＬＫに発生するための本発明による、模範的な実施例をブロック図として表したものである。この実施例では、ラインＣＬＫＩＮからの入力クロック信号はエッジ検出回路８０に入力され、このエッジ検出回路８０は、ラインＣＬＫＩＮからの立ち上がり信号、あるいは立ち下がり信号のいずれかに応答して立ち上がり信号を発生してクロック発生器１１２のセット入力に印加する。また、ラインＣＬＫＩＮは、上記のプログラム可能な遅延回路段１４と同様に構成されているプログラム可能な遅延回路段１１４に接続されている。プログラム可能な遅延回路段１１４の出力はラインＣＬＫＤＥＬＡＹを介してエッジ検出器８２に接続されており、このエッジ検出器８２は、入力される立ち上がり信号、または立ち下がり信号を検出してラインＣＬＫＤＥＬＡＹの立ち上がり、または立ち下がりに応じた立ち上がり信号を発生する。エッジ検出器８２の出力はクロック発生器１１２のリセット入力に接続されている。クロック発生器１１２は、上記のクロック発生回路１２３と同様に構成されている。
【００４６】
動作において、エッジ検出器８０は、ＣＬＫＩＮからの入力クロック信号の各遷移を検出して、パルスをクロック発生器１１２のセット入力に対して供給する。すると、この場合には、クロック発生器１１２のラインＣＯＲＥＣＬＫに接続されているＱ出力端子が高レベルに移行する。遅延時間δ１１４  の経過の後に、入力クロック遷移がラインＣＬＫＤＥＬＡＹに発生し、この遷移がエッジ検出器８２によって検出されると、エッジ検出器８２はパルスをクロック発生回路１１２のリセット入力に対して供給する。このリセット信号によって、ラインＣＯＲＥＣＬＫに接続されているクロック発生回路１１２のＱ出力端子が低論理レベルに移行される。このように、遷移（立ち上がり、または立ち下がり）が発生する度に、セット・パルスおよびリセット・パルスの両方がクロック発生器１１２に対して供給されるので、クロック発生器１１２の出力の周波数は、入力クロック信号の周波数の２倍となる。
【００４７】
次に図６を参照しながら、本発明の他の実施例によるクロック逓倍回路の構成について説明する。図６の構成においても、ラインＣＯＲＥＣＬＫのクロック信号は、ラインＣＬＫＩＮの周波数が逓倍された周波数となり、この例では、２倍となる。ラインＣＬＫＩＮからの信号は、図２のクロック発生器１２のＮＡＮＤゲート３４、３６、および遅延回路段３５と同様に構成されている立ち上がり検出器８４に入力されて、検出器８４からは、ラインＣＬＫＩＮからの立ち上がり信号に応答してパルスが発生される。図５の構成とは異なり、この場合には、立ち上がり検出器８４は、ラインＣＬＫＩＮの立ち下がりに応答したパルスの発生は行わない。立ち上がり検出器８４の出力はＯＲゲート９２の第１の入力端子に接続されている。
【００４８】
また、ラインＣＬＫＩＮは、一連の遅延回路段２１４、２１６、２１８にも接続されており、これらはそれぞれが、独立した別々の遅延時間（もし望むならば、これらのいくつかを同じ遅延時間を有するようにもできる）を有するようになっている。遅延回路段２１４、２１６、２１８は好適にはプログラム可能な遅延回路段１４について先に説明したのと同様な固定および可変部分を有している。
遅延回路段２１４の出力は立ち上がり検出器８６に接続されており、この立ち上がり検出器８６の出力はＯＲゲート９４の１つの入力に接続されている。遅延回路段２１６の出力は立ち上がり検出器８８に接続されており、この立ち上がり検出器８８の出力はＯＲゲート９２の第２の入力端子に接続されている。同様に、遅延回路段２１８の出力は立ち上がり検出器９０の入力端子に接続されており、この立ち上がり検出器９０の出力はＯＲゲート９４の第２の入力端子に接続されている。
【００４９】
ＯＲゲート９２の出力は、クロック発生器２１２のセット入力を駆動し、一方、ＯＲゲート９４の出力は、クロック発生器２１２リセット入力を駆動する。クロック発生器２１２は、上記のクロック発生器１２、あるいは１１２と同様に構成することができる。従って、クロック発生器１２は、そのセット入力へのパルスに応答してラインＣＯＲＥＣＬＫに接続されているＱ出力を高論理レベルに移行させ、リセット入力へのパルスに応答してＱ出力を低論理レベルにリセットする。
従って、図６の実施例においては、ラインＣＯＲＥＣＬＫのクロック信号はラインＣＬＫＩＮからの入力クロック信号の２倍の周波数となる。また、遅延時間δ２１４  、δ２１６  、δ２１８  によって、２つのサイクルの中の３つの連続した位相幅が決定される。第２のサイクルの第４の位相幅は、ラインＣＬＫＩＮからの入力クロック信号の１周期幅と、遅延時間δ２１４  、δ２１６  、δ２１８  の和との差によって決定される。次に、図７を参照しながら図６の構成による動作について説明する。先の場合と同様に、微小な伝搬遅延時間については、わかりやくするために、図示していない。
【００５０】
図７において、ラインＣＬＫＩＮの立ち上がりが立ち上がり検出器８４によって検出されると、立ち上がり検出器８４は高レベルパルス（図７のＯＵＴ８４）をＯＲゲート９２を介してクロック発生器２１２のセット入力に供給する。従って、このラインＣＬＫＩＮの立ち上がり信号によって、ラインＣＯＲＥＣＬＫのクロック信号の立ち上がりが開始される。ラインＣＬＫＩＮの立ち上がりから、遅延時間δ２１４  が経過すると、立ち上がり検出器８６に立ち上がり信号が供給され、これによって高レベル（ＯＵＴ８６）信号がＯＲゲート９４に供給され、さらにクロック発生器２１２のリセット入力に印加される。ＯＲゲート９４からのこのパルスによって、クロック発生器２１２はそのＱ出力をリセットする。その結果、ＣＯＲＥＣＬＫのクロック信号における、第１のサイクルの高レベル位相幅は遅延時間δ２１４  によって決定される。
【００５１】
ラインＣＬＫＩＮからの立ち上がり信号は、次に遅延回路段２１６中を伝搬し、遅延時間δ２１６  の後に立ち上がり検出器８８に対して立ち上がり信号を供給する。パルス（ＯＵＴ８８を参照のこと）がＯＲゲート９２に印加され、これによって再びクロック発生器２１２のラインＣＯＲＥＣＬＫに接続されたＱ出力を高レベルに移行させる。従って、遅延時間δ２１６  によってラインＣＯＲＥＣＬＫのクロック信号の第１のサイクルの低レベル位相幅が定まる。
さらに立ち上がり信号が遅延回路段２１８を伝搬し、さらに遅延時間δ２１８  の後に立ち上がり信号が立ち上がり検出器９０に対して与えられる。立ち上がり検出器９０はパルス（ＯＵＴ９０を参照）をＯＲゲート９４に供給し、さらにここからパルスがクロック発生器２１２のリセット入力に対して供給されると、ラインＣＯＲＥＣＬＫが低論理レベルにリセットされる。従って、ラインＣＯＲＥＣＬＫのクロック信号の第２のサイクルの高レベル位相幅は、遅延時間δ２１８  によって定まる。
【００５２】
ラインＣＯＲＥＣＬＫに接続されているクロック発生器２１２のＱ出力は、ラインＣＬＫＩＮから次の立ち上がり入力クロック信号を受け取るまでは、低論理レベルのままに維持される。従って、もちろんのことながら、遅延時間δ２１４  、δ２１６  、δ２１８  は、これらの和が入力クロック信号の１周期を越えることがないように選択されなければならない。もし、そうでないと、不安定な結果がラインＣＯＲＥＣＬＫのクロック信号にもたらされる。こうして、ラインＣＯＲＥＣＬＫの出力クロック信号の第２の低レベル位相幅は、入力クロック信号幅から、遅延時間δ２１４  、δ２１６  、δ２１８  の和を差し引いた幅となる。この幅は図７において、時間ｔＬ０として表されている。
このように、図６の構成においては、位相幅が、クロック制御回路の遅延時間によって決定されるので、入力クロック信号の位相幅あるいはデューティ・サイクルに依存しない安定な周波数逓倍が達成できる。従って、出力クロック信号のデューティ・サイクルに影響を与えることなしに、入力クロックのデューティ・サイクルをいろいろに変えることが可能である。特に、入力クロック信号の立ち下がりはの発生には使用されないので、入力クロック信号の立ち下がり部分が出力クロック信号に影響を与えることがない。さらに、遅延時間を適当に選択することにより、交互に変化する出力クロック信号が異なる位相幅を有するようにすることが可能である。さらに、入力クロック周波数を整数倍（３あるいはそれ以上）の周波数に逓倍することも、遅延時間の総和が入力クロック信号幅を越えないようにして、単に遅延回路段を同様にしてさらにスタックするだけで容易に実現できる。
【００５３】
図５および６の構成は、もちろん、周波数分周器１０あるいは、その他のクロック発生器や周波数合成回路とともに用いて、本発明を有効に活用した回路を実現することもできる。さらに、これらの実施例は、上記の図２におけるのと同様に、ライン２ＸＥＮの状態または、他の制御信号に応答して、選択的に２倍クロック・モードを有効にしたり、あるいは無効としたりすることができるように構成することもできる。
図８および９は、本発明の他の実施例によるクロック逓倍回路を示したものである。図８の構成において、ラインＣＯＲＥＣＬＫのクロック信号の周波数は、この場合においてもやはり、ラインＣＬＫＩＮの周波数を逓倍したものとなる。この実施例では、ＣＬＫＩＮの周波数は、単に２つの遅延回路段３１４ａ−３１４ｂと、３つのアクティブ・エッジ検出器９６ａ−９６ｃとを用いるだけで、２倍に逓倍される。説明の都合上、アクティブ・エッジ検出器９６ａ−９６ｃは立ち上がり検出器であるものと仮定する。ＣＬＫＩＮが立ち上がり検出器９６ａに入力されると、立ち上がり検出器９６ａはその出力をＯＲゲート９８に供給する。図８にＳＲ（セット・リセット）フリップ・フロップ３１２ａとして示されているクロック発生器のセット入力端子はＯＲゲート９８の出力端子に結合されている。図８のＳＲフリップフロップは、セット入力（Ｓ）が高レベルにセットされると、出力を高論理レベルに移行させ、リセット入力（Ｒ）が高レベルにセットされるまで、出力を高論理レベルに維持する。リセット入力が高レベルにセットされると、ＳＲフリップフロップは出力を低論理レベルに移行させ、セット入力が高レベルにセットされるまで、これを維持する。フリップ・フロップ３１２ａのＱ出力は、ＣＯＲＥＣＬＫ信号となる。この信号は、上記のプログラム可能な遅延回路段１４と同様に構成されている遅延回路段３１４ａに接続されている。遅延回路段３１４ａの出力は立ち上がり検出器９６ｂに接続されている。また、立ち上がり検出器９６ｂの出力はフリップ・フロップ３１２ａのリセット入力に接続されているとともに、ＡＮＤゲート１００の入力端子の１つに接続されている。立ち上がり検出器９６ａの出力はＳＲフリップフロップ３１２ｂのセット入力に接続されている。ＳＲフリップフロップ３１２ｂのＱ出力（“ＦＩＲＳＴＣＹＣＬＥ”信号）はＡＮＤゲート１００他方の入力端子に結合されている。ＡＮＤゲート１００の出力はＳＲフリップフロップ３１２ｃのセット入力に接続されている。ＳＲフリップフロップ３１２ｃのＱ出力端子からは“ＦＩＲＳＴ ＰＨ２”信号が発生されて、遅延回路段３１４ｂに入力される。遅延回路段３１４ｂの出力は立ち上がり検出器９６ｃに入力される。立ち上がり検出器９６ｃの出力はＳＲフリップフロップ３１２ｂおよび３１２ｃ、のリセット入力と、また、ＯＲゲート９８の第２の入力端子に接続されている。
【００５４】
図８の回路の動作を理解するには、図９のタイミング図と関連づけて考えるのがよい。ＣＬＫＩＮからのアクティブ信号（この場合には、立ち上がり）を受け取ると、エッジ検出器９６ａはＯＲゲート９８の入力端子の１つにパルスを出力し、これによってＯＲゲート９８の出力が高レベルに駆動される。これによって、ＳＲフリップフロップ３１２ａのＱ出力が高レベルに遷移し、その結果、ＣＯＲＥＣＬＫ信号が高レベルに駆動される。また、立ち上がり検出器９６ａによって発生されたパルスは、ＳＲフリップフロップ３１２ｂのセット入力を駆動して、ＦＩＲＳＴ ＣＹＣＬＥ信号を高レベルに遷移させる。ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移は、遅延回路段３１４ａ（δ３１４ａの期間）によって遅延されて伝搬され、立ち上がり検出器９６ｂによって検出される。ＣＯＲＥＣＬＫの遅延された立ち上がり信号を受信すると、立ち上がり検出器９６ｂはＳＲフリップフロップ３１２ｂのリセット入力とＡＮＤゲート１００に対してパルスを出力する。このパルスに応答して、ＳＲフリップフロップはＣＯＲＥＣＬＫを低レベルに駆動する。エッジ検出器９６ｂからのパルスを受信するとＡＮＤゲート１００はＳＲフリップフロップ３１２ｃのセット入力に高レベルパルスを出力する。これによって、ＦＩＲＳＴ ＰＨ２信号が高レベルに駆動される。信号ＦＩＲＳＴ ＰＨ２は遅延回路段３１４ｂによって遅延される。そして、ＦＩＲＳＴＰＨ２の低レベルから高レベルへの遷移が立ち上がり検出器９６ｃによって検出される。これに応答して、エッジ検出器９６ｃはＳＲフリップフロップ３１２ｂ、３１２ｃのリセット入力およびＯＲゲート９８にパルスを出力する。従って、信号ＣＯＲＥＣＬＫが高レベルに駆動され、信号ＦＩＲＳＴ ＣＹＣＬＥは低レベルに駆動され、また、信号ＦＩＲＳＴ ＰＨ２が低レベルに駆動される。ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移が遅延回路段３１４ａによって遅延され、エッジ検出器９６ｂによって検出される。エッジ検出器９６ｂからの信号を受けて、ＳＲフリップフロップ３１２ａは、再び、ＣＯＲＥＣＬＫを低レベルに駆動する。信号ＦＩＲＳＴ ＣＹＣＬＥが低レベルとなっているので、ＡＮＤゲート１００が立ち上がり検出器９６ｂからパルスを受け取っても、ＳＲフリップフロップ３１２ｃは何の影響も受けない。次のアクティブ・エッジをＣＬＫＩＮ信号から受け取るまで、回路はこのまま、ＣＯＲＥＣＬＫが低論理状態であり、ＦＩＲＳＴ ＣＹＣＬＥが低論理状態であり、またＦＩＲＳＴ ＰＨ２が低論理状態となっている状態を維持する。
【００５５】
本発明のこの実施例によれば、図６の回路におけるのと本質的に同じ出力信号がずっと簡単な回路構成で得られる。実質的な動作としては、ＳＲフリップフロップ３１２ｂは“１”をカウントすると、ＳＲフリップフロップ３１２ｃを不能状態としてさらにクロックを発生しないようにしている。図８の回路は、あらかじめ定められた数のクロック遷移がカウントされたときにＦＩＲＳＴ ＣＹＣＬＥ信号を“０”に設定するようにすることによって、ＣＬＫＩＮのアクティブ・エッジに応答してさらにクロックを発生するように拡張することができる。
図１０および１１は本発明の他の実施例を示したものであり、入力クロック信号ＣＬＫＩＮをｎ逓倍することができる回路である。ここで、逓倍の数ｎはレジスタに記憶するようにすることもできるし、あるいは回路中にハードワイヤによって組み込むことも可能である。図１０の回路において、ｎの値がどのようなものであるかにかかわらず、単に２つの遅延回路段４１４ａ−４１４ｂと３つのエッジ検出器１０２ａ−１０２ｃとだけで回路を構成できる。信号ＣＬＫＩＮはエッジ検出器１０２ａに入力される。このエッジ検出器１０２ａからの出力はＯＲゲート１０４の入力端子の１つに供給される。また、エッジ検出器１０２ａからの出力はカウンタ１０６のリセット入力にも接続されている。ＯＲゲート１０４の出力はＳＲフリップフロップ４１２のセット入力に結合されており、また、ＳＲフリップフロップ４１２のＱ出力からはＣＯＲＥＣＬＫ信号が出力される。ＣＯＲＥＣＬＫ信号は遅延回路段４１４ａに入力され、遅延回路段４１４ａの出力はエッジ検出器１０２ｂの入力端子に接続されている。エッジ検出器１０２ｂの出力はＳＲフリップフロップ４１２のリセット入力とカウンタ１０６のインクリメント入力に結合されている。ＳＲフリップフロップ４１２の反転Ｑ出力は遅延回路４１４ｂによって受け取られ、遅延回路４１４ｂからの出力はエッジ検出器１０２ｃに供給される。エッジ検出器１０２ｃの出力はＡＮＤゲート１０５の入力の１つに結合されている。ＡＮＤゲート１０５の出力はＯＲゲート１０４の他方の入力端子に結合されている。また、カウンタ１０６の出力はコンパレータ１０７の入力の１つに結合されている。ｎの値はハードワイヤで与えることもできるし、またはレジスタに記憶させておくようにもできるが、このｎの値がコンパレータ１０７の他方の入力端子に与えられる。もし、カウンタ１０６の出力の値がｎの値と等しければ、コンパレータ１０７のＭＡＴＣＨ出力信号端子が高レベルに遷移する。このＭＡＴＣＨ信号はＡＮＤゲート１０５の反転入力端子に供給される。
【００５６】
図１０の回路動作をｎ＝３の場合について説明する。ＣＬＫＩＮ信号のアクティブ・エッジを検知したときにエッジ検出器１０２ａから発生されるパルスによって、カウンタ１０６がリセットされ、また、ＳＲフリップフロップ４１２のセット入力が高レベルに駆動される。これによって、ＣＯＲＥＣＬＫ信号が低レベルから高レベルへ遷移する。カウンタ１０６は、リセットされると０カウントを出力し、これによって、ＭＡＴＣＨ信号が低レベルに駆動される（ｎ＝０でない限り：もしｎ＝０であると回路は不適当な設定をされる）。ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移は、遅延回路４１４ａによって遅延された後にエッジ検出器１０２ｂに入力される。この遷移がエッジ検出器１０２ｂによって検出されると、パルスがＳＲフリップフロップ４１２のリセット入力とカウンタ１０６のインクリメント入力に対して出力される。このパルスによってＣＯＲＥＣＬＫは低レベルに駆動され、一方、反転ＣＯＲＥＣＬＫは高レベルに駆動され、またカウンタ１０６が１だけインクリメントされる。反転ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移は遅延回路段４１４ｂで遅延された後にエッジ検出器１０２ｃによって検出される。これに応答して、エッジ検出器１０２ｃはパルスをＡＮＤゲート１０５に出力する。このとき、ＭＡＴＣＨ信号が低レベルとなっているので、このパルスはＡＮＤゲート１０５を素通りする。ＡＮＤゲート１０５からのパルス出力はＯＲゲート１０４を経由してＳＲフリップフロップ４１２のセット入力に与えられる。その結果、ＣＯＲＥＣＬＫが高レベルに駆動される。先に説明したように、ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移は遅延回路段４１４ａによって遅延された後に、エッジ検出器１０２ｂによって検出され、すると、エッジ検出器１０２ｂはパルスを出力してＣＯＲＥＣＬＫを低レベルに駆動し、またカウンタ１０６をインクリメントさせる。カウンタ１０６の出力は“２”に等しくなっているので、ＭＡＴＣＨ信号は低レベルを維持し、エッジ検出器１０２ｃが遅延された反転ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移検出すると、ＡＮＤゲート１０５の出力が高レベルに駆動され、これによって、ＣＯＲＥＣＬＫが低レベルから高レベルへ遷移する。ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移が、遅延回路段４１４ａによって遅延された後に、エッジ検出器１０２ｂによって検出されると、エッジ検出器１０２ｂの出力によってＣＯＲＥＣＬＫが低レベルに駆動され、またカウンタ１０６はカウント３にインクリメントされる。カウント数が３となるとコンパレータ１０７のＭＡＴＣＨ信号は高レベルに遷移する。この高レベルのＭＡＴＣＨ信号によって、ＡＮＤゲート１０５の出力が、エッジ検出器１０２ｃの出力にかかわりなく、低レベルに駆動される。従って、反転ＣＯＲＥＣＬＫが低レベルから高レベルへ遷移することによって発生されるエッジ検出器１０２ｃからの次のパルスはＡＮＤゲート１０５によって阻止される。その結果、ＣＬＫＩＮ信号の次のアクティブ・エッジまで、ＣＯＲＥＣＬＫ信号は、低レベル状態のままとなっている。
【００５７】
容易にわかるように、各ＣＬＫＩＮ信号のアクティブ・エッジに応答してＳＲフリップフロップ４１２によって発生されるクロックサイクルの数はｎの値に依存する。遅延回路段４１４ａによる遅延時間によってＣＯＲＥＣＬＫの高論理レベル位相幅が設定される。遅延回路段４１４ｂによって発生される遅延によって、ＣＯＲＥＣＬＫの低論理レベル位相幅が、最後の低論理状態を除いて、設定される。最後の低論理状態は遅延回路段４１４ｂによってではなく、ＣＬＫＩＮ信号の次のアクティブ・エッジの発生によって決定される。
図１２および１３は、１つの遅延回路段５１４を用いて入力クロックをｎ逓倍するクロック逓倍回路について示したものである。この回路は、ＣＯＲＥＣＬＫ出力の高論理レベル期間および低論理レベル期間の両方が遅延回路段５１４によって設定されるということ以外は図１０の回路と同様の動作を行う。動作において、まず、エッジ検出器１０８ａは信号ＣＬＫＩＮのアクティブ・エッジを検出する検出したアクティブ・エッジに応答してエッジ検出器１０８ａはパルスをＯＲゲート１０４に出力し、ＯＲゲート１０４はＳＲフリップフロップ５１２のセット入力を高レベルに駆動する。これによって、ＣＯＲＥＣＬＫ信号が高レベルに駆動される。また、このパルスはカウンタ１０６をリセットさせる。ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移が遅延回路段５１４による遅延を受けた後に立ち下がり検出器１０８ｂおよび立ち上がり検出器１０８ｃに入力される。ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移に応答して、エッジ検出器１０８ｃはパルスを出力してカウンタ１０６をインクリメントさせ、またリセット入力ＳＲフリップフロップ５１２を高レベルに駆動する。これによって、ＣＯＲＥＣＬＫが低レベルに駆動される。コンパレータ１０７から出力されるＭＡＴＣＨ信号は、カウンタ１０６から出力される値が、コンパレータ１０７に入力されるｎの値と等しくなるまで、低レベルのまま維持される。ＣＯＲＥＣＬＫの高レベルから低レベルへの遷移は、遅延回路段５１４で遅延された後に立ち下がり検出器１０８ｂによって検出される。検出されたＣＯＲＥＣＬＫの高レベルから低レベルへの遷移に応答して、エッジ検出器１０８ｂはパルスをＡＮＤゲート１０５に出力する。ＭＡＴＣＨ信号が低レベルとなっている間、エッジ検出器１０８ｂからのパルスに応じて、このパルスと類似のパルスがＡＮＤゲート１０５の出力端子から発せられ、これによって、ＳＲフリップフロップ５１２のセット入力が高レベルに駆動される。これによって、ＣＯＲＥＣＬＫ信号が低レベルから高レベルへ遷移する。
【００５８】
すると、遅延回路段５１４によって指定された遅延時間の後、立ち下がり検出器１０８ｂが、ＣＯＲＥＣＬＫの高レベルから低レベルへの遷移を検出する。この検出に応答して、ＣＯＲＥＣＬＫが高レベルに駆動される。同様に、立ち上がり検出器１０８ｃは遅延回路段５１４で指定された遅延時間の後に、ＣＯＲＥＣＬＫの低レベルから高レベルへの遷移を、検出する。これに応答して、ＣＯＲＥＣＬＫが低レベルに駆動される。立ち上がり検出器１０８ｃによって、高レベルから低レベルへの遷移が検出されるごとに、カウンタがインクリメントされる。カウンタの出力がｎの値と等しくなると、ＭＡＴＣＨ信号が高レベルに駆動され、これによって、立ち下がり検出器１０８ｂからの次のパルス出力が阻止される。従って、ＣＯＲＥＣＬＫは、ＣＬＫＩＮの次のアクティブ・エッジによってカウンタ１０６がリセットされるまで低レベルの状態のままに維持される。
【００５９】
容易にわかるように、この回路では、１つの遅延回路段５１４を用いて５０％のデューティ・サイクルを有するクロックを発生することができる。従って、クロック逓倍回路を実現するのに必要となる回路の数を非常に低減できる。
上記のように、本発明によれば、従来のクロック逓倍方法と比較して著しい利点が得られる。第１に、本発明は、入力クロック信号と同じ基本周波数の、または、この周波数を逓倍した内部クロックを、入力クロック信号のデューティ・サイクルに依存しない位相幅を有するように発生させることができる手段を提供する。従って、２５ＭＨｚ  以上の高周波においてですら、リンギングなどの入力クロック信号のデューティ・サイクルの不安定性あるいは雑音によって内部クロック信号が著しい影響を受けることがない。さらに、本発明によれば、回路中の最悪の場合の論理経路に基づいて、内部クロック信号の位相幅を最適化することが可能であり、不安定なデューティ・サイクルを有する入力クロックに対しても誤動作を起こすことがない。さらに、遅延回路段による最適化された位相幅の生成は、温度、電圧、および製造パラメータのばらつきに対して正確に適合するように、また、これらのばらつきを評価してこれに整合するように行うことができる。従って、本発明によれば、高周波を用いる集積回路、また、特に広範囲の電源電圧範囲で動作する集積回路における内部クロック信号の生成を容易に達成することができる。
【００６０】
本発明によれば、ｎの値をハードワイヤによって、または、メモリに記憶させることによって与え、入力クロックのアクティブ・エッジに応答してトリガされる出力クロック・サイクル数がこのｎの値によって定まるようになし、このｎの値の変更を回路設計を変更することなく行うことが可能である。また、クロック逓倍回路を１つの遅延回路だけで実現することができる。
本発明は、好適な実施例について説明したが、もちろん、これに限定されることなく、変形を施し、あるいは他の手段によって本発明の利点と恩恵を受けるようにすることができることは、当該技術に関して通常の能力を有する者にとっては明白なことであろう。例えば、逓倍されたクロックを発生させるのに、入力クロックの立ち上がりあるいは立ち下がりのどちらを用いてもよいし、また、立ち上がりと立ち下がりの両方を用いるようにしてもよい。さらに、エッジ検出器の出力に応答してクロック遷移を発生させるのに用いる回路として、ＳＲフリップフロップの代わりに他の論理回路を用いることもできる。また、クロック遷移をカウントするための回路として、汎用のカウンタあるいは個別論理回路を用いることができる。また、カウントすべき遷移の数は、所定のカウント数に達したときにどの信号を阻止するようにするかに依存して変えることもできる。このような変形あるいは別の手段は特許請求範囲に定義された本発明の範囲に属するものであることは明かである。
【図面の簡単な説明】
【図１】本発明の好適な実施例の集積回路の回路構成をブロック図として表したものである。
【図２】本発明の好適な実施例のクロック発生回路の回路図である。
【図３】図２のクロック発生回路の遅延回路段部分の回路を示したものである。
【図４】図４（ａ）および（ｂ）は本発明の好適な実施例のクロック発生回路の動作を示したタイミング図である。
【図５】本発明の第１の他の実施例のクロック発生回路の回路構成をブロック図として表したものである。
【図６】本発明の第２の他の実施例のクロック発生回路の回路構成をブロック図として表したものである。
【図７】図６の回路の動作を表すタイミング図である。
【図８】本発明の第３の他の実施例のクロック発生回路の回路構成をブロック図として表したものである。
【図９】図８の回路の動作を表すタイミング図である。
【図１０】本発明の第４の他の実施例のクロック発生回路の回路構成をブロック図として表したものである。
【図１１】図１０の回路の動作を表すタイミング図である。
【図１２】本発明の第５の他の実施例のクロック発生回路の回路構成をブロック図として表したものである。
【図１３】図１２の回路の動作を表すタイミング図である。
【図１】
0003568215.tif 000002
【図２】
0003568215.tif 000003
【図３】
0003568215.tif 000004
【図４】
0003568215.tif 000005
【図５】
0003568215.tif 000006
【図６】
0003568215.tif 000007
【図７】
0003568215.tif 000008
【図８】
0003568215.tif 000009
【図９】
0003568215.tif 000010
【図１０】
0003568215.tif 000011
【図１１】
0003568215.tif 000012
【図１２】
0003568215.tif 000013
【図１３】
0003568215.tif 000014