(58)【調査した分野】(Int.Cl.,DB名)
ストローブ信号に基づいて第1のイネーブル信号を生成し、リード制御信号と転送設定値とに応じたポインタ制御信号とコアクロック信号に基づいて第2のイネーブル信号を生成する制御信号生成回路と、
前記第1のイネーブル信号と前記ストローブ信号に基づいて受信データをラッチし、ラッチしたデータを前記第2のイネーブル信号と前記コアクロック信号に基づいて出力する第1の非同期転送回路と、
前記第1のイネーブル信号の変化に応じて論理を反転した判定用パターンデータを生成するパターン生成回路と、
前記第1のイネーブル信号と前記ストローブ信号に基づいて前記判定用パターンデータをラッチし、ラッチしたデータを前記第2のイネーブル信号と前記コアクロック信号に基づいて出力する第2の非同期転送回路と、
前記第2の非同期転送回路の出力データに基づいて、前記ポインタ制御信号の生成タイミングを判定する判定回路と、
前記判定回路の判定結果に基づいて前記転送設定値を算出する設定値算出回路と、
を有することを特徴とする受信回路。
前記判定回路は、前記第2のイネーブル信号に基づいて期待値データを生成し、前記期待値データと前記第2の非同期転送回路の出力データとを比較して前記ポインタ制御信号の生成タイミングを判定すること、
を特徴とする請求項1または2に記載の受信回路。
前記制御信号生成回路は、前記転送設定値に基づいて、前記第2のイネーブル信号より早いタイミングのファーストイネーブル信号と、前記第2のイネーブル信号より遅いタイミングのスローイネーブル信号とを生成し、
前記第1の非同期転送回路は、前記第1のイネーブル信号により前記受信データをラッチする第1ラッチ回路と、前記第1ラッチ回路の出力信号を前記第2のイネーブル信号によりラッチし出力する第2ラッチ回路と、を含み、
前記第2の非同期転送回路は、前記第1のイネーブル信号により前記判定用パターンデータをラッチする第3のラッチ回路と、前記ファーストイネーブル信号により前記第3のラッチ回路の出力信号をラッチする第4のラッチ回路と、前記スローイネーブル信号により前記第3のラッチ回路の出力信号をラッチする第5のラッチ回路と、を含み、
前記判定回路は、前記ファーストイネーブル信号に基づいて生成した期待値データと前記第4のラッチ回路の出力信号とを比較して前記ファーストイネーブル信号のタイミングを判定する第1の判定回路と、前記スローイネーブル信号に基づいて生成した期待値データと前記第5のラッチ回路の出力信号とを比較して前記スローイネーブル信号のタイミングを判定する第2の判定回路と、を含み、
前記設定値算出回路は、前記第1の判定回路の判定結果と前記第2の判定回路の判定結果に基づいて前記転送設定値を算出すること、
を特徴とする請求項1〜4のいずれか1項に記載の受信回路。
ストローブ信号に基づいて受信データを受信し、コアクロック信号に基づいて前記受信データに応じたリードデータを出力する受信回路において、前記コアクロック信号によるドメインチェンジのタイミングを調整する受信回路のタイミング調整方法であって、
前記ストローブ信号に基づいて第1のイネーブル信号を生成し、リード制御信号と転送設定値とに応じたポインタ制御信号とコアクロック信号に基づいて第2のイネーブル信号を生成し、
前記第1のイネーブル信号の変化に応じて論理を反転した判定用パターンデータを生成し、
前記第1のイネーブル信号と前記ストローブ信号に基づいて前記判定用パターンデータをラッチし、ラッチしたデータを前記第2のイネーブル信号と前記コアクロック信号に基づいてラッチして判定用データを生成し、
前記判定用データに基づいて前記ポインタ制御信号の生成タイミングを判定し、前記生成タイミングの判定結果に基づいて前記転送設定値を算出すること、
を特徴とする受信回路のタイミング調整方法。
【発明を実施するための形態】
【0011】
(第一実施形態)
以下、第一実施形態を説明する。
図1に示すように、このシステム10のシステム装置11は、メモリ装置12に接続されている。システム装置11は、たとえば1つのチップに中央処理装置(Central Processing Unit:CPU)などのコア回路と複数の周辺回路を含む半導体集積回路装置(LSI、例えばSoC(System on Chip))である。メモリ装置12は、同期式の半導体記憶装置、例えばDDR3−SDRAM(Double Data Rate 3 Synchronous Dynamic Random Access Memory)である。
【0012】
システム装置11のメモリコントローラ21は、コアクロック信号CKcに基づいて動作する。メモリコントローラ21は、コア回路からの要求に基づいて、インタフェース回路22を介して、メモリ装置12をアクセスする。たとえば、メモリコントローラ21は、コア回路からのリード要求に基づいて、リード命令RRQを出力する。また、メモリコントローラ21は、リード要求に基づいて、リード制御信号RCNTを出力する。また、メモリコントローラ21は、インタフェース回路22に対する転送初期値FSOを出力する。
【0013】
インタフェース回路22の送信回路23は、コアクロック信号CKcに基づいて、クロック信号CKTを出力する。また、送信回路23は、メモリコントローラ21から出力されるリード命令RRQに基づいて、リードコマンドRCMDを出力する。出力バッファ回路25aは、クロック信号CKTに基づいて、クロック信号CKを出力する。このクロック信号CKは、伝送路を介してメモリ装置12に供給される。出力バッファ回路25bは、リードコマンドRCMDに基づいてコマンドCMDを出力する。コマンドCMDは、伝送路を介してメモリ装置12に供給される。
【0014】
メモリ装置12は、クロック信号CKに基づいて、コマンドCMDを受信する。また、図示しないが、メモリ装置12は、クロック信号CKに基づいてリードアドレスを受信する。メモリ装置12は、コマンドCMDに基づいてリード動作を行う。メモリ装置12は、リード動作において、リードアドレスのメモリセルからバースト長(Burst Length:BL)に応じた数のデータを読み出す。バースト長は、1つのリードコマンドに応じてメモリ装置12が連続的に出力するデータの数である。バースト長は、たとえば、メモリコントローラ21により設定される。本実施形態では、たとえば、バースト長を「8」に設定した場合を説明する。そして、メモリ装置12は、データDQとデータストローブ信号DQSを出力する。データDQとデータストローブ信号DQSは、それぞれ伝送路を介してシステム装置11に供給される。
【0015】
入力バッファ回路27aは、データストローブ信号DQSに基づいて受信ストローブ信号RDQSを出力する。入力バッファ回路27bは、データDQに基づいて受信データRDQを出力する。
【0016】
受信回路24は、データDQについて、受信ストローブ信号RDQSからコアクロック信号CKcへ、クロックの乗せ換えを行う。そして、受信回路24は、受信ストローブ信号RDQSからコアクロック信号CKcへ乗せ換えを行うタイミング(設定値)を、転送初期値FSOに基づいて設定する。また、受信回路24は、その乗せ換えタイミングを、設定したタイミングに対する受信ストローブ信号RDQSの遅れや進みに基づいて、タイミング(設定値)を調整する。
【0017】
インタフェース回路22がメモリコントローラ21からリード命令RRQを入力してから、メモリコントローラ21にリードデータRDを出力するまでの時間は、リードレイテンシ(Read Latency:RL)である。リードレイテンシは、たとえばコアクロック信号CKcのサイクル数にて表される。インタフェース回路22がリードコマンドを出力してから、そのリードコマンドに対するデータDQを受信するまでの時間をラウンド・トリップ・タイム(Round Trip Time:RTT)という。
【0018】
ラウンド・トリップ・タイムは、システム10の環境温度の変化やシステム10が動作する電源電圧の変化(VTドリフト)によって変化する。これらの変化は、乗せ換えタイミング(設定値)と受信ストローブ信号RDQSとの間の相対的なタイミングにずれを生じさせる。このタイミングのずれは、高い周波数のクロック信号、ストローブ信号による高速なデータ転送の妨げとなる。受信回路24は、受信データRDQを受け取り可能な有効ウインドウに対して、コアクロック信号CKcに基づいて受信データRDQを受け取るタイミングを、受信したデータストローブ信号DQSに基づいて調整する。
【0019】
コアクロック信号CKcに基づいて動作するメモリコントローラ21は、リード要求を出力し、設定されたレイテンシのサイクル後にリードデータRDを受け取る。上記のように、コアクロック信号CKcにより受信データRDQを受け取るタイミングを調整すると、受け取った受信データのレイテンシとメモリコントローラ21のレイテンシとの間にずれが生じる。このため、受信回路24は、メモリコントローラ21のレイテンシに応じてリードデータRDを出力する、つまり、受信回路24は、メモリコントローラ21に対して、レイテンシを補償したリードデータRDを出力する。
【0020】
受信回路24の遅延同期ループ(Delay Locked Loop:DLL)回路(「DLL」と表記、以下DLL回路)31aには、リード制御信号RCNTとコアクロック信号CKcが供給される。また、DLL回路31aには、遅延値がたとえばメモリコントローラ21により設定される。DLL回路31aは、コアクロック信号CKcに基づいて、遅延値に応じてリード制御信号RCNTを遅延したゲート信号SG0を出力する。メモリコントローラ21は、メモリ装置12のリードレイテンシRLに基づいて、メモリ装置12から出力されるデータDQが到達するタイミングに応じた期間、Hレベルのリード制御信号RCNTを出力する。
【0021】
このDLL回路31aにおける遅延値は、接続されたメモリ装置12に応じて設定される。たとえば、メモリコントローラ21は、所定のタイミングにおいてトレーニング処理を実行し、その結果に応じた遅延値をDLL回路31aに設定する。トレーニング処理は、データDQを受信回路24で取り込むタイミングを較正(調整)する処理である。メモリコントローラ21は、所定のタイミング、たとえば、システム装置11の起動時や、システム装置11の動作中においてメモリ装置12をアクセスしない期間に、トレーニング処理を実行する。このトレーニング処理により、不要な期間におけるレベルによる誤ったデータの取り込みを防止する。
【0022】
ループバック入出力回路(「LBIO」と表記)26は、バッファ回路26a,26bを含む。バッファ回路26aは、上記の出力バッファ回路25a,25bと同じ電気的特性を持つ。バッファ回路26aは、入力信号に応答して出力信号を出力する。バッファ回路26aにおいて、入力信号に対する出力信号の遅延時間(遅延時間特性)は、出力バッファ回路25a,25bの遅延時間特性と同じである。バッファ回路26bは、上記の入力バッファ回路27a,27bと同じ電気的特性(遅延時間特性)を持つ。ループバック入出力回路26は、ゲート信号SG0を遅延した遅延ゲート信号SG1を出力する。
【0023】
ゲート回路32は、遅延ゲート信号に応じた期間、受信ストローブ信号RDQSを出力する。たとえば、ゲート回路32は論理積演算回路(AND回路)であり、遅延ゲート信号SG1と受信ストローブ信号RDQSとを論理積演算した結果に応じた内部ストローブ信号IDQSを出力する。
【0024】
遅延同期ループ回路(「DLL」と表記、以下DLL回路)31bには、遅延値が設定される。DLL回路31bは、コアクロック信号CKcに基づいて、遅延値に応じて内部ストローブ信号IDQSを遅延した遅延ストローブ信号DQSdを出力する。このDLL回路31bにおける遅延値は、遅延ストローブ信号DQSd、つまりデータストローブ信号DQSの周期に応じて設定されている。たとえば、DLL回路31bの遅延値は、内部ストローブ信号IDQSの周期の1/4(位相では90度)を基準値とし、上記のトレーニング処理により設定される。
【0025】
非同期転送回路33には、受信データRDQが供給される。また、非同期転送回路33には、遅延ストローブ信号DQSdとコアクロック信号CKcが供給される。また、非同期転送回路33には、制御信号生成回路35からイネーブル信号EN1,EN2が供給される。
【0026】
非同期転送回路33は、非同期式のFIFO(First In First Out)回路である。非同期転送回路33は、イネーブル信号EN1に基づいて入力機能を有効とし、遅延ストローブ信号DQSdに基づいて受信データRDQをラッチする。非同期転送回路33は、遅延ストローブ信号DQSdの立ち上がりエッジと立ち下がりエッジとに基づいて、バースト長に応じた複数の受信データRDQをラッチする。そして、非同期転送回路33は、イネーブル信号EN2に基づいて出力機能を有効とし、ラッチしたデータに応じた出力データCDをコアクロック信号CKcに基づいて出力する。
【0027】
レイテンシ補償回路34は、設定した遅延量に応じて非同期転送回路33の出力データCDを遅延してリードデータRDを出力する。レイテンシ補償回路34は、レイテンシ設定値FSLに基づいて、出力データCDに対するリードデータRDの遅延量を設定する。
【0028】
制御信号生成回路35には、後述する設定値算出回路39から転送設定値FSPが供給される。また、制御信号生成回路35には、コアクロック信号CKc、遅延ストローブ信号DQSd、リード制御信号RCNTが供給される。
図1に示すメモリコントローラ21は、トレーニング処理により設定した転送初期値FSOを出力する。設定値算出回路39は、転送初期値FSOに基づいて算出した転送設定値FSPを出力する。
【0029】
制御信号生成回路35は、遅延ストローブ信号DQSdに基づいて第1のイネーブル信号EN1を生成する。制御信号生成回路35は、転送設定値FSP、リード制御信号RCNT、コアクロック信号CKcに基づいて、第2のイネーブル信号EN2を生成する。制御信号生成回路35は、転送設定値FSPとコアクロック信号CKcに基づいて、リード制御信号RCNTを遅延した信号を生成する。そして、制御信号生成回路35は、その遅延信号とコアクロック信号CKcに基づいて第2のイネーブル信号EN2を生成する。
【0030】
パターン信号生成回路(パターンジェネレータ:PG)36は、イネーブル信号EN1に基づいて、判定用パターンデータTDを出力する。また、パターン信号生成回路36は、イネーブル信号EN1の変化に応じて判定用パターンデータTDの論理値を反転する。たとえば、パターン信号生成回路36は、イネーブル信号EN1を入力する毎(イネーブル信号EN1の立ち上がりエッジ毎)に、判定用パターンデータTDの論理値を反転する。したがって、判定用パターンデータTDの論理値は、イネーブル信号EN1に応じて、「0」→「1」→「0」へと変化する。
【0031】
上記したように、制御信号生成回路35は、遅延ストローブ信号DQSdをカウントしてイネーブル信号EN1を生成する。メモリ装置12は、バースト長のデータDQを、データストローブ信号DQSの立ち上がりエッジと立ち下がりエッジのタイミングで出力する。受信回路24のDLL回路31bは、受信ストローブ信号RDQSを遅延して遅延ストローブ信号DQSdを生成する。したがって、パターン信号生成回路36は、バースト長に応じたパルス数の遅延ストローブ信号DQSd毎に、イネーブル信号EN1の論理値を反転する。
【0032】
非同期転送回路37は、非同期転送回路33と同様である。つまり、非同期転送回路37には、遅延ストローブ信号DQSdとコアクロック信号CKcが供給される。また、非同期転送回路37には、イネーブル信号EN1,EN2が供給される。
【0033】
非同期転送回路37は、非同期式のFIFO(First In First Out)回路である。非同期転送回路37は、イネーブル信号EN1に基づいて入力機能を有効とし、遅延ストローブ信号DQSdに基づいて判定用パターンデータTDをラッチする。そして、非同期転送回路37は、イネーブル信号EN2に基づいて出力機能を有効とし、ラッチしたデータに応じた判定用データCTをコアクロック信号CKcに基づいて出力する。
【0034】
判定回路38には、判定用データCTが供給される。また、判定回路38には、コアクロック信号CKcとイネーブル信号EN2が供給される。
判定回路38は、イネーブル信号EN2に基づいて期待値データを生成する。また、判定回路38は、イネーブル信号EN2を入力する毎に、期待値データの論理値を反転する。つまり、判定回路38は、パターン信号生成回路36における判定用データCTと同様に、イネーブル信号EN2を入力する毎に、期待値データの論理値を、「0」→「1」→「0」へと変更する。判定回路38は、判定用データCTを期待値データと比較し、比較結果に応じた判定信号EXを出力する。
【0035】
設定値算出回路39には、メモリコントローラ21から転送初期値FSOが供給される。
設定値算出回路39は、判定回路38からの判定信号EXに基づいて転送設定値FSPを算出し、その転送設定値FSPを、制御信号生成回路35に出力する。また、設定値算出回路39は、判定回路38からの判定信号EXに基づいてレイテンシ設定値FSLを算出し、そのレイテンシ設定値FSLをレイテンシ補償回路34に出力する。
【0036】
図2に示すように、制御信号生成回路35は、BLカウンタ41,42、ポインタ制御回路43、BLカウンタ44を有している。
BLカウンタ41,42は、4進のワンホット・ステート・カウンタ(one-hot state counter)である。BLカウンタ41は、遅延ストローブ信号DQSdの立ち上がりエッジ(ポジティブエッジ)をカウントし、イネーブル信号CP0〜CP3を生成する。BLカウンタ42は、遅延ストローブ信号DQSdの立ち下がりエッジ(ネガティブエッジ)をカウントし、イネーブル信号CN0〜CN3を生成する。
【0037】
図3(a)に示すように、BLカウンタ41は、4つのフリップフロップ回路(FF回路)51a〜51dを有している。FF回路51a〜51dは、たとえばD型フリップフロップ回路である。各FF回路51a〜51dのクロック端子には遅延ストローブ信号DQSdが供給される。FF回路51a〜51cの出力端子(Q)はそれぞれFF回路51b〜51dの入力端子(データ端子D)に接続されている。FF回路51dの出力端子(Q)はFF回路51aの入力端子(データ端子D)に接続されている。FF回路51aは、リセット時にたとえばLレベルの信号がプリセット端子に供給され、Hレベルのイネーブル信号CP0を出力する。FF回路51b〜51dはリセット時にたとえばLレベルの信号がリセット端子に供給され、Lレベルのイネーブル信号CP1〜CP3を出力する。FF回路51a〜51dは、Hレベルの遅延ストローブ信号DQSdに基づいてデータ端子のレベルと等しいレベルのイネーブル信号CP0〜CP3を出力する。これらのイネーブル信号CP0〜CP3は
図1に示すイネーブル信号EN1に含まれる。
【0038】
図3(b)に示すように、BLカウンタ42は、4つのフリップフロップ回路(FF回路)52a〜52dを有している。FF回路52a〜52dは、たとえばD型フリップフロップ回路である。各FF回路52a〜52dのクロック端子には反転イネーブル信号xDQSdが供給される。反転イネーブル信号xDQSdは、たとえば
図1に示すDLL回路31bにおいて、遅延ストローブ信号DQSdをインバータ回路により論理反転して生成される。遅延ストローブ信号DQSdの立ち下がりエッジのタイミングは、反転イネーブル信号xDQSdの立ち上がりエッジのタイミングと等しい。したがって、BLカウンタ42において、反転イネーブル信号xDQSdを用いることで、BLカウンタ41と同じ回路により、遅延ストローブ信号DQSdの立ち下がりエッジ(ネガティブエッジ)に基づいたイネーブル信号CN0〜CN3を生成する。
【0039】
FF回路52a〜52cの出力端子(Q)はそれぞれFF回路52b〜52dの入力端子(データ端子D)に接続されている。FF回路52dの出力端子(Q)はFF回路52aの入力端子(データ端子D)に接続されている。FF回路52aは、リセット時にたとえばLレベルの信号がプリセット端子に供給され、Hレベルのイネーブル信号CN0を出力する。FF回路52b〜52dはリセット時にたとえばLレベルの信号がリセット端子に供給され、Lレベルのイネーブル信号CN1〜CN3を出力する。FF回路52a〜52dは、Hレベルの反転イネーブル信号xDQSdに基づいてデータ端子のレベルと等しいレベルのイネーブル信号CN0〜CN3を出力する。これらのイネーブル信号CN0〜CN3は
図1に示すイネーブル信号EN1に含まれる。
【0040】
図4に示すように、ポインタ制御回路43は、複数のフリップフロップ回路(FF回路)53a,53b,53c,・・・,53n−1,53nとマルチプレクサ(「MUX」と表記)54を有している。FF回路53a〜53nは、たとえばD型フリップフロップ回路である。複数のFF回路53a〜53nは、直列に接続されている。つまり、初段のFF回路53aの出力端子(Q)は2段目のFF回路53bの入力端子(データ端子D)に接続され、2段目のFF回路53bの出力端子(Q)は次段のFF回路53cの入力端子(データ端子D)に接続されている。そして、(n−1)段目のFF回路53n−1の出力端子(Q)は次段のFF回路53nの入力端子(データ端子D)に接続されている。
【0041】
FF回路53a〜53nのクロック端子にはコアクロック信号CKcが供給される。初段のFF回路53aの入力端子(データ端子D)にはリード制御信号RCNTが供給される。各FF回路53a〜53nは、Hレベルのコアクロック信号CKcに基づいて、データ端子のレベルと等しいレベルの信号RCa〜RCnを出力する。これらの信号RCa〜RCnは、マルチプレクサ54に供給される。
【0042】
マルチプレクサ54には転送設定値FSPが供給される。マルチプレクサ54は、信号RCa〜RCnのうち、転送設定値FSPに応じた信号を選択し、その選択した信号のレベルと等しいレベルのポインタ制御信号PCNTを出力する。
【0043】
初段のFF回路53aにはリード制御信号RCNTが供給され、次段以降のFF回路53b〜53nのデータ端子には前段のFF回路53a〜53n−aの出力信号が供給される。したがって、複数のFF回路53a〜53nは、コアクロック信号CKcに応じてリード制御信号RCNTを転送する。つまり、各FF回路53a〜53nは、初段のFF回路53aからの段数に応じてリード制御信号RCNTを遅延した信号RCa〜RCnを出力する。各FF回路53a〜53nにおける遅延時間は、コアクロック信号CKcの1周期(1サイクル)分である。そして、マルチプレクサ54は、転送設定値FSPに応じた信号を選択する。したがって、このポインタ制御回路43は、転送設定値FSPに応じサイクル数、リード制御信号RCNTを遅延したポインタ制御信号PCNTを出力する。このポインタ制御信号PCNTは、BLカウンタ44に供給される。
【0044】
BLカウンタ44は、4進のワンホット・ステート・カウンタ(One-hot state counter)である。BLカウンタ44は、コアクロック信号CKcをカウントし、イネーブル信号C00〜C03を生成する。
【0045】
BLカウンタ44は、4つのフリップフロップ回路(FF回路)55a〜55dを有している。FF回路55a〜55dは、たとえばD型フリップフロップ回路である。
FF回路55aは、イネーブル端子(EN)を有し、そのイネーブル端子(EN)に上記のポインタ制御信号PCNTが供給される。各FF回路55a〜55dのクロック端子にはコアクロック信号CKcが供給される。FF回路55a〜55cの出力端子(Q)はFF回路55b〜55dの入力端子(データ端子)に接続され、FF回路55dの出力端子(Q)はFF回路55aの入力端子(データ端子)に接続されている。
【0046】
FF回路55aは、リセット時にたとえばLレベルの信号がプリセット端子に供給され、Hレベルのイネーブル信号C00を出力する。FF回路55b〜55dはリセット時にたとえばLレベルの信号がリセット端子に供給され、Lレベルのイネーブル信号C01〜C03を出力する。FF回路55aは、ポインタ制御信号PCNTがHレベルのとき、Hレベルのコアクロック信号CKcに基づいてデータ端子のレベルと等しいレベルのイネーブル信号C00を出力する。FF回路55b〜55dは、イネーブル信号C00〜C02に基づいてイネーブル信号C01〜C03を出力する。そして、FF回路55aは、イネーブル信号C03に基づいてイネーブル信号C00を出力する。これらのイネーブル信号C00〜C03は
図1に示すイネーブル信号EN2に含まれる。
【0047】
図2に示すように、非同期転送回路33は、第1ラッチ回路33aと第2ラッチ回路33bを有している。第1ラッチ回路33aは第1のラッチ回路の一例、第2ラッチ回路33bは第2のラッチ回路の一例である。
【0048】
第1ラッチ回路33aには、遅延ストローブ信号DQSd、反転イネーブル信号xDQSd、イネーブル信号CP0〜CP3,CN0〜CN3が供給される。第2ラッチ回路33bには、コアクロック信号CKcとイネーブル信号C00〜C03が供給される。
【0049】
図5に示すように、第1ラッチ回路33aは、8個のフリップフロップ回路(FF回路)610〜617を有している。FF回路610〜617は、たとえばD型フリップフロップ回路である。各FF回路610〜617の入力端子(データ端子D)には受信データRDQが供給される。
【0050】
FF回路610,612,614,616のイネーブル端子(EN)にはイネーブル信号CP0〜CP3が供給される。FF回路610,612,614,616のクロック端子には遅延ストローブ信号DQSdが供給される。FF回路610,612,614,616は、イネーブル信号CP0〜CP3がHレベルのとき、Hレベルの遅延ストローブ信号DQSdに基づいて受信データRDQをラッチし、ラッチしたデータと等しいレベルの信号DD0,DD2,DD4,DD6を出力する。つまり、FF回路610,612,614,616は、遅延ストローブ信号DQSdの立ち上がりエッジ(Riseエッジ)のタイミングで受信データRDQに応じたレベルの信号DD0,DD2,DD4,DD6を出力する。
【0051】
FF回路611,613,615,617のイネーブル端子(EN)にはイネーブル信号CN0〜CN3が供給される。FF回路611,613,615,617のクロック端子には反転イネーブル信号xDQSdが供給される。FF回路611,613,615,617は、イネーブル信号CN0〜CN3がHレベルのとき、Hレベルの反転イネーブル信号xDQSdに基づいて受信データRDQをラッチし、ラッチしたデータと等しいレベルの信号DD1,DD3,DD5,DD7を出力する。つまり、FF回路611,613,615,617は、遅延ストローブ信号DQSdの立ち下がりエッジ(Fallエッジ)のタイミングで受信データRDQに応じたレベルの信号DD1,DD3,DD5,DD7を出力する。
【0052】
第2ラッチ回路33bは、8個のフリップフロップ回路(FF回路)620〜627を有している。FF回路620〜627は、たとえばD型フリップフロップ回路である。
FF回路620〜627のクロック端子にはコアクロック信号CKcが供給される。各FF回路620〜627の入力端子(データ端子D)には信号DD0〜DD7が供給される。FF回路620,621のイネーブル端子(EN)にはイネーブル信号C00が供給される。FF回路622,623のイネーブル端子(EN)にはイネーブル信号C01が供給される。FF回路624,625のイネーブル端子(EN)にはイネーブル信号C02が供給される。FF回路625,627のイネーブル端子(EN)にはイネーブル信号C03が供給される。
【0053】
FF回路620,621は、イネーブル信号C00がHレベルのとき、Hレベルのコアクロック信号CKcに基づいて信号DD0,DD1をラッチし、ラッチしたデータと等しいレベルの出力データCD0,CD1を出力する。同様に、FF回路622〜627は、イネーブル信号C01〜C03がHレベルのとき、Hレベルのコアクロック信号CKcに基づいて信号DD2〜DD7をラッチし、ラッチしたデータと等しいレベルの出力データCD2〜CD7を出力する。
【0054】
すなわち、第1ラッチ回路33aは、遅延ストローブ信号DQSdに依存したタイミングで、受信データRDQをラッチして信号DD0〜DD7を出力する。この第1ラッチ回路33aは、DQSドメインの回路である。そして、第2ラッチ回路33bは、コアクロック信号CKcに依存したタイミングで、信号DD0〜DD7をラッチして出力データCD0〜CD7を出力する。この第2ラッチ回路33bは、コアクロックドメインの回路である。
【0055】
図6に示すように、パターンジェネレータ36は、第1の信号生成回路36aと第2の信号生成回路36bを有している。
第1の信号生成回路36aは、遅延ストローブ信号DQSdとイネーブル信号CP3に基づいて、判定用パターンデータTDaを生成する。判定用パターンデータTDaは、第1の判定用パターンデータの一例である。
【0056】
第1の信号生成回路36aは、FF回路71aとインバータ回路72aを有している。FF回路71aは、たとえばイネーブル端子(EN)を有するDフリップフロップ回路である。FF回路71aのクロック端子には遅延ストローブ信号DQSdが供給される。FF回路71aのイネーブル端子(EN)にはイネーブル信号CP3が供給される。FF回路71aの出力端子はインバータ回路72aの入力端子に接続され、インバータ回路72aの出力端子はFF回路71aのデータ入力端子に接続されている。
【0057】
FF回路71aは、イネーブル信号CP3がHレベルの間に、遅延ストローブ信号DQSdの立ち上がりエッジに基づいて、入力端子のレベルと等しいレベルの判定用パターンデータTDaを出力する。インバータ回路72aは、判定用パターンデータTDaを論理反転したレベルの信号をFF回路71aに供給する。したがって、第1の信号生成回路36aは、イネーブル信号CP3がHレベルの期間において、遅延ストローブ信号DQSdの立ち上がりエッジのタイミングで判定用パターンデータTDaの論理レベルを反転する。
【0058】
第2の信号生成回路36bは、反転イネーブル信号xDQSdとイネーブル信号CN3に基づいて、判定用パターンデータTDbを生成する。判定用パターンデータTDbは、第2の判定用パターンデータの一例である。
【0059】
第2の信号生成回路36bは、FF回路71bとインバータ回路72bを有している。FF回路71bのクロック端子には反転イネーブル信号xDQSdが供給される。FF回路71bのイネーブル端子(EN)にはイネーブル信号CN3が供給される。FF回路71bの出力端子はインバータ回路72bの入力端子に接続され、インバータ回路72bの出力端子はFF回路71bのデータ入力端子に接続されている。
【0060】
FF回路71bは、イネーブル信号CN3がHレベルの間に、反転イネーブル信号xDQSdの立ち上がりエッジ、つまり遅延ストローブ信号DQSdの立ち下がりエッジに基づいて、入力端子のレベルと等しいレベルの判定用パターンデータTDbを出力する。インバータ回路72bは、判定用パターンデータTDbを論理反転したレベルの信号をFF回路71bに供給する。したがって、第2の信号生成回路36bは、イネーブル信号CN3がHレベルの期間において、反転イネーブル信号xDQSdの立ち上がりエッジ(遅延ストローブ信号DQSdの立ち下がりエッジ)のタイミングで判定用パターンデータTDbの論理レベルを反転する。
【0061】
図2に示すように、非同期転送回路37は、第1ラッチ回路37aと第2ラッチ回路37bを有している。第1ラッチ回路37aは第3のラッチ回路の一例、第2ラッチ回路33bは第4のラッチ回路の一例である。
【0062】
第1ラッチ回路37aには、遅延ストローブ信号DQSd、反転イネーブル信号xDQSd、イネーブル信号CP0〜CP3,CN0〜CN3が供給される。第2ラッチ回路37bには、コアクロック信号CKcとイネーブル信号C00〜C03が供給される。
【0063】
図6に示すように、第1ラッチ回路37aは、
図5に示す第1ラッチ回路33aと同様に、FF回路810〜817を含む。FF回路810〜817は、たとえば、D型フリップフロップ回路である。FF回路810,812,814,816のクロック端子には遅延ストローブ信号DQSdが供給される。FF回路810,812,814,816の入力端子(データ端子D)には判定用パターンデータTDaが供給される。FF回路810,812,814,816のイネーブル端子(EN)には、イネーブル信号CP0,CP1,CP2,CP3が供給される。
【0064】
FF回路810は、Hレベルのイネーブル信号CP0に基づいて、遅延ストローブ信号DQSdの立ち上がりエッジのタイミングで判定用パターンデータTDaをラッチし、そのラッチしたレベルと等しいレベルの転送信号DT0を出力する。同様に、FF回路812,814,816は、Hレベルのイネーブル信号CP1,CP2,CP3に基づいて、遅延ストローブ信号DQSdの立ち上がりエッジのタイミングで判定用パターンデータTDaをラッチし、そのラッチしたレベルと等しいレベルの転送信号DT2,DT4,DT6を出力する。つまり、FF回路810,812,814,816は、遅延ストローブ信号DQSdの立ち上がりエッジ(Riseエッジ)のタイミングで判定用パターンデータTDaに応じたレベルの転送信号DT0,DT2,DT4,DT6を出力する。
【0065】
FF回路811,813,815,817のクロック端子には反転イネーブル信号xDQSdが供給される。FF回路811,813,815,817の入力端子(データ端子D)には判定用パターンデータTDbが供給される。FF回路811,813,815,817のイネーブル端子(EN)には、イネーブル信号CN0,CN1,CN2,CN3が供給される。
【0066】
FF回路811は、Hレベルのイネーブル信号CN0に基づいて、反転イネーブル信号xDQSdの立ち上がりエッジのタイミングで判定用パターンデータTDbをラッチし、そのラッチしたレベルと等しいレベルの転送信号DT0を出力する。同様に、FF回路813,815,817は、Hレベルのイネーブル信号CN1,CN2,CN3に基づいて、反転イネーブル信号xDQSdの立ち上がりエッジのタイミングで判定用パターンデータTDbをラッチし、そのラッチしたレベルと等しいレベルの転送信号DT3,DT5,DT7を出力する。つまり、FF回路811,813,815,817は、遅延ストローブ信号DQSdの立ち下がりエッジ(Fallエッジ)のタイミングで判定用パターンデータTDbに応じたレベルの転送信号DT1,DT3,DT5,DT7を出力する。
【0067】
したがって、第1ラッチ回路37aは、イネーブル信号CP0〜CP3,CN0〜CN3に基づいてラッチ機能を有効とする。そして、第1ラッチ回路37aは、遅延ストローブ信号DQSdの立ち上がりエッジと立ち下がりエッジに基づいて判定用パターンデータTDa,TDbをラッチし、転送信号DT0〜DT7を出力する。
【0068】
第2ラッチ回路37bは、
図5に示す第2ラッチ回路33bと同様に、FF回路820〜827を含む。FF回路820〜827は、たとえばD型フリップフロップ回路である。FF回路820〜827のクロック端子にはコアクロック信号CKcが供給される。FF回路820〜827の入力端子(データ端子D)には転送信号DT0〜DT7が供給される。FF回路820,821のイネーブル端子(EN)には、イネーブル信号C00が供給される。FF回路822,823のイネーブル端子(EN)には、イネーブル信号C01が供給される。FF回路824,825のイネーブル端子(EN)には、イネーブル信号C02が供給される。FF回路826,827のイネーブル端子(EN)には、イネーブル信号C03が供給される。
【0069】
FF回路820,821は、Hレベルのイネーブル信号C00に基づいて、コアクロック信号CKcの立ち上がりエッジのタイミングで転送信号DT0,DT1をラッチし、そのラッチしたレベルと等しいレベルの判定用データCT0,CT1を出力する。同様に、FF回路822,823は、Hレベルのイネーブル信号C01に基づいて、コアクロック信号CKcの立ち上がりエッジのタイミングで転送信号DT2,DT3をラッチし、そのラッチしたレベルと等しいレベルの判定用データCT2,CT3を出力する。同様に、FF回路824,825は、Hレベルのイネーブル信号C02に基づいて、コアクロック信号CKcの立ち上がりエッジのタイミングで転送信号DT4,DT5をラッチし、そのラッチしたレベルと等しいレベルの判定用データCT4,CT5を出力する。同様に、FF回路826,827は、Hレベルのイネーブル信号C03に基づいて、コアクロック信号CKcの立ち上がりエッジのタイミングで転送信号DT6,DT7をラッチし、そのラッチしたレベルと等しいレベルの判定用データCT6,CT7を出力する。
【0070】
つまり、FF回路820〜827は、コアクロック信号CKcの立ち上がりエッジ(Riseエッジ)のタイミングで転送信号DT0〜DT7に応じたレベルの判定用データCT0〜CT7を出力する。したがって、第2ラッチ回路37bは、イネーブル信号C00〜C03に基づいてラッチ機能を有効とする。そして、第2ラッチ回路37bは、コアクロック信号CKcの立ち上がりエッジに基づいて転送信号DT0〜DT7をラッチし、判定用データCT0〜CT7を出力する。
【0071】
図7に示すように、判定回路38は、期待値データ生成回路38aを有している。期待値データ生成回路38aは、FF回路91aとインバータ回路91bを含む。
FF回路91aのクロック入力端子にはコアクロック信号CKcが供給される。FF回路91aのイネーブル端子(EN)にはイネーブル信号C00が供給される。FF回路91aの出力端子(Q)はインバータ回路91bの入力端子に接続され、そのインバータ回路91bの出力端子はFF回路91aの入力端子(データ端子)に接続されている。
【0072】
FF回路91aは、イネーブル信号C00がHレベルである期間、コアクロック信号CKcの立ち上がりエッジのタイミングで、入力端子のレベルと等しいレベルの期待値データEDを出力する。インバータ回路91bは、期待値データEDを論理反転したレベルの信号をFF回路91aに供給する。
【0073】
また、判定回路38は、排他的論理和(ExOR)回路920〜927を有している。各ExOR回路920〜927には、期待値データEDが供給される。また、各ExOR回路920〜927には、それぞれ対応する判定用データCT0〜CT7が供給される。ExOR回路920は、期待値データEDと判定用データCT0とを互いに比較し、比較結果に応じたレベルの判定信号EX0を出力する。ExOR回路920は、期待値データEDの論理値が判定用データCT0の論理値と等しいときにLレベルの判定信号EX0を出力し、期待値データEDの論理値が判定用データCT0の論理値と異なる場合にHレベルの判定信号EX0を出力する。同様に、ExOR回路921〜927は、期待値データEDの論理値が判定用データCT1〜CT7の論理値と等しいときにLレベルの判定信号EX1〜EX7を出力する。一方ExOR回路921〜927は、期待値データEDの論理値が判定用データCT1〜CT7の論理値と異なる場合にHレベルの判定信号EX1〜EX7を出力する。
【0074】
設定値算出回路39は、転送初期値FSOと、判定信号EX0〜EX7に基づいて、転送設定値FSPとレイテンシ設定値FSLを生成する。
なお、判定信号EX0〜EX7を出力する判定回路38は、
図2に示す第2ラッチ回路37bのラッチタイミング、つまりイネーブル信号C00〜C03の生成タイミングが、遅延ストローブ信号DQSdに対して適切か否かを判定するものである。したがって、設定値算出回路39は、イネーブル信号C00〜C03のうちの1つのイネーブル信号に基づいて出力される判定用データを判定した結果を用いればよい。
【0075】
たとえば、設定値算出回路39は、判定信号EX0,EX1を用いて、転送設定値FSPとレイテンシ設定値FSLを算出する。判定用データCT0は第1の判定用データの一例である。判定用データCT1は第2の判定用データの一例である。設定値算出回路39は、判定信号EX0,EX1の値に基づいて補正値を算出する。たとえば、判定信号EX0,EX1の値が「00」の場合、補正値を「0」とする。また、判定信号EX0,EX1の値が「01」の場合、補正値を「+1」とする。また、判定信号EX0,EX1の値が「10」の場合、補正値を「−1」とする。
【0076】
設定値算出回路39は、レジスタを有している。設定値算出回路39は、転送初期値FSOをレジスタに格納する。そして、設定値算出回路39は、判定信号EX0,EX1に基づいて、レジスタに保持した値に基づいて転送設定値FSPを算出する。そして、設定値算出回路39は、算出した転送設定値FSPをレジスタに格納する。また、設定値算出回路39は、転送設定値FSPに基づいてレイテンシ設定値FSLを算出し、その算出したレイテンシ設定値FSLをレジスタに格納する。
【0077】
設定値算出回路39は、レジスタの転送設定値とレイテンシ設定値を、上記のようにして算出した補正値により更新する。たとえば、設定値算出回路39は、レジスタから読み出した転送設定値に補正値を加算し、その加算結果を新たな転送設定値としてレジスタに格納する。そして、設定値算出回路39は、その新たな転送設定値FSPを出力する。同様に、設定値算出回路39は、レジスタから読み出したレイテンシ設定値から補正値を減算し、その減算結果を新たなレイテンシ設定値としてレジスタに格納する。そして、設定値算出回路39は、その新たなレイテンシ設定値FSLを出力する。
【0078】
レイテンシ補償回路34は、複数のFF回路101a〜101mとマルチプレクサ(「MUX」と表記)102を有している。複数のFF回路101a〜101mは直列に接続されている。各FF回路101a〜101mのクロック端子にはコアクロック信号CKcが供給される。初段のFF回路101aには出力データCDが供給される。
【0079】
マルチプレクサ102には、各FF回路101a〜101mの出力信号CDa〜CDmが供給される。マルチプレクサ102は、出力信号CDa〜CDmのうち、レイテンシ設定値FSLに応じた1つの出力信号と等しいリードデータRDを出力する。
【0080】
図8は、設定値算出回路39における処理を示す。
先ず、ステップ111において、設定値算出回路39は、デフォルト値を設定する。デフォルト値は、
図1に示すメモリコントローラ21から供給される転送初期値FSOと、その転送設定値に応じたレイテンシの初期値である。設定値算出回路39は、メモリコントローラ21から供給される転送設定値を転送設定値FSPに設定する。また、設定値算出回路39は、レイテンシ設定値FSLに初期値を設定する。
【0081】
そして、設定値算出回路39は、
図7に示す判定回路38から出力される判定信号EX0,EX1がそれぞれ「OK判定」か「NG判定」か、を判定する。設定値算出回路39は、判定信号EX0,EX1の値が「0」の場合に「OK判定」とし、判定信号EX0,EX1の値が「1」の場合に「NG判定」とする。
【0082】
先ず、ステップ112において、設定値算出回路39は、判定信号EX0が「OK判定」かつ判定信号EX1が「NG判定」の場合(判定:YES)、ステップ113に移行する。そのステップ113への移行は、「設定値に対してDQSが遅い」場合に行われる。このステップ113において、設定値算出回路39は、転送設定値FSPを「+1」し、レイテンシ設定値FSLを「−1」する。そして、設定値算出回路39は、処理をステップ112へ移行する。
【0083】
次に、ステップ114において、設定値算出回路39は、判定信号EX0が「NG判定」かつ判定信号EX1が「OK判定」の場合(判定:YES)、ステップ115に移行する。そのステップ115への移行は、「設定値に対してDQSが早い」場合に行われる。このステップ115において、設定値算出回路39は、転送設定値FSPを「−1」し、レイテンシ設定値FSLを「+1」する。そして、設定値算出回路39は、処理をステップ112へ移行する。
【0084】
次に、ステップ116において、設定値算出回路39は、判定信号EX0が「OK判定」かつ判定信号EX1が「OK判定」の場合(判定:YES)、「設定値に対してDQSが適切」である。このため、設定値算出回路39は、転送設定値FSPとレイテンシ設定値FSLをそのままとし、処理をステップ112へ移行する。
【0085】
一方、ステップ116において判定が「NO」、つまり判定信号EX0,EX1がともに「NG判定」の場合、設定値算出回路39は、ステップ117に移行する。そのステップ117において、設定値算出回路39は、エラー処理を行い、ステップ111へ移行する。たとえば、設定値算出回路39は、エラー処理において、
図1に示すメモリコントローラ21にエラー情報を通知する。メモリコントローラ21は、そのエラー情報に基づいて、トレーニング処理を行い、その処理結果に基づいて転送設定値FSPを再設定する。
【0086】
次に、上記の受信回路24の動作を説明する。
図9に示すように、データDQが
図1に示すメモリ装置12から出力される。このデータDQは、バースト長のデータを含む。
図9では、データDQに含まれる各データを[A]〜[H]として示す。データDQについて、個々のデータを示す場合に、[A]〜[H]を用いることがある。
【0087】
図1に示す受信回路24は、メモリ装置12から受信したデータストローブ信号DQS(受信ストローブ信号RDQS)を遅延して遅延ストローブ信号DQSdを生成する。
図3に示すBLカウンタ41は、遅延ストローブ信号DQSdの立ち上がりエッジをカウントしてイネーブル信号CP0〜CP3を生成する。
図5に示す非同期転送回路33において、FF回路610は、Hレベルのイネーブル信号CP0を受け、遅延ストローブ信号DQSdの立ち上がりエッジに基づいてデータ[A]をラッチする。同様に、FF回路612,614,616は、Hレベルのイネーブル信号CP1,CP2,CP3を受け、遅延ストローブ信号DQSdの立ち上がりエッジに基づいてデータ[C],[E],[G]をラッチする。各FF回路610,612,614,616は、これらのデータ[A],[C],[E],[G]を、次のデータDQを受信する際の遅延ストローブ信号DQSdの立ち上がりエッジまで保持する。
【0088】
同様に、
図3に示すBLカウンタ42は、遅延ストローブ信号DQSdの立ち下がりエッジ(反転イネーブル信号xDQSdの立ち上がりエッジ)をカウントしてイネーブル信号CN0〜CN3を生成する。
図5に示す非同期転送回路33において、FF回路611は、Hレベルのイネーブル信号CN0を受け、遅延ストローブ信号DQSdの立ち上がりエッジに基づいてデータ[B]をラッチする。同様に、FF回路613,615,617は、Hレベルのイネーブル信号CN1,CN2,CN3を受け、遅延ストローブ信号DQSdの立ち下がりエッジに基づいてデータ[D],[F],[H]をラッチする。各FF回路611,613,615,617は、これらのデータ[B],[D],[F],[H]を、次のデータDQを受信する際の遅延ストローブ信号DQSdの立ち下がりエッジまで保持する。
【0089】
図9に示すように、データDQにおいて、各データ[A]〜[H]の幅は、時間的に遅延ストローブ信号DQSdの半周期分、つまり1/2サイクルである。
図2に示す非同期転送回路33(第1ラッチ回路33a)は、各データ[A]〜[H]の幅を、時間的に4サイクル幅以上に拡張する。
【0090】
図10に示すように、データ[A]は、遅延ストローブ信号DQSdの立ち上がりエッジに基づいてラッチされる。データ[B]は、遅延ストローブ信号DQSdの立ち下がりエッジに基づいてラッチされる。なお、図では、データ[A],[B]をそれぞれ4サイクル幅にて示している。
【0091】
上記したように、
図2に示す非同期転送回路33において、第1ラッチ回路33aは、次の対応する遅延ストローブ信号DQSdの立ち上がりエッジまで、ラッチしたデータを保持する。
図1に示すシステム10では、システム装置11からメモリ装置12に対して連続的なリードを行うことが可能である。このような連続的なリード動作では、メモリ装置12は、データDQ及びデータストローブ信号DQSを連続的に出力する。たとえば、バースト長を「8」に設定した場合、
図2に示す第1ラッチ回路33aは、遅延ストローブ信号DQSdの4サイクルの間、データを保持する。そして、
図2に示す非同期転送回路33(第2ラッチ回路33b)は、コアクロック信号CKcに基づいて、データ[A],[B]をラッチする。このため、非同期転送回路33は、遅延ストローブ信号DQSdの4サイクルの間に第1ラッチ回路33aの出力データを第2ラッチ回路33bでラッチする、つまりデータを第1ラッチ回路33aから第2ラッチ回路33bに転送する必要がある。
【0092】
データ[A]とデータ[B]は、遅延ストローブ信号DQSdの半周期分、ずれている。したがって、両データ[A],[B]は、時間的に図に示す「window」の範囲で同時に転送することが可能となる。このウインドウの時間的な幅は、遅延ストローブ信号DQSdの3.5サイクルである。したがって、非同期転送回路33(第2ラッチ回路33b)は、図に矢印にて示す3つのタイミングのいずれか1つのタイミングで、コアクロック信号CKcに基づいてデータ[A],[B]を取り込むことができる。
図1に示すメモリコントローラ21は、トレーニング処理により、これらのタイミングのうちの1つを転送初期値FSOとする。
【0093】
たとえば、
図10に示すように、転送初期値FSOを「Pa」として破線の矢印にて示す。この「Pa」により、リード制御信号RCNTが
図4に示すポインタ制御回路43にて遅延されてポインタ制御信号PCNT(
図10ではPCNTa)としてBLカウンタ44に供給される。BLカウンタ44は、コアクロック信号CKcをカウントしてイネーブル信号C00を生成する。
図6に示す非同期転送回路33の第2ラッチ回路33bは、イネーブル信号C00に基づいて有効となり、コアクロック信号CKcの立ち上がりエッジに基づいてデータ[A].[B]をラッチする。
【0094】
図10に示すように、転送初期値FSOを「Pb」とした場合、ポインタ制御信号PCNTbに基づいてイネーブル信号C00が生成され、データ[A],[B]がラッチされる。同様に、転送初期値FSOを「Pc」とした場合、ポインタ制御信号PCNTcに基づいてイネーブル信号C00が生成され、データ[A],[B]がラッチされる。
【0095】
ここで、比較例のシステムについて説明する。
なお、比較例について、
図1に示すシステムと同じ部材については同じ符号を用い、その部材の説明の一部または全てを省略する。
【0096】
図15に示すように、比較例のシステム装置200は、メモリコントローラ21とインタフェース回路201を有している。インタフェース回路201は、送信回路23、受信回路202等を含む。
【0097】
受信回路202の制御信号生成回路35は、
図1に示す制御信号生成回路35と同様に、遅延ストローブ信号DQSdをカウントしてイネーブル信号EN1を生成する。また、制御信号生成回路35は、メモリコントローラ21からの転送初期値FSOに基づいて、コアクロック信号CKcをカウントしてイネーブル信号EN2を生成する。
【0098】
受信回路202の非同期転送回路33は、イネーブル信号EN1に基づいて入力機能を有効とし、遅延ストローブ信号DQSdに基づいて受信データRDQをラッチする。そして、非同期転送回路33は、イネーブル信号EN2に基づいて出力機能を有効とし、ラッチしたデータに応じたリードデータRDを出力する。
【0099】
たとえば、メモリ装置12は、複数のメモリチップを有し、各データ[A]〜[H](
図9参照)はそれぞれ、複数ビット(たとえば、16ビット)のデータである。このようなデータの場合、各ビットのデータDQとデータストローブ信号DQSの受信タイミング、つまりラウンド・トリップ・タイム(RTT)にばらつきが生じる。
【0100】
たとえば、
図16に示すように、ラウンド・トリップ・タイム(RTT)が最も短い(FAST)遅延ストローブ信号DQSd及びデータDQ0に基づいてデータ[A0],[B0]を保持する。また、ラウンド・トリップ・タイム(RTT)が最も長い(SLOW)遅延ストローブ信号DQSd及びデータDQ1に基づいてデータ[A1],[B1]を保持する。
【0101】
このようなラウンド・トリップ・タイム(RTT)のばらつきは、システム装置11やメモリ装置12の製造プロセスに基づく各種(たとえば、チップ上の配線の抵抗値)のばらつきにより生じる。これらの要因により、データ[A0],[B0],[A1],[B1]を同時に取り込み可能なウインドウの幅は、理想的なウインドウの幅(受信する全てのビットのラウンド・トリップ・タイムが同一な場合のウインドウ幅)よりも狭くなる。
【0102】
さらに、
図17に示すように、システム装置11とメモリ装置12の間におけるデータDQの転送レートが高くなる、つまりデータストローブ信号DQSの1サイクルが短くなると、ウインドウの幅が狭くなる。このように、ウインドウの幅がコアクロック信号CKcの1サイクルより短くなると、VTドリフト(電源電圧などの電圧変動や、動作環境などの温度変化)、つまりコアクロック信号CKcにより設定した取り込みタイミングに対するウインドウの位置のずれにより、リードデータRDに誤りが生じる。
【0103】
図1に示すシステム装置11(受信回路24)は、上記のようなリードデータRDにおける誤りを低減する。その動作について説明する。
図6に示すように、パターンジェネレータ36の第1の信号生成回路36aに含まれるFF回路71aは、イネーブル信号CP3に基づいて機能を有効とし、遅延ストローブ信号DQSdの立ち上がりエッジに基づいて、入力端子(データ端子D)の信号と等しいレベルの判定用パターンデータTDaを出力する。インバータ回路72aは、判定用パターンデータTDaを論理反転した信号を出力する。したがって、
図11に示すように、遅延ストローブ信号DQSdが連続する場合、判定用パターンデータTDaは、遅延ストローブ信号DQSdの4サイクル毎に、「0」から「1」へ、「1」から「0」へと変化する。つまり、判定用パターンデータTDaは、4サイクル毎に、「0」と「1」を交互に繰り返す。
【0104】
同様に、
図6に示す第2の信号生成回路36bに含まれるFF回路71bは、イネーブル信号CN3に基づいて機能を有効とし、反転イネーブル信号xDQSdの立ち上がりエッジ、つまり遅延ストローブ信号DQSdの立ち下がりエッジに基づいて、入力端子(データ端子D)の信号と等しいレベルの判定用パターンデータTDbを出力する。インバータ回路72bは、判定用パターンデータTDbを論理反転した信号を出力する。したがって、
図11に示すように、判定用パターンデータTDbは、遅延ストローブ信号DQSdの4サイクル毎に、「0」から「1」へ、「1」から「0」へと変化する。つまり、判定用パターンデータTDbは、4サイクル毎に、「0」と「1」を交互に繰り返す。
【0105】
図6に示すFF回路810は、イネーブル信号CP0に基づいて機能を有効とし、遅延ストローブ信号DQSdの立ち上がりエッジに基づいて判定用パターンデータTDaをラッチし、そのラッチする。そして、FF回路810は、そのラッチしたデータのレベルと等しいレベルの転送信号DT0を出力する。また、FF回路811は、イネーブル信号CN0に基づいて機能を有効とし、反転イネーブル信号xDQSdの立ち上がりエッジ(遅延ストローブ信号DQSdの立ち下がりエッジ)に基づいて判定用パターンデータTDbをラッチする。そして、FF回路811は、ラッチしたデータのレベルと等しいレベルの転送信号DT1を出力する。
【0106】
したがって、
図11に示すように、転送信号DT0,DT1は、判定用パターンデータTDa,TDbと同様に、4サイクル毎に、「0」と「1」を交互に繰り返す。そして、転送信号DT0,DT1の位相、つまり値が変化するタイミングは、遅延ストローブ信号DQSdの半周期分ずれている。
【0107】
図6に示す第2ラッチ回路37bにおいて、FF回路820は、イネーブル信号C00に基づいて機能を有効とし、コアクロック信号CKcの立ち上がりエッジに基づいて転送信号DT0をラッチする。そして、FF回路820は、そのラッチしたデータのレベルと等しいレベルの判定用データCT0を出力する。同様に、FF回路821は、イネーブル信号C00に基づいて機能を有効とし、コアクロック信号CKcの立ち上がりエッジに基づいて転送信号DT1をラッチする。そして、FF回路821は、そのラッチしたデータのレベルと等しいレベルの判定用データCT1を出力する。
【0108】
したがって、
図11に示すように、コアクロック信号CKcに対して矢印にて示すタイミングでイネーブル信号C00が設定されている場合、判定用データCT0,CT1は、互いに同時に、コアクロック信号CKcの4サイクル毎に、「0」と「1」を交互に繰り返す。
【0109】
また、
図7に示す判定回路38のFF回路91aは、イネーブル信号C00に基づいて機能を有効とし、コアクロック信号CKcの立ち上がりエッジに基づいて、入力端子(データ端子D)の信号と等しいレベルの期待値データEDを出力する。インバータ回路91bは、期待値データEDを論理反転した信号を出力する。したがって、
図11に示すように、期待値データEDは、コアクロック信号CKcの4サイクル毎に、「0」から「1」へ、「1」から「0」へと変化する。つまり、期待値データEDは、4サイクル毎に、「0」と「1」を交互に繰り返す。
【0110】
そして、判定回路38の排他的論理和回路920は、期待値データEDと判定用データCT0とを比較(排他的論理和演算)して判定信号EX0を出力する。また、排他的論理和回路921は、期待値データEDと判定用データCT1とを比較(排他的論理和演算)して判定信号EX1を出力する。したがって、
図11に示すように、転送設定値が矢印にて示すタイミングの場合、判定信号EX0,EX1が共に「0」となる。この「0」の判定信号EX0,EX1は、転送設定値FSPのタイミングが遅延ストローブ信号DQSdに基づくウインドウに合っている、「判定OK」を示す。
【0111】
この場合、
図7に示す設定値算出回路39は、判定信号EX0,EX1に基づいて、
図8に示すステップ116にて「判定:YES」となるため、転送設定値FSPとレイテンシ設定値FSLを維持する。
【0112】
図12に示すように、VTドリフトにより遅延ストローブ信号DQSdが遅くなった場合、転送信号DT0を取り込んだ判定用データCT0の値は「1」である。そして、期待値データEDは「1」であるため、判定信号EX0の値は「0」となる。この「0」の判定信号EX0は、「判定OK」を示す。一方、転送信号DT1を矢印にて示すタイミングにて取り込んだ判定用データCT1の値が「0」となる。この場合、期待値データEDは「1」であるため、判定信号EX1の値は「1」となる。この「1」の判定信号EX1は、「判定NG」を示す。
【0113】
この場合、
図7に示す設定値算出回路39は、判定信号EX0,EX1に基づいて、
図8に示すステップ112にて「判定:YES」となるため、転送設定値FSPを「+1」し、レイテンシ設定値FSLを「−1」する。すると、
図12において、矢印よりも1クロック分右の立ち上がりエッジが転送設定値FSPとして設定される。つまり、受信回路24は、遅延ストローブ信号DQSdの遅れに応じて非同期転送回路33の第2ラッチ回路33bにおけるラッチタイミング、つまり転送タイミングを遅くする。その結果、判定信号EX0,EX1は、ともに「1」となる。つまり、設定値算出回路39は、遅延ストローブ信号DQSdの遅れに応じて、転送設定値FSPを変更する。このように、VTドリフトに対して転送設定値FSPを変更することで、コアクロック信号CKcに基づく取り込みタイミングを変更する。これにより、
図1に示す非同期転送回路33では、遅延ストローブ信号DQSdに基づくウインドウに対して、算出した転送設定値FSPに基づくタイミングにてデータをラッチし、誤りの無い出力データCDを出力する。
【0114】
図7に示すレイテンシ補償回路34は、レイテンシ設定値FSLに基づいて、リードデータRDを出力する。このリードデータRDの出力タイミングは、レイテンシ設定値FSLを変更する前と比べ、コアクロック信号CKcの1サイクル分早くなる。したがって、受信回路24は、非同期転送回路33における転送タイミングを1サイクル分遅くし、レイテンシ補償回路34における遅延時間を1サイクル分短くする。これにより、リードデータRDの出力タイミングは、転送設定値FSPを変更する前と同じとなる。つまり、受信回路24は、転送タイミングに対するレイテンシを補償し、メモリコントローラ21に対するリードデータRDのレイテンシを一定に保つ。
【0115】
図13に示すように、VTドリフトにより遅延ストローブ信号DQSdが早くなった場合、転送信号DT0を矢印にて示すタイミングにて取り込んだ判定用データCT0の値が「0」となる。この場合、期待値データEDは「1」であるため、判定信号EX0の値は「1」となる。この「1」の判定信号EX0は、「判定NG」を示す。一方、転送信号DT1を取り込んだ判定用データCT1の値は「1」である。そして、期待値データEDは「1」であるため、判定信号EX1の値は「0」となる。この「0」の判定信号EX1は、「判定OK」を示す。
【0116】
この場合、
図7に示す設定値算出回路39は、判定信号EX0,EX1に基づいて、
図8に示すステップ114にて「判定:YES」となるため、転送設定値FSPを「−1」し、レイテンシ設定値FSLを「+1」する。すると、
図13において、矢印よりも1クロック分左の立ち上がりエッジが転送設定値FSPとして設定される。つまり、受信回路24は、遅延ストローブ信号DQSdの進みに応じて非同期転送回路33の第2ラッチ回路33bにおけるラッチタイミング、つまり転送タイミングを早くする。その結果、判定信号EX0,EX1は、ともに「1」となる。つまり、設定値算出回路39は、遅延ストローブ信号DQSdの進みに応じて、転送設定値FSPを変更する。このように、VTドリフトに対して転送設定値FSPを変更することで、コアクロック信号CKcに基づく取り込みタイミングを変更する。これにより、
図1に示す非同期転送回路33では、遅延ストローブ信号DQSdに基づくウインドウに対して、算出した転送設定値FSPに基づくタイミングにてデータをラッチし、誤りの無い出力データCDを出力する。
【0117】
図7に示すレイテンシ補償回路34は、レイテンシ設定値FSLに基づいて、リードデータRDを出力する。このリードデータRDの出力タイミングは、レイテンシ設定値FSLを変更する前と比べ、コアクロック信号CKcの1サイクル分遅くなる。したがって、受信回路24は、非同期転送回路33における転送タイミングを1サイクル分早くし、レイテンシ補償回路34における遅延時間を1サイクル分長くする。これにより、リードデータRDの出力タイミングは、転送設定値FSPを変更する前と同じとなる。つまり、受信回路24は、転送タイミングに対するレイテンシを補償し、メモリコントローラ21に対するリードデータRDのレイテンシを一定に保つ。
【0118】
図14に示すように、ラウンド・トリップ・タイム(RTT)が最も短い(FAST)遅延ストローブ信号DQSd及びデータDQ0に基づいてデータ[A0],[B0]を保持する。また、ラウンド・トリップ・タイム(RTT)が最も長い(SLOW)遅延ストローブ信号DQSd及びデータDQ1に基づいてデータ[A1],[B1]を保持する。
【0119】
図1に示すメモリコントローラ21は、データ[A0],[B0]に対応するウインドウW0と、データ[A1],[B1]に対応するウインドウW1に基づいて、転送設定値FSPを設定する。この場合、データDQ0に対応する判定回路38と、データDQ1に対応する判定回路38は、それぞれ「判定OK」の判定信号EX0,EX1を出力する。
【0120】
図14において、一点鎖線の下側にて示すように、VTドリフトによって、ウインドウW0,W1に対して時間的にΔtだけウインドウW0a,W1aがずれる。この場合、上記の転送設定値FSPによる取り込みタイミングTP0は、ウインドウW1aの範囲内であるため、このタイミングTP0にてデータ[A1],[B1]を取り込むことができる。
【0121】
一方、タイミングTP0は、ウインドウW0aの範囲からずれる。したがって、このタイミングTP0では、連続的にデータを読み出す場合、リードデータに誤りを生じる。
本実施形態では、データDQ0に対応する判定回路38は、「判定NG」の判定信号EX0を出力する。そして、
図7に示す設定値算出回路39は、判定信号EX0に基づいて、転送設定値FSPを「−1」して新たな転送設定値FSPを算出する。この新たな転送設定値FSPに基づいて、
図14に示すタイミングTP1を設定する。このタイミングTP1は、ウインドウW0aの範囲内である。このため、このタイミングTP1にてデータ[A0],[B0]を取り込むことができる。
【0122】
このように、本実施形態の受信回路24は、タイミングTP1にてデータ[A0],[B0]を取り込み、タイミングTP0にてデータ[A1],[B1]を取り込む。したがって、受信回路24は、データDQ0,DQ1について、データを取り込むウインドウの実質的な幅を拡大する。このように、ウインドウの幅の拡大により、遅延ストローブ信号DQSdからコアクロック信号CKcへ安定したドメインチェンジを行い、リードデータRDにおける誤りを低減する。
【0123】
以上記述したように、本実施形態によれば、以下の効果を奏する。
(1−1)受信回路24の制御信号生成回路35は、遅延ストローブ信号DQSdに基づいてイネーブル信号EN1を生成し、転送設定値FSP、リード制御信号RCNT、コアクロック信号CKcに基づいてイネーブル信号EN2を生成する。非同期転送回路33は、イネーブル信号EN1と遅延ストローブ信号DQSdに基づいて受信データRDQをラッチし、イネーブル信号EN2とコアクロック信号CKcに基づいて出力データCDを出力する。パターン信号生成回路(PG)36は、イネーブル信号EN1を入力する毎に、論理値を反転した判定用パターンデータTDを生成する。非同期転送回路37は、イネーブル信号EN1と遅延ストローブ信号DQSdに基づいて判定用パターンデータTDをラッチし、イネーブル信号EN2とコアクロック信号CKcに基づいて判定用データCTを出力する。判定回路38は、判定用データCTに基づいて、転送設定値FSPに基づくイネーブル信号EN2を生成するポインタ制御信号のタイミングを判定する。そして、設定値算出回路39は、判定回路38の判定結果に基づいて転送設定値FSPを算出する。
【0124】
非同期転送回路37は、判定用パターンデータTDをイネーブル信号EN1と遅延ストローブ信号DQSdに基づいてラッチする。そのラッチタイミングは、非同期転送回路33における受信データRDQの受信タイミング、つまり、メモリ装置12に対するラウンド・トリップ・タイム(RTT)に対応する。非同期転送回路37は、ラッチしたデータを、イネーブル信号EN2とコアクロック信号CKcに基づいてラッチし、判定用データCTを出力する。判定用データCTの値は、イネーブル信号EN2とコアクロック信号CKcによりラッチするタイミング、つまり遅延ストローブ信号DQSdからコアクロック信号CKcへドメインチェンジするタイミングに応じて変化する。したがって、判定用データCTを判定した判定結果に基づいて転送設定値FSPを算出することにより、転送設定値FSPによりドメインチェンジのタイミングを調整することができる。この結果、非同期転送回路33の出力データCDにおける誤りを低減することができる。
【0125】
(1−2)設定値算出回路39は、転送設定値FSPに基づいてレイテンシ設定値FSLを算出する。たとえば、設定値算出回路39は、設定値に対してDQSが遅いと判定した場合、転送設定値FSPを「+1」し、その転送設定値FSPに応じてレイテンシ設定値FSLを「−1」する。転送設定値FSPにより、非同期転送回路33における判定用データCTのタイミングが遅れる。その分、レイテンシ設定値FSLによりレイテンシ補償回路34の遅延時間を短くすることで、リードデータRDの出力タイミング、つまりメモリコントローラ21に対するリードデータRDの出力タイミングが一定となる。この結果、メモリコントローラ21に対するレイテンシを補償することができる。
【0126】
(1−3)非同期転送回路37を非同期転送回路33と同様に、FF回路810〜817,820〜827を有するものとした。非同期転送回路33における遅延ストローブ信号DQSd等の各種の信号を伝達する配線と、非同期転送回路37における配線は、互いに等しい状態となる。これにより、信号の伝達が非同期転送回路33と非同期転送回路37とで同様となり、非同期転送回路37の動作タイミングが非同期転送回路33の動作タイミングと同じとなる。したがって、メモリ装置12に対するデータDQのラウンド・トリップ・タイム(RTT)を、非同期転送回路37において再現することができる。そして、この非同期転送回路37から出力される判定用データCTにより、ポインタ制御信号PCNTのタイミング、つまり非同期転送回路33のイネーブル信号C00〜C03の生成タイミングを精度よく調整することができる。
【0127】
(第二実施形態)
以下、第二実施形態を説明する。
なお、この実施形態において、上記実施形態と同じ構成部材については同じ符号を付し、その説明及び図の全てまたは一部を省略する。
【0128】
図18は、本実施形態の受信回路300の一部ブロック回路を示す。
この受信回路300の制御信号生成回路301は、ポインタ制御回路311を含む。このポインタ制御回路311は、上記第一実施形態のポインタ制御回路43と同様に、転送設定値FSPに応じてリード制御信号RCNTを遅延したポインタ制御信号PCNTを出力する。
【0129】
また、ポインタ制御回路311は、ポインタ制御信号PCNTより早いタイミングで変化するファースト制御信号PCFを出力する。更に、ポインタ制御回路311は、ポインタ制御信号PCNTより遅いタイミングのスロー制御信号PCSを出力する。
【0130】
たとえば、ポインタ制御回路311は、
図4に示すポインタ制御回路43と同様に、直列に接続された複数のフリップフロップ回路(FF回路)を有している。ポインタ制御回路311は、転送設定値FSPに応じたFF回路の出力信号をポインタ制御信号PCNTとして出力する。そして、ポインタ制御回路311は、そのポインタ制御信号PCNTとしたFF回路の前段のFF回路の出力信号をファースト制御信号PCFとして出力する。このファースト制御信号PCFの変化(たとえば立ち上がりエッジ)のタイミングは、ポインタ制御信号PCNTのタイミングより、コアクロック信号CKcの1サイクル分、早い。
【0131】
また、ポインタ制御回路311は、ポインタ制御信号PCNTとしたFF回路の後段のFF回路の出力信号をスロー制御信号PCSとして出力する。このスロー制御信号PCSの変化(たとえば立ち上がりエッジ)のタイミングは、ポインタ制御信号PCNTのタイミングより、コアクロック信号CKcの1サイクル分、遅い。
【0132】
BLカウンタ44,44F,44Sは、4個のFF回路を有する4進のワンホット・ステート・カウンタ(one-hot state counter)である。BLカウンタ44は、ポインタ制御信号PCNTに基づいて機能を有効とし、コアクロック信号CKcをカウントしてイネーブル信号C00〜C03を生成する。BLカウンタ44Fは、ファースト制御信号PCFに基づいて機能を有効とし、コアクロック信号CKcをカウントしてファーストイネーブル信号CF0〜CF3を生成する。BLカウンタ44Sは、スロー制御信号PCSに基づいて機能を有効とし、コアクロック信号CKcをカウントしてスローイネーブル信号CS0〜CS3を生成する。
【0133】
第2の非同期転送回路312は、1つの第1ラッチ回路37aと2つの第2ラッチ回路37F,37Sを有している。第1ラッチ回路37aは第3のラッチ回路の一例、第2ラッチ回路37Fは第4のラッチ回路の一例、第2ラッチ回路37Sは第5のラッチ回路の一例である。一方の第2ラッチ回路37Fにはファーストイネーブル信号CF0〜CF3が供給され、他方の第2ラッチ回路37Sにはスローイネーブル信号CS0〜CS3が供給される。
【0134】
第2ラッチ回路37Fは、ファーストイネーブル信号CF0〜CF3に基づいてラッチ機能を有効とする。そして、第2ラッチ回路37Fは、コアクロック信号CKcの立ち上がりエッジに基づいて転送信号DTをラッチし、ファースト判定用データCTFを出力する。同様に、第2ラッチ回路37Sは、スローイネーブル信号CS0〜CS3に基づいてラッチ機能を有効とする。そして、第2ラッチ回路37Sは、コアクロック信号CKcの立ち上がりエッジに基づいて転送信号DTをラッチし、スロー判定用データCTSを出力する。
【0135】
判定回路313は、第1判定回路38Fと第2判定回路38Sを有している。第1判定回路38Fは第1の判定回路の一例、第2判定回路38Sは第2の判定回路の一例である。第1判定回路38Fは、
図7に示す判定回路38と同様に、ファーストイネーブル信号CF0に基づいて期待値データを生成する。そして、判定回路38は、その期待値データとファースト判定用データCTFを比較(排他的論理和演算)し、判定信号EXFを出力する。たとえば、第1判定回路38Fは、ファースト判定用データCTFとして、上記第一実施形態と同様に、判定用データCT0,CT1を期待値データとそれぞれ比較(排他的論理和演算)する。そして、判定用データCT0,CT1の演算結果がともに「0」の場合、値が「0」の判定信号EXFを出力する。一方、判定用データCT0,CT1の少なくとも一方が「1」の場合、値が「1」の判定信号EXFを出力する。
【0136】
第2判定回路38Sは、第1判定回路38Fと同様に、スローイネーブル信号CS0に基づいて期待値データを生成する。そして、判定回路38は、その期待値データとスロー判定用データCTSを比較(排他的論理和演算)し、判定信号EXSを出力する。
【0137】
設定値算出回路314は、第1判定回路38Fの判定信号EXFに基づいて、ファースト制御信号PCFのタイミングを「OK判定」または「NG判定」と判定する。また、設定値算出回路314は、第2判定回路38Sの判定信号EXSに基づいて、スロー制御信号PCSのタイミングを「OK判定」または「NG判定」と判定する。そして、設定値算出回路314は、両判定結果に基づいて、転送設定値FSPを算出する。また、設定値算出回路314は、転送設定値FSPに基づいてレイテンシ設定値FSLを算出する。
【0138】
図19は、設定値算出回路314における処理を示す。
先ず、ステップ321において、設定値算出回路314は、デフォルト値を設定する。デフォルト値は、
図1に示すメモリコントローラ21から供給される転送初期値FSOと、その転送設定値に応じたレイテンシの初期値である。設定値算出回路314は、メモリコントローラ21から供給される転送設定値を転送設定値FSPに設定する。また、設定値算出回路314は、レイテンシ設定値FSLに初期値を設定する。
【0139】
そして、設定値算出回路314は、
図18に示す第1判定回路38Fから出力される判定信号EXFに基づいて第1判定回路38Fを「OK判定」または「NG判定」とする。また、設定値算出回路314は、
図18に示す第2判定回路38Sから出力される判定信号EXSに基づいてその第2判定回路38Sを「OK判定」または「NG判定」とする。
【0140】
先ず、ステップ322において、設定値算出回路314は、第1判定回路38F(「判定回路(SLOW)」と表記)が「OK判定」かつ第2判定回路38S(「判定回路(FAST)」と表記)が「NG判定」の場合(判定:YES)、ステップ323に移行する。そのステップ323への移行は、「設定値に対してDQSが遅い」場合に行われる。このステップ323において、設定値算出回路314は、転送設定値FSPを「+1」し、レイテンシ設定値FSLを「−1」する。そして、設定値算出回路314は、処理をステップ322へ移行する。
【0141】
次に、ステップ324において、設定値算出回路314は、第1判定回路38Fが「OK判定」かつ第2判定回路38Sが「NG判定」の場合(判定:YES)、ステップ325に移行する。そのステップ325への移行は、「設定値に対してDQSが早い」場合に行われる。このステップ325において、設定値算出回路314は、転送設定値FSPを「−1」し、レイテンシ設定値FSLを「+1」する。そして、設定値算出回路314は、処理をステップ322へ移行する。
【0142】
次に、ステップ326において、設定値算出回路314は、第1判定回路38Fが「OK判定」かつ第2判定回路38Sが「NG判定」の場合(判定:YES)、「設定値に対してDQSが適切」である。このため、設定値算出回路314は、転送設定値FSPとレイテンシ設定値FSLをそのままとし、処理をステップ322へ移行する。
【0143】
一方、ステップ326において判定が「NO」、つまり第1判定回路38Fと第2判定回路38Sがともに「NG判定」の場合、設定値算出回路314は、ステップ327に移行する。そのステップ327において、設定値算出回路314は、エラー処理を行い、ステップ321へ移行する。たとえば、設定値算出回路314は、エラー処理において、
図1に示すメモリコントローラ21にエラー情報を通知する。メモリコントローラ21は、そのエラー情報に基づいて、トレーニング処理を行い、その処理結果に基づいて転送設定値FSPを再設定する。
【0144】
次に、本実施形態の受信回路300の作用を説明する。
図1に示すメモリコントローラ21は、たとえばシステム装置11の起動時に、トレーニング処理を実行して1つの転送初期値FSOを設定する。
図18に示す受信回路300の設定値算出回路314は、その転送初期値FSOと等しい転送設定値FSPを算出する。そして、ポインタ制御回路311は、転送設定値FSPに応じたサイクルのポインタ制御信号PCNTを生成する。BLカウンタ44は、ポインタ制御信号PCNTに基づいてイネーブル信号C00〜C03を生成する。そのイネーブル信号C00に基づくタイミングは、たとえば、
図14に矢印にて示すタイミングTP0である。
【0145】
図18に示すポインタ制御回路311は、上記のポインタ制御信号PCNTよりも1サイクル早いファースト制御信号PCFと、ポインタ制御信号PCNTよりも1サイクル遅いスロー制御信号PCSを生成する。BLカウンタ44Fは、ファースト制御信号PCFに基づいてファーストイネーブル信号CF0〜CF3を生成する。BLカウンタ44Sは、スロー制御信号PCSに基づいてスローイネーブル信号CS0〜CS3を生成する。
【0146】
ファーストイネーブル信号CF0に基づくタイミングは、たとえば
図14に示すタイミングTP0よりも1サイクル早い(図において左側)のコアクロック信号CKcの立ち上がりエッジのタイミング(ファーストタイミング)である。一方、スローイネーブル信号CS0に基づくタイミングは、
図14に示すタイミングTP0よりも1サイクル遅い(図において右側)のコアクロック信号CKcの立ち上がりエッジのタイミング(スロータイミング)である。
【0147】
たとえば、
図14において、データDQ0を保持したデータ[A0],[B0]のウインドウW0に対して、上記のタイミングTP0及びファーストタイミングはウインドウW0の範囲内であり、スロータイミングは範囲外である。この場合、転送設定値FSPに対して遅延ストローブ信号DQSdが早い。したがって、
図18に示す第2判定回路38Sは、「NG判定」の判定信号EXSを出力する。設定値算出回路314は、判定信号EXSに基づいて、転送設定値FSPを「−1」して新たな転送設定値FSPを算出する。この新たな転送設定値FSPに基づいて、BLカウンタ44,44F,44Sは、それぞれ1サイクル早いタイミングでイネーブル信号を生成する。この結果、生成されたイネーブル信号に基づく3つのタイミングは、
図14において、ウインドウW0の範囲となる。
【0148】
そして、
図18に示す非同期転送回路33の第2ラッチ回路33bは、イネーブル信号C00〜C03に基づいて、第1ラッチ回路33aの出力する信号DDを保持する。このとき、イネーブル信号C00のタイミングは、
図14に示すウインドウW0の範囲内に設定された3つのタイミングのうちの中央のタイミングである。
図18に示す第2ラッチ回路33bは、ウインドウW0の中央付近のタイミングで信号DD(DQ0)を保持する。つまり、受信回路300は、データDQ0について、最適なタイミングを設定する。
【0149】
また、
図14において、データDQ0を保持したデータ[A1],[B1]のウインドウW1に対して、上記のタイミングTP0及びスロータイミングはウインドウW1の範囲内であり、ファーストタイミングは範囲外である。この場合、転送設定値FSPに対して遅延ストローブ信号DQSdが遅い。したがって、
図18に示す第1判定回路38Fは、「NG判定」の判定信号EXFを出力する。設定値算出回路314は、判定信号EXFに基づいて、転送設定値FSPを「+1」して新たな転送設定値FSPを算出する。この新たな転送設定値FSPに基づいて、BLカウンタ44,44F,44Sは、それぞれ1サイクル遅いタイミングでイネーブル信号を生成する。この結果、生成されたイネーブル信号に基づく3つのタイミングは、
図14において、ウインドウW1の範囲となる。
【0150】
そして、
図18に示す非同期転送回路33の第2ラッチ回路33bは、イネーブル信号C00〜C03に基づいて、第1ラッチ回路33aの出力する信号DDを保持する。このとき、イネーブル信号C00のタイミングは、
図14に示すウインドウW1の範囲内に設定された3つのタイミングのうちの中央のタイミングである。
図18に示す第2ラッチ回路33bは、ウインドウW1の中央付近のタイミングで信号DD(DQ1)を保持する。つまり、受信回路300は、データDQ1について、最適なタイミングを設定する。
【0151】
図20に示すように、ラウンド・トリップ・タイム(RTT)が最も短い(FAST)遅延ストローブ信号DQSd及びデータDQ0に基づいてデータ[A0],[B0]を保持する。データ[A0],[B0]に対応するウインドウW0は、VTドリフトによって、時間的にΔtだけずれたウインドウW0aとなる。この場合、転送設定値FSPに基づくタイミングTPF0に対して、1サイクル早いタイミングTPF1は、ウインドウW0aの範囲からずれる。この場合、転送設定値FSPに対して遅延ストローブ信号DQSdが遅い。したがって、設定値算出回路314は、判定信号EXF,EXSに基づいて、転送設定値FSPを「+1」して新たな転送設定値FSPを算出する。この転送設定値FSPに基づいて、イネーブル信号C00の生成タイミングが、コアクロック信号CKcの1サイクル分遅くなり(図において右側に移動する)、タイミングTPF2となる。また、設定値算出回路314は、レイテンシ設定値FSLを「−1」して新たなレイテンシ設定値FSLを算出する。これにより、リードコマンド(「READ」と表記)からリードデータRD(A),RD(B)のタイミングは変化しない。
【0152】
また、
図20に示すように、ラウンド・トリップ・タイム(RTT)が最も長い(SLOW)遅延ストローブ信号DQSd及びデータDQ1に基づいてデータ[A1],[B1]を保持する。データ[A1],[B1]に対応するウインドウW1は、VTドリフトによって、時間的にΔtだけずれたウインドウW1aとなる。この場合、転送設定値FSPに基づくタイミングTPS0に対して、1サイクル早いタイミングTPS1は、ウインドウW1aの範囲からずれる。この場合、転送設定値FSPに対して遅延ストローブ信号DQSdが遅い。したがって、設定値算出回路314は、判定信号EXF,EXSに基づいて、転送設定値FSPを「+1」して新たな転送設定値FSPを算出する。この転送設定値FSPに基づいて、イネーブル信号C00の生成タイミングが、コアクロック信号CKcの1サイクル分遅くなり(図において右側に移動する)、タイミングTPS2となる。また、設定値算出回路314は、レイテンシ設定値FSLを「−1」して新たなレイテンシ設定値FSLを算出する。これにより、リードコマンド(「READ」と表記)からリードデータRD(A),RD(B)のタイミングは変化しない。
【0153】
以上記述したように、本実施形態によれば、以下の効果を奏する。
(2−1)ポインタ制御回路311は、転送設定値FSPに応じてリード制御信号RCNTを遅延したポインタ制御信号PCNTを出力する。ポインタ制御回路311は、ポインタ制御信号PCNTより早いタイミングで変化するファースト制御信号PCFを出力する。更に、ポインタ制御回路311は、ポインタ制御信号PCNTより遅いタイミングのスロー制御信号PCSを出力する。
【0154】
BLカウンタ44は、ポインタ制御信号PCNTに基づいてイネーブル信号C00〜C03を生成する。BLカウンタ44Fは、ファースト制御信号PCFに基づいてファーストイネーブル信号CF0〜CF3を生成する。BLカウンタ44Sは、スロー制御信号PCSに基づいてスローイネーブル信号CS0〜CS3を生成する。第2ラッチ回路37Fは、ファーストイネーブル信号CF0〜CF3に基づいて、第1ラッチ回路37aからの転送信号DTをラッチしてファースト判定用データCTFを出力する。第2ラッチ回路37Sは、スローイネーブル信号CS0〜CS3に基づいて、第1ラッチ回路37aからの転送信号DTをラッチしてスロー判定用データCTSを出力する。第1判定回路38Fは、ファースト判定用データCTFに基づいて、判定信号EXFを出力する。第2判定回路38Sは、スロー判定用データCTSに基づいて、判定信号EXSを出力する。設定値算出回路314は、第1判定回路38Fの判定結果と、第2判定回路38Sの判定結果に基づいて、転送設定値FSPを算出する。この転送設定値FSPは、受信データRDQのウインドウに対してそのウインドウのほぼ中央にポインタ制御信号PCNTを設定する。これにより、受信データRDQのウインドウに対して最適なポインタ制御信号PCNTを設定することができる。
【0155】
(2−2)設定値算出回路314は、第1判定回路38Fの判定信号EXFと、第2判定回路38Sの判定信号EXSに基づいて、転送設定値FSPを算出し、ポインタ制御信号PCNTのタイミングを調整する。第1判定回路38Fが判定するタイミングは、ポインタ制御信号PCNTのタイミング、つまり非同期転送回路33がドメインチェンジするタイミングより早い。一方、第2判定回路38Sが判定するタイミングは、ポインタ制御信号PCNTのタイミング、つまり非同期転送回路33がドメインチェンジするタイミングより遅い、したがって、ポインタ制御信号PCNTのタイミングは、常にデータDQのウインドウの範囲内となる。この結果、リードデータRDにおける誤りを低減することができる。
【0156】
尚、上記各実施形態は、以下の態様で実施してもよい。
・上記実施形態では、非同期転送回路37を非同期転送回路33と同様に、FF回路810〜817,820〜827を有するものとした。タイミングの判定には、上記実施形態にて示したように、判定信号EX0,EX1を用いればよい。したがって、
図6において、FF回路810,811,820,821を含む非同期転送回路としてもよい。それにともない、
図7において、排他的論理和(ExOR)回路920,921を含む判定回路としてもよい。
【0157】
・上記実施形態は、バースト長を「8」に設定した場合を示したが、他の値をバースト長に設定してもよい。
・上記実施形態は、最小ウインドウ幅の判定を行った。最小ウインドウ幅は、上記実施形態で述べたように、読み出しを連続的に行う場合に、その読み出しによりデータDQのドメインチェンジが可能なウインドウの幅である。断続的にメモリ装置12に対するアクセスを行うシステム装置や断続的にメモリ装置12をアクセスする動作の場合、連続的なリード動作(たとえば、コマンドの入れ替えやダミーのリードコマンド)により、2つ以上の連続したリードアクセスを行うことで、ウインドウ幅の判定を行い、タイミングを調整することができる。
【0158】
・実施形態では、データDQ等の出力タイミングを調整するトレーニング動作を行うメモリコントローラ21を用いたが、トレーニング動作を行う機能を有していないメモリコントローラを用いて実施してもよい。
【0159】
・実施形態では、メモリコントローラ21がトレーニング動作を行うこととしたが、その他の回路、例えばコア回路がトレーニング動作を実行するようにしてもよい。