(57)【特許請求の範囲】
【請求項１】
ストローブ信号に基づいて第１のイネーブル信号を生成し、リード制御信号と転送設定値とに応じたポインタ制御信号とコアクロック信号に基づいて第２のイネーブル信号を生成する制御信号生成回路と、
前記第１のイネーブル信号と前記ストローブ信号に基づいて受信データをラッチし、ラッチしたデータを前記第２のイネーブル信号と前記コアクロック信号に基づいて出力する第１の非同期転送回路と、
前記第１のイネーブル信号の変化に応じて論理を反転した判定用パターンデータを生成するパターン生成回路と、
前記第１のイネーブル信号と前記ストローブ信号に基づいて前記判定用パターンデータをラッチし、ラッチしたデータを前記第２のイネーブル信号と前記コアクロック信号に基づいて出力する第２の非同期転送回路と、
前記第２の非同期転送回路の出力データに基づいて、前記ポインタ制御信号の生成タイミングを判定する判定回路と、
前記判定回路の判定結果に基づいて前記転送設定値を算出する設定値算出回路と、
を有することを特徴とする受信回路。
【請求項２】
レイテンシ設定値に基づいて前記第１の非同期転送回路の出力信号を遅延してリードデータを出力するレイテンシ補償回路を有し、
前記設定値算出回路は、前記転送設定値に基づいて前記レイテンシ設定値を算出すること、
を特徴とする請求項１に記載の受信回路。
【請求項３】
前記判定回路は、前記第２のイネーブル信号に基づいて期待値データを生成し、前記期待値データと前記第２の非同期転送回路の出力データとを比較して前記ポインタ制御信号の生成タイミングを判定すること、
を特徴とする請求項１または２に記載の受信回路。
【請求項４】
前記制御信号生成回路が生成する前記第１のイネーブル信号は、
前記ストローブ信号に基づいて生成した正相イネーブル信号と、
前記ストローブ信号を反転した反転ストローブ信号に基づいて生成した逆相イネーブル信号を含み、
前記パターン生成回路は、前記正相イネーブル信号に基づいて第１の判定用パターンデータを生成し、前記逆相イネーブル信号に基づいて第２の判定用パターンデータを生成し、
前記第２の非同期転送回路は、前記第１の判定用パターンデータと前記第２の判定用パターンデータをそれぞれ転送して第１の判定用データと第２の判定用データを出力し、
前記判定回路は、前記第１の判定用データと前記第２の判定用データとを、前記第２のイネーブル信号に基づいて生成した期待値データとそれぞれ比較して第１の判定信号と第２の判定信号を出力し、
前記設定値算出回路は、前記第１の判定信号と前記第２の判定信号とに基づいて、前記転送設定値を算出すること、
を特徴とする請求項１〜３のいずれか１項に記載の受信回路。
【請求項５】
前記制御信号生成回路は、前記転送設定値に基づいて、前記第２のイネーブル信号より早いタイミングのファーストイネーブル信号と、前記第２のイネーブル信号より遅いタイミングのスローイネーブル信号とを生成し、
前記第１の非同期転送回路は、前記第１のイネーブル信号により前記受信データをラッチする第１ラッチ回路と、前記第１ラッチ回路の出力信号を前記第２のイネーブル信号によりラッチし出力する第２ラッチ回路と、を含み、
前記第２の非同期転送回路は、前記第１のイネーブル信号により前記判定用パターンデータをラッチする第３のラッチ回路と、前記ファーストイネーブル信号により前記第３のラッチ回路の出力信号をラッチする第４のラッチ回路と、前記スローイネーブル信号により前記第３のラッチ回路の出力信号をラッチする第５のラッチ回路と、を含み、
前記判定回路は、前記ファーストイネーブル信号に基づいて生成した期待値データと前記第４のラッチ回路の出力信号とを比較して前記ファーストイネーブル信号のタイミングを判定する第１の判定回路と、前記スローイネーブル信号に基づいて生成した期待値データと前記第５のラッチ回路の出力信号とを比較して前記スローイネーブル信号のタイミングを判定する第２の判定回路と、を含み、
前記設定値算出回路は、前記第１の判定回路の判定結果と前記第２の判定回路の判定結果に基づいて前記転送設定値を算出すること、
を特徴とする請求項１〜４のいずれか１項に記載の受信回路。
【請求項６】
ストローブ信号に基づいて受信データを受信し、コアクロック信号に基づいて前記受信データに応じたリードデータを出力する受信回路において、前記コアクロック信号によるドメインチェンジのタイミングを調整する受信回路のタイミング調整方法であって、
前記ストローブ信号に基づいて第１のイネーブル信号を生成し、リード制御信号と転送設定値とに応じたポインタ制御信号とコアクロック信号に基づいて第２のイネーブル信号を生成し、
前記第１のイネーブル信号の変化に応じて論理を反転した判定用パターンデータを生成し、
前記第１のイネーブル信号と前記ストローブ信号に基づいて前記判定用パターンデータをラッチし、ラッチしたデータを前記第２のイネーブル信号と前記コアクロック信号に基づいてラッチして判定用データを生成し、
前記判定用データに基づいて前記ポインタ制御信号の生成タイミングを判定し、前記生成タイミングの判定結果に基づいて前記転送設定値を算出すること、
を特徴とする受信回路のタイミング調整方法。
【請求項７】
メモリ装置に接続される半導体装置であって、
リード制御信号を出力してメモリ装置のアクセスを制御するメモリコントローラと、
前記メモリ装置の出力データを、前記メモリ装置から出力されるストローブ信号を遅延した遅延ストローブ信号に基づいて受信し、受信した前記出力データに基づいて前記メモリコントローラにリードデータを出力する受信回路と、
を有し、
前記受信回路は、
ストローブ信号に基づいて第１のイネーブル信号を生成し、リード制御信号と転送設定値とに応じたポインタ制御信号とコアクロック信号に基づいて第２のイネーブル信号を生成する制御信号生成回路と、
前記第１のイネーブル信号と前記ストローブ信号に基づいて受信データをラッチし、ラッチしたデータを前記第２のイネーブル信号と前記コアクロック信号に基づいて出力する第１の非同期転送回路と、
前記第１のイネーブル信号の変化に応じて論理を反転した判定用パターンデータを生成するパターン生成回路と、
前記第１のイネーブル信号と前記ストローブ信号に基づいて前記判定用パターンデータをラッチし、ラッチしたデータを前記第２のイネーブル信号と前記コアクロック信号に基づいて出力する第２の非同期転送回路と、
前記第２の非同期転送回路の出力データに基づいて、前記ポインタ制御信号の生成タイミングを判定する判定回路と、
前記判定回路の判定結果に基づいて前記転送設定値を算出する設定値算出回路と、
を有する、
ことを特徴とする半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
受信回路、受信回路のタイミング調整方法、半導体装置に関する。
【背景技術】
【０００２】
従来、半導体記憶装置、例えばダイナミックランダムアクセスメモリ（ＤＲＡＭ：Dynamic Random Access Memory）は、システム装置のデータを記憶するために用いられる。また、クロック信号やストローブ信号の立ち上がりと立ち下がりの双方でデータを入出力するダブルデータレート（ＤＤＲ：Double Data Rate）方式の半導体記憶装置は、システム装置の動作速度の高速化に対応する。
【０００３】
システム装置は、メモリにコマンドを出力する。メモリは、コマンドに基づいて動作する。たとえば、システム装置は、メモリにリードコマンドとリードアドレスを出力する。メモリは、リードコマンドに基づいて、リードアドレスのデータをメモリセルアレイから読み出す。そして、メモリは、データストローブ信号を出力し、データストローブ信号に同期してリードデータを出力する。システム装置内の受信回路は、データストローブ信号を受信し、タイミングを調整したデータストローブ信号に基づいてリードデータを取り込む。
【０００４】
リードデータとデータストローブ信号の相対的なタイミングのずれは、リードデータに誤りを生じさせる要因である。このため、システム装置は、リードデータに対してデータストローブ信号のタイミングを調整する回路を含む（たとえば、特許文献１〜３参照）。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２０１２−２７７３４号公報
【特許文献２】特開２０１２−５８９９７号公報
【特許文献３】特開２０１３−５８２０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
システム装置は、上記のメモリに対してデータの入出力を行うコア回路（たとえばＣＰＵ）、上記のメモリを制御する制御回路（メモリコントローラ：ＭＣ）を含む。これらの回路は、システム装置の動作のための内部クロック信号（たとえばシステムクロック信号ＳＣＫ）に基づいて、データの授受を行う。したがって、受信回路は、データストローブ信号にて受信したリードデータを、内部クロック信号に基づいて出力する。
【０００７】
内部クロック信号とデータストローブ信号との間の相対的なタイミングは、システム装置の動作電圧の変動や温度変化（ＶＴドリフト）等の種々の要因により変動する。そして、内部クロック信号とデータストローブ信号のタイミングのずれは、受信回路が内部クロック信号に基づいて出力するリードデータに誤りを生じさせる。
【課題を解決するための手段】
【０００８】
本発明の一観点によれば、ストローブ信号に基づいて第１のイネーブル信号を生成し、リード制御信号と転送設定値とに応じたポインタ制御信号とコアクロック信号に基づいて第２のイネーブル信号を生成する制御信号生成回路と、前記第１のイネーブル信号と前記ストローブ信号に基づいて受信データをラッチし、ラッチしたデータを前記第２のイネーブル信号と前記コアクロック信号に基づいて出力する第１の非同期転送回路と、前記第１のイネーブル信号の変化に応じて論理を反転した判定用パターンデータを生成するパターン生成回路と、前記第１のイネーブル信号と前記ストローブ信号に基づいて前記判定用パターンデータをラッチし、ラッチしたデータを前記第２のイネーブル信号と前記コアクロック信号に基づいて出力する第２の非同期転送回路と、前記第２の非同期転送回路の出力データに基づいて、前記ポインタ制御信号の生成タイミングを判定する判定回路と、前記判定回路の判定結果に基づいて前記転送設定値を算出する設定値算出回路と、を有する。
【発明の効果】
【０００９】
本発明の一観点によれば、リードデータにおける誤りを低減することができる。
【図面の簡単な説明】
【００１０】
【図１】第一実施形態のシステムを示すブロック回路図。
【図２】受信回路の一部ブロック回路図。
【図３】（ａ）（ｂ）はイネーブル信号生成回路（カウンタ）の回路図。
【図４】イネーブル信号生成回路（ポインタ制御回路，カウンタ）の回路図。
【図５】非同期転送回路を示す回路図。
【図６】パターンジェネレータと非同期転送回路を示す回路図。
【図７】判定回路，設定値算出回路，レイテンシ補償回路を示す回路図。
【図８】設定値算出回路の動作を示すフローチャート。
【図９】非同期転送回路の動作を示すタイミング図。
【図１０】転送設定値の設定を示すタイミング図。
【図１１】パターンジェネレータ、非同期転送回路、判定回路の動作を示すタイミング図。
【図１２】パターンジェネレータ、非同期転送回路、判定回路の動作を示すタイミング図。
【図１３】パターンジェネレータ、非同期転送回路、判定回路の動作を示すタイミング図。
【図１４】受信回路の動作を示すタイミング図。
【図１５】比較例のシステムを示すブロック回路図。
【図１６】データのばらつきに対するウインドウと転送設定値を示すタイミング図。
【図１７】高レート時のウインドウと転送設定値を示すタイミング図。
【図１８】第二実施形態の受信回路の一部ブロック回路図。
【図１９】設定値算出回路の動作を示すフローチャート。
【図２０】第二実施形態の受信回路の動作を示すタイミング図。
【発明を実施するための形態】
【００１１】
（第一実施形態）
以下、第一実施形態を説明する。
図１に示すように、このシステム１０のシステム装置１１は、メモリ装置１２に接続されている。システム装置１１は、たとえば１つのチップに中央処理装置（Central Processing Unit:ＣＰＵ）などのコア回路と複数の周辺回路を含む半導体集積回路装置（ＬＳＩ、例えばＳｏＣ（System on Chip））である。メモリ装置１２は、同期式の半導体記憶装置、例えばＤＤＲ３−ＳＤＲＡＭ（Double Data Rate 3 Synchronous Dynamic Random Access Memory）である。
【００１２】
システム装置１１のメモリコントローラ２１は、コアクロック信号ＣＫｃに基づいて動作する。メモリコントローラ２１は、コア回路からの要求に基づいて、インタフェース回路２２を介して、メモリ装置１２をアクセスする。たとえば、メモリコントローラ２１は、コア回路からのリード要求に基づいて、リード命令ＲＲＱを出力する。また、メモリコントローラ２１は、リード要求に基づいて、リード制御信号ＲＣＮＴを出力する。また、メモリコントローラ２１は、インタフェース回路２２に対する転送初期値ＦＳＯを出力する。
【００１３】
インタフェース回路２２の送信回路２３は、コアクロック信号ＣＫｃに基づいて、クロック信号ＣＫＴを出力する。また、送信回路２３は、メモリコントローラ２１から出力されるリード命令ＲＲＱに基づいて、リードコマンドＲＣＭＤを出力する。出力バッファ回路２５ａは、クロック信号ＣＫＴに基づいて、クロック信号ＣＫを出力する。このクロック信号ＣＫは、伝送路を介してメモリ装置１２に供給される。出力バッファ回路２５ｂは、リードコマンドＲＣＭＤに基づいてコマンドＣＭＤを出力する。コマンドＣＭＤは、伝送路を介してメモリ装置１２に供給される。
【００１４】
メモリ装置１２は、クロック信号ＣＫに基づいて、コマンドＣＭＤを受信する。また、図示しないが、メモリ装置１２は、クロック信号ＣＫに基づいてリードアドレスを受信する。メモリ装置１２は、コマンドＣＭＤに基づいてリード動作を行う。メモリ装置１２は、リード動作において、リードアドレスのメモリセルからバースト長（Burst Length：ＢＬ）に応じた数のデータを読み出す。バースト長は、１つのリードコマンドに応じてメモリ装置１２が連続的に出力するデータの数である。バースト長は、たとえば、メモリコントローラ２１により設定される。本実施形態では、たとえば、バースト長を「８」に設定した場合を説明する。そして、メモリ装置１２は、データＤＱとデータストローブ信号ＤＱＳを出力する。データＤＱとデータストローブ信号ＤＱＳは、それぞれ伝送路を介してシステム装置１１に供給される。
【００１５】
入力バッファ回路２７ａは、データストローブ信号ＤＱＳに基づいて受信ストローブ信号ＲＤＱＳを出力する。入力バッファ回路２７ｂは、データＤＱに基づいて受信データＲＤＱを出力する。
【００１６】
受信回路２４は、データＤＱについて、受信ストローブ信号ＲＤＱＳからコアクロック信号ＣＫｃへ、クロックの乗せ換えを行う。そして、受信回路２４は、受信ストローブ信号ＲＤＱＳからコアクロック信号ＣＫｃへ乗せ換えを行うタイミング（設定値）を、転送初期値ＦＳＯに基づいて設定する。また、受信回路２４は、その乗せ換えタイミングを、設定したタイミングに対する受信ストローブ信号ＲＤＱＳの遅れや進みに基づいて、タイミング（設定値）を調整する。
【００１７】
インタフェース回路２２がメモリコントローラ２１からリード命令ＲＲＱを入力してから、メモリコントローラ２１にリードデータＲＤを出力するまでの時間は、リードレイテンシ（Read Latency：ＲＬ）である。リードレイテンシは、たとえばコアクロック信号ＣＫｃのサイクル数にて表される。インタフェース回路２２がリードコマンドを出力してから、そのリードコマンドに対するデータＤＱを受信するまでの時間をラウンド・トリップ・タイム（Round Trip Time：ＲＴＴ）という。
【００１８】
ラウンド・トリップ・タイムは、システム１０の環境温度の変化やシステム１０が動作する電源電圧の変化（ＶＴドリフト）によって変化する。これらの変化は、乗せ換えタイミング（設定値）と受信ストローブ信号ＲＤＱＳとの間の相対的なタイミングにずれを生じさせる。このタイミングのずれは、高い周波数のクロック信号、ストローブ信号による高速なデータ転送の妨げとなる。受信回路２４は、受信データＲＤＱを受け取り可能な有効ウインドウに対して、コアクロック信号ＣＫｃに基づいて受信データＲＤＱを受け取るタイミングを、受信したデータストローブ信号ＤＱＳに基づいて調整する。
【００１９】
コアクロック信号ＣＫｃに基づいて動作するメモリコントローラ２１は、リード要求を出力し、設定されたレイテンシのサイクル後にリードデータＲＤを受け取る。上記のように、コアクロック信号ＣＫｃにより受信データＲＤＱを受け取るタイミングを調整すると、受け取った受信データのレイテンシとメモリコントローラ２１のレイテンシとの間にずれが生じる。このため、受信回路２４は、メモリコントローラ２１のレイテンシに応じてリードデータＲＤを出力する、つまり、受信回路２４は、メモリコントローラ２１に対して、レイテンシを補償したリードデータＲＤを出力する。
【００２０】
受信回路２４の遅延同期ループ（Delay Locked Loop：ＤＬＬ）回路（「ＤＬＬ」と表記、以下ＤＬＬ回路）３１ａには、リード制御信号ＲＣＮＴとコアクロック信号ＣＫｃが供給される。また、ＤＬＬ回路３１ａには、遅延値がたとえばメモリコントローラ２１により設定される。ＤＬＬ回路３１ａは、コアクロック信号ＣＫｃに基づいて、遅延値に応じてリード制御信号ＲＣＮＴを遅延したゲート信号ＳＧ０を出力する。メモリコントローラ２１は、メモリ装置１２のリードレイテンシＲＬに基づいて、メモリ装置１２から出力されるデータＤＱが到達するタイミングに応じた期間、Ｈレベルのリード制御信号ＲＣＮＴを出力する。
【００２１】
このＤＬＬ回路３１ａにおける遅延値は、接続されたメモリ装置１２に応じて設定される。たとえば、メモリコントローラ２１は、所定のタイミングにおいてトレーニング処理を実行し、その結果に応じた遅延値をＤＬＬ回路３１ａに設定する。トレーニング処理は、データＤＱを受信回路２４で取り込むタイミングを較正（調整）する処理である。メモリコントローラ２１は、所定のタイミング、たとえば、システム装置１１の起動時や、システム装置１１の動作中においてメモリ装置１２をアクセスしない期間に、トレーニング処理を実行する。このトレーニング処理により、不要な期間におけるレベルによる誤ったデータの取り込みを防止する。
【００２２】
ループバック入出力回路（「ＬＢＩＯ」と表記）２６は、バッファ回路２６ａ，２６ｂを含む。バッファ回路２６ａは、上記の出力バッファ回路２５ａ，２５ｂと同じ電気的特性を持つ。バッファ回路２６ａは、入力信号に応答して出力信号を出力する。バッファ回路２６ａにおいて、入力信号に対する出力信号の遅延時間（遅延時間特性）は、出力バッファ回路２５ａ，２５ｂの遅延時間特性と同じである。バッファ回路２６ｂは、上記の入力バッファ回路２７ａ，２７ｂと同じ電気的特性（遅延時間特性）を持つ。ループバック入出力回路２６は、ゲート信号ＳＧ０を遅延した遅延ゲート信号ＳＧ１を出力する。
【００２３】
ゲート回路３２は、遅延ゲート信号に応じた期間、受信ストローブ信号ＲＤＱＳを出力する。たとえば、ゲート回路３２は論理積演算回路（ＡＮＤ回路）であり、遅延ゲート信号ＳＧ１と受信ストローブ信号ＲＤＱＳとを論理積演算した結果に応じた内部ストローブ信号ＩＤＱＳを出力する。
【００２４】
遅延同期ループ回路（「ＤＬＬ」と表記、以下ＤＬＬ回路）３１ｂには、遅延値が設定される。ＤＬＬ回路３１ｂは、コアクロック信号ＣＫｃに基づいて、遅延値に応じて内部ストローブ信号ＩＤＱＳを遅延した遅延ストローブ信号ＤＱＳｄを出力する。このＤＬＬ回路３１ｂにおける遅延値は、遅延ストローブ信号ＤＱＳｄ、つまりデータストローブ信号ＤＱＳの周期に応じて設定されている。たとえば、ＤＬＬ回路３１ｂの遅延値は、内部ストローブ信号ＩＤＱＳの周期の１／４（位相では９０度）を基準値とし、上記のトレーニング処理により設定される。
【００２５】
非同期転送回路３３には、受信データＲＤＱが供給される。また、非同期転送回路３３には、遅延ストローブ信号ＤＱＳｄとコアクロック信号ＣＫｃが供給される。また、非同期転送回路３３には、制御信号生成回路３５からイネーブル信号ＥＮ１，ＥＮ２が供給される。
【００２６】
非同期転送回路３３は、非同期式のＦＩＦＯ（First In First Out）回路である。非同期転送回路３３は、イネーブル信号ＥＮ１に基づいて入力機能を有効とし、遅延ストローブ信号ＤＱＳｄに基づいて受信データＲＤＱをラッチする。非同期転送回路３３は、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジと立ち下がりエッジとに基づいて、バースト長に応じた複数の受信データＲＤＱをラッチする。そして、非同期転送回路３３は、イネーブル信号ＥＮ２に基づいて出力機能を有効とし、ラッチしたデータに応じた出力データＣＤをコアクロック信号ＣＫｃに基づいて出力する。
【００２７】
レイテンシ補償回路３４は、設定した遅延量に応じて非同期転送回路３３の出力データＣＤを遅延してリードデータＲＤを出力する。レイテンシ補償回路３４は、レイテンシ設定値ＦＳＬに基づいて、出力データＣＤに対するリードデータＲＤの遅延量を設定する。
【００２８】
制御信号生成回路３５には、後述する設定値算出回路３９から転送設定値ＦＳＰが供給される。また、制御信号生成回路３５には、コアクロック信号ＣＫｃ、遅延ストローブ信号ＤＱＳｄ、リード制御信号ＲＣＮＴが供給される。図１に示すメモリコントローラ２１は、トレーニング処理により設定した転送初期値ＦＳＯを出力する。設定値算出回路３９は、転送初期値ＦＳＯに基づいて算出した転送設定値ＦＳＰを出力する。
【００２９】
制御信号生成回路３５は、遅延ストローブ信号ＤＱＳｄに基づいて第１のイネーブル信号ＥＮ１を生成する。制御信号生成回路３５は、転送設定値ＦＳＰ、リード制御信号ＲＣＮＴ、コアクロック信号ＣＫｃに基づいて、第２のイネーブル信号ＥＮ２を生成する。制御信号生成回路３５は、転送設定値ＦＳＰとコアクロック信号ＣＫｃに基づいて、リード制御信号ＲＣＮＴを遅延した信号を生成する。そして、制御信号生成回路３５は、その遅延信号とコアクロック信号ＣＫｃに基づいて第２のイネーブル信号ＥＮ２を生成する。
【００３０】
パターン信号生成回路（パターンジェネレータ：ＰＧ）３６は、イネーブル信号ＥＮ１に基づいて、判定用パターンデータＴＤを出力する。また、パターン信号生成回路３６は、イネーブル信号ＥＮ１の変化に応じて判定用パターンデータＴＤの論理値を反転する。たとえば、パターン信号生成回路３６は、イネーブル信号ＥＮ１を入力する毎（イネーブル信号ＥＮ１の立ち上がりエッジ毎）に、判定用パターンデータＴＤの論理値を反転する。したがって、判定用パターンデータＴＤの論理値は、イネーブル信号ＥＮ１に応じて、「０」→「１」→「０」へと変化する。
【００３１】
上記したように、制御信号生成回路３５は、遅延ストローブ信号ＤＱＳｄをカウントしてイネーブル信号ＥＮ１を生成する。メモリ装置１２は、バースト長のデータＤＱを、データストローブ信号ＤＱＳの立ち上がりエッジと立ち下がりエッジのタイミングで出力する。受信回路２４のＤＬＬ回路３１ｂは、受信ストローブ信号ＲＤＱＳを遅延して遅延ストローブ信号ＤＱＳｄを生成する。したがって、パターン信号生成回路３６は、バースト長に応じたパルス数の遅延ストローブ信号ＤＱＳｄ毎に、イネーブル信号ＥＮ１の論理値を反転する。
【００３２】
非同期転送回路３７は、非同期転送回路３３と同様である。つまり、非同期転送回路３７には、遅延ストローブ信号ＤＱＳｄとコアクロック信号ＣＫｃが供給される。また、非同期転送回路３７には、イネーブル信号ＥＮ１，ＥＮ２が供給される。
【００３３】
非同期転送回路３７は、非同期式のＦＩＦＯ（First In First Out）回路である。非同期転送回路３７は、イネーブル信号ＥＮ１に基づいて入力機能を有効とし、遅延ストローブ信号ＤＱＳｄに基づいて判定用パターンデータＴＤをラッチする。そして、非同期転送回路３７は、イネーブル信号ＥＮ２に基づいて出力機能を有効とし、ラッチしたデータに応じた判定用データＣＴをコアクロック信号ＣＫｃに基づいて出力する。
【００３４】
判定回路３８には、判定用データＣＴが供給される。また、判定回路３８には、コアクロック信号ＣＫｃとイネーブル信号ＥＮ２が供給される。
判定回路３８は、イネーブル信号ＥＮ２に基づいて期待値データを生成する。また、判定回路３８は、イネーブル信号ＥＮ２を入力する毎に、期待値データの論理値を反転する。つまり、判定回路３８は、パターン信号生成回路３６における判定用データＣＴと同様に、イネーブル信号ＥＮ２を入力する毎に、期待値データの論理値を、「０」→「１」→「０」へと変更する。判定回路３８は、判定用データＣＴを期待値データと比較し、比較結果に応じた判定信号ＥＸを出力する。
【００３５】
設定値算出回路３９には、メモリコントローラ２１から転送初期値ＦＳＯが供給される。
設定値算出回路３９は、判定回路３８からの判定信号ＥＸに基づいて転送設定値ＦＳＰを算出し、その転送設定値ＦＳＰを、制御信号生成回路３５に出力する。また、設定値算出回路３９は、判定回路３８からの判定信号ＥＸに基づいてレイテンシ設定値ＦＳＬを算出し、そのレイテンシ設定値ＦＳＬをレイテンシ補償回路３４に出力する。
【００３６】
図２に示すように、制御信号生成回路３５は、ＢＬカウンタ４１，４２、ポインタ制御回路４３、ＢＬカウンタ４４を有している。
ＢＬカウンタ４１，４２は、４進のワンホット・ステート・カウンタ（one-hot state counter）である。ＢＬカウンタ４１は、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジ（ポジティブエッジ）をカウントし、イネーブル信号ＣＰ０〜ＣＰ３を生成する。ＢＬカウンタ４２は、遅延ストローブ信号ＤＱＳｄの立ち下がりエッジ（ネガティブエッジ）をカウントし、イネーブル信号ＣＮ０〜ＣＮ３を生成する。
【００３７】
図３（ａ）に示すように、ＢＬカウンタ４１は、４つのフリップフロップ回路（ＦＦ回路）５１ａ〜５１ｄを有している。ＦＦ回路５１ａ〜５１ｄは、たとえばＤ型フリップフロップ回路である。各ＦＦ回路５１ａ〜５１ｄのクロック端子には遅延ストローブ信号ＤＱＳｄが供給される。ＦＦ回路５１ａ〜５１ｃの出力端子（Ｑ）はそれぞれＦＦ回路５１ｂ〜５１ｄの入力端子（データ端子Ｄ）に接続されている。ＦＦ回路５１ｄの出力端子（Ｑ）はＦＦ回路５１ａの入力端子（データ端子Ｄ）に接続されている。ＦＦ回路５１ａは、リセット時にたとえばＬレベルの信号がプリセット端子に供給され、Ｈレベルのイネーブル信号ＣＰ０を出力する。ＦＦ回路５１ｂ〜５１ｄはリセット時にたとえばＬレベルの信号がリセット端子に供給され、Ｌレベルのイネーブル信号ＣＰ１〜ＣＰ３を出力する。ＦＦ回路５１ａ〜５１ｄは、Ｈレベルの遅延ストローブ信号ＤＱＳｄに基づいてデータ端子のレベルと等しいレベルのイネーブル信号ＣＰ０〜ＣＰ３を出力する。これらのイネーブル信号ＣＰ０〜ＣＰ３は図１に示すイネーブル信号ＥＮ１に含まれる。
【００３８】
図３（ｂ）に示すように、ＢＬカウンタ４２は、４つのフリップフロップ回路（ＦＦ回路）５２ａ〜５２ｄを有している。ＦＦ回路５２ａ〜５２ｄは、たとえばＤ型フリップフロップ回路である。各ＦＦ回路５２ａ〜５２ｄのクロック端子には反転イネーブル信号ｘＤＱＳｄが供給される。反転イネーブル信号ｘＤＱＳｄは、たとえば図１に示すＤＬＬ回路３１ｂにおいて、遅延ストローブ信号ＤＱＳｄをインバータ回路により論理反転して生成される。遅延ストローブ信号ＤＱＳｄの立ち下がりエッジのタイミングは、反転イネーブル信号ｘＤＱＳｄの立ち上がりエッジのタイミングと等しい。したがって、ＢＬカウンタ４２において、反転イネーブル信号ｘＤＱＳｄを用いることで、ＢＬカウンタ４１と同じ回路により、遅延ストローブ信号ＤＱＳｄの立ち下がりエッジ（ネガティブエッジ）に基づいたイネーブル信号ＣＮ０〜ＣＮ３を生成する。
【００３９】
ＦＦ回路５２ａ〜５２ｃの出力端子（Ｑ）はそれぞれＦＦ回路５２ｂ〜５２ｄの入力端子（データ端子Ｄ）に接続されている。ＦＦ回路５２ｄの出力端子（Ｑ）はＦＦ回路５２ａの入力端子（データ端子Ｄ）に接続されている。ＦＦ回路５２ａは、リセット時にたとえばＬレベルの信号がプリセット端子に供給され、Ｈレベルのイネーブル信号ＣＮ０を出力する。ＦＦ回路５２ｂ〜５２ｄはリセット時にたとえばＬレベルの信号がリセット端子に供給され、Ｌレベルのイネーブル信号ＣＮ１〜ＣＮ３を出力する。ＦＦ回路５２ａ〜５２ｄは、Ｈレベルの反転イネーブル信号ｘＤＱＳｄに基づいてデータ端子のレベルと等しいレベルのイネーブル信号ＣＮ０〜ＣＮ３を出力する。これらのイネーブル信号ＣＮ０〜ＣＮ３は図１に示すイネーブル信号ＥＮ１に含まれる。
【００４０】
図４に示すように、ポインタ制御回路４３は、複数のフリップフロップ回路（ＦＦ回路）５３ａ，５３ｂ，５３ｃ，・・・，５３ｎ−１，５３ｎとマルチプレクサ（「ＭＵＸ」と表記）５４を有している。ＦＦ回路５３ａ〜５３ｎは、たとえばＤ型フリップフロップ回路である。複数のＦＦ回路５３ａ〜５３ｎは、直列に接続されている。つまり、初段のＦＦ回路５３ａの出力端子（Ｑ）は２段目のＦＦ回路５３ｂの入力端子（データ端子Ｄ）に接続され、２段目のＦＦ回路５３ｂの出力端子（Ｑ）は次段のＦＦ回路５３ｃの入力端子（データ端子Ｄ）に接続されている。そして、（ｎ−１）段目のＦＦ回路５３ｎ−１の出力端子（Ｑ）は次段のＦＦ回路５３ｎの入力端子（データ端子Ｄ）に接続されている。
【００４１】
ＦＦ回路５３ａ〜５３ｎのクロック端子にはコアクロック信号ＣＫｃが供給される。初段のＦＦ回路５３ａの入力端子（データ端子Ｄ）にはリード制御信号ＲＣＮＴが供給される。各ＦＦ回路５３ａ〜５３ｎは、Ｈレベルのコアクロック信号ＣＫｃに基づいて、データ端子のレベルと等しいレベルの信号ＲＣａ〜ＲＣｎを出力する。これらの信号ＲＣａ〜ＲＣｎは、マルチプレクサ５４に供給される。
【００４２】
マルチプレクサ５４には転送設定値ＦＳＰが供給される。マルチプレクサ５４は、信号ＲＣａ〜ＲＣｎのうち、転送設定値ＦＳＰに応じた信号を選択し、その選択した信号のレベルと等しいレベルのポインタ制御信号ＰＣＮＴを出力する。
【００４３】
初段のＦＦ回路５３ａにはリード制御信号ＲＣＮＴが供給され、次段以降のＦＦ回路５３ｂ〜５３ｎのデータ端子には前段のＦＦ回路５３ａ〜５３ｎ−ａの出力信号が供給される。したがって、複数のＦＦ回路５３ａ〜５３ｎは、コアクロック信号ＣＫｃに応じてリード制御信号ＲＣＮＴを転送する。つまり、各ＦＦ回路５３ａ〜５３ｎは、初段のＦＦ回路５３ａからの段数に応じてリード制御信号ＲＣＮＴを遅延した信号ＲＣａ〜ＲＣｎを出力する。各ＦＦ回路５３ａ〜５３ｎにおける遅延時間は、コアクロック信号ＣＫｃの１周期（１サイクル）分である。そして、マルチプレクサ５４は、転送設定値ＦＳＰに応じた信号を選択する。したがって、このポインタ制御回路４３は、転送設定値ＦＳＰに応じサイクル数、リード制御信号ＲＣＮＴを遅延したポインタ制御信号ＰＣＮＴを出力する。このポインタ制御信号ＰＣＮＴは、ＢＬカウンタ４４に供給される。
【００４４】
ＢＬカウンタ４４は、４進のワンホット・ステート・カウンタ（One-hot state counter）である。ＢＬカウンタ４４は、コアクロック信号ＣＫｃをカウントし、イネーブル信号Ｃ００〜Ｃ０３を生成する。
【００４５】
ＢＬカウンタ４４は、４つのフリップフロップ回路（ＦＦ回路）５５ａ〜５５ｄを有している。ＦＦ回路５５ａ〜５５ｄは、たとえばＤ型フリップフロップ回路である。
ＦＦ回路５５ａは、イネーブル端子（ＥＮ）を有し、そのイネーブル端子（ＥＮ）に上記のポインタ制御信号ＰＣＮＴが供給される。各ＦＦ回路５５ａ〜５５ｄのクロック端子にはコアクロック信号ＣＫｃが供給される。ＦＦ回路５５ａ〜５５ｃの出力端子（Ｑ）はＦＦ回路５５ｂ〜５５ｄの入力端子（データ端子）に接続され、ＦＦ回路５５ｄの出力端子（Ｑ）はＦＦ回路５５ａの入力端子（データ端子）に接続されている。
【００４６】
ＦＦ回路５５ａは、リセット時にたとえばＬレベルの信号がプリセット端子に供給され、Ｈレベルのイネーブル信号Ｃ００を出力する。ＦＦ回路５５ｂ〜５５ｄはリセット時にたとえばＬレベルの信号がリセット端子に供給され、Ｌレベルのイネーブル信号Ｃ０１〜Ｃ０３を出力する。ＦＦ回路５５ａは、ポインタ制御信号ＰＣＮＴがＨレベルのとき、Ｈレベルのコアクロック信号ＣＫｃに基づいてデータ端子のレベルと等しいレベルのイネーブル信号Ｃ００を出力する。ＦＦ回路５５ｂ〜５５ｄは、イネーブル信号Ｃ００〜Ｃ０２に基づいてイネーブル信号Ｃ０１〜Ｃ０３を出力する。そして、ＦＦ回路５５ａは、イネーブル信号Ｃ０３に基づいてイネーブル信号Ｃ００を出力する。これらのイネーブル信号Ｃ００〜Ｃ０３は図１に示すイネーブル信号ＥＮ２に含まれる。
【００４７】
図２に示すように、非同期転送回路３３は、第１ラッチ回路３３ａと第２ラッチ回路３３ｂを有している。第１ラッチ回路３３ａは第１のラッチ回路の一例、第２ラッチ回路３３ｂは第２のラッチ回路の一例である。
【００４８】
第１ラッチ回路３３ａには、遅延ストローブ信号ＤＱＳｄ、反転イネーブル信号ｘＤＱＳｄ、イネーブル信号ＣＰ０〜ＣＰ３，ＣＮ０〜ＣＮ３が供給される。第２ラッチ回路３３ｂには、コアクロック信号ＣＫｃとイネーブル信号Ｃ００〜Ｃ０３が供給される。
【００４９】
図５に示すように、第１ラッチ回路３３ａは、８個のフリップフロップ回路（ＦＦ回路）６１０〜６１７を有している。ＦＦ回路６１０〜６１７は、たとえばＤ型フリップフロップ回路である。各ＦＦ回路６１０〜６１７の入力端子（データ端子Ｄ）には受信データＲＤＱが供給される。
【００５０】
ＦＦ回路６１０，６１２，６１４，６１６のイネーブル端子（ＥＮ）にはイネーブル信号ＣＰ０〜ＣＰ３が供給される。ＦＦ回路６１０，６１２，６１４，６１６のクロック端子には遅延ストローブ信号ＤＱＳｄが供給される。ＦＦ回路６１０，６１２，６１４，６１６は、イネーブル信号ＣＰ０〜ＣＰ３がＨレベルのとき、Ｈレベルの遅延ストローブ信号ＤＱＳｄに基づいて受信データＲＤＱをラッチし、ラッチしたデータと等しいレベルの信号ＤＤ０，ＤＤ２，ＤＤ４，ＤＤ６を出力する。つまり、ＦＦ回路６１０，６１２，６１４，６１６は、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジ（Ｒｉｓｅエッジ）のタイミングで受信データＲＤＱに応じたレベルの信号ＤＤ０，ＤＤ２，ＤＤ４，ＤＤ６を出力する。
【００５１】
ＦＦ回路６１１，６１３，６１５，６１７のイネーブル端子（ＥＮ）にはイネーブル信号ＣＮ０〜ＣＮ３が供給される。ＦＦ回路６１１，６１３，６１５，６１７のクロック端子には反転イネーブル信号ｘＤＱＳｄが供給される。ＦＦ回路６１１，６１３，６１５，６１７は、イネーブル信号ＣＮ０〜ＣＮ３がＨレベルのとき、Ｈレベルの反転イネーブル信号ｘＤＱＳｄに基づいて受信データＲＤＱをラッチし、ラッチしたデータと等しいレベルの信号ＤＤ１，ＤＤ３，ＤＤ５，ＤＤ７を出力する。つまり、ＦＦ回路６１１，６１３，６１５，６１７は、遅延ストローブ信号ＤＱＳｄの立ち下がりエッジ（Ｆａｌｌエッジ）のタイミングで受信データＲＤＱに応じたレベルの信号ＤＤ１，ＤＤ３，ＤＤ５，ＤＤ７を出力する。
【００５２】
第２ラッチ回路３３ｂは、８個のフリップフロップ回路（ＦＦ回路）６２０〜６２７を有している。ＦＦ回路６２０〜６２７は、たとえばＤ型フリップフロップ回路である。
ＦＦ回路６２０〜６２７のクロック端子にはコアクロック信号ＣＫｃが供給される。各ＦＦ回路６２０〜６２７の入力端子（データ端子Ｄ）には信号ＤＤ０〜ＤＤ７が供給される。ＦＦ回路６２０，６２１のイネーブル端子（ＥＮ）にはイネーブル信号Ｃ００が供給される。ＦＦ回路６２２，６２３のイネーブル端子（ＥＮ）にはイネーブル信号Ｃ０１が供給される。ＦＦ回路６２４，６２５のイネーブル端子（ＥＮ）にはイネーブル信号Ｃ０２が供給される。ＦＦ回路６２５，６２７のイネーブル端子（ＥＮ）にはイネーブル信号Ｃ０３が供給される。
【００５３】
ＦＦ回路６２０，６２１は、イネーブル信号Ｃ００がＨレベルのとき、Ｈレベルのコアクロック信号ＣＫｃに基づいて信号ＤＤ０，ＤＤ１をラッチし、ラッチしたデータと等しいレベルの出力データＣＤ０，ＣＤ１を出力する。同様に、ＦＦ回路６２２〜６２７は、イネーブル信号Ｃ０１〜Ｃ０３がＨレベルのとき、Ｈレベルのコアクロック信号ＣＫｃに基づいて信号ＤＤ２〜ＤＤ７をラッチし、ラッチしたデータと等しいレベルの出力データＣＤ２〜ＣＤ７を出力する。
【００５４】
すなわち、第１ラッチ回路３３ａは、遅延ストローブ信号ＤＱＳｄに依存したタイミングで、受信データＲＤＱをラッチして信号ＤＤ０〜ＤＤ７を出力する。この第１ラッチ回路３３ａは、ＤＱＳドメインの回路である。そして、第２ラッチ回路３３ｂは、コアクロック信号ＣＫｃに依存したタイミングで、信号ＤＤ０〜ＤＤ７をラッチして出力データＣＤ０〜ＣＤ７を出力する。この第２ラッチ回路３３ｂは、コアクロックドメインの回路である。
【００５５】
図６に示すように、パターンジェネレータ３６は、第１の信号生成回路３６ａと第２の信号生成回路３６ｂを有している。
第１の信号生成回路３６ａは、遅延ストローブ信号ＤＱＳｄとイネーブル信号ＣＰ３に基づいて、判定用パターンデータＴＤａを生成する。判定用パターンデータＴＤａは、第１の判定用パターンデータの一例である。
【００５６】
第１の信号生成回路３６ａは、ＦＦ回路７１ａとインバータ回路７２ａを有している。ＦＦ回路７１ａは、たとえばイネーブル端子（ＥＮ）を有するＤフリップフロップ回路である。ＦＦ回路７１ａのクロック端子には遅延ストローブ信号ＤＱＳｄが供給される。ＦＦ回路７１ａのイネーブル端子（ＥＮ）にはイネーブル信号ＣＰ３が供給される。ＦＦ回路７１ａの出力端子はインバータ回路７２ａの入力端子に接続され、インバータ回路７２ａの出力端子はＦＦ回路７１ａのデータ入力端子に接続されている。
【００５７】
ＦＦ回路７１ａは、イネーブル信号ＣＰ３がＨレベルの間に、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジに基づいて、入力端子のレベルと等しいレベルの判定用パターンデータＴＤａを出力する。インバータ回路７２ａは、判定用パターンデータＴＤａを論理反転したレベルの信号をＦＦ回路７１ａに供給する。したがって、第１の信号生成回路３６ａは、イネーブル信号ＣＰ３がＨレベルの期間において、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジのタイミングで判定用パターンデータＴＤａの論理レベルを反転する。
【００５８】
第２の信号生成回路３６ｂは、反転イネーブル信号ｘＤＱＳｄとイネーブル信号ＣＮ３に基づいて、判定用パターンデータＴＤｂを生成する。判定用パターンデータＴＤｂは、第２の判定用パターンデータの一例である。
【００５９】
第２の信号生成回路３６ｂは、ＦＦ回路７１ｂとインバータ回路７２ｂを有している。ＦＦ回路７１ｂのクロック端子には反転イネーブル信号ｘＤＱＳｄが供給される。ＦＦ回路７１ｂのイネーブル端子（ＥＮ）にはイネーブル信号ＣＮ３が供給される。ＦＦ回路７１ｂの出力端子はインバータ回路７２ｂの入力端子に接続され、インバータ回路７２ｂの出力端子はＦＦ回路７１ｂのデータ入力端子に接続されている。
【００６０】
ＦＦ回路７１ｂは、イネーブル信号ＣＮ３がＨレベルの間に、反転イネーブル信号ｘＤＱＳｄの立ち上がりエッジ、つまり遅延ストローブ信号ＤＱＳｄの立ち下がりエッジに基づいて、入力端子のレベルと等しいレベルの判定用パターンデータＴＤｂを出力する。インバータ回路７２ｂは、判定用パターンデータＴＤｂを論理反転したレベルの信号をＦＦ回路７１ｂに供給する。したがって、第２の信号生成回路３６ｂは、イネーブル信号ＣＮ３がＨレベルの期間において、反転イネーブル信号ｘＤＱＳｄの立ち上がりエッジ（遅延ストローブ信号ＤＱＳｄの立ち下がりエッジ）のタイミングで判定用パターンデータＴＤｂの論理レベルを反転する。
【００６１】
図２に示すように、非同期転送回路３７は、第１ラッチ回路３７ａと第２ラッチ回路３７ｂを有している。第１ラッチ回路３７ａは第３のラッチ回路の一例、第２ラッチ回路３３ｂは第４のラッチ回路の一例である。
【００６２】
第１ラッチ回路３７ａには、遅延ストローブ信号ＤＱＳｄ、反転イネーブル信号ｘＤＱＳｄ、イネーブル信号ＣＰ０〜ＣＰ３，ＣＮ０〜ＣＮ３が供給される。第２ラッチ回路３７ｂには、コアクロック信号ＣＫｃとイネーブル信号Ｃ００〜Ｃ０３が供給される。
【００６３】
図６に示すように、第１ラッチ回路３７ａは、図５に示す第１ラッチ回路３３ａと同様に、ＦＦ回路８１０〜８１７を含む。ＦＦ回路８１０〜８１７は、たとえば、Ｄ型フリップフロップ回路である。ＦＦ回路８１０，８１２，８１４，８１６のクロック端子には遅延ストローブ信号ＤＱＳｄが供給される。ＦＦ回路８１０，８１２，８１４，８１６の入力端子（データ端子Ｄ）には判定用パターンデータＴＤａが供給される。ＦＦ回路８１０，８１２，８１４，８１６のイネーブル端子（ＥＮ）には、イネーブル信号ＣＰ０，ＣＰ１，ＣＰ２，ＣＰ３が供給される。
【００６４】
ＦＦ回路８１０は、Ｈレベルのイネーブル信号ＣＰ０に基づいて、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジのタイミングで判定用パターンデータＴＤａをラッチし、そのラッチしたレベルと等しいレベルの転送信号ＤＴ０を出力する。同様に、ＦＦ回路８１２，８１４，８１６は、Ｈレベルのイネーブル信号ＣＰ１，ＣＰ２，ＣＰ３に基づいて、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジのタイミングで判定用パターンデータＴＤａをラッチし、そのラッチしたレベルと等しいレベルの転送信号ＤＴ２，ＤＴ４，ＤＴ６を出力する。つまり、ＦＦ回路８１０，８１２，８１４，８１６は、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジ（Ｒｉｓｅエッジ）のタイミングで判定用パターンデータＴＤａに応じたレベルの転送信号ＤＴ０，ＤＴ２，ＤＴ４，ＤＴ６を出力する。
【００６５】
ＦＦ回路８１１，８１３，８１５，８１７のクロック端子には反転イネーブル信号ｘＤＱＳｄが供給される。ＦＦ回路８１１，８１３，８１５，８１７の入力端子（データ端子Ｄ）には判定用パターンデータＴＤｂが供給される。ＦＦ回路８１１，８１３，８１５，８１７のイネーブル端子（ＥＮ）には、イネーブル信号ＣＮ０，ＣＮ１，ＣＮ２，ＣＮ３が供給される。
【００６６】
ＦＦ回路８１１は、Ｈレベルのイネーブル信号ＣＮ０に基づいて、反転イネーブル信号ｘＤＱＳｄの立ち上がりエッジのタイミングで判定用パターンデータＴＤｂをラッチし、そのラッチしたレベルと等しいレベルの転送信号ＤＴ０を出力する。同様に、ＦＦ回路８１３，８１５，８１７は、Ｈレベルのイネーブル信号ＣＮ１，ＣＮ２，ＣＮ３に基づいて、反転イネーブル信号ｘＤＱＳｄの立ち上がりエッジのタイミングで判定用パターンデータＴＤｂをラッチし、そのラッチしたレベルと等しいレベルの転送信号ＤＴ３，ＤＴ５，ＤＴ７を出力する。つまり、ＦＦ回路８１１，８１３，８１５，８１７は、遅延ストローブ信号ＤＱＳｄの立ち下がりエッジ（Ｆａｌｌエッジ）のタイミングで判定用パターンデータＴＤｂに応じたレベルの転送信号ＤＴ１，ＤＴ３，ＤＴ５，ＤＴ７を出力する。
【００６７】
したがって、第１ラッチ回路３７ａは、イネーブル信号ＣＰ０〜ＣＰ３，ＣＮ０〜ＣＮ３に基づいてラッチ機能を有効とする。そして、第１ラッチ回路３７ａは、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジと立ち下がりエッジに基づいて判定用パターンデータＴＤａ，ＴＤｂをラッチし、転送信号ＤＴ０〜ＤＴ７を出力する。
【００６８】
第２ラッチ回路３７ｂは、図５に示す第２ラッチ回路３３ｂと同様に、ＦＦ回路８２０〜８２７を含む。ＦＦ回路８２０〜８２７は、たとえばＤ型フリップフロップ回路である。ＦＦ回路８２０〜８２７のクロック端子にはコアクロック信号ＣＫｃが供給される。ＦＦ回路８２０〜８２７の入力端子（データ端子Ｄ）には転送信号ＤＴ０〜ＤＴ７が供給される。ＦＦ回路８２０，８２１のイネーブル端子（ＥＮ）には、イネーブル信号Ｃ００が供給される。ＦＦ回路８２２，８２３のイネーブル端子（ＥＮ）には、イネーブル信号Ｃ０１が供給される。ＦＦ回路８２４，８２５のイネーブル端子（ＥＮ）には、イネーブル信号Ｃ０２が供給される。ＦＦ回路８２６，８２７のイネーブル端子（ＥＮ）には、イネーブル信号Ｃ０３が供給される。
【００６９】
ＦＦ回路８２０，８２１は、Ｈレベルのイネーブル信号Ｃ００に基づいて、コアクロック信号ＣＫｃの立ち上がりエッジのタイミングで転送信号ＤＴ０，ＤＴ１をラッチし、そのラッチしたレベルと等しいレベルの判定用データＣＴ０，ＣＴ１を出力する。同様に、ＦＦ回路８２２，８２３は、Ｈレベルのイネーブル信号Ｃ０１に基づいて、コアクロック信号ＣＫｃの立ち上がりエッジのタイミングで転送信号ＤＴ２，ＤＴ３をラッチし、そのラッチしたレベルと等しいレベルの判定用データＣＴ２，ＣＴ３を出力する。同様に、ＦＦ回路８２４，８２５は、Ｈレベルのイネーブル信号Ｃ０２に基づいて、コアクロック信号ＣＫｃの立ち上がりエッジのタイミングで転送信号ＤＴ４，ＤＴ５をラッチし、そのラッチしたレベルと等しいレベルの判定用データＣＴ４，ＣＴ５を出力する。同様に、ＦＦ回路８２６，８２７は、Ｈレベルのイネーブル信号Ｃ０３に基づいて、コアクロック信号ＣＫｃの立ち上がりエッジのタイミングで転送信号ＤＴ６，ＤＴ７をラッチし、そのラッチしたレベルと等しいレベルの判定用データＣＴ６，ＣＴ７を出力する。
【００７０】
つまり、ＦＦ回路８２０〜８２７は、コアクロック信号ＣＫｃの立ち上がりエッジ（Ｒｉｓｅエッジ）のタイミングで転送信号ＤＴ０〜ＤＴ７に応じたレベルの判定用データＣＴ０〜ＣＴ７を出力する。したがって、第２ラッチ回路３７ｂは、イネーブル信号Ｃ００〜Ｃ０３に基づいてラッチ機能を有効とする。そして、第２ラッチ回路３７ｂは、コアクロック信号ＣＫｃの立ち上がりエッジに基づいて転送信号ＤＴ０〜ＤＴ７をラッチし、判定用データＣＴ０〜ＣＴ７を出力する。
【００７１】
図７に示すように、判定回路３８は、期待値データ生成回路３８ａを有している。期待値データ生成回路３８ａは、ＦＦ回路９１ａとインバータ回路９１ｂを含む。
ＦＦ回路９１ａのクロック入力端子にはコアクロック信号ＣＫｃが供給される。ＦＦ回路９１ａのイネーブル端子（ＥＮ）にはイネーブル信号Ｃ００が供給される。ＦＦ回路９１ａの出力端子（Ｑ）はインバータ回路９１ｂの入力端子に接続され、そのインバータ回路９１ｂの出力端子はＦＦ回路９１ａの入力端子（データ端子）に接続されている。
【００７２】
ＦＦ回路９１ａは、イネーブル信号Ｃ００がＨレベルである期間、コアクロック信号ＣＫｃの立ち上がりエッジのタイミングで、入力端子のレベルと等しいレベルの期待値データＥＤを出力する。インバータ回路９１ｂは、期待値データＥＤを論理反転したレベルの信号をＦＦ回路９１ａに供給する。
【００７３】
また、判定回路３８は、排他的論理和（ＥｘＯＲ）回路９２０〜９２７を有している。各ＥｘＯＲ回路９２０〜９２７には、期待値データＥＤが供給される。また、各ＥｘＯＲ回路９２０〜９２７には、それぞれ対応する判定用データＣＴ０〜ＣＴ７が供給される。ＥｘＯＲ回路９２０は、期待値データＥＤと判定用データＣＴ０とを互いに比較し、比較結果に応じたレベルの判定信号ＥＸ０を出力する。ＥｘＯＲ回路９２０は、期待値データＥＤの論理値が判定用データＣＴ０の論理値と等しいときにＬレベルの判定信号ＥＸ０を出力し、期待値データＥＤの論理値が判定用データＣＴ０の論理値と異なる場合にＨレベルの判定信号ＥＸ０を出力する。同様に、ＥｘＯＲ回路９２１〜９２７は、期待値データＥＤの論理値が判定用データＣＴ１〜ＣＴ７の論理値と等しいときにＬレベルの判定信号ＥＸ１〜ＥＸ７を出力する。一方ＥｘＯＲ回路９２１〜９２７は、期待値データＥＤの論理値が判定用データＣＴ１〜ＣＴ７の論理値と異なる場合にＨレベルの判定信号ＥＸ１〜ＥＸ７を出力する。
【００７４】
設定値算出回路３９は、転送初期値ＦＳＯと、判定信号ＥＸ０〜ＥＸ７に基づいて、転送設定値ＦＳＰとレイテンシ設定値ＦＳＬを生成する。
なお、判定信号ＥＸ０〜ＥＸ７を出力する判定回路３８は、図２に示す第２ラッチ回路３７ｂのラッチタイミング、つまりイネーブル信号Ｃ００〜Ｃ０３の生成タイミングが、遅延ストローブ信号ＤＱＳｄに対して適切か否かを判定するものである。したがって、設定値算出回路３９は、イネーブル信号Ｃ００〜Ｃ０３のうちの１つのイネーブル信号に基づいて出力される判定用データを判定した結果を用いればよい。
【００７５】
たとえば、設定値算出回路３９は、判定信号ＥＸ０，ＥＸ１を用いて、転送設定値ＦＳＰとレイテンシ設定値ＦＳＬを算出する。判定用データＣＴ０は第１の判定用データの一例である。判定用データＣＴ１は第２の判定用データの一例である。設定値算出回路３９は、判定信号ＥＸ０，ＥＸ１の値に基づいて補正値を算出する。たとえば、判定信号ＥＸ０，ＥＸ１の値が「００」の場合、補正値を「０」とする。また、判定信号ＥＸ０，ＥＸ１の値が「０１」の場合、補正値を「＋１」とする。また、判定信号ＥＸ０，ＥＸ１の値が「１０」の場合、補正値を「−１」とする。
【００７６】
設定値算出回路３９は、レジスタを有している。設定値算出回路３９は、転送初期値ＦＳＯをレジスタに格納する。そして、設定値算出回路３９は、判定信号ＥＸ０，ＥＸ１に基づいて、レジスタに保持した値に基づいて転送設定値ＦＳＰを算出する。そして、設定値算出回路３９は、算出した転送設定値ＦＳＰをレジスタに格納する。また、設定値算出回路３９は、転送設定値ＦＳＰに基づいてレイテンシ設定値ＦＳＬを算出し、その算出したレイテンシ設定値ＦＳＬをレジスタに格納する。
【００７７】
設定値算出回路３９は、レジスタの転送設定値とレイテンシ設定値を、上記のようにして算出した補正値により更新する。たとえば、設定値算出回路３９は、レジスタから読み出した転送設定値に補正値を加算し、その加算結果を新たな転送設定値としてレジスタに格納する。そして、設定値算出回路３９は、その新たな転送設定値ＦＳＰを出力する。同様に、設定値算出回路３９は、レジスタから読み出したレイテンシ設定値から補正値を減算し、その減算結果を新たなレイテンシ設定値としてレジスタに格納する。そして、設定値算出回路３９は、その新たなレイテンシ設定値ＦＳＬを出力する。
【００７８】
レイテンシ補償回路３４は、複数のＦＦ回路１０１ａ〜１０１ｍとマルチプレクサ（「ＭＵＸ」と表記）１０２を有している。複数のＦＦ回路１０１ａ〜１０１ｍは直列に接続されている。各ＦＦ回路１０１ａ〜１０１ｍのクロック端子にはコアクロック信号ＣＫｃが供給される。初段のＦＦ回路１０１ａには出力データＣＤが供給される。
【００７９】
マルチプレクサ１０２には、各ＦＦ回路１０１ａ〜１０１ｍの出力信号ＣＤａ〜ＣＤｍが供給される。マルチプレクサ１０２は、出力信号ＣＤａ〜ＣＤｍのうち、レイテンシ設定値ＦＳＬに応じた１つの出力信号と等しいリードデータＲＤを出力する。
【００８０】
図８は、設定値算出回路３９における処理を示す。
先ず、ステップ１１１において、設定値算出回路３９は、デフォルト値を設定する。デフォルト値は、図１に示すメモリコントローラ２１から供給される転送初期値ＦＳＯと、その転送設定値に応じたレイテンシの初期値である。設定値算出回路３９は、メモリコントローラ２１から供給される転送設定値を転送設定値ＦＳＰに設定する。また、設定値算出回路３９は、レイテンシ設定値ＦＳＬに初期値を設定する。
【００８１】
そして、設定値算出回路３９は、図７に示す判定回路３８から出力される判定信号ＥＸ０，ＥＸ１がそれぞれ「ＯＫ判定」か「ＮＧ判定」か、を判定する。設定値算出回路３９は、判定信号ＥＸ０，ＥＸ１の値が「０」の場合に「ＯＫ判定」とし、判定信号ＥＸ０，ＥＸ１の値が「１」の場合に「ＮＧ判定」とする。
【００８２】
先ず、ステップ１１２において、設定値算出回路３９は、判定信号ＥＸ０が「ＯＫ判定」かつ判定信号ＥＸ１が「ＮＧ判定」の場合（判定：ＹＥＳ）、ステップ１１３に移行する。そのステップ１１３への移行は、「設定値に対してＤＱＳが遅い」場合に行われる。このステップ１１３において、設定値算出回路３９は、転送設定値ＦＳＰを「＋１」し、レイテンシ設定値ＦＳＬを「−１」する。そして、設定値算出回路３９は、処理をステップ１１２へ移行する。
【００８３】
次に、ステップ１１４において、設定値算出回路３９は、判定信号ＥＸ０が「ＮＧ判定」かつ判定信号ＥＸ１が「ＯＫ判定」の場合（判定：ＹＥＳ）、ステップ１１５に移行する。そのステップ１１５への移行は、「設定値に対してＤＱＳが早い」場合に行われる。このステップ１１５において、設定値算出回路３９は、転送設定値ＦＳＰを「−１」し、レイテンシ設定値ＦＳＬを「＋１」する。そして、設定値算出回路３９は、処理をステップ１１２へ移行する。
【００８４】
次に、ステップ１１６において、設定値算出回路３９は、判定信号ＥＸ０が「ＯＫ判定」かつ判定信号ＥＸ１が「ＯＫ判定」の場合（判定：ＹＥＳ）、「設定値に対してＤＱＳが適切」である。このため、設定値算出回路３９は、転送設定値ＦＳＰとレイテンシ設定値ＦＳＬをそのままとし、処理をステップ１１２へ移行する。
【００８５】
一方、ステップ１１６において判定が「ＮＯ」、つまり判定信号ＥＸ０，ＥＸ１がともに「ＮＧ判定」の場合、設定値算出回路３９は、ステップ１１７に移行する。そのステップ１１７において、設定値算出回路３９は、エラー処理を行い、ステップ１１１へ移行する。たとえば、設定値算出回路３９は、エラー処理において、図１に示すメモリコントローラ２１にエラー情報を通知する。メモリコントローラ２１は、そのエラー情報に基づいて、トレーニング処理を行い、その処理結果に基づいて転送設定値ＦＳＰを再設定する。
【００８６】
次に、上記の受信回路２４の動作を説明する。
図９に示すように、データＤＱが図１に示すメモリ装置１２から出力される。このデータＤＱは、バースト長のデータを含む。図９では、データＤＱに含まれる各データを［Ａ］〜［Ｈ］として示す。データＤＱについて、個々のデータを示す場合に、［Ａ］〜［Ｈ］を用いることがある。
【００８７】
図１に示す受信回路２４は、メモリ装置１２から受信したデータストローブ信号ＤＱＳ（受信ストローブ信号ＲＤＱＳ）を遅延して遅延ストローブ信号ＤＱＳｄを生成する。
図３に示すＢＬカウンタ４１は、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジをカウントしてイネーブル信号ＣＰ０〜ＣＰ３を生成する。図５に示す非同期転送回路３３において、ＦＦ回路６１０は、Ｈレベルのイネーブル信号ＣＰ０を受け、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジに基づいてデータ［Ａ］をラッチする。同様に、ＦＦ回路６１２，６１４，６１６は、Ｈレベルのイネーブル信号ＣＰ１，ＣＰ２，ＣＰ３を受け、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジに基づいてデータ［Ｃ］，［Ｅ］，［Ｇ］をラッチする。各ＦＦ回路６１０，６１２，６１４，６１６は、これらのデータ［Ａ］，［Ｃ］，［Ｅ］，［Ｇ］を、次のデータＤＱを受信する際の遅延ストローブ信号ＤＱＳｄの立ち上がりエッジまで保持する。
【００８８】
同様に、図３に示すＢＬカウンタ４２は、遅延ストローブ信号ＤＱＳｄの立ち下がりエッジ（反転イネーブル信号ｘＤＱＳｄの立ち上がりエッジ）をカウントしてイネーブル信号ＣＮ０〜ＣＮ３を生成する。図５に示す非同期転送回路３３において、ＦＦ回路６１１は、Ｈレベルのイネーブル信号ＣＮ０を受け、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジに基づいてデータ［Ｂ］をラッチする。同様に、ＦＦ回路６１３，６１５，６１７は、Ｈレベルのイネーブル信号ＣＮ１，ＣＮ２，ＣＮ３を受け、遅延ストローブ信号ＤＱＳｄの立ち下がりエッジに基づいてデータ［Ｄ］，［Ｆ］，［Ｈ］をラッチする。各ＦＦ回路６１１，６１３，６１５，６１７は、これらのデータ［Ｂ］，［Ｄ］，［Ｆ］，［Ｈ］を、次のデータＤＱを受信する際の遅延ストローブ信号ＤＱＳｄの立ち下がりエッジまで保持する。
【００８９】
図９に示すように、データＤＱにおいて、各データ［Ａ］〜［Ｈ］の幅は、時間的に遅延ストローブ信号ＤＱＳｄの半周期分、つまり１／２サイクルである。図２に示す非同期転送回路３３（第１ラッチ回路３３ａ）は、各データ［Ａ］〜［Ｈ］の幅を、時間的に４サイクル幅以上に拡張する。
【００９０】
図１０に示すように、データ［Ａ］は、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジに基づいてラッチされる。データ［Ｂ］は、遅延ストローブ信号ＤＱＳｄの立ち下がりエッジに基づいてラッチされる。なお、図では、データ［Ａ］，［Ｂ］をそれぞれ４サイクル幅にて示している。
【００９１】
上記したように、図２に示す非同期転送回路３３において、第１ラッチ回路３３ａは、次の対応する遅延ストローブ信号ＤＱＳｄの立ち上がりエッジまで、ラッチしたデータを保持する。図１に示すシステム１０では、システム装置１１からメモリ装置１２に対して連続的なリードを行うことが可能である。このような連続的なリード動作では、メモリ装置１２は、データＤＱ及びデータストローブ信号ＤＱＳを連続的に出力する。たとえば、バースト長を「８」に設定した場合、図２に示す第１ラッチ回路３３ａは、遅延ストローブ信号ＤＱＳｄの４サイクルの間、データを保持する。そして、図２に示す非同期転送回路３３（第２ラッチ回路３３ｂ）は、コアクロック信号ＣＫｃに基づいて、データ［Ａ］，［Ｂ］をラッチする。このため、非同期転送回路３３は、遅延ストローブ信号ＤＱＳｄの４サイクルの間に第１ラッチ回路３３ａの出力データを第２ラッチ回路３３ｂでラッチする、つまりデータを第１ラッチ回路３３ａから第２ラッチ回路３３ｂに転送する必要がある。
【００９２】
データ［Ａ］とデータ［Ｂ］は、遅延ストローブ信号ＤＱＳｄの半周期分、ずれている。したがって、両データ［Ａ］，［Ｂ］は、時間的に図に示す「ｗｉｎｄｏｗ」の範囲で同時に転送することが可能となる。このウインドウの時間的な幅は、遅延ストローブ信号ＤＱＳｄの３．５サイクルである。したがって、非同期転送回路３３（第２ラッチ回路３３ｂ）は、図に矢印にて示す３つのタイミングのいずれか１つのタイミングで、コアクロック信号ＣＫｃに基づいてデータ［Ａ］，［Ｂ］を取り込むことができる。図１に示すメモリコントローラ２１は、トレーニング処理により、これらのタイミングのうちの１つを転送初期値ＦＳＯとする。
【００９３】
たとえば、図１０に示すように、転送初期値ＦＳＯを「Ｐａ」として破線の矢印にて示す。この「Ｐａ」により、リード制御信号ＲＣＮＴが図４に示すポインタ制御回路４３にて遅延されてポインタ制御信号ＰＣＮＴ（図１０ではＰＣＮＴａ）としてＢＬカウンタ４４に供給される。ＢＬカウンタ４４は、コアクロック信号ＣＫｃをカウントしてイネーブル信号Ｃ００を生成する。図６に示す非同期転送回路３３の第２ラッチ回路３３ｂは、イネーブル信号Ｃ００に基づいて有効となり、コアクロック信号ＣＫｃの立ち上がりエッジに基づいてデータ［Ａ］．［Ｂ］をラッチする。
【００９４】
図１０に示すように、転送初期値ＦＳＯを「Ｐｂ」とした場合、ポインタ制御信号ＰＣＮＴｂに基づいてイネーブル信号Ｃ００が生成され、データ［Ａ］，［Ｂ］がラッチされる。同様に、転送初期値ＦＳＯを「Ｐｃ」とした場合、ポインタ制御信号ＰＣＮＴｃに基づいてイネーブル信号Ｃ００が生成され、データ［Ａ］，［Ｂ］がラッチされる。
【００９５】
ここで、比較例のシステムについて説明する。
なお、比較例について、図１に示すシステムと同じ部材については同じ符号を用い、その部材の説明の一部または全てを省略する。
【００９６】
図１５に示すように、比較例のシステム装置２００は、メモリコントローラ２１とインタフェース回路２０１を有している。インタフェース回路２０１は、送信回路２３、受信回路２０２等を含む。
【００９７】
受信回路２０２の制御信号生成回路３５は、図１に示す制御信号生成回路３５と同様に、遅延ストローブ信号ＤＱＳｄをカウントしてイネーブル信号ＥＮ１を生成する。また、制御信号生成回路３５は、メモリコントローラ２１からの転送初期値ＦＳＯに基づいて、コアクロック信号ＣＫｃをカウントしてイネーブル信号ＥＮ２を生成する。
【００９８】
受信回路２０２の非同期転送回路３３は、イネーブル信号ＥＮ１に基づいて入力機能を有効とし、遅延ストローブ信号ＤＱＳｄに基づいて受信データＲＤＱをラッチする。そして、非同期転送回路３３は、イネーブル信号ＥＮ２に基づいて出力機能を有効とし、ラッチしたデータに応じたリードデータＲＤを出力する。
【００９９】
たとえば、メモリ装置１２は、複数のメモリチップを有し、各データ［Ａ］〜［Ｈ］（図９参照）はそれぞれ、複数ビット（たとえば、１６ビット）のデータである。このようなデータの場合、各ビットのデータＤＱとデータストローブ信号ＤＱＳの受信タイミング、つまりラウンド・トリップ・タイム（ＲＴＴ）にばらつきが生じる。
【０１００】
たとえば、図１６に示すように、ラウンド・トリップ・タイム（ＲＴＴ）が最も短い（ＦＡＳＴ）遅延ストローブ信号ＤＱＳｄ及びデータＤＱ０に基づいてデータ［Ａ０］，［Ｂ０］を保持する。また、ラウンド・トリップ・タイム（ＲＴＴ）が最も長い（ＳＬＯＷ）遅延ストローブ信号ＤＱＳｄ及びデータＤＱ１に基づいてデータ［Ａ１］，［Ｂ１］を保持する。
【０１０１】
このようなラウンド・トリップ・タイム（ＲＴＴ）のばらつきは、システム装置１１やメモリ装置１２の製造プロセスに基づく各種（たとえば、チップ上の配線の抵抗値）のばらつきにより生じる。これらの要因により、データ［Ａ０］，［Ｂ０］，［Ａ１］，［Ｂ１］を同時に取り込み可能なウインドウの幅は、理想的なウインドウの幅（受信する全てのビットのラウンド・トリップ・タイムが同一な場合のウインドウ幅）よりも狭くなる。
【０１０２】
さらに、図１７に示すように、システム装置１１とメモリ装置１２の間におけるデータＤＱの転送レートが高くなる、つまりデータストローブ信号ＤＱＳの１サイクルが短くなると、ウインドウの幅が狭くなる。このように、ウインドウの幅がコアクロック信号ＣＫｃの１サイクルより短くなると、ＶＴドリフト（電源電圧などの電圧変動や、動作環境などの温度変化）、つまりコアクロック信号ＣＫｃにより設定した取り込みタイミングに対するウインドウの位置のずれにより、リードデータＲＤに誤りが生じる。
【０１０３】
図１に示すシステム装置１１（受信回路２４）は、上記のようなリードデータＲＤにおける誤りを低減する。その動作について説明する。
図６に示すように、パターンジェネレータ３６の第１の信号生成回路３６ａに含まれるＦＦ回路７１ａは、イネーブル信号ＣＰ３に基づいて機能を有効とし、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジに基づいて、入力端子（データ端子Ｄ）の信号と等しいレベルの判定用パターンデータＴＤａを出力する。インバータ回路７２ａは、判定用パターンデータＴＤａを論理反転した信号を出力する。したがって、図１１に示すように、遅延ストローブ信号ＤＱＳｄが連続する場合、判定用パターンデータＴＤａは、遅延ストローブ信号ＤＱＳｄの４サイクル毎に、「０」から「１」へ、「１」から「０」へと変化する。つまり、判定用パターンデータＴＤａは、４サイクル毎に、「０」と「１」を交互に繰り返す。
【０１０４】
同様に、図６に示す第２の信号生成回路３６ｂに含まれるＦＦ回路７１ｂは、イネーブル信号ＣＮ３に基づいて機能を有効とし、反転イネーブル信号ｘＤＱＳｄの立ち上がりエッジ、つまり遅延ストローブ信号ＤＱＳｄの立ち下がりエッジに基づいて、入力端子（データ端子Ｄ）の信号と等しいレベルの判定用パターンデータＴＤｂを出力する。インバータ回路７２ｂは、判定用パターンデータＴＤｂを論理反転した信号を出力する。したがって、図１１に示すように、判定用パターンデータＴＤｂは、遅延ストローブ信号ＤＱＳｄの４サイクル毎に、「０」から「１」へ、「１」から「０」へと変化する。つまり、判定用パターンデータＴＤｂは、４サイクル毎に、「０」と「１」を交互に繰り返す。
【０１０５】
図６に示すＦＦ回路８１０は、イネーブル信号ＣＰ０に基づいて機能を有効とし、遅延ストローブ信号ＤＱＳｄの立ち上がりエッジに基づいて判定用パターンデータＴＤａをラッチし、そのラッチする。そして、ＦＦ回路８１０は、そのラッチしたデータのレベルと等しいレベルの転送信号ＤＴ０を出力する。また、ＦＦ回路８１１は、イネーブル信号ＣＮ０に基づいて機能を有効とし、反転イネーブル信号ｘＤＱＳｄの立ち上がりエッジ（遅延ストローブ信号ＤＱＳｄの立ち下がりエッジ）に基づいて判定用パターンデータＴＤｂをラッチする。そして、ＦＦ回路８１１は、ラッチしたデータのレベルと等しいレベルの転送信号ＤＴ１を出力する。
【０１０６】
したがって、図１１に示すように、転送信号ＤＴ０，ＤＴ１は、判定用パターンデータＴＤａ，ＴＤｂと同様に、４サイクル毎に、「０」と「１」を交互に繰り返す。そして、転送信号ＤＴ０，ＤＴ１の位相、つまり値が変化するタイミングは、遅延ストローブ信号ＤＱＳｄの半周期分ずれている。
【０１０７】
図６に示す第２ラッチ回路３７ｂにおいて、ＦＦ回路８２０は、イネーブル信号Ｃ００に基づいて機能を有効とし、コアクロック信号ＣＫｃの立ち上がりエッジに基づいて転送信号ＤＴ０をラッチする。そして、ＦＦ回路８２０は、そのラッチしたデータのレベルと等しいレベルの判定用データＣＴ０を出力する。同様に、ＦＦ回路８２１は、イネーブル信号Ｃ００に基づいて機能を有効とし、コアクロック信号ＣＫｃの立ち上がりエッジに基づいて転送信号ＤＴ１をラッチする。そして、ＦＦ回路８２１は、そのラッチしたデータのレベルと等しいレベルの判定用データＣＴ１を出力する。
【０１０８】
したがって、図１１に示すように、コアクロック信号ＣＫｃに対して矢印にて示すタイミングでイネーブル信号Ｃ００が設定されている場合、判定用データＣＴ０，ＣＴ１は、互いに同時に、コアクロック信号ＣＫｃの４サイクル毎に、「０」と「１」を交互に繰り返す。
【０１０９】
また、図７に示す判定回路３８のＦＦ回路９１ａは、イネーブル信号Ｃ００に基づいて機能を有効とし、コアクロック信号ＣＫｃの立ち上がりエッジに基づいて、入力端子（データ端子Ｄ）の信号と等しいレベルの期待値データＥＤを出力する。インバータ回路９１ｂは、期待値データＥＤを論理反転した信号を出力する。したがって、図１１に示すように、期待値データＥＤは、コアクロック信号ＣＫｃの４サイクル毎に、「０」から「１」へ、「１」から「０」へと変化する。つまり、期待値データＥＤは、４サイクル毎に、「０」と「１」を交互に繰り返す。
【０１１０】
そして、判定回路３８の排他的論理和回路９２０は、期待値データＥＤと判定用データＣＴ０とを比較（排他的論理和演算）して判定信号ＥＸ０を出力する。また、排他的論理和回路９２１は、期待値データＥＤと判定用データＣＴ１とを比較（排他的論理和演算）して判定信号ＥＸ１を出力する。したがって、図１１に示すように、転送設定値が矢印にて示すタイミングの場合、判定信号ＥＸ０，ＥＸ１が共に「０」となる。この「０」の判定信号ＥＸ０，ＥＸ１は、転送設定値ＦＳＰのタイミングが遅延ストローブ信号ＤＱＳｄに基づくウインドウに合っている、「判定ＯＫ」を示す。
【０１１１】
この場合、図７に示す設定値算出回路３９は、判定信号ＥＸ０，ＥＸ１に基づいて、図８に示すステップ１１６にて「判定：ＹＥＳ」となるため、転送設定値ＦＳＰとレイテンシ設定値ＦＳＬを維持する。
【０１１２】
図１２に示すように、ＶＴドリフトにより遅延ストローブ信号ＤＱＳｄが遅くなった場合、転送信号ＤＴ０を取り込んだ判定用データＣＴ０の値は「１」である。そして、期待値データＥＤは「１」であるため、判定信号ＥＸ０の値は「０」となる。この「０」の判定信号ＥＸ０は、「判定ＯＫ」を示す。一方、転送信号ＤＴ１を矢印にて示すタイミングにて取り込んだ判定用データＣＴ１の値が「０」となる。この場合、期待値データＥＤは「１」であるため、判定信号ＥＸ１の値は「１」となる。この「１」の判定信号ＥＸ１は、「判定ＮＧ」を示す。
【０１１３】
この場合、図７に示す設定値算出回路３９は、判定信号ＥＸ０，ＥＸ１に基づいて、図８に示すステップ１１２にて「判定：ＹＥＳ」となるため、転送設定値ＦＳＰを「＋１」し、レイテンシ設定値ＦＳＬを「−１」する。すると、図１２において、矢印よりも１クロック分右の立ち上がりエッジが転送設定値ＦＳＰとして設定される。つまり、受信回路２４は、遅延ストローブ信号ＤＱＳｄの遅れに応じて非同期転送回路３３の第２ラッチ回路３３ｂにおけるラッチタイミング、つまり転送タイミングを遅くする。その結果、判定信号ＥＸ０，ＥＸ１は、ともに「１」となる。つまり、設定値算出回路３９は、遅延ストローブ信号ＤＱＳｄの遅れに応じて、転送設定値ＦＳＰを変更する。このように、ＶＴドリフトに対して転送設定値ＦＳＰを変更することで、コアクロック信号ＣＫｃに基づく取り込みタイミングを変更する。これにより、図１に示す非同期転送回路３３では、遅延ストローブ信号ＤＱＳｄに基づくウインドウに対して、算出した転送設定値ＦＳＰに基づくタイミングにてデータをラッチし、誤りの無い出力データＣＤを出力する。
【０１１４】
図７に示すレイテンシ補償回路３４は、レイテンシ設定値ＦＳＬに基づいて、リードデータＲＤを出力する。このリードデータＲＤの出力タイミングは、レイテンシ設定値ＦＳＬを変更する前と比べ、コアクロック信号ＣＫｃの１サイクル分早くなる。したがって、受信回路２４は、非同期転送回路３３における転送タイミングを１サイクル分遅くし、レイテンシ補償回路３４における遅延時間を１サイクル分短くする。これにより、リードデータＲＤの出力タイミングは、転送設定値ＦＳＰを変更する前と同じとなる。つまり、受信回路２４は、転送タイミングに対するレイテンシを補償し、メモリコントローラ２１に対するリードデータＲＤのレイテンシを一定に保つ。
【０１１５】
図１３に示すように、ＶＴドリフトにより遅延ストローブ信号ＤＱＳｄが早くなった場合、転送信号ＤＴ０を矢印にて示すタイミングにて取り込んだ判定用データＣＴ０の値が「０」となる。この場合、期待値データＥＤは「１」であるため、判定信号ＥＸ０の値は「１」となる。この「１」の判定信号ＥＸ０は、「判定ＮＧ」を示す。一方、転送信号ＤＴ１を取り込んだ判定用データＣＴ１の値は「１」である。そして、期待値データＥＤは「１」であるため、判定信号ＥＸ１の値は「０」となる。この「０」の判定信号ＥＸ１は、「判定ＯＫ」を示す。
【０１１６】
この場合、図７に示す設定値算出回路３９は、判定信号ＥＸ０，ＥＸ１に基づいて、図８に示すステップ１１４にて「判定：ＹＥＳ」となるため、転送設定値ＦＳＰを「−１」し、レイテンシ設定値ＦＳＬを「＋１」する。すると、図１３において、矢印よりも１クロック分左の立ち上がりエッジが転送設定値ＦＳＰとして設定される。つまり、受信回路２４は、遅延ストローブ信号ＤＱＳｄの進みに応じて非同期転送回路３３の第２ラッチ回路３３ｂにおけるラッチタイミング、つまり転送タイミングを早くする。その結果、判定信号ＥＸ０，ＥＸ１は、ともに「１」となる。つまり、設定値算出回路３９は、遅延ストローブ信号ＤＱＳｄの進みに応じて、転送設定値ＦＳＰを変更する。このように、ＶＴドリフトに対して転送設定値ＦＳＰを変更することで、コアクロック信号ＣＫｃに基づく取り込みタイミングを変更する。これにより、図１に示す非同期転送回路３３では、遅延ストローブ信号ＤＱＳｄに基づくウインドウに対して、算出した転送設定値ＦＳＰに基づくタイミングにてデータをラッチし、誤りの無い出力データＣＤを出力する。
【０１１７】
図７に示すレイテンシ補償回路３４は、レイテンシ設定値ＦＳＬに基づいて、リードデータＲＤを出力する。このリードデータＲＤの出力タイミングは、レイテンシ設定値ＦＳＬを変更する前と比べ、コアクロック信号ＣＫｃの１サイクル分遅くなる。したがって、受信回路２４は、非同期転送回路３３における転送タイミングを１サイクル分早くし、レイテンシ補償回路３４における遅延時間を１サイクル分長くする。これにより、リードデータＲＤの出力タイミングは、転送設定値ＦＳＰを変更する前と同じとなる。つまり、受信回路２４は、転送タイミングに対するレイテンシを補償し、メモリコントローラ２１に対するリードデータＲＤのレイテンシを一定に保つ。
【０１１８】
図１４に示すように、ラウンド・トリップ・タイム（ＲＴＴ）が最も短い（ＦＡＳＴ）遅延ストローブ信号ＤＱＳｄ及びデータＤＱ０に基づいてデータ［Ａ０］，［Ｂ０］を保持する。また、ラウンド・トリップ・タイム（ＲＴＴ）が最も長い（ＳＬＯＷ）遅延ストローブ信号ＤＱＳｄ及びデータＤＱ１に基づいてデータ［Ａ１］，［Ｂ１］を保持する。
【０１１９】
図１に示すメモリコントローラ２１は、データ［Ａ０］，［Ｂ０］に対応するウインドウＷ０と、データ［Ａ１］，［Ｂ１］に対応するウインドウＷ１に基づいて、転送設定値ＦＳＰを設定する。この場合、データＤＱ０に対応する判定回路３８と、データＤＱ１に対応する判定回路３８は、それぞれ「判定ＯＫ」の判定信号ＥＸ０，ＥＸ１を出力する。
【０１２０】
図１４において、一点鎖線の下側にて示すように、ＶＴドリフトによって、ウインドウＷ０，Ｗ１に対して時間的にΔｔだけウインドウＷ０ａ，Ｗ１ａがずれる。この場合、上記の転送設定値ＦＳＰによる取り込みタイミングＴＰ０は、ウインドウＷ１ａの範囲内であるため、このタイミングＴＰ０にてデータ［Ａ１］，［Ｂ１］を取り込むことができる。
【０１２１】
一方、タイミングＴＰ０は、ウインドウＷ０ａの範囲からずれる。したがって、このタイミングＴＰ０では、連続的にデータを読み出す場合、リードデータに誤りを生じる。
本実施形態では、データＤＱ０に対応する判定回路３８は、「判定ＮＧ」の判定信号ＥＸ０を出力する。そして、図７に示す設定値算出回路３９は、判定信号ＥＸ０に基づいて、転送設定値ＦＳＰを「−１」して新たな転送設定値ＦＳＰを算出する。この新たな転送設定値ＦＳＰに基づいて、図１４に示すタイミングＴＰ１を設定する。このタイミングＴＰ１は、ウインドウＷ０ａの範囲内である。このため、このタイミングＴＰ１にてデータ［Ａ０］，［Ｂ０］を取り込むことができる。
【０１２２】
このように、本実施形態の受信回路２４は、タイミングＴＰ１にてデータ［Ａ０］，［Ｂ０］を取り込み、タイミングＴＰ０にてデータ［Ａ１］，［Ｂ１］を取り込む。したがって、受信回路２４は、データＤＱ０，ＤＱ１について、データを取り込むウインドウの実質的な幅を拡大する。このように、ウインドウの幅の拡大により、遅延ストローブ信号ＤＱＳｄからコアクロック信号ＣＫｃへ安定したドメインチェンジを行い、リードデータＲＤにおける誤りを低減する。
【０１２３】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（１−１）受信回路２４の制御信号生成回路３５は、遅延ストローブ信号ＤＱＳｄに基づいてイネーブル信号ＥＮ１を生成し、転送設定値ＦＳＰ、リード制御信号ＲＣＮＴ、コアクロック信号ＣＫｃに基づいてイネーブル信号ＥＮ２を生成する。非同期転送回路３３は、イネーブル信号ＥＮ１と遅延ストローブ信号ＤＱＳｄに基づいて受信データＲＤＱをラッチし、イネーブル信号ＥＮ２とコアクロック信号ＣＫｃに基づいて出力データＣＤを出力する。パターン信号生成回路（ＰＧ）３６は、イネーブル信号ＥＮ１を入力する毎に、論理値を反転した判定用パターンデータＴＤを生成する。非同期転送回路３７は、イネーブル信号ＥＮ１と遅延ストローブ信号ＤＱＳｄに基づいて判定用パターンデータＴＤをラッチし、イネーブル信号ＥＮ２とコアクロック信号ＣＫｃに基づいて判定用データＣＴを出力する。判定回路３８は、判定用データＣＴに基づいて、転送設定値ＦＳＰに基づくイネーブル信号ＥＮ２を生成するポインタ制御信号のタイミングを判定する。そして、設定値算出回路３９は、判定回路３８の判定結果に基づいて転送設定値ＦＳＰを算出する。
【０１２４】
非同期転送回路３７は、判定用パターンデータＴＤをイネーブル信号ＥＮ１と遅延ストローブ信号ＤＱＳｄに基づいてラッチする。そのラッチタイミングは、非同期転送回路３３における受信データＲＤＱの受信タイミング、つまり、メモリ装置１２に対するラウンド・トリップ・タイム（ＲＴＴ）に対応する。非同期転送回路３７は、ラッチしたデータを、イネーブル信号ＥＮ２とコアクロック信号ＣＫｃに基づいてラッチし、判定用データＣＴを出力する。判定用データＣＴの値は、イネーブル信号ＥＮ２とコアクロック信号ＣＫｃによりラッチするタイミング、つまり遅延ストローブ信号ＤＱＳｄからコアクロック信号ＣＫｃへドメインチェンジするタイミングに応じて変化する。したがって、判定用データＣＴを判定した判定結果に基づいて転送設定値ＦＳＰを算出することにより、転送設定値ＦＳＰによりドメインチェンジのタイミングを調整することができる。この結果、非同期転送回路３３の出力データＣＤにおける誤りを低減することができる。
【０１２５】
（１−２）設定値算出回路３９は、転送設定値ＦＳＰに基づいてレイテンシ設定値ＦＳＬを算出する。たとえば、設定値算出回路３９は、設定値に対してＤＱＳが遅いと判定した場合、転送設定値ＦＳＰを「＋１」し、その転送設定値ＦＳＰに応じてレイテンシ設定値ＦＳＬを「−１」する。転送設定値ＦＳＰにより、非同期転送回路３３における判定用データＣＴのタイミングが遅れる。その分、レイテンシ設定値ＦＳＬによりレイテンシ補償回路３４の遅延時間を短くすることで、リードデータＲＤの出力タイミング、つまりメモリコントローラ２１に対するリードデータＲＤの出力タイミングが一定となる。この結果、メモリコントローラ２１に対するレイテンシを補償することができる。
【０１２６】
（１−３）非同期転送回路３７を非同期転送回路３３と同様に、ＦＦ回路８１０〜８１７，８２０〜８２７を有するものとした。非同期転送回路３３における遅延ストローブ信号ＤＱＳｄ等の各種の信号を伝達する配線と、非同期転送回路３７における配線は、互いに等しい状態となる。これにより、信号の伝達が非同期転送回路３３と非同期転送回路３７とで同様となり、非同期転送回路３７の動作タイミングが非同期転送回路３３の動作タイミングと同じとなる。したがって、メモリ装置１２に対するデータＤＱのラウンド・トリップ・タイム（ＲＴＴ）を、非同期転送回路３７において再現することができる。そして、この非同期転送回路３７から出力される判定用データＣＴにより、ポインタ制御信号ＰＣＮＴのタイミング、つまり非同期転送回路３３のイネーブル信号Ｃ００〜Ｃ０３の生成タイミングを精度よく調整することができる。
【０１２７】
（第二実施形態）
以下、第二実施形態を説明する。
なお、この実施形態において、上記実施形態と同じ構成部材については同じ符号を付し、その説明及び図の全てまたは一部を省略する。
【０１２８】
図１８は、本実施形態の受信回路３００の一部ブロック回路を示す。
この受信回路３００の制御信号生成回路３０１は、ポインタ制御回路３１１を含む。このポインタ制御回路３１１は、上記第一実施形態のポインタ制御回路４３と同様に、転送設定値ＦＳＰに応じてリード制御信号ＲＣＮＴを遅延したポインタ制御信号ＰＣＮＴを出力する。
【０１２９】
また、ポインタ制御回路３１１は、ポインタ制御信号ＰＣＮＴより早いタイミングで変化するファースト制御信号ＰＣＦを出力する。更に、ポインタ制御回路３１１は、ポインタ制御信号ＰＣＮＴより遅いタイミングのスロー制御信号ＰＣＳを出力する。
【０１３０】
たとえば、ポインタ制御回路３１１は、図４に示すポインタ制御回路４３と同様に、直列に接続された複数のフリップフロップ回路（ＦＦ回路）を有している。ポインタ制御回路３１１は、転送設定値ＦＳＰに応じたＦＦ回路の出力信号をポインタ制御信号ＰＣＮＴとして出力する。そして、ポインタ制御回路３１１は、そのポインタ制御信号ＰＣＮＴとしたＦＦ回路の前段のＦＦ回路の出力信号をファースト制御信号ＰＣＦとして出力する。このファースト制御信号ＰＣＦの変化（たとえば立ち上がりエッジ）のタイミングは、ポインタ制御信号ＰＣＮＴのタイミングより、コアクロック信号ＣＫｃの１サイクル分、早い。
【０１３１】
また、ポインタ制御回路３１１は、ポインタ制御信号ＰＣＮＴとしたＦＦ回路の後段のＦＦ回路の出力信号をスロー制御信号ＰＣＳとして出力する。このスロー制御信号ＰＣＳの変化（たとえば立ち上がりエッジ）のタイミングは、ポインタ制御信号ＰＣＮＴのタイミングより、コアクロック信号ＣＫｃの１サイクル分、遅い。
【０１３２】
ＢＬカウンタ４４，４４Ｆ，４４Ｓは、４個のＦＦ回路を有する４進のワンホット・ステート・カウンタ（one-hot state counter）である。ＢＬカウンタ４４は、ポインタ制御信号ＰＣＮＴに基づいて機能を有効とし、コアクロック信号ＣＫｃをカウントしてイネーブル信号Ｃ００〜Ｃ０３を生成する。ＢＬカウンタ４４Ｆは、ファースト制御信号ＰＣＦに基づいて機能を有効とし、コアクロック信号ＣＫｃをカウントしてファーストイネーブル信号ＣＦ０〜ＣＦ３を生成する。ＢＬカウンタ４４Ｓは、スロー制御信号ＰＣＳに基づいて機能を有効とし、コアクロック信号ＣＫｃをカウントしてスローイネーブル信号ＣＳ０〜ＣＳ３を生成する。
【０１３３】
第２の非同期転送回路３１２は、１つの第１ラッチ回路３７ａと２つの第２ラッチ回路３７Ｆ，３７Ｓを有している。第１ラッチ回路３７ａは第３のラッチ回路の一例、第２ラッチ回路３７Ｆは第４のラッチ回路の一例、第２ラッチ回路３７Ｓは第５のラッチ回路の一例である。一方の第２ラッチ回路３７Ｆにはファーストイネーブル信号ＣＦ０〜ＣＦ３が供給され、他方の第２ラッチ回路３７Ｓにはスローイネーブル信号ＣＳ０〜ＣＳ３が供給される。
【０１３４】
第２ラッチ回路３７Ｆは、ファーストイネーブル信号ＣＦ０〜ＣＦ３に基づいてラッチ機能を有効とする。そして、第２ラッチ回路３７Ｆは、コアクロック信号ＣＫｃの立ち上がりエッジに基づいて転送信号ＤＴをラッチし、ファースト判定用データＣＴＦを出力する。同様に、第２ラッチ回路３７Ｓは、スローイネーブル信号ＣＳ０〜ＣＳ３に基づいてラッチ機能を有効とする。そして、第２ラッチ回路３７Ｓは、コアクロック信号ＣＫｃの立ち上がりエッジに基づいて転送信号ＤＴをラッチし、スロー判定用データＣＴＳを出力する。
【０１３５】
判定回路３１３は、第１判定回路３８Ｆと第２判定回路３８Ｓを有している。第１判定回路３８Ｆは第１の判定回路の一例、第２判定回路３８Ｓは第２の判定回路の一例である。第１判定回路３８Ｆは、図７に示す判定回路３８と同様に、ファーストイネーブル信号ＣＦ０に基づいて期待値データを生成する。そして、判定回路３８は、その期待値データとファースト判定用データＣＴＦを比較（排他的論理和演算）し、判定信号ＥＸＦを出力する。たとえば、第１判定回路３８Ｆは、ファースト判定用データＣＴＦとして、上記第一実施形態と同様に、判定用データＣＴ０，ＣＴ１を期待値データとそれぞれ比較（排他的論理和演算）する。そして、判定用データＣＴ０，ＣＴ１の演算結果がともに「０」の場合、値が「０」の判定信号ＥＸＦを出力する。一方、判定用データＣＴ０，ＣＴ１の少なくとも一方が「１」の場合、値が「１」の判定信号ＥＸＦを出力する。
【０１３６】
第２判定回路３８Ｓは、第１判定回路３８Ｆと同様に、スローイネーブル信号ＣＳ０に基づいて期待値データを生成する。そして、判定回路３８は、その期待値データとスロー判定用データＣＴＳを比較（排他的論理和演算）し、判定信号ＥＸＳを出力する。
【０１３７】
設定値算出回路３１４は、第１判定回路３８Ｆの判定信号ＥＸＦに基づいて、ファースト制御信号ＰＣＦのタイミングを「ＯＫ判定」または「ＮＧ判定」と判定する。また、設定値算出回路３１４は、第２判定回路３８Ｓの判定信号ＥＸＳに基づいて、スロー制御信号ＰＣＳのタイミングを「ＯＫ判定」または「ＮＧ判定」と判定する。そして、設定値算出回路３１４は、両判定結果に基づいて、転送設定値ＦＳＰを算出する。また、設定値算出回路３１４は、転送設定値ＦＳＰに基づいてレイテンシ設定値ＦＳＬを算出する。
【０１３８】
図１９は、設定値算出回路３１４における処理を示す。
先ず、ステップ３２１において、設定値算出回路３１４は、デフォルト値を設定する。デフォルト値は、図１に示すメモリコントローラ２１から供給される転送初期値ＦＳＯと、その転送設定値に応じたレイテンシの初期値である。設定値算出回路３１４は、メモリコントローラ２１から供給される転送設定値を転送設定値ＦＳＰに設定する。また、設定値算出回路３１４は、レイテンシ設定値ＦＳＬに初期値を設定する。
【０１３９】
そして、設定値算出回路３１４は、図１８に示す第１判定回路３８Ｆから出力される判定信号ＥＸＦに基づいて第１判定回路３８Ｆを「ＯＫ判定」または「ＮＧ判定」とする。また、設定値算出回路３１４は、図１８に示す第２判定回路３８Ｓから出力される判定信号ＥＸＳに基づいてその第２判定回路３８Ｓを「ＯＫ判定」または「ＮＧ判定」とする。
【０１４０】
先ず、ステップ３２２において、設定値算出回路３１４は、第１判定回路３８Ｆ（「判定回路（ＳＬＯＷ）」と表記）が「ＯＫ判定」かつ第２判定回路３８Ｓ（「判定回路（ＦＡＳＴ）」と表記）が「ＮＧ判定」の場合（判定：ＹＥＳ）、ステップ３２３に移行する。そのステップ３２３への移行は、「設定値に対してＤＱＳが遅い」場合に行われる。このステップ３２３において、設定値算出回路３１４は、転送設定値ＦＳＰを「＋１」し、レイテンシ設定値ＦＳＬを「−１」する。そして、設定値算出回路３１４は、処理をステップ３２２へ移行する。
【０１４１】
次に、ステップ３２４において、設定値算出回路３１４は、第１判定回路３８Ｆが「ＯＫ判定」かつ第２判定回路３８Ｓが「ＮＧ判定」の場合（判定：ＹＥＳ）、ステップ３２５に移行する。そのステップ３２５への移行は、「設定値に対してＤＱＳが早い」場合に行われる。このステップ３２５において、設定値算出回路３１４は、転送設定値ＦＳＰを「−１」し、レイテンシ設定値ＦＳＬを「＋１」する。そして、設定値算出回路３１４は、処理をステップ３２２へ移行する。
【０１４２】
次に、ステップ３２６において、設定値算出回路３１４は、第１判定回路３８Ｆが「ＯＫ判定」かつ第２判定回路３８Ｓが「ＮＧ判定」の場合（判定：ＹＥＳ）、「設定値に対してＤＱＳが適切」である。このため、設定値算出回路３１４は、転送設定値ＦＳＰとレイテンシ設定値ＦＳＬをそのままとし、処理をステップ３２２へ移行する。
【０１４３】
一方、ステップ３２６において判定が「ＮＯ」、つまり第１判定回路３８Ｆと第２判定回路３８Ｓがともに「ＮＧ判定」の場合、設定値算出回路３１４は、ステップ３２７に移行する。そのステップ３２７において、設定値算出回路３１４は、エラー処理を行い、ステップ３２１へ移行する。たとえば、設定値算出回路３１４は、エラー処理において、図１に示すメモリコントローラ２１にエラー情報を通知する。メモリコントローラ２１は、そのエラー情報に基づいて、トレーニング処理を行い、その処理結果に基づいて転送設定値ＦＳＰを再設定する。
【０１４４】
次に、本実施形態の受信回路３００の作用を説明する。
図１に示すメモリコントローラ２１は、たとえばシステム装置１１の起動時に、トレーニング処理を実行して１つの転送初期値ＦＳＯを設定する。図１８に示す受信回路３００の設定値算出回路３１４は、その転送初期値ＦＳＯと等しい転送設定値ＦＳＰを算出する。そして、ポインタ制御回路３１１は、転送設定値ＦＳＰに応じたサイクルのポインタ制御信号ＰＣＮＴを生成する。ＢＬカウンタ４４は、ポインタ制御信号ＰＣＮＴに基づいてイネーブル信号Ｃ００〜Ｃ０３を生成する。そのイネーブル信号Ｃ００に基づくタイミングは、たとえば、図１４に矢印にて示すタイミングＴＰ０である。
【０１４５】
図１８に示すポインタ制御回路３１１は、上記のポインタ制御信号ＰＣＮＴよりも１サイクル早いファースト制御信号ＰＣＦと、ポインタ制御信号ＰＣＮＴよりも１サイクル遅いスロー制御信号ＰＣＳを生成する。ＢＬカウンタ４４Ｆは、ファースト制御信号ＰＣＦに基づいてファーストイネーブル信号ＣＦ０〜ＣＦ３を生成する。ＢＬカウンタ４４Ｓは、スロー制御信号ＰＣＳに基づいてスローイネーブル信号ＣＳ０〜ＣＳ３を生成する。
【０１４６】
ファーストイネーブル信号ＣＦ０に基づくタイミングは、たとえば図１４に示すタイミングＴＰ０よりも１サイクル早い（図において左側）のコアクロック信号ＣＫｃの立ち上がりエッジのタイミング（ファーストタイミング）である。一方、スローイネーブル信号ＣＳ０に基づくタイミングは、図１４に示すタイミングＴＰ０よりも１サイクル遅い（図において右側）のコアクロック信号ＣＫｃの立ち上がりエッジのタイミング（スロータイミング）である。
【０１４７】
たとえば、図１４において、データＤＱ０を保持したデータ［Ａ０］，［Ｂ０］のウインドウＷ０に対して、上記のタイミングＴＰ０及びファーストタイミングはウインドウＷ０の範囲内であり、スロータイミングは範囲外である。この場合、転送設定値ＦＳＰに対して遅延ストローブ信号ＤＱＳｄが早い。したがって、図１８に示す第２判定回路３８Ｓは、「ＮＧ判定」の判定信号ＥＸＳを出力する。設定値算出回路３１４は、判定信号ＥＸＳに基づいて、転送設定値ＦＳＰを「−１」して新たな転送設定値ＦＳＰを算出する。この新たな転送設定値ＦＳＰに基づいて、ＢＬカウンタ４４，４４Ｆ，４４Ｓは、それぞれ１サイクル早いタイミングでイネーブル信号を生成する。この結果、生成されたイネーブル信号に基づく３つのタイミングは、図１４において、ウインドウＷ０の範囲となる。
【０１４８】
そして、図１８に示す非同期転送回路３３の第２ラッチ回路３３ｂは、イネーブル信号Ｃ００〜Ｃ０３に基づいて、第１ラッチ回路３３ａの出力する信号ＤＤを保持する。このとき、イネーブル信号Ｃ００のタイミングは、図１４に示すウインドウＷ０の範囲内に設定された３つのタイミングのうちの中央のタイミングである。図１８に示す第２ラッチ回路３３ｂは、ウインドウＷ０の中央付近のタイミングで信号ＤＤ（ＤＱ０）を保持する。つまり、受信回路３００は、データＤＱ０について、最適なタイミングを設定する。
【０１４９】
また、図１４において、データＤＱ０を保持したデータ［Ａ１］，［Ｂ１］のウインドウＷ１に対して、上記のタイミングＴＰ０及びスロータイミングはウインドウＷ１の範囲内であり、ファーストタイミングは範囲外である。この場合、転送設定値ＦＳＰに対して遅延ストローブ信号ＤＱＳｄが遅い。したがって、図１８に示す第１判定回路３８Ｆは、「ＮＧ判定」の判定信号ＥＸＦを出力する。設定値算出回路３１４は、判定信号ＥＸＦに基づいて、転送設定値ＦＳＰを「＋１」して新たな転送設定値ＦＳＰを算出する。この新たな転送設定値ＦＳＰに基づいて、ＢＬカウンタ４４，４４Ｆ，４４Ｓは、それぞれ１サイクル遅いタイミングでイネーブル信号を生成する。この結果、生成されたイネーブル信号に基づく３つのタイミングは、図１４において、ウインドウＷ１の範囲となる。
【０１５０】
そして、図１８に示す非同期転送回路３３の第２ラッチ回路３３ｂは、イネーブル信号Ｃ００〜Ｃ０３に基づいて、第１ラッチ回路３３ａの出力する信号ＤＤを保持する。このとき、イネーブル信号Ｃ００のタイミングは、図１４に示すウインドウＷ１の範囲内に設定された３つのタイミングのうちの中央のタイミングである。図１８に示す第２ラッチ回路３３ｂは、ウインドウＷ１の中央付近のタイミングで信号ＤＤ（ＤＱ１）を保持する。つまり、受信回路３００は、データＤＱ１について、最適なタイミングを設定する。
【０１５１】
図２０に示すように、ラウンド・トリップ・タイム（ＲＴＴ）が最も短い（ＦＡＳＴ）遅延ストローブ信号ＤＱＳｄ及びデータＤＱ０に基づいてデータ［Ａ０］，［Ｂ０］を保持する。データ［Ａ０］，［Ｂ０］に対応するウインドウＷ０は、ＶＴドリフトによって、時間的にΔｔだけずれたウインドウＷ０ａとなる。この場合、転送設定値ＦＳＰに基づくタイミングＴＰＦ０に対して、１サイクル早いタイミングＴＰＦ１は、ウインドウＷ０ａの範囲からずれる。この場合、転送設定値ＦＳＰに対して遅延ストローブ信号ＤＱＳｄが遅い。したがって、設定値算出回路３１４は、判定信号ＥＸＦ，ＥＸＳに基づいて、転送設定値ＦＳＰを「＋１」して新たな転送設定値ＦＳＰを算出する。この転送設定値ＦＳＰに基づいて、イネーブル信号Ｃ００の生成タイミングが、コアクロック信号ＣＫｃの１サイクル分遅くなり（図において右側に移動する）、タイミングＴＰＦ２となる。また、設定値算出回路３１４は、レイテンシ設定値ＦＳＬを「−１」して新たなレイテンシ設定値ＦＳＬを算出する。これにより、リードコマンド（「ＲＥＡＤ」と表記）からリードデータＲＤ（Ａ），ＲＤ（Ｂ）のタイミングは変化しない。
【０１５２】
また、図２０に示すように、ラウンド・トリップ・タイム（ＲＴＴ）が最も長い（ＳＬＯＷ）遅延ストローブ信号ＤＱＳｄ及びデータＤＱ１に基づいてデータ［Ａ１］，［Ｂ１］を保持する。データ［Ａ１］，［Ｂ１］に対応するウインドウＷ１は、ＶＴドリフトによって、時間的にΔｔだけずれたウインドウＷ１ａとなる。この場合、転送設定値ＦＳＰに基づくタイミングＴＰＳ０に対して、１サイクル早いタイミングＴＰＳ１は、ウインドウＷ１ａの範囲からずれる。この場合、転送設定値ＦＳＰに対して遅延ストローブ信号ＤＱＳｄが遅い。したがって、設定値算出回路３１４は、判定信号ＥＸＦ，ＥＸＳに基づいて、転送設定値ＦＳＰを「＋１」して新たな転送設定値ＦＳＰを算出する。この転送設定値ＦＳＰに基づいて、イネーブル信号Ｃ００の生成タイミングが、コアクロック信号ＣＫｃの１サイクル分遅くなり（図において右側に移動する）、タイミングＴＰＳ２となる。また、設定値算出回路３１４は、レイテンシ設定値ＦＳＬを「−１」して新たなレイテンシ設定値ＦＳＬを算出する。これにより、リードコマンド（「ＲＥＡＤ」と表記）からリードデータＲＤ（Ａ），ＲＤ（Ｂ）のタイミングは変化しない。
【０１５３】
以上記述したように、本実施形態によれば、以下の効果を奏する。
（２−１）ポインタ制御回路３１１は、転送設定値ＦＳＰに応じてリード制御信号ＲＣＮＴを遅延したポインタ制御信号ＰＣＮＴを出力する。ポインタ制御回路３１１は、ポインタ制御信号ＰＣＮＴより早いタイミングで変化するファースト制御信号ＰＣＦを出力する。更に、ポインタ制御回路３１１は、ポインタ制御信号ＰＣＮＴより遅いタイミングのスロー制御信号ＰＣＳを出力する。
【０１５４】
ＢＬカウンタ４４は、ポインタ制御信号ＰＣＮＴに基づいてイネーブル信号Ｃ００〜Ｃ０３を生成する。ＢＬカウンタ４４Ｆは、ファースト制御信号ＰＣＦに基づいてファーストイネーブル信号ＣＦ０〜ＣＦ３を生成する。ＢＬカウンタ４４Ｓは、スロー制御信号ＰＣＳに基づいてスローイネーブル信号ＣＳ０〜ＣＳ３を生成する。第２ラッチ回路３７Ｆは、ファーストイネーブル信号ＣＦ０〜ＣＦ３に基づいて、第１ラッチ回路３７ａからの転送信号ＤＴをラッチしてファースト判定用データＣＴＦを出力する。第２ラッチ回路３７Ｓは、スローイネーブル信号ＣＳ０〜ＣＳ３に基づいて、第１ラッチ回路３７ａからの転送信号ＤＴをラッチしてスロー判定用データＣＴＳを出力する。第１判定回路３８Ｆは、ファースト判定用データＣＴＦに基づいて、判定信号ＥＸＦを出力する。第２判定回路３８Ｓは、スロー判定用データＣＴＳに基づいて、判定信号ＥＸＳを出力する。設定値算出回路３１４は、第１判定回路３８Ｆの判定結果と、第２判定回路３８Ｓの判定結果に基づいて、転送設定値ＦＳＰを算出する。この転送設定値ＦＳＰは、受信データＲＤＱのウインドウに対してそのウインドウのほぼ中央にポインタ制御信号ＰＣＮＴを設定する。これにより、受信データＲＤＱのウインドウに対して最適なポインタ制御信号ＰＣＮＴを設定することができる。
【０１５５】
（２−２）設定値算出回路３１４は、第１判定回路３８Ｆの判定信号ＥＸＦと、第２判定回路３８Ｓの判定信号ＥＸＳに基づいて、転送設定値ＦＳＰを算出し、ポインタ制御信号ＰＣＮＴのタイミングを調整する。第１判定回路３８Ｆが判定するタイミングは、ポインタ制御信号ＰＣＮＴのタイミング、つまり非同期転送回路３３がドメインチェンジするタイミングより早い。一方、第２判定回路３８Ｓが判定するタイミングは、ポインタ制御信号ＰＣＮＴのタイミング、つまり非同期転送回路３３がドメインチェンジするタイミングより遅い、したがって、ポインタ制御信号ＰＣＮＴのタイミングは、常にデータＤＱのウインドウの範囲内となる。この結果、リードデータＲＤにおける誤りを低減することができる。
【０１５６】
尚、上記各実施形態は、以下の態様で実施してもよい。
・上記実施形態では、非同期転送回路３７を非同期転送回路３３と同様に、ＦＦ回路８１０〜８１７，８２０〜８２７を有するものとした。タイミングの判定には、上記実施形態にて示したように、判定信号ＥＸ０，ＥＸ１を用いればよい。したがって、図６において、ＦＦ回路８１０，８１１，８２０，８２１を含む非同期転送回路としてもよい。それにともない、図７において、排他的論理和（ＥｘＯＲ）回路９２０，９２１を含む判定回路としてもよい。
【０１５７】
・上記実施形態は、バースト長を「８」に設定した場合を示したが、他の値をバースト長に設定してもよい。
・上記実施形態は、最小ウインドウ幅の判定を行った。最小ウインドウ幅は、上記実施形態で述べたように、読み出しを連続的に行う場合に、その読み出しによりデータＤＱのドメインチェンジが可能なウインドウの幅である。断続的にメモリ装置１２に対するアクセスを行うシステム装置や断続的にメモリ装置１２をアクセスする動作の場合、連続的なリード動作（たとえば、コマンドの入れ替えやダミーのリードコマンド）により、２つ以上の連続したリードアクセスを行うことで、ウインドウ幅の判定を行い、タイミングを調整することができる。
【０１５８】
・実施形態では、データＤＱ等の出力タイミングを調整するトレーニング動作を行うメモリコントローラ２１を用いたが、トレーニング動作を行う機能を有していないメモリコントローラを用いて実施してもよい。
【０１５９】
・実施形態では、メモリコントローラ２１がトレーニング動作を行うこととしたが、その他の回路、例えばコア回路がトレーニング動作を実行するようにしてもよい。
【符号の説明】
【０１６０】
３３，３７  非同期転送回路
３４  レイテンシ補償回路
３５  制御信号生成回路
３６  パターンジェネレータ
３８  判定回路
３９  設定値算出回路
ＤＱ  データ
ＤＱＳｄ  遅延ストローブ信号
ＥＮ１，ＥＮ２  イネーブル信号
ＣＰ０〜ＣＰ３，ＣＮ０〜ＣＮ３  イネーブル信号
Ｃ００〜Ｃ０３  イネーブル信号
ＦＳＯ  転送初期値
ＦＳＰ  転送設定値
ＦＳＬ  レイテンシ設定値
ＲＤ  リードデータ
【図１】
0006451505.tif 000002
【図２】
0006451505.tif 000003
【図３】
0006451505.tif 000004
【図４】
0006451505.tif 000005
【図５】
0006451505.tif 000006
【図６】
0006451505.tif 000007
【図７】
0006451505.tif 000008
【図８】
0006451505.tif 000009
【図９】
0006451505.tif 000010
【図１０】
0006451505.tif 000011
【図１１】
0006451505.tif 000012
【図１２】
0006451505.tif 000013
【図１３】
0006451505.tif 000014
【図１４】
0006451505.tif 000015
【図１５】
0006451505.tif 000016
【図１６】
0006451505.tif 000017
【図１７】
0006451505.tif 000018
【図１８】
0006451505.tif 000019
【図１９】
0006451505.tif 000020
【図２０】
0006451505.tif 000021