(57)【特許請求の範囲】
【請求項１】
複数のランクを有するシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システムに、データ信号又はデータストローブ信号を含む出力信号を供給するように結合された出力回路と、
前記出力信号を生成するために、送信されるべきビットストリームに、デスキュー遅延と書き込みレベライゼーション遅延の合計を含む出力遅延を適用するように結合された出力遅延ユニットと、
前記複数のランクのうちの選択されたランクに基づいて、前記ＳＤＲＡＭシステムへの複数のライトトランザクションの各ライトトランザクションについて前記書き込みレベライゼーション遅延を調整するように結合された書き込みレベライゼーション遅延コントローラと
を備え、
前記デスキュー遅延は、前記複数のライトトランザクションの各々について前記複数のランクにわたって同じである、メモリ制御デバイス。
【請求項２】
前記出力遅延ユニットに前記デスキュー遅延を供給するように結合されたデスキュー遅延レジスタ論理を更に備える、請求項１に記載のメモリ制御デバイス。
【請求項３】
前記書き込みレベライゼーション遅延コントローラと前記デスキュー遅延レジスタ論理を前記出力遅延ユニットに選択的に結合するように動作可能なマルチプレクサ回路と、
前記マルチプレクサ回路を制御するように結合された遅延選択コントローラと
を更に備える、請求項２に記載のメモリ制御デバイス。
【請求項４】
前記書き込みレベライゼーション遅延コントローラは、
前記出力信号のために、前記複数のランクの各々についての書き込みレベライゼーション遅延値を格納するように結合された書き込みレベライゼーション遅延レジスタ論理と、
現在のランク信号に応じて前記書き込みレベライゼーション遅延レジスタ論理から現在の書き込みレベライゼーション遅延値を選択するように結合された第１のマルチプレクサと、
前のランク信号に応じて前記書き込みレベライゼーション遅延レジスタ論理から前の書き込みレベライゼーション遅延値を選択するように結合された第２のマルチプレクサと、
前記現在の書き込みレベライゼーション遅延値と前記前の書き込みレベライゼーション遅延値との間の差を計算するように結合された計算ユニットと
を備える、請求項１から３のいずれか一項に記載のメモリ制御デバイス。
【請求項５】
前記計算ユニットは、
前記前の書き込みレベライゼーション遅延値をネゲートするように結合された２の補数ユニットと、
前記２の補数ユニットの出力と前記現在の書き込みレベライゼーション遅延値を合計するように結合された加算器と
を備える、請求項４に記載のメモリ制御デバイス。
【請求項６】
前記出力遅延ユニットは、前記出力遅延の現在値を生成するために、前記差を前記出力遅延の前の値に加算するように結合される、請求項４又は５に記載のメモリ制御デバイス。
【請求項７】
前記出力遅延ユニットは、
前記出力遅延の値を格納するように結合された出力遅延レジスタと、
前記出力遅延の前記値を更新するように結合された加算器と、
前記出力遅延レジスタ内の前記出力遅延の前記値をデコードするように結合されたデコーダと、
前記デコーダからのデコードされた値をラッチするように結合されたラッチと、
前記デコードされた値に基づいて、送信されるべき前記ビットストリームを遅延させるように結合された遅延論理と
を備える、請求項１から６のいずれか一項に記載のメモリ制御デバイス。
【請求項８】
複数のランクを有するシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システムに、データ信号又はデータストローブ信号を含む出力信号を供給することと、
前記出力信号を生成するために、送信されるべきビットストリームに、デスキュー遅延と書き込みレベライゼーション遅延の合計を含む出力遅延を適用することと、
前記デスキュー遅延が、前記ＳＤＲＡＭシステムへの複数のライトトランザクションの各々について前記複数のランクにわたって同じままである一方で、前記複数のランクのうちの選択されたランクに基づいて、前記複数のライトトランザクションの各ライトトランザクションについて前記書き込みレベライゼーション遅延を調整することと
を含む、メモリ制御デバイスを動作させる方法。
【請求項９】
前記複数のライトトランザクションの前に実行されたキャリブレーション動作に応じて得られた前記デスキュー遅延の値を設定することを更に含む、請求項８に記載の方法。
【請求項１０】
前記複数のライトトランザクションの後に実行された追加のキャリブレーション動作に応じて得られた新しい値に前記デスキュー遅延を更新することを更に含む、請求項９に記載の方法。
【請求項１１】
前記調整するステップは、
現在のライトトランザクションのための現在のランクに応じて現在の書き込みレベライゼーション遅延値を選択することと、
前のライトトランザクションのための前のランクに応じて前の書き込みレベライゼーション遅延値を選択することと、
前記現在の書き込みレベライゼーション遅延値と前記前の書き込みレベライゼーション遅延値との間の差を計算することと
を含む、請求項８から１０のいずれか一項に記載の方法。
【請求項１２】
前記計算するステップは、
キャリービットを落としながら、前記前の書き込みレベライゼーション遅延値をネゲートすることと、
キャリービットを落としながら、ネゲートされた前の書き込みレベライゼーション遅延値と前記現在の書き込みレベライゼーション遅延値を加算することと
を含む、請求項１１に記載の方法。
【請求項１３】
前記調整するステップは、
前記出力遅延の現在値を生成するために、前記現在の書き込みレベライゼーション遅延値と前記前の書き込みレベライゼーション遅延値との間の前記差を、前記出力遅延の前の値に加算することを含む、請求項１１又は１２に記載の方法。
【請求項１４】
前記適用するステップは、
前記出力遅延の値をデコードして、デコードされた値を生成することと、
前記デコードされた値に基づいて遅延ユニットのための遅延を選択することと
を含む、請求項８から１３のいずれか一項に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示の例は、一般に、電子回路に関し、詳細には、メモリ制御デバイスにおける出力遅延の動的選択に関する。
【背景技術】
【０００２】
ダブルデータレート、すなわち「ＤＤＲ」シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）は、その性能および集積度のために普及している。メモリチップ上の面積を低減するために、デバイスを制御する負荷の多くが、メモリ制御デバイスにオフロードされて来た。これらのメモリ制御デバイスは、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）デバイスなどに存在することができ、またはＤＤＲメモリを制御する目的に専用のデバイス上に存在することができる。
【０００３】
ＤＤＲ３およびＤＤＲ４のアプリケーションでは、メモリ制御デバイスは、ビットレベルの精度で出力パスに様々なタイプおよび大きさの遅延を挿入する必要がある。出力遅延は、メモリ制御デバイス内、メモリ制御デバイスをＳＤＲＡＭデバイス（１つ又は複数）に接続するプリント回路基板（ＰＣＢ）上、ＳＤＲＡＭデバイス（１つ又は複数）上、またはそれらの組み合わせに存在するか、または潜在的に存在する様々なスキューを補償するために必要である。メモリ制御デバイスによって挿入された出力遅延は、ＳＤＲＡＭデバイス（１つ又は複数）に到着するインターフェース信号が適切なサンプリングのために再調整されることを可能にする。メモリ制御デバイスにおける出力遅延を生成し適用するために使用される回路は、複雑であり、かなりの集積回路（ＩＣ）領域をもたらし、かなりの電力を消費する可能性がある。
【発明の概要】
【０００４】
メモリ制御デバイスにおける出力遅延の動的選択のための技法について説明する。一例では、メモリ制御デバイスは、出力回路と、出力遅延ユニットと、書き込みレベライゼーションコントローラとを含む。出力回路は、複数のランクを有するシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システムにデータ信号またはデータストローブ信号を含む出力信号を供給するように結合される。出力遅延ユニットは、出力信号を生成するために、送信されるべきビットストリームに出力遅延を適用するように結合される。出力遅延は、デスキュー遅延と書き込みレベライゼーション遅延の合計を含む。書き込みレベライゼーション遅延コントローラは、複数のランクのうちの選択されたランクに基づいて、複数のライトトランザクションのＳＤＲＡＭシステムへの各ライトトランザクションについて書き込みレベライゼーション遅延を調整するように結合される。デスキュー遅延は、複数のライトトランザクションの各々について複数のランクにわたって同じである。
【０００５】
任意選択で、メモリ制御デバイスは、デスキュー遅延を出力遅延ユニットに供給するように結合されたデスキュー遅延レジスタ論理をさらに含む。
【０００６】
任意選択で、メモリ制御デバイスは、書き込みレベライゼーション遅延コントローラおよびデスキュー遅延レジスタ論理を出力遅延ユニットに選択的に結合するように動作可能なマルチプレクサ回路と、マルチプレクサ回路を制御するように結合された遅延選択コントローラとをさらに含む。
【０００７】
任意選択で、書き込みレベライゼーション遅延コントローラは、出力信号に対する、複数のランクの各々についての書き込みレベライゼーション遅延値を格納するように結合された書き込みレベライゼーション遅延レジスタ論理と、現在のランク信号に応じて書き込みレベライゼーション遅延レジスタ論理から現在の書き込みレベライゼーション遅延値を選択するように結合された第１のマルチプレクサと、前のランク信号に応じて書き込みレベライゼーション遅延レジスタ論理から前の書き込みレベライゼーション遅延値を選択するように結合された第２のマルチプレクサと、現在の書き込みレベライゼーション遅延値と前の書き込みレベライゼーション遅延値との間の差を計算するように結合された計算ユニットと、を含む。
【０００８】
任意選択で、計算ユニットは、前の書き込みレベライゼーション遅延値をネゲートするように結合された２の補数ユニットと、２の補数ユニットの出力及び現在の書き込みレベライゼーション遅延値を合計するように結合された加算器とを含む。
【０００９】
任意選択で、出力遅延ユニットは、出力遅延の現在の値を生成するために、出力遅延の前の値にこの差を加算するように結合される。
【００１０】
任意選択で、出力遅延ユニットは、出力遅延の値を格納するように結合された出力遅延レジスタと、出力遅延の値を更新するように結合された加算器と、出力遅延レジスタ内の出力遅延の値をデコードするように結合されたデコーダと、デコーダからのデコードされた値をラッチするように結合されたラッチと、デコードされた値に基づいて送信されるべきビットストリームを遅延させるように結合された遅延論理とを、含む。
【００１１】
別の例では、メモリ制御デバイスを動作させる方法は、複数のランクを有するシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システムにデータ信号またはデータストローブ信号を含む出力信号を供給することと、出力信号を生成するために、デスキュー遅延と書き込みレベライゼーション遅延との合計を含む出力遅延を、送信されるべきビットストリームに適用することと、複数のランクのうちの選択されたランクに基づいて、複数のライトトランザクションのＳＤＲＡＭシステムへの各ライトトランザクションについて書き込みレベライゼーション遅延を調整し、その間、デスキュー遅延は、複数のライトトランザクションの各々について複数のランクにわたって同じままであることと、を含む。
【００１２】
任意選択で、本方法は、複数のライトトランザクションの前に実行されたキャリブレーション動作に応じて得られたデスキュー遅延の値を設定することをさらに含む。
【００１３】
任意選択で、本方法は、複数のライトトランザクションの後に実行された追加のキャリブレーション動作に応じて得られた新しい値にデスキュー遅延を更新することをさらに含む。
【００１４】
任意選択で、調整するステップは、現在のライトトランザクションのための現在のランクに応じて現在の書き込みレベライゼーション遅延値を選択することと、前のライトトランザクションのための前のランクに応じて前の書き込みレベライゼーション遅延値を選択することと、現在の書き込みレベライゼーション遅延値と前の書き込みレベライゼーション遅延値との間の差を計算することとを含む。
【００１５】
任意選択で、計算するステップは、キャリービットを落としながら、前の書き込みレベライゼーション遅延値をネゲートすることと、キャリービットを落としながら、ネゲートされた前の書き込みレベライゼーション遅延値および現在の書き込みレベライゼーション遅延値を加算することとを、含む。
【００１６】
任意選択で、調整するステップは、現在の書き込みレベライゼーション遅延値と前の書き込みレベライゼーション遅延値との間の差を出力遅延の前の値に加算して、出力遅延の現在の値を生成することを含む。
【００１７】
任意選択で、適用するステップは、出力遅延の値をデコードして、デコードされた値を生成することと、デコードされた値に基づいて遅延ユニットのために遅延を選択することとを含む。
【００１８】
別の例では、システムは、複数のランクを有するＳＤＲＡＭシステムと、バスを介してＳＤＲＡＭシステムに結合されたメモリ制御デバイスとを含む。メモリ制御デバイスは、出力回路と、出力遅延ユニットと、書き込みレベライゼーション遅延コントローラとを含む。出力回路は、データ信号またはデータストローブ信号を含む出力信号を供給するように結合される。出力遅延ユニットは、出力信号を生成するために、送信されるべきビットストリームに出力遅延を適用するように結合される。出力遅延は、デスキュー遅延と書き込みレベライゼーション遅延の合計を含む。書き込みレベライゼーション遅延コントローラは、複数のランクのうちの選択されたランクに基づいて、複数のライトトランザクションのＳＤＲＡＭシステムへの各ライトトランザクションについて書き込みレベライゼーション遅延を調整するように結合される。デスキュー遅延は、複数のライトトランザクションの各々について複数のランクにわたって同じである。
【００１９】
任意選択で、バスは制御バスを含み、制御バス上の各信号は、フライバイメモリトポロジーを提供するように、ＳＤＲＡＭシステム上の各ＳＤＲＡＭデバイスに結合される。
【００２０】
任意選択で、メモリ制御デバイスは、出力遅延ユニットにデスキュー遅延を供給するように結合されたデスキュー遅延レジスタ論理と、書き込みレベライゼーション遅延コントローラとデスキュー遅延レジスタ論理を出力遅延ユニットに選択的に結合するように動作可能なマルチプレクサ回路と、マルチプレクサ回路を制御するように結合された遅延選択コントローラとを、更に含む。
【００２１】
任意選択で、書き込みレベライゼーション遅延コントローラは、出力信号に対する、複数のランクの各々についての書き込みレベライゼーション遅延値を格納するように結合された書き込みレベライゼーション遅延レジスタ論理と、現在のランク信号に応じて書き込みレベライゼーション遅延レジスタ論理から現在の書き込みレベライゼーション遅延値を選択するように結合された第１のマルチプレクサと、前のランク信号に応じて書き込みレベライゼーション遅延レジスタ論理から前の書き込みレベライゼーション遅延値を選択するように結合された第２のマルチプレクサと、現在の書き込みレベライゼーション遅延値と前の書き込みレベライゼーション遅延値との間の差を計算するように結合された計算ユニットと、を含む。
【００２２】
任意選択で、出力遅延ユニットは、出力遅延の現在の値を生成するために、出力遅延の前の値にこの差を加算するように結合される。
【００２３】
任意選択で、出力遅延ユニットは、出力遅延の値を格納するように結合された出力遅延レジスタと、出力遅延の値を更新するように結合された加算器と、出力遅延レジスタ内の出力遅延の値をデコードするように結合されたデコーダと、デコーダからのデコードされた値をラッチするように結合されたラッチと、デコードされた値に基づいて送信されるべきビットストリームを遅延させるように結合された遅延論理とを、含む。
【００２４】
これらおよび他の態様は、以下の詳細な説明を参照して理解され得る。
【００２５】
上記に列挙した特徴を詳細に理解できるように、上記で簡単に要約した、より詳細な説明が、実施例を参照することによって得られ、そのいくつかを添付の図面に示す。しかしながら、添付の図面は典型的な実施例のみを示しているので、その範囲を限定するものと見なすべきではないことに留意されたい。
【図面の簡単な説明】
【００２６】
【図１】シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システムに結合された集積回路（ＩＣ）を有する例示的なシステムを示すブロック図である。
【図２】メモリ制御デバイスの一例を示すブロック図である。
【図３】物理インターフェースユニットの一部の一例を示すブロック図である。
【図４】書き込みレベライゼーション遅延コントローラの一例を示すブロック図である。
【図５】出力遅延ユニットの一例を示すブロック図である。
【図６】メモリ制御デバイスを動作させる方法の一例を示すフロー図である。
【発明を実施するための形態】
【００２７】
理解を容易にするため、可能な場合には、図に共通する同一の要素を示すのに、同一の参照番号を使用した。１つの例の要素は他の例に有益に組み込むことができると、考えられる。
【００２８】
メモリ制御デバイスにおける出力遅延の動的選択のための技法について説明する。この技法は、ダブルデータレート（ＤＤＲ）システム（例えば、ＤＤＲ３／４システム）などのマルチランクのシンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システムに適用される。メモリ制御デバイスは、ＳＤＲＡＭへの各データ（ＤＱ）およびデータストローブ（ＤＱＳ）信号出力に対して単一のプログラマブル遅延を適用する。メモリ制御デバイスは、ランク選択によって規定されるものとして、ＤＱ／ＤＱＳ信号上の必要な信号ごとの出力遅延を動的に選択する。所与のＤＱ／ＤＱＳ信号の出力遅延は、より単純なメモリ制御ソリューションを提供するために、２つの部分に分割される。詳細には、出力遅延は、ランクに共通する、特定の出力信号に対するデスキュー遅延と、ランクに基づいて動的に選択される、特定の出力信号に対する書き込みレベライゼーション遅延とを含む。本明細書で説明されるメモリ制御デバイスは、シグナルインテグリティの向上、出力パス上の合計内在遅延の低減、並びに実装面積および電力消費の低減を提供する。本開示のこれらおよびさらなる態様が、以下で議論される。
【００２９】
図１は、シンクロナスダイナミックランダムアクセスメモリ（ＳＤＲＡＭ）システム１０６に結合された集積回路（ＩＣ）１０２を有するシステム１００の一例を示すブロック図である。ＩＣ１０２およびＳＤＲＡＭシステム１０６は、プリント回路基板（ＰＣＢ）または他のタイプの基板（図示せず）上に実装することができる。ＩＣ１０２は、メモリ制御デバイス１０４を含む。メモリ制御デバイス１０４は、バス１０９を介してＳＤＲＡＭシステム１０６に結合される。バス１０９は、制御バス１１２およびデータバス１１４を含む。制御バス１１２は、アドレス信号、コマンド信号、およびクロック信号などの制御信号をＳＤＲＡＭシステム１０６に伝達する。データバス１１４は、メモリ制御デバイス１０４とＳＤＲＡＭシステム１０６との間でデータ（ＤＱ）信号およびデータストローブ（ＤＱＳ）信号を伝達する。バス１０９は、電圧供給信号などの他の信号を伝達することができる。ＩＣ１０２は、メモリ制御デバイス１０４専用のデバイスであってもよいし、マイクロプロセッサ、特定用途向け集積回路（ＡＳＩＣ）、フィールド・プログラマブル・ゲート・アレイ（ＦＰＧＡ）、システム・オン・チップ（ＳｏＣなど）などの、他の機能を有するデバイスであってもよい。ＳＤＲＡＭシステム１０６は、集合的に複数のランクを提供する１つ以上のモジュール（例えば、１つ以上のデュアルインラインメモリモジュール（ＤＩＭＭ））を含むことができる。あるいは、ＳＤＲＡＭシステム１０６は、特定のモジュール構造なしでＰＣＢに実装することができる。例えば、ＳＤＲＡＭシステム１０６は、ＩＣ１０２と同じＰＣＢに実装することができる。
【００３０】
ＳＤＲＡＭシステム１０６は、複数のランクのＳＤＲＡＭデバイス１１０を含む。図示されているように、ＳＤＲＡＭシステム１０６は、２つのランクを含む：第１のランクは、ＳＤＲＡＭデバイス１１０（１）を含み、第２のランクは、ＳＤＲＡＭデバイス１１０（２）を含む。したがって、各ランクは、複数のＳＤＲＡＭデバイスを含む。各ランク内のＳＤＲＡＭデバイス１１０（１）および１１０（２）は、メモリ制御デバイス１０４によって駆動されるバス１１２および１１４を共有する。制御バス１１２は、ランクの中から選択するための信号を含む。ＳＤＲＡＭシステム１０６は、「フライバイ（ｆｌｙ−ｂｙ）」メモリトポロジーを含む。フライバイメモリトポロジーでは、制御バス１１２は、ＳＤＲＡＭデバイス１１０の各々に接続され、終端１１６によって終端される。すなわち、第１のランクのＳＤＲＡＭデバイス１１０（１）の全てと、第２のランクのＳＤＲＡＭデバイス１１０（２）の全てとに、同一のアドレス、コマンド、およびクロック信号のセットが結合される。フライバイトポロジーを使用するＳＤＲＡＭデバイスの例には、ＤＤＲ３およびＤＤＲ４  ＳＤＲＡＭデバイスが含まれる。
【００３１】
対照的に、バス１１４は、ランクに並列に結合される。例えば、各ＳＤＲＡＭデバイス１１０は、８つのＤＱ信号と少なくとも１つのＤＱＳ信号（例えば、ＤＱＳ信号とネゲートされたＤＱＳ信号）とを有するインターフェースを含むことができる。各ランクは、合計７２個のＤＱ信号と少なくとも９個のＤＱＳ信号のために９個のＳＤＲＡＭデバイス１１０を含むことができる。バス１１４は、７２個のＤＱ信号幅と少なくとも９個のＤＱＳ信号幅を有することができ、信号は、各ランクのＳＤＲＡＭデバイスに分配され、ランク間で共有される。ＳＤＲＡＭデバイス１１０は、他の数のＤＱおよびＤＱＳ信号とのインターフェースを有することができ、ランクは異なる数のＳＤＲＡＭデバイスを有することができ、データバス１１４は他の幅を有することができる。例えば、いくつかのＳＤＲＡＭシステムは、１４４個のＤＱ信号の幅を有するデータバスを提供する。
【００３２】
ＳＤＲＡＭシステム１０６は、レジスタ、コントローラなど（図示せず）の、ＳＤＲＡＭデバイス１１０の動作をサポートする他の回路を含むことができる。この例は、バッファリングなしのＳＤＲＡＭシステムを示している（すなわち、バス１１２はバッファリングされていない）が、本明細書に記載の技術は、レジスタ付きＳＤＲＡＭシステムで使用することができる。ＳＤＲＡＭシステム１０６は、２つのランクを有するものとして示されているが、一般にＳＤＲＡＭシステム１０６は、複数のランクを含むことができる。
【００３３】
図２は、メモリ制御デバイス１０４の一例を示すブロック図である。メモリ制御デバイス１０４は、アプリケーションインターフェース２０２、メモリコントローラ２０４、初期化及びキャリブレーションユニット２０６、マルチプレクサ２０８、並びに物理（ＰＨＹ）ユニット２１０を含む。アプリケーションインターフェース２０２は、他の回路（図示せず）からＳＤＲＡＭシステム１０６に書き込まれるデータ（「書き込みデータ」）を受け取り、ＳＤＲＡＭシステム１０６から読み出されたデータ（「読み出しデータ」）を別の回路（図示せず）に供給する。アプリケーションインターフェース２０２は、書き込みデータをメモリコントローラ２０４に供給する。メモリコントローラ２０４は、ＳＤＲＡＭシステム１０６との間でトランザクションを生成する。メモリコントローラ２０４は、ライトトランザクションを生成して、書き込みデータをＳＤＲＡＭシステム１０６に格納し、リードトランザクションを生成して、ＳＤＲＡＭシステム１０６から読み出しデータを取得する。メモリコントローラ２０４の出力は、マルチプレクサ２０８に結合される。
【００３４】
ＰＨＹユニット２１０は、メモリ制御デバイス１０４の物理信号インターフェースを提供する。ＰＨＹユニット２１０は、制御バス１１２上でアドレス信号、コマンド信号、およびクロック信号を出力し、データバス１１４上でデータ信号およびデータストローブ信号を送受信する。ＰＨＹユニット２１０は、ライトパス論理２１２およびリードパス論理２１４を含む。ライトパス論理２１２は、ＳＤＲＡＭシステム１０６へのコマンド及び書き込みデータの送信のために、メモリコントローラ２０４からのライトトランザクションをフォーマットする。リードパス論理２１４は、ＳＤＲＡＭシステム１０６へのコマンドの送信およびＳＤＲＡＭシステム１０６からの読み出しデータの受信のために、メモリコントローラ２０４からのリードトランザクションをフォーマットする。
【００３５】
初期化及びキャリブレーションユニット２０６は、他のアクションの中でも、ライトパス論理２１２及びリードパス論理２１４のためのタイミングキャリブレーションの１つ以上の段階を実行する。初期化及びキャリブレーションユニット２０６は、マルチプレクサ２０８に結合される。初期化及びキャリブレーションユニット２０６は、キャリブレーショントランザクションをマルチプレクサ２０８を介してＰＨＹユニット２１０に出力する。初期化及びキャリブレーションユニット２０６は、キャリブレーションが完了するまでキャリブレーショントランザクションを選択するように、マルチプレクサ２０８を制御する。キャリブレーションが完了すると、初期化及びキャリブレーションユニット２０６は、メモリコントローラ２０４からのトランザクション出力を選択するように、マルチプレクサ２０８を制御する。ＰＨＹユニット２１０は、ＳＤＲＡＭシステム１０６と通信し、ライトパス論理２１２およびリードパス論理２１４をキャリブレーションするために、キャリブレーショントランザクションをフォーマットする。
【００３６】
詳細には、ライトパス論理２１２は、遅延論理２１６を含む。遅延論理２１６は、信号ごとのＰＣＢトレーススキューおよびＰＨＹユニット２１０のライトパス論理２１２内の信号ごとのスキューを含む静的スキューまたは準静的スキューを補償するために使用される。遅延論理２１６は、静的スキューまたは準静的スキューを補償して、書き込みデータストローブ（ＤＱＳ）を出力パス上の書き込みデータ（ＤＱ）ウィンドウの中心に置くデスキュー遅延を含む出力遅延をＤＱ／ＤＱＳ信号に適用する。静的／準静的スキューに起因するデスキュー遅延は、キャリブレーションプロセスに基づいて決定される。機能動作中、電圧／温度（ＶＴ）変動の定期的補償のため以外では、デスキュー遅延は、多数のライトトランザクションにわたって変化しないままである。マルチランクのシステムでは、静的／準静的スキューは、ランクによって異なる場合がある。しかし、本明細書に記載された技術は、ＳＤＲＡＭシステム１０６のすべてのランクに対する静的／準静的スキューを補償するためのデスキュー遅延の共通セットを適用することによって、正確な書き込みデータタイミングの問題を単純化する。これは、メモリ制御デバイス１０４から、入出力（ＩＯ）論理（例えば、ＩＣ１０２内のＩＯ論理）を通って、ＩＣパッケージを通って、ＰＣＢ上への、ＳＤＲＡＭシステム１０６上の各ランクに分岐する前の、共通のＤＱ／ＤＱＳパスを想定する。
【００３７】
ＳＤＲＡＭシステム１０６のフライバイメモリトポロジーは、制御バス１１２上の各ＳＤＲＡＭデバイス１１０に到着する書き込みデータストローブ（ＤＱＳ）とクロック（ＣＫ）との間のスキューを引き起こす。ＤＱＳとＣＫとの間のスキューは、書き込みレベリング技術によって補償され、ＤＱＳ信号は、所与のランク内のＳＤＲＡＭデバイス１１０に到着するクロックと位相が揃うまで遅延される。アプリケーションは、それぞれが固有の書き込みレベライゼーション遅延値を必要とする、１つ以上のＳＤＲＡＭシステムにわたる複数のランクを利用することがある。マルチランクのシステムでは、クロック（ＣＫ）がＤＱ／ＤＱＳとは異なるパスを取るため、ＣＫとＤＱＳの間のタイミング関係がランク間で同じであると想定できない。フライバイのタイミングは、ランクによって異なる場合がある。
【００３８】
遅延論理２１６によって適用される出力遅延は、デスキュー遅延に加えて書き込みレベライゼーション遅延を含むことができる。デスキュー遅延はランク間で共通であるが、書き込みレベライゼーション遅延は各ランクに固有であり、書き込みのために選択された特定のランクに基づいて動的に選択される。データバス１１４上のＤＱ／ＤＱＳ信号の出力遅延を生成するための例示的な技術を以下に説明する。
【００３９】
図２は、メモリ制御デバイス１０４の一例を示している。以下に説明する例は、遅延論理２１６の構造および機能に関する。遅延論理２１６は、図２に示すものとは異なる構造を有するメモリ制御デバイスのＰＨＹユニットで使用することができる。一般に、メモリ制御デバイスのＰＨＹユニットは、遅延論理２１６を使用して、ライトパス上のスキューを補償することができる。
【００４０】
図３は、ＰＨＹユニット２１０の一部分３００の一例を示すブロック図である。部分３００は、書き込みレベライゼーション遅延コントローラ３０２、デスキュー遅延レジスタ論理３０４、マルチプレクサ回路（ＭＵＸ）３０６、遅延選択コントローラ３０８、および出力回路３１０を含む。出力回路３１０は、出力遅延ユニット３１２を含む。書き込みレベライゼーション遅延コントローラ３０２、デスキュー遅延レジスタ論理３０４、ＭＵＸ３０６、遅延選択コントローラ３０８、および出力遅延ユニット３１２は、ＰＨＹユニット２１０のライトパス論理２１２内の遅延論理２１６を構成する。
【００４１】
出力回路３１０は、出力信号をデータバス１１４に結合する。出力信号は、データバス１１４上の特定のデータ信号（ＤＱ）または特定のデータストローブ信号（ＤＱＳ）を含む。出力信号は、送信されるべきビットストリームを選択的に遅延させることによって生成される。出力信号を生成するために、送信されるべきビットストリームに適用される遅延の量は、出力遅延ユニット３１２によって適用される出力遅延を変更することによって調整することができる。機能動作中、出力遅延は、デスキュー遅延と書き込みレベライゼーション遅延の合計を含む。デスキュー遅延は、複数のライトトランザクションについてＳＤＲＡＭシステム１０６のランクにわたって同じである。対照的に、書き込みレベライゼーション遅延は、書き込みのために選択されたランクに基づいて、ライトトランザクションごとに動的に更新される。出力遅延ユニット３１２によって適用される出力遅延の値は、ＭＵＸ３０６から受信された入力に基づいて調整される。
【００４２】
デスキュー遅延レジスタ論理３０４は、データバス１１４上の信号に対する信号ごとのデスキュー遅延値を格納する。信号ごとのデスキュー遅延値は、キャリブレーション動作のキャリブレーション結果に基づいて生成される。一例では、信号ごとのデスキュー遅延値は、機能動作中に一定のままであり得る。あるいは、信号ごとのデスキュー遅延値は、定期的なキャリブレーション動作に応じて定期的に更新されてもよい。例えば、ＶＴトラッキングのために、定期的なキャリブレーション動作を実行することができる。最初のキャリブレーション（または任意のその後のキャリブレーション）の後、遅延選択コントローラ３０８が、デスキュー遅延レジスタ論理３０４を選択し、出力信号のデスキュー遅延値が、出力遅延ユニット３１２にロードされる。出力信号のデスキュー遅延値は、ＳＤＲＡＭシステム１０６のすべてのランクにわたって同じであり、機能動作中に１つのライトトランザクションから次のライトトランザクションへと、および１つのランクから次のランクへと変更されない。
【００４３】
書き込みレベライゼーション遅延コントローラ３０２は、各ランクの全てのＤＱ／ＤＱＳ信号に対する書き込みレベライゼーション遅延値を格納する。書き込みレベライゼーション遅延は、キャリブレーション動作のキャリブレーション結果に基づいて生成することができる（例えば、信号ごとのデスキュー遅延値と並行して決定することができる）。機能動作中、書き込みレベライゼーション遅延コントローラ３０２は、ライトトランザクション制御信号から決定された書き込みのために選択されたランクに基づいて出力信号の書き込みレベライゼーション遅延値を決定する。デスキュー遅延値が出力遅延ユニット３１２にロードされた後、遅延選択コントローラ３０８は、書き込みレベライゼーション遅延コントローラ３０２を選択し、決定された書き込みレベライゼーション遅延値が出力遅延ユニット３１２に供給される。各ライトトランザクションについて、出力遅延ユニット３１２は、決定された書き込みレベライゼーション遅延値をデスキュー値に加算して、出力遅延値を決定する。このようにして、出力遅延は、書き込みのために選択されたＳＤＲＡＭシステム１０６の現在のランクに基づいて動的に更新される。
【００４４】
一例では、ライトトランザクションごとに、書き込みレベライゼーション遅延コントローラ３０２は、現在のランクの書き込みレベライゼーション遅延値と前のランクの書き込みレベライゼーション遅延値との間の差を決定する。書き込みレベライゼーション遅延コントローラ３０２は、その差を出力として供給する。出力遅延ユニット３１２は、その差をデスキュー遅延値に加算して、出力遅延値を決定する。このようにして、前に選択されたランクに対する書き込みレベライゼーション遅延値が出力遅延値から除去され、現在のランクに対する書き込みレベライゼーション遅延値が出力遅延値に加算される。したがって、出力遅延値は、常に、デスキュー遅延値および現在のランクに対して決定された書き込みレベライゼーション遅延値の合計である。
【００４５】
ＭＵＸ３０６は、データバス１１４上の他のＤＱ／ＤＱＳ信号を遅延させるための、出力回路３１０と同様の出力遅延ユニットを有するライトパス論理２１２内の他の出力回路に結合することができる。デスキュー遅延レジスタ論理３０４は、他の回路の出力信号に対するデスキュー遅延値を格納し、これらの値は、出力遅延ユニット３１２と同様の他の出力遅延ユニットにロードすることができる。書き込みレベライゼーション遅延コントローラ３０２は、各ランクの他のＳＤＲＡＭデバイスのための書き込みレベライゼーション遅延値を格納し、これらの値は、機能動作中に出力遅延ユニット３１２と同様の出力遅延ユニットを調整するために使用することができる。すなわち、書き込みレベライゼーション遅延コントローラ３０２は、各ＳＤＲＡＭデバイスに対して書き込みレベライゼーション遅延値を格納することができ、所与の書き込みレベライゼーション遅延値が、所与のＳＤＲＡＭデバイスに関連するＤＱ／ＤＱＳ信号に共通である。
【００４６】
図４は、書き込みレベライゼーション遅延コントローラ３０２の一例を示すブロック図である。書き込みレベライゼーション遅延コントローラ３０２は、書き込みレベライゼーション遅延レジスタ論理４０２、第１のマルチプレクサ（マルチプレクサ４１０）、フリップフロップ４１２、第２のマルチプレクサ（マルチプレクサ４１４）、および計算ユニット４２０を含む。書き込みレベライゼーション遅延レジスタ論理４０２は、ＳＤＲＡＭシステム１０６の各ランクごとに１つずつ、複数のレジスタ４０４を含む。この例では、２つのレジスタ４０４（１）および４０４（２）が、ＳＤＲＡＭシステム１０６のデュアルランクについて示されている。レジスタ４０４（１）は、ＳＤＲＡＭデバイス１１０（１）を含むランクの書き込みレベライゼーション遅延値を格納する。レジスタ４０４（２）は、ＳＤＲＡＭデバイス１１０（２）を含むランクの書き込みレベライゼーション遅延値を格納する。書き込みレベライゼーション遅延値は、上述したように、キャリブレーション動作中に決定することができる。
【００４７】
マルチプレクサ４１０の入力は、レジスタ４０４（１）および４０４（２）の出力に結合される。マルチプレクサ４１０の出力は、計算ユニット４２０に結合される。マルチプレクサ４１０の制御ポートは、現在のライトトランザクションにおいて書き込みのために選択された現在のランクを示す信号（「現在のランク信号」）を受け取る。一例では、書き込みレベライゼーション遅延コントローラ３０２は、ライトパス論理２１２によって生成されたライトトランザクション制御データに応じて現在のランク信号を生成するランク発生器４０６を含むことができる。別の例では、現在のランク信号は、書き込みレベライゼーション遅延コントローラ３０２の外部のライトパス論理２１２内の別の回路によって生成される。いずれの場合も、現在のランク信号は、フリップフロップ４１２のデータ入力にも結合される。
【００４８】
フリップフロップ４１２のクロックポートは、ライトパス論理２１２に入る新しいライトトランザクションを示す信号（ＷＲ＿ＳＴＢと呼ばれる）を受け取る。ＷＲ＿ＳＴＢ信号がアサートされると、フリップフロップ４１２は、現在のランク信号の値を格納する。フリップフロップ４１２の出力は、前のライトトランザクションのために前に選択されたランクの値（「前のランク信号」）を供給する。一例では、書き込みレベライゼーション遅延コントローラ３０２は、ライトパス論理２１２に入るライトトランザクションに応じてＷＲ＿ＳＴＢ信号を生成するライトストローブ発生器４０８を含むことができる。別の例では、ＷＲ＿ＳＴＢ信号は、書き込みレベライゼーション遅延コントローラ３０２の外部のライトパス論理２１２内の別の回路によって生成される。
【００４９】
マルチプレクサ４１４の入力は、レジスタ４０４（１）および４０４（２）の出力に結合される。マルチプレクサ４１４の出力は、計算ユニット４２０に結合される。マルチプレクサ４１４の制御ポートは、フリップフロップ４１２の出力に結合され、前のランク信号を受信する。
【００５０】
各ライトトランザクションについて、計算ユニット４２０は、現在のライトトランザクションのためにマルチプレクサ４１０によって選択された書き込みレベライゼーション遅延値（「現在の書き込みレベライゼーション遅延値」）および前のライトトランザクションのためにマルチプレクサ４１４によって選択された書き込みレベライゼーション遅延値（「前の書き込みレベライゼーション遅延値」）を受け取る。現在の書き込みレベライゼーション遅延値は、書き込みのために現在選択されているランクに対応し、現在のランク信号に基づいて選択される。前の書き込みレベライゼーション遅延値は、書き込みのために前に選択されたランクに対応し、前のランク信号に基づいて選択される。計算ユニット４２０は、現在の書き込みレベライゼーション遅延値と前の書き込みレベライゼーション遅延値との差を計算して、その差を出力信号（ＷＬ＿ＤＥＬＴＡ＿ＤＬＹ）として供給する。ＷＬ＿ＤＥＬＴＡ＿ＤＬＹ信号は、各ライトトランザクションの出力遅延を調整するために、出力遅延ユニットに供給されるように、ＭＵＸ３０６に結合される。
【００５１】
一例では、計算ユニット４２０は、加算器４１８に結合された２の補数ユニット４１６を含む。２の補数ユニット４１６は、マルチプレクサ４１４によって供給された前の書き込みレベライゼーション遅延値の否定を決定する。加算器４１８は、２の補数ユニット４１６の出力と、マルチプレクサ４１０によって供給された現在の書き込みレベライゼーション遅延値とを合計する。一例では、２の補数ユニット４１６と加算器４１８の両方がキャリービットを落として、その出力をロールオーバさせる。計算ユニット４２０は、現在の書き込みレベライゼーション遅延値と前の書き込みレベライゼーション遅延値との間の差を一般に計算する他のタイプの論理を使用して実装することができる。
【００５２】
図５は、出力遅延ユニット３１２の一例を示すブロック図である。出力遅延ユニット３１２は、加算器５０２と、出力遅延レジスタ５０４と、デコーダ５０６と、ラッチ５０８と、遅延ユニット５１０とを備える。加算器５０２は、ＭＵＸ３０６が出力する信号（ＯＤＬＹ＿ＩＮ）と出力遅延レジスタ５０４の出力とを加数として受け取る。加算器５０２の出力は、出力遅延レジスタ５０４の入力に結合される。出力遅延レジスタ５０４は、一般に、出力遅延の値を格納する。機能動作において、加算器５０２は、出力遅延レジスタ５０４に格納された出力遅延の前の値を、書き込みレベライゼーション遅延コントローラ３０２によって生成された現在および前の書き込みレベライゼーション遅延値の差（ＭＵＸ３０６によって選択されたＷＬ＿ＤＥＬＴＡ＿ＤＬＹ）と合計する。現在のライトトランザクションの開始（すなわち、ＷＲ＿ＳＴＢ信号のアサート）に応答して、出力遅延レジスタ５０４は、加算器５０２から出力遅延の現在の値をロードする。
【００５３】
デコーダ５０６の入力は、出力遅延レジスタ５０４の出力に結合される。デコーダ５０６は、出力遅延レジスタ５０４に格納された出力遅延値からデコードされた信号を生成する。ラッチ５０８の入力は、デコーダ５０６の出力に結合される。ラッチ５０８は、デコーダ５０６が出力遅延レジスタ５０４に格納された出力遅延値をデコードするときに、デコードされた信号の値を格納する。ラッチ５０８は、現在のライトトランザクションがライトパス論理２１２の終わりに近づいていることを示す信号（ＷＬ＿ＤＬＹ＿ＳＴＢ）に応答して、デコードされた信号の値を遅延ユニット５１０に供給する。ＷＬ＿ＤＬＹ＿ＳＴＢ信号は、ライトストローブ発生器４０８（存在する場合）によって、またはライトパス論理２１２内の別の回路によって生成され得るＷＬ＿ＳＴＢ信号の遅延バージョンである。
【００５４】
ラッチ５０８の出力は、遅延ユニット５１０の制御入力に結合される。遅延ユニット５１０の入力は、送信されるべきビットストリームを受信し、遅延ユニット５１０の出力は、出力信号（例えば、ＤＱ信号またはＤＱＳ信号）を供給する。ラッチ５０８に格納されたデコードされた信号の値は、遅延ユニット５１０によって適用される遅延量を決定する。例えば、遅延ユニット５１０は、タップ付き遅延ラインを含むことができ、ラッチ５０８に格納されたデコードされた信号の値は、遅延ライン内でアクティブなタップの数を指示することができる。
【００５５】
図６は、メモリ制御デバイスを動作させる方法６００の一例を示すフロー図である。一般に、方法６００におけるいくつかのステップは、順次実行され得るが、方法６００における他のステップは、同時に実行され得る。方法６００は、特定の順序のステップを暗示することを意味するものではない。方法６００はステップ６０２を含み、出力回路３１０は、複数のランクを有するＳＤＲＡＭシステム１０６にデータ信号またはデータストローブ信号を含む出力信号を供給する。ステップ６０４において、出力遅延ユニット３１２は、送信されるべきビットストリームに出力遅延を適用する。出力遅延は、デスキュー遅延と書き込みレベライゼーション遅延の合計を含む。ステップ６０４は、ステップ６０８を含むことができ、ここでは、キャリブレーション動作に応じて得られたデスキュー遅延の値が、例えば始動時に設定される。任意選択のステップ６１０において、デスキュー遅延は、追加のキャリブレーション動作（１つ又は複数）に応じて更新することができる。例えば、メモリ制御デバイス１０４の電圧／温度変動を追跡するために、追加のキャリブレーション動作（１つ又は複数）を実行することができる。
【００５６】
ステップ６０６で、書き込みレベライゼーション遅延コントローラ３０２および出力遅延ユニット３１２は、選択されたランクに基づいて複数のライトトランザクションのそれぞれについて書き込みレベライゼーション遅延を調整し、一方、デスキュー遅延は同じままである。ステップ６０６は、以下のステップを含むことができる。ステップ６１２において、書き込みレベライゼーション遅延コントローラ３０２は、現在のライトトランザクションのための現在のランクに応じて、現在の書き込みレベライゼーション遅延値を選択する。ステップ６１４において、書き込みレベライゼーション遅延コントローラ３０２は、前のライトトランザクションのための前のランクに応じて、前の書き込みレベライゼーション遅延値を選択する。ステップ６１６において、書き込みレベライゼーション遅延コントローラ３０２は、現在の書き込みレベライゼーション遅延値と前の書き込みレベライゼーション遅延値との差を計算する。ステップ６１８において、出力遅延ユニット３１２は、その差を出力遅延の前の値に加算して、出力遅延の現在の値を生成する。ステップ６１２■６１８は、ライトトランザクションごとに繰り返すことができる。方法６００は、バス１０９上の複数の信号に対して実行することができる。
【００５７】
上記は特定の例を対象とするが、その基本的な範囲から逸脱することなく、他の及びさらなる例を考え出すこともでき、その範囲は、以下の特許請求の範囲によって決定される。
【図１】
0006377269.tif 000002
【図２】
0006377269.tif 000003
【図３】
0006377269.tif 000004
【図４】
0006377269.tif 000005
【図５】
0006377269.tif 000006
【図６】
0006377269.tif 000007