(57)【要約】【課題】コアクロックをプログラマブルに遅延した信号を生成するためのキャリブレーション期間が初期化時のオーバーヘッドとなる。【解決手段】クロック生成回路４０４は、ＣＰＵの動作クロックであるコアクロックを遅延させた複数個の異なる位相の遅延クロックを生成し、生成した複数個の遅延クロックおよびコアクロックの中でータストローブ信号の位相よりも遅く、かつデータストローブ信号の位相に最も近い位相を有するものを再同期クロックとして選択する。【選択図】図１
2015103262.tif 000002
【特許請求の範囲】
【請求項１】
データストローブ信号によってデータ信号をラッチする第１のレジスタと、
再同期クロックを生成するクロック生成回路と、
前記再同期クロックによって前記第１のレジスタの出力データをラッチする第２のレジスタとを備え、
前記クロック生成回路は、ＣＰＵの動作クロックであるコアクロックを遅延させた複数個の異なる位相の遅延クロックを生成し、生成した複数個の遅延クロックおよび前記コアクロックの中で前記データストローブ信号の位相よりも遅く、かつ前記データストローブ信号の位相に最も近い位相を有するものを再同期クロックとして選択する、半導体装置。
【請求項２】
前記半導体装置は、
前記第１のレジスタにおける前記データ信号のラッチを制御するイネーブル信号を生成するイネーブル制御器を備え、
前記イネーブル制御器は、前記再同期クロックに基づいて、前記イネーブル信号を活性化する、請求項１記載の半導体装置。
【請求項３】
前記第１のレジスタは、
前記データストローブ信号によって前記データ信号をラッチする第１のフリップフロップと、
前記データストローブ信号の反転信号によって、前記第１のフリップフロップの出力をラッチする第２のフリップフロップと、
前記データストローブ信号の反転信号によって、前記データ信号をラッチする第３のフリップフロップと、
前記第２のフリップフロップおよび前記第３のフリップフロップへの前記データストローブ信号の反転信号の供給を制御するクロックゲートとを備え、前記クロックゲートは、前記イネーブル信号によって制御され、
前記イネーブル制御器は、前記再同期クロックの立ち上がりに基づいて、前記イネーブル信号を活性化し、前記データストローブ信号の立下りに基づいて、前記イネーブル信号を非活性化する、請求項２記載の半導体装置。
【請求項４】
前記第２のレジスタは、
前記第１のレジスタの出力データを前記再同期クロックでラッチする第１のフリップフロップと、
前記第１のフリップフロップの出力データを前記再同期クロックの反転クロックでラッチする第２のフリップフロップと、
前記選択された再同期クロックが、前記コアクロックの位相よりも早く、かつ前記コアクロックの位相との差が小さい位相を有する所定のクロックの場合には、前記第２のフリップフロップの出力データを前記コアクロックで動作するコアクロックドメインへ転送し、
前記選択された再同期クロックが、前記所定のクロックでない場合には、前記第１のフリップフロップの出力データを前記コアクロックドメインへ転送する、請求項１記載の半導体装置。
【請求項５】
前記クロック生成回路は、
前記コアクロックが入力される複数段の遅延素子と、
前記コアクロックおよび複数段の遅延素子の各々から出力されるクロックの中で、前記データストローブ信号の位相よりも遅く、かつ前記データストローブ信号の位相に最も近い位相を有する最適クロックを判別する判別部と、
前記判別の結果に基づいて、前記コアクロックおよび複数段の遅延素子の各々から出力されるクロックの中から１つのクロックを前記再同期クロックとして選択するセレクタとを含む、請求項１記載の半導体装置。
【請求項６】
前記判別部は、
前記コアクロックおよび複数段の遅延素子の各々から出力されるクロックに対応して複数個のフリップフロップを含み、
前記フリップフロップは、対応するクロックが前記最適クロックの場合に、第１のレベルをラッチし、対応するクロックが前記最適クロックでない場合に第２のレベルをラッチし、
前記セレクタは、前記複数個のフリップフロップの出力を受けて、前記第１のレベルを出力するフリップフロップに対応するクロックを前記再同期クロックとして選択する、請求項５記載の半導体装置。
【請求項７】
前記フリップフロップは、キャリブレーションのイネーブルを指示する信号に基づいて、前記第１のレベルまたは前記第２のレベルをラッチする、請求項６記載の半導体装置。
【請求項８】
メモリから出力されたデータ信号を遅延させるための第１の遅延素子と、
前記メモリから出力されたデータストローブ信号を遅延させるための第２の遅延素子とを備え、
第１の値が記憶されているメモリをアドレスとした第１のリードコマンドと、第２の値が記憶されているメモリをアドレスとした第２のリードコマンドとを交互に出力し、前記第１のリードコマンドまたは前記第２のリードコマンドを発行してからリードレイテンシ経過後の時点で前記第２のレジスタから出力されるデータに基づいて、前記第１の遅延素子の遅延量を調整するロジックを備える、請求項１記載の半導体装置。
【請求項９】
前記ロジックは、前記第１の遅延素子の遅延量の調整が終了後、前記第２の遅延素子の遅延量を調整する、請求項８記載の半導体装置。
【請求項１０】
データストローブ信号によってデータ信号をラッチする第１のレジスタと、
前記第１のレジスタにおける前記データ信号のラッチを制御するイネーブル信号を生成するイネーブル制御器を備え、
前記第１のレジスタは、
前記データストローブ信号によって前記データ信号をラッチする第１のフリップフロップと、
前記データストローブ信号の反転信号によって、前記第１のフリップフロップの出力をラッチする第２のフリップフロップと、
前記データストローブ信号の反転信号によって、前記データ信号をラッチする第３のフリップフロップと、
前記第２のフリップフロップおよび前記第３のフリップフロップへの前記データストローブ信号の反転信号の供給を制御するクロックゲートとを備え、前記クロックゲートは、前記イネーブル信号によって制御され、
前記イネーブル制御器は、前記データストローブ信号の周期と同じ周期を有し、かつ前記データストローブ信号の位相よりも遅い位相を有するキャプチャ制御信号の立ち上りに基づいて、前記イネーブル信号を活性化し、前記データストローブ信号の立下りに基づいて、前記イネーブル信号を非活性化する、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体装置に関し、たとえば、メモリから出力されるデータストローブ信号とデータ信号を受信する半導体装置に関する。
【背景技術】
【０００２】
従来のＤＤＲ＿ＰＨＹ（DDR_ PHYsical interface）では、ＤＲＡＭ（Dynamic Random Access Memory）からのデータの読出し時に、レベリング用のＦＩＦＯ（First-In First-Out）を適用するアーキテクチャが一般的であるが、読出し用のＦＩＦＯを設けることによる面積の増大と、読出しレイテンシが増大するという課題であった。これに対して、読出しレイテンを短縮し、かつ読出し用のＦＩＦＯを使用しないアーキテクチャが提案されている。
【０００３】
たとえば、特許文献１に記載のＤＤＲメモリコントローラは、データストローブ信号ＤＱＳを遅延させた信号でデータ信号ＤＱをラッチし、そのラッチ出力をコアクロックをプログラマブルに遅延した信号でラッチし直す構成が記載されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】米国特許第７９７５１６４Ｂ２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、特許文献１の記載のＤＤＲメモリコントローラでは、コアクロックをプログラマブルに遅延した信号を生成するためのキャリブレーション期間が初期化時のオーバーヘッドとなる。また、データストローブ信号ＤＱＳのポストアンブル後のノイズマスク機能が無いためノイズを取込む可能性がある。さらに、ビットごとにデータ信号ＤＱの入力タイミングが異なる場合に、入力タイミングが揃うように補正することができないという問題がある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかであろう。
【課題を解決するための手段】
【０００７】
本発明の一実施形態によれば、クロック生成回路は、ＣＰＵの動作クロックであるコアクロックを遅延させた複数個の異なる位相の遅延クロックを生成し、生成した複数個の遅延クロックおよびコアクロックの中でータストローブ信号の位相よりも遅く、かつデータストローブ信号の位相に最も近い位相を有するものを再同期クロックとして選択する。
【発明の効果】
【０００８】
本発明の一実施形態によれば、データストローブ信号によってラッチしたデータ信号を再度ラッチし直しするためのクロックを、初期化時のオーバーヘッドをもたらすことなく生成することができる。
【図面の簡単な説明】
【０００９】
【図１】第１の実施形態の半導体装置の構成を表わす図である。
【図２】第２の実施形態の半導体装置の構成を表わす図である。
【図３】ＤＤＲ＿ＰＨＹの構成を説明するための図である。
【図４】ＲＣＬＫ生成器の構成を表わす図である。
【図５】エッジ検出器の構成を表わす図である。
【図６】セレクタの構成を表わす図である。
【図７】再同期候補クロックＲＣＬＫｉ、再同期候補クロックラッチ信号ＲＣＬＫｉ＿ｒ、および再同期候補クロックプレ選択信号ＲＣＬＫｉ＿ＳＥＬ＿ｐｒｅのタイミング図である。
【図８】キャリブレーション信号ｃａｌ＿ｅｎ、キャリブレーションラッチ信号ｃａｌ＿ｅｎ１〜ｃａｌ＿ｅｎ８、キャリブレーションゲートクロックｃａｌ＿ｅｎ＿ｇｃｋ１〜ｃａｌ＿ｅｎ＿ｇｃｋ８、再同期候補クロックｋＲＣＬＫ１〜ＲＣＬＫ８、再同期候補クロック選択信号ＲＣＬＫ１＿ＳＥＬ〜ＲＣＬＫ８＿ＳＥＬのタイミング図である。
【図９】データイネーブル制御器およびキャプチャーレジスタの構成を表わす図である。
【図１０】再同期クロックＲＣＬＫ、遅延データストローブ信号ＤＱＳｄ、遅延データ信号ＤＱｄ、ライズキャプチャ信号ＤＱｃｐｔ＿ｒ、およびフォールキャプチャ信号ＤＱｃｐｔ＿ｆのタイミング図である。
【図１１】再同期レジスタおよびレベリングレジスタの構成を表わす図である。
【図１２】再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがロウレベルの場合のライズキャプチャ信号ＤＱｃｐｔ＿ｒ、再同期クロックＲＣＬＫ、ライズ再同期信号ＤＱｒｓｃ＿ｒ，コアクロックＣＯＲＥ＿ＣＬＫ，信号ｒｃのタイミング図である。
【図１３】再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがハイレベルの場合のライズキャプチャ信号ＤＱｃｐｔ＿ｒ、再同期クロックＲＣＬＫ、ライズ再同期信号ＤＱｒｓｃ＿ｒ，コアクロックＣＯＲＥ＿ＣＬＫ，信号ｒｃのタイミング図である。
【図１４】ＤＤＲ＿ＰＨＹのキャリブレーションの手順を表わすフローチャートである。
【図１５】図１４のステップＳ３０５の処理の詳細な手順を表わすフローチャートである。
【図１６】図１４のステップＳ３０６の処理の詳細な手順を表わすフローチャートである。
【図１７】レベリングレジスタ内のセレクタの設定時と、データ信号ＤＱおよびデータストローブ信号ＤＱＳのキャリブレーション時のタイミング図である。
【図１８】データストローブ信号ＤＱＳの遅延量と、セットアップマージン、ホールドマージンの例を説明するための図である。
【図１９】データストローブ信号ＤＱＳの遅延量と、セットアップマージン、ホールドマージンの別の例を説明するための図である。
【発明を実施するための形態】
【００１０】
以下、本発明の実施の形態について図面を用いて説明する。
［第１の実施形態］
図１は、第１の実施形態の半導体装置４０１の構成を表わす図である。
【００１１】
この半導体装置４０１は、第１のレジスタ４０２と、第２のレジスタ４０３と、クロック生成回路４０４とを備える。
【００１２】
第１のレジスタ４０２は、データストローブ信号ＤＱＳによってデータ信号をラッチする。
【００１３】
クロック生成回路４０４は、再同期クロックＲＣＬＫを生成する。クロック生成回路は、ＣＰＵの動作クロックであるコアクロックＣＯＲＥ＿ＣＬＫを遅延させた複数個の異なる位相の遅延クロックを生成し、生成した複数個の遅延クロックおよびコアクロックＣＯＲＥ＿ＣＬＫの中でデータストローブ信号ＤＱＳの位相よりも遅く、かつデータストローブ信号ＤＱＳの位相に最も近い位相を有するものを再同期クロックＲＣＬＫとして選択する。本明細書において、クロックＡの位相とクロックＢの位相の早い／遅いという関係は、クロックＡのある立ち上がりエッジのタイミングｔａと、ｔａとの差がπ／２以下であるクロックＢの立ち上がりエッジのタイミングｔｂによって定められる。クロックＡの位相がクロックＢの位相よりも早いとは、ｔａ＜ｔｂであることを表わす。クロックＡの位相がクロックＢの位相よりも遅いとは、ｔａ＞ｔｂであることを表わす。第２のレジスタ４０３は、再同期クロックＲＣＬＫによって第１のレジスタ４０２の出力データをラッチする。
【００１４】
以上のように、本実施の形態によれば、データストローブ信号によって動作する第１のレジスタ４０２からの出力を再同期するために、コアクロックＣＯＲＥ＿ＣＬＫと位相差の小さなクロックが簡易な処理で生成することができる。
【００１５】
［第２の実施形態］
図２は、第２の実施形態の半導体装置４１０の構成を表わす図である。
【００１６】
この半導体装置４１０は、ＤＤＲ−ＳＤＲＡＭ（Double Data Rate - Synchronous Dynamic Random Access Memory）１０６と、ＤＤＲ＿ＰＨＹ１と、ＤＤＲメモリコントローラ１０１と、システムバス１０２と、ＣＰＵ（Central Processing Unit）１０３と、コアクロック生成器１０４とを備える。
【００１７】
プリント基板７０上に、ＬＳＩ（Large Scale Integration）１０５とＤＤＲ−ＳＤＲＡＭ１０６とが配置される。ＬＳＩ１０５には、ＤＤＲ＿ＰＨＹ１とＤＤＲメモリコントローラ１０１とが配置される。
【００１８】
ＤＤＲ＿ＰＨＹ１と、ＤＤＲ−ＳＤＲＡＭ１０６との間のインタフェース信号としてクロックＣＬＫ、コマンド、アドレス、データ信号ＤＱ、相補のデータストローブ信号ＤＱＳ，ＤＱＳＢとが存在する。
【００１９】
ＤＤＲ−ＳＤＲＡＭ１０６は、同期クロックの立ち上がりと立ち下りの両方で、データを出力（読出し）、およびデータを入力する（書込み）。
【００２０】
ＤＤＲ＿ＰＨＹ１は、ＤＤＲメモリコントローラ１０１からのパラレルデータをシリアルデータに変換して、ＤＤＲ−ＳＤＲＡＭ１０６に送信する。ＤＤＲ＿ＰＨＹ１は、ＤＤＲ−ＳＤＲＡＭ１０６からのシリアルデータをパラレルデータに変換してＤＤＲメモリコントローラ１０１に送信する。
【００２１】
ＤＤＲメモリコントローラ１０１は、ＤＤＲ−ＳＤＲＡＭ１０６を制御する。
システムバス１０２は、ＣＰＵ１０３と、ＤＤＲメモリコントローラ１０１とを接続するバスである。
【００２２】
コアクロック生成器１０４は、コアクロックＣＯＲＥ＿ＣＬＫを生成する。
ＣＰＵ１０３は、ＤＤＲ−ＳＤＲＡＭ１０６からのデータの読出しを指示し、ＤＤＲ−ＳＤＲＡＭ１０６へのデータの書込みを指示する。
【００２３】
ＣＰＵ１０３、ＤＤＲ＿ＰＨＹ１、メモリコントローラ１０１、およびＤＤＲ＿ＰＨＹ１の一部の構成要素は、コアクロックＣＯＲＥ＿ＣＬＫで動作する。
【００２４】
図３は、ＤＤＲ＿ＰＨＹ１の構成を説明するための図である。
図３を参照して、ＤＤＲ＿ＰＨＹ１は、ＤＱパッド６１と、ＤＱＳパッド６２と、Ｉ／Ｏ６２と、Ｉ／Ｏ６３と、遅延回路（Ｄｅｌａｙ）２と、遅延回路（Ｄｅｌａｙ）３と、ＲＣＬＫ生成器７と、データイネーブル制御器９と、キャプチャーレジスタ４と、再同期レジスタ５と、レベリングレジスタ６と、ロジック５９とを備える。レベリングレジスタ６およびロジック５９は、コアクロックＣＯＲＥ＿ＣＬＫで動作するコアクロックドメインに含まれる。
【００２５】
ＤＱパッド６１は、ＤＤＲ＿ＳＤＲＡＭ１０６から出力されるデータ信号ＤＱを受ける。ＤＱＳパッド６２は、ＤＤＲ＿ＳＤＲＡＭ１０６から出力されるデータストローブ信号ＤＱＳを受ける。
【００２６】
Ｉ／Ｏ６２は、データ信号ＤＱを所定の基準電圧と比較し、比較結果を出力するシングルレシーバ回路を含む。Ｉ／Ｏ６３は、データストローブ信号ＤＱＳを所定の基準電圧と比較し、比較結果を出力するシングルレシーバ回路を含む。
【００２７】
遅延回路（Ｄｅｌａｙ）２は、Ｉ／Ｏ６２の出力信号を遅延させて、遅延データ信号ＤＱｄを出力する。遅延回路（Ｄｅｌａｙ）３は、Ｉ／Ｏ６４の出力信号を遅延させて、遅延データストローブ信号ＤＱＳｄを出力する。
【００２８】
ＲＣＬＫ生成器７は、コアクロックＣＯＲＥ＿ＣＬＫを遅延させた複数個の異なる位相の遅延クロックＲＣＬＫ２〜ＲＣＬＫ８を生成し、生成した複数個の遅延クロックＲＣＬＫ２〜ＲＣＬＫ８およびコアクロックＣＯＲＥ＿ＣＬＫ（＝ＲＣＬＫ１）を再同期候補クロックとする。ＲＣＬＫ生成器７は、再同期候補クロックＲＣＬＫ１〜ＲＣＬＫ８の中で遅延データストローブ信号ＤＱＳｄの位相よりも遅く、かつ遅延データストローブ信号ＤＱＳｄの位相に最も近い位相を有するものを再同期クロックＲＣＬＫとして選択する。
【００２９】
キャプチャーレジスタ４は、遅延データストローブ信号ＤＱＳｄによって、遅延データ信号ＤＱｄをラッチする。
【００３０】
データイネーブル制御器９は、キャプチャーレジスタ４におけるデータ信号ＤＱのラッチを制御するデータイネーブル信号ｄａｔａ＿ｅｎを生成する。データイネーブル制御器９は、再同期クロックＲＣＬＫに基づいて、データイネーブル信号ｄａｔａ＿ｅｎをハイレベルに活性化する。
【００３１】
再同期レジスタ５は、再同期クロックＲＣＬＫによって、キャプチャーレジスタ４の出力データをラッチする。前段のキャプチャーレジスタ４までは、遅延データストローブ信号ＤＱＳｄに同期した処理が行なわれていたのに対して、後段のレベリングレジスタ６からは、コアクロックＣＯＲＥ＿ＣＬＫに同期した処理が行なわれる。キャプチャーレジスタ４からの出力データをコアクロックＣＯＲＥ＿ＣＬＫに再同期させるために用いられる。
【００３２】
レベリングレジスタ６は、ＤＤＲ−ＳＤＲＡＭ１０６から読み出されたデータをＤＤＲ＿ＰＨＹ１から出力するタイミングを調整するために設けられる。
【００３３】
ロジック５９は、ＣＰＵ１０３から送られるＤＤＲ−ＳＤＲＡＭ１０６からのデータの読出し指示に従って、ＤＤＲ−ＳＤＲＡＭ１０６からのデータの読出しを制御する。
【００３４】
コアクロックＣＯＲＥ＿ＣＬＫの周期と、データストローブ信号ＤＱＳの周期は同一である。
【００３５】
図４は、ＲＣＬＫ生成器７の構成を表わす図である。
ＲＣＬＫ生成器７は、遅延部２７と、判別部２５と、セレクタ２６と、ＯＲ回路５８とを備える。
【００３６】
遅延部２７は、コアクロックＣＯＲＥ＿ＣＬＫが入力される複数段の遅延素子を有する。
【００３７】
判別部２５は、コアクロックＣＯＲＥ＿ＣＬＫおよび複数段の遅延素子の各々から出力されるクロックの中で、遅延データストローブ信号ＤＱＳｄの位相よりも遅く、かつ遅延データストローブ信号ＤＱＳｄの位相に最も近い位相を有する最適クロックを判別する。
【００３８】
セレクタ２６は、判別結果に基づいて、コアクロックＣＯＲＥ＿ＣＬＫおよび複数段の遅延素子の各々から出力されるクロックの中から１つのクロックを再同期クロックＲＣＬＫとして選択する。
【００３９】
遅延部２７は、コアクロックＣＯＲＥ＿ＣＬＫを受け、８個の再同期候補クロックＲＣＬＫ１〜ＲＣＬＫ８を出力する。遅延部２７は、７段の遅延回路ＤＬ１〜ＤＬ７を含む。遅延回路ＤＬｉ（ｉ＝１〜７）は、入力された信号をコアクロックＣＯＲＥ＿ＣＬＫの周期の４５度の時間だけ遅延させる。
【００４０】
初段の遅延回路ＤＬ１の入力、すなわちコアクロックＣＯＲＥ＿ＣＬＫが第１再同期候補クロックＲＣＬＫ１として出力される。遅延回路ＤＬｉ（ｉ＝１〜７）は、第ｉ＋１同期候補クロックＲＣＬＫｉを出力する。
【００４１】
判別部２５は、フリップフロップ３１＿１〜３１＿８と、エッジ検出器３２と、フリップフロップ３５＿１〜３５＿８と、クロックゲート３４＿１〜３４＿８と、フリップフロップ３３＿１〜３３＿８と、ＯＲ回路５８とを備える。
【００４２】
フリップフロップ３１＿ｉ（ｉ＝１〜８）は、第ｉ再同期候補クロックＲＣＬＫｉに対応して設けられる。
【００４３】
フリップフロップ３１＿ｉ（ｉ＝１〜８）のデータ入力端子には、第ｉ再同期候補クロックＲＣＬＫｉが入力される。フリップフロップ３１＿ｉのクロック端子には、遅延データストローブ信号ＤＱＳｄが入力される。フリップフロップ３１＿ｉは、遅延データストローブ信号ＤＱＳｄの立ち上りのタイミングで、第ｉ再同期候補クロックＲＣＬＫｉをラッチして、第ｉ再同期候補クロックラッチ信号ＲＣＬＫｉ＿ｒを出力する。
【００４４】
図５は、エッジ検出器３２の構成を表わす図である。
図５に示すように、エッジ検出器３２は、論理回路３８＿１〜３８＿８を備える。
【００４５】
論理回路３８＿１は、第１再同期候補クロックラッチ信号ＲＣＬＫ１＿ｒの反転クロックと、第８再同期候補クロックラッチ信号ＲＣＬＫ８＿ｒとの論理積を第１再同期候補クロックプレ選択信号ＲＣＬＫ１＿ＳＥＬ＿ｐｒｅとして出力する。
【００４６】
論理回路３８＿ｉ（ｉ＝２〜８）は、第ｉ再同期候補クロックラッチ信号ＲＣＬＫｉ＿ｒの反転クロックと、第ｉ−１再同期候補クロックラッチ信号ＲＣＬＫｉ−１との論理積をプ第ｉ再同期候補クロックプレ選択信号ＲＣＬＫｉ＿ＳＥＬ＿ｐｒｅとして出力する。
【００４７】
エッジ検出器３２によって、ＲＣＬＫｉ−１＿ｒがハイレベルで、ＲＣＬＫ＿ｉがロウレベルの場合に、ＲＣＬＫ＿ｉ＿ＳＥＬ＿ｐｒｅがハイレベルとなる。つまり、ＲＣＬＫ１＿ｒ→ＲＣＬＫ２＿ｒ→・・・→ＲＣＬＫ８＿ｒ→ＲＣＬＫ１＿ｒのレベル変化において、ハイレベルからロウレベルに変化する箇所（エッジ）が検出される。これによって、遅延データストローブ信号ＤＱＳｄの位相よりも遅く、かつ遅延データストローブ信号ＤＱＳｄの位相と最も近い位相を有する最適クロックを選択することが可能となる。これによってにセットアップタイムとホールドタイムがどちらかに偏ってしまうのを防止できる。
【００４８】
フリップフロップ３３＿ｉ（ｉ＝１〜８）のクロック端子には、第ｉ再同期候補クロックＲＣＬＫｉが入力される。フリップフロップ３３＿ｉのデータ入力端子には、キャリブレーションのイネーブルを指示するキャリブレーション信号ｃａｌ_ｅｎが入力される。フリップフロップ３１＿ｉは、第ｉキャリブレーションラッチ信号ｃａｌ＿ｅｎｉを出力する。
【００４９】
クロックゲート３４＿ｉ（ｉ＝８）のイネーブル端子には、第ｉキャリブレーションラッチ信号ｃａｌ＿ｅｎｉが入力される。クロックゲート３４＿ｉのクロック端子には、第１再同期候補クロックＲＣＬＫｉが入力される。クロックゲート３４＿ｉは、第ｉキャリブレーションラッチ信号ｃａｌ＿ｅｎｉがハイレベルのときに、入力される第１再同期候補クロックＲＣＬＫｉを第ｉキャリブレーションゲートクロックｃａｌ＿ｅｎ＿ｇｃｋｉとして出力する。
【００５０】
フリップフロップ３５＿ｉ（ｉ＝１〜８）は、第ｉ再同期候補クロックＲＣＬＫｉに対応して設けられる。
【００５１】
フリップフロップ３５＿ｉ（ｉ＝１〜８）のクロック端子には、第ｉキャリブレーションゲートクロックｃａｌ＿ｅｎ＿ｇｃｋｉが入力される。フリップフロップ３５＿ｉのデータ入力端子には、第ｉ再同期候補クロックプレ選択信号ＲＣＬＫｉ＿ＳＥＬ＿ｐｒｅが入力される。フリップフロップ３５＿ｉは、第ｉ再同期候補クロック選択信号ＲＣＬＫｉ＿ＳＥＬを出力する。フリップフロップ３５＿ｉは、対応する第ｉ再同期候補クロックＲＣＬＫＬｉが最適クロックの場合にハイレベル（第１のレベル）をラッチし、対応する第ｉ再同期候補クロックＲＣＬＫＬｉが最適クロックでない場合にロウレベル（第２のレベル）をラッチする。
【００５２】
セレクタは、フリップフロップ３５＿１〜３５＿８の出力を受けて、ハイレベルを出力するフリップフロップに対応する再同期候補クロックを再同期クロックＲＣＬＫとして選択する。
【００５３】
図６は、セレクタ２６の構成を表わす図である。
図６に示すように、セレクタ２６は、ＡＮＤ回路３６＿１〜３６＿８と、ＯＲ回路３７とを備える。
【００５４】
ＡＮＤ回路３６＿ｉ（ｉ＝１〜８）は、第ｉ再同期候補クロックＲＣＬＫｉと、第ｉ再同期候補クロック選択信号ＲＣＬＫｉ＿ＳＥＬとの論理積を出力する。
【００５５】
ＯＲ回路３７は、ＡＮＤ回路３６＿１〜ＡＮＤ回路３６＿８の出力の論理積を再同期クロックＲＣＬＫとして出力する。
【００５６】
再び、図４を参照して、ＯＲ回路５８は、第７再同期候補クロック選択信号ＲＣＬＫ７＿ＳＥＬと、第８再同期候補クロック選択信号ＲＣＬＫ８＿ＳＥＬの論理和を再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌとして出力する。つまり、第７再同期候補クロックＲＣＬＫ７または第８再同期候補クロックＲＣＬＫ８が再同期クロックＲＣＬＫとして選択される場合には、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがハイレベルとなり、その他の再同期候補クロックが再同期クロックＲＣＬＫとして選択される場合には、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがロウレベルとなる。第７再同期候補クロックＲＣＬＫ７および第８再同期候補クロックＲＣＬＫ８は、コアクロックＣＯＲＥ＿ＣＬＫの位相よりも早く、かつコアクロックＣＯＲＥ＿ＣＬＫの位相との差が小さい位相を有する所定のクロックである。
【００５７】
図７は、再同期候補クロックＲＣＬＫｉ、再同期候補クロックラッチ信号ＲＣＬＫｉ＿ｒ、および再同期候補クロックプレ選択信号ＲＣＬＫｉ＿ＳＥＬ＿ｐｒｅのタイミング図である。
【００５８】
図７に示すように、ＲＣＬＫ生成器７は、８個の再同期候補クロックＲＣＬＫ１〜ＲＣＬＫ８を出力する。
【００５９】
フリップフロップ３１＿１〜３１＿３，３１＿８は、遅延データストローブ信号ＤＱＳｄの立ち上りエッジで、ハイレベルの再同期候補クロックＲＣＫ１〜ＲＣＬＫ３，ＲＣＬＫ８をラッチして、ハイレベルの再同期候補クロックラッチ信号ＲＣＬＫ１＿ｒ〜ＲＣＬＫ３＿ｒ，ＲＣＬＫ８＿ｒを出力する。フリップフロップ３１＿４〜３１＿７は、遅延データストローブ信号ＤＱＳｄの立ち上りエッジで、ロウレベルの再同期候補クロックＲＣＫ４〜ＲＣＬＫ７ラッチして、ロウレベルの再同期候補クロックラッチ信号ＲＣＬＫ４＿ｒ〜ＲＣＬＫ７＿ｒを出力する。
【００６０】
第３再同期候補クロックラッチ信号ＲＣＬＫ３＿ｒがハイレベルで、第４再同期候補クロックラッチ信号ＲＣＬＫ４＿ｒがロウレベルであるから、エッジ検出器３２によって、第４再同期候補クロックプレ選択信号ＲＣＬＫ４＿ＳＥＬ＿ｐｒｅがハイレベルとなる。
【００６１】
図８は、キャリブレーション信号ｃａｌ＿ｅｎ、キャリブレーションラッチ信号ｃａｌ＿ｅｎ１〜ｃａｌ＿ｅｎ８、キャリブレーションゲートクロックｃａｌ＿ｅｎ＿ｇｃｋ１〜ｃａｌ＿ｅｎ＿ｇｃｋ８、再同期候補クロックＲＣＬＫ１〜ＲＣＬＫ８、再同期候補クロック選択信号ＲＣＬＫ１＿ＳＥＬ〜ＲＣＬＫ８＿ＳＥＬのタイミング図である。
【００６２】
フリップフロップ３３＿ｉは、ＲＣＬＫｉの立ち上りエッジで、ハイレベルまたはロウレベルのキャリブレーション信号ｃａｌ＿ｅｎをラッチして、ハイレベルまたはロウレベルの第ｉキャリブレーションラッチ信号ｃａｌ＿ｅｎｉを出力する。
【００６３】
クロックゲート３４＿ｉは、第ｉキャリブレーションラッチ信号ｃａｌ＿ｅｎｉがハイレベルのときに、第ｉ再同期候補クロックＲＣＬＫｉを第ｉキャリブレーションゲートクロックｃａｌ＿ｅｎ＿ｇｃｋｉとして出力する。
【００６４】
キャリブレーション時（ｃａｌ＿ｅｎがハイレベル）には、遅延データストローブ信号ＤＱＳｄの位相も変化するため、第ｉ再同期候補クロックラッチ信号ＲＣＬＫｉ＿ｒおよび第ｉ再同期候補クロックプレ選択信号ＲＣＬＫｉ＿ＳＥＬ＿ｐｒｅも変化する。
【００６５】
第ｉキャリブレーションゲートクロックｃａｌ＿ｅｎ＿ｇｃｋｉの最初の立ち上りのタイミングで、第ｉ再同期候補クロック選択信号ＲＣＬＫｉ＿ＳＥＬが更新される。
【００６６】
これによって、キャリブレーション信号ｃａｌ＿ｅｎがロウレベルに設定された後、再同期候補クロックＲＣＬＫが最初に立ち上るときに、再同期クロックＲＣＬＫが更新される。
【００６７】
ここで、第ｉ再同期候補クロック選択信号ＲＣＬＫｉ＿ＳＥＬが変更される時に再同期クロックＲＣＬＫにグリッジが乗る可能性があるが、この更新動作は初期化シーケンスのみで実行するため、通常のリード動作に影響しない。
【００６８】
図９は、データイネーブル制御器９およびキャプチャーレジスタ４の構成を表わす図である。
【００６９】
図９に示すように、データイネーブル制御器９は、インバータ４０と、セレクタ４１と、インバータ４２と、フリップフロップ４３とを備える。
【００７０】
インバータ４０は、遅延データストローブ信号ＤＱＳｄを受けて、遅延データストローブ信号ＤＱＳｄの反転信号をセレクタ４１へ送る。セレクタ４１は、遅延データストローブ信号ＤＱＳｄの反転信号と、再同期クロックＲＣＬＫとを受ける。セレクタ４１は、データイネーブル信号ｄａｔａ＿ｅｎがハイレベルのときには、遅延データストローブ信号ＤＱＳｄの反転信号を出力し、データイネーブル信号ｄａｔａ＿ｅｎがロウレベルのときには、再同期クロックＲＣＬＫを出力する。
【００７１】
インバータ４２は、データイネーブル信号ｄａｔａ＿ｅｎを受けて、データイネーブル信号ｄａｔａ＿ｅｎの反転信号を出力する。
【００７２】
フリップフロップ４３のクロック端子には、セレクタ４１の出力、すなわち、遅延データストローブ信号ＤＱＳｄの反転信号または再同期クロックＲＣＬＫが入力される。フリップフロップ４３のデータ入力端子には、インバータ４２の出力、すなわち、データイネーブル信号ｄａｔａ＿ｅｎの反転信号が入力される。フリップフロップ４３は、データイネーブル信号ｄａｔａ＿ｅｎを出力する。
【００７３】
データイネーブル信号ｄａｔａ＿ｅｎがロウレベルのときには、再同期クロックＲＣＬＫの立ち上がりのタイミングで、データイネーブル信号ｄａｔａ＿ｅｎがハイレベルに活性化される。  データイネーブル信号ｄａｔａ＿ｅｎがハイベルのときには、遅延データストローブ信号ＤＱＳｄの立ち下がりのタイミングで、データイネーブル信号ｄａｔａ＿ｅｎがロウレベルに活性化される。
【００７４】
キャプチャーレジスタ４は、クロックゲート４４と、インバータ４５と、フリップフロップ１０〜１２とを備える。
【００７５】
クロックゲート４４のイネーブル端子には、データイネーブル信号ｄａｔａ＿ｅｎが入力される。クロックゲート４４のクロック端子には、遅延データストローブ信号ＤＱＳｄが入力される。クロックゲート４４は、データイネーブル信号ｄａｔａ＿ｅｎがハイレベルのときに、入力される遅延データストローブ信号ＤＱＳｄをインバータ４５へ出力する。
【００７６】
インバータ４５は、クロックゲート４４の出力信号である遅延データストローブ信号ＤＱＳｄを受けて、遅延データストローブ信号ＤＱＳｄの反転信号を出力する。
【００７７】
フリップフロップ１０のクロック端子には、遅延データストローブ信号ＤＱＳｄが入力される。フリップフロップ１０のデータ入力端子には、遅延データ信号ＤＱｄが入力される。フリップフロップ１０の出力が、フリップフロップ１１に送られる。
【００７８】
フリップフロップ１１のクロック端子には、インバータ４５の出力信号が入力される。フリップフロップ１１のデータ入力端子には、フリップフロップ１０の出力信号が入力される。フリップフロップ１１は、ライズキャプチャ信号ＤＱｃｐｔ＿ｒを出力する。
【００７９】
フリップフロップ１１のクロック端子には、インバータ４５の出力信号が入力される。フリップフロップ１１のデータ入力端子には、遅延データ信号ＤＱｄが入力される。フリップフロップ１１は、フォールキャプチャ信号ＤＱｃｐｔ＿ｆを出力する。
【００８０】
図１０は、再同期クロックＲＣＬＫ、遅延データストローブ信号ＤＱＳｄ、遅延データ信号ＤＱｄ、ライズキャプチャ信号ＤＱｃｐｔ＿ｒ、およびフォールキャプチャ信号ＤＱｃｐｔ＿ｆのタイミング図である。
【００８１】
フリップフロップ４３の出力であるデータイネーブル信号ｄａｔａ＿ｅｎがハイレベルのときには、セレクタ４１がインバータ４０の出力をフリップフロップ４３のクロック端子へ出力するので、遅延データストローブ信号ＤＱＳｄの立下りのタイミングで、データイネーブル信号ｄａｔａ＿ｅｎが立ち下がる。
【００８２】
一方、フリップフロップ４３の出力であるデータイネーブル信号ｄａｔａ＿ｅｎがロウレベルのときには、セレクタ４１が再同期クロックＲＣＬＫをフリップフロップ４３のクロック端子へ出力するので、再同期クロックＲＣＬＫの立上がりのタイミングで、データイネーブル信号ｄａｔａ＿ｅｎが立ち上がる。
【００８３】
フリップフロップ１０は、遅延データストローブ信号ＤＱＳｄの立ち上りのタイミングで、遅延データ信号ＤＱｄをラッチする。また、データイネーブル信号ｄａｔａ＿ｅｎがハイレベルで遅延データストローブ信号ＤＱＳｄが立ち下がるタイミングでフリップフロップ１１は、フリップフロップ１０の出力をラッチし、フリップフロップ１２は、遅延データ信号ＤＱｄをラッチする。
【００８４】
したがって、フリップフロップ１１の出力であるライズキャプチャ信号ＤＱｃｐｔ＿ｒは、データイネーブル信号ｄａｔａ＿ｅｎがハイレベルで遅延データストローブ信号ＤＱＳｄが立ち下がるタイミングで、遅延データ信号ｄ１、ｄ３、ｄ５、ｄ７・・・を伝送する。また、フリップフロップ１２の出力であるフォールキャプチャ信号ＤＱｃｐｔ＿ｆは、データイネーブル信号ｄａｔａ＿ｅｎがハイレベルで遅延データストローブ信号ＤＱＳｄが立ち上がるタイミングで、遅延データ信号ｄ２、ｄ４、ｄ６、ｄ８・・・を伝送する。
【００８５】
データイネーブル信号ｄａｔａ＿ｅｎは、再同期クロックＲＣＬＫに基づいて活性化され、データストローブ信号ＤＱＳによって活性化されない。これにより、データストローブ信号ＤＱＳがポストアンブル後に不定値となって、データイネーブル信号ｄａｔａ＿ｅｎが誤って活性化されるのを防止することができる。
【００８６】
図１１は、再同期レジスタ５およびレベリングレジスタ６の構成を表わす図である。
図１１に示すように、再同期レジスタ５は、フリップフロップ１３〜１６と、セレクタ１７，１８とを備える。
【００８７】
フリップフロップ１３のクロック端子には、再同期クロックＲＣＬＫが入力される。フリップフロップ１３のデータ入力端子には、ライズキャプチャ信号ＤＱｃｐｔ＿ｒが入力される。フリップフロップ１３の出力信号ｒａが、フリップフロップ１４とセレクタ１７に送られる。
【００８８】
フリップフロップ１５のクロック端子には、再同期クロックＲＣＬＫが入力される。フリップフロップ１５のデータ入力端子には、フォールキャプチャ信号ＤＱｃｐｔ＿ｆが入力される。フリップフロップ１５の出力信号ｆａが、フリップフロップ１６とセレクタ１８に送られる。
【００８９】
フリップフロップ１４のクロック端子には、再同期クロックＲＣＬＫが入力される。フリップフロップ１４のデータ入力端子には、フリップフロップ１３の出力信号ｒａが入力される。フリップフロップ１４の出力信号ｒｂが、セレクタ１７に送られる。
【００９０】
フリップフロップ１６のクロック端子には、再同期クロックＲＣＬＫが入力される。フリップフロップ１６のデータ入力端子には、フリップフロップ１５の出力信号ｆａが入力される。フリップフロップ１６の出力信号ｆｂが、セレクタ１８に送られる。
【００９１】
セレクタ１７は、１段目のフリップフロップ１３の出力信号ｒａと、２段目のフリップフロップ１４の出力信号ｒｂとを受ける。セレクタ１７は、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがハイレベルのときには、信号ｒｂをライズ再同期信号ＤＱｒｓｃ＿ｒとして出力する。セレクタ１７は、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがロウレベルのときには、信号ｒａをライズ再同期信号ＤＱｒｓｃ＿ｒとして出力する。つまり、コアクロックＣＯＲＥ＿ＣＬＫの位相よりも早く、かつコアクロックＣＯＲＥ＿ＣＬＫの位相との差が小さい位相を有する第７再同期候補クロックＲＣＬＫ７または第８再同期候補クロックＲＣＬＫ８が再同期クロックＲＣＬＫとして選択された場合には、２段目のフリップフロップ１４の出力信号ｒｂが出力される。これは、信号ｒａを後段のレベリングレジスタ６に出力した場合には、後段のレベリングレジスタ６においてセットアップ時間を確保することができない場合もあるため、信号ｒａを反周期分遅らせた信号ｒｂを後段のレベリングレジスタ６に出力するようにしたものである。その他の再同期候補クロックＲＣＬＫ１〜ＲＣＬＫ〜ＲＣＬＫ６が再同期クロックＲＣＬＫとして選択された場合には、１段目のフリップフロップ１３の出力信号ｒａが出力される。
【００９２】
セレクタ１８は、１段目のフリップフロップ１５の出力信号ｆａと、２段目のフリップフロップ１６の出力信号ｆｂとを受ける。セレクタ１８は、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがハイレベルのときには、信号ｆｂをフォール再同期信号ＤＱｒｓｃ＿ｆとして出力する。セレクタ１７は、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがロウレベルのときには、信号ｆａをフォール再同期信号ＤＱｒｓｃ＿ｆとして出力する。つまり、コアクロックＣＯＲＥ＿ＣＬＫの位相よりも早く、かつコアクロックＣＯＲＥ＿ＣＬＫの位相との差が小さい位相を有する第７再同期候補クロックＲＣＬＫ７または第８再同期候補クロックＲＣＬＫ８が再同期クロックＲＣＬＫとして選択された場合には、２段目のフリップフロップ１６の出力信号ｆｂが出力される。これは、信号ｆａを後段のレベリングレジスタ６に出力した場合には、後段のレベリングレジスタ６においてセットアップ時間を確保することができない場合もあるため、信号ｆａを反周期分遅らせた信号ｆｂを後段のレベリングレジスタ６に出力するようにしたものである。その他の再同期候補クロックＲＣＬＫ１〜ＲＣＬＫ〜ＲＣＬＫ６が再同期クロックＲＣＬＫとして選択された場合には、１段目のフリップフロップ１５の出力信号ｆａが出力される。
【００９３】
図１１に示すように、レベリングレジスタ６は、フリップフロップ１９〜２３と、セレクタ２１，２４とを備える。
【００９４】
フリップフロップ１９のクロック端子には、コアクロックＣＯＲＥ＿ＣＬＫが入力される。フリップフロップ１９のデータ入力端子には、ライズ再同期信号ＤＱｒｓｃ＿ｒが入力される。フリップフロップ１９の出力信号ｒｃが、フリップフロップ２０とセレクタ２１に送られる。
【００９５】
フリップフロップ２２のクロック端子には、コアクロックＣＯＲＥ＿ＣＬＫが入力される。フリップフロップ２２のデータ入力端子には、フォール再同期信号ＤＱｒｓｃ＿ｆが入力される。フリップフロップ２２の出力信号ｆｃが、フリップフロップ２３とセレクタ２４に送られる。
【００９６】
フリップフロップ２０のクロック端子には、コアクロックＣＯＲＥ＿ＣＬＫが入力される。フリップフロップ２０のデータ入力端子には、フリップフロップ１９の出力信号ｒｃが入力される。フリップフロップ２０の出力信号ｒｄが、セレクタ２１に送られる。
【００９７】
フリップフロップ２３のクロック端子には、コアクロックＣＯＲＥ＿ＣＬＫが入力される。フリップフロップ２３のデータ入力端子には、フリップフロップ２２の出力信号ｆｃが入力される。フリップフロップ２３の出力信号ｆｄが、セレクタ２４に送られる。
【００９８】
セレクタ２１は、１段目のフリップフロップ１９の出力信号ｒｃと、２段目のフリップフロップ２０の出力信号ｒｄとを受ける。セレクタ２１は、レベル検出器８からの信号がハイレベルのときには、信号ｒｄをライズレベリング信号ＤＱｌｖｌ＿ｒとして出力する。セレクタ２１は、レベル検出器８からの信号がロウレベルのときには、信号ｒｃをライズレベリング信号ＤＱｌｖｌ＿ｒとして出力する。
【００９９】
セレクタ２４は、１段目のフリップフロップ２２の出力信号ｆｃと、２段目のフリップフロップ２３の出力信号ｆｄとを受ける。セレクタ２４は、レベル検出器８からの信号がハイレベルのときには、信号ｆｄをフォールレベリング信号ＤＱｌｖｌ＿ｆとして出力する。セレクタ２４は、レベル検出器８からの信号がロウレベルのときには、信号ｆｃをフォールレベリング信号ＤＱｌｖｌ＿ｆとして出力する。
【０１００】
レベル検出器８は、レベリングレジスタ６から出力されるライズレベリング信号ＤＱｌｖｌ＿ｒおよびフォールレベリング信号ＤＱｌｖｌ＿ｆのレベルを検出し、検出結果に基づいて、セレクタ２１，２４での選択を制御する。
【０１０１】
図１２は、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがロウレベルの場合のライズキャプチャ信号ＤＱｃｐｔ＿ｒ、再同期クロックＲＣＬＫ、ライズ再同期信号ＤＱｒｓｃ＿ｒ，コアクロックＣＯＲＥ＿ＣＬＫ，信号ｒｃのタイミング図である。
【０１０２】
フリップフロップ１３は、再同期クロックＲＣＬＫの立ち上りで、ｄａｔａ０を伝送するライズキャプチャ信号ＤＱｃｐｔ＿ｒをラッチする。
【０１０３】
第１再同期候補クロックＲＣＬＫ１〜第６再同期クロックＲＣＬＫ６が再同期クロックＲＣＬＫとして選択される場合には、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがロウレベルとなる。再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがロウレベルの場合には、セレクタ１７は、フリップフロップ１３の出力信号ｒａを選択して、ライズ再同期信号ＤＱｒｓｃ＿ｒとして出力する。その後、フリップフロップ１９は、コアクロックＣＯＲＥ＿ＣＬＫの次の立ち上りで、ｄａｔａ０を伝送するライズ再同期信号ＤＱｒｓｃ＿ｒをラッチして、信号ｒｃを出力する。
【０１０４】
セレクタ１７がフリップフロップ１３の出力信号ｒａを選択したのは、第１再同期候補クロックＲＣＬＫ１〜第６再同期クロックＲＣＬＫ６の位相はコアクロックＣＯＲＥ＿ＣＬＫの位相よりも遅いか、または第１再同期候補クロックＲＣＬＫ１〜第６再同期クロックＲＣＬＫ６の位相がコアクロックＣＯＲＥ＿ＣＬＫの位相よりも早いが、コアクロックＣＯＲＥ＿ＣＬＫの位相との差が大きいためである。このような場合には、フリップフロップ１９は、コアクロックＣＯＲＥ＿ＣＬＫの次の立ち上りで、フリップフロップ１３の出力信号ｒａを正しくラッチすることできる。
【０１０５】
図１３は、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがハイレベルの場合のライズキャプチャ信号ＤＱｃｐｔ＿ｒ、再同期クロックＲＣＬＫ、ライズ再同期信号ＤＱｒｓｃ＿ｒ，コアクロックＣＯＲＥ＿ＣＬＫ，信号ｒｃのタイミング図である。
【０１０６】
フリップフロップ１３は、再同期クロックＲＣＬＫの立ち上りで、ｄａｔａ０を伝送するライズキャプチャ信号ＤＱｃｐｔ＿ｒをラッチする。フリップフロップ１４は、再同期クロックＲＣＬＫの次の立ち下がりで、ｄａｔａ０を伝送するライズキャプチャ信号ＤＱｃｐｔ＿ｒをラッチする。
【０１０７】
第７再同期候補クロックＲＣＬＫ７または第８再同期候補クロックＲＣＬＫ８が再同期クロックＲＣＬＫとして選択される場合には、再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがハイレベルとなる。再同期選択信号ｒｅｓｙｎｃ＿ｓｅｌがハイレベルの場合には、セレクタ１７は、フリップフロップ１４の出力信号ｒｂを選択して、ライズ再同期信号ＤＱｒｓｃ＿ｒとして出力する。その後、フリップフロップ１９は、コアクロックＣＯＲＥ＿ＣＬＫの次の立ち上りで、ｄａｔａ０を伝送するライズ再同期信号ＤＱｒｓｃ＿ｒをラッチして、信号ｒｃを出力する。
【０１０８】
第７再同期候補クロックＲＣＬＫ７および第８再同期候補クロックＲＣＬＫ８は、コアクロックＣＯＲＥ＿ＣＬＫの位相よりも早く、かつコアクロックＣＯＲＥ＿ＣＬＫの位相との差が小さい位相を有するクロックである。したがって、図１２のように、フリップフロップ１３の出力信号ｒａをレベリングレジスタ６へ出力した場合には、フリップフロップ１９は、コアクロックＣＯＲＥ＿ＣＬＫの次の立ち上りで、フリップフロップ１３の出力信号ｒａをラッチすることができない場合があるため、セレクタ１７は、フリップフロップ１４の出力信号ｒｂを選択する。
【０１０９】
図１４は、ＤＤＲ＿ＰＨＹ１のキャリブレーションの手順を表わすフローチャートである。
【０１１０】
ここでは、データストローブ信号ＤＱＳｉ（ｉ＝１〜Ｎ）、データ信号ＤＱｉｊ（ｉ＝１〜Ｎ、ｊ＝１〜Ｍ）がＤＤＲ＿ＰＨＹ１に入力されるとする。１個のデータストローブ信号ＤＱＳｉは、Ｍ個のデータ信号ＤＱｉｊ（ｊ＝１〜Ｍ）に対応し、Ｍ個のデータ信号ＤＱｉｊ（ｊ＝１〜Ｍ）は、データストローブ信号ＤＱＳｉでラッチされるものとする。
【０１１１】
データストローブ信号ＤＱＳｉごとに、ＲＣＬＫ生成器７が設けられる。したがって、ＲＣＬＫ生成器７は、Ｎ個設けられる。ロジック５９は、すべてのデータストローブ信号ＤＱＳｉおよびデータ信号ＤＱＳｉｊに対して共通に設けられる。
【０１１２】
ステップＳ３００において、ロジック５９は、遅延回路２の遅延量および遅延回路３の遅延量を初期値に設定する。初期値として、たとえば、遅延回路２および遅延回路３の最大遅延量の１／２に設定する。
【０１１３】
ステップＳ３０１において、ＤＤＲメモリコントローラ１０１およびロジック５９は、ＤＤＲ−ＳＤＲＡＭ１０６の初期化を実行する。
【０１１４】
ステップＳ３０２において、ＤＤＲメモリコントローラ１０１およびロジック５９は、オール“０”とオール“１”をＤＤＲ−ＳＤＲＡＭ１０６の同一バンク、同一行の異なるカラムへ事前に書き込む。具体的には、オール“０”をバンク０、行０、カラム０に書込み、オール“１”をバンク０、行０、カラム８に書き込む。ここで事前に書きまれたデータは、後のキャリブレーションで使用される。
【０１１５】
ステップＳ３０３において、変数ｉが１に設定される。  
ステップＳ３０４において、ＤＤＲメモリコントローラ１０１およびロジック５９は、遅延データストローブ信号ＤＱＳｄｉを受けるＲＣＬＫ生成器７から出力される再同期クロックＲＣＬＫを初期化する。まず、ＤＤＲメモリコントローラ１０１は、リードコマンドを連続して発行し、ＤＤＲ−ＳＤＲＡＭ１０６からＤＤＲ＿ＰＨＹ１へ遅延データストローブ信号ＤＱＳｄｉが連続して出力される状態とする。ＲＣＬＫ生成器７では、連続して入力される遅延データストローブ信号ＤＱＳｄｉに基づいて、再同期候補クロックＲＣＬＫ１〜ＲＣＬＫ８の中から１つを再同期クロックＲＣＬＫとして選択する。ロジック５９は、リードコマンドが連続して発行されてから十分時間が経過した後に、キャリブレーション信号ｃａｌ＿ｅｎをハイレベルに活性化する。ＲＣＬＫ生成器７は、キャリブレーション信号ｃａｌ＿ｅｎが活性化されている間に、選択する再同期クロックＲＣＬＫを更新する。
【０１１６】
ステップＳ３０５において、レベル検出器８は、データストローブ信号ＤＱＳｉに対応するＭ個のレベリングレジスタ６から出力されるライズレベリング信号ＤＱｌｖｌ＿ｒおよびフォールレベリング信号ＤＱｌｖｌ＿ｆのレベルを判定し、判定結果に基づいて、レベリングレジスタ６内のセレクタ２１，２４の選択を制御する。
【０１１７】
ステップＳ３０６において、ＤＤＲメモリコントローラ１０１およびロジック５９は、Ｍ個のデータ信号ＤＱｉｊ（ｊ＝１〜Ｍ）とデータストローブ信号ＤＱＳｉのキャリブレーションを実行する。Ｍ個のデータ信号ＤＱｉｊ（ｊ＝１〜Ｍ）を受けるＭ個の遅延回路２と、データストローブ信号ＤＱｉｊを受ける遅延回路３を最適に設定する。
【０１１８】
ステップＳ３０７において、ｉ＝Ｎの場合は処理が終了し、ｉ＝Ｎでない場合には、ステップＳ３０８に進む。
【０１１９】
ステップＳ３０８において、ｉがインクリメントされて、処理がステップＳ３０４に戻る。
【０１２０】
ステップＳ３０５の処理は、データ信号ＤＱｉｊ（ｊ＝１〜Ｍ）を伝送する配線長が互いに異なっていても、データ信号ＤＱｉｊのＤＤＲ＿ＰＨＹ１からの出力タイミングが互いに揃うようにするために行なわれる。
【０１２１】
図１５は、図１４のステップＳ３０５の処理である、ＤＱＳｉに対応するＭ個のレベリングレジスタ６内のセレクタ２１，２４の選択を制御する手順を表わすフローチャートである。
【０１２２】
ステップＳ２０１において、ロジック５９は、Ｍ個のレベリングレジスタ６におけるセレクタ２１をフリップフロップ１９の出力信号ｒｃを出力するように設定し、セレクタ２４をフリップフロップ２２の出力信号ｆｃを出力するように設定する。
【０１２３】
ステップＳ２０２において、ＤＤＲメモリコントローラ１０１およびロジック５９は、オール“０”を記憶している（バンク０、行０、列０）をアドレスとして指定したＲｅａｄ０＃０コマンドと、オール“１”を記憶している（バンク０、行０、列８）をアドレスとして指定したＲｅａｄ０＃１コマンドとを図１７に示すように、交互に連続して発行する。
【０１２４】
ステップＳ２０３において、ロジック５９内のレベル検出器８は、２回目のＲｅａｄ＃１コマンドを発行してから定められた読出しレイテンシの時間だけ経過したタイミングで、データ信号ＤＱｉｊに対応するレベリングレジスタ６から出力されるライズレベリング信号ＤＱｌｖｌ＿ｒおよびフォールレベリング信号ＤＱｌｖｌ＿ｆのレベルを検出する。
【０１２５】
ステップＳ２０４において、変数ｊが１に設定される。
ステップＳ２０５において、図１７の（Ａ）に示すように、ライズレベリング信号ＤＱｌｖｌ＿ｒがハイレベルで、かつフォールレベリング信号ＤＱｌｖｌ＿ｆがハイレベルのときには、オール“１”が正しく読み出されているので、処理がステップＳ２０６に進む。図１７の（Ｂ）に示すように、ライズレベリング信号ＤＱｌｖｌ＿ｒがロウレベルで、かつフォールレベリング信号ＤＱｌｖｌ＿ｆがハイレベルのときには、オール“１”が正しく読み出されていないので、処理がステップＳ２０７に進む。なお、ライズレベリング信号ＤＱｌｖｌ＿ｒがハイレベルで、かつフォールレベリング信号ＤＱｌｖｌ＿ｆがロウレベルとなる場合や、ライズレベリング信号ＤＱｌｖｌ＿ｒがロウレベルで、かつフォールレベリング信号ＤＱｌｖｌ＿ｆがロウレベルとなる場合は、論理的にはあり得るかもしれないが、実際上は起こらない。
【０１２６】
ステップＳ２０６において、ロジック５９は、セレクタ２１の設定およびセレクタ２４の設定を維持させる。その結果、セレクタ２１が、フリップフロップ１９の出力信号ｒｃの出力を維持し、セレクタ２４がフリップフロップ２２の出力信号ｆｃの出力を維持する。
【０１２７】
ステップＳ２０７において、ロジック５９は、セレクタ２１の設定を維持させ、セレクタ２４をフリップフロップ２３の出力信号ｆｄを出力するように設定する。
【０１２８】
ステップＳ２０８において、変数ｊがＭの場合には、処理が終了し、変数ｊがＭでない場合には、処理がステップＳ２０９に進む。
【０１２９】
ステップＳ２０９において、変数ｊがインクリメントされて、処理がステップＳ２０５に戻る。
【０１３０】
図１６は、図１４のステップＳ３０６の処理であるデータ信号ＤＱｉｊ（ｊ＝１〜Ｍ）とデータストローブ信号ＤＱＳｉのキャリブレーションの手順を表わすフローチャートである。
【０１３１】
ステップＳ４０２において、ＤＤＲメモリコントローラ１０１およびロジック５９は、オール“０”を記憶している（バンク０、行０、列０）をアドレスとして指定したＲｅａｄ０＃０コマンドと、オール“１”を記憶している（バンク０、行０、列８）をアドレスとして指定したＲｅａｄ０＃１コマンドとを図１７に示すように、交互に連続して発行する。
【０１３２】
ステップＳ４０３において、ロジック５９内のレベル検出器８は、２回目のＲｅａｄ＃１コマンドを発行してから予め定められた読出しレイテンシの時間だけ経過したタイミングで、データ信号ＤＱｉｊに対応するレベリングレジスタ６から出力されるライズレベリング信号ＤＱｌｖｌ＿ｒおよびフォールレベリング信号ＤＱｌｖｌ＿ｆのレベルを検出する。
【０１３３】
ステップＳ４０４において、変数ｊが１に設定される。
ステップＳ４０５において、前回のライズレベリング信号ＤＱｌｖｌ＿ｒがロウレベルで、かつフォールレベリング信号ＤＱｌｖｌ＿ｆがハイレベルであり、今回のライズレベリング信号ＤＱｌｖｌ＿ｒがハイレベルで、かつフォールレベリング信号ＤＱｌｖｌ＿ｆがハイレベルのときには、処理がステップＳ４０９に進む。この場合には、図１７の（Ａ）に示すように、読出しレイテンシのタイミングでライズレベリング信号ＤＱｌｖｌ＿ｒおよびフォールレベリング信号ＤＱｌｖｌ＿ｆが立ち上るので、データ信号ＤＱｉｊの遅延量は適切に設定されているので、データ信号ＤＱｉｊの遅延量の設定は行われない。
【０１３４】
また、前回のライズレベリング信号ＤＱｌｖｌ＿ｒがハイレベルで、かつフォールレベリング信号ＤＱｌｖｌ＿ｆがハイレベルであり、今回のライズレベリング信号ＤＱｌｖｌ＿ｒがロウレベルで、かつフォールレベリング信号ＤＱｌｖｌ＿ｆがハイレベルのときにも、処理がステップＳ４０９に進む。この場合には、図１７の（Ａ）に示すように、読出しレイテンシのタイミングが、ライズレベリング信号ＤＱｌｖｌ＿ｒおよびフォールレベリング信号ＤＱｌｖｌ＿ｆの立ち上りのタイミングから微小量（つまり、ステップＳ４０８またはＳ４０９での１回の増減量Δｄ）だけずれているが、Δｄは微小量であり無視しても問題がないので、データ信号ＤＱｉｊの遅延量の設定は行われない。
【０１３５】
また、前回のライズレベリング信号ＤＱｌｖｌ＿ｒのレベルおよびフォールレベリング信号ＤＱｌｖｌ＿ｆのレベルの組み合わせと、今回のライズレベリング信号ＤＱｌｖｌ＿ｒのレベルおよびフォールレベリング信号ＤＱｌｖｌ＿ｆのレベルの組み合わせとの関係が、上位以外の場合には、処理がステップＳ４０６に進む。この場合には、データ信号ＤＱｉｊの遅延量が適切に設定されていないので、データ信号ＤＱｉｊの遅延量の設定が行われる。
【０１３６】
ステップＳ４０６において、今回のライズレベリング信号ＤＱｌｖｌ＿ｒがハイレベルで、かつフォールレベリング信号ＤＱｌｖｌ＿ｆがハイレベルのときには、処理がステップＳ４０７に進み、それ以外のときには、処理がステップＳ４０８に進む。
【０１３７】
ステップＳ４０７において、ロジック５９は、データ信号ＤＱｉｊを受ける遅延回路２の遅延量をΔｄだけ増加させ、処理がステップＳ４０９に進む。
【０１３８】
ステップＳ４０８において、ロジック５９は、データ信号ＤＱｉｊを受ける遅延回路２の遅延量をΔｄだけ減少させ、処理がステップＳ４０９に進む。
【０１３９】
ステップＳ４０９において、変数ｊがＭの場合には、処理がステップＳ４１１に進み、変数ｊがＭでない場合には、処理がステップＳ４１０に進む。
【０１４０】
ステップＳ４１０において、変数ｊがインクリメントされて、処理がステップＳ４０５に戻る。
【０１４１】
ステップＳ４１１において、ロジック５９は、データストローブ信号ＤＱＳｉを受ける遅延回路３の遅延量を調整する。遅延量は、図１８および図１９に示すように、セットアップマージンおよびホールドマージンを確保するため、現在の遅延量、すなわち初期設定値（遅延回路３の最大遅延量の１／２）にｔＱＨｍｉｎ／２を加算した値とする。ここで、ｔＱＨｍｉｎは、遅延データストローブ信号ＤＱＳｄｉの立ち上りから、Ｍ個の遅延データ信号ＤＱｄｉｊ（ｊ＝１〜Ｍ）のうち最もタイミングの早いデータ信号ＤＱｄｉｊの先頭のデータが保持される時間であり、予め仕様によって定められる。
【０１４２】
図１８および図１９において、ｔＤＱＳＱは、遅延データストローブ信号ＤＱＳｄｉの立ち上りから、Ｍ個の遅延データ信号ＤＱｄｉｊ（ｊ＝１〜Ｍ）のうち最もタイミングの遅いデータ信号ＤＱｄｉｊの先頭のデータが開始するまでの時間である。ｔＤＱＳＱの最大値であるｔＤＱＳＱｍａｘは、予め仕様によって定められる。
【０１４３】
図１８のように、ＤＱｄのキャリブレーション終了後がｔＤＱＳＱ＝０の場合でも、図１９のように、ＤＱｄのキャリブレーション終了後がｔＤＱＳＱ＝ｔＤＱＳＱｍａｘの場合でも、セットアップマージンおよびホールドマージンとしてｔＱＨｍｉｎ／２が確保される。
【０１４４】
（変形例）
本発明は、上記の実施形態に限定されるものではない。
【０１４５】
第２の実施形態では、データイネーブル制御器９には、ＲＣＬＫ生成器７で生成された再同期クロックＲＣＬＫが入力されて、再同期クロックＲＣＬＫの立ち上りのタイミングでデータイネーブル信号ｄａｔａ＿ｅｎをハイレベルに活性化することによって、データストローブ信号ＤＱＳのポストアンブル後の不定状態（Ｈｉ−Ｚ）がキャプチャーレジスタ４に取り込まれるのを防止した。しかしながら、データイネーブル制御器９は、再同期クロックＲＣＬＫ以外のキャプチャ制御信号によって、データイネーブル信号ｄａｔａ＿ｅｎのハイレベルへの活性化を制御することとしてもよい。ただし、このキャプチャ制御信号の周期は、データストローブ信号ＤＱＳの周期と等しい。また、キャプチャ制御信号の位相は、遅延データストローブ信号ＤＱＳｄでの位相よりも遅い。データイネーブル制御器は、キャプチャ制御用信号の立ち上りに基づいて、データイネーブル信号ｄａｔａ＿ｅｎをハイレベルに活性化し、遅延データストローブ信号ＤＱＳｄの立下りに基づいて、データイネーブル信号ｄａｔａ＿ｅｎをロウレベルに非活性化することとしてもよい。
【０１４６】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【符号の説明】
【０１４７】
１  ＤＤＲ＿ＰＨＹ、４  キャプチャーレジスタ、５  再同期レジスタ、６  レベリングレジスタ、７  ＲＣＬＫ生成器、８  レベル検出器、９  データイネーブル制御器、１０〜１６，１９，２０，２２，２３，３１＿１〜３１＿８，３３＿１〜３３＿８，３５＿１〜３５＿８，４３  フリップフロップ、１７，１８，２１，２４，２６，４１  セレクタ、２５  判別部、２７  遅延部、３６＿１〜３６＿８  ＡＮＤ回路、３７，５８  ＯＲ回路、３８＿１〜３８＿８  論理回路、４０，４２，４５  インバータ、３４＿１〜３４＿８，４４  クロックゲート、５９  ロジック、２，３，ＤＬ１〜ＤＬ７  遅延回路、６１  ＤＱパッド、６３  ＤＱＳパッド、６２，６４  Ｉ/Ｏ、７０  プリント基板、１０１  ＤＤＲメモリコントローラ、１０２  システムバス、１０３  ＣＰＵ、１０４  コアクロック生成器、１０５  ＬＳＩ、４０１，４１０  半導体装置、４０２  第１のレジスタ、４０３  第２のレジスタ、４０４  クロック生成器。
【図１】
2015103262.tif 000003
【図２】
2015103262.tif 000004
【図３】
2015103262.tif 000005
【図４】
2015103262.tif 000006
【図５】
2015103262.tif 000007
【図６】
2015103262.tif 000008
【図７】
2015103262.tif 000009
【図８】
2015103262.tif 000010
【図９】
2015103262.tif 000011
【図１０】
2015103262.tif 000012
【図１１】
2015103262.tif 000013
【図１２】
2015103262.tif 000014
【図１３】
2015103262.tif 000015
【図１４】
2015103262.tif 000016
【図１５】
2015103262.tif 000017
【図１６】
2015103262.tif 000018
【図１７】
2015103262.tif 000019
【図１８】
2015103262.tif 000020
【図１９】
2015103262.tif 000021