(57)【要約】【課題】初期化シーケンスにおけるタイミングキャリブレーションを適切に実行する技術を提供する。【解決手段】入力バッファ（２１）に供給するデータを遅延させる第１遅延回路（２３）と、出力バッファ（２１）から読み出したデータを遅延させる第２遅延回路（２４）と、第１遅延回路（２３）を介してデータをメモリ（５）に供給するデータ書込み回路（２５）と、メモリ（５）に書き込まれたデータを、第２遅延回路（２４）を介して読み出して読み出しデータとするデータ読み出し回路（２６）と、データ信号の揺らぎに応じて形成されるｅｙｅ開口の開始端部の位置と終了端部の位置を検出し、開始端部と終了端部との中間位置を特定し、中間位置と開始端部との差を、データ信号とデータストローブ信号との位相差とする決定する制御回路（２０）とを具備するメモリインターフェースを構成する。【選択図】図５
2010086246.tif 000002
【特許請求の範囲】
【請求項１】
入力バッファに供給する書込みデータを遅延させる第１遅延回路と、
出力バッファから読み出した読み出しデータを遅延させる第２遅延回路と、
前記第１遅延回路を介して前記書込みデータをメモリに供給するデータ書込み回路と、
前記メモリに書き込まれた前記書込みデータを、前記第２遅延回路を介して読み出して前記読み出しデータとするデータ読み出し回路と、
前記書込みデータまたは前記読み出しデータの揺らぎに応じて形成されるｅｙｅ開口の開始端部の位置と終了端部の位置とを検出し、前記開始端部と前記終了端部との中間位置を特定し、前記開始端部または前記終了端部の少なくとも一方と前記中間位置との差に基づいて、前記データストローブ信号の位相を決定する制御回路と
を具備する
メモリインターフェース。
【請求項２】
請求項１に記載のメモリインターフェースにおいて、
前記読み出しデータのエッジを検出するエッジ検出回路をさらに具備し、
前記データ書込み回路は、
連続するビットを含む第１テストデータを、通常モードで前記メモリに書き込み、
前記データ読み出し回路は、
書き込まれた前記第１テストデータを、前記メモリから読み出し、
前記エッジ検出回路は、
読み出された前記第１テストデータのレベルが遷移する遷移タイミングを検出し、前記遷移タイミングを前記制御回路に通知し、
前記制御回路は、
前記遷移タイミングに基づいて、前記ｅｙｅ開口の前記開始端部のタイミングを特定する
メモリインターフェース。
【請求項３】
請求項２に記載のメモリインターフェースにおいて、
前記制御回路は、
前記第１遅延回路と前記第２遅延回路の遅延値を最小値に設定し、
前記データ書込み回路に、前記第１テストデータの書込みを指示し、
前記データ読み出し回路は、
第１データストローブ信号と、
前記第１データストローブ信号と位相が異なる第２データストローブ信号に応答して読み出し、
前記エッジ検出回路は、
前記２つのデータストローブ信号の各々に対応してラッチされた二つの第１テストデータのレベルに基づいて前記遷移タイミングを検出する
メモリインターフェース。
【請求項４】
請求項１から３の何れか１項に記載のメモリインターフェースにおいて、
前記データ書込み回路は、
１ビットのパルスを含む第２テストデータを、通常モードで前記メモリに書き込み、
前記データ読み出し回路は、
書き込まれた前記第２テストデータを、前記メモリから読み出し、
前記制御回路は、
読み出された前記第２テストデータが、前記ｅｙｅ開口の前記開始端部の位置に基づいて構成される読み出しデータの期待値に一致するか否かを検出し、前記期待値に基づいて、前記終了端部の位置を検出する
メモリインターフェース。
【請求項５】
（ａ）データの揺らぎに応じて形成されるｅｙｅ開口を特定し、前記ｅｙｅ開口の端部の位置を検出するステップと、
（ｂ）前記端部に対向する他の端部の位置を検出するステップと、
（ｃ）前記端部と前記他の端部との中間を、データストローブ信号の立ち上がり／立下りの位置とするステップと
を具備する
メモリインターフェースの動作方法。
【請求項６】
請求項５に記載のメモリインターフェースの動作方法において、
前記（ａ）ステップは、
連続するビットを含む第１テストデータを、通常モードでメモリに書き込むステップと、
書き込まれた前記第１テストデータを、前記メモリから読み出すステップと、
読み出された前記第１テストデータのレベルが遷移する遷移タイミングを検出するステップと、
前記遷移タイミングに基づいて、前記ｅｙｅ開口の前記端部のタイミングを特定するステップを含む
メモリインターフェースの動作方法。
【請求項７】
請求項５または６に記載のメモリインターフェースの動作方法において、
前記（ｂ）ステップは、
１ビットのパルスを含む第２テストデータを、通常モードでメモリに書き込むステップと、
書き込まれた前記第２テストデータを、前記メモリから読み出すステップと、
読み出された前記第２テストデータが、前記ｅｙｅ開口の前記端部のタイミングに基づいて期待されるデータ読み書きの期待領域に一致するかを検出するステップと、
前記期待領域に基づいて、前記他の端部の位置を検出するステップを含む
メモリインターフェースの動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリインターフェース及びメモリインターフェースの動作方法に関する。
【背景技術】
【０００２】
情報処理技術の進歩に伴って、高速化、低消費電力化を可能にした半導体記憶装置が普及している。そのような半導体記憶装置において、高速データ通信を実現するために、データストローブ信号（ＤＱＳ）を採用した半導体記憶装置に関する技術が知られている。データストローブ信号（ＤＱＳ）を採用した半導体記憶装置としては、例えば、ＤＤＲ（Double  Data  Rate）２  ＳＤＲＡＭ（Synchronous  DRAM）や、ＤＤＲ３  ＳＤＲＡＭなど、データ転送レートがＧｂｐｓ帯の半導体記憶装置が例示される。
【０００３】
一般的に、そのような高速の半導体記憶装置と演算処理装置（ＣＰＵ）との間には、メモリインターフェースが備えられている。現在、市場に流通しているＤＤＲ２  ＳＤＲＡＭや、ＤＤＲ３  ＳＤＲＡＭなどの半導体記憶装置は、電源投入直後の内部回路の論理状態が不定である。それらの半導体記憶装置では、正常な動作を確保するために、電源投入後にメモリインターフェースによる初期化（イニシャライズ）が行われる。
【０００４】
図１は、従来の半導体記憶装置の初期化動作を示すフローチャートである。図１を参照すると、ステップＳ１において、Ｉ／Ｏとメモリのイネーブルおよび初期値の設定が行われる。その後、ステップＳ２において、タイミングキャリブレーションが行われる。そして、ステップＳ３において、初期化シーケンスの終了と、ノーマルオペレーションの開始の準備が行われる。
【０００５】
図２は、上述のタイミングキャリブレーションの構成・動作を示すブロック図である。そのタイミングキャリブレーションは、メモリ側とインターフェース側の双方の制御に基づいて実行される。図２の（ａ）は、タイミングキャリブレーションの第１段階を示す図である。図２の（ｂ）は、タイミングキャリブレーションの第２段階を示す図である。図２の（ｃ）は、タイミングキャリブレーションの第３段階を示す図である。
【０００６】
図２の（ａ）を参照すると、タイミングキャリブレーションの第１段階では、転送レートを落として、リードキャリブレーションを行うためのデータ（例えば、ＰＲＢＳ  ２７−１）を書き込む。図２の（ｂ）を参照すると、第２段階では、その書き込まれたデータを用いてリード側のＤＱ、ＤＱＳのスキュー調整を実行する。図２の（ｃ）を参照すると、第３段階では、リード側のＤＱ、ＤＱＳのスキュー調整を実行する。
【０００７】
従来のスキュー調整では、Ｗｒｉｔｅ側の物理的な制限（例えば、相対精度のバラツキや、基盤配線等の設計者が調整できる制限）を抑える事が出来ない場合、ＳＤＲモードへのモード変更や、転送レートを落として確実にＷｒｉｔｅデータを書き込むという手法がある。その手法では、クロックの分周比やモードを通常モード動作中にＯｎ  Ｔｈｅ  Ｆｌｙで安全に切り替えができる機能と、テスト回路とが必要である。そして、テストには、  ＰＲＢＳなどの擬似ランダムパターンが必要である。
【０００８】
たとえばＰＲＢＳ７段などの特定パターン長を用いて、上述のタイミングキャリブレーションを実行する場合、
「ＲｅａｄデータのＷｒｉｔｅ」、
「ＲｅａｄのＣａｌｉｂｒａｔｉｏｎ」、
「ＷｒｉｔｅのＣａｌｉｂｒａｔｉｏｎ」
の３回の処理を実行しなければならない。
このとき、Ｒｅａｄ時に正常なデータが取り込めなかった場合、最初のＷｒｉｔｅに失敗したためなのか、Ｒｅａｄに問題があるのかの判断をすることが困難である。また、最初のＷｒｉｔｅに失敗した場合は、再度周波数を落としてＷｒｉｔｅする必要がある。
【０００９】
また、上述の技術以外にも、メモリインターフェース回路の技術が知られている（たとえば、特許文献１、２参照）。その特許文献１（特開２００７−０５８９９０号公報）には、データと、そのデータをサンプリングするためのストローブ信号との位相関係が、入力と出力で異なるインターフェースにおいて、ループバック試験を可能とする技術が記載されている。その特許文献１を参照すると、入力側の位相シフトとサンプリング回路をテストするために、出力側の位相シフト回路においてＤＱとＤＱＳの位相をそろえて出力し、ＤＱＳは位相シフト回路で９０度シフトされ、サンプリング回路でサンプルされる。出力側機能をテストするために、入力側のＤＱＳの位相シフトしないように位相シフト回路を制御し、出力側の位相シフト回路は、データサンプリングクロックの位相シフトを９０度に設定し、ＤＱＳの位相シフトは１８０度固定とし、サンプリング回路は、ループバックされたＤＱを、９０度位相をシフトされたＤＱＳでサンプルしている。
【００１０】
また、特許文献２（特開２００８−０５２３３５号公報）には、データ信号のデータ有効ウィンドウを自動検知してストローブ信号の最適遅延量を調整するキャリブレーション回路と、データ信号遅延回路とを有するインターフェース回路に関連する技術が記載されている。そのデータ信号遅延回路は、キャリブレーション回路における最小遅延量をｔMINDLY、データ信号とストローブ信号との間のスキューをｔSKEW、データ信号のセットアップ時間をｔSETUPとしたとき、
ｔFIXDLY＞ｔMINDLY＋ｔSKEW−ｔSETUP
を満たす遅延量ｔFIXDLYだけデータ信号を遅延させている。
【特許文献１】特開２００７−０５８９９０号公報
【特許文献２】特開２００８−０５２３３５号公報
【発明の開示】
【発明が解決しようとする課題】
【００１１】
上述のように、従来のメモリインターフェースは、タイミングキャリブレーションを行うときに、最初のＷｒｉｔｅが確実にできないと、Ｒｅａｄ時に正常なデータが取り込めなかった。そのため、従来のメモリインターフェースは、Ｒｅａｄ時のデータの取り込みが不完全だった場合に、最初のＷｒｉｔｅに失敗したため、データの取り込みに失敗したのか、最初のＷｒｉｔｅは成功しているが、Ｒｅａｄに問題があるのかの判断が困難であった。
【００１２】
殊に、高速でデータを転送する半導体記憶装置においては、高速化、プロセスの微細化などに起因して、１ビット長に占める反射やＩＳＩ、ＩＲドロップ等によるジッタの割合が大きくなってきている。そのため、そのようなに半導体記憶装置に対応したメモリインターフェースに対して、ジッタの割合が大きくても、安定してデータの読み出しと書込みとができる技術が求められている。本発明が解決しようとする課題は、タイミングキャリブレーションを適切に実行しるための技術を提供することにある。
【課題を解決するための手段】
【００１３】
以下に、［発明を実施するための最良の形態］で使用される番号を用いて、課題を解決するための手段を説明する。これらの番号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために付加されたものである。ただし、それらの番号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１４】
上記の課題を解決するために、入力バッファ（２１）に供給するデータを遅延させる第１遅延回路（２３）と、出力バッファ（２１）から読み出したデータを遅延させる第２遅延回路（２４）と、前記第１遅延回路（２３）を介して前記データをメモリ（５）に供給するデータ書込み回路（２５）と、前記メモリ（５）に書き込まれた前記データを、前記第２遅延回路（２４）を介して読み出して読み出しデータとするデータ読み出し回路（２６）と、データ信号の揺らぎに応じて形成されるｅｙｅ開口の開始端部の位置と終了端部の位置を検出し、前記開始端部と前記終了端部との中間位置を特定し、前記中間位置と前記開始端部との差を、データ信号とデータストローブ信号との位相差とする決定する制御回路（２０）とを具備するメモリインターフェースを構成する。
【００１５】
また、メモリインターフェースを、以下の行為の連鎖に対応して動作させる。まず、（ａ）データの揺らぎに応じて形成されるｅｙｅ開口を特定し、前記ｅｙｅ開口の端部の位置を検出する。そして、（ｂ）前記端部に対向する他の端部の位置を検出する。そのうえで、（ｃ）前記端部と前記他の端部との中間を、データストローブ信号の立ち上がり／立下りの位置とする。
【発明の効果】
【００１６】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば、データストローブ信号を用いてデータの読み出しと書き込みとを行うメモリシステムにおいて、初期化シーケンスにおけるタイミングキャリブレーションを適切に実行する技術を提供することが可能となる。
【発明を実施するための最良の形態】
【００１７】
以下、本発明のメモリインターフェース１１の実施の形態を、図面に基づいて説明する。本実施形態のメモリインターフェース１１は、データストローブ信号に対応してデータの読み出しと書込みとが実行されるメモリに対し、そのデータの読み書きを制御する。本実施形態のメモリインターフェース１１は、適用される機器に対する制限は無く、その機器に搭載されたメモリが、データストローブ信号に対応していればよい。したがって、以下の実施形態においては、メモリインターフェース１１がコンピュータシステム１に搭載された場合を例示して、本実施形態の構成・動作について説明を行う。なお、本実施形態の構成・動作を説明するための図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００１８】
図３は、本実施形態のメモリインターフェース１１を搭載したコンピュータシステム１の構成を例示するブロック図である。コンピュータシステム１は、メモリインターフェース１１を含むチップセットに対応した情報処理装置であり、入力、出力、記憶、演算、制御などの機能を実現することができる。そのコンピュータシステム１は、ＣＰＵ２と、メモリブリッジ３と、Ｉ／Ｏブリッジ４と、メモリ５と、グラフィックスカード６と、ＨＤＤ７と、スイッチ８と、周辺機器９とローカルＩ／Ｏ１０とを含んでいる。
【００１９】
ＣＰＵ２は、本実施形態のコンピュータシステム１を構成する情報処理装置本体に備えられた中央演算処理装置である。ＣＰＵ２は、コンピュータシステム１に備えられた各種装置の制御やデータの処理を行う。ＣＰＵ２は、入力装置（図示されず）などから受け取ったデータを解釈して演算し、その演算結果を出力装置（図示されず）などに出力する。
【００２０】
メモリブリッジ３は、ノースブリッジとも呼ばれ、ＣＰＵ２とメモリ５とを相互に接続してデータの橋渡し(Bridge)を行う。また、メモリブリッジ３は、ＣＰＵ２と拡張バスとを相互に接続してデータの橋渡しを行う。Ｉ／Ｏブリッジ４は、サウスブリッジとも呼ばれ、各種のＩ／Ｏコントローラを統合し、拡張バスなどとのデータの橋渡しを行う。
【００２１】
メモリ５は、主記憶装置（メインメモリ）とも呼ばれ、コンピュータシステム１の内部でデータやプログラムを記憶する装置である。メモリ５は、ＣＰＵ（中央処理装置）が直接読み書きできる領域を備えている。以下の実施形態においては、メモリ５が、ＤＤＲ３  ＳＤＲＡＭなどの高速な半導体記憶装置である場合を例示する。
【００２２】
グラフィックスカード６は、コンピュータシステム１の出力装置（例えば、液晶ディスプレイ）に、画面を表示するための回路基板である。グラフィックスカード６は、メモリブリッジ３を介してＣＰＵ２に接続され、ＣＰＵ２の命令に応答してユーザに画面を提供する。ＨＤＤ７は、電源が遮断された後も情報を保持し続けることができる補助記憶装置である。本実施形態のコンピュータシステム１においては、補助記憶装置として、ＨＤＤ７の他にフラッシュメモリなどの不揮発性半導体記憶装置を適用することもできる。周辺機器９は、スイッチ８を介してＩ／Ｏブリッジ４に接続される外部入出力装置である。ローカルＩ／Ｏ１０は、コンピュータシステム１に固有の周辺装置である。
【００２３】
また、図３に示されているように、メモリブリッジ３は、メモリインターフェース１１と、ＣＰＵインターフェース１２と、グラフィックインターフェース１３とを含んでいる。メモリインターフェース１１は、メモリ５に接続され、メモリ５へのデータの書き込みと、メモリ５からのデータの読み出しとを制御する。ＣＰＵインターフェース１２は、ＣＰＵ２に接続され、ＣＰＵ２からの命令を受け取ったり、ＣＰＵ２へデータを供給したりする。グラフィックインターフェース１３は、グラフィックスカード６に接続され、グラフィックスカード６への画像データの供給を制御する。
【００２４】
以下に、図面を参照して、メモリインターフェース１１の詳細な構成について説明を行う。図４Ａおよび図４Ｂは、メモリインターフェース１１の構成を例示するブロック図である。図４Ａは、メモリインターフェース１１の第１領域の構成を例示している。図４Ｂは、メモリインターフェース１１の第２領域を例示している。
【００２５】
図４Ａおよび図４Ｂを参照すると、メモリインターフェース１１は、制御回路２０と、入出力バッファ２１と、データストローブ入出力バッファ２２と、書込み側遅延回路２３と、読み出し側遅延回路２４と、データ書込み回路２５と、データ読み出し回路２６と、選択回路２７と、エッジ検出回路２８と、Elastic  Buffer２９と、ＤＬＬ（Delay  Lock  Loop）３０とを含んでいる。なお、以下の説明において、同様の機能を提供する複数の構成要素の各々を区別する場合には、参照符号の後に枝番号を付す。
【００２６】
入出力バッファ２１は、メモリに書き込むためのデータや、メモリから読み出されたデータを一時的に保持する記憶する。メモリインターフェース１１は、複数の入出力バッファ２１（第１入出力バッファ２１−１、第２入出力バッファ２１−２…第ｎ入出力バッファ２１−ｎ）を備えている。複数の入出力バッファ２１の各々は、書込みバッファと読み出しバッファとを備えている。
【００２７】
データストローブ入出力バッファ２２は、データストローブ信号ＤＱＳ（または、反転データストローブ信号ＤＱＳｂ）を一時的に保持する。データストローブ入出力バッファ２２は、データストローブ読み出しバッファ２２ａとデータストローブ書込みバッファ２２ｂとを含んでいる。
【００２８】
制御回路２０は、メモリインターフェース１１に備えられて各回路ブロックの設定値や、データの書込み／読み出しのタイミングの制御を行う。
【００２９】
書込み側遅延回路２３は、メモリに書き込むデータを遅延させる。メモリインターフェース１１は、複数の書込み側遅延回路２３（第１書込み側遅延回路２３−１、第２書込み側遅延回路２３−２…第ｎ書込み側遅延回路２３−ｎ）を備えている。複数の書込み側遅延回路２３の各々は、入出力バッファ２１の書込みバッファに接続されている。書込み側遅延回路２３は、制御回路２０から供給される遅延制御信号に応答して、遅延値が変化する。また、メモリインターフェース１１は、書込み側データストローブ遅延回路２３−ｓを備えている。その書込み側データストローブ遅延回路２３−ｓは、データストローブ書込みバッファ２２ｂに接続されている。
【００３０】
読み出し側遅延回路２４は、メモリから読み出したデータを遅延させる。メモリインターフェース１１は、複数の読み出し側遅延回路２４（第１読み出し側遅延回路２４−１、読第２み出し側遅延回路２４−２…第ｎ読み出し側遅延回路２４−ｎ）を備えている。複数の読み出し側遅延回路２４の各々は、入出力バッファ２１の読み出しバッファに接続されている。読み出し側遅延回路２４は、制御回路２０から供給される遅延制御信号に応答して、遅延値が変化する。また、メモリインターフェース１１は、読み出し側データストローブ遅延回路２４−ｓを備えている。その読み出し側データストローブ遅延回路２４−ｓは、ＤＬＬ（Delay  Lock  Loop）３０を介してデータストローブ読み出しバッファ２２ａに接続されている。
【００３１】
ＤＬＬ（Delay  Lock  Loop）３０は、初期化状態のときに、データストローブ読み出しバッファ２２ａから供給されるデータストローブ信号ＤＱＳに応答して、位相が異なる２種類のデータストローブ信号（以下、第１データストローブ信号ｓ９０および第２データストローブ信号ｓ４５と記載する）を生成する。
【００３２】
データ書込み回路２５は、メモリに書き込むデータを供給する。メモリインターフェース１１は、複数のデータ書込み回路２５（第１データ書込み回路２５−１、第２データ書込み回路２５−２…第ｎデータ書込み回路２５−ｎ）を備えている。複数のデータ書込み回路２５の各々は、対応する書込み側遅延回路２３に一対一に接続されている。また、データ書込み回路２５は、パラレルデータをシリアルデータに変換する。
【００３３】
データ読み出し回路２６は、メモリから読み出されたデータを後段に出力する。メモリインターフェース１１は、複数のデータ読み出し回路２６（第１データ読み出し回路２６−１、第２データ読み出し回路２６−２…第ｎデータ読み出し回路２６−ｎ）を備えている。複数のデータ読み出し回路２６の各々は、対応する読み出し側遅延回路２４に一対一に接続されている。複数のデータ読み出し回路２６の各々は、読み出し側データストローブ遅延回路２４−ｓから供給されるデータストローブ信号ＤＱＳ（第１データストローブ信号ｓ９０、第２データストローブ信号ｓ４５）に応答して、データの読み出しを行う。また、データ読み出し回路２６は、シリアルデータをパラレルデータに変換する。
【００３４】
選択回路２７は、初期化を行っているときに制御回路２０から供給されるテストパターンと、通常動作を行っているときの書込み用データとを選択する。メモリインターフェース１１は、複数の選択回路２７（第１選択回路２７−１、第２選択回路２７−２…第ｎ選択回路２７−ｎ）を備えている。その選択回路２７の各々は、対応するデータ書込み回路２５に一対一に接続されている。
【００３５】
エッジ検出回路２８は、データ読み出し回路２６から供給されるデータに基づいて、そのデータのエッジを検出する。メモリインターフェース１１は、複数のエッジ検出回路２８（第１エッジ検出回路２８−１、第２エッジ検出回路２８−２…第ｎエッジ検出回路２８−ｎ）を備えている。複数のエッジ検出回路２８の各々は、検出結果を制御回路２０に供給する。
【００３６】
Elastic  Buffer２９は、データ読み出し回路２６から供給されるデータを一時的に保持した後、そのデータを後段の回路（例えば、ＣＰＵ）に供給する。メモリインターフェース１１は、複数のElastic  Buffer２９（Elastic  Buffer２９−１、Elastic  Buffer２９−２…Elastic  Buffer２９−ｎ）を備えている。複数のElastic  Buffer２９の各々は、データ読み出し回路２６に一対一に対応して設けられている。
【００３７】
また、図４Ｂを参照すると、制御回路２０は、スキューコントローラ３１と、パターンジェネレータ３２と、パターンコンパレータ３３とを含んでいる。スキューコントローラ３１は、データＤＱとデータストローブ信号ＤＱＳの位相の制御を行う。パターンジェネレータ３２は、メモリ５に書き込むパターンを生成する。パターンコンパレータ３３は、読み出したデータパターンと、書き込まれたパターンとの比較を行う。
【００３８】
以下に、本実施形態の動作について説明を行う。図５は、本実施形態の動作を例示するフローチャートである。本実施形態のメモリインターフェース１１は、初期化動作の実行中において、図５に示される手順に従って、キャリブレーション動作を行う。
【００３９】
図５を参照すると、ステップＳ１０１において、メモリインターフェース１１は、ｅｙｅ開口（タイミングマージン）が構成されるときの、端部（左端部）のタイミングを特定する。図５に示されているように、メモリインターフェース１１は、時間の流れに対し、そのｅｙｅ開口が出現する時刻を、その端部のタイミングとする。ステップＳ１０２において、メモリインターフェース１１は、そのｅｙｅ開口の他の端部（右端部）のタイミングを特定する。図５に示されているように、メモリインターフェース１１は、時間の流れに対し、そのｅｙｅ開口が消滅する時刻を、その端部のタイミングとする。
【００４０】
その後、ステップＳ１０３において、メモリインターフェース１１は、特定した２つの端部のタイミングに基づいて、データストローブ信号ＤＱＳの動作タイミングを設定する。このような動作によって、初期化の際にデータＤＱとデータストローブ信号ＤＱＳとの位相を最適な値にする。なお、上述のフローチャートでは、ｅｙｅ開口の左端部を先に特定する場合の動作を例示した。本実施形態のメモリインターフェース１１の動作は、このフローチャートの流れに制限されることは無く、例えば、ｅｙｅ開口の右端部を先に特定しても良い。
【００４１】
ここで、本実施形態の動作の詳細について説明を行う。図６は、本実施形態のメモリインターフェース１１によるキャリブレーション動作で用いるデータの波形を例示する波形図である。本実施形態において、初期化シーケンスではＬｏｎｅ  Ｂｉｔのデータ（１ビットの孤立波）と、Ｌｏｗ  Ｆｒｅｑｕｅｎｃｙのデータ（２ビット以上の連続データ）を使用する。
【００４２】
図６に示されているように、また、Ｌｏｗ  Ｆｒｅｑｕｅｎｃｙのデータの周波数成分は、低域に偏ったものであり、このパターンによって、Ｊｉｔｔｅｒを回避したＥｙｅ開口の左側を検出することができる。また、Ｌｏｎｅ  Ｂｉｔのデータは、１ｂｉｔだけ論理が違う孤立波（たとえば０１００００００）であり、その周波数成分は、ＰＲＢＳと同じように高域にわたってデータ成分を保有している。そのため、伝送線路等のＬｏｓｓにより高域データが減衰するというデータの品質劣化の影響を受けやすい。これによって、Ｅｙｅ開口の右端と左端を検出することができる。
【００４３】
図７は、上述の図５におけるステップＳ１０１の動作の詳細を例示するフローチャートである。図７に示されている動作によって、メモリインターフェース１１は、Ｅｙｅ開口の左端部を検出する。メモリインターフェース１１は、Ｌｏｗ  Ｆｒｅｑｕｅｎｃｙのデータで書込みと読み出しとを行いながら、読み出しは、ランダムジッタを回避した領域、すなわち、後述の図１０におけるＲＬ０からＲＲ１までの領域を見つける。ここにおいて、ｅｙｅ開口の左端は、そのＲＬ０に一致する。また、書込みは、何かしらのデータ書き込みが可能な領域、すなわち、図１０におけるＷＬ０からＷＲ０までの領域を見つける。
【００４４】
図７を参照すると、ステップＳ２０１において、メモリインターフェース１１の制御回路２０に備えられたスキューコントローラ３１は、書込み側遅延回路２３と読み出し側遅延回路２４の遅延を最小値に設定する。ステップＳ２０２において、制御回路２０は、書込み側遅延回路２３を介して、メモリ５にＬｏｗ  Ｆｒｅｑｕｅｎｃｙのデータを、通常モードでメモリ５に書き込む。
【００４５】
ステップＳ２０３において、制御回路２０は、読み出し側遅延回路２４に、そのＬｏｗ  Ｆｒｅｑｕｅｎｃｙのデータの読み出しを指示する。読み出し側遅延回路２４は、その指示に応答して、メモリ５から、そのＬｏｗ  Ｆｒｅｑｕｅｎｃｙのデータを読み出す。また、この読み出し動作に対応して、エッジ検出シーケンスを実行する。
【００４６】
ステップＳ２０４において、エッジ検出回路２８は、読み出し側遅延回路２４から供給されるＬｏｗ  Ｆｒｅｑｕｅｎｃｙのデータに基づいて、そのエッジの検出を行う。また、エッジ検出回路２８は、その検出結果を、制御回路２０に通知する。
【００４７】
ステップＳ２０５において、制御回路２０は、エッジ検出回路２８からの通知に基づいて、エッジが検出されたか否かの判断を実行する。その判断の結果、エッジが検出された場合には、処理は、終了する。その判断の結果、エッジが検出されなかった場合には、処理はステップＳ２０６に進む。そのステップＳ２０６において、制御回路２０は、書込み側遅延回路２３の遅延量を変化させた後、処理はステップＳ２０２に戻り、その書込み側遅延回路２３を介して、メモリ５にＬｏｗ  Ｆｒｅｑｕｅｎｃｙのデータを書き込む。
【００４８】
図８は、上述のエッジの検出の動作を具体的に例示するタイミングチャートである。図８に示されているように、メモリインターフェース１１は、Ｓ−ＡＴＡ（Serial  −  Advanced  Technology  Attachment）などで使用されているような、位相を違えた複数のクロック（ここでは、４５度と９０度）で同じデータをラッチし、各々の位相のデータの値を比較して位相、すなわちエッジを検出する。このときは、エッジを検出できればよいので、Ｌｏｗ  Ｆｒｅｑｕｅｎｃｙのデータが正常に書き込めている必要は無い。たとえば、
“１１００１１００”
を書き込もうとした場合、データストローブ信号ＤＱＳのずれによって、
“１１１００１００”
と書き込まれた場合でも、少なくとも３点のエッジの変化点がある。そのため、エッジの検出は可能である。
【００４９】
図９は、上述の図５におけるステップＳ１０２の動作の詳細を例示するフローチャートである。メモリインターフェース１１は、図９に示されている動作によって、Ｅｙｅ開口の右端部を検出する。メモリインターフェース１１は、Ｌｏｎｅ  Ｂｉｔパターンを用いて、ＩＳＩ（inter-symbol interference：シンボル間干渉）に起因する劣化を加味した領域で、データが正常にＲｅａｄ／Ｗｒｉｔｅできる領域、すなわち、図１０におけるＲＬ０からＲＲ１’までの領域と、ＷＬ０’からＷＲ０’までの領域とを検出する。ここにおいて、Ｅｙｅ開口の右端はＲＲ１’に一致する。
【００５０】
図１０は、上述のＥｙｅ開口の右端部を検出する動作における、期待値の照合に用いられる領域の構成を例示する概念図である。図１０には、Ｌｏｗ  Ｆｒｅｑｕｅｎｃｙのエッジ検出により検出された領域とＬｏｎｅ  Ｂｉｔの期待値照合で詳細検出された領域とが例示されている。
Ｌｏｗ  Ｆｒｅｑｕｅｎｃｙのエッジ検出により検出された領域は、そのＬｏｗ  Ｆｒｅｑｕｅｎｃｙのデータの読み出しでのＥｙｅ開口の左端の特定と、書き込みにおいて、何かしらのデータが書き込める領域の特定とで決まる。また、Ｌｏｎｅ  Ｂｉｔの期待値照合で詳細検出された領域は、そのＬｏｎｅ  Ｂｉｔのデータの読み出しでのＥｙｅ開口の右端の特定と、書込みでのＥｙｅ開口の右端と左端の特定とで決まる。
図１０に示すように、読み出しの実行においては、Ｅｙｅ開口の左側の位置が認識されている。そのため、１ＵＩ（Ｕｎｉｔ  Ｉｎｔｅｒｖａｌ）のずれがない場合、データの読み出しを失敗することはない。期待値に一致する領域を検出中に、書き込まれたデータの読み出しが適切に出来ないと言うことは、１ＵＩ単位のずれがあることを意味する。
【００５１】
図９に戻り、ステップＳ３０１において、メモリインターフェース１１の制御回路２０は、書込み側遅延回路２３と読み出し側遅延回路２４の遅延を最小値に設定する。ステップＳ３０２において、制御回路２０は、書込み側遅延回路２３を介して、通常モードでメモリ５にＬｏｎｅ  Ｂｉｔのデータを書き込む。
【００５２】
ステップＳ３０３において、メモリインターフェース１１は、そのＬｏｎｅ  Ｂｉｔのデータを読み出す。また、この読み出し動作に対応して、期待値照合のシーケンスを実行する。ステップＳ３０４において、読み出し側遅延回路２４から供給されるＬｏｎｅ  Ｂｉｔのデータの遅延位置の制御を実行する。
【００５３】
ステップＳ３０５において、制御回路２０は、期待値に一致する領域が検出されたか否かの判断を実行する。データの期待値照合は、パラレルデータに変換した後のデータを用いる。そのため、フローでビットがずれている場合（つまり、１ＵＩのずれがある場合）も、エッジの検出が完了しているので、そのエッジを基準に補正を行うことが可能になっている。その判断の結果、その領域が検出された場合には、処理は終了する。その判断の結果、その領域が検出されなかった場合には、処理はステップＳ３０６に進む。
【００５４】
ステップＳ３０６において、期待値に一致する領域を検出中に、書き込まれたデータの読み出しが適切に出来ない場合、位相を１ＵＩずらして再度領域の検出を始める。
【００５５】
本実施形態のメモリインターフェース１１は、クロックの分周比やモードを、通常モード動作中Ｏｎ  Ｔｈｅ  Ｆｌｙで安全に切り替えができる機能と、テスト回路が必要はない。メモリインターフェース１１は、正常なＷｒｉｔｅが出来ない状態でも、Ｌｏｗ  Ｆｒｅｑｕｅｎｃｙのデータの書き込みを行えば、データの取りこぼしがあっても何かしらのデータが書き込めている。このＬｏｗ  Ｆｒｅｑｕｅｎｃｙのデータを用いたエッジ検出のシーケンス中においては、データの読み出しを実行する際は、そのデータのエッジ検出のみを行う。そのシーケンスではデータの期待値照合に依存せずにＳｋｅｗの検出を行うので、Ｒｅａｄ側のＥｙｅ開口の左側を検出できる。そして、Ｗｒｉｔｅに失敗していても、期待値照合（ＲｅａｄのＣａｌｉｂｒａｔｉｏｎ）シーケンスにおけるエッジ検出によって、Ｅｙｅ開口が確認できる。これによって、テスト回数を２回（「ＲｅａｄのＣａｌｉｂｒａｔｉｏｎ」と「ＷｒｉｔｅのＣａｌｉｂｒａｔｉｏｎ」）に短縮することが可能となる。
【００５６】
また、本実施形態のコンピュータシステム１は、Ｅｙｅ開口の右と左のみを検出できれば良いので、パターン長は短くてよい。つまり、Ｒｅａｄ  Ｃａｌｉｂｒａｔｉｏｎに必要なＰＲＢＳパターン（パターン数＝１２７）を書き込むメモリ空間が必要ない。そのため、初期化におけるキャリブレーションのテストデータ格納用メモリ空間を削減することができる。
【００５７】
以上、本願発明の実施の形態を具体的に説明した。ＤＤＲインターフェースはＧｂｐｓ帯の高速通信でありながら、伝送モードはＣＭＯＳ（電圧）である。よって、反射やＩＳＩによるデータ品質の劣化は大きく、その劣化量はデータの１ビット長の半分以上を占める。また、プロセスの微細化に伴い、インターフェース内のトランジスタの相対精度などのバラツキによるデータビット間の遅延差も無視できない。さらには、基盤上の配線長／形状は汎用を考える上で任意にできる必要があり、その応答時間（Ｆｌｉｇｈｔ  Ｔｉｍｅ）は１ビット長を超えて広くカバーできる必要がある。
【００５８】
本発明は、データ品質の劣化が起こってもデータを確実にＲｅａｄ／Ｗｒｉｔｅできる回路をインターフェース側に組み込んだものである。本実施形態のメモリインターフェース１１は、Ｗｒｉｔｅ／Ｒｅａｄ時のデータストローブ信号ＤＱＳ、データＤＱの遅延量に差（Ｓｋｅｗ）がある場合に対して、テストフローを、インターフェース側から制御・実行する事により、短時間でＲｅａｄ／Ｗｒｉｔｅ共に最適値を見つけることができる。
【００５９】
なお、本願発明は上述の実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能である。
【図面の簡単な説明】
【００６０】
【図１】図１は、従来の初期化動作を示すフローチャートである。
【図２】図２は、上述のタイミングキャリブレーションを示すブロック図である。
【図３】図３は、本実施形態のメモリインターフェース１１を搭載したコンピュータシステム１の構成を例示するブロック図である。
【図４Ａ】図４Ａは、メモリインターフェース１１の構成を例示するブロック図である。
【図４Ｂ】図４Ｂは、メモリインターフェース１１の構成を例示するブロック図である。
【図５】図５は、本実施形態の動作を例示するフローチャートである。
【図６】図６は、本実施形態のキャリブレーション動作で用いるデータの波形を例示する波形図である。
【図７】図７は、本実施形態のキャリブレーション動作の詳細を例示するフローチャートである。
【図８】図８は、上述のエッジの検出の動作を具体的に例示するタイミングチャートである。
【図９】図９は、本実施形態のキャリブレーション動作の詳細を例示するフローチャートである。
【図１０】図１０は、期待値の照合に用いられる領域の構成を例示する概念図である。
【符号の説明】
【００６１】
１…コンピュータシステム
２…ＣＰＵ
３…メモリブリッジ
４…Ｉ／Ｏブリッジ
５…メモリ
６…グラフィックスカード
７…ＨＤＤ
８…スイッチ
９…周辺機器
１０…ローカルＩ／Ｏ
１１…メモリインターフェース
１２…ＣＰＵインターフェース
１３…グラフィックインターフェース
２０…制御回路
２１…入出力バッファ
２１−１…第１入出力バッファ
２１−２…第２入出力バッファ
２１−ｎ…第ｎ入出力バッファ
２２…データストローブ入出力バッファ
２２ａ…データストローブ読み出しバッファ
２２ｂ…データストローブ書込みバッファ
２３…書込み側遅延回路
２３−１…第１書込み側遅延回路
２３−２…第２書込み側遅延回路
２３−ｎ…第ｎ書込み側遅延回路
２３−ｓ…書込み側データストローブ遅延回路
２４…読み出し側遅延回路
２４−１…第１読み出し側遅延回路
２４−２…読第２み出し側遅延回路
２４−ｎ…第ｎ読み出し側遅延回路
２４−ｓ…読み出し側データストローブ遅延回路
２５…データ書込み回路
２５−１…第１データ書込み回路
２５−２…第２データ書込み回路
２５−ｎ…第ｎデータ書込み回路
２６…データ読み出し回路
２６−１…第１データ読み出し回路
２６−２…第２データ読み出し回路
２６−ｎ…第ｎデータ読み出し回路
２７…選択回路
２７−１…第１選択回路
２７−２…第２選択回路
２７−ｎ…第ｎ選択回路
２８…エッジ検出回路
２８−１…第１エッジ検出回路
２８−２…第２エッジ検出回路
２８−ｎ…第ｎエッジ検出回路
２９…Elastic  Buffer
２９−１…Elastic  Buffer
２９−２…Elastic  Buffer
２９−ｎ…Elastic  Buffer
３０…ＤＬＬ（Delay  Lock  Loop）
３１…スキューコントローラ
３２…パターンジェネレータ
３３…パターンコンパレータ
ＤＱ…データ
ＤＱ０…第１データ
ＤＱ１…第２データ
ＤＱｎ…第ｎデータ
ＤＱＳ…データストローブ信号
ＤＱＳｂ…反転データストローブ信号
ｓ９０…第１データストローブ信号
ｓ４５…第２データストローブ信号
【図１】
2010086246.tif 000003
【図２】
2010086246.tif 000004
【図３】
2010086246.tif 000005
【図４Ａ】
2010086246.tif 000006
【図４Ｂ】
2010086246.tif 000007
【図５】
2010086246.tif 000008
【図６】
2010086246.tif 000009
【図７】
2010086246.tif 000010
【図８】
2010086246.tif 000011
【図９】
2010086246.tif 000012
【図１０】
2010086246.tif 000013