(57)【特許請求の範囲】
【請求項１】
データバス及びソースクロックを有するソースシンクロナスインターフェースから受信するための制御デバイスであって、
サンプリング回路のデータ入力に結合されたデータ遅延ユニットを含むデータパスと、
前記サンプリング回路のクロック入力に結合されたクロック遅延ユニットを含むクロックパスと、
基準クロック又は前記データバスを前記データ遅延ユニットの入力に選択的に結合し、前記基準クロック又は前記ソースクロックを前記クロック遅延ユニットの入力に選択的に結合するように動作可能なマルチプレキシング回路と、
前記サンプリング回路のデータ出力に結合され、前記サンプリング回路の前記データ出力に基づいて前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値を調整して、前記データパスと前記クロックパスとの間の相対遅延を設定及び維持するように動作可能なキャリブレーションユニットと、を備える制御デバイス。
【請求項２】
前記キャリブレーションユニットが、前記マルチプレキシング回路を制御して、第１のモードで、前記基準クロックを前記データ遅延ユニットと前記クロック遅延ユニットの両方の入力に結合させ、第２のモードで、前記データバスを前記データ遅延ユニットの入力に結合させ、前記ソースクロックを前記クロック遅延ユニットの入力に結合させるように、動作可能である、請求項１に記載の制御デバイス。
【請求項３】
前記第１のモードの間、前記キャリブレーションユニットが、前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値を調整して、前記データパス及び前記クロックパス上の信号をアラインメントし、前記クロック遅延ユニットの出力を９０度シフトさせる、請求項２に記載の制御デバイス。
【請求項４】
前記第１のモードの間、前記キャリブレーションユニットが、前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値を調整して、前記データパス及び前記クロックパス上の信号をアラインメントし、前記第２のモードの間、前記キャリブレーションユニットが、前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値を調整して、前記ソースクロックを前記データバスのデータアイの中央に置く、請求項２又は３に記載の制御デバイス。
【請求項５】
前記データバスが、複数のデータ信号を含み、前記データ遅延ユニットが、前記複数のデータ信号のそれぞれに関連付けられた複数のデジタル遅延線を含む、請求項２から４のいずれか一項に記載の制御デバイス。
【請求項６】
前記第１のモードの間、前記キャリブレーションユニットが、前記複数のデジタル遅延線のタップ値を調整して、前記複数のデータ信号をアラインメントする、請求項５に記載の制御デバイス。
【請求項７】
前記基準クロックを受信するように結合された入力を有するマスタ遅延ユニットと、
前記マスタ遅延ユニットの出力に従って前記基準クロックをサンプリングするように結合されたフリップフロップと、を更に備え、
前記キャリブレーションユニットが、前記フリップフロップのデータ出力に結合され、前記キャリブレーションユニットが、前記マスタ遅延ユニットの出力と前記基準クロックとをアラインメントし、前記マスタ遅延ユニットの出力と前記基準クロックとの間のマスタ相対遅延を設定し、前記マスタ遅延ユニットの遅延値を調整して前記マスタ相対遅延を維持するように、動作可能である、請求項１から６のいずれか一項に記載の制御デバイス。
【請求項８】
前記キャリブレーションユニットが、前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値を調整して、前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値に対する前記マスタ遅延ユニットの遅延値の比率を維持することによって、前記データパスと前記クロックパスとの間の相対遅延を維持するように動作可能である、請求項７に記載の制御デバイス。
【請求項９】
前記基準クロックを受信するように結合された入力と、前記フリップフロップのデータ入力に結合された出力とを有する固定遅延回路を更に含む、請求項７又は８に記載の制御デバイス。
【請求項１０】
前記ソースシンクロナスインターフェースが、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）インターフェースを含み、前記制御デバイスが、前記ＳＤＲＡＭインターフェースを有するＳＤＲＡＭシステムに結合された集積回路（ＩＣ）内に配置される、請求項１から９のいずれか一項に記載の制御デバイス。
【請求項１１】
データバス及びソースクロックを有するソースシンクロナスインターフェースから受信する方法であって、
前記データバスの代わりに基準クロックをデータパスのデータ遅延ユニットの入力に結合することであって、前記データ遅延ユニットがサンプリング回路のデータ入力に結合されている、結合することと、
前記ソースクロックの代わりに前記基準クロックをクロックパスのクロック遅延ユニットの入力に結合することであって、前記クロック遅延ユニットが前記サンプリング回路のクロック入力に結合されている、結合することと、
前記データ遅延ユニット及び前記クロック遅延ユニットを制御して、前記データパスと前記クロックパスとの間の相対遅延を設定することと、  
前記基準クロックの代わりに前記データバスを前記データパスの前記データ遅延ユニットに結合し、前記基準クロックの代わりに前記ソースクロックを前記クロックパスの前記クロック遅延ユニットに結合することと、
前記サンプリング回路のデータ出力に基づいて前記データ遅延ユニット及び前記クロック遅延ユニットを制御して、前記データパスと前記クロックパスとの間の前記相対遅延を維持することと、を含む方法。
【請求項１２】
前記データ遅延ユニット及び前記クロック遅延ユニットを制御して、前記データパスと前記クロックパスとの間の相対遅延を設定することが、
前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値を調整して、
前記データパス及び前記クロックパス上の信号をアラインメントし、
前記クロック遅延ユニットの出力を９０度シフトさせることを含む、請求項１１に記載の方法。
【請求項１３】
前記データ遅延ユニット及び前記クロック遅延ユニットを制御して、前記データパスと前記クロックパスとの間の相対遅延を設定することが、
前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値を調整して、前記データパス及び前記クロックパス上の信号をアラインメントすることと、
前記データバスを前記データパスに結合し、前記ソースクロックを前記クロックパスに結合することと、
前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値を調整して、前記ソースクロックを前記データバスのデータアイの中央に置くこととを含む、請求項１１又は１２に記載の方法。
【請求項１４】
前記基準クロックをマスタ遅延ユニットに結合することと、
前記マスタ遅延ユニットの出力と前記基準クロックとをアラインメントすることと、
前記マスター遅延ユニットを制御して、前記マスタ遅延ユニットの出力と前記基準クロックとの間のマスタ相対遅延を設定することと、
前記マスタ遅延ユニットの遅延値を調整して、前記マスタ相対遅延を維持することと、を更に含み、
前記データ遅延ユニット及び前記クロック遅延ユニットを制御して、前記データパスと前記クロックパスとの間の前記相対遅延を維持することが、
前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値を調整して、前記データ遅延ユニット及び前記クロック遅延ユニットの遅延値に対する前記マスタ遅延ユニットの遅延値の比率を維持することを含む、請求項１１から１３のいずれか一項に記載の方法。
【請求項１５】
前記ソースシンクロナスインターフェースが、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）インターフェースを含み、前記データパス及び前記クロックパスが、前記ＳＤＲＡＭインターフェースを有するＳＤＲＡＭシステムに結合された集積回路（ＩＣ）内に配置される、請求項１１から１４のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は、一般に、電子回路に関し、詳細には、ソースシンクロナスインターフェースから受信する制御デバイスのキャリブレーションに関する。
【背景技術】
【０００２】
ダブルデータレート（ＤＤＲ）ＳＤＲＡＭメモリなどのシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）は、その性能と集積度のために好評である。メモリチップ上の面積を削減するために、デバイスを制御する負担の多くが、メモリ制御デバイスにオフロードされて来た。これらのメモリ制御デバイスは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）デバイスなどに存在することができ、またはＳＤＲＡＭメモリを制御する目的専用のデバイスに存在することができる。ＳＤＲＡＭメモリは、データバスと並行にソースクロックを供給するソースシンクロナスインターフェースを含む。
【０００３】
ソースシンクロナスインターフェースから受信する場合、データバス上のスキューおよびソースクロックとデータバスとの間のスキューが、堅牢なデータ取得に課題を提供する。このようなスキューは、ソースクロックによってデータバスをサンプリングするためのデータアイの実効サイズを減少させる可能性がある。スキューを補償する１つの技法は、制御デバイスの実施中にデータおよびクロックパスの遅延をマッチングさせようとすることを含む。しかしながら、このような技法は、設計にかかわらずデータおよびクロックパスの遅延のばらつきを引き起こす可能性があるチップ内ばらつき（ＯＣＶ）に悩まされる。さらに、そのような技法は、特定の電圧温度（ＶＴ）ポイントに限定される。ＶＴポイントはデバイス動作中に変化するため、データおよびクロックパスの遅延は、設計にかかわらず変化する。
【発明の概要】
【０００４】
ソースシンクロナスインターフェースから受信する制御デバイスのキャリブレーションのための技法について説明する。一例では、データバスおよびソースクロックを有するソースシンクロナスインターフェースから受信するための制御デバイスが提供される。制御デバイスは、データパスと、クロックパスと、マルチプレキシング回路と、キャリブレーションユニットとを含む。データパスは、サンプリング回路のデータ入力に結合されたデータ遅延ユニットを含む。クロックパスは、サンプリング回路のクロック入力に結合されたクロック遅延ユニットを含む。マルチプレキシング回路は、基準クロックまたはデータバスをデータ遅延ユニットの入力に選択的に結合し、基準クロックまたはソースクロックをクロック遅延ユニットの入力に選択的に結合するように動作可能である。キャリブレーションユニットは、サンプリング回路のデータ出力に結合される。キャリブレーションユニットは、サンプリング回路のデータ出力に基づいて、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、データパスとクロックパスとの間の相対遅延を設定および維持するように動作可能である。
【０００５】
任意選択で、キャリブレーションユニットは、マルチプレキシング回路を制御して、第１のモードで、基準クロックをデータ遅延ユニットとクロック遅延ユニットの両方の入力に結合させ、第２のモードで、データバスをデータ遅延ユニットの入力に結合させ、ソースクロックをクロック遅延ユニットの入力に結合させるように、動作可能である。
【０００６】
任意選択で、第１のモードの間、キャリブレーションユニットは、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、データパスおよびクロックパス上の信号をアラインメントし、クロック遅延ユニットの出力を９０度シフトさせる。
【０００７】
任意選択で、第１のモードの間、キャリブレーションユニットは、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、データパスおよびクロックパス上の信号をアラインメントし、第２モードの間、キャリブレーションユニットは、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、ソースクロックをデータバスのデータアイの中央に置く。
【０００８】
任意選択で、データバスは複数のデータ信号を含んでもよく、データ遅延ユニットは、それぞれの複数のデータ信号に関連付けられた複数のデジタル遅延線を含む。
【０００９】
任意選択で、第１のモードの間、キャリブレーションユニットは、複数のデジタル遅延線のタップ値を調整して、複数のデータ信号をアラインメントする。
【００１０】
任意選択で、制御デバイスは、基準クロックを受信するように結合された入力を有するマスタ遅延ユニットと、マスタ遅延ユニットの出力に従って基準クロックをサンプリングするように結合されたフリップフロップとをさらに含むことができる。キャリブレーションユニットは、フリップフロップのデータ出力に結合されてもよく、キャリブレーションユニットは、マスタ遅延ユニットの出力と基準クロックとをアラインメントし、マスタ遅延ユニットの出力と基準クロックとの間のマスタ相対遅延を設定し、マスタ遅延ユニットの遅延値を調整してマスタ相対遅延を維持するように、動作可能であってもよい。
【００１１】
任意選択で、キャリブレーションユニットは、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、データ遅延ユニットおよびクロック遅延ユニットの遅延値に対するマスタ遅延ユニットの遅延値の比率を維持することによって、データパスとクロックパスとの間の相対遅延を維持するように動作可能であってもよい。
【００１２】
任意選択で、制御デバイスは、基準クロックを受信するように結合された入力と、フリップフロップのデータ入力に結合された出力とを有する固定遅延回路をさらに含むことができる。
【００１３】
任意選択で、ソースシンクロナスインターフェースは、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）インターフェースを含み、制御デバイスが、ＳＤＲＡＭインターフェースを有するＳＤＲＡＭシステムに結合された集積回路（ＩＣ）内に配置される。
【００１４】
別の例では、システムは、メモリ制御デバイスに結合されたシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システムを備える。ＳＤＲＡＭシステムは、データバスおよびソースクロックを含む。メモリ制御デバイスは、サンプリング回路と、データ遅延ユニットと、クロック遅延ユニットと、マルチプレキシング回路と、キャリブレーションユニットとを含む。データ遅延ユニットは、サンプリング回路のデータ入力に結合される。クロック遅延ユニットは、サンプリング回路のクロック入力に結合される。マルチプレキシング回路は、基準クロックまたはデータバスをデータ遅延ユニットの入力に選択的に結合し、基準クロックまたはソースクロックをクロック遅延ユニットの入力に選択的に結合するように動作可能である。キャリブレーションユニットは、サンプリング回路のデータ出力に結合される。キャリブレーションユニットは、サンプリング回路のデータ出力に基づいて、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、データ遅延ユニットとクロック遅延ユニットの出力間の相対遅延を設定および維持するように動作可能である。
【００１５】
任意選択で、キャリブレーションユニットは、第１のモードにおいて基準クロックをデータ遅延ユニットとクロック遅延ユニットの両方の入力に結合するようにマルチプレキシング回路を制御し、第１のモードの間、データ遅延ユニットとクロック遅延ユニットの遅延値を調整して、データ遅延ユニットとクロック遅延ユニットの出力をアラインメントし、クロック遅延ユニットの出力を９０度シフトさせるように、動作可能であってもよい。
【００１６】
任意選択で、キャリブレーションユニットは、第１のモードにおいて基準クロックをデータ遅延ユニットとクロック遅延ユニットの両方の入力に結合するようにマルチプレキシング回路を制御し、第１のモードの間、データ遅延ユニットとクロック遅延ユニットの遅延値を信号アラインメントのために調整するように、動作可能であってもよい。キャリブレーションユニットはまた、第２モードにおいて、データバスをデータ遅延ユニットの入力に結合し、ソースクロックをクロック遅延ユニットの入力に結合するように、マルチプレキシング回路を制御し、第２モードの間、データ遅延ユニット及びクロック遅延ユニットの遅延値を調整して、ソースクロックをデータバスのデータアイの中央に置くように、動作可能であってもよい。
【００１７】
任意選択で、データバスは複数のデータ信号を更に含んでもよく、データ遅延ユニットは、それぞれの複数のデータ信号に関連付けられた複数のデジタル遅延線を含む。第１のモードの間、キャリブレーションユニットは、複数のデータ信号をアラインメントするために、複数のデジタル遅延線のタップ値を調整するように動作可能であってもよい。
【００１８】
任意選択で、メモリ制御デバイスは、基準クロックを受信するように結合された入力を有するマスタ遅延ユニットと、マスタ遅延ユニットの出力に従って基準クロックをサンプリングするように結合されたフリップフロップとをさらに含んでよい。キャリブレーションユニットは、フリップフロップのデータ出力に結合されてもよく、キャリブレーションユニットは、マスタ遅延ユニットの出力と基準クロックとをアラインメントし、マスタ遅延ユニットの出力と基準クロックとの間のマスタ相対遅延を設定し、マスタ遅延ユニットの遅延値を調整して、マスタ相対遅延を維持し、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、データ遅延ユニットおよびクロック遅延ユニットの遅延値に対するマスタ遅延ユニットの遅延値の比率を維持することによって、データパスとクロックパスとの間の相対遅延を維持するように、動作可能であってもよい。
【００１９】
別の例では、データバスおよびソースクロックを有するソースシンクロナスインターフェースから受信する方法は、基準クロックをデータパスおよびクロックパスに結合することであって、データパスは、サンプリング回路のデータ入力に結合されたデータ遅延ユニットを含み、クロックパスは、サンプリング回路のクロック入力に結合されたクロック遅延ユニットを含む、結合することと、データパスとクロックパスとの間の相対遅延を設定するように、データ遅延ユニットおよびクロック遅延ユニットを制御することと、データバスをデータパスに結合し、ソースクロックをクロックパスに結合することと、データパスとクロックパスとの間の相対遅延を維持するように、データ遅延ユニットおよびクロック遅延ユニットを制御することと、を含む。
【００２０】
任意選択で、データパスとクロックパスとの間の相対遅延を設定するように、データ遅延ユニットおよびクロック遅延ユニットを制御することは、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、データパスおよびクロックパス上の信号をアラインメントし、クロック遅延ユニットの出力を９０度シフトさせることを含んでよい。
【００２１】
任意選択で、データパスとクロックパスとの間の相対遅延を設定するように、データ遅延ユニットおよびクロック遅延ユニットを制御することは、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、データパスおよびクロックパス上の信号をアラインメントすることと、データパスにデータバスを結合し、クロックパスにソースクロックを結合することと、データ遅延ユニットおよびクロック遅延ユニットの遅延値を調整して、ソースクロックをデータバスのデータアイの中央に置くことと、を含んでもよい。
【００２２】
任意選択で、この方法は、基準クロックをマスタ遅延ユニットに結合することと、マスタ遅延ユニットの出力と基準クロックとをアラインメントすることと、マスタ遅延ユニットの出力と基準クロックとの間のマスタ相対遅延を設定するように、マスタ遅延ユニットを制御することと、マスタ相対遅延を維持するように、マスタ遅延ユニットの遅延値を調整することと、を更に含んでよい。データパスとクロックパスとの間の相対遅延を維持するように、データ遅延ユニット及びクロック遅延ユニットを制御することは、データ遅延ユニット及びクロック遅延ユニットの遅延値を調整して、データ遅延ユニットおよびクロック遅延ユニットの遅延値に対するマスタ遅延ユニットの遅延値の比率を維持すること、を含んでよい。
【００２３】
任意選択で、ソースシンクロナスインターフェースは、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）インターフェースを含んでよく、データパスとクロックパスが、ＳＤＲＡＭインターフェースを有するＳＤＲＡＭシステムに結合された集積回路（ＩＣ）内に配置される。
【００２４】
これらおよび他の態様は、以下の詳細な説明を参照して理解され得る。
【００２５】
上記に列挙した特徴を詳細に理解できるように、上記で簡単に要約した、より詳細な説明が、実施例を参照することによって得られ、そのいくつかを添付の図面に示す。しかしながら、添付の図面は典型的な実施例のみを示しているので、その範囲を限定するものと見なすべきではないことに留意されたい。
【図面の簡単な説明】
【００２６】
【図１】シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システムに結合された集積回路（ＩＣ）を有するシステムの例を示すブロック図である。
【図２】メモリ制御デバイスの一例を示すブロック図である。
【図３】ソースシンクロナスデバイスのソースシンクロナスインターフェースから受信するために使用されるタイミング論理の一例を示すブロック図である。
【図４】ソースシンクロナスインターフェースから受信するように結合された制御デバイス内のデータパスおよびクロックパスに結合された信号の例を示す信号プロットである。
【図５】アラインメントおよびクロックセンタリングの後における、ソースシンクロナスインターフェースから受信するように結合された制御デバイス内のデータパスおよびクロックパス上の信号の一例を示す信号プロットである。
【図６】データバスとソースクロックを有するソースシンクロナスインターフェースから受信する方法の一例を示すフロー図である。
【図７】ソースシンクロナスインターフェースから受信するように結合された制御デバイス内のマスタ遅延ユニットを管理する方法の一例を示すフロー図である。
【発明を実施するための形態】
【００２７】
理解を容易にするため、可能な場合には、図に共通する同一の要素を示すのに、同一の参照番号を使用した。１つの例の要素は他の例に有益に組み込むことができると、考えられる。
【００２８】
ソースシンクロナスインターフェースから受信する制御デバイスのキャリブレーションのための技法について説明する。一例では、ソースシンクロナスインターフェースの制御デバイスは、データを正常に取得するために、パラレルデータバスのビットとそのソースシンクロナスクロックとの間の遅延スキューを除去する。制御デバイスは、システムの電圧、温度、またはその両方（ＶＴ）が変化するときに、デスキュー効果を維持する。制御デバイスは、サンプリング回路へのデータパスおよびクロックパスが遅延マッチングされるように、オンチッププロセス変動並びにデータパスおよびクロックパスに沿ったミスマッチの悪影響を除去する。制御デバイスは、ＶＴが時間と共に変化するとき、クロックとデータとの間の相対遅延を維持する。本開示のこれらおよびさらなる態様が、以下で論じられる。
【００２９】
図１は、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システム１０６に結合された集積回路（ＩＣ）１０２を有するシステム１００の一例を示すブロック図である。ＩＣ１０２およびＳＤＲＡＭシステム１０６は、プリント回路基板（ＰＣＢ）１０１または他のタイプの基板上に実装することができる。ＩＣ１０２は、メモリ制御デバイス１０４を含む。メモリ制御デバイス１０４は、バス１０９を介してＳＤＲＡＭシステム１０６に結合される。バス１０９は、ＰＣＢ１０１上のインターコネクトを使用して実装される。バス１０９は、メモリ制御デバイス１０４とＳＤＲＡＭシステム１０６との間に制御インターフェース１１２およびソースシンクロナスインターフェース１１４を提供する。制御インターフェース１１２は、アドレス信号、コマンド信号、およびクロック信号などの制御信号をＳＤＲＡＭシステム１０６に伝達する。ソースシンクロナスインターフェース１１４は、データバス１１６およびソースクロック１１８を含む。ＳＤＲＡＭシステム１０６の場合、データバス１１６はデータ（ＤＱ）信号を伝達し、ソースクロック１１８は１つ以上のデータストローブ（ＤＱＳ）信号を含む。バス１０９は、電圧供給信号などの他の信号を伝達することができる。ＩＣ１０２は、メモリ制御デバイス１０４専用のデバイスであってもよいし、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、システム・オン・チップ（ＳｏＣなど）などの、他の機能を有するデバイスであってもよい。
【００３０】
ＳＤＲＡＭシステム１０６は、１つ以上のＳＤＲＡＭデバイス１１０を含む。ＳＤＲＡＭデバイス１１０は、１つ以上のデュアルインラインメモリモジュール（ＤＩＭＭ）などの、ＰＣＢ１０１に取り付けられた１つ以上のモジュール上に１つ以上のランクのメモリを提供することができる。あるいは、ＳＤＲＡＭデバイス１１０は、特定のモジュール構造なしでＰＣＢ１０１に実装することができる。例示的なＳＤＲＡＭデバイス１１０は、ＤＤＲ  ＳＤＲＡＭデバイス（例えば、ＤＤＲ２、ＤＤＲ３、またはＤＤＲ４デバイス）を含む。ＳＤＲＡＭシステム１０６は、レジスタ、コントローラなど（図示せず）の、ＳＤＲＡＭデバイス１１０の動作をサポートする他の回路を含むことができる。
【００３１】
例えば、各ＳＤＲＡＭデバイス１１０は、８つのＤＱ信号と少なくとも１つのＤＱＳ信号（例えば、ＤＱＳ信号とネゲートされたＤＱＳ信号）とを有するソースシンクロナスインターフェースを含むことができる。ＳＤＲＡＭシステム１０６内のランクは、合計７２個のＤＱ信号と少なくとも９個のＤＱＳ信号とを有するソースシンクロナスインターフェースを提供するために９個のＳＤＲＡＭデバイス１１０を含むことができる。ＳＤＲＡＭデバイス１１０は、他の数のＤＱおよびＤＱＳ信号とのソースシンクロナスインターフェースを有することができ、ランクは異なる数のＳＤＲＡＭデバイスを有することができ、ソースシンクロナスインターフェース１１４は他の幅を有することができる。例えば、いくつかのＳＤＲＡＭシステムは、１４４個のＤＱ信号の幅を有するデータバスを提供する。
【００３２】
図２は、メモリ制御デバイス１０４の一例を示すブロック図である。メモリ制御デバイス１０４は、アプリケーションインターフェース２０２、メモリコントローラ２０４、物理（ＰＨＹ）ユニット２１０、及び入出力（ＩＯ）回路２１６を含む。アプリケーションインターフェース２０２は、他の回路（図示せず）からＳＤＲＡＭシステム１０６に書き込まれるデータ（「書き込みデータ」）を受け取り、ＳＤＲＡＭシステム１０６から読み出されたデータ（「読み出しデータ」）を他の回路（図示せず）に供給する。アプリケーションインターフェース２０２は、書き込みデータをメモリコントローラ２０４に供給する。メモリコントローラ２０４は、ＳＤＲＡＭシステム１０６への及びＳＤＲＡＭシステム１０６からのトランザクションを生成する。メモリコントローラ２０４は、ライトトランザクションを生成して、書き込みデータをＳＤＲＡＭシステム１０６に記憶させ、リードトランザクションを生成して、ＳＤＲＡＭシステム１０６から読み出しデータを取得する。
【００３３】
ＩＯ回路２１６は、バス１０９上の信号を駆動し、バス１０９から信号を受信し、信号を整形する等の回路を含む。ＰＨＹユニット２１０は、メモリコントローラ２０４とＩＯ回路２１６との間のインターフェースを提供する。ＰＨＹユニット２１０は、制御インターフェース１１２を通したＩＯ回路２１６による送信のためのアドレス、コマンド、およびクロック信号を出力する。ＰＨＹユニット２１０は、ＳＤＲＡＭシステム１０６にデータを書き込むために、ソースシンクロナスインターフェース１１４を通してＩＯ回路２１６が送信するためのＤＱおよびＤＱＳ信号を出力する。ＰＨＹユニット２１０は、ＳＤＲＡＭシステム１０６からデータを読み出すために、ソースシンクロナスインターフェース１１４を通してＩＯ回路２１６によって受信されたＤＱおよびＤＱＳ信号を入力として受け取る。
【００３４】
ＰＨＹユニット２１０は、ライトパス論理２１２およびリードパス論理２１４を含む。ライトパス論理２１２は、ＳＤＲＡＭシステム１０６へのコマンド及び書き込みデータの送信のために、メモリコントローラ２０４からのライトトランザクションをフォーマットする。リードパス論理２１４は、ＳＤＲＡＭシステム１０６へのコマンドの送信およびＳＤＲＡＭシステム１０６からのデータの受信のために、メモリコントローラ２０４からのリードトランザクションをフォーマットする。リードパス論理２１４は、ソースシンクロナスインターフェース１１４からの読み出しデータの取り込みを制御するタイミング論理２０８を含む。タイミング論理２０８は、ＳＤＲＡＭシステム１０６のソースシンクロナスインターフェース１１４から読み出しデータを受け取るときに、データバス１１６上のスキューおよびデータバス１１６とソースクロック１１８との間のスキューを補償する。
【００３５】
図３は、タイミング論理２０８の一例を示すブロック図である。タイミング論理２０８は、ＳＤＲＡＭシステム１０６のソースシンクロナスインターフェースに関して論じられているが、以下の説明から明らかなように、タイミング論理２０８は、任意のタイプのソースシンクロナスデバイス又はシステムのソースシンクロナスインターフェースから受信するために用いることができる。一例では、タイミング論理２０８は、データパス３２２、クロックパス３２４、マルチプレキシング回路３１５、およびキャリブレーションユニット３０２を含む。データパス３２２は、サンプリング回路３１９のデータ入力に結合されたデータ遅延ユニット３１０を含む。クロックパス３２４は、サンプリング回路３１９のクロック入力に結合されたクロック遅延ユニット３１２を含む。データパス３２２はＮビット幅であり、Ｎは０より大きい整数であり、データバス１１６の幅に対応する。データ遅延ユニット３１０は、データパス３２２上の各信号に対して１つの、Ｎ個のデジタル遅延線（デジタル遅延線（単数又は複数）３１１）を含むことができる。クロック遅延ユニット３１２は、クロックパス３２４上の信号のためのデジタル遅延線３１３を含むことができる。データパス３２２はまた、マルチプレキシング回路３１５とデータ遅延ユニット３１０との間、およびデータ遅延ユニット３１０とサンプリング回路３１９との間で信号をルーティングするための導体（矢印によって概略的に示される）を含む。クロックパス３２４はまた、マルチプレキシング回路３１５とクロック遅延ユニット３１２との間、およびクロック遅延ユニット３１２とサンプリング回路３１９との間で信号をルーティングするための導体（矢印によって概略的に示される）を含む。
【００３６】
サンプリング回路３１９のデータ出力は、キャリブレーションユニットに結合される。サンプリング回路３１９のデータ出力は、データパス３２２の幅に対応するＮビット幅である。サンプリング回路３１９は、データパス３２２上の各信号に対して１つの、Ｎ個のフリップフロップ（フリップフロップ（単数又は複数）３２０）を含むことができる。クロック遅延ユニット３１２の出力は、各フリップフロップ３２０のクロック入力に結合される。
【００３７】
マルチプレキシング回路３１５は、マルチプレクサ３１４およびマルチプレクサ３１６を含む。マルチプレクサ３１４は、ソースシンクロナスインターフェース１１４のデータバス１１６及びクロックソース３０４によって生成された基準クロックに結合された入力を含む。マルチプレクサ３１４の入力はＮビット幅であり、一方の入力はデータバス１１６のＮ個の信号を受け取り、他方の入力は基準クロックに接続される。キャリブレーションユニット３０２は、マルチプレクサ３１４の制御入力に結合されて、データバス１１６または基準クロックのいずれかを、データパス１１６に結合されるように選択する。マルチプレクサ３１６は、ソースシンクロナスインターフェース１１４のソースクロック１１８および基準クロックに結合された入力を含む。キャリブレーションユニット３０２は、マルチプレクサ３１６の制御入力に結合されて、ソースクロック１１８または基準クロックのいずれかを、クロックパス３２４に結合されるように選択する。マルチプレキシング回路３１５は、ＩＯ回路２１６を介してデータバス１１６およびソースクロック１１８から信号を受け取ることができる。
【００３８】
一例では、タイミング論理２０８は、フリップフロップ３１８のクロックポートに結合されたマスタ遅延ユニット３０８も含む。マスタ遅延ユニット３０８は、デジタル遅延線３０９を含むことができる。マスタ遅延ユニット３０８は、基準クロックを受信するように結合された入力を含む。フリップフロップ３１８のデータ入力は、基準クロックを受信するように結合される。一例では、フリップフロップ３１８のデータ入力は、固定遅延を基準クロックに適用する固定遅延回路３０６の出力に結合することができる。フリップフロップ３１８のデータ出力は、キャリブレーションユニット３０２に結合される。
【００３９】
キャリブレーションユニット３０２は、マスタ遅延ユニット３０８、データ遅延ユニット３１０、およびクロック遅延ユニット３１２の制御入力に結合される。キャリブレーションユニット３０２は、サンプリング回路３１９及びフリップフロップ３１８のデータ出力に基づいて、マスタ遅延ユニット３０８、データ遅延ユニット３１０及びクロック遅延ユニット３１２の遅延値を設定する。例えば、キャリブレーションユニット３０２は、デジタル遅延線３０９、デジタル遅延線３１１、およびデジタル遅延線３１３のタップ値を設定することができる。キャリブレーションユニット３０２は、フリップフロップ３１８およびサンプリング回路３１９のデータ出力に応答して遅延値３２８を出力する１つ以上のステートマシン（ステートマシン（単数又は複数）３２６）を含むことができる。
【００４０】
動作中、キャリブレーションユニット３０２は、データトランザクション（例えば、ＳＤＲＡＭシステム１０６のリードトランザクション）の開始の前に、データパス３２２およびクロックパス３２４を動的にデスキューすることによって、電圧、温度、またはその両方（ＶＴに対する変化と呼ぶ）における変化、およびチップ内ばらつき（ＯＣＶ）の影響をキャリブレートするように、タイミング論理２０８を制御する。データパス３２２上の信号（単数又は複数）に適用される遅延は、データ遅延ユニット３１０によって適用される遅延とデータパス３２２の固有遅延との和である。同様に、クロックパス３２４上の信号に適用される遅延は、クロック遅延ユニット３１２によって適用される遅延とクロックパス３２４の固有遅延との和である。データパス３２２およびクロックパス３２４の固有遅延は、内部（例えば、オンチップ）スキューを引き起こす。ＰＣＢ１０１上のデータバス１１６およびソースクロック１１８に適用される遅延は、外部スキュー（例えば、ＩＣ１０２の外部の要素によって引き起こされるスキュー）と呼ばれる。
【００４１】
データパス３２２およびクロックパス３２４の固有遅延は、メモリ制御デバイス１０４内のＶＴの変化に伴って変化し、したがって、内部スキューは、ＶＴのそのような変化と共に変化する。対照的に、メモリ制御デバイス１０４内のＶＴの変化は、外部環境に実質的な影響を及ぼさず、したがって、外部スキューは、メモリ制御デバイス１０４内のＶＴの変化に対して一定または実質的に一定である。データパス３２２とクロックパス３２４が遅延マッチングしていない場合、データバスとソースクロックとの間の相対遅延は、時間と共に（例えば、ＶＴが変化するにつれて）変化し得る。タイミング論理２０８は、データ遅延ユニット３１０およびクロック遅延ユニット３１２の特定の絶対遅延値をロックしようとすることによってスキューを補償するということはしない。データ遅延ユニット３１０およびクロック遅延ユニット３１２に対して特定の絶対遅延値をロックすることは、それらが設定された特定のＶＴポイントに対してのみ有効であり、ＶＴポイントが変化すると内部スキューを補償しない。絶対遅延値をロックする代わりに、タイミング論理２０８は、データパス３２２とクロックパス３２４との間の相対遅延を設定し、データトランザクション中に相対遅延を維持するように動作することによって、スキューを補償する。
【００４２】
キャリブレーションユニット３０２は、一般に、３つのキャリブレーションステップを実行する。（１）データアイを最大化し、内部スキューを補償するために、データパス３２２およびクロックパス３２４上の信号をアラインメントすること。（２）ソースクロックをデータアイの中央に置くこと。（３）データトランザクション中にデータ遅延ユニット３１０およびクロック遅延ユニット３１２の遅延値を更新して、自動ＶＴトラッキングを実行すること。キャリブレーションユニット３０２は、マルチプレキシング回路３１５を、２つのモードで動作するように、制御することができる。（１）マルチプレキシング回路３１５が基準クロックをデータパス３２２およびクロックパス３２４に結合するセルフキャリブレーションモード、（２）マルチプレキシング回路３１５がデータバス１１６をデータパス３２２に結合し、ソースクロック１１８をクロックパス３２４に結合するトランザクションモード。キャリブレーションプロセスが、外部スキューが最小化される（例えば、バス１０９のＰＣＢトレースマッチングによって）ことを仮定して、最初に説明される。
【００４３】
第１のキャリブレーションステップ（アラインメント）において、キャリブレーションユニット３０２が、セルフキャリブレーションモードを起動する。キャリブレーションユニット３０２は、データ遅延ユニット３１０およびクロック遅延ユニット３１２の遅延値を調整して、データバス１１６およびソースクロック１１８上の信号をアラインメントする。データバス１１６が複数のデータ信号（例えば、Ｎ＞１）を含む場合、キャリブレーションユニット３０２は、データバス１１６上の個々のデータ信号をアラインメントするために、データ遅延ユニット３１０の遅延値を調整する。ある特定の信号を別の信号とアラインメントするのに必要な遅延値は、「アラインメント遅延値」と呼ばれる。さらに、キャリブレーションユニット３０２は、マスタ遅延ユニット３０８の遅延値を調整して、マスタ遅延ユニット３０８の出力と基準クロック信号（例えば、固定遅延回路３０６によって出力される）とをアラインメントする。次に、キャリブレーションユニット３０２は、マスター遅延ユニット３０８の遅延値を調整して、基準クロック信号とマスター遅延ユニット３０８の出力との間の相対遅延（「マスタ相対遅延」と呼ばれる）を設定する。例えば、キャリブレーションユニット３０２は、マスタ遅延ユニット３０８の出力をＴ／２だけシフトすることができ、Ｔは基準クロックの周期である。
【００４４】
図４Ａは、セルフキャリブレーションモードにおいてデータパス３２２及びクロックパス３２４に結合された信号の例を示す信号プロットである。この例では、データバス１１６は４つのデータ信号を含むので、データパス３２２には、データ０からデータ３と呼ばれる４つの信号パスが存在する。クロックパス３２４は、クロックと呼ばれる単一の信号パスを含む。アラインメントの前に、データパス３２２上の信号は、互いに対して遅延している。キャリブレーションユニット３０２は、信号の１つを基準として選択し、データ遅延ユニット３１０の遅延値を調整して、他の信号のアラインメント遅延値を決定することができる。一般に、最も遅いエッジを有する信号を基準として選択することができ、これは、データパス３２２上のデータ信号またはクロックパス３２４上のクロック信号であってよい。この例では、データ３上の信号が基準として選択され、対応するアラインメント遅延値Ａ３はゼロである。データ０〜データ２上の信号は、データ３上の基準信号に対して遅延され、対応するアラインメント遅延値Ａ０、Ａ１、およびＡ２を有する。クロック上の信号は、データ３上の信号に対して遅延され、対応するアラインメント遅延値ＡＤＱＳを有する。キャリブレーションユニット３０２は、データ遅延ユニット３１０及びクロック遅延ユニット３１２の遅延値を調整して、Ａ０、Ａ１、Ａ２、Ａ３及びＡＤＱＳを決定する。
【００４５】
図４Ｂは、セルフキャリブレーションモードにおけるマスタデータ及びクロック信号の例を示す信号プロットである。マスタデータと呼ばれる信号が、フリップフロップ３１８のデータ入力に結合される。マスタクロックと呼ばれる信号が、マスタ遅延ユニット３０８によって出力され、フリップフロップ３１８のクロック入力に結合される。キャリブレーションユニット３０２が、マスタデータとマスタクロックとの間のアラインメント遅延値ＡＭを決定する。固定遅延回路３０６は、ある初期の非ゼロ遅延がマスタデータとマスタクロックとの間にあるように構成することができる。上述したように、次に、キャリブレーションユニット３０２は、マスタ遅延ユニット３０８の出力を固定量だけシフトして、マスタ相対遅延（例えば、Ｔ／２だけシフト）を設定する。
【００４６】
図３に戻って、キャリブレーションユニット３０２は、遅延値の調整と、フリップフロップ３１８及びサンプリング回路３１９のデータ出力の測定を反復すること（単数回又は複数回）に基づいて、アラインメント遅延値Ａ０、Ａ１、Ａ２、Ａ３、ＡＤＱＳ、およびＡＭを決定するために、ステートマシン（単数又は複数）３２６を使用することができる。第２のキャリブレーションステップ（クロックセンタリング）で、キャリブレーションユニット３０２は、セルフキャリブレーションモードを再び起動する（または維持する）ことができる。キャリブレーションユニット３０２は、クロック遅延ユニット３１２の遅延値を調整して、クロックパス３２４上の信号をデータアイの中央に置く。クロックパス３２４は、第１のキャリブレーションステップにおいてデータパス３２２とアラインメントされているので、クロック遅延ユニット３１２の遅延値を調整して、クロックパス３２４上の信号を９０度（例えば、クロック周期Ｔの１／４）シフトさせることによって、クロックセンタリングが行われる。
【００４７】
図５は、アラインメントおよびクロックセンタリング後のデータパス３２２およびクロックパス３２４上の信号の一例を示す信号プロットである。データ０、データ１、データ２、およびデータ３の信号は、上述のようにアラインメントされる。クロックパス３２４上の信号は、シフト遅延ＡＤＱＳ＿ＱＴだけシフトされ、信号をデータアイの中央に置く（例えば、ＡＤＱＳ＿ＱＴ＝Ｔ／４、ここでＴはクロック周期である）。従って、クロック遅延ユニット３１２の遅延値は、アラインメント遅延値ＡＤＱＳとシフト遅延ＡＤＱＳ＿ＱＴとの和である。
【００４８】
図３に戻って、第２のキャリブレーションステップ（クロックセンタリング）の後、キャリブレーションユニット３０２は、データパス３２２とクロックパス３２４との間に相対遅延を設定した。相対遅延は、ある特定のＶＴポイントで内部スキューを補償する。セルフキャリブレーションの後、キャリブレーションユニット３０２は、トランザクションモードを起動することができ、リードトランザクション中にソースクロックがデータアイの中央に置かれる。第３のキャリブレーションステップ（ＶＴトラッキング）で、キャリブレーションユニット３０２は、データ遅延ユニット３１０およびクロック遅延ユニット３１２の遅延値を調整することによって、データパス３２２とクロックパス３２４との間の相対遅延を維持するように動作する。ＶＴトラッキングの間、キャリブレーションユニット３０２は、ＶＴが変化するときに、遅延アラインメント中に設定されたマスタ相対遅延を維持するように、マスタ遅延ユニット３０８の遅延値を調整する。キャリブレーションユニット３０２は、マスタ遅延ユニット３０８の遅延値と、データ遅延ユニット３１０及びクロック遅延ユニット３１２の遅延値との比率（「ギア比」と呼ばれる）を維持する。キャリブレーションユニット３０２は、データ遅延ユニット３１０およびクロック遅延ユニット３１２の絶対遅延値を変更してギア比を維持し、その結果、データパス３２２とクロックパス３２４との間の相対遅延を維持し、ソースクロックをＶＴの変化にわたってデータアイの中央に置き続ける。
【００４９】
外部スキューが最小化される場合、セルフキャリブレーションモードを使用して、キャリブレーションプロセスのアラインメントおよびクロックセンタリングステップを実行することができる。外部キャリブレーションプロセスは必要ではない（例えば、ＳＤＲＡＭシステム１０６とのキャリブレーショントランザクションを伴う外部トレーニングプロセスは必要ない）。外部スキューが最小化されない場合、キャリブレーションプロセスのアラインメントステップにおいて実行されるアラインメントは、外部スキューの結果として、データバス１１６とソースクロック１１８のアラインメントをもたらさない。このように、セルフキャリブレーションモードにおけるクロックセンタリングは、ソースクロック１１８をデータアイの中央に置くことにはならない。したがって、いくつかの例では、キャリブレーションユニット３０２は、セルフキャリブレーションアラインメント後に外部キャリブレーションを実行することができる。キャリブレーションユニット３０２は、ＰＨＹユニット２１０からの外部キャリブレーション制御信号に応答して、外部キャリブレーションを起動することができる。外部キャリブレーションの場合、キャリブレーションユニット３０２は、トランザクションモードを起動して、データバス１１６をデータパス３２２に結合し、ソースクロック１１８をクロックパス３２４に結合する。ＰＨＹユニット２１０は、ＳＤＲＡＭシステム１０６との１つ以上のキャリブレーショントランザクションを開始し、キャリブレーションユニット３０２は、データ遅延ユニット３１０およびクロック遅延ユニット３１２の遅延値を調整して、ソースクロックをデータアイの中央に置く。新しい遅延値は、ある特定のＶＴポイントでの外部スキューと内部スキューの両方を考慮する。次いで、キャリブレーションユニット３０２は、内部スキューの対応する変化を補償するために、上述のように、遅延値を調整し、ギア比を維持するために、リードトランザクション中にＶＴトラッキングを実行することができる。上述したように、外部スキューは、メモリ制御デバイス１０４内のＶＴ変化にわたって一定またはほぼ一定である。
【００５０】
図６は、データバスとソースクロックを有するソースシンクロナスインターフェースから受信する方法６００の一例を示すフロー図である。方法６００はステップ６０２で始まり、キャリブレーションユニット３０２が、セルフキャリブレーションモードのために基準クロックをデータパスおよびクロックパスに結合するように動作する。ステップ６０４において、キャリブレーションユニット３０２は、データ及びクロック遅延ユニット３１０，３１２を制御して、データパス３２２とクロックパス３２４との間の相対遅延を設定する。一例では、ステップ６０４はステップ６１０で開始し、キャリブレーションユニット３０２が、信号アラインメントのためにデータ遅延ユニット３１０およびクロック遅延ユニット３１２の遅延値を調整する。ステップ６１２において、キャリブレーションユニット３０２は、外部キャリブレーションが実行されるべきかどうかを決定する。例えば、キャリブレーションユニット３０２は、ＰＨＹユニット２１０から外部キャリブレーションを実行する命令を受け取ることができる。外部キャリブレーションを実行しない場合、ステップ６０４はステップ６１４に進み、キャリブレーションユニット３０２は、クロック遅延ユニット３１２の出力を９０度シフトする。外部キャリブレーションが実行される場合、ステップ６０４はステップ６１６に進み、キャリブレーションユニット３０２が、データバスをデータパス３２２に結合し、ソースクロックをクロックパス３２４に結合するように動作する。ステップ６１８において、キャリブレーションユニット３０２は、ソースクロックをデータアイの中央に置くために、データ遅延ユニット３１０およびクロック遅延ユニット３１２の遅延値を調整する。
【００５１】
ステップ６０６において、キャリブレーションユニット３０２は、トランザクションモードのために、データバスをデータパス３２２に結合し、ソースクロックをクロックパス３２４に結合するように、動作する。いくつかの例では、データバスおよびソースクロックが、それぞれデータパス３２２およびクロックパス３２４に既に結合されている場合には、ステップ６０６を省略することができる。ステップ６０８において、キャリブレーションユニット３０２は、データおよびクロック遅延ユニット３１０，３１２を制御して、相対遅延を維持する。一例では、ステップ６０８はステップ６２０を含み、キャリブレーションユニット３０２は、データおよびクロック遅延ユニット３１０，３１２の遅延値を調整して、マスタ遅延ユニット３０８の遅延値に対してギア比を維持する。
【００５２】
図７は、マスタ遅延ユニット３０８を管理する方法７００の一例を示すフロー図である。方法７００はステップ７０２から始まり、基準クロックが、マスタ遅延ユニット３０８に結合される。例えば、図３に示すように、マスタ遅延ユニット３０８の入力が、クロックソース３０４の出力に結合される。ステップ７０３において、キャリブレーションユニット３０２は、信号アラインメントのためにマスタ遅延ユニットの遅延値を調整する。ステップ７０４において、キャリブレーションユニット３０２は、基準クロックとマスタ遅延ユニットの出力との間のマスタ相対遅延を設定する。キャリブレーションユニット３０２は、セルフキャリブレーション中にステップ７０４を実行することができる。ステップ７０６において、キャリブレーションユニット３０２は、マスタ相対遅延を維持する。キャリブレーションユニット３０２は、マスタ遅延ユニット３０８の遅延値を調整してマスタ相対遅延を維持することによって、トランザクション中にステップ７０６を実行することができる。
【００５３】
上記は特定の例を対象とするが、その基本的な範囲から逸脱することなく、他の及びさらなる例を考え出すこともでき、その範囲は、以下の特許請求の範囲によって決定される。
【図１】
0006434161.tif 000002
【図２】
0006434161.tif 000003
【図３】
0006434161.tif 000004
【図４】
0006434161.tif 000005
【図５】
0006434161.tif 000006
【図６】
0006434161.tif 000007
【図７】
0006434161.tif 000008