(57)【要約】データを入力クロックから出力クロックに再同期させるための同期回路が提示される。第１の透過ラッチは、入力クロックに同期させたデータを受取る。第２の透過ラッチは、第１の透過ラッチからデータを受取り、出力クロックが挿入遅延だけ遅延させられたものである遅延出力クロックに依存してデータを出力する。出力ラッチは、第２の透過ラッチからデータを受取り、データを出力クロックに同期させる。
2006511899.tif 000002
【特許請求の範囲】
【請求項１】
データを入力クロックから出力クロックに再同期させる同期回路であって、
データを受取り、入力クロックによりクロック制御される第１の透過ラッチと、
第１の透過ラッチからデータを受取り、出力クロックが遅延させられたものである遅延出力クロックによりクロック制御される第２の透過ラッチと、
第２の透過ラッチからデータを受取り、出力クロックによりクロック制御される出力ラッチとを備える、同期回路。
【請求項２】
遅延出力クロックは挿入遅延を含み、出力クロックは、遅延出力クロックの挿入遅延を除去して遅延ロックループ処理したものである、請求項１に記載の同期回路。
【請求項３】
入力クロックと出力クロックとの間の位相差が１８０°以下である、請求項１に記載の同期回路。
【請求項４】
入力クロックはマスタクロック対のＫ♯クロックであり、出力クロックはデータクロック対のＣ♯クロックである、請求項１に記載の同期回路。
【請求項５】
出力ラッチは端でトリガされる、請求項１に記載の同期回路。
【請求項６】
出力ラッチからデータが２倍データレートで出力される、請求項１に記載の同期回路。
【請求項７】
第１の透過ラッチおよび第２の透過ラッチは、開のときには受取ったデータを通過させ、閉のときには受取った最後のデータを保持する、請求項１に記載の同期回路。
【請求項８】
第１の透過ラッチは、入力クロックが論理「１」のときに開であり、入力クロックが論理「０」のときに閉である、請求項７に記載の同期回路。
【請求項９】
第２の透過ラッチは、遅延出力クロックが論理「１」のときに開であり、遅延出力クロックが論理「０」のときに閉である、請求項８に記載の同期回路。
【請求項１０】
データを入力クロックから出力クロックに同期させる方法であって、
入力クロックによりクロック制御される第１の透過ラッチによりデータを受取るステップと、
出力クロックが遅延させられたものである遅延出力クロックによりクロック制御される第２の透過ラッチにより第１の透過ラッチからデータを受取るステップと、
出力クロックによりクロック制御される出力ラッチにより第２の透過ラッチからデータを受取るステップとを備える、方法。
【請求項１１】
遅延出力クロックは挿入遅延を含み、出力クロックは、遅延出力クロックの挿入遅延を除去して遅延ロックループ処理したものである、請求項１０に記載の方法。
【請求項１２】
入力クロックと出力クロックとの間の位相差が１８０°以下である、請求項１０に記載の方法。
【請求項１３】
入力クロックはマスタクロック対のＫ♯クロックであり、出力クロックはデータクロック対のＣ♯クロックである、請求項１０に記載の方法。
【請求項１４】
出力ラッチは端でトリガされる、請求項１０に記載の方法。
【請求項１５】
出力ラッチからデータが２倍データレートで出力される、請求項１０に記載の方法。
【請求項１６】
第１の透過ラッチおよび第２の透過ラッチは、開のときには受取ったデータを通過させ、閉のときには受取った最後のデータを保持する、請求項１０に記載の方法。
【請求項１７】
第１の透過ラッチは、入力クロックが論理「１」のときに開であり、入力クロックが論理「０」のときに閉である、請求項１６に記載の方法。
【請求項１８】
第２の透過ラッチは、遅延出力クロックが論理「１」のときに開であり、遅延出力クロックが論理「０」のときに閉である、請求項１７に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
関連出願
本願は、米国特許法第１１９条または第３６５条に基づき、２００３年１月２７日出願の米国特許出願第１０／３５２，３７２号の優先権を主張し、２００２年１２月１９日出願の米国仮特許出願第６０／４３４，８４１号の利益を主張する。上記出願の教示全体は引用によりここに援用される。
【背景技術】
【０００２】
発明の背景
ＤＤＲ（Double Data Rate）およびＤＤＲII、ならびにＱＤＲ（Quad Data Rate）およびＱＤＲIIは、ＳＲＡＭ（Static Random Access Memory）の相互接続を高速化する業界標準のアーキテクチャである。ＤＤＲアーキテクチャでは、１クロックサイクル当り２メモリアクセスを実行することで標準ＳＲＡＭのデータレートを２倍にする。ＱＤＲアーキテクチャでは、入力ポートと出力ポートとを別個とし、互いに独立に動作させることによって、１クロックサイクル当り２メモリ読出および２メモリ書込を可能としている。ＱＤＲアーキテクチャでは、１クロックサイクル当りメモリ読出およびメモリ書込が２回ずつ行なわれるため、１クロックサイクル当り４メモリアクセスを可能とすることで標準ＳＲＡＭのデータレートは４倍になっている。
【０００３】
本来、ＱＤＲアーキテクチャは、高速ＳＲＡＭインターフェイスのために設計されたものである。しかし、ＱＤＲアーキテクチャはその他の高周波数用途でも利用されており、たとえばメモリベースのコプロセッサへの標準インターフェイスとして利用されている。
【０００４】
ＱＤＲアーキテクチャでは、ＳＲＡＭへの読出アクセスおよび書込アクセスの制御に用いられるマスタ（master）クロック対が規定されている。たとえば、ＳＲＡＭから読出されるデータは、いずれもマスタクロック対の立上がり端に整列させられる。
【０００５】
低い動作周波数、たとえば１３３ＭＨｚ未満での動作時には、ＱＤＲ装置に結合されたバスマスタ（たとえばＡＳＩＣまたはマイクロプロセッサ）には、マスタクロック対の立上がり端を用いて、マスタクロック対に同期したデータを入手する時間が十分に確保されている。しかし、ＱＤＲ装置の動作周波数の増大に伴い、データ有効窓および保持時間は減少する。メモリベースのコプロセッサがマスタクロック対に同期させたデータは、バスマスタがマスタクロック対を用いて入手したときに有効でない場合がある。動作周波数が高くてもバスマスタが有効データを入手できるようにするため、ＱＤＲアーキテクチャではさらにデータクロック対が併せて規定されている。データクロック対はマスタクロック対を位相シフトしたものである。
【発明の開示】
【発明が解決しようとする課題】
【０００６】
ＱＤＲアーキテクチャにおいては、バスマスタがマスタクロック対の代わりにデータクロック対を用いてデータを入手できるようにすることにより、バスマスタにおいてデータセットアップと保持時間を合わせている。したがって、データがデータ記憶部から読出された後、メモリベースのコプロセッサはこのデータをデータクロック対に同期させなければならない。しかし、マスタクロック対とデータクロック対との間にはかなりの位相差（スキュー）が存在する場合がある。
【課題を解決するための手段】
【０００７】
発明の概要
スキュー補償回路であって、ＱＤＲIIインターフェイス要件に準拠し、入力クロックと出力クロックとの間の大きな位相差に対処するものが提示される。
【０００８】
透過ラッチは、２つの状態すなわち開状態および閉状態を有する。開のときには、透過ラッチは入力にあるデータを出力へ通過させる。閉のときには、透過ラッチは、開状態から閉状態へ遷移した際に入力に存在するデータを保持する。透過ラッチは、開のときには、入力に存在するデータを入手するための窓を与えることにより、入力から出力へデータを通過させるために次のクロック端を待つことを回避する。
【０００９】
データを入力クロックから出力クロックに再同期させる同期回路は、第１の透過ラッチ、第２の透過ラッチおよび出力ラッチを含む。第１の透過ラッチは、データを受取り、入力クロックによってクロック制御される。第２の透過ラッチは、第１の透過ラッチからデータを受取り、遅延出力クロックによってクロック制御される。この遅延出力クロックとは、出力クロックが遅延させられたものである。出力ラッチは、第２の透過ラッチからデータを受取り、出力クロックによってクロック制御される。遅延出力クロックは挿入遅延を含み得る。出力クロックは、上記遅延出力クロックの挿入遅延を除去して遅延ロックループ処理したものであり得る。
【００１０】
上記入力クロックはマスタクロック対のＫ♯クロックであり、上記出力クロックはデータクロック対のＣ♯クロックである場合がある。上記出力ラッチは端でトリガされ得る。上記出力ラッチからはデータが２倍のデータレートで出力され得る。
【００１１】
第１の透過ラッチおよび第２の透過ラッチは、開のときには受取ったデータを通過させ、閉のときには受取った最後のデータを保持する。一実施例では、上記第１の透過ラッチは、上記入力クロックが論理「１」のときに開であり、上記入力クロックが論理「０」のときに閉であり、上記第２の透過ラッチは、上記遅延出力クロックが論理「１」のときに開であり、上記出力クロックが論理「０」のときに閉である。
【００１２】
この発明についての上述およびその他の目的、特徴および利点は、添付の図面で例示されるようなこの発明の好ましい実施例について以下に記載のより具体的な説明から明らかとなるであろう。図面においては、各図を通じて同様の参照符号は同様の部分を指す。図面は必ずしも一定の縮尺に従って描かれたものではなく、むしろこの発明の原理の説明に重点が置かれている。
【発明を実施するための最良の形態】
【００１３】
発明の詳細な説明
以下、この発明の好ましい実施例について説明を行なう。
【００１４】
図１は、この発明の原理に従う、データ記憶部１１０から受取ったデータを同期させるためのスキュー補償回路１０６を含む装置１００のブロック図である。装置１００は、バスマスタ１０１から受取ったデータ読出し要求に応答して、データ記憶部１１０に記憶されたデータを出力する。バスマスタ１０１としては、装置１００にコマンドを発行することのできるマイクロプロセッサまたは特定用途向け集積回路（ＡＳＩＣ）とすることができる。
【００１５】
データ記憶部１１０から出力されるデータは、マスタクロック対と同期させられる。データ出力回路１０４は、データ記憶部から受取ったデータを、クロック選択回路１０８により選択される出力クロック１１５に再同期させる。マスタクロック対１１２に同期させたデータ記憶部からのデータはスキュー補償回路１０６によって条件付けられ、こうして
出力ラッチ１０２に転送されるデータを出力クロックに同期させることが可能となっている。
【００１６】
スキュー補償回路１０６は、マスタクロック対と選択された出力クロックとの間のスキューについて補償し、さらにデータおよびマスタクロック対間のスキューについて補償する。図２Ａ−２Ｂを参照して、スキュー補償回路１０６は２つの透過ラッチ１２０，１３０を含む。各々の透過ラッチ１２０，１３０は、２つの状態すなわち開状態および閉状態を有する。ラッチが開状態のとき、入力に存在するデータは出力へ通過する。ラッチが閉状態のとき、開状態から閉状態へ遷移した際に入力に存在するデータがラッチの出力に保持される。
【００１７】
図示の実施例においては、ラッチ１２０，１３０は、クロック入力に結合されたそれぞれのクロック信号が「１」のときに開であり、それぞれのクロック信号が「０」のときに閉になる。開のとき、透過ラッチは、次のクロック端を待つ代わりに入力にあるデータを入手するための窓を与える。
【００１８】
図１を再び参照して、一例では、データ記憶部１１０は、データを記憶するためのメモリまたはレジスタを含んでおり、独立に動作する別個の入力ポート１１８および出力ポート１１６を有していることでデータを同時に読出および書込可能としている。入力ポート１１６でデータ出力回路１０４に受取られるデータ出力はマスタクロック対１１２に同期させられる。
【００１９】
データ出力回路１０４は、データ記憶部１１０から受取ったデータを出力クロックに同期させる。クロック選択回路１０８は、データ出力１２２を同期させるための出力クロックを選択する。
【００２０】
一実施例では、出力ポート１１６を通じて出力されるデータは、マスタクロック対１１２の立上がり端に同期させられる。しかしながら、これに代わる実施例では、データ出力はマスタクロック対１１２の立下がり端に同期させられてもよい。マスタクロック対に同期させたデータがデータ記憶部１１０から出力された後、このデータを出力クロック１１５に同期させることができる。データクロック対１１４は、マスタクロック対１１２を位相シフトしたものである。スキュー補償回路１０６は、マスタクロック対１１２とデータクロック対１１４との間で最大１８０°の位相シフト（スキュー）に対処する。
【００２１】
クロック選択回路１０８は、データクロック対１１４にクロック信号を検出するためのクロック検出器を含む。このクロック検出器については下に図５との関連で説明する。データクロック対１１４にクロック信号が検出された場合、データクロック対１１４のクロック信号のうち１つが遅延出力クロック１１５として選択され、これによりスキュー補償回路１０６はデータを条件付けて、データが出力ラッチ１０２によって出力クロックに同期させられ得るようにする。そうでない場合、マスタクロック対１１２のうち１つがスキュー補償回路１０６のための遅延出力クロック１１５として選択される。
【００２２】
遅延出力クロック１１５に基づいてデータが条件付けられた後、スキュー補償回路１０６により出力された条件付け後のデータ１２３は出力ラッチ１０２に結合される。出力ラッチ１０２は、上記条件付け後のデータを出力クロック（ＤＬＬ出力クロック）１１７に同期させ、出力クロック１１７に同期したデータ出力をもたらす。図２Ａ−２Ｂは、図１に示す、データ記憶部１１０に結合されたデータ出力インターフェイス１０４のより詳細なブロック図である。図示の実施例では、出力ラッチ１０２は、ＤＤＲ（Dual Data Rate）データ出力を生成するための回路を含む。しかしながら、これに代わる一実施例では出力を単一倍データレートとしてもよい。その場合、Ｄ型フリップフロップ（ＤＦＦ）１５
０の入力をスキュー補償回路１０６の透過ラッチ１３０の出力に直接結合し、ＤＬＬ２１０から出力されたＤＬＬ♯＿ＣＫでＤ型フリップフロップ１５０をクロック制御する。
【００２３】
上述のように、データクロック対１１４は、マスタクロック対１１２を位相シフトしたものである。ＱＤＲアーキテクチャについて示した実施例においては、マスタクロック対１１２は、Ｋ＿ＣＬＫ信号およびＫ♯＿ＣＬＫ信号を含む（図３）。Ｋ♯＿ＣＬＫ信号は、Ｋ＿ＣＬＫ信号を１８０°位相シフトしたものである。データクロック対１１４は、Ｃ＿ＣＬＫ信号およびＣ♯＿ＣＬＫ信号を含む。Ｃ♯＿ＣＬＫ信号は、Ｃ＿ＣＬＫ信号を１８０°位相シフトしたものである。
【００２４】
図示の実施例では、データ記憶部１１０は、別個の独立した入力ポートおよび出力ポートを有するデュアルポートのＳＲＡＭ（Static Random Access Memory）である。入力ポート１１８および出力ポート１１６の各々は３６ビットデータバスを含む。入力ポート１１８はまた、アドレスおよび制御信号を含む。入力ポート１１８を通じて入力されるデータおよびコマンド、ならびに出力ポート１１６を通って出力されるデータは、いずれもマスタクロック対（Ｋ＿ＣＬＫ、Ｋ♯＿ＣＬＫ）１１２に同期させられる。
【００２５】
これに代わる一実施例では、データ記憶部１１０には、ＣＡＭ（Content Addressable Memory）またはＤＲＡＭ（Dynamic Random Access Memory）を用いてもよい。データ記憶部としてはまた、データ記憶用の論理ブロックたとえばレジスタブロックを用いてもよい。
【００２６】
入力ポート１１８は２倍データレートのデータを受け付ける。すなわち、Ｋ＿ＣＬＫ周期ごとに新たなコマンドまたはデータを２回受取ることができる。たとえば、一実施例では、Ｋ＿ＣＬＫ信号における各々の端（立下がり端および立上がり端）で新たなコマンドまたはデータが受取られ、その場合、Ｋ＿ＣＬＫの立上がり端およびＫ♯＿ＣＬＫの立上がり端の両方でコマンドまたはデータが入手される。当該コマンドがその完了にＫ＿ＣＬＫ周期２つ以上を要する場合でも、データ記憶部はクロック周期１つにつき新たなコマンドまたはデータを２回受け付けることができる。
【００２７】
出力ポート１１６から送られるデータはマスタクロック対に同期させられる。スキュー補償回路１０６は、遅延出力クロック１１５に応じて出力ポート１１６から送られたデータを転送する。Ｋ＿ＣＬＫおよびＫ♯＿ＣＬＫは、当該装置の入力ピンで受取られるＫクロックおよびＫ♯クロックが遅延させられたものである。Ｃ＿ＣＬＫおよびＣ♯＿ＣＬＫ信号は、当該装置の入力ピンで受取られるＣクロックおよびＣ♯クロックが遅延させられたものである。遅延ブロック２３１，２３２，２３３，２３４は、入力バッファ、信号トレースおよびその他の当該装置内の構成要素に起因する遅延を意味する。遅延出力クロック１１５は、Ｋ♯クロックが遅延させられたものか、またはＣ♯クロックが遅延させられたもののいずれかであるが、これはクロック検出器２４０がデータクロック対１１４にクロック信号を検出するか否かに依存する。
【００２８】
クロック検出器２４０には、当該技術で公知のどのクロック検出器を用いてもよい。クロック検出器の一実施例については下に図４との関連で説明する。クロック検出器２４０の出力２０２はマルチプレクサ２００，２２０を制御する。クロック検出器２４０は、データクロック対１１４でクロック信号が受取られたか否かを検出する。クロック検出器２４０により出力されマルチプレクサ２２０，２００に結合されるＣ＿ＣＬＫ検出信号の状態によって、遅延出力クロックに転送されるのはＫ♯＿ＣＬＫなのか、またはＣ♯＿ＣＬＫなのかが選択される。データクロック対にクロック信号２０２が検出された場合、Ｃ♯＿ＣＬＫが遅延出力クロックとしてマルチプレクサ２００を通って遅延ロックループ（ＤＬＬ）２１０の入力に送られ、Ｃ＿ＣＬＫがマルチプレクサ２２０を通って遅延ロックル
ープ（ＤＬＬ）２３０の入力に結合される。一方、データクロック対にクロック信号が検出されなかった場合、Ｋ♯＿ＣＬＫおよびＫ＿ＣＬＫがマルチプレクサ２００，２２０を通って送られる。
【００２９】
上述のように、スキュー補償回路１０６は２つの透過ラッチ１２０，１３０を含む。データ記憶部１１０の出力ポート１１６は、３６ビット透過ラッチ１２０に結合される（Ａデータ）。透過ラッチ１２０のデータ出力（Ｂデータ）は、透過ラッチ１３０のデータ入力に結合される。透過ラッチ１２０はＫ♯＿ＣＬＫにより制御され、透過ラッチ１３０は遅延出力クロック１１５により制御される。Ｋ♯＿ＣＬＫが論理「１」の間、透過ラッチ１２０は開であり、データはデータ入力から（Ａデータバス）、データ出力へ（Ｂデータバス）転送される。Ｋ♯＿ＣＬＫが論理「０」の間、ラッチ１２０は閉であり、Ｋ♯＿ＣＬＫの立下がり端にて入手されたデータがラッチ１２０に記憶されてＢデータバスに出力される。ラッチ１２０が閉の間、入力Ａデータバスでの変化が出力Ｂデータバスでの変化を引き起こすことはない。透過ラッチ１３０も同様に、遅延出力クロックに応答して動作する。Ｋ♯＿ＣＬＫと遅延出力クロックとの間にスキューがなければ、Ａバスにあるデータは、Ａバスで受取られたときに両方のラッチ１２０，１３０を通ってＣデータバスへ転送される。Ｋ♯＿ＣＬＫと遅延出力クロックとの間にスキューがある場合、Ａバスで受取られたデータは、受取られるとラッチ１２０に転送されてラッチ１２０により記憶され、ラッチ１３０が開の間にＣデータバスへ転送されるよう有効データがＢデータバスに転送される。透過ラッチの動作については下に図４〜８との関連で説明する。
【００３０】
遅延出力クロック１１５はＤＬＬロック信号でないため、挿入遅延についての周知の問題が生じてしまう。挿入遅延とは、信号が集積回路内の入力ピンから、当該集積回路内で当該信号が使用される場所まで進むのにかかる時間のことである。挿入遅延が生じる理由としては、システムにおける物理的なワイヤおよび構成要素の抵抗遅延および容量遅延、ならびに入力バッファを通じての遷移時間がある。
【００３１】
遅延ロックループ（ＤＬＬ）２１０，２３０は、特定のクロック周波数範囲に対して微調整され、このような挿入遅延について補償を行なう。図３は、装置１００の入力ピンで受取られたとおりのデータクロック対（Ｃクロック、Ｃ♯クロック）を示す。図３に示すように、遅延出力クロック端（立下がり端および立上がり端）は、データクロック対におけるそれぞれ立下がり端および立上がり端から挿入遅延３００だけ後に生じる。ＤＬＬは、この挿入遅延のないＤＬＬ出力クロック（ＤＬＬ＿ＣＫ♯、ＤＬＬ＿ＣＫ）を与えることで上記挿入遅延について補償をする。すなわち、ＤＬＬ出力は、ピンでのデータクロック対信号と位相整列させられる。ＤＬＬの動作については、下に図１１との関連でより詳細に説明する。
【００３２】
図２Ａ−２Ｂを再び参照して、ＤＬＬ２３０，２１０の出力はエッジ検出器１９０に結合される。エッジ検出器１９０としては、当業者に周知のどのエッジ検出器を用いてもよい。エッジ検出器は、ＤＬＬ＿ＣＫ信号の立上がり端またはＤＬＬ＿ＣＫ♯信号の立上がり端を検出した際にＤＤＲクロック信号１９１に正のパルスを出力する。ＤＤＲクロック信号１９１の立上がり端により、Ｄ型フリップフロップ１５０がクロック制御されて２倍データレート出力がもたらされる。エッジ検出器１９０にはさらに、セット−リセット（ＳＲ）フリップフロップ１８０が結合される。ＳＲフリップフロップ１８０の状態は、エッジ検出器出力信号１９２における各々の立上がり端にて変化する。セット−リセットフリップフロップ出力１９３は遅延要素１８５に結合される。遅延要素１８５の出力はマルチプレクサ１４０に結合され、３６ビットデータのうちＤＤＬ出力クロック１９１の各端で出力される１８ビットはいずれかを選択する。データビット３５〜１８はＣ＿ＣＬＫの立上がり端に応答して出力され、データビット１７〜０はＣ♯＿ＣＬＫの立上がり端に応答して出力される。
【００３３】
図４は、図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、早いデータでかつマスタクロック対とデータクロック対との間における並のスキューの場合を示す。図示の実施例では、クロック検出器によってデータクロック対にクロック信号が検出されており、データ出力はデータクロック対（Ｃ＿ＣＬＫ、Ｃ♯＿ＣＬＫ）の立上がり端に同期させられている。Ｃ＿ＣＬＫはＫ＿ＣＬＫを遅延させたものであり、Ｃ♯＿ＣＬＫはＫ♯＿ＣＬＫを遅延させたものである。このタイミング図を図２Ａ−２Ｂのブロック図との関連で説明する。クロックをそれぞれ遅延させたものにおける立上がり端および立下がり端間に並のスキュー８００があり、さらにＫ＿ＣＬＫの立上がり端と有効データとの間にデータスキューがある。
【００３４】
時刻８０１にて、Ｋ♯＿ＣＬＫの立上がり端に先立ちデータバスＡのポート１１６にてデータ記憶部からの有効データが早く出力される。データ記憶部から受取られるデータは、１つのＫクロック周期の間だけ有効である。ここでは、この有効データは、最初のＫ＿ＣＬＫ立上がり端に応答して生じるものとして示してあるが、当業者であれば、この出力を生成するためにはいくつものＫクロックサイクルがかかる場合もあることが理解されるであろう。時刻８０２にて、Ｋ♯＿ＣＬＫの立上がり端で透過ラッチ１２０が開になり、データがデータバスＢに転送される。時刻８０３にて、Ｃ♯＿ＣＬＫの立上がり端で透過ラッチ１３０が開になり、有効データがデータバスＣに転送される。Ｋ♯＿ＣＬＫがローの間、データバスＡで受取られた最後のデータがラッチ１２０に記憶される。同様に、Ｃ♯＿ＣＬＫがローのとき、Ｃ♯＿ＣＬＫがハイの間にデータバスＢで受取られた最後のデータがラッチ１３０に記憶される。
【００３５】
図２Ａ−２Ｂを再び参照して、３６ビットデータがデータバスＣに転送された後、このデータは、一度に１８ビットで、Ｄ型フリップフロップ１５０を通って２倍データレートで転送される。転送されるべきビットが上位１８ビットなのか下位１８ビットなのかは遅延マルチプレクサ制御信号１８６によって制御される。時刻８０４にて、Ｃ♯＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ♯）における次の立上がり端に伴ない、バス１３３におけるＤ型フリップフロップ１７０の入力にあるデータビット３５〜１８がバス１７１にラッチされる。結果としてエッジ検出器出力１９１に生じたパルスはＤ型フリップフロップ１５０をクロック制御し、データビット１７〜０はバッファ１６０を通って出力される。上記パルスはさらに、セットリセットフリップフロップ１８０の状態を切換える。このセットリセットフリップフロップの出力は遅延１８５を通じて遅延させられ、マルチプレクサイネーブルの状態を切換えることによってバス１７１にあるデータビット３５〜１８がこのマルチプレクサを通ってバス１４１に達することを可能にする。
【００３６】
時刻８０５にて、Ｃ＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ）における次の立上がり端に伴ない、やはり信号１９１においてパルスが生成され、これはフリップフロップ１５０をクロック制御してデータビット３５〜１８をラッチさせる。それから、データビット３５〜１８はバッファ１６０により出力される。当業者であれば、フリップフロップ１７０，１５０のセットアップおよび保持の要件を満たすようにシステムが設計されることに注目するであろう。スキュー補償回路は、データを条件付けることによって、有効データが出力クロックでのそれぞれの端（立上がり端または立下がり端）に先立ちデータバスＣに出力されるようにし、こうして有効データは出力クロックに同期させられる。
【００３７】
図５は、図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、遅いデータでかつマスタクロック対とデータクロック対との間における並のスキューの場合を示す。このデータは、Ｋ♯＿ＣＬＫの立上がり端の後、時刻９００でデータバスＡで有効である。Ｋ♯＿ＣＬＫがハイであれば、ラッチ１２０は透
過可能であり、データはデータバスＡからデータバスＢに転送される。これに加え、Ｃ♯＿ＣＬＫがハイのとき、透過ラッチ１３０は開であり、有効データはデータバスＢからデータバスＣに転送される。その直後、時刻９０１にて、Ｋ♯＿ＣＬＫはローに遷移し、ラッチ１２０は、データバスＡで受取った最後のデータを記憶し、記憶したデータをデータバスＢに転送する。時刻９０２にて、Ｃ＿ＣＬＫはハイになるとともにＣ♯＿ＣＬＫはローになり、透過ラッチ１３０は、データバスＢで受取った最後のデータを記憶し、記憶したデータをデータバスＣに転送する。
【００３８】
時刻９０３にて、エッジ検出器１９０を通じてのＣ♯＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ♯）の立上がり端に伴ない、Ｄ型フリップフロップ１５０において３６ビットデータバスの下位１８ビット（Ｄ［１７：０］）がラッチされ、この下位１８ビットが出力バスに転送される。
【００３９】
時刻９０４にて、エッジ検出器１９０を通じてのＣ＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ）の立上がり端に伴ない、フリップフロップ１５０において３６ビットデータバスの上位１８ビット（Ｄ［３５：１８］）がラッチされ、この上位１８ビットが出力バスに転送される。
【００４０】
図６は、図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、早いデータでかつマスタクロック対とデータクロック対との間における最も不利なスキュー（１８０°）の場合を示す。これは最も不利なスキュー条件である。時刻１０００にて、データはデータバスＡで有効である。時刻１００１にて、Ｋ♯＿ＣＬＫの立上がり端で透過ラッチ１２０が開になり、有効データがデータバスＡからデータバスＢに転送される。時刻１００２にて、Ｃ♯＿ＣＬＫ（信号遅延出力クロックを介する）の立上がり端で透過ラッチ１３０が開になり、有効データがデータバスＢからデータバスＣに転送される。同時に、Ｋ♯＿ＣＬＫがローに遷移し、これによってデータバスＢにあるデータがラッチ１２０に保持される。時刻１００３にて、Ｃ♯＿ＣＬＫにおける次の立下がり端でラッチ１３０が閉になり、データがデータバスＣに保持される。
【００４１】
時刻１００４にて、エッジ検出器１９０を通じてのＣ♯＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ♯）の立上がり端に伴ない、Ｄ型フリップフロップ１５０において３６ビットデータバスの下位１８ビット（Ｄ［１７：０］）がラッチされ、この下位１８ビットが出力バスに転送される。
【００４２】
時刻１００５にて、エッジ検出器１９０を通じてのＣ＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ）の立上がり端に伴ない、Ｄ型フリップフロップ１５０において３６ビットデータバスの上位１８ビット（Ｄ［３５：１８］）がラッチされ、この上位１８ビットが出力バスに転送される。
【００４３】
図７は、図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、遅いデータでかつマスタクロック対とデータクロック対との間における最も不利なスキューの場合を示す。時刻１１００にて、データはラッチ１２０の入力にあるデータバスＡで有効である。Ｋ♯＿ＣＬＫにおける論理「１」によりラッチ１２０は開であるため、データバスＡにあるデータはラッチ１２０を通ってデータバスＢに転送される。
【００４４】
時刻１１０１にて、Ｋ♯＿ＣＬＫにおける論理「０」でラッチ１２０が閉になり、データバスＡにあるデータがラッチ１２０に記憶されてデータバスＢに転送される。Ｃ♯＿ＣＬＫにおける論理「１」でラッチ１３０が開になり、データバスＢにあるデータはデータバスＣに転送される。
【００４５】
時刻１１０２にて、Ｃ＿ＣＬＫにおける論理「０」でラッチ１３０が閉になり、データバスＢにあるデータがラッチ１３０に記憶されてデータバスＣに転送される。Ｋ♯＿ＣＬＫにおける論理「１」でラッチ１２０が開になり、データバスＡにあるデータはデータバスＢに転送される。
【００４６】
時刻１１０３にて、エッジ検出器１９０を通じてのＣ♯＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ♯）の立上がり端に伴ない、Ｄ型フリップフロップ１５０において３６ビットデータバスの下位１８ビット（Ｄ［１７：０］）がラッチされ、この下位１８ビットが出力バスに転送される。
【００４７】
時刻１１０４にて、エッジ検出器１９０を通じてのＣ＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ）の立上がり端に伴ない、Ｄ型フリップフロップ１５０において３６ビットデータバスＣの上位１８ビット（Ｄ［３５：１８］）がラッチされ、この上位１８ビットが出力バスに転送される。
【００４８】
図８は、図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、早いデータでかつマスタクロック対とデータクロック対との間におけるスキューなしの場合を示す。時刻１２００にて、データはラッチ１２０の入力にあるデータバスＡで有効である。時刻１２０１にて、Ｋ♯＿ＣＬＫにおける論理「１」でラッチ１２０が開になり、データバスＡにあるデータはラッチ１２０を通ってデータバスＢに転送される。時刻１２０１ではさらに、Ｃ♯＿ＣＬＫにおける論理「１」でラッチ１３０が開になり、データバスＢにあるデータはラッチ１３０を通ってデータバスＣに転送される。
【００４９】
時刻１２０２にて、Ｋ♯＿ＣＬＫにおける論理「０」でラッチ１２０が閉になり、データバスＡにあるデータがラッチ１２０に記憶されてデータバスＢに転送される。また、Ｃ♯＿ＣＬＫにおける論理「０」でラッチ１３０が閉になり、データバスＡにあるデータがラッチ１３０に記憶されてデータバスＣに転送される。
【００５０】
時刻１２０３にて、エッジ検出器１９０を通じてのＣ♯＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ♯）の立上がり端に伴ない、Ｄ型フリップフロップ１５０において３６ビットデータバスの下位１８ビット（Ｄ［１７：０］）がラッチされ、この下位１８ビットが出力バスに転送される。
【００５１】
時刻１２０４にて、エッジ検出器１９０を通じてのＣ＿ＣＬＫ（およびそのＤＬＬロック導出信号ＤＬＬ＿ＣＫ）の立上がり端に伴ない、Ｄ型フリップフロップ１５０において３６ビットデータバスの上位１８ビット（Ｄ［３５：１８］）がラッチされ、この上位１８ビットが出力バスに転送される。上述のように、ラッチ１２０，１３０はともに同じ期間（時刻１２０１から時刻１２０２）の間開であり、Ｋ♯＿ＣＬＫおよびＣ♯＿ＣＬＫがともにハイである間、データはデータバスＡから受取られるとラッチ１２０，１３０を通ってデータバスＣに転送される。
【００５２】
以上から、この発明によれば、ＫクロックとＣクロックとの間に広いスキュー（０°から１８０°）が許容されることがわかる。Ｋ♯＿ＣＬＫの立上がり端に対して遅くまたは早く到着した有効データは、クロック間の広いスキューにわたって一方のクロック領域から他方のクロック領域へ転送される。
【００５３】
図９は、図２Ａ−２Ｂに示す透過ラッチ１２０，１３０のいずれかについての一実施例の概略図である。制御信号４２０が論理「１」のとき、ラッチ１２０，１３０は開であり
、入力４１２で受取られたデータは出力４１４に直接転送される。制御信号が論理「０」の間、ラッチは閉であり、制御信号が論理「１」から論理「０」へ遷移した際にラッチされた記憶入力データが出力４１４に転送される。
【００５４】
透過ラッチは、転送ゲート４００，４０２を含む。当業者には周知のように、転送ゲートはＰＭＯＳトランジスタおよびＮＭＯＳトランジスタを含み、これらは、当該トランジスタのゲートに結合された制御信号の状態に依存して両方のトランジスタがＯＮまたはＯＦＦとなるように結合される。両方のトランジスタがＯＦＦの間、ラッチは閉であり、データは転送ゲートを通って転送されることはない。両方のトランジスタがＯＮの間、ラッチは開であり、データは転送ゲートを通って転送される。
【００５５】
転送ゲート４００，４０２のうち、一時点においてはただ１つだけが開である。転送ゲート４０２は、制御信号が論理「１」の間は開であり、制御信号が論理「０」の間は閉である。転送ゲート４００は、制御信号が論理「０」の間は開であり、制御信号が論理「１」の間は閉である。
【００５６】
転送ゲート４０２が開の間、転送ゲート４００は閉である。入力ポート４１２で受取られたデータは、転送ゲート４０２を通ってインバータ４０８，４１０を通り出力ポート４１４へ転送される。インバータ４０８を通じて転送されたデータはまた、インバータ４１６を通って転送ゲート４００の入力に転送される。制御信号が論理「０」の間、転送ゲート４０２は閉であり、入力ポート４１２で受取られたデータは出力ポート４１４へ転送不可能である。一方、転送ゲート４００は開であるため、制御信号の状態が論理「１」から論理「０」に変化する時点でインバータ４１６の入力に存在するデータは、転送ゲート４００、インバータ４０８およびインバータ４１０を通って出力ポート４１４に転送される。したがって、制御信号が論理「１」の間に入力ポートを通じて受取られた最後のデータは、制御信号が論理「０」の間ラッチに記憶（保持）され、出力ポート４１４を通って転送される。
【００５７】
図１０は、図２Ａ−２Ｂに示すクロック検出器２４０の概略図である。図示の実施例では、クロック検出器は、直列接続された４つのＤ型ラッチ（フリップフロップ）５０１，５０２，５０３，５０４を含む。ラッチ５０１のＤ入力はＶDDに接続され、すべてのラッチにおけるリセット入力はリセット信号ＲＳＴＢに接続される。ラッチ５０４からクロック検出出力信号２０２が出力される。
【００５８】
リセット信号ＲＳＴＢが論理「０」にセットされると、ラッチ５０１，５０２，５０３，５０４のすべてがリセットされる。リセット後、各々のラッチ５０１，５０２，５０３，５０４のＱ出力は、ラッチ５０４のＱ出力やクロック検出出力信号２０２を含め、論理「０」にセットされる。
【００５９】
クロック検出器２４０は、データクロック対にクロック信号があるか否かを検出する。図示の実施例では、Ｃ＿ＣＬＫ信号はラッチのクロック（ＣＫ）入力に結合される。しかし、ラッチ５０１，５０２，５０３，５０４のクロック入力は、データクロック対信号のいずれか一方、すなわちＣ＿ＣＬＫ信号またはＣ♯＿ＣＬＫ信号に接続され得る。クロック検出器２４０は、Ｃ＿ＣＬＫでの４つの立上がり端の検出後に有効データクロックの検出を示す。
【００６０】
ラッチ５０１はＣ＿ＣＬＫの最初の立上がり端を検出する。Ｄ入力がＶDDに接続されている場合、論理「１」が５０１にラッチされ、ラッチ５０１のＱ出力５０６は論理「０」から論理「１」に変化する。Ｃ＿ＣＬＫに２番目の立上がり端が生じると、ラッチ５０２のＤ入力における論理「１」がラッチ５０２によってラッチされ、ラッチ５０２のＱ出力
５０７は論理「０」から論理「１」に変化する。
【００６１】
Ｃ＿ＣＬＫに３番目の立上がり端が生じると、ラッチ５０３のＤ入力における論理「１」がラッチ５０３によってラッチされ、ラッチ５０３のＱ出力５０８は論理「０」から論理「１」に変化する。Ｃ＿ＣＬＫに４番目の立上がり端が生じると、ラッチ５０４のＤ入力における論理「１」がラッチ５０４によってラッチされ、ラッチ５０４のＱ出力５０５は論理「０」から論理「１」に変化する。
【００６２】
Ｃ＿ＣＬＫに４つの立上がり端を検出した後、クロック検出出力が論理「１」にセットされる。これによって、データクロック対にクロック信号があり、データ出力すべてがデータクロック対と同期されるべきであることが示される。クロック検出出力信号は、リセット信号の検出時まで論理「１」にセットされたままとなる。
【００６３】
図１１は、図２Ａ−２Ｂに示す遅延ロックループ２１０，２３０のうちいずれかのブロック図である。遅延ロックループ２１０，２３０は、位相検出器６００と、チャージポンプ６０２と、電圧制御遅延ライン６０４と、挿入遅延を伴うフィードバック経路６０６とを含む。
【００６４】
位相検出器６００は、入力クロックと出力クロックとの位相差を検出する。位相差が検出される間、位相検出器は、位相検出器６００の出力で適当なアップ／ダウン信号を駆動することで位相差を示す。アップ／ダウン信号はチャージポンプ６０２に結合される。チャージポンプ６０２は、電圧制御遅延ラインへの制御電圧６０８を適当に増加または減少させることで、入力クロックに加えられる遅延を変化させ、こうして位相差を最小限にする。
【００６５】
入力クロックに加えられる遅延は、入力クロックと出力クロックとの間で検出される位相差に基づく。さらに、挿入遅延回路を伴うフィードバック経路６０６により既知の挿入遅延に基づいて遅延が加えられる。
【００６６】
挿入遅延を伴うフィードバック経路６０６は、図３に示すように、選択されたクロック対（Ｃ、Ｃ♯またはＫ、Ｋ♯）にＤＬＬ出力クロックが正確にロックされることを確実にするためのレプリカ遅延を含む。レプリカ遅延においては、入力ピン（Ｃ、Ｃ♯またはＫ、Ｋ♯）と、当該装置内でクロック信号（Ｃ＿ＣＬＫ、Ｃ♯＿ＣＬＫまたはＫ＿ＣＬＫ、Ｋ♯＿ＣＬＫ）が使用される場所との間で挿入遅延２３１，２３２，２３３，２３４（図２Ａ−２Ｂ）をもたらす構成要素および経路が複製される。レプリカ遅延とは、挿入遅延の正しいレプリカである１群の回路である。たとえば、レプリカ遅延は、同じ構成要素（たとえばトランジスタ）を同じレイアウトおよび同じ構成で含む。さらに、レプリカ遅延においては、同じ書込みの幅および長さが用いられる。
【００６７】
図３との関連で述べたように、ＤＬＬへの入力における入力クロック信号は、当該装置の入力ピンで受取られたクロック信号に対して挿入遅延を有する。電圧制御遅延ライン６０４は、入力クロックをほとんど１クロック周期全体だけ遅延させて出力クロックを生成する。出力クロックは、挿入遅延を伴うフィードバック経路６０６に結合される。レプリカ挿入遅延は出力クロックを遅延させる。位相検出器６００は、入力クロックと、遅延させた出力クロック（フィードバッククロック）とを比較してチャージポンプ６０２を調整する。ＤＬＬは、フィードバッククロックと入力クロックとが同相になるまで電圧制御遅延ライン６０４を調整し続ける。ＤＬＬから出力された出力クロックは、入力クロックから挿入遅延を差引いた分である。入力クロックとフィードバッククロックとが同相であるとき、ＤＬＬは安定である。位相差および挿入遅延についての調整後、出力クロックは、当該装置のピンで受取られたとおりのＫ♯クロックまたはＣ♯クロックのいずれかに整列
させられている。
【００６８】
図２Ａ−２Ｂを再び参照して、ＤＬＬ２１０は、ＤＬＬ＿ＣＫ♯をＫ♯クロックまたはＣ♯クロックにロックする。ＤＬＬ２３０は、ＤＬＬ＿ＣＫをＫクロックまたはＣクロックにロックする。引続き図１１を参照して、ＤＬＬ２１０にあるフィードバック経路６０６では、Ｋ♯＿ＣＬＫおよびＣ♯＿ＣＬＫについての遅延２３２，２３４（図２Ａ−２Ｂ）が複製され、ＤＬＬ２３０にあるフィードバック経路では、Ｋ＿ＣＬＫおよびＣ＿ＣＬＫについての遅延２３１，２３３（図２Ａ−２Ｂ）が複製される。
【００６９】
図１２は、図２Ａ−２Ｂに示すエッジ検出器１９０およびＳＲフリップフロップ１８０の一実施例の概略図である。エッジ検出器１９０は、選択されたクロック対信号のいずれかに立上がり端を検出するのに応答してＤＤＲクロック１９１に正のパルスを生成する。図示の実施例では、クロック対信号の一方（ＤＬＬ＿ＣＫ♯）は、ＮＡＮＤゲート７００における一方の入力および反転遅延回路７０４に結合される。遅延回路７０４の出力は、ＮＡＮＤゲート７００の他方の入力に結合される。他方のクロック対信号（ＤＬＬ＿ＣＫ）はＮＡＮＤゲート７０２における一方の入力に結合される。
【００７０】
ＮＡＮＤゲート７０２に入力されるＤＬＬ＿ＣＫの立上がり端によって、ＮＡＮＤゲート７０２の出力に負のパルスが生成される。このパルスの長さは反転遅延７０６に依存する。ＮＡＮＤゲート７０２の出力にある負のパルスにより、ＤＤＲクロック１９１と、インバータ７１０の出力とに正のパルスが生成される。同様に、ＮＡＮＤゲート７００に入力されるＤＬＬ＿ＣＫ♯の立上がり端により、ＤＤＲクロック１９１に正のパルスが生成される。
【００７１】
ＳＲフリップフロップ１８０は、エッジ検出器１９０のＮＡＮＤゲート７００，７０２の出力に結合されて、マルチプレクサ１４０への制御信号の状態をセットするが、これは３６ビットデータバスについてＤＤＲ出力に出力されるべきビットが前半１８ビットなのか後半１８ビットなのかに依存する。ＳＲフリップフロップの動作は当業者に周知である。ＤＬＬ＿ＣＫ♯の立上がり端に応答してインバータ７１０の出力で正のパルスが生じると、ＳＲフリップフロップの出力は論理「０」にリセットされる。ＤＬＬ＿ＣＫの立上がり端に応答してインバータ７１２の出力で正のパルスが生じると、ＳＲフリップフロップの出力が論理「１」にセットされる。
【産業上の利用可能性】
【００７２】
上記の発明は、埋込システムでの使用について記載してある。しかし、この発明はさらに、入力クロックおよび出力クロックを有するシステムで動作する別個の構成要素にも適用される。
【００７３】
この発明についてその好ましい実施例を参照しながら具体的に示し説明したが、当業者であれば、前掲の特許請求の範囲に包含されるこの発明の範囲から逸脱することなく、形態および詳細においてさまざまな変更がこの発明で可能であることが理解されるであろう。
【図面の簡単な説明】
【００７４】
【図１】この発明の原理に従う、データ記憶部から受取ったデータを同期させるためのスキュー補償回路を含む装置のブロック図である。
【図２Ａ】図１に示すデータ記憶部に結合されたデータ出力インターフェイスのより詳細なブロック図である。
【図２Ｂ】図２Ａの続きの図である。
【図３】挿入遅延を説明するタイミング図である。
【図４】図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、早いデータでかつクロック間における並のスキューの場合を示す図である。
【図５】図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、遅いデータでかつクロック間における並のスキューの場合を示す図である。
【図６】図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、早いデータでかつクロック間における最も不利なスキューの場合を示す図である。
【図７】図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、早いデータでかつクロック間における最も不利なスキューの場合を示す図である。
【図８】図２Ａ−２Ｂに示すスキュー補償回路におけるデータとクロックとの関係を示すタイミング図であって、早いデータでかつクロック間におけるスキューなしの場合を示す図である。
【図９】図２Ａ−２Ｂに示す透過ラッチのいずれかについての一実施例の概略図である。
【図１０】図２Ａ−２Ｂに示すクロック検出器の概略図である。
【図１１】図２に示す遅延ロックループのいずれかのブロック図である。
【図１２】図２Ａ−２Ｂに示すエッジ検出器およびＳＲフリップフロップの一実施例の概略図である。
【図１】
2006511899.tif 000003
【図２Ａ】
2006511899.tif 000004
【図２Ｂ】
2006511899.tif 000005
【図３】
2006511899.tif 000006
【図４】
2006511899.tif 000007
【図５】
2006511899.tif 000008
【図６】
2006511899.tif 000009
【図７】
2006511899.tif 000010
【図８】
2006511899.tif 000011
【図９】
2006511899.tif 000012
【図１０】
2006511899.tif 000013
【図１１】
2006511899.tif 000014
【図１２】
2006511899.tif 000015
【国際調査報告】
2006511899.tif 000016
2006511899.tif 000017
2006511899.tif 000018