(57)【特許請求の範囲】
【請求項１】
メモリから入力されるストローブ信号に応じて前記メモリから入力されるデータの取り込みタイミングを制御するメモリインタフェース回路において、
非活性の場合に前記ストローブ信号をマスクする内部ストローブゲート信号に対してクロック信号の１周期よりも短い第１期間分遅延した相対関係を有する内部ストローブゲート調整信号を生成し、前記内部ストローブゲート調整信号の活性化タイミングを定める遅延設定値を段階的に減少して前記内部ストローブゲート信号の活性化タイミングを変化させる制御部と、
第１電位及び前記第１電位よりも高い第２電位をとる前記ストローブ信号の電位に応じて検出信号を出力する検出部とを有し、
システム装置の起動時に実行される前記内部ストローブゲート信号の活性化タイミングの調整において前記検出部は、前記内部ストローブゲート調整信号の活性化タイミングの変化に伴って前記ストローブ信号の電位を取り込み、前記ストローブ信号が前記クロック信号の少なくとも２分の１周期を超える第２期間以上連続して前記第１電位であることを検出して前記検出信号を出力し、
システム装置の起動時に実行される前記内部ストローブゲート信号の活性化タイミングの調整において前記制御部は、前記検出信号に応じて前記内部ストローブゲート調整信号の活性化タイミングを前記第２期間分遅延させる
ことを特徴とするメモリインタフェース回路。
【請求項２】
前記制御部は、前記遅延設定値を前記メモリの出力遅延スペックに応じた範囲内で段階的に変化して前記内部ストローブゲート調整信号の活性化タイミングを変化させ、
前記システム装置の動作中に実行される前記内部ストローブゲート信号の活性化タイミングの調整において前記検出部は、前記内部ストローブゲート調整信号の活性化タイミングの変化に伴って前記ストローブ信号の電位を取り込み、前記ストローブ信号が前記第１電位から前記第２電位に変化したタイミング、又は前記第２電位から前記第１電位に変化したタイミングを検出して前記検出信号を出力し、
前記システム装置の動作中に実行される前記内部ストローブゲート信号の活性化タイミングの調整において前記制御部は、前記検出信号に応じて前記ストローブ信号の前記第１電位から前記第２電位への変化タイミングと前記内部ストローブゲート調整信号の活性化タイミングとを一致させるように調整する
ことを特徴とする請求項１に記載のメモリインタフェース回路。
【請求項３】
前記内部ストローブゲート調整信号は、前記内部ストローブゲート信号に対して前記クロック信号の２分の１周期分遅延した相対関係を有し、
前記検出部は、前記ストローブ信号が前記クロック信号の４分の３周期以上連続して前記第１電位であることを検出して前記検出信号を出力し、
前記制御部は、前記検出信号に応じて前記内部ストローブゲート調整信号の活性化タイミングを前記クロック信号の４分の３周期分遅延させる
ことを特徴とする請求項１に記載のメモリインタフェース回路。
【請求項４】
前記制御部は、前記クロック信号に対する前記ストローブ信号の遅延時間が最大であるときのストローブ信号のプリアンブル期間に続く先頭立ち上がりエッジよりも時間的に後方に前記内部ストローブゲート調整信号の活性化タイミングが到来するように、前記遅延設定値の初期値を設定することを特徴とする請求項１又は３に記載のメモリインタフェース回路。
【請求項５】
前記メモリの出力遅延スペックに応じた範囲は、保持された前記内部ストローブゲート調整信号の活性化タイミングに対して前記クロック信号の±２分の１周期分の範囲であることを特徴とする請求項２に記載のメモリインタフェース回路。
【請求項６】
前記検出部は、
前記メモリの出力遅延スペックに応じた範囲内で前記内部ストローブゲート調整信号の活性化タイミングを変化させたときに、前記ストローブ信号の前記第１電位から前記第２電位への変化タイミングを検出できなかった場合に、エラー信号を出力する
ことを特徴とする請求項２又は５に記載のメモリインタフェース回路。
【請求項７】
前記制御部は、前記内部ストローブゲート信号を生成する遅延回路の時間分解能に応じて、前記遅延設定値を段階的に変化させることを特徴とする請求項１〜６のいずれか１つに記載のメモリインタフェース回路。
【請求項８】
メモリから入力されるストローブ信号に応じて前記メモリから入力されるデータの取り込みタイミングを調整するタイミング調整方法において、
非活性の場合に前記ストローブ信号をマスクする内部ストローブゲート信号に対してクロック信号の１周期よりも短い第１期間分遅延した相対関係を有する内部ストローブゲート調整信号を生成し、
システム装置の起動時に実行される前記内部ストローブゲート信号の活性化タイミングの調整時に、前記内部ストローブゲート調整信号の活性化タイミングの変化に伴って前記ストローブ信号の電位を取り込み、前記ストローブ信号が、第１電位及び前記第１電位よりも高い第２電位のうち、前記クロック信号の少なくとも２分の１周期を超える第２期間以上連続して前記第１電位であることを検出して検出信号を出力し、
システム装置の起動時に実行される前記内部ストローブゲート信号の活性化タイミングの調整時に、前記検出信号に応じて前記内部ストローブゲート調整信号の活性化タイミングを前記第２期間分遅延させる
ことを特徴とするタイミング調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリインタフェース回路及びタイミング調整方法に関するものである。
【背景技術】
【０００２】
従来、半導体記憶装置としてＤＲＡＭ（Dynamic Random Access Memory）が用いられている。また、近年では、システムの動作速度の高速化に対応するため、クロックの立ち上がりと立ち下がりの双方でデータを入出力するダブルデータレート方式が採用されている。このような半導体記憶装置は、ＤＤＲ−ＳＤＲＡＭ（Double Data Rate Synchronous Dynamic Random Access Memory）、ＤＤＲ２−ＳＤＲＡＭやＤＤＲ３−ＳＤＲＡＭと呼ばれる。
【０００３】
例えばシステム装置がＤＤＲ−ＳＤＲＡＭ（メモリ）からデータを読み出す場合、ＤＤＲ−ＳＤＲＡＭは、リードデータを出力するとともに、そのリードデータに同期したリードデータストローブ信号（ストローブ信号）を出力する。システム装置内の受信回路では、ストローブ信号のタイミングを調整し、そのタイミング調整されたストローブ信号に基づいてリードデータを取り込む。
【０００４】
ここで、システム装置にストローブ信号を伝達する信号線は、双方向通信の伝送路として用いられ、複数のメモリが接続されることが想定されている。このため、メモリは、ストローブ信号を出力する際に、リードデータを出力する期間のみストローブ信号を伝達する信号線を駆動し、それ以外の期間はその信号線を駆動しない。従って、図１６（ａ）に示すように、ストローブ信号ＤＱＳは、リードデータを取り込むのに有効な期間、リードデータを取り込むのに有効な先頭立ち上がりエッジに先立つプリアンブル期間及び最後の立ち下がりの後に存在するポストアンブル期間における論理は確定しているが、その他の期間はハイインピーダンス（Ｈｉ−Ｚ）状態となる。このため、受信回路内でリードデータを取り込むラッチ回路のクロック端子にストローブ信号ＤＱＳを直接供給すると、ストローブ信号ＤＱＳのＨｉ−Ｚ状態にパルスが乗ってしまった場合に、一旦ラッチされたリードデータが破壊されてしまう恐れがある。
【０００５】
そこで、ストローブ信号ＤＱＳのＨｉ−Ｚ状態を内部ストローブゲート信号によりマスクして、Ｈｉ−Ｚ状態のストローブ信号ＤＱＳが上記ラッチ回路に供給されないように制御する技術が提案されている（例えば、特許文献１，２参照）。すなわち、上記内部ストローブゲート信号は、ストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥ中にストローブ信号ＤＱＳの取り込みを許可するＨ電位に遷移し、ストローブ信号ＤＱＳのポストアンブル期間中にストローブ信号ＤＱＳの取り込みを禁止するＬ電位に遷移するように生成される。
【０００６】
但し、システム装置側のクロック信号ＣＫがメモリに伝達され、メモリから受信回路にストローブ信号ＤＱＳが伝搬されるまでの経路には、システム装置側の入出力特性、伝送路遅延、メモリ特性などの種々のばらつき要因が存在するため、上記経路の信号遅延（フライトタイム）が一定ではない。従って、ストローブ信号ＤＱＳが受信回路に伝達されるタイミングも一定ではない。具体的には、図１６（ａ）に示すように、リードコマンドＲＥＡＤからリードレイテンシＲＬ後のクロック信号ＣＫの立ち上がりエッジ（以下、「基準エッジＲＥ」ともいう。）と、ストローブ信号ＤＱＳの立ち上がりエッジとにずれが生じる。このずれはｔＤＱＳＣＫとして規格が決められており、基準エッジＲＥに対するずれ量（位相誤差）の最小値をｔＤＱＳＣＫｍｉｎ、最大値をｔＤＱＳＣＫｍａｘと示している。なお、ｔＤＱＳＣＫが「０」の場合には、クロック信号ＣＫの立ち上がりエッジ及び立ち下がりエッジがストローブ信号ＤＱＳの立ち上がりエッジ及び立ち下がりエッジにそれぞれ一致する。ここで、ＤＤＲ３−ＳＤＲＡＭなどの遅延同期ループ（Delay Locked Loop：ＤＬＬ）回路を搭載したメモリでは、メモリ側でＤＬＬ回路を用いてストローブ信号ＤＱＳの位相をクロック信号ＣＫの位相に高精度に合わせているため、上記ずれ量は小さい。例えばＤＤＲ３−ＳＤＲＡＭのｔＤＱＳＣＫスペックでは、ｔＤＱＳＣＫｍｉｎが−５００ｐｓ、ｔＤＱＳＣＫｍａｘが＋５００ｐｓである。
【０００７】
以上のように、ストローブ信号ＤＱＳが受信回路に伝達されるタイミングは一定でないため、フライトタイムに合わせて、上記内部ストローブゲート信号の立ち上がりエッジ（活性化タイミング）がストローブ信号ＤＱＳのプリアンブル期間に到来するようにタイミング調整する必要がある。このとき、上記ずれ量が小さい場合には、図１６（ｂ）に示すように、基準エッジＲＥの周辺をサーチすればストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥに続く先頭立ち上がりエッジを必ず検出することができる。そこで、この検出した先頭立ち上がりエッジの位相に対して例えば−１８０度位相をずらしたタイミングで上記内部ストローブゲート信号ＤＱＳＧが立ち上がるようにタイミング調整することにより、内部ストローブゲート信号ＤＱＳＧをストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥに立ち上げることができる。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０１０−２５０８５９号公報
【特許文献２】特開２００８−２９３２７９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ところで、近年、モバイル機器の消費電力やデータ転送速度を画期的に改善したＬＰＤＤＲ２−ＳＤＲＡＭ（Low Power DDR2 SDRAM）が開発されている。しかし、このようなＬＰＤＤＲ２−ＳＤＲＡＭでは、システム装置側のクロック信号とストローブ信号ＤＱＳの位相を調整するＤＬＬ回路が搭載されていないため、ストローブ信号ＤＱＳの出力タイミングが大きく変動する。具体的には、図１７に示すように、ＤＬＬ回路が非搭載のメモリでは、リードコマンドＲＥＡＤからリードレイテンシＲＬ後のクロック信号ＣＫの立ち上がりエッジを基準エッジＲＥとして、ストローブ信号ＤＱＳを制御することになっている。このようなメモリにおけるｔＤＱＳＣＫは、基準エッジＲＥからストローブ信号ＤＱＳの先頭立ち上がりエッジまでの遅延時間（位相遅れ）として規定されている。図１７において、基準エッジＲＥに対する遅延時間の最小値をｔＤＱＳＣＫｍｉｎ、最大値をｔＤＱＳＣＫｍａｘとして示している。そして、ＬＰＤＤＲ２−ＳＤＲＡＭのｔＤＱＳＣＫスペックでは、ｔＤＱＳＣＫｍｉｎが＋２５００ｐｓ、ｔＤＱＳＣＫｍａｘが＋５５００ｐｓとなり、ＤＤＲ３−ＳＤＲＡＭのそれと比べて１桁以上大きな値になる。
【００１０】
このようなＬＰＤＤＲ２−ＳＤＲＡＭにおいて上記内部ストローブゲート信号のタイミング調整を行うためには、ストローブ信号ＤＱＳの先頭立ち上がりエッジを探索するためのサーチ範囲を広く設定する必要がある。しかし、図１７から明らかなようにｔＤＱＳＣＫｍｉｎからｔＤＱＳＣＫｍａｘまでの範囲内でストローブ信号ＤＱＳがＨｉ−Ｚとなる期間（破線枠参照）が存在するため、サーチ範囲を広く設定すると、ストローブ信号ＤＱＳのＨｉ−Ｚ状態を取り込んでしまい、内部ストローブゲート信号の活性化タイミングを正しく調整できない場合がある。
【００１１】
また、ＬＰＤＤＲ２−ＳＤＲＡＭでは、システム装置の動作中もストローブ信号ＤＱＳの出力タイミングがクロック信号ＣＫの周期の±０．５周期分変動する。このため、システム装置の動作中においても、内部ストローブゲート信号の間欠的なタイミング調整が必要となる。
【課題を解決するための手段】
【００１２】
本発明の一観点によれば、メモリから入力されるストローブ信号に応じて前記メモリから入力されるデータの取り込みタイミングを制御するメモリインタフェース回路において、非活性の場合に前記ストローブ信号をマスクする内部ストローブゲート信号に対してクロック信号の１周期よりも短い第１期間分遅延した相対関係を有する内部ストローブゲート調整信号を生成し、前記内部ストローブゲート調整信号の活性化タイミングを定める遅延設定値を段階的に減少して前記内部ストローブゲート信号の活性化タイミングを変化させる制御部と、第１電位及び前記第１電位よりも高い第２電位をとる前記ストローブ信号の電位に応じて検出信号を出力する検出部とを有し、システム装置の起動時に実行される前記内部ストローブゲート信号の活性化タイミングの調整において前記検出部は、前記内部ストローブゲート調整信号の活性化タイミングの変化に伴って前記ストローブ信号の電位を取り込み、前記ストローブ信号が前記クロック信号の少なくとも２分の１周期を超える第２期間以上連続して前記第１電位であることを検出して前記検出信号を出力し、システム装置の起動時に実行される前記内部ストローブゲート信号の活性化タイミングの調整において前記制御部は、前記検出信号に応じて前記内部ストローブゲート調整信号の活性化タイミングを前記第２期間分遅延させる。
【発明の効果】
【００１３】
本発明の一観点によれば、ストローブ信号のＨｉ−Ｚ状態の取り込みを防止しつつ、内部ストローブゲート信号のタイミング調整を高精度に行うことができるという効果を奏する。
【図面の簡単な説明】
【００１４】
【図１】システムの概略ブロック図。
【図２】（ａ）〜（ｃ）は、起動時のゲートトレーニング動作を説明するためのタイミングチャート。
【図３】（ａ）、（ｂ）は、動作中のゲートトレーニング動作を説明するためのタイミングチャート。
【図４】メモリインタフェース回路の内部構成例を示すブロック図。
【図５】受信回路の内部構成例を示すブロック図。
【図６】ゲートトレーニング制御回路の内部構成例を示すブロック図。
【図７】取込回路及び検出回路の内部構成例を示す回路図。
【図８】起動時のゲートトレーニング動作を示すフローチャート。
【図９】起動時のゲートトレーニング動作を示すタイミングチャート。
【図１０】起動時のゲートトレーニング動作を示すタイミングチャート。
【図１１】起動時のゲートトレーニング動作を示すタイミングチャート。
【図１２】動作中のゲートトレーニング動作を示すフローチャート。
【図１３】動作中のゲートトレーニング動作を示すタイミングチャート。
【図１４】動作中のゲートトレーニング動作を示すタイミングチャート。
【図１５】動作中のゲートトレーニング動作を示すタイミングチャート。
【図１６】（ａ）、（ｂ）は、従来のゲートトレーニング動作を説明するためのタイミングチャート。
【図１７】クロック信号とストローブ信号の関係を説明するためのタイミングチャート。
【発明を実施するための形態】
【００１５】
以下、一実施形態を図１〜図１５に従って説明する。
図１に示すように、システムは、制御装置１０と、制御装置１０によってアクセスされるメモリ装置２０とを有している。制御装置１０は、例えば１つのチップ（半導体集積回路装置：ＬＳＩ）である。メモリ装置２０は、同期式の半導体記憶装置、例えばＬＰＤＤＲ２−ＳＤＲＡＭ（Low Power Double Data Rate 2 Synchronous Dynamic Random Access Memory）である。
【００１６】
次に、制御装置１０の内部構成例を説明する。
コア回路１１は、実行する処理に応じて、メモリ装置２０のデータを読み込むためのリード要求と、そのデータが格納されたアドレスとをメモリコントローラ１２に出力する。また、コア回路１１は、メモリ装置２０にデータを書き込むためのライト要求と、そのデータを格納するアドレスとをメモリコントローラ１２に出力する。なお、コア回路１１は、例えば中央処理装置（Central Processing Unit:ＣＰＵ）である。
【００１７】
メモリコントローラ１２は、当該メモリコントローラ１２の内部クロック信号ＣＬＫを、メモリインタフェース回路１３を介して相補のクロック信号ＣＫ，ＸＣＫとしてメモリ装置２０に供給する。
【００１８】
また、メモリコントローラ１２は、コア回路１１からの要求に応じて、メモリインタフェース回路１３を介してメモリ装置２０にアクセスする。例えばコア回路１１からの要求がリード要求の場合には、メモリコントローラ１２は、メモリインタフェース回路１３を介してコマンドＣＭＤ（ここでは、リードコマンド）及びアドレスをメモリ装置２０に供給する。すると、メモリ装置２０は、リードコマンドに応答し、該当アドレスから読み出したデータ列ＤＱと、そのデータ列ＤＱの電位の遷移タイミングに同期したデータストローブ信号（ストローブ信号）ＤＱＳとを、メモリインタフェース回路１３を介してメモリコントローラ１２に出力する。このとき、メモリ装置２０は、相補のクロック信号ＣＫ，ＸＣＫの電位の遷移タイミングに同期してデータ列ＤＱをバースト出力する、すなわちメモリコントローラ１２の内部クロック信号（図示略）の２倍の周波数でデータ列ＤＱをバースト出力する。ここで、バースト出力とは、与えられた先頭のアドレスから、連続したアドレスに格納されたデータを順次出力することを指す。一方、コア回路１１からの要求がライト要求の場合には、メモリコントローラ１２は、メモリインタフェース回路１３を介してライトコマンド、データ列ＤＱ、ストローブ信号ＤＱＳ、及びデータ列ＤＱを書き込むアドレスをメモリ装置２０に供給する。すると、メモリ装置２０は、該当するアドレスにデータ列ＤＱを記憶する。
【００１９】
また、メモリコントローラ１２は、データ列ＤＱをメモリインタフェース回路１３で取り込むタイミングを較正（調整）するゲートトレーニングの実行を要求するリクエスト信号ＲＥＱをメモリインタフェース回路１３に出力する。メモリコントローラ１２は、所定のタイミングで上記リクエスト信号ＲＥＱを出力する。所定のタイミングは、例えば制御装置１０の起動時や、制御装置１０の動作中において、コア回路１１がメモリ装置２０にアクセスしないタイミングである。
【００２０】
メモリインタフェース回路１３は、インタフェース回路１４と、トレーニング回路１５とを有している。
インタフェース回路１４は、ストローブ信号ＤＱＳに応じてメモリ装置２０との間でデータ列ＤＱの授受を行う。すなわち、インタフェース回路１４は、リード動作時に、メモリ装置２０から供給されるストローブ信号ＤＱＳに応じてタイミング調整された内部ストローブ信号を生成し、その内部ストローブ信号に同期してデータ列ＤＱを取り込み、その取り込んだデータ列ＤＱをメモリコントローラ１２に出力する。また、インタフェース回路１４は、ライト動作時に、メモリコントローラ１２から受け取ったデータ列ＤＱ及びストローブ信号ＤＱＳをメモリ装置２０に出力する。
【００２１】
トレーニング回路１５は、メモリコントローラ１２からのリクエスト信号ＲＥＱに応じてゲートトレーニングを実行する。ここで、ストローブ信号ＤＱＳを伝達する伝送路は双方向通信の伝送路として用いられるため、リード動作時以外はインタフェース回路１４においてストローブ信号ＤＱＳが図２に示す内部ストローブゲート信号ＤＱＳＧによりゲーティングされている。具体的には、内部ストローブゲート信号（ゲート信号）ＤＱＳＧがＬ電位（非活性）のときにストローブ信号ＤＱＳがゲーティング（マスク）され、ゲート信号ＤＱＳＧがＨ電位（活性）のときにストローブ信号ＤＱＳがインタフェース回路１４に取り込まれる。そして、トレーニング回路１５は、メモリ装置２０から入力されるストローブ信号ＤＱＳの第１電位（低電位）から第１電位よりも高い第２電位（高電位）への遷移タイミングに合わせて、ゲート信号ＤＱＳＧの活性化タイミングを調整する。具体的には、トレーニング回路１５は、ストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥ内にゲート信号ＤＱＳＧの活性化タイミング（立ち上がりエッジ）が到来するように、ゲート信号ＤＱＳＧのタイミングを調整する。このようなゲート信号ＤＱＳＧにより、ストローブ信号ＤＱＳのハイインピーダンス状態（Ｈｉ−Ｚ状態）がインタフェース回路１４に取り込まれることが抑制される。
【００２２】
なお、プリアンブル期間ｔＲＰＲＥは、データ列ＤＱを取り込むのに有効な先頭立ち上がりに先立ち、クロック信号ＣＫの約１周期（具体的には、０．９周期）分だけ低電位（Ｌ電位）となる期間である。このプリアンブル期間ｔＲＰＲＥの長さは、クロック信号ＣＫの周期をｔＣＫとすると、０．９ｔＣＫとも表現できる。また、Ｈｉ−Ｚ状態では、ストローブ信号ＤＱＳは、インタフェース回路１４の外部に接続される終端抵抗（図示略）により、例えば高電位（Ｈ電位）及びＬ電位の中間の電圧に設定されている。
【００２３】
次に、上記トレーニング回路１５で実行されるゲートトレーニングについて説明する。
ゲートトレーニングは、例えば制御装置１０の起動時に実行されるとともに、システム動作中の一定間隔毎に実行される。まず、制御装置１０の起動時に実行されるゲートトレーニングの動作について図２に従って説明する。なお、図２において、縦軸及び横軸は、説明を簡潔にするため、適宜拡大、縮小して示している。
【００２４】
図２（ａ）に示すように、ゲート信号ＤＱＳＧに対し第１期間Ｔ１（ここでは、０．５ｔＣＫ）分遅延した相対関係を有する内部ストローブゲート調整信号（ゲート調整信号）ＤＱＳＧＡが生成される。このゲート調整信号ＤＱＳＧＡの活性化タイミングは、基準エッジＲＥ（図１７参照）からの遅延時間が最大であるｔＤＱＳＣＫｍａｘのストローブ信号ＤＱＳの先頭立ち上がりエッジ（第１タイミングｔ１参照）よりも時間的に後方に設定される。続いて、ゲート調整信号ＤＱＳＧＡの活性化タイミングを時間的後方から前方へシフトさせ、ゲート調整信号ＤＱＳＧＡの活性化タイミングに同期してストローブ信号ＤＱＳの電位を順次取り込む。このとき、図２（ｂ）に示すように、ストローブ信号ＤＱＳが第２期間Ｔ２（ここでは、０．７５ｔＣＫ）連続して低電位（Ｌ電位）となった場合（第２タイミングｔ２参照）に、ストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥが検出されたと判定される。次いで、図２（ｃ）に示すように、プリアンブル期間ｔＲＰＲＥであると判定されたタイミング位置（第２タイミングｔ２参照）から第２期間Ｔ２（ここでは、０．７５ｔＣＫ）遅延させた位置（第３タイミングｔ３参照）にゲート調整信号ＤＱＳＧＡをシフトさせる。そして、そのシフトさせた位置が制御装置１０動作中のゲートトレーニングにおけるゲート調整信号ＤＱＳＧＡの基準位置に設定される。このとき、ゲート調整信号ＤＱＳＧＡと連動してゲート信号ＤＱＳＧも０．７５ｔＣＫ分遅延させる。これにより、ゲート信号ＤＱＳＧの活性化タイミングが、上記プリアンブル期間ｔＲＰＲＥを検出したタイミング位置（第２タイミングｔ２参照）から０．２５ｔＣＫ分遅延された位置（第４タイミングｔ４参照）、つまりプリアンブル期間ｔＲＰＲＥの中央付近の位置に設定される。
【００２５】
次に、制御装置１０動作中のゲートトレーニングの概要について図３に従って説明する。なお、図３において、縦軸及び横軸は、説明を簡潔にするため、適宜拡大、縮小して示している。
【００２６】
図３（ａ）に示すように、上記起動時のゲートトレーニングで設定されたゲート調整信号ＤＱＳＧＡの活性化タイミングを、上記基準位置（第３タイミングｔ３参照）を基準にしてメモリ装置２０のｔＤＱＳＣＫスペックに応じたサーチ範囲（ここでは、±０．５ｔＣＫの範囲）内でシフトさせ、ストローブ信号ＤＱＳの電位を順次取り込む。そして、図３（ｂ）に示すように、ストローブ信号ＤＱＳがＬ電位からＨ電位に遷移するタイミング、もしくはストローブ信号ＤＱＳがＨ電位からＬ電位に遷移するタイミングを検出し、その検出したタイミング位置にゲート調整信号ＤＱＳＧＡの活性化タイミングを一致させる（第５タイミングｔ５参照）。これにより、ゲート調整信号ＤＱＳＧＡの立ち上がりエッジ（活性化タイミング）が、ストローブ信号ＤＱＳの先頭立ち上がりエッジに一致する。このとき、ゲート調整信号ＤＱＳＧＡと連動してゲート信号ＤＱＳＧもシフトされるため、ゲート信号ＤＱＳＧの活性化タイミングがストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥの中央付近の位置に設定される（第６タイミングｔ６参照）。
【００２７】
次に、メモリインタフェース回路１３において上記ゲートトレーニングに関連する主要な構成について、その一例を図４〜図７に従って説明する。ここでは、まず、インタフェース回路１４の構成例について説明する。
【００２８】
インタフェース回路１４は、コマンド送信回路３１と、受信回路３２と、遅延制御回路３３とを有している。コマンド送信回路３１には、メモリ装置２０からデータ列ＤＱを読み出す際にメモリコントローラ１２から出力されるリードコマンドＲＥＡＤがトレーニング回路１５を介して入力される。また、コマンド送信回路３１には、上記ゲートトレーニングを実行する際にトレーニング回路１５から出力されるトレーニング用のＬＰＤＤＲ２コマンド（モードレジスタリードコマンドＭＲＲ）が入力される。コマンド送信回路３１は、リードコマンドＲＥＡＤ又はモードレジスタリードコマンドＭＲＲをメモリ装置２０に送信する。なお、メモリ装置２０では、モードレジスタリードコマンドＭＲＲによってモードレジスタ（図示略）に設定されたモード信号が読み出され、そのモード信号によってトレーニング用の動作モードが選択される。
【００２９】
受信回路３２は、メモリ装置２０から出力されるデータ列ＤＱをストローブ信号ＤＱＳに基づいて受信する。ここで、受信回路３２の内部構成例を図５に従って説明する。
受信回路３２は、第１ＤＬＬ回路３４と、アンド回路３５と、第２ＤＬＬ回路３６と、Ｄ型フリップフロップ回路（ＦＦ回路）３７，３８とを有している。
【００３０】
第１ＤＬＬ回路３４には、所定のタイミングで立ち上がるパルス信号ＰＳが供給される。このパルス信号ＰＳは、図９に示すように、例えばリードコマンドＲＥＡＤからリードレイテンシＲＬ後のクロック信号ＣＫの１サイクル前のクロック信号ＣＫの立ち上がりエッジ（基準エッジＲＥ）に応答してＨ電位に立ち上がる信号である。図５に示すように、第１ＤＬＬ回路３４には、遅延制御回路３３（図４参照）から第１遅延量Ｄ１又は第２遅延量Ｄ２が供給される。
【００３１】
第１ＤＬＬ回路３４は、リード動作時に、第１遅延量Ｄ１をパルス信号ＰＳに与えて上記内部ストローブゲート信号ＤＱＳＧを生成する。すなわち、第１遅延量Ｄ１は、内部ストローブゲート信号ＤＱＳＧの活性化タイミングを調整するための遅延量である。具体的には、第１遅延量Ｄ１は、ゲート信号ＤＱＳＧの活性化タイミング（立ち上がりエッジ）がストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥの中央付近に到来するように、ゲート信号ＤＱＳＧを遅延させるための遅延量である。また、第１ＤＬＬ回路３４は、ゲートトレーニング時に、第２遅延量Ｄ２をパルス信号ＰＳに与えて上記内部ストローブゲート調整信号ＤＱＳＧＡを生成する。すなわち、第２遅延量Ｄ２は、内部ストローブゲート調整信号ＤＱＳＧＡの活性化タイミングを調整するための遅延量である。具体的には、第２遅延量Ｄ２は、ゲートトレーニング時に、ゲート調整信号ＤＱＳＧＡの活性化タイミング（立ち上がりエッジ）を順次シフトさせるための遅延量である。ここで、第２遅延量Ｄ２は、第１遅延量Ｄ１に０．５ｔＣＫを加算した値になる。そして、第１ＤＬＬ回路３４で生成されたゲート信号ＤＱＳＧ又はゲート調整信号ＤＱＳＧＡは、アンド回路３５に供給される。
【００３２】
なお、第１ＤＬＬ回路３４の時間分解能は、例えば１／６４ｔＣＫである。このため、ゲート信号ＤＱＳＧ及びゲート調整信号ＤＱＳＧＡのタイミング調整（遅延設定）は、１／６４ｔＣＫ毎での調整が可能である。
【００３３】
アンド回路３５には、ストローブ信号ＤＱＳが供給される。このアンド回路３５は、ストローブ信号ＤＱＳとゲート信号ＤＱＳＧ又はゲート調整信号ＤＱＳＧＡとを論理積演算し、その演算結果に応じた内部ストローブ信号ＩＤＱＳを出力する。例えばアンド回路３５は、ゲート信号ＤＱＳＧがＬ電位のときには、ストローブ信号ＤＱＳの信号レベルに関わらずＬ電位の内部ストローブ信号ＩＤＱＳを出力する。すなわち、ゲート信号ＤＱＳＧがＬ電位のときには、ストローブ信号ＤＱＳがゲーティング（マスク）される。一方、アンド回路３５は、ゲート信号ＤＱＳＧがＨ電位のときには、ストローブ信号ＤＱＳと実質的に等しいタイミングで立ち上がる／立ち下がる内部ストローブ信号ＩＤＱＳを出力する。同様に、アンド回路３５は、Ｌ電位のゲート調整信号ＤＱＳＧＡに応答してＬ電位の内部ストローブ信号ＩＤＱＳを出力し、Ｈ電位のゲート調整信号ＤＱＳＧＡに応答してストローブ信号ＤＱＳと実質的に等しいタイミングで立ち上がる／立ち下がる内部ストローブ信号ＩＤＱＳを出力する。この内部ストローブ信号ＩＤＱＳは、第２ＤＬＬ回路３６に供給されるとともに、上記遅延制御回路３３（図４参照）を通じてトレーニング回路１５に供給される。
【００３４】
第２ＤＬＬ回路３６は、内部ストローブ信号ＩＤＱＳに所定の遅延量（例えば、内部ストローブ信号ＩＤＱＳの位相の９０度分）を与えて遅延内部ストローブ信号（遅延信号）ＩＤＱＳｄを生成する。この遅延信号ＩＤＱＳｄは、ＦＦ回路３７，３８のクロック端子に供給される。
【００３５】
ＦＦ回路３７，３８のデータ入力端子には、メモリ装置２０からデータ列ＤＱが供給される。具体的には、ＦＦ回路３７，３８には、バースト長に応じた数のデータを有するデータ列ＤＱがストローブ信号ＤＱＳに同期して連続的に入力される。ここで、バースト長とはメモリのバースト動作における連続動作の回数を表す概念であり、与えられた先頭のアドレスから、バースト長に規定された回数だけアドレスが連続して動作することを意味する。ＦＦ回路３７は、遅延信号ＩＤＱＳｄの立ち上がりエッジに応答してデータ列ＤＱをラッチし、ラッチしたレベルと等しいレベルのリードデータＲＤ１を出力する。ＦＦ回路３８は、遅延信号ＩＤＱＳｄの立ち下がりエッジに応答してデータ列ＤＱをラッチし、ラッチしたレベルと等しいレベルのリードデータＲＤ２を出力する。これらリードデータＲＤ１，ＲＤ２は、トレーニング回路１５内の第２送受信回路４３又はメモリコントローラ１２に供給される。
【００３６】
このようにして、ＦＦ回路３７，３８では、内部ストローブ信号ＩＤＱＳの立ち上がりエッジと立ち下がりエッジとに同期して、ダブルデータレートでのデータ列ＤＱの取り込みが実現される。
【００３７】
図４に示すように、遅延制御回路３３には、トレーニング回路１５から第１シフト値ＳＦＴ１又は第２シフト値ＳＦＴ２が入力される。遅延制御回路３３は、第１シフト値ＳＦＴ１をデコードして上記第１遅延量Ｄ１を生成し、その第１遅延量Ｄ１を受信回路３２に出力する。また、遅延制御回路３３は、第２シフト値ＳＦＴ２をデコードして上記第２遅延量Ｄ２を生成し、その第２遅延量Ｄ２を受信回路３２に出力する。また、遅延制御回路３３は、受信回路３２から出力された内部ストローブ信号ＩＤＱＳを、トレーニング回路１５の第３送受信回路４４に出力する。
【００３８】
次に、トレーニング回路１５の構成例を説明する。
トレーニング回路１５は、トレーニング制御回路４０と、ゲートトレーニング制御回路４１と、第１送受信回路４２と、第２送受信回路４３と、第３送受信回路４４と、セレクタ４５とを有している。
【００３９】
トレーニング制御回路４０は、トレーニング回路１５（トレーニング動作）全体を制御する。このトレーニング制御回路４０は、メモリコントローラ１２から上記リクエスト信号ＲＥＱを受信し、そのリクエスト信号ＲＥＱに応じて、ゲートトレーニング制御回路４１及びセレクタ４５の動作を制御する。トレーニング制御回路４０は、リクエスト信号ＲＥＱに応答してアクノリッジ信号ＡＣＫをメモリコントローラ１２に返送する。具体的には、トレーニング制御回路４０は、リクエスト信号ＲＥＱに応答してアクノリッジ信号ＡＣＫをＨ電位に立ち上げ、ゲートトレーニングが正常に終了する（つまり上記内部ストローブゲート信号ＤＱＳＧのタイミングが正常に調整される）と、アクノリッジ信号ＡＣＫをＬ電位に立ち下げる。また、トレーニング制御回路４０は、トレーニング動作と通常動作（例えば、リード動作）を切り替えるモード切替信号ＭＣをゲートトレーニング制御回路４１に出力する。なお、トレーニング動作を指令するモード切替信号ＭＣは、起動時のゲートトレーニング又は制御装置１０動作中のゲートトレーニングのいずれか一方を選択する信号である。
【００４０】
トレーニング制御回路４０は、メモリ装置２０のｔＤＱＳＣＫスペックに応じて、上記ゲート調整信号ＤＱＳＧＡをシフトさせて内部ストローブ信号ＩＤＱＳの電位を取り込むサーチ範囲を示す設定信号ＳＳを生成し、その設定信号ＳＳをゲートトレーニング制御回路４１に出力する。具体的には、トレーニング制御回路４０は、上記サーチ範囲のスタート位置とエンド位置とを示す設定信号ＳＳをゲートトレーニング制御回路４１に出力する。さらに、トレーニング制御回路４０は、上記サーチ範囲内でストローブ信号ＤＱＳの立ち上がりエッジを検出できなかったことを示すエラー信号ＥＲＲがゲートトレーニング制御回路４１から入力されると、トレーニング動作の再試行（リトライ）を要求するエラーフラグＥＦをメモリコントローラ１２に出力する。
【００４１】
ゲートトレーニング制御回路４１は、ゲートトレーニング動作を制御する。ここで、ゲートトレーニング制御回路４１の内部構成例を図６に従って説明する。
ゲートトレーニング制御回路４１は、シフト値設定回路５１と、制御回路５２と、取込回路５３と、検出回路５４と、シフト値演算回路５５とを有している。
【００４２】
シフト値設定回路５１には、上記設定信号ＳＳが入力される。シフト値設定回路５１は、設定信号ＳＳにより設定されたサーチ範囲に基づいて、そのサーチ範囲内でゲート調整信号ＤＱＳＧＡの活性化タイミングをシフトさせるための第２シフト値ＳＦＴ２を生成する。また、シフト値設定回路５１には、前回のゲートトレーニング動作においてゲート調整信号ＤＱＳＧＡの立ち上がりエッジをストローブ信号ＤＱＳの先頭立ち上がりエッジに一致させたときの第２シフト値ＳＦＴ２が基準シフト値ＳＦＴＢとしてシフト値演算回路５５から入力される。シフト値設定回路５１は、設定信号ＳＳに基づいて設定されるサーチ範囲と、基準シフト値ＳＦＴＢとに基づいて、サーチ範囲内でゲート調整信号ＤＱＳＧＡの活性化タイミングをシフトさせるための第２シフト値ＳＦＴ２を生成する。このシフト値設定回路５１は、上記サーチ範囲内で第２シフト値ＳＦＴ２を段階的に減少させる、つまり第２シフト値ＳＦＴ２を微少時間分ずつ減少させる。ここで、上記微少時間は、例えば上記第１ＤＬＬ回路３４（図５参照）の時間分解能（遅延調整の分解能）に応じて設定され、本実施形態では１／６４ｔＣＫに設定される。
【００４３】
制御回路５２には、ゲート信号ＤＱＳＧの活性化タイミングを調整するための第１シフト値ＳＦＴ１がシフト値演算回路５５から入力される。また、制御回路５２には、上記トレーニング制御回路４０からモード切替信号ＭＣが入力される。この制御回路５２は、モード切替信号ＭＣにより設定される動作モードに応じた信号を出力する。具体的には、制御回路５２は、ゲートトレーニング動作時に、上記モードレジスタリードコマンドＭＲＲを生成し、そのコマンドＭＲＲを第１送受信回路４２に出力する。また、制御回路５２は、上記ゲートトレーニング動作時に、シフト値設定回路５１からの第２シフト値ＳＦＴ２を第３送受信回路４４に出力する。一方、制御回路５２は、リード動作時に、シフト値演算回路５５からの第１シフト値ＳＦＴ１を第３送受信回路４４に出力する。
【００４４】
取込回路５３には、受信回路３２（図４参照）から遅延制御回路３３及び第３送受信回路４４を通じて、内部ストローブ信号ＩＤＱＳが入力される。また、取込回路５３は、ゲート調整信号ＤＱＳＧＡの活性化タイミングがシフトされる毎に内部ストローブ信号ＩＤＱＳの電位を検出し、その電位を保持する。この取込回路５３は、図７に示すように、例えば直列に接続された複数（ここでは、２５６個）のＦＦ回路（ビット）ｂ０〜ｂ２５５を含むシフトレジスタ５３Ａを有している。シフトレジスタ５３Ａは、上記ゲート調整信号ＤＱＳＧＡの活性化タイミングに同期して出力されるＨ電位のラッチ信号ＬＴをトリガにして動作する。具体的には、シフトレジスタ５３Ａは、Ｈ電位のラッチ信号ＬＴが入力される毎にビットｂ２５５〜ｂ１の値をそれぞれビットｂ２５４〜ｂ０にシフトさせるとともに、その時の内部ストローブ信号ＩＤＱＳをビットｂ２５５として取り込む。ここで、上記ゲート調整信号ＤＱＳＧＡの活性化タイミングは１／６４ｔＣＫ毎にシフトされるため、シフトレジスタ５３Ａの上位４８ビットｂ２５５〜ｂ２０８にラッチされた電位が内部ストローブ信号ＩＤＱＳの０．７５（＝４８／６４）ｔＣＫ分の期間の電位に相当する。
【００４５】
検出回路５４は、取込回路に取り込まれた結果に基づいて、所定の検出ポイントを検出して検出信号ＤＳを出力する。例えば起動時のゲートトレーニングにおいて、検出回路５４は、内部ストローブ信号ＩＤＱＳのＬ電位が第２期間Ｔ２（例えば、０．７５ｔＣＫ）連続したことを検出して検出信号ＤＳを出力する。すなわち、検出回路５４は、図７に示すように、シフトレジスタ５３Ａの上位４８ビットｂ２５５〜ｂ２０８の出力端子が入力端子に接続されるＮＯＲ回路５４Ａを有し、そのＮＯＲ回路５４Ａの出力信号がＨ電位になったときに所定期間だけＨ電位となる検出信号ＤＳを出力する。また、制御装置１０動作中のゲートトレーニングにおいて、検出回路５４は、内部ストローブ信号ＩＤＱＳの立ち上がりエッジを検出して検出信号ＤＳを出力する。すなわち、制御装置１０動作中のゲートトレーニングにおいては、初めにシフトレジスタ５３Ａの各ビットｂ０〜ｂ２５５が初期値（＝１）に設定され、上位２ビットｂ２５５，ｂ２５４にラッチされた電位状態が異なる場合に内部ストローブ信号ＩＤＱＳの立ち上がりエッジが検出される。そして、検出回路５４は、その検出に応じて所定期間だけＨ電位となる検出信号ＤＳを出力する。この検出信号ＤＳは、シフト値設定回路５１及びシフト値演算回路５５に供給される。なお、シフト値設定回路５１は、Ｈ電位の検出信号ＤＳに応答して、その時の第２シフト値ＳＦＴ２をシフト値演算回路５５に出力するとともに、第２シフト値ＳＦＴ２の減算処理を終了する。
【００４６】
また、検出回路５４は、制御装置１０動作中のゲートトレーニングにおいて、設定されたサーチ範囲内で内部ストローブ信号ＩＤＱＳの立ち上がりエッジを検出できなかった場合に、エラー信号ＥＲＲをトレーニング制御回路４０（図４参照）に出力する。
【００４７】
シフト値演算回路５５には、上記トレーニング制御回路４０からモード切替信号ＭＣが入力される。このシフト値演算回路５５は、モード切替信号ＭＣに応じて動作を切り替える。
【００４８】
具体的には、シフト値演算回路５５は、起動時のゲートトレーニングを選択するモード切替信号ＭＣが入力される場合に、Ｈ電位の検出信号ＤＳが入力されると、シフト値設定回路５１からの第２シフト値ＳＦＴ２に対して第２期間Ｔ２（例えば、０．７５ｔＣＫ）分の時間を加算して基準シフト値ＳＦＴＢを生成する。
【００４９】
また、シフト値演算回路５５は、制御装置１０動作中のゲートトレーニングを選択するモード切替信号ＭＣが入力される場合に、Ｈ電位の検出信号ＤＳが入力されると、ゲート調整信号ＤＱＳＧＡの立ち上がりエッジと内部ストローブ信号ＩＤＱＳの先頭立ち上がりエッジが一致したときの第２シフト値ＳＦＴ２を基準シフト値ＳＦＴＢに設定する。さらに、シフト値演算回路５５は、基準シフト値ＳＦＴＢに対して第１期間Ｔ１（例えば、０．５ｔＣＫ）分の時間を減算して第１シフト値ＳＦＴ１を生成する。そして、シフト値演算回路５５は、基準シフト値ＳＦＴＢをシフト値設定回路５１に出力するとともに、第１シフト値ＳＦＴ１を制御回路５２に出力する。
【００５０】
図４に示すように、上記モードレジスタリードコマンドＭＲＲは、第１送受信回路４２に入力される。第１送受信回路４２は、受信したコマンドＭＲＲをセレクタ４５に出力する。セレクタ４５には、メモリコントローラ１２からリードコマンドＲＥＡＤが入力される。セレクタ４５は、トレーニング制御回路４０からの制御信号に基づいて、リードコマンドＲＥＡＤ又はモードレジスタリードコマンドＭＲＲをコマンド送信回路３１に出力する。
【００５１】
第２送受信回路４３は、受信回路３２から入力されるリードデータをゲートトレーニング制御回路４１に出力する。第３送受信回路４４は、ゲートトレーニング制御回路４１と遅延制御回路３３との間で、第１シフト値ＳＦＴ１、第２シフト値ＳＦＴ２及び内部ストローブ信号ＩＤＱＳの送受信を制御する。
【００５２】
なお、本実施形態において、制御装置１０はシステム装置の一例、遅延制御回路３３、第１ＤＬＬ回路３４、シフト値設定回路５１、制御回路５２及びシフト値演算回路５５は、制御部の一例、第１ＤＬＬ回路３４は遅延回路の一例である。また、取込回路５３及び検出回路５４は検出部の一例、第２シフト値ＳＦＴ２は遅延設定値の一例、ｔＤＱＳＣＫスペックは出力遅延スペックの一例、起動時のゲートトレーニングは第１ゲートトレーニングの一例、制御装置１０動作時のゲートトレーニングは第２ゲートトレーニングの一例である。
【００５３】
次に、上記メモリインタフェース回路１３の動作（ここでは、ゲートトレーニング動作）を説明する。
まず、起動時のゲートトレーニング動作について図８〜図１１に従って説明する。なお、図９〜図１１において、縦軸及び横軸は、説明を簡潔にするため、適宜拡大、縮小して示している。
【００５４】
今、制御装置１０が起動され、メモリコントローラ１２からリクエスト信号ＲＥＱが入力されると、トレーニング制御回路４０は、アクノリッジ信号ＡＣＫをＨ電位に立ち上げる（図８のステップＳ１）。続く初期設定（ステップＳ２）では、トレーニング制御回路４０から出力される設定信号ＳＳに基づいてサーチ範囲が設定され、シフトレジスタ５３Ａの各ビットｂ０〜ｂ２５５が初期値（＝１）に設定される。このとき、トレーニング制御回路４０は、起動時のゲートトレーニング動作を選択するモード切替信号ＭＣを出力する。
【００５５】
続いて、ゲートトレーニング制御回路４１内の制御回路５２は、トレーニング制御回路４０からのモード切替信号ＭＣに応答して、モードレジスタリードコマンドＭＲＲを発行する（ステップＳ３）。このコマンドＭＲＲに応答して、メモリ装置２０は、リードコマンドＲＥＡＤが入力されたときと同様に、リードレイテンシＲＬ後のクロック信号ＣＫの立ち上がりエッジ（基準エッジＲＥ）を基準にして、ストローブ信号ＤＱＳのタイミングが制御される。
【００５６】
一方、トレーニング回路１５では、内部ストローブ信号ＩＤＱＳがアサートされ（ステップＳ４）、第２シフト値ＳＦＴ２の初期値が設定される（ステップＳ５）。この第２シフト値ＳＦＴ２の初期値は、上記ステップＳ２で設定されたサーチ範囲に応じてシフト値設定回路５１によって設定される。
【００５７】
詳述すると、図９に示すように、サーチ範囲は、そのスタート位置がｔＤＱＳＣＫｍａｘのときのストローブ信号ＤＱＳの先頭立ち上がりエッジよりも時間的に後方側に設定される。なお、サーチ範囲のスタート位置は、ｔＤＱＳＣＫｍａｘのときのストローブ信号ＤＱＳの先頭立ち上がりエッジと同じ位置（タイミング）であってもよい。また、サーチ範囲のエンド位置は、ｔＤＱＳＣＫｍｉｎのときのストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥの開始位置よりも時間的に後方側に設定される。そして、第２シフト値ＳＦＴ２の初期値は、クロック信号ＣＫの基準エッジＲＥからサーチ範囲のスタート位置までの時間に設定される。
【００５８】
そして、第２シフト値ＳＦＴ２の初期値は、制御回路５２及び第３送受信回路４４を通じて遅延制御回路３３に供給される。遅延制御回路３３は、第２シフト値ＳＦＴ２をデコードして第２遅延量Ｄ２を生成し、その第２遅延量Ｄ２を受信回路３２内の第１ＤＬＬ回路３４に出力する。この第２遅延量Ｄ２に応じて第１ＤＬＬ回路３４は、クロック信号ＣＫの基準エッジＲＥで立ち上がるパルス信号ＰＳを上記第２シフト値ＳＦＴ２に相当する時間だけ遅延させ、内部ストローブゲート調整信号ＤＱＳＧＡを生成する。これにより、上記サーチ範囲のスタート位置でＨ電位に立ち上がるゲート調整信号ＤＱＳＧＡが生成される。そして、ゲート調整信号ＤＱＳＧＡが活性化されると、メモリ装置２０から入力されるストローブ信号ＤＱＳが内部ストローブ信号ＩＤＱＳとして遅延制御回路３３を通じてトレーニング回路１５に出力される。
【００５９】
次に、トレーニング回路１５の取込回路５３では、ゲート調整信号ＤＱＳＧＡの立ち上がりエッジに同期したラッチ信号ＬＴの立ち上がりエッジに応答して、内部ストローブ信号ＩＤＱＳの電位をラッチする（図８のステップＳ６）。本例では、このときの内部ストローブ信号ＩＤＱＳの電位がＨ電位であるため、シフトレジスタ５３Ａのビットｂ２５５にＨ電位がラッチされる。このため、上位４８ビットｂ２５５〜ｂ２０８は全て「１」となる。従って、検出信号ＤＳはＬ電位のままとなり、Ｈ電位の検出信号ＤＳは出力されない（ステップＳ７でＮＯ）。
【００６０】
すると、ゲートトレーニング動作が継続され、第２シフト値ＳＦＴ２が微小期間分だけ減少される（ステップＳ８）。これにより、ゲート調整信号ＤＱＳＧＡの立ち上がりエッジが時間的後方から前方側にシフトされる。
【００６１】
続いて、ステップＳ３に戻って、モードレジスタリードコマンドＭＲＲが再び発行されると、メモリ装置２０から上述と同様のタイミングでストローブ信号ＤＱＳがメモリインタフェース回路１３に出力される。そして、上記ステップＳ８で活性化タイミングが変更されたゲート調整信号ＤＱＳＧＡが活性化されると、メモリ装置２０から入力されるストローブ信号ＤＱＳが内部ストローブ信号ＩＤＱＳとして取込回路５３に出力される。続いて、取込回路５３では、ゲート調整信号ＤＱＳＧＡの立ち上がりエッジに同期したラッチ信号ＬＴの立ち上がりエッジに応答して、内部ストローブ信号ＩＤＱＳの電位をラッチする（ステップＳ７）。
【００６２】
このような一連の動作が繰り返し実行されると、ゲート調整信号ＤＱＳＧＡの立ち上がりエッジが時間的後方から前方に向かって徐々にシフトされ、時間的後方から前方に向かうストローブ信号ＤＱＳの電位が順次取り込まれる。
【００６３】
やがて、図１０に示すように、内部ストローブ信号ＩＤＱＳのＨ電位からＬ電位への遷移（先頭立ち上がりエッジ）から第２期間Ｔ２（０．７５ｔＣＫ）分だけＬ電位が取り込まれると、シフトレジスタ５３Ａの上位４８ビットｂ２５５〜ｂ２０８がすべて「０」になる。すると、検出回路５４内のＮＯＲ回路５４Ａの出力信号がＨ電位となり、Ｈ電位の検出信号ＤＳが出力される（図８のステップＳ７でＹＥＳ）。これにより、その時のゲート調整信号ＤＱＳＧＡの活性化タイミングが内部ストローブ信号ＩＤＱＳのプリアンブル期間ｔＲＰＲＥ上にあると判定することができる。
【００６４】
続いて、上記Ｈ電位の検出信号ＤＳ及びモード切替信号ＭＣに応答して、シフト値演算回路５５は、Ｈ電位の検出信号ＤＳが出力されたときの第２シフト値ＳＦＴ２に基づいて、第１シフト値ＳＦＴ１及び基準シフト値ＳＦＴＢを算出する（ステップＳ９）。具体的には、図１１に示すように、シフト値演算回路５５は、ゲート調整信号ＤＱＳＧＡの立ち上がりエッジをストローブ信号ＤＱＳの先頭立ち上がりエッジに一致させるように、Ｈ電位の検出信号ＤＳが出力されたときの第２シフト値ＳＦＴ２に対して第２期間Ｔ２（０．７５ｔＣＫ）分の時間を加算して基準シフト値ＳＦＴＢを算出する。また、シフト値演算回路５５は、ゲート信号ＤＱＳＧの立ち上がりエッジがストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥの中央付近に到来するように、上記基準シフト値ＳＦＴＢに対して第１期間Ｔ１（０．５ｔＣＫ）分を減算して第１シフト値ＳＦＴ１を算出する。なお、リード動作時には、この第１シフト値ＳＦＴ１がインタフェース回路１４に供給され、その第１シフト値ＳＦＴ１によって内部ストローブゲート信号ＤＱＳＧが生成されるため、受信回路３２において、ストローブ信号ＤＱＳを内部ストローブ信号ＩＤＱＳとして正常に取り込むことができる。
【００６５】
以上のように、第１シフト値ＳＦＴ１及び基準シフト値ＳＦＴＢが算出されると、トレーニング制御回路４０は、アクノリッジ信号ＡＣＫをＬ電位に立ち下げ（ステップＳ１０）、ゲートトレーニング動作を終了する。
【００６６】
次に、制御装置１０動作中のゲートトレーニング動作について図１２〜図１５に従って説明する。なお、図１３〜図１５において、縦軸及び横軸は、説明を簡潔にするため、適宜拡大、縮小して示している。
【００６７】
今、制御装置１０動作時においてコア回路１１がメモリ装置２０にアクセスしていない場合に、前回のゲートトレーニングからメモリ装置２０のスペックに応じた時間（例えば、１．６μｓ）が経過すると、メモリコントローラ１２からトレーニング制御回路４０にリクエスト信号ＲＥＱが供給される。すると、トレーニング制御回路４０は、アクノリッジ信号ＡＣＫをＨ電位に立ち上げる（ステップＳ２１）。続く初期設定（ステップＳ２２）では、シフトレジスタ５３Ａの各ビットｂ０〜ｂ２５５が初期値（＝１）に設定され、サーチ範囲がメモリ装置２０のスペックに応じて設定される。具体的には、制御装置１０の動作中にメモリ装置２０のスペックで許容されているストローブ信号ＤＱＳの変動量（変動範囲）に応じて設定される。より具体的には、サーチ範囲は、図１３に示すように、基準シフト値ＳＦＴＢに０．５ｔＣＫ分の時間を加算した位置（スタート位置）から、基準シフト値ＳＦＴＢから０．５ｔＣＫ分の時間を減算した位置（エンド位置）までの範囲である。また、このとき、トレーニング制御回路４０は、制御装置１０動作時のゲートトレーニング動作を選択するモード切替信号ＭＣを出力する。
【００６８】
次いで、ゲートトレーニング制御回路４１内の制御回路５２は、トレーニング制御回路４０からのモード切替信号ＭＣに応答して、モードレジスタリードコマンドＭＲＲを発行する（図１２のステップＳ２３）。このコマンドＭＲＲに応答して、メモリ装置２０は、リードコマンドＲＥＡＤが入力されたときと同様のタイミングでストローブ信号ＤＱＳをメモリインタフェース回路１３に出力する。
【００６９】
一方、トレーニング回路１５では、内部ストローブ信号ＩＤＱＳがアサートされ（ステップＳ２４）、第２シフト値ＳＦＴ２が設定される（ステップＳ２５）。この第２シフト値ＳＦＴ２は、上記ステップＳ２２で設定されたサーチ範囲のスタート位置に応じて、シフト値設定回路５１によって設定される。具体的には、図１３に示すように、第２シフト値ＳＦＴ２は、クロック信号ＣＫの基準エッジＲＥからサーチ範囲のスタート位置までの時間、つまり基準シフト値ＳＦＴＢに０．５ｔＣＫ分の時間を加算した値に設定される。
【００７０】
そして、このように設定された第２シフト値ＳＦＴ２は、制御回路５２及び第３送受信回路４４を通じて遅延制御回路３３に供給される。遅延制御回路３３は、第２シフト値ＳＦＴ２をデコードして第２遅延量Ｄ２を生成し、その第２遅延量Ｄ２を第１ＤＬＬ回路３４に出力する。これにより、上記サーチ範囲のスタート位置でＨ電位に立ち上がるゲート調整信号ＤＱＳＧＡが生成される。そして、このゲート調整信号ＤＱＳＧＡが活性化されると、メモリ装置２０から入力されるストローブ信号ＤＱＳが内部ストローブ信号ＩＤＱＳとして遅延制御回路３３を通じてトレーニング回路１５に出力される。
【００７１】
次に、トレーニング回路１５の取込回路５３は、ゲート調整信号ＤＱＳＧＡの立ち上がりエッジに同期したラッチ信号ＬＴの立ち上がりエッジに応答して、内部ストローブ信号ＩＤＱＳの電位をラッチする（図１２のステップＳ２６）。本例では、このときの内部ストローブ信号ＩＤＱＳの電位がＨ電位であるため、シフトレジスタ５３Ａのビットｂ２５５にＨ電位がラッチされる。このため、ビットｂ２５５の電位が初期値（＝１）から変化せず、ビットｂ２５５とビットｂ２５４にラッチされた電位が同じであるため、Ｈ電位の検出信号ＤＳは出力されない（ステップＳ２７でＮＯ）。
【００７２】
次いで、上記設定されたサーチ範囲内でのゲート調整信号ＤＱＳＧＡのシフト動作が終了していないため（ステップＳ２８でＮＯ）、第２シフト値ＳＦＴ２がサーチ範囲内で微少期間分だけ減少される（ステップＳ２９）。これにより、ゲート調整信号ＤＱＳＧＡの立ち上がりエッジが時間的後方から前方側にシフトされる。
【００７３】
その後、ステップＳ２３及びステップＳ２６〜Ｓ２９の処理が繰り返し実行される。やがて、図１４に示すように、Ｌ電位の内部ストローブ信号ＩＤＱＳがビットｂ２５５にラッチされると、ビットｂ２５５でラッチされた値が１から０に変化する。すなわち、ビットｂ２５４とビットｂ２５５にラッチされた値が異なる状態になる。これにより、内部ストローブ信号ＩＤＱＳ（ストローブ信号ＤＱＳ）のＬ電位からＨ電位への変化タイミング（先頭立ち上がりエッジ）が検出され、その検出に応答してＨ電位の検出信号ＤＳが出力される（ステップＳ２７でＹＥＳ）。なお、上記設定されたサーチ範囲には、ビットｂ２５４とビットｂ２５５にラッチされた電位が異なる電位になるのは、ストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥに続く先頭立ち上がりエッジが発生する部分のみである。
【００７４】
続いて、上記Ｈ電位の検出信号ＤＳ及びモード切替信号ＭＣに応答して、シフト値演算回路５５は、第１シフト値ＳＦＴ１及び基準シフト値ＳＦＴＢを算出する（ステップＳ３０）。具体的には、図１５に示すように、シフト値演算回路５５は、Ｈ電位の検出信号ＤＳが出力されたときの第２シフト値ＳＦＴ２に基づいて、ゲート調整信号ＤＱＳＧＡの活性化タイミングがストローブ信号ＤＱＳの先頭立ち上がりエッジに略一致するように基準シフト値ＳＦＴＢを生成する。また、シフト値演算回路５５は、上記生成した基準シフト値ＳＦＴＢに対して０．５ｔＣＫ分の時間を減算して第１シフト値ＳＦＴ１を算出する。これにより、第１シフト値ＳＦＴ１によって遅延される内部ストローブゲート信号ＤＱＳＧは、その活性化タイミングがストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥの中央付近に到来する。なお、リード動作時には、この内部ストローブゲート信号ＤＱＳＧがアンド回路３５に供給されるため、受信回路３２において、ストローブ信号ＤＱＳを内部ストローブ信号ＩＤＱＳとして正常に取り込むことができる。
【００７５】
以上のように、第１シフト値ＳＦＴ１及び基準シフト値ＳＦＴＢが算出されると、トレーニング制御回路４０は、アクノリッジ信号ＡＣＫをＬ電位に立ち下げ（図１２のステップＳ３１）、ゲートトレーニング動作を終了する。
【００７６】
一方、Ｈ電位の検出信号ＤＳが出力されずに、上記サーチ範囲内でのゲート調整信号ＤＱＳＧＡのシフト動作が終了した場合には（ステップＳ２８でＹＥＳ）、サーチ範囲内にストローブ信号ＤＱＳの先頭立ち上がりエッジが存在しないと判定され、検出回路５４からエラー信号ＥＲＲが出力される（ステップＳ３２）。このエラー信号ＥＲＲに応答してトレーニング制御回路４０からメモリコントローラ１２にエラーフラグＥＦが出力され、メモリコントローラ１２に対してゲートトレーニングのリトライが要求される。すると、メモリコントローラ１２は、上述した起動時のゲートトレーニングを実行させるためのリクエスト信号ＲＥＱをトレーニング回路１５に出力する。このとき、メモリコントローラ１２は、コア回路１１からのリード要求に対して、上記起動時のゲートトレーニングのリトライ後のリード動作完了までコア回路１１にアクノリッジ信号を出力しない。
【００７７】
このように、本実施形態のメモリインタフェース回路１３では、ストローブ信号ＤＱＳのタイミング変動がサーチ範囲を超えた場合に、ゲートトレーニングのリトライが要求され、起動時のゲートトレーニングが実行される。
【００７８】
以上説明した本実施形態によれば、以下の効果を奏することができる。
（１）内部ストローブゲート調整信号ＤＱＳＧＡの活性化タイミングを、ｔＤＱＳＣＫｍａｘのときのストローブ信号ＤＱＳの先頭立ち上がりエッジよりも時間的に後方側のタイミングから時間的前方へ向かってシフトさせるようにした。さらに、ゲート調整信号ＤＱＳＧＡをシフトさせる毎にストローブ信号ＤＱＳの電位を順次取り込み、ストローブ信号ＤＱＳが第２期間Ｔ２連続してＬ電位となった場合に、ストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥを検出したことを示す検出信号ＤＳを出力するようにした。これにより、プリアンブル期間前に存在するＨｉ−Ｚ状態を取り込む前にＨ電位の検出信号ＤＳが出力されることになるため、ストローブ信号ＤＱＳのＨｉ−Ｚ状態がインタフェース回路１４内部に取り込まれることが抑制される。
【００７９】
ここで、Ｈ電位の検出信号ＤＳが出力されたタイミング位置は、ストローブ信号ＤＱＳの先頭立ち上がりエッジから第２期間Ｔ２だけ時間的に前方にシフトされた位置になる。このため、上記タイミング位置に基づいて、内部ストローブゲート信号ＤＱＳＧの活性化タイミングを、ストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥの中央付近に到来するように容易に調整することができる。
【００８０】
（２）内部ストローブゲート信号ＤＱＳＧに対して第１期間Ｔ１（０．５ｔＣＫ）分遅延した相対関係を有する内部ストローブゲート調整信号ＤＱＳＧＡを生成するようにした。また、ゲートトレーニング終了時に、内部ストローブゲート調整信号ＤＱＳＧＡの活性化タイミングを、ストローブ信号ＤＱＳの先頭立ち上がりエッジに一致させるよう調整した。これにより、内部ストローブゲート信号ＤＱＳＧの活性化タイミングが、ストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥの中央付近に到来するように制御される。
【００８１】
（３）さらに、制御装置１０動作中のゲートトレーニングでは、前回のゲートトレーニング動作でタイミング調整されたゲート調整信号ＤＱＳＧＡの活性化タイミングを基準にして、メモリ装置２０のスペックに応じた範囲（±０．５ｔＣＫ）をサーチ範囲に設定するようにした。メモリ装置２０のスペックから制御装置１０動作中のストローブ信号ＤＱＳのタイミング変動はクロック信号ＣＫの１サイクル以内であるため、動作中のゲートトレーニングは、クロック信号ＣＫの約１サイクルで実行することができる。このように、前回のゲートトレーニング動作でストローブ信号ＤＱＳの立ち上がりエッジと一致するようにタイミング調整されたゲート調整信号ＤＱＳＧＡの活性化タイミングを基準にすることで、制御装置１０動作中のゲートトレーニングを短時間で実行することができる。
【００８２】
（４）制御装置１０動作中のゲートトレーニングにおいて、サーチ範囲内でストローブ信号ＤＱＳの先頭立ち上がりエッジを検出できなかった場合に、メモリコントローラ１２にエラー通知するようにした。これにより、メモリコントローラ１２に対して起動時のゲートトレーニング動作の再試行を要求することができる。
【００８３】
（他の実施形態）
なお、上記実施形態は、これを適宜変更した以下の態様にて実施することもできる。
・上記実施形態では、内部ストローブゲート信号ＤＱＳＧに対して第１期間Ｔ１（０．５ｔＣＫ）分遅延した相対関係を有する内部ストローブゲート調整信号ＤＱＳＧＡを生成するようにしたが、ゲート信号ＤＱＳＧに対するゲート調整信号ＤＱＳＧＡの遅延量（第１期間Ｔ１）は特に制限されない。例えば上記第１期間Ｔ１をストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥよりも短い時間に設定すれば、ゲート調整信号ＤＱＳＧＡの活性化タイミングをストローブ信号ＤＱＳの先頭立ち上がりエッジに一致させたときに、ゲート信号ＤＱＳＧの活性化タイミングをプリアンブル期間ｔＲＰＲＥ上に設定することができる。
【００８４】
・上記実施形態では、ストローブ信号ＤＱＳのプリアンブル期間ｔＲＰＲＥを検出する際のＬ電位期間（第２期間Ｔ２）を０．７５ｔＣＫとした。これに限らず、ストローブ信号ＤＱＳのＬ電位期間（ここでは、０．５ｔＣＫ）よりも長い期間だけＬ電位が連続することを検出できればプリアンブル期間ｔＲＰＲＥを検出することができる。このため、上記第２期間Ｔ２を、プリアンブル期間ｔＲＰＲＥ（約０．９ｔＣＫ）を超えない範囲で、少なくとも０．５ｔＣＫを超える期間に設定するようにしてもよい。
【００８５】
・上記実施形態のゲートトレーニングでは、内部ストローブゲート調整信号ＤＱＳＧＡの活性化タイミングのみでストローブ信号ＤＱＳを内部ストローブ信号ＩＤＱＳとしてトレーニング回路１５に出力するようにした。これに限らず、内部ストローブゲート信号ＤＱＳＧの活性化タイミングと内部ストローブゲート調整信号ＤＱＳＧＡの活性化タイミングの双方でストローブ信号ＤＱＳを内部ストローブ信号ＩＤＱＳとしてトレーニング回路１５に出力するようにしてもよい。この場合には、内部ストローブゲート信号ＤＱＳＧの活性化タイミングで取り込まれた内部ストローブ信号ＩＤＱＳの電位と、内部ストローブゲート調整信号ＤＱＳＧＡの活性化タイミングで取り込まれた内部ストローブ信号ＩＤＱＳの電位との組み合わせによって、プリアンブル期間ｔＲＰＲＥをより確実に検出することができる。なお、この場合には、内部ストローブゲート信号ＤＱＳＧの活性化タイミングで取り込まれた内部ストローブ信号ＩＤＱＳの電位に基づいてプリアンブル期間ｔＲＰＲＥを検出し、その検出によりゲートトレーニング動作を終了する。
【００８６】
・上記実施形態の制御装置１０動作中のゲートトレーニングでは、サーチ範囲のスタート位置を基準シフト値ＳＦＴＢに対して０．５ｔＣＫ分の時間を加算した位置に設定するようにした。これに限らず、例えばサーチ範囲のスタート位置を基準シフト値ＳＦＴＢに対して０．５ｔＣＫ分の時間を減算した位置に設定するようにしてもよい。この場合には、ゲート調整信号ＤＱＳＧＡの活性化タイミングをスタート位置から時間的前方から後方に向かってシフトさせる。
【００８７】
・上記実施形態における受信回路３２の内部構成は、図５に示した回路に限定されない。例えば上記受信回路３２では、ゲート信号ＤＱＳＧ及びゲート調整信号ＤＱＳＧＡの双方を第１ＤＬＬ回路３４で生成するようにしたが、ゲート信号ＤＱＳＧとゲート調整信号ＤＱＳＧＡを別の回路で生成するようにしてもよい。
【００８８】
・上記実施形態では、メモリ装置２０をＬＰＤＤＲ２−ＳＤＲＡＭに具体化したが、その他のＤＬＬ回路が非搭載のメモリに具体化してもよい。また、メモリ装置２０を、ＤＬＬ回路をオフにするＤＬＬオフモードを有するメモリ（例えば、ＤＤＲ３−ＳＤＲＡＭ）に具体化してもよい。
【符号の説明】
【００８９】
１０  制御装置
１２  メモリコントローラ
１３  メモリインタフェース回路
１４  インタフェース回路
１５  トレーニング回路
２０  メモリ
３２  受信回路
３３  遅延制御回路
３４  ＤＬＬ回路
４０  トレーニング制御回路
４１  ゲートトレーニング制御回路
５１  シフト値設定回路
５２  制御回路
５３  取込回路
５４  検出回路
５５  シフト値演算回路
ＣＫ  クロック信号
ＤＱ  データ列
ＤＱＳ  ストローブ信号
ＤＱＳＧ  内部ストローブゲート信号
ＤＱＳＧＡ  内部ストローブゲート調整信号
ＩＤＱＳ  内部ストローブ信号
ＳＦＴ１  第１シフト値
ＳＦＴ２  第２シフト値
ＳＦＴＢ  基準シフト値
ＤＳ  検出信号
ＥＲＲ  エラー信号
【図１】
0005733126.tif 000002
【図２】
0005733126.tif 000003
【図３】
0005733126.tif 000004
【図４】
0005733126.tif 000005
【図５】
0005733126.tif 000006
【図６】
0005733126.tif 000007
【図７】
0005733126.tif 000008
【図８】
0005733126.tif 000009
【図９】
0005733126.tif 000010
【図１０】
0005733126.tif 000011
【図１１】
0005733126.tif 000012
【図１２】
0005733126.tif 000013
【図１３】
0005733126.tif 000014
【図１４】
0005733126.tif 000015
【図１５】
0005733126.tif 000016
【図１６】
0005733126.tif 000017
【図１７】
0005733126.tif 000018