(57)【要約】【課題】単一の読出し動作でDQSイネーブル信号の最適なタイミングを決定するスナップショットデータトレーニングの方法を提供する。【解決手段】先ずグレイコードカウントのシーケンスをメモリに書き込み、次いで単一のバーストでそれを読み出すことで実現する。コントローラは、コマンドが発行された時点から一定間隔で読出しバーストをサンプリングし、周回遅延を決定する。簡単な真理値表の検索により、通常読出しに対する最適のDQSイネーブルのタイミングを決定する。通常の読出し動作中、イネーブルされたDQS信号の第1のポジティブエッジを使用して、コマンドが発行されるたびにイネーブルされたカウンタをサンプリングすることが好ましい。カウンタサンプルが変化した場合、これはタイミングの変動が生じたことを示すが、DQSイネーブル信号を調整して変動を補正し、DQSプリアンブルの中央に合わせた位置に保つことができる。【選択図】図１
2010250859.tif 000002
【特許請求の範囲】
【請求項１】
同期メモリコントローラにおいてデータストローブ入力をイネーブルにするための方法であって、
データストローブイネーブル値およびデータストローブエッジ値を決定するステップと、
読出しコマンドの発行があればカウンタを開始するステップと、
前記カウンタの出力が前記データストローブイネーブル値に達したとき、前記データストローブ入力をイネーブルにするステップと、
データストローブエッジサンプルを提供するために、前記データストローブ入力のエッジを使用して前記カウンタの出力をラッチするステップと、
前記データストローブエッジサンプルが前記データストローブエッジ値と異なっている場合、
前記データストローブエッジサンプルと前記データストローブエッジ値との間の差を前記データストローブイネーブル値に加えるステップと、
前記データストローブエッジ値を前記データストローブエッジサンプルに置き換えるステップと
を有する方法。
【請求項２】
前記カウンタの出力をラッチする前記ステップは、前記データストローブ入力のイネーブルに続いて、前記データストローブ入力の第１エッジで前記カウンタの出力をラッチするステップを有する請求項１に記載の方法。
【請求項３】
前記カウンタの出力をラッチする前記ステップは、前記データストローブ入力の立ち上がりエッジで前記カウンタの出力をラッチするステップを有する請求項１に記載の方法。
【請求項４】
前記データストローブ入力の４倍の周波数で前記カウンタをクロックするステップをさらに有する請求項１に記載の方法。
【請求項５】
同期メモリコントローラにおいてデータストローブ入力をイネーブルにするための方法であって、
データストローブイネーブルチと第１データストローブエッジ値と第２データストローブエッジ値とを決定するステップと、
前記データストローブイネーブル値によって決定された時間での読出しコマンドの発行に続いて前記データストローブ入力をイネーブルにするステップと、
第１データストローブエッジサンプルを提供するために、前記データストローブ入力のエッジを使用してクロックをラッチするステップと、
第２データストローブエッジサンプルを提供するために、前記データストローブ入力のエッジを使用して前記クロックの位相シフトバージョンをラッチするステップと、
前記第１データストローブエッジサンプルが前記第１データストローブエッジ値と異なっている場合、または、前記第２データストローブエッジサンプルが前記第２データストローブエッジ値と異なっている場合、
変動を補正するために前記データストローブイネーブル値を調整するステップと、
前記第１データストローブエッジ値を前記第１データストローブエッジサンプルに置き換えるとともに、前記第２データストローブエッジ値を前記第２データストローブエッジサンプルに置き換えるステップと
を有する方法。
【請求項６】
前記クロックおよび前記クロックの前記位相シフトバージョンは、前記データストローブ入力のイネーブルに続いて、前記データストローブ入力の第１エッジでラッチされる請求項５に記載の方法。
【請求項７】
前記クロックおよび前記クロックの前記位相シフトバージョンは、前記データストローブ入力の立ち上がりエッジでラッチされる請求項５に記載の方法。
【請求項８】
前記クロックの前記位相シフトバージョンの周波数は、前記クロックの周波数と実質的に等しい請求項５に記載の方法。
【請求項９】
前記クロックの前記位相シフトバージョンは、前記クロックに対して９０度位相シフトされている請求項８に記載の方法。
【請求項１０】
前記クロックの前記位相シフトバージョンの周波数と前記クロックの周波数とは、前記データストローブ入力の周波数と実質的に等しい請求項８に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願は、2007年5月7日に出願された国際出願番号PCT/CA2007/000787の国際出願についての特許出願（特願2009−516832）を原出願とする分割出願であるとともに、2006年6月30日に出願された米国特許出願（No. 11/477,659）に基づく優先権の利益を主張する。
本発明は、一般に、同期メモリおよび関連するメモリコントローラに関するものである。より詳細には、本発明は、双方向データバスおよび双方向データストローブ信号を使用する、メモリコントローラと同期メモリとの間の読出しおよび書込みデータの制御および転送に関するものである。
【背景技術】
【０００２】
同期信号源において、データストローブクロックは、伝送装置によってデータと共に駆動される。送信機から受信機まで、クロックおよびデータパスが整合させられる。受信装置では、データストローブクロックを使用して着信データをラッチする。ダブルデータレート(DDR)SDRAMメモリシステムでは、外部データバスは双方向である。書込みデータはメモリコントローラからメモリに送られ、読出しデータはメモリからコントローラに送られる。データが送られていない場合、バスはバス伝送ラインの終端電圧によって定義されるトライステートレベルに戻る。
【０００３】
双方向データストローブクロックの制御もまた、どのデバイスがデータバス上にデータを駆動しているかに応じて変化する。コントローラおよびメモリデバイスへのデータストローブクロック入力は、トライステートクロック入力レベルで生成されるスプリアスクロックエッジにより、内部データ収集が引き起こされることを防止するために、イネーブル信号によってゲート制御されなければならない。メモリコントローラおよびメモリのいずれもデータストローブを駆動していない場合、データストローブ線は終端抵抗によってバス終端電圧の方へ引っ張られる。DDRおよびDDR2メモリに対しては、終端電圧VtermはVddq/2であり、これは入力バッファ基準電圧Vrefと同じである。その結果、データストローブ入力バッファは不確定な値を発生し、この値は、ノイズに応じて“0”と“1”の間を変化する可能性がある。メモリチップ上で、このことが容易に実行されるのは、書込みデータ命令および書込みデータ自体がコントローラから同期して信号源に到達し、2つの信号セット間の歪みが1ビット周期未満であるからである。データストローブクロックDQSの最初のアクティブエッジ以前に、DQSが低駆動される2ビットのプリアンブル時間がある。この時間中、メモリチップはイネーブル信号をアサートすることができる。
【０００４】
読出し動作中、双方向バス上の読出しコマンドと読出しデータとの整合は、かなり不確実である。コマンドおよびアドレスの出力ドライバを通じての遅延、パッケージおよびプリント回路基板の接続部からメモリデバイスを通じての遅延、読出しデータ出力バッファ、パッケージ、およびプリント配線ボードの戻りを通じての遅延、ならびに最終的にメモリコントローラの入力バッファを通じての遅延は、システム構成および動作条件に依存して多数のビット周期だけ変動する。
【０００５】
読出しコマンドおよび読出しデータのこの整合に関連する第1の問題は、システムの初期化に際し、読出しデータDQSイネーブル信号が2ビットのプリアンブル内に収まるように、それをどの時間に配置するかを決定することである。第2の問題は、温度または電源電圧の変動に起因する動作中のタイミングの変動をいかに調整するかである。第3の問題は、DQSクロックとマスターシステムクロックCLKとの位相差が全く任意であり得る場合、DQSでクロックインされたデータをシステムクロックドメインへいかに転送するかである。
【０００６】
シングルデータレートSDRAMには、DQSクロックが無く、読出しデータが、コントローラから発生するマスターシステムクロックCLKに対して設定を満足し必要条件を保持しなければならなかったので、これらの問題は存在しなかった。
【０００７】
クワッドデータレート(QDR)SRAMには、それ自体専用のクロックを備えた個別の読出しデータバスおよび書込みデータバスが存在するので、この問題はない。このクロックはトライステートである必要がないので、決して不確定な状態は存在しない。
【０００８】
双方向データストローブ信号のDDR SDRAMへのある応用が、2005年5月3日付け、A.M. Schoenfeld他に付与された米国特許第6,889,336号に開示されている。初期DDR動作速度DDR267およびDDR333では、2ビットのプリアンブル時間は、まだ比較的長く、それぞれ7.5nsおよび6.66nsであった。固定的タイミングを有するシステム設計および動作条件のある範囲を、内部DQSイネーブルに調整することはそれでも可能であった。DDR2-400からDDR2-800にわたるDDR400デバイスおよびDDR2デバイスでは、DQSイネーブル時間のダイナミックな調整が必要である。チップ間コントローラからDDR SDRAMへの典型的な周回(loop-around)の読出しタイミング遅延の組合わせの例は以下の通りである。
【０００９】
【表１】
2010250859.tif 000003
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】米国特許第6889336号
【非特許文献】
【００１１】
【非特許文献１】LSI Logic 0.11 um DDR2 PHY document cw000733_1_0、2005年2月
【発明の概要】
【発明が解決しようとする課題】
【００１２】
読出しデータのタイミングは、DDR400用データレート以上ではDQSプリアンブル間隔の幅よりも長く変動する。固定的タイミングは、万全な解決法ではない。
【００１３】
一例として、DQSゲート制御のいくつかの実施形態が、LSI Logic 0.11 um DDR2 PHY document cw000733_1_0、2005年2月に記載されている。PHYは、GATEONと呼ばれる信号を使用して、DQS読出しストローブをイネーブルするための3つの異なる手法を実際にサポートする。
【００１４】
第1の手法“プログラム可能なGATEON”では、プログラム可能な遅延レジスタおよび読出しコマンドが発行された時間に基づいて、ユーザが、GATEONのタイミングをプログラミングすることができる。読出しデータトレーニングが、この方式では必要である。読出しデータトレーニングでは、種々の遅延レジスタ設定によって多数の読出し動作を試みて、期待されるデータが適切に受け取られる設定を見出し、次いで、パスの範囲の中央辺りに遅延レジスタを設定する必要がある。この手法の短所は、最適の設定を決定するためにコントローラのどこかに高水準の知能を必要とするとともに、システムを初期化するためにかなりの時間を必要とすることである。また、これは、動作中のタイミング変動を調整することができない。
【００１５】
第2の手法は、“フィードバックGATEON”と呼ばれる。コマンドが生成されるものと同じ方法で、信号が生成されてピンに送られる。この信号を、コマンド信号と同じ長さおよび同じ負荷でPCBトレースに沿ってメモリへ送り、コントローラに戻すことができる。コントローラでは、遅延した信号を使用してDQSのイネーブルを引き起こす。この手法の短所は、さらに2本のピン、PCBトレースを必要とするとともに、電力を消費することである。この手法では、実際のコマンドが読出しデータの周回遅延に完全には一致しない。
【００１６】
最後の手法は”外部GATEON”と呼ばれ、ユーザが、何らかの形でGATEON信号を生成する。この方法もまた、少なくともさらに1本のピンを必要とする。これもまた、実際のデータバスの動作を模倣する何らかの相互接続を必要とする。
【課題を解決するための手段】
【００１７】
概略的な一態様によると、本発明はメモリを制御する方法を提供し、前記方法は、メモリとメモリコントローラとの間の読出し遅延を測定するステップと、メモリの所定位置に初期化シーケンスを書き込むステップと、読出しコマンドをメモリに送って所定位置を読み出し、リターンデータ信号を受け取るステップと、読出しコマンドを送った後の所定時間に、メモリとメモリコントローラとの間の読出し遅延を決定するために用いる初期化サンプルを作成するために、リターンデータ信号をサンプリングするステップとを有する。
【００１８】
たとえば、前記メモリは、DDR SDRAMメモリまたは双方向同期ストローブ源を備えた双方向バス上のスレーブデバイスを有する。
【００１９】
別の概略的な態様によると、本発明はメモリを制御するためのメモリコントローラを提供し、前記コントローラは、読出し遅延決定回路およびDQSイネーブル回路を含み、初期化中に、前記読出し遅延決定回路は、読出しコマンドをメモリに送ってリターンデータ信号を受け取るまでの間の読出し遅延を決定し、読出し遅延決定回路は初期化サンプルを作成するために所定時間にデータをサンプリングする回路と、初期化サンプルの各順列に対してそれぞれの読出し遅延を保存するルックアップテーブルとを備え、そのDQS回路は、読出し遅延に応じて受け取ったDQSクロック信号をゲート制御するように構成されている。
【００２０】
たとえば、前記メモリはDDR SDRAMメモリを有する。
【００２１】
本発明の一実施形態では、同期クロック源および双方向データストローブを備えた双方向読出し/書込みバスを有する、メモリを制御するメモリコントローラにおける方法を提供し、前記方法は、メモリコントローラがメモリの所定位置にグレイコード初期化シーケンスを書き込むステップと、メモリコントローラが所定位置を読み出すために読出しコマンドをメモリに送り、リターンデータ信号を受け取るステップと、読出しコマンドを送った後の所定時間に、メモリコントローラが初期化サンプルを作成するためにリターンデータ信号をサンプリングするステップと、メモリとメモリコントローラとの間の読出し遅延を決定するためにこの初期化サンプルを使用するステップとによって、メモリとメモリコントローラとの間の読出し遅延を測定するステップを有する。
【００２２】
本発明の別の実施形態では、同期クロック源および双方向データストローブを備えた双方向読出し/書込みバスを有する、メモリを制御するメモリコントローラを提供し、前記コントローラは、読出し遅延判定回路およびデータストローブイネーブル回路を含み、初期化中に、この読出し遅延決定回路は、読出しコマンドをDDR SDRAMに送ってリターンデータ信号を受け取るまでの間の読出し遅延を決定し、読出し遅延決定回路は、初期化サンプルを作成するために所定時間にデータをサンプリングする回路と、初期化サンプルの各順列に対してそれぞれの読出し遅延を保存するテーブルのルックアップ機能とを備え、前記データストローブイネーブル回路は、受け取ったDQSを読出し遅延に応じてゲート制御するように構成されている。
【００２３】
本発明の別の実施形態では、同期クロック源および双方向データストローブを備えた双方向読出し/書込みバスを有するメモリと共に使用するデータストローブイネーブル回路を提供し、前記回路は、データストローブ信号を受け取るための入力と、ゲート制御されたデータストローブ信号を生成させるための出力と、データストローブイネーブルおよびデータストローブディスエーブルと、選択入力に応じてデータストローブ信号をゲート制御するマルチプレクサと、選択入力を設定して、データストローブイネーブルが起動した際にデータストローブ信号を選択し、かつ選択入力を設定して、データストローブディスエーブルの起動およびそれに続くデータストローブ信号の次の立ち上がりエッジの際にデータストローブ信号を非選択にする選択入力生成回路とを備える。
【００２４】
本発明の別の実施形態では、入力クロック信号に同期してマスタークロックの第1の位相の第1の値をラッチするための第1の回路と、入力クロック信号に同期してマスタークロックの第2の位相の第2の値をラッチするための第2の回路とを備え、第1の値または第2の値の変化が、入力クロック信号がマスタークロック源と比較して少なくとも所定量だけ変動したことを示す変動検知回路を提供する。
【００２５】
本発明の一実施形態では、単一の読出し動作でDQSイネーブル信号の最適なタイミングを決定するスナップショットデータトレーニングの方法が提供される。これは、先ずグレイコードカウントのシーケンスをメモリ内に書き込み、次いで単一のバーストでそれを読み出すことで実現される。コントローラは、コマンドが発行された時点から一定の間隔で読出しバーストをサンプリングし、周回遅延を決定する。簡単な真理値表の検索により、通常読出しに対する最適のDQSイネーブルのタイミングを決定する。
【００２６】
通常の読出し動作中、イネーブルされたDQS信号の第1のポジティブエッジを使用して、コマンドが発行されるたびにイネーブルされたカウンタをサンプリングすることが好ましい。カウンタサンプルが変化した場合、これはタイミングの変動が発生したことを示すが、DQSイネーブル信号を調整して変動を補正し、DQSプリアンブルの中央に合わせた位置に保つことができる。この技法はまた、パワーアップの際にDQSイネーブルタイミングを決定するために反復的手法を用いるシステムに適用することもできる。
【００２７】
本発明の別の実施形態は、DQSがラッチされたカウンタのサンプルに基づく、簡素な短待ち時間のクロックドメインクロッシング回路である。
【００２８】
本発明の他の態様および特徴は、添付の図面と共に、本発明の具体的な実施形態についての以下の説明を検討すれば当業者にとって明白となる。
【図面の簡単な説明】
【００２９】
【図１】本発明の一実施形態として示された、読出し遅延決定を備えたSDRAMデバイスのブロック図である。
【図２Ａ】読出し遅延決定用のタイミングチャートの実施例である。
【図２Ｂ】読出し遅延決定用のタイミングチャートの実施例である。
【図２Ｃ】読出し遅延決定用のタイミングチャートの実施例である。
【図３】図2A、2Bおよび2Cの実施例に対応する初期化サンプルに応じて読出し遅延を決定するためのルックアップテーブルである。
【図４】メモリコントローラ内に読出しデータを受け取り、図2A、2Bおよび2Cの実施例に対応する初期化サンプルを生成するための回路図である。
【図５】読出し遅延決定方法のための他のタイミングチャートである。
【図６】図5の実施例に対応するルックアップテーブルである。
【図７】読出しデータを受け取り、図5の実施例に対応する初期化サンプルを生成するための回路の回路図である。
【図８Ａ】読出し遅延が決定された後にDQSをイネーブルするための回路例の回路図である。
【図８Ｂ】図8Aに対応するタイミングチャートの実施例である。
【図９Ａ】データストローブ変動を検知するための回路の回路図である。
【図９Ｂ】図9Aの回路に対応するタイミングチャートの実施例である。
【発明を実施するための形態】
【００３０】
次に本発明の実施形態について、一例として、添付の図面を参照して説明する。
【００３１】
本発明の一例実施形態の以下の詳細な説明では、本願の一部を形成する添付図面を参照する。この添付図面では、本発明を実施できる具体的な一例実施形態を例示的に示す。これらの実施形態について、当業者が本発明を実施できるように十分詳細に説明するが、本発明の範囲から逸脱することなく、他の実施形態を採用し、論理的、機械的、電気的な変更およびその他の変更ができることを理解されたい。したがって、以下の詳細な説明は、限定的な意味に解釈されるべきではなく、本発明の範囲は添付の特許請求の範囲によって定義される。
【００３２】
次に図1を参照すると、DDR-SDRAM22に接続されたメモリコントローラ20が示されている。この接続には、メモリコントローラ20からDDR SDRAM 22にアドレスとコマンドとクロックとを送るために使用される単方向バス24と、バス26上の信号が“DQ”と示されていて、DDR SDRAM 22にデータを書き込んでメモリからデータを読み出すための双方向バス26と、データストローブクロック(DQS)を搬送するための双方向接続28とが含まれる。書込み動作では、前記DQSが、メモリコントローラ20による書込みデータに同期して生成される。読出し動作では、DDR SDRAM 22およびDQSからの読出しデータが、メモリによって同期して生成される。メモリコントローラ20は、メモリコントローラ20とDDR SDRAM 22との間の読出し遅延を決定する読出し遅延決定回路30を有する。メモリコントローラ20は、読出し遅延決定回路30の出力に応じて着信DQS信号28に基づいてゲート制御されたDQS信号34を生成するDQSイネーブル回路32を有する。
【００３３】
この例では、メモリコントローラはメインクロックで動作するASIC同期回路である。コントローラ内部のマスターDLL(図示せず)は、メインクロックに位相固定された0度の位相差クロック、さらに90度、180度および270度の位相(図示せず)を導出する。コントローラ内部のスレーブDLL(図示せず)はまた、90度の定常位相シフトを生成する。
【００３４】
次に、読出し遅延決定回路30の機能を、図1と図2A、2Bおよび2Cのタイミングチャートとを参照してさらに詳細に例示的に説明する。パワーアップの際に、先ずメモリコントローラ20は、DLLがロックして、0度、90度、180度および270度の位相、さらに90度遅延した形のDQSが確実に生成するのを待つ。これにより、コントローラのデータ入力ラッチが読出しデータを確実に収集することが可能になる。次いで、コントローラ20は、適切なパワーアップコマンドをDDR SDRAM 22に送る。これに続いて、初期化シーケンス、たとえばメモリ内の連続するバイト位置に2ビットのグレイコードシーケンスをメモリに一気に書き込む。グレイコードは一意的ではなく、いかなるグレイコードでも使用できることに留意されたい。以下のように、ビット0〜3は2ビットのグレイコードのLSBを有し、一方、ビット4〜7は2ビットのグレイコードのMSBを有する。
【００３５】
【表２】
2010250859.tif 000004
【００３６】
グレイコードのパターンは、どの時点においても1ビットのみが変化することを確実にし、2ビット間の遅延におけるいかなる僅かな差によっても誤カウントは生じない。各グレイコードビットを複数の位置(上記の例では4箇所)に書き込むことにより、以下に詳述するように、複数のサンプルを同時に抽出することが可能になる。
【００３７】
図2Aは最大読出し遅延の場合のタイミングチャートを示し、図2Bは公称読出し遅延の場合のタイミングチャートを示し、図2Cは最小読出し遅延の場合のタイミングチャートを示す。これらのタイミングチャートの各々は、0度クロック40、5ビットのグレイコードカウンタ42、44、46、48、50、コマンドシーケンス52、DQS 54、DQ 56、DQS90 58、DQ0 60、DQ1 62およびcount_en 64を示す。
【００３８】
それぞれの場合において、グレイコードカウンタは、0度クロック40と同じ周期で交番する第1のビットc0 42と、0度クロックの2倍の周期で発振する第2のビットc1 44と、0度クロックの4倍の周期で発振する第3のビットのc2 46と、0度クロックの8倍の周期で発振する第4のビットc3 48と、0度クロックの16倍の周期で発振する第5のビットc4 50とを有する。5つのビット42、44、46、48、50のタイミングは、5ビットのグレイコードが、0度クロックの4分の1サイクルごとに変化する符号語と共に生成されるようにする。
【００３９】
上述したようにメモリにグレイコードを書き込んだ後、読出し遅延決定のプロセスは、0度クロック40の立ち上がりエッジ上のコマンドシーケンス52の一部としてのREADコマンド66で継続する。グレイコードカウンタ42、44、46、48、50は、READコマンドを受けて最小の読出し待ち時間(RL)の原因となるcount_en 64の立ち下がりエッジによってイネーブルされる。図示した例では、最小読出し待ち時間は、3クロック周期であると仮定している。システム内に他に遅延がない場合、データは、この待ち時間の最後にメモリコントローラに到達し始める。
【００４０】
しかし、他に多少の遅延がシステム内にあると仮定すると、DQS54はその後のある時点で起動し、DOS54の最初の立ち上がりエッジは、2ビットのプリアンブル68によって先行されていることが示される。DQSは、起動していない間は、論理高と論理低のほぼ中間の高インピーダンス状態にあることに留意されたい。DQS54は、特定のブロック長にわたる読出しを完了するだけ十分長く起動状態にある。これに続いてDQS54はポストアンブル69となり、その後、高インピーダンス状態に戻る。
【００４１】
データ信号DQ56は、DQS54と同期してメモリから受け取られる。これはダブルデータレートシステムであるので、DQS 54の立ち上がりエッジおよび立ち下がりエッジのそれぞれに対して、DQ 56は1ビットを受け取る。スナップショットデータトレーニングを実行するために、READコマンド66が、上述したようにグレイコードシーケンスが書き込まれたメモリ内のアドレスと関連して発行される。DQS90 58は、サンプリングエッジが受け取ったデータパルスの中央に集中できるように生成された、DQ 56の位相が90度シフトしたものである。これは、たとえば、スレーブDLLで生成することができる。DQ0 60は、DQS90 58の立ち上がりエッジでラッチされたデータを示し、一方、DQ1 62は、DQS90 58の立ち下がりエッジでラッチされたデータを示す。
【００４２】
図2A、2Bおよび2Cにおいて、DQ、DQ0およびDQ1は、保存されたグレイコードの全8ビットから読み出されたビットをまとめるための簡略表記法を使用する。DQ、DQ0およびDQ1は、保存された2ビットのグレイコードからある時点に読み出された内容をすべて示している。DQ、DQ0、DQ1 =“00”が意味することは、その時間中、第1のビットが書き込まれたどのメモリ位置から読み出されたグレイコードの第1のビットも“0”であり、第2のビットが書き込まれたどのメモリ位置から読み出されたグレイコードの第2のビットも“0”である。個々のビットDQ1,...,DQ8の全詳細を図2Bにのみ示す。
【００４３】
図2A、2B、2Cを比較すると、読出し遅延に応じて、読出しデータDQ 56は、種々の時間にメモリから到着し始め、この種々の時間は、グレイコードカウンタ42、44、46、48、50の種々の状態と関係し得ることが理解できる。
【００４４】
図2Bで全体的に70と示した第1の例示的な実施形態において、8つの各入力ビットがそれぞれ余分の入力ラッチを有し、この入力ラッチが、コントローラクロックの単一の位相で入力ラッチ読出しデータDQ0をサンプリングする。図2Bにおいて、8つのビットのデータは、DQ0からDQ7について120、122、124、126、128、130、132、134で示される。DQ0からDQ3のビットは、2ビットのグレイコードのLSBを収集し、一方DQ4からDQ7のビットは、2ビットのグレイコードのMSBを収集することが理解できる。図示の例では、DQ0およびDQ4は0度位相でラッチされると仮定する。DQ1およびDQ5は、90度の位相でラッチされ、DQ2およびDQ6は、180度の位相でラッチされ、DQ3およびDQ7は、270度の位相でラッチされる。定義された時点で、これらの8つのラッチの内容をサンプリングすることによって、初期化サンプルは生成される。図示の例では、0度のサンプルが、READコマンドを発行した後に、全7クロック周期で取られ、これに続いて、90度、180度、270度のサンプルが取られる。0度のサンプルをb0、b4、90度サンプルをb1、b5、180度サンプルをb2、b6、そして270度サンプルをb3、b7で表示する。
【００４５】
図3において一例として示すように、初期化サンプルの様々な順列は真理値表に整理される。この表は、論理回路、たとえばレジスタまたはメモリコントローラ内のROM(Read Only Memory)として実施することができる。この場合、初期化サンプルは、ビットがサンプリング位相によって整理された表で示される。各初期化サンプルは8ビットを有し、表中の最初の2ビットは0度の位相でサンプリングされた2ビット(図2Bの例のb0およびb4)であり、次の2ビットは、90度の位相でサンプリングされた2ビット(図2Bの例のb1およびb5)であり、その次の2ビットは、180度の位相でサンプリングされた2ビット(図2Bの例のビットb2およびb6)であり、その次の2ビットは、270度の位相でサンプリングされた2ビット(図2Bの例のビットb3およびb7)である。この手法では、上に示したように、2ビットのグレイコードのシーケンスの第1のビットが、各バイトの0ビット乃至3ビットに書き込まれ、2ビットのグレイコードのシーケンスの第2のビットが、各バイトの4ビット乃至7ビットに書き込まれた状態でグレイコードシーケンスがメモリに書き込まれている必要がある。
【００４６】
この代わりに、同じ初期化サンプルを、2ビットのグレイコードシーケンスが書き込まれた2ビットだけを使用して生成することができる。これを、全体的に72で示した図2Bの第2の例に示すが、ここでは第1のビットがDQ0に、第2のビットがDQ4に読み出されると仮定する。この場合、DQ0およびDQ4のそれぞれを4つ全てのクロック位相でサンプリングする必要がある。こうして、8つのサンプルを使用して上述したのと同じ初期化サンプルを生成することができる。
【００４７】
図2Aは、最大遅延の場合を示す。この場合では、0度、90度、180度、270度のサンプルは“00 00 00 00”である。タイミングチャートから、DQS90の最初の立ち上がりエッジの通常動作は、グレイカウント15の近傍で起きることが理解できる。DQS 54は、2ビットのプリアンブルを有しているので、グレイカウント13でDQSをイネーブルすることにより最初の立ち上がりエッジに対して、それがイネーブルされることを確実にする。バースト長が4であると、DQSは、グレイカウント20近辺でディスエーブルされるのに対して、バースト長が8であると、DQSは、グレイカウント28近辺でディスエーブルされる。図3の真理値表を参照すると、この情報が、初期化サンプル“00 00 00 00”と関連して表に記入されていることが理解できる。
【００４８】
図2Bは、公称遅延の場合を示す。0度、90度、180度および270度のサンプルは“01 11 11 11”であり、これらは、図3の表の第6行に対応する。最後に、図2Cは最小遅延の場合を示し、0度、90度、180度、270度のサンプルは“10 10 10 10”で、これらは、図3の真理値表の第1行に対応する。表にはまた、その右側2列に、DQ0およびDQ1をサンプリングするために遅延に応じてどのクロック位相を使用すべきかの指示も含まれている。これは、いかにしてデータをコントローラのクロックドメインに移動させるか、すなわち、データをラッチするために0度のメインクロックの立ち上がりエッジまたは立ち下がりエッジのいずれかを使用して、コントローラのマスタークロックに基づいて、いかにしてメモリからコントローラに読み出されるデータを同期させるかを指定する。
【００４９】
読出し遅延を決定した後、図1のDQSイネーブル回路32は、着信DQSおよび/またはDQS90をイネーブル/ディスエーブルする。より詳細には、通常の読出し動作中、コントローラは、(この例では)ブロック長BL=8および読出し待ち時間RL=3のREADコマンドを発行する。count_en信号がアサートされ、読出しコマンドが発行された後の3番目のクロックエッジに続いてグレイコードカウンタが0から開始される。データが、これより少しでも早く到着することはあり得ない。このカウンタは、どの時点でも1ビットのみが変化するグレイコードカウンタであることに留意されたい。このカウント値は、通常の2進数符合化方式には対応しない。カウンタは、1/4クロック周期ごとに増加する。一旦カウンタが、(以前に測定された遅延に対して)イネーブルまたはディスエーブルにするための表に保存された値に達すると、それに応じてDQSは、イネーブルまたはディスエーブルされる。
【００５０】
その上、カウンタ値は、データバーストのデータの第1ビットに対応する、立ち上がりエッジ上のイネーブルされたDQSクロックによってラッチされる。この値は、真理値表のある行に対応する。この値が、以前の読出しサイクルすなわち前節で説明された初期化シーケンスでの値と同じである場合は、周回遅延は一定に保たれている。この値が異なる場合は、タイミングは変動してしまっており、DQSイネーブルのタイミングは、コントローラによって更新されなければならない。
【００５１】
次に図4を参照して、本発明の一実施形態による、図1の双方向バス26を通じて単一ビットを受け取るためのメモリコントローラ内の関数回路を説明する。図示したのはDQS_EN 80と表示されたDQSイネーブルであり、これは図1のDQSイネーブル回路32により生成されたDQSイネーブル入力である。DQSイネーブル80は、DQS90入力58および反転されたDQS90入力82をゲート制御する。DQS90は、DDR SDRAM 22からメモリコントローラ20へ送られるDQSの位相が90度シフトされたものであることを思い起こされたい。DQS TB0は、DQS90の立ち上がりエッジに対応する立ち上がりエッジを有し、一方、DQS TB1 83は、DQS90.の立ち下がりエッジに対応する立ち上がりエッジを有する。データ信号はDQn 56上で受け取られ、DQn 56は、DQS90の立ち上がりエッジでラッチするフリップフロップ84と、DQS90の立ち下がりエッジでラッチするDフリップフロップ86とのD諸入力に接続される。フリップフロップ84はDQ0 88を出力し、これは、DQS90の立ち上がりエッジでラッチされるデータである。フリップフロップ86は、DQ1 90を出力し、これは、DQS90の立ち下がりエッジでラッチされるデータである。
【００５２】
DQ0 88およびDQ1 90をサンプリングして、0度クロックと同期するように再調整された出力89および90を生成する回路85が提供される。これは、フリップフロップ92および94で、DQ0を0度および180度のクロック位相でサンプリングし、マルチプレクサ選択入力mux_sel 101に応じて、マルチプレクサ100で0度サンプルと180度サンプルのいずれかを選択することによって達成される。使用されるmux_sel値は、読出し遅延の関数であり、上述したようにルックアップテーブルに保存される。次いでこの出力は、Dフリップフロップ104により0度クロック位相でサンプリングされ出力89を生成する。DQ1 90は、Dフリップフロップ96により180度でサンプリングされ、一方、0度サンプルは、Dフリップフリップ86の出力に対応する。DQ1は、DQ0後の1/2クロック周期の間有効である。これにより、DQ0およびDQ1のデータを同一間隔内に有効となるように効果的に再調整する。180度サンプルまたは0度サンプルのいずれかが、今度もマルチプレクサ選択入力mux_sel 101に応じて、マルチプレクサ102により選択される。選択された出力は、Dフリップフロップ106を使用して0度クロック位相でサンプリングされ出力90を生成する。
【００５３】
図示した例には、RTL(Register Transfer Language)クロック入力120への出力89、90を再調整するためのもう1対のフリップフロップ108、110が含まれる。クロックされた出力全体が、109、111で示され、これらはそれぞれ入力56の偶数ビットと奇数ビットに対応する。コントローラ-メモリ間インターフェースのビット0および1に関してこれまで述べた回路全体が、インターフェースの各ビットに対して繰り返される。最新設計のパーソナルコンピュータの典型的インターフェース幅は64ビットであるが、他の用途では幅は異なる。
【００５４】
回路122が、初期化サンプルを生成するために提供される。これは、DQ0 88をサンプリングするDフリップフロップ112から構成されている。Dフリップフロップ112は、フリップフロップ114を使用して0度クロックに再調整される。フリップフロップ114は、任意選択で、フリップフロップ116によりRTLクロックに再調整される。
【００５５】
図2Bの第1の例70に対応する機能を実現するため、回路122がインターフェースのどのビットで実施されるかに応じて、DQ0は、異なるクロック位相でサンプリングされる。図示の例では、DQ0およびDQ4に対しては、サンプリングは、0度クロック位相で行われる。DQ1およびDQ5に対しては、サンプリングは、90度クロック位相で行われる。DQ2およびDQ6に対しては、サンプリングは、180度クロック位相で行われる。最後に、DQ3およびDQ7に対しては、サンプリングは、270度クロック位相で行われる。その結果の全体は、読出し遅延がどれだけか決定するために図3のルックアップテーブルと共に使用できる8ビットの初期化サンプルである。これを使用して、通常動作のためにDQS_enable 80をいつイネーブルするかを決定する。別の方法として、2ビットがそれぞれ4回サンプリングされる場合の図2Bの第2の例72に対応する実施形態では、回路122は、インターフェースの2ビットに対して実施される必要があるだけだが、各ビットが、0度、90度、180度、270度クロック位相の各々でサンプリングできるように4回実施される必要がある。
【００５６】
代替回路の実施において、回路122はインターフェースの全てビットに対して再現できるので、論理は全てのビットに対して同一であることに留意されたい。
【００５７】
初期化サンプル出力は、入力に応じて、連続的に変化している。初期READコマンドの所定時間後、初期化サンプルは“有効”である。
【００５８】
別の実施形態では、より長い範囲の待ち時間が可能である。16ビット周期の遅延範囲をカバーするために初期化パターンをメモリに書き込むには、3ビットのグレイコードが必要である。1ビットにつき1つのサンプリングラッチを備えた1バイト幅のインターフェースに3ビットのサンプリング位相を4つ全て収集することは、もはや不可能である。12ビット幅のインターフェースが必要となるか、あるいは別個の読出し動作で個々のグレイコードビットを順次サンプリングすることができる。
【００５９】
次に図5を参照して、本発明のこの実施形態を説明するために使用するタイミングチャートを示す。この実施形態では、上述の2ビットのグレイコードではなく3ビットのグレイコードが採用される。たとえば、メモリ内の16の連続する12ビット位置の連続バイト位置に書き込まれるグレイコードは以下のものでよい。
【００６０】
【表３】
2010250859.tif 000005
【００６１】
16個のメモリ位置全体を読み出すために、2つのBL8(バースト長は8)READコマンドを実行する。これは、コマンドシーケンス200内に示されており、そこにBL8 READ201および第2のBL8 READ 203がある。図3の場合のように専用ハードウェアを用いて実施したグレイカウンタを使用するのではなく、RTL(図示せず)でグレイコードカウンタを実施する。この場合、グレイコードカウンタCK 202は、第1のREADコマンド201により0からカウントを開始する。受け取ったDQSを204で示す。
【００６２】
全体的に220で示した最小遅延の場合(RL=3)では、DQSは、クロックカウント=12で第1の立ち上がりエッジを有する。受け取ったDQビットの簡略表記を206に示す。90度DQSクロックは208にあり、DQS90のDQ0(立ち上がりエッジで取られたサンプル)およびDQ1(立ち下がりエッジで取られたサンプル)は、それぞれ210、212に示される。図示の例では、初期化サンプルは、クロックカウント=40、41、42、43の間に生成され、その直後に215で示したように有効な初期化サンプルが存在する結果になったと仮定する。次いで有効な初期化サンプルをルックアップテーブルと共に使用して読出し遅延がどれだけか決定し、次にDQS_enableをいつイネーブルするかを決定する。
【００６３】
最大遅延の場合を全体的に222で示す。この場合、調整できる最大読出し遅延後のクロックカウント=40の直後までDQS90の立ち上がりエッジは発生しない。
【００６４】
図6は、この例用のルックアップテーブルを示す。この場合、タイミングは、グレイコードカウンタ202を基準とする。
【００６５】
図7は、図5の実施形態のための入力DQ回路の例を示す回路図である。この回路は、基本的に図4の回路と同じである。この場合、12ビット用のサンプリング回路は、DQ0、DQ4、DQ8に対しては0度サンプル、DQ1、DQ5、DQ9に対しては90度サンプル、DQ2、DQ6、DQ10に対しては180度サンプル、そしてDQ3、DQ7、D11に対しては270度サンプルを生成する。その結果は、図6のルックアップテーブルの適切な行を検索するために使用できる12ビットの初期化サンプルである。
【００６６】
より一般に、Nビットのグレイコードを使用することができる。Nビットのグレイコードには、2n個の符号語がある。この場合、2n個の符号語の各々を2n+1個の連続するアドレス内の1対のアドレスに書き込むことにより、メモリコントローラはメモリの所定位置にグレイコード初期化シーケンスを書き込む。これには、2n+1個のアドレスの各々にNビットを書き込む必要があり得、その場合グレイコードの各ビットが、4つのクロック位相でサンプリングされる。別の方法では、これにはg1,g1,g1,g1,..., gN,gN,gN,gNを1対のアドレスに書き込むことで、それぞれのグレイコード符号語g1, g2, ...,gNのビットを4Nビットとして2n+1個のアドレスの各々に書き込む必要があり得る。この場合、グレイコードの各ビットを4つのクロック位相でサンプリングするには、4N個のデータ信号を受け取り、第1のクロック位相でN個のデータ信号をサンプリングし、第2のクロック位相で別のN個のデータ信号をサンプリングし、第3のクロック位相で別のN個のデータ信号をサンプリングし、第4のクロック位相で別のN個のデータ信号をサンプリングする必要が伴う。
【００６７】
上記の詳細な説明では、読出し遅延を測定するための機構に重点を置いた。遅延がどれだけかを決定した後、こうして決定された遅延に従って、図1のDQSイネーブル回路32がDQS信号についてのゲート制御を開始する。次にDQSイネーブル回路32の具体的な回路例について図8Aを参照して説明する。ここで、DQS 158およびDQS# 160と表示されたDQSの反転信号の両方が、メモリからインターフェースを通じて受け取られると仮定する。そこにある回路180は、DQSおよびDQS#の両信号とも有するDDR2メモリとは対照的に、本明細書においてDDR1と呼ぶ、DQS信号のみがあってDQS#信号の無いDDRメモリ設計に対して図8AのDQSイネーブル回路を上位互換にさせるためのものである。したがって、DDR1の実施では、そのような場合、DQS#はメモリコントローラにより生成される必要がある。回路180は、DDR1モードとDDR2モードのいずれかを選択する。残りの回路182は、ゲート制御されたDQS#信号172(dqsb_iと表示)およびゲート制御されたDQS信号173(dqs_iと表示)を生成する役割を果たす。上位互換性が要求されない場合、回路180は必要ない。
【００６８】
回路182は、コントローラから入力141を受け取るための第1のDフリップフロップ144を有し、これが、初期化サンプルによって決定される読取り経路遅延に対応した時点でアサートされ、DQSをいつイネーブルするかを示す。回路182はまた、CLK(N)と呼ぶクロック入力を140で受け取り、このことは、コントローラがこの入力に対してクロック位相を選択できることを示す。フリップフロップ144は、出力dqs_enable_ff 148を生成する。同様に、第2のDフリップフロップ146は、コントローラからDQSをいつディスエーブルするかを示す入力143を受け取る。この入力143は、第1のフリップフロップ144をクロックするために使用されるクロック140と180度位相がずれたクロック入力142によってクロックされる。このDフリップフロップ146は、dqs_disable_ff出力150を生成する。dqs_enable_ff 148とdqs_disable_ff 150の反転信号とは、ANDゲート152に結合され、その出力は、SRフリップフロップ154のS(set)入力に接続される。dqs_disable_ff 150の反転信号は、SRフリップフロップ154のD入力にも接続される。フリップフロップ154のQ出力は、dqs_enable_i 156であり、これは、第1のマルチプレクサ170および第2のマルチプレクサ171のマルチプレクサ選択入力に接続される。マルチプレクサ170への2つの入力には、DQS#入力168およびVDD 169がある。マルチプレクサ170の出力はdqsb_iであり、これは、SRフリップフロップ154のクロック入力への入力でもある。マルチプレクサ171への2つの入力には、DQS入力166およびVSS 177がある。マルチプレクサ171の出力はdqs_iである。
【００６９】
次に、図8Aの回路の動作を、図8Bのタイミングチャートを参照して説明する。図8Bは、DQS 166、DQS# 168、dqs_enable_ff 148、dqs_disable_ff 150、dqs_enable_i 156およびdqsb_i 172それぞれのプロットを示す。dqs_i 173が、dqsb_i 172と同期してイネーブルされることに留意されたい。読出しコマンドを送った後のある時点であって、以前に測定された読出し遅延によって決定された時点で、Dフリップフロップ144の入力141は、メモリコントローラの制御下で高くなる。入力141は、クロック入力140の立ち上がりエッジでクロックインされる。図8Bの例では、dqs_enable_ff 148が、270度クロック位相で高くなることが理解できる。dqs_enable_ff 148が高くなるとき、ANDゲート152の出力は高くなり、SRフリップフロップ154へのセット入力は、dqs_enable_iを高に遷移させる。図8Bにおいて、dqs_enable_i 156が、270度クロック位相の僅か後に高位に遷移することが理解できる。一旦dqs_enable_i 156が高になると、マルチプレクサ170へのDQS#入力168が選択され、したがってDQS#がdqsb_i 172に現れる。dqs_enable_ff 148が、その後のある時点で低くなるとき、SRフリップフロップ154へのセット入力は低くなるが、D入力はdqs_disable_ff 150の反転信号であるので高い。このように、dqs_enable_i 156は、今のところ高いままである。dqs_enable_ff 148の立ち上がりエッジとDQS 166の第1の立ち上がりエッジとの時間間隔は、1/4クロックサイクルより長い。これは、DQSのタイミングとメインコントローラを用いてのタイミングとの間の変動の許容限度を表す。90度より大きい変動が発生してdqs_enableのタイミングが再調整できるのはいつかを検知するための回路を以下に説明する。
【００７０】
DQS#をディスエーブルするため、その後のある時点で、Dフリップフロップ146へのディスエーブル入力143がメモリコントローラの制御下で高くなる。入力143は、Dフリップフロップ144へのイネーブル入力をクロックインするために使用するクロックより180度遅れたクロックでクロックインされる。Dフリップフロップ146はdqs_disable_ff出力150を生成し、該Dフリップフロップ146の出力が、SRフリップフロップ154の反転入力であるD入力に接続されている。このため、SRフリップフロップ154へのクロック入力の次の立ち上がりエッジ(すなわち、DQS#の次の立ち上がりエッジ)で、dqs_enable_iは低くなる。これにより、マルチプレクサ170へのDQS#入力168は非選択となり、dqsb_i 172はVDDに遷移する。こうして、dqs_disable_ffが高くなった後、dqs_enable_iが低くなるのは、dqsb_iの次の立ち上がりエッジ以降であることがタイミングチャートにおいて理解できる。
【００７１】
図8Aにおいて全体的に197として示された回路であって、マルチプレクサ選択入力156を生成するための具体的な回路を説明してきた。より一般に、データストローブイネーブルの起動の際に、データストローブ信号を選択するための選択入力を設定し、データストローブディスネーブルの起動およびそれに続くデータストローブ信号の次の立ち上がりエッジの際に、データストローブ信号を非選択にするための選択入力を設定する選択入力生成回路を使用することができる。
【００７２】
回路180は、DDR1の実施用の単一DQS入力158からDQS# 168およびDQS166を生成するための機構を単に提供する。DQS#入力160は、DDR1の実施には存在しない。回路180は、第1および第2のマルチプレクサ162、164から構成されている。これらは、それぞれDQS入力158およびDQS#入力160を受け取るために接続される。マルチプレクサ162は、常にDQS158を選択する。DDR2が低い場合は、マルチプレクサ164は、DQS出力168をDQS#入力160とするように選択する。そうでない場合は、DQS出力168は、DQS158の反転信号から生成される。常にDQS158を選択するマルチプレクサ162を含めることにより、DQSおよびDQS#に等しい負荷がかかることを確実にする。
【００７３】
DQSおよびDQS#は、メモリコントローラから受け取るクロックに応じてメモリ内に生成される。しかし、DQSがメモリコントローラに戻って受け取られる時点までに、このクロックは、メモリの回路を通ってDQS出力を通して戻り、メモリコントローラからメモリまで伝送される。その結果として、メモリコントローラで受け取られるDQSおよびDQS#の出力と、図8BのDQSイネーブルのタイミング、およびそれに対応してdqs_enable_ff、dqs_disable_ff、dqs_enable_iおよびdqsb_iのタイミングとの間の変動がいくらか存在する。しかし、いかなるDDR SDRAMの実施でも、より一般には、DQS信号は、メインクロックに対していくぶん変動することが予想できる。本発明の他の実施形態では、この変動を検知するものであって、より詳しくは、いつ変動が90度より大きくなるかを検知するための機構を提供する。一旦変動が、90度に達すると、この変動は、DQSイネーブルおよびディスネーブルの信号のタイミングを更新することによって補正されることができる。
【００７４】
次に図9Aを参照して、本発明の一実施形態によって提供されるデータストローブ変動検知器の回路図を示す。2つのDフリップフロップ191、192のクロック入力を駆動するDQS入力190が示されている。フリップフロップ191のD入力は、マスターDLL 200から0度クロックを受け取り、一方、フリップフロップ192のD入力は、マスターDLL 200の90度位相を受け取る。第1のフリップフロップ191の出力196を変動<1>と呼び、一方、第2のフリップフロップ192の出力198を変動<0>と呼び、あわせて“変動出力”と呼ぶ。
【００７５】
次に図9Aの回路の動作を、図9Bのタイミングチャートを参照して説明する。0度クロック200、90度クロック202、DQS 190および変動<1:0>196、198が示されている。DQS 190が、0から1へ遷移する(立ち上がりエッジ)とき、0度および90度のクロック200、202の状態がラッチされて出力196、198を変動させる。ラッチすることができる内容の4つの例を図9Bに示す。204での最初の例において、変動出力196、198は“10”である。その後のサンプリング時206(DQ 190の次の立ち上がりエッジ)では、変動サンプルは、まだ“10”である。その後のサンプリング時208では、変動出力196、198は、今や“11”である。この状態は、その後のサンプリング時210でもやはり同じである。変動出力が、サンプリング時208で“10”から“11”に変化したという事実は、90度より大きな変動が発生したという事を示す。次いで、この情報は、メモリコントローラにより使用されてDQSイネーブルおよびディスネーブルの時間が更新される。
【００７６】
図8AのDQSイネーブル回路は、読出し遅延を決定するためのいかなる機構とも一緒に使用できることに留意されたい。さらに、図9Aのデータストローブ変動検知器は、メインクロックと比べて変動するDQS信号を受け取るいかなる回路内にも使用することができる。その特定の用途は、読出し遅延の決定方法を用いる回路および上述の回路においておよび/または上述のDOSイネーブル方式においてである。
【００７７】
非常に具体的な変動検出回路を説明してきた。より一般には、入力クロック信号と同期して、マスタークロックの第1の位相の第1の値をラッチする第1の回路が提供される。上記の例で、第1の回路はDフリップフロップであるが、他の実施も可能である。入力クロック信号と同期して、マスタークロックの第2の位相の第2の値をラッチする第2の回路がある。上記の例で、第2の回路はDフリップフロップであるが、他の実施も可能である。第1の値または第2の値のいずれかの変化は、入力クロック信号が、マスタークロック源と比べて少なくとも所定量だけ変動したことを示す。説明した詳細な例では、第1のクロック位相は、マスタークロックに基づいて0度クロックであり、第2のクロック位相は、マスタークロックに基づいて90度クロックであり、所定量は1/4クロックサイクルであるが、2つのクロックの位相を適切に選択することによって他のシフトを検知することができる。
【００７８】
上の具体的な例では、DDR1およびDDR2について言及する。より一般に、本発明の実施形態は、DDR、DDR2、DDR3およびGDDRの様々な変種を含む双方向データストローブを使用する、全ての工業規格のDDR DRAMに適用することができる。さらにより一般に、本発明の実施形態は、同期クロック源および双方向データストローブを備えた、双方向読出し/書込みバスを有するメモリに適用することができる。上述のDQSは、このような双方向データストローブの具体的な例である。より一般的な状況で、データストローブをイネーブルするためのデータストローブイネーブル回路が提供され、DQSイネーブル回路はこの具体的な例である。
【産業上の利用可能性】
【００７９】
また本発明は、データクロックをゲート制御することにより内部クロック電力を節約するためにQDRおよびQDR2 SRAMに好適なものとなることができるともに、クロックドメインクロッシングを実施することに好適なものとなることができる。
【００８０】
さらに、本明細書で説明された方法および回路は、DQSをイネーブルする以外の目的で読出し遅延を決定するために使用することができる。具体的な例は、クロック境界上で変動を決定することであって、クロック境界上でデータをクロッシングすることである。
【００８１】
また本発明は、高速シリアルインターフェースにおいて好適なものとなることができる。上述の実施形態では、簡単にするため、図に示すようにデバイス構成要素および回路は互いに接続される。本発明の実際の応用では、半導体ICおよびDRAMデバイス、構成要素、回路等は、直接互いに接続されていてもよい。なお、構成要素、回路等は、半導体ICおよびDRAMデバイスの動作に必要な他の構成要素、回路等を介して、間接的に互いに接続されていてもよい。したがって、半導体ICおよびDRAMデバイスの実際の構成において、回路構成要素およびデバイスは、(直接または間接的に接続され)互いに結合される。
【００８２】
本発明の上述の実施形態は、例示だけを目的とする。変更形態、改変形態および変形形態は、本発明の範囲から逸脱することなく、当業者によって特定の実施形態として実施されることができ、本発明は、本願に添付された特許請求の範囲によってのみ定義される。
【符号の説明】
【００８３】
20  メモリコントローラ
22  DDR-SDRAM
24  単方向バス
26  双方向バス
28  双方向接続
30  読出し遅延決定回路
32  DQSイネーブル回路
34  DQS信号
40  0度クロック
42、44、46、48、50  グレイコードカウンタ
52  コマンドシーケンス
54  DQS
56  データ信号DQ
58  DQS90
60  DQ0
62  DQ1
64  count_en
66  READコマンド
69  ポストアンブル
70  第1の例
72  第2の例
80  DQSイネーブル
82  反転されたDQS90入力
83  DQS TB1
84、86、92、94、96、104、106、108、110、112、114、116、144、146  フリップフロップ
154  SRフリップフロップ
101  マルチプレクサ選択入力mux_sel
100、102、170、171  マルチプレクサ
120  RTLクロック入力
140  CLK(N)クロック入力
148  dqs_enable_ff出力
150  dqs_disable_ff出力
152  ANDゲート
156  dqs_enable_i
158  DQS入力
172  dqsb_i
173  dqs_i
160  DQS#入力
196  変動出力
198  変動出力
200  コマンドシーケンス
201、203  READコマンド
202  グレイコードカウンタCK
【図１】
2010250859.tif 000006
【図２Ａ】
2010250859.tif 000007
【図２Ｂ】
2010250859.tif 000008
【図２Ｃ】
2010250859.tif 000009
【図３】
2010250859.tif 000010
【図４】
2010250859.tif 000011
【図５】
2010250859.tif 000012
【図６】
2010250859.tif 000013
【図７】
2010250859.tif 000014
【図８Ａ】
2010250859.tif 000015
【図８Ｂ】
2010250859.tif 000016
【図９Ａ】
2010250859.tif 000017
【図９Ｂ】
2010250859.tif 000018