次に、本発明の実施の形態について、図面を参照しつつ説明する。
図1は、本発明の一実施形態に係る半導体集積回路を示す図である。同図に示すように、本実施形態の半導体集積回路1は、例えば、メモリ制御回路10と、メモリ20とを含んで構成される。
メモリ制御回路10は、メモリ20に対するデータの書き込み動作及び読み出し動作の制御を行うインタフェース回路である。本実施形態のメモリ制御回路10は、メモリ20に対するデータの書き込み動作及び読み出し動作の制御において、データ信号DQとデータストローブ信号DQSとの間の位相差が、メモリ20へのデータの書き込み動作及び読み出し動作に適した位相差となるように、例えば、その起動時や、外部の装置(図示せず)の制御指示に基づいて、データ信号DQ及びデータストローブ信号DQSの位相を設定する。同図に示すように、メモリ制御回路10は、例えば、位相演算回路11と、ライトデータ生成回路12と、位相選択回路13と、ライト位相制御回路14と、出力バッファ15A及び15Bと、入力バッファ16A及び16Bと、リード位相制御回路17と、比較器18とを含んで構成される。
位相演算回路11及び位相選択回路13は、位相設定部19を構成する。位相設定部19は、メモリ20に関する書き込み動作のデータ信号DQの位相条件を設定し、該位相条件をライト位相制御回路14に出力するとともに、メモリ20に関する読み出し動作のデータストローブ信号DQSの位相条件を設定し、該位相条件をリード位相制御回路17に出力する。
位相演算回路11は、メモリ制御回路10を統括的に制御する回路であって、位相走査モード及び評価値算出モードのいずれかのモードで動作する。位相走査モードでは、位相演算回路11は、書き込み動作及び読み出し動作の各位相条件におけるメモリ20の動作の判定結果を記憶し、自身を評価値算出モードに設定する。具体的には、位相演算回路11は、例えば、メモリ制御回路10の起動や外部の別の装置(図示せず)の制御指示に基づいて、自身を位相走査モードに設定するとともに、ライトデータ生成回路12と、位相選択回路13の選択端子SLとに、その状態を例えば“0”とする選択信号SELを出力する。また、位相演算回路11は、比較器18から出力される比較信号COMPを受け、書き込み動作及び読み出し動作の各位相条件に対応するメモリ20の動作の判定結果を記憶する。そして、位相演算回路11は、自身を評価値算出モードに設定する。
一方、評価値算出モードでは、位相演算回路11は、該記憶した判定結果に基づいて評価値を算出し、一定の基準を満たす評価値(例えば最大値)に対応する位相条件に従って、データ信号DQ及びデータストローブ信号DQSの位相を設定する。具体的には、位相演算回路11は、その状態を例えば“1”とする選択信号SELをライトデータ生成回路12と、位相選択回路13の選択端子SLとに出力する。位相演算回路11は、記憶した各位相条件に対応する評価値を算出し、一定の基準を満たす評価値(例えば最大値)となる位相条件に従って、書き込み動作及び読み出し動作の位相を設定する。そして、位相演算回路11は、その状態が該設定に対応する最適ライト位相信号WP_OPT及び最適リード位相信号RP_OPTを生成し、該2つの信号をそれぞれ、ライト位相出力端子WPO及びリード位相出力端子RPOから、位相選択回路13のライト位相端子WP及びリード位相端子RPに出力する。
ライトデータ生成回路12は、メモリ20に書き込むべき対象データを出力する。具体的には、ライトデータ生成回路12は、位相演算回路11から出力される選択信号SELの状態を判断する。ライトデータ生成回路12は、例えば、選択信号SELの状態が“0”であると判断する場合、内部レジスタ(図示せず)に予め保持している位相設定に用いるデータを対象データに選択し、該データをライトデータ信号W_DQ0としてライト位相制御回路14のデータ入力端子WDと、比較器18とに出力する。一方、ライトデータ生成回路12は、例えば、選択信号SELの状態が“1”であると判断する場合、外部の別の装置(図示せず)から出力される通常データを対象データとして、ライトデータ信号W_DQ0としてライト位相制御回路14のデータ入力端子WDと、比較器18とに出力する。
位相選択回路13は、位相演算回路11から出力される選択信号SELに従って、位相演算回路11から出力される位相条件と、自身で生成する位相条件とのうちいずれか一方を選択する。位相選択回路13は、該選択した書き込み動作及び読み出し動作の位相条件をそれぞれライト位相制御信号WP_CNT及びリード位相制御信号RP_CNTとして、該2つの信号をそれぞれライト位相出力端子WPO及びリード位相出力端子RPOから、ライト位相制御回路14及びリード位相制御回路17の位相端子PHに出力する。具体的には、位相選択回路13は、選択信号SELの状態が例えば“0”であると判断する場合、ライト位相制御信号WP_CNT及びリード位相制御信号RP_CNTの位相が所定時間毎に所定量ずつシフトするように設定する。一方、位相選択回路13は、選択信号SELの状態が例えば“1”であると判断する場合、位相演算回路11から出力される最適ライト位相信号WP_OPT及び最適リード位相信号RP_OPTをライト位相制御信号WP_CNT及びリード位相制御信号RP_CNTとしてそれぞれ設定する。
ライト位相制御回路14は、位相選択回路13の制御の下、書き込み動作のデータ信号DQの位相を調整する。具体的には、ライト位相制御回路14は、位相選択回路13から出力されるライト位相制御信号WP_CNTが示す位相条件に従って、ライトデータ生成回路12から出力されるライトデータ信号W_DQ0の位相を調整し、ライトデータ信号W_DQとしてデータ出力端子WDQから出力バッファ15Aに出力する。また、ライト位相制御回路14は、所定のクロックCLKに基づいて、ライトデータストローブ信号W_DQSを生成し、該信号をデータストローブ出力端子WDQSから出力バッファ15Bに出力する。
出力バッファ15Aは、メモリ20に対する書き込み動作において、対象データを順次にバッファしながらメモリ20に出力する。具体的には、出力バッファ15Aは、ライト位相制御回路14から出力されるライトデータ信号W_DQをバッファし、これをデータ信号DQとしてメモリ20に順次に出力する。
出力バッファ15Bは、メモリ20に対する書き込み動作において、対象データをラッチするタイミングの情報を順次にバッファしながらメモリ20に出力する。具体的には、出力バッファ15Bは、ライト位相制御回路14から出力されるライトデータストローブ信号W_DQSをバッファし、これをデータストローブ信号DQSとしてメモリ20に順次に出力する。
入力バッファ16Aは、メモリ20に対する読み出し動作において、メモリ20から受ける対象データを順次にバッファしながらリード位相制御回路17に出力する。具体的には、入力バッファ16Aは、メモリ20から出力されるデータ信号DQをバッファし、これをリードデータ信号R_DQとしてリード位相制御回路17のデータ入力端子RDQに順次に出力する。
入力バッファ16Bは、メモリ20に対する読み出し動作において、メモリ20から受ける対象データをラッチするタイミングの情報を順次にバッファしながらリード位相制御回路17に出力する。具体的には、入力バッファ16Bは、メモリ20から出力されるデータストローブ信号DQSをバッファし、これをリードデータストローブ信号R_DQSとしてリード位相制御回路17のデータストローブ入力端子RDQSに順次に出力する。
リード位相制御回路17は、位相選択回路13の制御に従って、読み出し動作のデータストローブ信号DQSの位相を調整する。具体的には、リード位相制御回路17は、位相選択回路13から出力されるリード位相制御信号RP_CNTが示す位相条件に従って、入力バッファ16Bから出力されるリードデータストローブ信号R_DQSの位相を調整する。また、リード位相制御回路17は、該位相を調整したリードデータストローブ信号R_DQSに基づいて、入力バッファ16Aから出力されるリードデータ信号R_DQが示す内容を保持し、所定のクロックCLKに基づいて、該保持した内容をリードデータ信号R_DQ0としてデータ出力端子RDから比較器18と、メモリ20の記憶内容を必要とする外部の別の装置(図示せず)とに出力する。
比較器18は、メモリ20に対する対象データの書き込み動作及び読み出し動作が正常に行われたか否かを判定し、該判定結果を位相演算回路11に出力する。具体的には、比較器18は、ライトデータ生成回路12から出力されるライトデータ信号W_DQ0が示す内容と、リード位相制御回路17から出力されるリードデータ信号R_DQ0が示す内容とを比較し、該内容が一致するか否かを判断する。比較器18は該内容が一致すると判定する場合、例えば、その状態を“1”とする比較信号COMPを生成し、該信号を位相演算回路11の比較端子CPに出力する。一方、比較器18は、該内容が一致しないと判定する場合、例えば、その状態を“0”する比較信号COMPを生成し、該信号を位相演算回路11の比較端子CPに出力する。
メモリ20は、所定のクロックCLKに同期して動作する揮発性メモリであり、例えば、SDRAM(Synchronous Dynamic Random Access Memory)である。メモリ20は、メモリ制御回路10の出力バッファ15Bから出力されるデータストローブ信号DQSに基づいて、メモリ制御回路10の出力バッファ15Aから出力されるデータ信号DQが示す対象データを記憶する。また、メモリ20は、該記憶した対象データをデータ信号DQとしてメモリ制御回路10の入力バッファ16Aに出力するとともに、データ信号DQをラッチするタイミングの情報をデータストローブ信号DQSとしてメモリ制御回路10の入力バッファ16Bに出力する。
図2は、本発明の一実施形態に係るメモリ制御回路における位相演算回路の概略構成を示す図である。同図に示すように、位相演算回路11は、例えば、コントローラ111と、ライトアドレス制御回路112と、リードアドレス制御回路113と、記憶装置114と、比較器115と、選択回路116と、フィルタ選択回路117と、評価値算出回路118と、位相設定条件検出回路119とを含んで構成される。
なお、本明細書において、位相設定における書き込み動作及び読み出し動作の位相条件の数をそれぞれM及びNと定義する。また、評価値の算出において選択する書き込み動作及び読み出し動作の位相条件の数をそれぞれm及びnと定義する。また、評価値の算出で参照する位相条件の範囲を示す値をそれぞれc及びdと定義する。所定の値c及びdは、それぞれ、例えば、(m−1)/2及び(n−1)/2という関係で示されるが、これに限られるものではない。所定の値c及びdの詳細に関しては後述する。
コントローラ111は、位相演算回路11の各コンポーネントの制御を行う。具体的には、コントローラ111は、例えば、メモリ制御回路10の起動や外部からの制御指示に基づいて、選択信号SELを生成し、該信号をライトデータ生成回路12及び位相選択回路13に出力する。またコントローラ111は、例えば、メモリ制御回路10の起動や外部からの制御指示に基づいて、制御信号CNTを生成し、該信号を記憶装置114の制御端子CTに出力する。
さらに、コントローラ111は、例えばメモリ制御回路10の起動や外部からの制御指示に基づいて、位相演算回路11を位相走査モードに設定する。コントローラ111は、位相走査モードにおいて、選択信号SEL及び制御信号CNTの状態を例えば“0”とする。また、コントローラ111は、位相走査モードにおいて、例えば、所定のクロックCLKに基づいてカウントを行い、そのカウント値をライトカウント信号CNT_Xとしてライトアドレス制御回路112に出力する。コントローラ111は、該カウント毎に該カウント値が位相設定における全ての位相条件の数(即ちN×M回)と一致するか否かを判断し、該カウント値が該全ての位相条件の数と一致すると判断する場合、該カウント値をリセットし、位相演算回路11を位相走査モードから評価値算出モードに切り替える。
評価値算出モードにおいては、コントローラ111は、選択信号SEL及び制御信号CNTの状態を例えば“1”とする。コントローラ111は、評価値算出モードにおいて、所定のクロックCLKに基づいて書き込み動作の位相条件のためのカウントを行い、そのカウント値をライトカウント信号CNT_Xとしてライトアドレス制御回路112に出力する。また、コントローラ111は、ライトカウント信号CNT_Xが示すカウント値が所定の回数(例えばM+c回)と一致するたびに読み出し動作の位相条件のためのカウントを行い、そのカウント値をリードカウント信号CNT_Yとしてリードアドレス制御回路113に出力するとともに、ライトカウント信号CNT_Xが示すカウント値をリセットする。さらに、コントローラ111は、リードカウント信号CNT_Yが示すカウント値が所定の回数(例えばN+d回)と一致するたびに、該カウント値をリセットする。
ライトアドレス制御回路112は、コントローラ111の制御に基づいて、書き込み動作及び読み出し動作、又は書き込み動作の位相条件を示すライトアドレス信号ADD_Xを生成し、該信号を各コンポーネントに出力する。具体的には、ライトアドレス制御回路112は、コントローラ111から出力されるライトカウント信号CNT_Xに基づいて、ライトアドレス信号ADD_Xを生成し、該信号を記憶装置114のアドレス端子ADと、比較器115と、位相設定条件検出回路119のライトアドレス端子ADXとに出力する。ライトアドレス信号ADD_Xが示す内容は、位相走査モードにおいては、位相設定における書き込み動作及び読み出し動作の各位相条件に対応し、評価値算出モードにおいては、書き込み動作の各位相条件に対応する。
リードアドレス制御回路113は、コントローラ111の制御に基づいて、読み出し動作の位相条件を示すリードアドレス信号ADD_Yを生成し、該信号を各コンポーネントに出力する。具体的には、リードアドレス制御回路113は、コントローラ111から出力されるリードカウント信号CNT_Yに基づいて、リードアドレス信号ADD_Yを生成し、該信号をフィルタ選択回路117の選択端子SLと、評価値算出回路118のリセット端子RESと、位相設定条件検出回路119のリードアドレス端子ADYとに出力する。リードアドレス信号ADD_Yが示す内容は、位相設定における読み出し動作の各位相条件に対応する。
記憶装置114は、例えば、揮発性メモリ(例えばSRAM等)や書き換え可能な不揮発性メモリ(例えばフラッシュメモリ等)であり、コントローラ111の制御に基づいて、書き込み動作及び読み出し動作の各位相条件に対応するメモリ20の動作の判定結果を記憶する。また、記憶装置114は、コントローラ111の制御に基づいて、記憶した該判定結果を選択回路116の入力端子A0に出力する。
具体的には、記憶装置114は、コントローラ111から制御端子CTに出力される制御信号CNTの状態を判断する。記憶装置114は、制御信号CNTの状態が“0”であると判断する場合、クロック端子CKに入力される所定のクロックCLKに基づいて、比較器18からデータ入力端子DIに出力される比較信号COMPの内容をライトアドレス制御回路112からアドレス端子ADに出力されるライトアドレス信号ADD_Xが示す領域に記憶する。一方、記憶装置114は、制御信号CNTの状態が“1”であると判断する場合、所定のクロックCLKに基づいて、記憶した該内容を例えば、読み出し動作の位相条件の数であるNビットずつデータ信号DAT[N:1]としてデータ出力端子DOから選択回路116の入力端子A0に出力する。
比較器115は、ライトアドレス制御回路112から出力されるライトアドレス信号ADD_Xが示す値と、書き込み動作の位相条件の数であるMの値とを比較して、該比較結果に基づいて空白選択信号SEL_NULを生成し、該信号を選択回路116の選択端子SLに出力する。具体的には、比較器115は、ライトアドレス信号ADD_Xが示す値がMの値よりも小さいか否かを判断する。比較器115はライトアドレス信号ADD_Xが示す値がMの値よりも小さいと判断する場合、空白選択信号SEL_NULの状態を例えば“0”として選択回路116の選択端子SLに出力する。一方、比較器115はライトアドレス信号ADD_Xの値がMの値よりも小さくないと判断する場合、空白選択信号SEL_NULの状態を例えば“1”として選択回路116の選択端子SLに出力する。
選択回路116は、例えば、マルチプレクサである。選択回路116は、比較器115から選択端子SLに出力される空白選択信号SEL_NULに基づいて、記憶装置114から入力端子A0に出力されるデータ信号DAT[N:1]と、入力端子A1に入力される空白信号NULとのうち一方を選択し、該選択した信号をデータ信号DX[N:1]として出力端子Yからフィルタ選択回路117の入力端子I[d+1]乃至I[d+N]に出力する。
具体的には、選択回路116は、空白選択信号SEL_NULの状態を判断する。選択回路116は、空白選択信号SEL_NULの状態が例えば“0”であると判断する場合、入力端子A0に入力されるデータ信号DAT[N:1]を選択し、データ信号DX[N:1]として出力端子Yからフィルタ選択回路117の入力端子I[d+1]乃至I[d+N]に出力する。一方、選択回路116は、空白選択信号SEL_NULの状態が例えば“1”であると判断する場合、入力端子A1に入力される空白信号NULを選択し、データ信号DX[N:1]として出力端子Yからフィルタ選択回路117の入力端子I[d+1]乃至I[d+N]に出力する。なお、データ信号DX[N:1]の各ビットを示すデータ信号DX[1]乃至DX[N]は、それぞれフィルタ選択回路117の入力端子I[d+1]乃至I[d+N]に対応する。
フィルタ選択回路117は、選択回路116から出力されるNビットのデータ信号DX[N:1]のうち、評価値の算出に使用するn個の信号を選択し、データ信号DY[1]乃至DY[n]として評価値算出回路118に出力する。具体的には、フィルタ選択回路117は、リードアドレス制御回路113から選択端子SLに出力されるリードアドレス信号ADD_Yに基づいて、入力端子I[1]乃至I[d]及びI[d+N+1]乃至I[N+n]に入力される空白信号NULと、入力端子I[d+1]乃至I[d+N]に入力されるデータ信号DX[1]乃至DX[N]とのうち、n個の信号を選択し、該選択した信号をそれぞれデータ信号DY[1]乃至DY[n]としてそれぞれ出力端子O[1]乃至O[n]から評価値算出回路118の入力端子I[1]乃至I[n]に出力する。
評価値算出回路118は、例えば、シフトレジスタであり、さらに、記憶した内容に基づいて評価値を算出する機能を備える。評価値算出回路118は、所定のクロックCLKに基づいて、フィルタ選択回路117から入力端子I[1]乃至I[n]に出力されるデータ信号DY[1]乃至DY[n]が示す値を順次記憶するとともに、該記憶した内容に基づいて評価値を算出し、該算出した評価値を評価値信号EVAL_VALとして加算端子ADDから位相設定条件検出回路119の評価端子EVALに出力する。また、評価値算出回路118は、その記憶領域に空きがない状態でデータ信号DYを受けた場合、記憶している値のうち最も古い値から順に記憶した値を消去することで、データ信号DYが示す値を新たに記憶する。また、評価値算出回路118は、リードアドレス制御回路113からリセット端子RESに入力されるリードアドレス信号ADD_Yに基づいて、該記憶した内容をリセットする。
位相設定条件検出回路119は、一定の基準を満たす評価値(例えば最大値)と、それに対応する書き込み動作及び読み出し動作の位相条件とを記憶し、該位相条件を位相選択回路13に出力する。具体的には、位相設定条件検出回路119は、ライトアドレス制御回路112から受けるライトアドレス信号ADD_Xが示す書き込み動作の位相条件と、リードアドレス制御回路113から受けるリードアドレス信号ADD_Yが示す読み出し動作の位相条件と、評価値算出回路118から受ける評価値信号EVAL_VALが示す該位相条件に対応する評価値とを記憶する。また位相設定条件検出回路119は、該記憶した書き込み動作及び読み出し動作の位相条件をそれぞれ最適ライト位相信号WP_OPT及び最適リード位相信号RP_OPTとして、ライト位相出力端子WPO及びリード位相出力端子RPOから位相選択回路13に出力する。
さらに、位相設定条件検出回路119は、再び該3つの信号が入力された時、評価値信号EVAL_VALが示す評価値と、記憶済みである評価値とを比較する。位相設定条件検出回路119は、該信号が示す評価値が記憶済みである評価値よりも大きいと判断する場合、記憶済みである該3つの値を再び入力された該3つの信号が示す値にそれぞれ更新する。一方、位相設定条件検出回路119は、該信号が示す評価値が記憶済みである評価値よりも大きくないと判断する場合、記憶済みである該3つの値を維持する。
図3は、本発明の一実施形態に係る位相演算回路における評価値算出回路の概略構成を示す図である。同図に示すように、本実施形態に係る評価値算出回路118は、例えば、リセット信号生成回路1181と、マルチパス出力制御回路1182(1)乃至1182(m)と、加算回路1183(1)乃至1183(m)と、加算回路1184とを含んで構成される。なお、本例において、iを2乃至m−1の整数と定義する。
同図において、リセット信号生成回路1181は、リードアドレス制御回路113から出力されるリードアドレス信号ADD_Yの状態の変化に基づいて、リセット信号RESETを生成し、該信号をマルチパス出力制御回路1182(1)乃至1182(m)のリセット端子RESに出力する。具体的には、リセット信号生成回路1181は、リードアドレス信号ADD_Yの状態を監視し、該信号の状態に変化があるか否かを判断する。リセット信号生成回路1181は、リードアドレス信号ADD_Yの状態に変化があると判断する場合、その状態を例えば“1”とするリセット信号RESETを生成し、該信号をマルチパス出力制御回路1182(1)乃至1182(m)のリセット端子RESに出力する。一方、リセット信号生成回路1181は、リードアドレス信号ADD_Yの状態に変化がないと判断する場合、その状態を例えば“0”とするリセット信号RESETを生成し、該信号をマルチパス出力制御回路1182(1)乃至1182(m)のリセット端子RESに出力する。
マルチパス出力制御回路1182は、所定のクロックCLKに基づいて、入力端子Iに入力されるnビットのデータ信号を次段のマルチパス出力制御回路1182に出力するとともに、該データ信号に対応する評価値をそれぞれ算出し、該算出した評価値を加算回路1183に出力する。また、マルチパス出力制御回路1182はリセット信号生成回路1181の制御に基づいて、その状態をリセットする。具体的には、マルチパス出力制御回路1182(1)は、所定のクロックCLKに基づいて、フィルタ選択回路117から入力端子I[1]乃至I[n]に出力されるデータ信号DY[1]乃至DY[n]をデータ信号DY1[1]乃至DY1[n]として出力端子O[1]乃至O[n]からマルチパス出力制御回路1182(2)の入力端子I[1]乃至I[n]に出力する。また、マルチパス出力制御回路1182(1)は、データ信号DY[1]乃至DY[n]に対応する評価係数を予め記憶し、所定のクロックCLKに基づいて、該信号が示す値と該評価係数とを乗算し、乗算結果を評価信号EVAL1[n:1]として値端子VAL[n:1]から加算回路1183(1)に出力する。
また、マルチパス出力制御回路1182(i)は、所定のクロックCLKに基づいて、前段のマルチパス出力制御回路1182(i―1)から入力端子I[1]乃至I[n]に出力されるデータ信号DYi―1[1]乃至DYi―1[n]をデータ信号DYi[1]乃至DYi[n]として出力端子O[1]乃至O[n]からマルチパス出力制御回路1182(i+1)の入力端子I[1]乃至I[n]に出力する。また、マルチパス出力制御回路1182(i)は、データ信号DYi―1[1]乃至DYi―1[n]に対応する評価係数を予め記憶し、所定のクロックCLKに基づいて、該信号が示す値と該評価係数とを乗算し、乗算結果を評価信号EVALi[n:1]として値端子VAL[n:1]から加算回路1183(i)に出力する。
また、マルチパス出力制御回路1182(m)は、所定のクロックCLKに基づいて、マルチパス出力制御回路1182(m−1)から入力端子I[1]乃至I[n]に出力されるデータ信号DYm−1[1]乃至DYm−1[n]に対応する評価係数を予め記憶し、所定のクロックCLKに基づいて、該信号が示す値と該評価係数とを乗算し、乗算結果を評価信号EVALm[n:1]として値端子VAL[n:1]から加算回路1183(m)に出力する。なお、マルチパス出力制御回路1182(1)乃至1182(m)は、リセット信号生成回路1181からリセット端子RESに出力されるリセット信号RESETに基づいて、その状態をリセットする。
加算回路1183(1)乃至1183(m)は、書き込み動作の各位相条件について、読み出し動作の位相条件の評価値を加算し、該加算結果を加算回路1184に出力する。具体的には、加算回路1183(1)乃至1183(m)は、対応するマルチパス出力制御回路1182(1)乃至1182(m)から出力される評価信号EVAL1[n:1]乃至EVALm[n:1]が示す評価値をそれぞれ加算し、加算結果を評価合計信号EVAL_SUM[1]乃至EVAL_SUM[m]として加算回路1184に出力する。
加算回路1184は、加算回路1183(1)乃至1183(m)から出力される書き込み動作の位相条件毎の評価値の合計を加算し、加算結果を位相設定条件検出回路119に出力する。具体的には、加算回路1184は、加算回路1183(1)乃至1183(m)から出力される評価合計信号EVAL_SUM[m:1]が示すm個の評価値の合計を加算し、評価値信号EVAL_VALとして位相設定条件検出回路119に出力する。
図4は、本発明の一実施形態に係る評価値算出回路におけるマルチパス出力制御回路の概略構成を示す図である。同図に示すように、本実施形態のマルチパス出力制御回路1182(1)は、出力制御回路FF(1)乃至FF(n)と、レジスタREG(1)乃至REG(n)と、乗算回路MUL(1)乃至MUL(n)とを含んで構成される。なお、本例においては、マルチパス出力制御回路1182(1)に関して、その構成及び動作を述べるが、他のマルチパス出力制御回路1182(2)乃至1182(m)についても同様である。
出力制御回路FF(1)乃至FF(n)は、例えば、D型フリップフロップである。出力制御回路FF(1)乃至FF(n)は、クロック端子CKに入力される所定のクロックCLKに基づいて、フィルタ選択回路117からデータ端子Dに出力されるデータ信号DY[1]乃至DY[n]をデータ信号DY1[1]乃至DY1[n]として出力端子Qから乗算回路MUL(1)乃至MUL(n)と、マルチパス出力制御回路1182(2)の入力端子I[1]乃至I[n]とに出力する。
また、出力制御回路FF(1)乃至FF(n)は、リセット信号生成回路1181から出力されるリセット信号RESETの状態に基づいて、出力端子Qから出力するデータ信号DY1[1]乃至DY1[n]の状態を例えば“0”にリセットする。即ち、出力制御回路FF(1)乃至FF(n)は、リセット信号RESETの状態が例えば“0”である場合、データ信号DY1[1]乃至DY1[n]の状態を例えば“0”にリセットする。
レジスタREGは、各位相条件に対応する評価係数を記憶し、該記憶した内容を乗算回路MULに出力する。具体的には、レジスタREG(1)乃至REG(n)は、データ信号DY[1]乃至DY[n]に対応する評価計数を予め記憶し、該記憶した値を乗算回路MUL(1)乃至MUL(n)に出力する。なお、評価計数は、外部の別の装置(図示せず)の制御に基づいて決定されても良いし、自身の回路構成によって決定されても良い。
乗算回路MULは、各位相条件におけるメモリ20の動作の判定結果と、該位相条件に対応する評価係数とを乗算し、乗算結果を加算回路1183に出力する。具体的には、乗算回路MUL(1)乃至MUL(n)は、出力制御回路FF(1)乃至FF(n)から出力されるデータ信号DY[1]乃至DY[n]が示す値と、レジスタREG(1)乃至REG(n)から出力される評価係数とを乗算し、乗算結果を評価信号EVAL1[1]乃至EVAL1[n]として加算回路1183(1)に出力する。
図5は、本発明の一実施形態に係る位相演算回路における位相設定条件検出回路の概略構成を示す図である。同図に示すように、本実施形態に係る位相設定条件検出回路119は、例えば、6個の出力制御回路1190、1191、1193、1195、1197及び1198と、3個の選択回路1192、1196及び1199と、1個の比較器1194とを含んで構成される。
出力制御回路1190、1191、1193、1195、1197及び1198は、例えば、D型フリップフロップである。該回路は、クロック端子CKに入力される所定のクロックCLKに基づいて、データ端子Dに入力される信号を出力端子Qから出力する。
選択回路1192、1196及び1199は、例えば、マルチプレクサである。該回路は、選択端子SLに入力される信号に基づいて、入力端子A0及び入力端子A1に入力される信号のうち、いずれか一方を選択し、出力端子Yから出力する。
次に、位相設定条件検出回路119の動作について説明する。出力制御回路1191及び1193と、選択回路1192とで構成される評価値記憶回路は、評価値算出回路118から順次出力される評価値信号EVAL_VALが示す評価値のうち最大値を記憶する。
まず、出力制御回路1191は、所定のクロックCLKに基づいて、評価値算出回路118から出力される評価値信号EVAL_VALを現在評価値信号EVAL_CURとして比較器1194及び選択回路1192の入力端子A1に出力する。
次に、選択回路1192は、選択信号SELの状態に基づいて、最適評価値信号EVAL_OPT及び現在評価値信号EVAL_CURのうちいずれか一方を選択し、更新評価値信号EVAL_UPDとして出力制御回路1193に出力する。具体的には、選択回路1192は、選択信号SELの状態を判断する。選択回路1192は、選択信号SELの状態が例えば“0”であると判断する場合、出力制御回路1193から入力端子A0に出力される最適評価値信号EVAL_OPTを選択し、更新評価値信号EVAL_UPDとして出力端子Yから出力制御回路1193のデータ端子Dに出力する。一方、選択回路1192は、選択信号SELの状態が例えば“1”であると判断する場合、出力制御回路1191から入力端子A1に出力される現在評価値信号EVAL_CURを選択し、更新評価値信号EVAL_UPDとして出力端子Yから出力制御回路1193のデータ端子Dに出力する。
そして、出力制御回路1193は、所定のクロックCLKに基づいて、選択回路1192から出力される更新評価値信号EVAL_UPDを最適評価値信号EVAL_OPTとして、比較器1194と、選択回路1192の入力端子A0とに出力するとともに、該信号が示す評価値を記憶する。
比較器1194は、出力制御回路1191から出力される現在評価値信号EVAL_CURの値と、出力制御回路1193から出力される最適評価値信号EVAL_OPTの値とを比較し、現在評価値信号EVAL_CURの値が最適評価値信号EVLA_OPTの値よりも大きいか否かを判断する。比較器1194は、現在評価値信号EVAL_CURの値が最適評価値信号EVAL_OPTの値よりも大きいと判断する場合、その状態を“1”とする位相選択信号SEL_PHAを生成し、該信号を選択回路1192、1196及び1199の選択端子SLに出力する。一方、比較器1194は、現在評価値信号EVAL_CURの値が最適評価値信号EVAL_OPTの値よりも大きくないと判断する場合、その状態を“0”とする位相選択信号SEL_PHAを生成し、該信号を選択回路1192、1196及び1199の選択端子SLに出力する。
出力制御回路1195及び1197と、選択回路1196とで構成されるライト位相記憶回路は、ライトアドレス制御回路112から順次出力されるライトアドレス信号ADD_Xが示す書き込み動作の位相条件のうち、上述した評価値記憶回路が記憶する最大の評価値に対応する位相条件を記憶するとともに、該位相条件を位相選択回路13に出力する。
まず、出力制御回路1195は、所定のクロックCLKに基づいて、ライトアドレス制御回路112から出力されるライトアドレス信号ADD_Xを現在ライト位相信号WP_CURとして選択回路1196の入力端子A1に出力する。
次に、選択回路1196は、選択信号SELの状態に基づいて、最適ライト位相信号WP_OPT及び現在ライト位相信号WP_CURのうちいずれか一方を選択し、更新ライト位相信号WP_UPDとして出力制御回路1197に出力する。具体的には、選択回路1196は、選択信号SELの状態を判断する。選択回路1196は、選択信号SELの状態が例えば“0”であると判断する場合、出力制御回路1197から入力端子A0に出力される最適ライト位相信号WP_OPTを選択し、更新ライト位相信号WP_UPDとして出力端子Yから出力制御回路1197のデータ端子Dに出力する。一方、選択回路1196は、選択信号SELの状態が例えば“1”であると判断する場合、出力制御回路1195から入力端子A1に出力される現在ライト位相信号WP_CURを選択し、更新ライト位相信号WP_UPDとして出力端子Yから出力制御回路1197のデータ端子Dに出力する。
そして、出力制御回路1197は、所定のクロックCLKに基づいて、選択回路1196から出力される更新ライト位相信号WP_UPDを最適ライト位相信号WP_OPTとして、位相選択回路13のライト位相端子WP及び選択回路1196の入力端子A0に出力するとともに、該信号が示す書き込み動作の位相条件を記憶する。
出力制御回路1190及び1198と、選択回路1199とで構成されるリード位相記憶回路は、リードアドレス制御回路113から順次出力されるリードアドレス信号ADD_Yが示す読み出し動作の位相条件のうち、上述した評価値記憶回路が記憶する最大の評価値に対応する位相条件を記憶するとともに、該位相条件を位相選択回路13に出力する。
まず、出力制御回路1198は、所定のクロックCLKに基づいて、リードアドレス制御回路113から出力されるリードアドレス信号ADD_Yを現在リード位相信号RP_CURとして選択回路1199の入力端子A1に出力する。
次に、選択回路1199は、選択信号SELの状態に基づいて、最適リード位相信号RP_OPT及び現在リード位相信号RP_CURのうちいずれか一方を選択し、更新リード位相信号RP_UPDとして出力制御回路1190に出力する。具体的には、選択回路1199は、選択信号SELの状態を判断する。選択回路1199は、選択信号SELの状態が例えば“0”であると判断する場合、出力制御回路1190から入力端子A0に出力される最適リード位相信号RP_OPTを選択し、更新リード位相信号RP_UPDとして出力端子Yから出力制御回路1190のデータ端子Dに出力する。一方、選択回路1199は、選択信号SELの状態が例えば“1”であると判断する場合、出力制御回路1198から入力端子A1に出力される現在リード位相信号RP_CURを選択し、更新リード位相信号RP_UPDとして出力端子Yから出力制御回路1190のデータ端子Dに出力する。
そして、出力制御回路1190は、所定のクロックCLKに基づいて、選択回路1199から出力される更新リード位相信号RP_UPDを最適リード位相信号RP_OPTとして位相選択回路13のリード位相端子RP及び選択回路1199の入力端子A0に出力するとともに、該信号が示す読み出し動作の位相条件を記憶する。
図6は、本発明の一実施形態に係るメモリ制御回路における位相選択回路の構成の一例を示す図である。同図に示すように、本実施形態に係る位相選択回路13は、例えば、走査制御回路131と、ライト位相走査回路132と、選択回路133及び135と、リード位相走査回路134とを含んで構成される。
走査制御回路131は、位相演算回路11の制御指示に従って、書き込み動作及び読み出し動作の各位相条件の走査を制御する。具体的には、走査制御回路131は、位相演算回路11から出力される選択信号SELに基づいて、ライト走査カウント信号CNT_WSWP及びリード走査カウント信号CNT_RSWPを生成し、該信号をそれぞれライト位相走査回路132及びリード位相走査回路134に出力することによって、該2つの回路を制御する。具体的には、走査制御回路131は、選択信号SELの状態を判断する。走査制御回路131は、選択信号SELの状態が例えば“0”であると判断する場合、所定のクロックCLKに基づいて書き込み動作の位相条件のためのカウントを行い、そのカウント値をライト走査カウント信号CNT_WSWPとしてライト位相走査回路132に出力する。また、走査制御回路131は、該カウント値が書き込み動作の位相条件の数Mと一致するたびに該カウント値をリセットするとともに、読み出し動作の位相条件のためのカウントを行い、該カウント値をリード走査カウント信号CNT_RSWPとしてリード位相走査回路134に出力する。一方、走査制御回路131は、選択信号の状態が例えば“1”であると判断する場合、該2つのカウント値をリセットするとともに、ライト走査カウント信号CNT_WSWP及びリード走査カウント信号CNT_RSWPの出力を停止する。
ライト位相走査回路132は、書き込み動作の各位相条件を記憶し、走査制御回路131の制御指示に対応する位相条件を選択回路133に出力する。具体的には、ライト位相走査回路132は、書き込み動作の各位相条件を記憶し、走査制御回路131から出力されるライト走査カウント信号CNT_WSWPの内容に対応する位相条件をライト位相走査信号WP_SWPとして選択回路133の入力端子A1に出力する。
選択回路133は、例えば、マルチプレクサである。選択回路133は、位相演算回路11から選択端子SLに出力される選択信号SELに基づいて、位相演算回路11から入力端子A0に出力される最適ライト位相信号WP_OPTと、ライト位相走査回路132から入力端子A1に出力されるライト位相走査信号WP_SWPとのうち、いずれか一方を選択し、ライト位相制御信号WP_CNTとして出力端子Yからライト位相出力端子WPOを介してライト位相制御回路14の位相端子PHに出力する。具体的には、選択回路133は、選択信号SELの状態を判断する。選択回路133は選択信号SELの状態が例えば“0”であると判断する場合、ライト位相走査信号WP_SWPをライト位相制御信号WP_CNTとしてライト位相制御回路14の位相端子PHに出力する。一方、選択回路133は、選択信号SELの状態が例えば“1”であると判断する場合、最適ライト位相信号WP_OPTをライト位相制御信号WP_CNTとしてライト位相制御回路14の位相端子PHに出力する。
リード位相走査回路134は、読み出し動作の各位相条件を記憶し、走査制御回路131の制御指示に対応する位相条件を選択回路135に出力する。具体的には、リード位相走査回路134は、読み出し動作の各位相条件を記憶し、走査制御回路131から出力されるリード走査カウント信号CNT_RSWPの内容に対応する該位相条件をリード位相走査信号RP_SWPとして選択回路135の入力端子A1に出力する。
選択回路135は、例えば、マルチプレクサである。選択回路135は、位相演算回路11から選択端子SLに入力される選択信号SELに基づいて、位相演算回路11から入力端子A0に出力される最適リード位相信号RP_OPTと、リード位相走査回路134から入力端子A1に出力されるリード位相走査信号RP_SWPとのうち、いずれか一方を選択し、リード位相制御信号RP_CNTとして出力端子Yからリード位相出力端子RPOを介してリード位相制御回路17の位相端子PHに出力する。具体的には、選択回路135は、選択信号SELの状態を判断する。選択回路135は選択信号SELの状態が例えば“0”であると判断する場合、リード位相走査信号RP_SWPをリード位相制御信号RP_CNTとしてリード位相制御回路17の位相端子PHに出力する。一方、選択回路135は、選択信号SELの状態が例えば“1”であると判断する場合、最適リード位相信号RP_OPTをリード位相制御信号RP_CNTとしてリード位相制御回路17の位相端子PHに出力する。
図7は、本発明の一実施形態に係るメモリ制御回路におけるライト位相制御回路の構成の一例を示す図である。同図に示すように、本実施形態に係るライト位相制御回路14は、例えば、遅延制御回路141と、出力制御回路142及び143と、論理否定回路144とを含んで構成される。
遅延制御回路141は、例えば、DLL(Delay Locked Loop)である。遅延制御回路141は、所定のクロックCLKに、位相選択回路13から出力されるライト位相制御信号WP_CNTが示す位相条件に対応する遅延量を与え、位相調整クロックPH_CLKとして出力制御回路142のクロック端子CKに出力する。
出力制御回路142は、例えば、D型フリップフロップである。出力制御回路142は、ライトデータ信号W_DQを生成する。具体的には、出力制御回路142は、遅延制御回路141からクロック端子CKに出力される位相調整クロックPH_CLKに基づいて、ライトデータ生成回路12からデータ端子Dに出力されるライトデータ信号W_DQ0をライトデータ信号W_DQとして出力端子Yから出力バッファ15Aに出力する。
出力制御回路143は、例えば、D型フリップフロップである。出力制御回路143は、後述する論理否定回路144とでライトストローブ信号生成回路を構成し、該構成によってライトデータストローブ信号W_DQSを生成する。具体的には、出力制御回路143は、クロック端子CKに入力される所定のクロックCLKに基づいて、論理否定回路144からデータ端子Dに出力される反転データストローブ信号INV_DQSをライトデータストローブ信号W_DQSとして出力端子Qからデータストローブ出力端子WDQSを介して論理否定回路144及び出力バッファ15Bに出力する。
論理否定回路144は、例えば、インバータ回路である。論理否定回路144は、出力制御回路143とでライトストローブ信号生成回路を構成し、出力制御回路143が出力するライトストローブ信号W_DQSに対して論理否定を行い、該論理否定の演算結果を出力制御回路143にフィードバックする。具体的には、論理否定回路144は、出力制御回路143から出力されるライトストローブ信号W_DQSに対して論理否定を行い、該論理否定の演算結果を反転データストローブ信号INV_DQSとして出力制御回路143のデータ端子Dに出力する。
図8は、本発明の一実施形態に係るメモリ制御回路におけるリード位相制御回路の構成の一例を示す図である。同図に示すように、本実施形態に係るリード位相制御回路17は、例えば、遅延制御回路171と、出力制御回路172とを含んで構成される。
遅延制御回路171は、例えば、DLLである。遅延制御回路171は、入力バッファ16Bから出力されるリードデータストローブ信号R_DQSに、位相選択回路13から出力されるリード位相制御信号RP_CNTが示す位相条件に対応する遅延量を与え、位相調整データストローブ信号PH_DQSとして出力制御回路172の入力クロック端子ICKに出力する。
出力制御回路172は、例えば、FIFO(First In First Out)メモリである。出力制御回路172は、遅延制御回路171から入力クロック端子ICKに出力される位相調整データストローブ信号PH_DQSに基づいて、入力バッファ16Aから出力されるリードデータ信号R_DQが示す内容を記憶する。また、出力制御回路172は、出力クロック端子OCKに入力される所定のクロックCLKに基づいて、該記憶した内容のうち最も古い内容から順にリードデータ信号R_DQ0として比較器18に出力する。
以上のように構成される、メモリ制御回路10は、書き込み動作に関するライトデータ信号W_DQ及び読み出し動作に関するリードデータストローブ信号R_DQSの各位相条件について、メモリ20に対して書き込み動作及び読み出し動作を実行する。メモリ制御回路10は、該動作が正常に行われたか否かを判断し、該判断結果を各位相条件に対応するメモリ制御回路10の領域に記憶する。そして、メモリ制御回路10は、各位相条件について評価値を算出し、該算出した評価値のうち一定の基準を満たす評価値(例えば、最大値)に対応する位相条件を記憶し、該記憶した位相条件に従って、書き込み動作及び読み出し動作のライトイネーブル信号W_DQ及びリードデータストローブ信号R_DQSの位相を設定する。また、メモリ制御回路10は、上述したように単純な回路構成によって実現される。
これにより、メモリ制御回路10は、データ信号DQの有効状態がデータ信号DQのどの位相にあっても、メモリへのデータの書き込み及び読み出しに適した位相に、メモリ20のデータ信号DQ及びデータストローブ信号DQSの位相を容易に設定することができる。また、メモリ制御回路10は、メモリ20が正常に動作する書き込み動作及び読み出し動作のデータ信号DQ及びデータストローブ信号DQSの位相条件の組み合わせが複雑である場合においても、メモリへのデータの書き込み及び読み出しに適した位相に、メモリ20のデータ信号DQ及びデータストローブ信号DQSの位相を容易に設定することができるようになる。
図9は、本発明の一実施形態に係るメモリ制御回路における各種の信号のタイミングチャートである。具体的には、図9は、ライトデータ信号W_DQの位相の走査について説明するための、本発明の一実施形態に係るメモリ制御回路10における各種の信号のタイミングチャートである。同図において、メモリ制御回路10によってライトデータ信号W_DQが更新されるタイミングを時刻t0と定義する。また、時刻t0以降において、メモリ制御回路10がライトデータストローブ信号W_DQSの状態を遷移させる最初のタイミングを時刻t1と定義する。また、時刻t1以降において、メモリ制御回路10によってライトデータ信号W_DQが最初に更新されるタイミングを時刻t2と定義する。
同図において、仮想ライトデータ信号W_DQUは、メモリ制御回路10がライトデータ信号W_DQの位相を進めた場合のライトデータ信号W_DQの仮想のタイミングチャートである。また、仮想ライトデータ信号W_DQLは、メモリ制御回路10がライトデータ信号W_DQの位相を遅らせた場合のライトデータ信号W_DQの仮想のタイミングチャートである。なお、リードデータ信号R_DQ及びリードデータストローブ信号R_DQSのタイミングチャートに関しては、後述するため、その説明を省略する。
メモリ制御回路10は、上述した位相調整クロックPH_CLKに基づいて、ライトデータ信号W_DQの内容を更新する(即ち、時刻t0)。該更新によって、時刻t0から所定の期間、ライトデータ信号W_DQの状態は無効状態invalidとなる。ライトデータ信号W_DQの状態が無効状態invalidである間、メモリ20に対するライトデータ信号W_DQの内容の書き込み動作は無効となる。
時刻t0から所定の期間が経過後、ライトデータ信号W_DQの状態は有効状態validとなる。ライトデータ信号W_DQの状態が有効状態validである間、メモリ20に対するライトデータ信号W_DQの内容の書き込み動作は有効となる。
メモリ制御回路10は、所定のクロックCLKに基づいて、ライトデータストローブ信号W_DQSの状態を遷移させ、メモリ20にライトデータ信号W_DQの内容を記憶させる(即ち、時刻t1)。時刻t1から所定の期間が経過後、ライトデータ信号W_DQの状態は、有効状態validから無効状態invalidとなる。そして、メモリ制御回路10は、上述した位相調整クロックPH_CLKに基づいて、ライトデータ信号W_DQの内容を更新する(即ち、時刻t2)。
メモリ制御回路10がメモリ20にライトデータ信号W_DQの状態を記憶させるためには、ライトデータ信号W_DQSの状態が遷移するタイミング(即ち時刻t1)に、ライトデータ信号W_DQの状態が有効状態validである必要がある。メモリ制御回路10は、例えば、ライトデータ信号W_DQの位相の走査範囲を仮想ライトデータ信号W_DQUの位相から仮想ライトデータ信号W_DQLの位相までに設定する。斯かる場合、メモリ制御回路10は、該位相の走査範囲に、仮想ライトデータ信号W_DQU及びW_DQLの位相を含めて、例えばM個の位相条件を用意する。
そして、メモリ制御回路10は、該用意した各位相条件に従って、ライトデータ信号W_DQの位相を設定し、各位相条件についてメモリ20に対して書き込み動作及び読み出し動作を実行し、メモリ20の動作の判定結果を記憶する。メモリ制御回路10は、該記憶した判定結果に基づいて、各位相条件における評価値を算出し、該算出した評価値のうち一定の基準を満たす評価値(例えば最大値)に対応する位相条件に従って、ライトデータ信号W_DQの位相を設定する。
図10は、本発明の一実施形態に係るメモリ制御回路における各種の信号のタイミングチャートである。具体的には、図10は、リードデータストローブ信号R_DQSの位相の走査について説明するための、本発明の一実施形態に係るメモリ制御回路10における各種の信号のタイミングチャートである。同図において、メモリ制御回路10によってリードデータ信号R_DQが更新されるタイミングを時刻t0と定義する。また、時刻t0以降において、メモリ制御回路10がリードデータストローブ信号R_DQSの状態を遷移させる最初のタイミングを時刻t1と定義する。また、時刻t1以降において、メモリ制御回路10によって、リードデータ信号R_DQが最初に更新されるタイミングを時刻t2と定義する。
同図において、仮想リードデータストローブ信号R_DQSLは、メモリ制御回路10がリードデータストローブ信号R_DQSの位相を進めた場合のリードデータ信号R_DQSの仮想のタイミングチャートである。また、仮想リードデータ信号R_DQSUは、メモリ制御回路10がリードデータストローブ信号R_DQSの位相を遅らせた場合のリードデータ信号R_DQSの仮想のタイミングチャートである。なお、ライトデータ信号W_DQ及びライトデータストローブ信号W_DQSのタイミングチャートに関しては、上述した通りであるため、その説明を省略する。
メモリ制御回路10は、メモリ20から出力されるデータ信号DQに従って、リードデータ信号R_DQの内容を更新する(即ち、時刻t0)。該更新によって、時刻t0から所定の期間、リードデータ信号R_DQの状態は無効状態invalidとなる。リードデータ信号R_DQの状態が無効状態invalidである間、メモリ20からのリードデータ信号R_DQの内容の読み出しは無効となる。
時刻t0から所定の期間が経過後、リードデータ信号R_DQの状態は有効状態validとなる。リードデータ信号R_DQの状態が有効状態validである間、メモリ20からのリードデータ信号R_DQの内容の読み出しは有効となる。
メモリ制御回路10は、メモリ20から出力されるデータストローブ信号DQSに従って、リードデータストローブ信号R_DQSの状態を遷移させ、メモリ20からリードデータ信号R_DQの内容を読み出す(即ち、時刻t1)。また、時刻t1から所定の期間が経過後、リードデータ信号R_DQの状態は有効状態validから無効状態invalidとなる。そして、メモリ制御回路10は、メモリ20から出力されるデータ信号DQに従って、リードデータ信号R_DQの内容を更新する(即ち、時刻t2)。
上述したように、メモリ制御回路10がメモリ20からリードデータ信号R_DQの状態を読み出すためには、リードデータストローブ信号R_DQSの状態が遷移するタイミング(即ち時刻t1)に、リードデータ信号R_DQの状態が有効状態validである必要がある。メモリ制御回路10は、例えば、リードデータストローブ信号R_DQSの位相の走査の範囲を仮想リードデータストローブ信号R_DQSLの位相から仮想リードデータストローブ信号R_DQSUの位相までに設定する。メモリ制御回路10は、該位相の走査範囲に仮想リードデータストローブ信号R_DQSL及びR_DQSUの位相を含めて、例えばN個の位相条件を用意する。
そして、メモリ制御回路10は、各位相条件に従ってリードデータストローブ信号R_DQSの位相を設定し、各位相条件についてメモリ20に対して書き込み動作及び読み出し動作を実行し、メモリ20の動作の判定結果を記憶する。メモリ制御回路10は、該記憶した判定結果に基づいて、各位相条件における評価値を算出し、該算出した評価値のうち一定の基準を満たす評価値(例えば最大値)に対応する位相条件に従って、リードデータストローブ信号R_DQSの位相を設定する。
図11は、本発明の一実施形態に係る位相制御方法における各位相条件とメモリの動作の判定結果との対応関係を示す概念図である。同図において、リードデータストローブ信号R_DQSの位相条件rは列方向に対応し、ライトデータ信号W_DQの位相条件wは行方向に対応する。また、同図において、“○”は、メモリ20に対する書き込み動作及び読み出し動作が正常に行われたという判定結果を示し、“×”はメモリ20に対する書き込み動作及び読み出し動作が正常に行われなかったという判定結果を示す。また、同図において、“○”及び“×”のいずれの記載もない位相条件は、メモリ制御回路10がメモリ20に対して書き込み動作及び読み出し動作を未だ行っていない位相条件である。
さらに、同図において、書き込み動作の位相条件の数M及び読み出し動作の位相条件の数Nは、説明の簡単のため、いずれも16であると仮定する。なお、リードデータストローブ信号R_DQSの位相条件r及びライトデータ信号W_DQの位相条件wは、典型的には、値が小さい程位相が進んだ位相条件であり、値が大きい程位相が遅れた位相条件であるが、これに限られるものではない。
同図に示すように、メモリ制御回路10は、例えば、リードデータストローブ信号R_DQSの各位相条件rについて、ライトデータ信号W_DQの位相条件wを走査させながら、対応するメモリ20の動作の判定結果を記憶する。これにより、メモリ制御回路10は、ライトデータ信号W_DQ及びリードデータストローブ信号R_DQSの各位相条件に対応するメモリ20の動作の判定結果を得る。
例えば、リードデータストローブ信号R_DQSの位相条件rが6であり、かつ、ライトデータ信号W_DQの位相条件wが7である場合、メモリ20の動作の判定結果は“○”である。即ち、メモリ制御回路10がメモリ20に対する書き込み動作及び読み出し動作の位相設定に該位相条件を適用した場合、メモリ20に対する書き込み動作及び読み出し動作は正常に行われる。
また、例えば、リードデータストローブ信号R_DQSの位相条件rが2であり、かつ、ライトデータ信号W_DQの位相条件wが16である場合、メモリ20の動作の判定結果は“×”である。即ち、メモリ制御回路10がメモリ20に対する書き込み動作及び読み出し動作の位相設定に該位相条件を適用した場合、メモリ20に対する書き込み動作及び読み出し動作は正常に行われない。なお、ライトデータ信号W_DQの位相条件w及びリードデータストローブ信号R_DQSの位相条件rの走査方法は、これに限られるものではない。
次に、書き込み動作及び読み出し動作の各位相条件における評価値の算出方法について、図12及び図13を参照しながら説明する。図12は、本発明の一実施形態に係る位相制御方法において、各位相条件とメモリの動作の判定結果との対応関係を示す概念図である。同図は、上述した各位相条件と、メモリ20の動作の判定結果との対応関係に対して、リードデータストローブ信号R_DQSの位相条件rと、ライトデータ信号W_DQの位相条件wとで定められる算出範囲αがさらに加えられたものである。なお、同図において、評価値の算出で選択する書き込み動作の位相条件の数m及び読み出し動作の位相条件の数nの値は、説明の簡単のため、いずれも9であると仮定する。
算出範囲αは、評価値の算出で使用する位相条件の範囲である。算出範囲αは、例えば、以下に示す条件1によって示される。
r−d<αr<r+d かつ w−c<αw<w+c …<条件1>
ただし、αr及びαwは、それぞれ算出範囲αに含まれるリードデータストローブ信号R_DQSの位相条件及びライトデータ信号W_DQの位相条件である。
例えば、評価値の算出対象の位相条件r及びwがいずれも8であると仮定する。斯かる場合、c及びdは、それぞれ(m−1)/2及び(n−1)/2より、いずれも4となる。従って、算出範囲αは、条件1に基づいて、リードデータストローブ信号R_DQSの位相条件rが4乃至12であり、かつ、ライトデータ信号W_DQの位相条件wが4乃至12である範囲となる。なお、算出範囲αは条件1に限られるものではない。
同図に示すように、メモリ制御回路10は、例えば、リードデータストローブ信号R_DQSの位相条件rのそれぞれに対して、ライトデータ信号W_DQの位相条件wを走査し、算出対象の位相条件に対応する算出範囲αに基づいて評価値を算出する。評価値の算出にあたって、メモリ制御回路10は、算出範囲αに該当する各位相条件について、メモリ20の動作の判定結果と、評価係数とを乗算する。メモリ制御回路10は、算出範囲αに該当する各位相条件の乗算結果を合計し、該合計を該算出対象の位相条件における評価値として決定する。ここで、評価係数は、算出対象の位相条件と、算出範囲αに該当する各位相条件との位相差に従って予め定められるが、その詳細については後述する。
これにより、メモリ制御回路10は、ライトデータ信号W_DQ及びリードデータストローブ信号R_DQSの各位相条件に対応する評価値を得る。なお、ライトデータ信号W_DQの位相条件w及びリードデータストローブ信号R_DQSの位相条件rの走査方法は、上述した方法に限られるものではない。
図13は、本発明の一実施形態に係る位相制御方法において、算出対象の位相条件に対する位相差と、評価係数との対応関係を示す概念図である。同図において、算出対象の位相条件に対するリードデータストローブ信号R_DQSの位相差Δrは列方向に対応し、算出対象の位相条件に対するライトデータ信号DQの位相差Δwは行方向に対応する。また、各欄に記載される数字は、評価係数を示す。
同図において、算出対象の位相条件に対する位相差Δr及びΔwは、典型的には、値が小さい程算出対象の位相条件に対して進んだ位相差を示し、値が大きい程算出対象の位相条件に対して遅れた位相差を示すが、これに限られるものではない。
評価係数は、算出対象の位相条件に対する位相差Δr及びΔwに対応してその値が定められる。評価係数は、典型的には、算出対象の位相条件に対する位相差Δr及びΔwの値の絶対値が小さい程、大きな値となる。また、評価係数は、算出対象の位相条件に対する位相差Δr及びΔwの値が0以外である場合の全ての条件の評価係数の合計よりも、算出対象の位相条件に対する位相差Δr及びΔwの値が0である場合の評価係数の値の方が大きくなるようにその値が定められる。これは、メモリ制御回路10が、メモリ20に対する書き込み動作及び読み出し動作の位相設定に、メモリ20に対して書き込み及び読み出し動作が正常に行われない位相条件を適用しないためである。
評価係数は、例えば、以下に示す条件2乃至条件4に基づいて決定される。
Δr=0 かつ Δw=0 …<条件2>
|Δr|<2 かつ |Δw|<2 …<条件3>
|Δr|<3 かつ |Δw|<3 かつ |Δr|+|Δw|<4 …<条件4>
位相差Δr及びΔwが条件2を満たす場合、評価係数は例えば1000となる。また、位相差Δr及びΔwが条件2を満たさず、かつ、条件3及び条件4を満たす場合、評価係数は例えば5となる。また、位相差Δr及びΔwが条件4のみを満たす場合、評価係数は例えば2となる。さらに、位相差Δr及びΔwが条件2乃至条件4のいずれも満たさない場合、評価係数は例えば1となる。また、該当する位相条件が存在しない場合、メモリ制御回路10は、メモリ20の動作判定の結果を“×”とみなして評価値の算出を行う。なお、算出対象の位相条件に対する位相差Δr及びΔwと、評価係数との対応関係は、これに限られるものではない。
図13に示される算出範囲αを図12に示されるメモリ20の動作の判定結果と位相条件との対応関係において、算出対象の位相条件r及びwがいずれも8である場合に適用したと仮定する。斯かる場合、図12及び図13を参照して、該位相条件における評価値は、1000×1+5×8+2×12+1×43より、1107である。また、例えば、算出対象の位相条件r及びwがそれぞれ8及び15である場合の評価値は、1000×0+5×0+2×0+1×9より、9である。
このように、メモリ制御回路10は、リードデータストローブ信号R_DQS及びライトデータストローブ信号W_DQの各位相条件について評価値を算出し、一定の基準を満たす評価値(例えば最大値)に対応する位相条件をメモリに対する書き込み動作及び読み出し動作の位相条件に決定する。
図14は、本発明の一実施形態に係る位相制御方法において、各位相条件と評価値との対応関係を示す概念図である。同図において、読み出し動作の位相条件rは列方向に対応し、書き込み動作の位相条件wは行方向に対応する。また、各欄の数字は、各位相条件における評価値である。例えば、同図において、リードデータストローブ信号R_DQSの位相条件rが1であり、ライトデータ信号W_DQの位相条件wが5である場合の評価値は7である。また、例えば、リードデータストローブ信号R_DQSの位相条件rが8であり、ライトデータ信号W_DQの位相条件wが6である場合の評価値は1098である。
同図に示すように、メモリ制御回路10は、各位相条件に対して評価値の算出を行い、算出した評価値と該評価値に対応する位相条件とを記憶する。メモリ制御回路10は、同様に続く位相条件について評価値の算出を行い、算出した評価値が該記憶した評価値よりも大きいか否かを判断する。メモリ制御回路10は、算出した評価値が該記憶した評価値よりも大きいと判断する場合、該記憶した評価値を算出した評価値に更新するとともに、該記憶した評価値に対応する位相条件を算出した評価値に対応する位相条件に更新する。一方、メモリ制御回路10は、算出した評価値が該記憶した評価値よりも大きくないと判断する場合、さらに続く位相条件の評価値の算出の処理に進む。
同図において、評価値は、位相条件r及びwがいずれも8である位相条件で1107となり、該評価値が本例における最大の評価値であることが分かる。従って、斯かる場合においては、メモリ制御回路10は、リードデータストローブ信号R_DQS及びライトデータ信号W_DQSの位相をそれぞれ位相条件r及びwが8である場合に対応する位相に設定する。これにより、メモリ制御回路10は、メモリへのデータの書き込み及び読み出しに適した位相に、メモリ20に対する書き込み動作及び読み出し動作の位相を容易に設定することができる。
図15は、本発明の一実施形態に係るメモリ制御回路における各種の信号のタイミングチャートである。具体的には、図15は、本発明の一実施形態に係るメモリ制御回路10がメモリ20に対する書き込み動作及び読み出し動作の位相設定を行う前後の各種の信号のタイミングチャートである。同図において、メモリ制御回路10による位相設定前にいて、ライトデータストローブ信号W_DQS及びリードデータストローブ信号R_DQSの状態が遷移するタイミングを時刻t1(0)と定義する。また、同図において、メモリ制御回路10による位相設定後において、リードデータストローブ信号R_DQSの状態が遷移するタイミングを時刻t1(1)と定義する。
同図において、仮想ライトデータ信号W_DQ(0)は、メモリ制御回路10の位相設定前におけるライトデータ信号W_DQを示す仮想のタイミングチャートである。また、仮想リードデータストローブ信号R_DQS(0)は、メモリ制御回路10の位相設定前におけるリードデータストローブ信号R_DQSを示す仮想のタイミングチャートである。
同図が示すように、時刻t1(0)で、仮想ライトデータ信号W_DQ(0)及びリードデータ信号R_DQの状態はいずれも無効状態invalidである。従って、メモリ制御回路10が位相設定を行わない場合、メモリ制御回路10はメモリ20に対して書き込み動作及び読み出し動作を正常に行わない。
メモリ制御回路10の位相設定によって、仮想ライトデータ信号W_DQ(0)及び仮想リードデータストローブ信号R_DQS(0)の位相は、上述した算出方法によって求められる評価値に基づいて、それぞれ変更される。メモリ制御回路10による位相設定によって、ライトデータ信号W_DQの状態は、時刻t1(0)で有効状態validとなり、また、リードデータ信号R_DQの状態は時刻t1(1)で有効状態validとなる。これにより、メモリ制御回路10は、メモリ20に対して書き込み動作及び読み出し動作を正常に行うことができるようになる。
図16は、本発明の一実施形態に係る位相の調整方法において、メモリ制御回路の動作を概略的に説明するためのフローチャートである。同図を参照して、メモリ制御回路10は、まず、自身を位相走査モードに設定する(S1601)。
次に、メモリ制御回路10は、ライトデータ信号W_DQの位相条件及びリードデータストローブ信号R_DQSの位相条件を走査しながら、各位相条件でメモリ20に対して書き込み動作及び読み出し動作を実行する。メモリ制御回路10は、メモリ20に対して正常に書き込み動作及び読み出し動作が行えたか否かを判断し、該判断結果を各位相条件に対応するメモリ制御回路10の領域に記憶する(S1602)。該処理の詳細に関しては、図17を参照して説明される。
次に、メモリ制御回路10は、自身を位相走査モードから評価値算出モードに切り替える(S1603)。メモリ制御回路10は、ライトデータ信号W_DQの位相条件及びリードデータストローブ信号R_DQSの位相条件を走査しながら、各位相条件で評価値を算出する。メモリ制御回路10は、各位相条件において算出した評価値のうち、一定の基準を満たす評価値(例えば、最大値)を選択し、該選択した評価値とそれに対応する位相条件とを記憶する(S1604)。該処理の詳細に関しては、図18を参照して説明される。
メモリ制御回路10は、ライトデータ信号W_DQの位相と、リードデータストローブ信号R_DQSの位相とを記憶した評価値に対応する位相条件が示す位相に設定し(S1605)、メモリ20に対するデータ信号DQ及びデータストローブ信号DQSの位相設定を終了する。
図17は、本発明の一実施形態に係る位相の調整方法において、メモリ制御回路の動作を概略的に説明するためのフローチャートであり、図16におけるステップS1602の処理の詳細を示している。同図を参照して、メモリ制御回路10は、まず、リードデータストローブ信号R_DQSの位相条件を初期化する。具体的には、メモリ制御回路10は、位相走査を行う際の最初の位相条件に、リードデータストローブ信号R_DQSの位相条件を設定する(S1701)。
メモリ制御回路10は、ライトデータ信号W_DQの位相条件を初期化する。具体的には、メモリ制御回路10は、位相走査を行う際の最初の位相条件に、ライトデータ信号W_DQの位相条件を設定する(S1702)。
次に、メモリ制御回路10は、現在の位相条件で、メモリ20に対して書き込み動作及び読み出し動作を実行する(S1703)。メモリ制御回路10は、リードデータ信号R_DQ0の内容が、ライトデータ信号W_DQ0の内容と一致するか否かを判断する(S1704)。メモリ制御回路10は、該内容同士が一致すると判断する場合(S1704のYes)、メモリ20に対して正常に書き込み動作及び読み出し動作が行えたと判断し、現在の位相条件に対応するメモリ制御回路10の領域に“PASS”の結果を記憶する。一方、メモリ制御回路10は、該内容同士が一致しないと判断する場合(S1704のNo)、メモリ20に対して正常に書き込み動作及び読み出し動作が行えないと判断し、現在の位相条件に対応するメモリ制御回路10の領域に“FAIL”の結果を記憶する。
メモリ制御回路10は、ライトデータ信号W_DQの位相条件を更新する。具体的には、メモリ制御回路10はライトデータ信号W_DQの位相条件を現在の位相条件に続く位相条件に設定する(S1707)。
メモリ制御回路10は、ライトデータ信号W_DQの位相条件の全てを使用したか否かを判断する(S1708)。メモリ制御回路10は、ライトデータ信号W_DQの位相条件の全てを使用していないと判断する場合(S1708のNo)、ステップS1703の処理に進む。一方、メモリ制御回路10は、ライトデータ信号W_DQの位相条件の全てを使用したと判断する場合(S1708のYes)、リードデータストローブ信号R_DQSの位相条件を更新する。具体的には、メモリ制御回路10はリードデータ信号R_DQSの位相条件を現在の位相条件に続く位相条件に設定する(S1709)。
メモリ制御回路10は、リードデータストローブ信号R_DQSの位相条件の全てを使用したか否かを判断する(S1710)。メモリ制御回路10は、リードデータストローブ信号R_DQSの位相条件の全てを使用していないと判断する場合(S1710のNo)、ステップS1702の処理に進む。一方、メモリ制御回路10は、リードデータストローブ信号R_DQSの位相条件の全てを使用したと判断する場合(S1710のYes)、各位相条件におけるメモリ20の動作判定の結果の取得の処理を終了し、元のフローに戻る。
図18は、本発明の一実施形態に係る位相の調整方法において、メモリ制御回路の動作を概略的に説明するためのフローチャートであり、図16におけるステップS1604の処理の詳細を示している。同図を参照して、メモリ制御回路10は、まず、リードデータストローブ信号R_DQSの位相条件を初期化する。具体的には、メモリ制御回路10は、位相走査を行う際の最初の位相条件に、リードデータストローブ信号R_DQSの位相条件を設定する(S1801)。
メモリ制御回路10は、ライトデータ信号W_DQの位相条件を初期化する。具体的には、メモリ制御回路10は、位相走査を行う際の最初の位相条件に、ライトデータ信号W_DQの位相条件を設定する(S1802)。
次に、メモリ制御回路10は、現在の位相条件に対応する評価値を算出する(S1803)。メモリ制御回路10は、算出した評価値と、暫定の最良の評価値とを比較し、暫定の最良の評価値より算出した評価値が大きいか否かを判断する(S1804)。メモリ制御回路10は、暫定の最良の評価値より現在の評価値が大きくないと判断する場合(S1804のNo)、ステップS1806の処理に進む。一方、メモリ制御回路10は、暫定の最良の評価値より現在の評価値が大きいと判断する場合(S1804のYes)、暫定の最良の評価値と、それに対応する暫定の最良の位相条件とをそれぞれ現在の評価と、それに対応する現在の位相条件とに更新する(S1805)。
メモリ制御回路10は、ライトデータ信号W_DQの位相条件を更新する。具体的には、メモリ制御回路10はライトデータ信号W_DQの位相条件を現在の位相条件に続く位相条件に設定する(S1806)。
メモリ制御回路10は、ライトデータ信号W_DQの位相条件の全てを使用したか否かを判断する(S1807)。メモリ制御回路10は、ライトデータ信号W_DQの位相条件の全てを使用していないと判断する場合(S1807のNo)、ステップS1803の処理に進む。一方、メモリ制御回路10は、ライトデータ信号W_DQの位相条件の全てを使用したと判断する場合(S1807のYes)、リードデータストローブ信号R_DQSの位相条件を更新する。具体的には、メモリ制御回路10は、現在の位相条件に続く位相条件に、リードデータストローブ信号R_DQSの位相条件を設定する(S1808)。
メモリ制御回路10は、リードデータストローブ信号R_DQSの位相条件の全てを使用したか否かを判断する(S1809)。メモリ制御回路10は、リードデータストローブ信号R_DQSの位相条件の全てを使用していないと判断する場合(S1809のNo)、ステップS1802の処理に進む。一方、メモリ制御回路10は、リードデータストローブ信号R_DQSの位相条件の全てを使用したと判断する場合(S1809のYes)、最良の評価値の算出と、それに対応する最良の位相条件の取得の処理とを終了し、元のフローに戻る。
次に、本実施形態に係るメモリ制御回路10がメモリ20に対する書き込み動作及び読み出し動作の位相設定を終えた後のメモリ制御回路10の動作について説明する。まず、ライトデータ生成回路12は、例えば外部の別の装置(図示せず)から出力される通常データを書き込み動作のデータ信号としてライト位相制御回路14に出力する。次に、ライト位相制御回路14は、位相演算回路11によって設定された位相設定に従って、書き込み動作のデータ信号の位相を調整し、該データ信号をメモリ20に出力する。
メモリ20は、データストローブ信号に基づいて、ライト位相制御回路14によって位相が調整されたデータ信号が示す対象データを記憶するとともに、該対象データをデータ信号として該データ信号をラッチするタイミングを示すデータストローブ信号とともにリード位相制御回路17に出力する。リード位相制御回路17は、位相演算回路11によって設定された位相設定に従って、メモリ20から出力されるデータストローブ信号の位相を調整する。そして、リード位相制御回路17は、該データストローブ信号に基づいて、メモリ20から出力されるデータ信号が示す対象データをラッチして、例えばメモリ20の記憶内容を必要とする外部の別の装置(図示せず)に該ラッチした対象データを出力する。
上述したように、本実施形態に係るメモリ制御回路10は、書き込み動作及び読み出し動作のライトデータ信号W_DQ及びリードデータストローブ信号R_DQSの各位相条件について、メモリ20に対して書き込み動作及び読み出し動作を実行する。メモリ制御回路10は、該動作が正常に行われたか否かを判断し、該判断結果を各位相条件に対応するメモリ制御回路10の領域に記憶する。そして、メモリ制御回路10は、各位相条件について評価値を算出し、該算出した評価値のうち一定の基準を満たす評価値(例えば、最大値)に対応する位相条件を記憶し、該記憶した位相条件に従って、書き込み動作及び読み出し動作のライトイネーブル信号W_DQ及びリードデータストローブ信号R_DQSの位相を設定する。
従って、本実施形態に係るメモリ制御回路10は、データ信号DQの有効状態がデータ信号DQのどの位相にあっても、メモリへのデータの書き込み及び読み出しに適した位相に、メモリ20のデータ信号DQ及びデータストローブ信号DQSの位相を容易に設定することができる。また、メモリ制御回路10は、メモリ20が正常に動作する書き込み動作及び読み出し動作のデータ信号DQ及びデータストローブ信号DQSの位相条件の組み合わせが複雑である場合においても、メモリへのデータの書き込み及び読み出しに適した位相に、メモリ20のデータ信号DQ及びデータストローブ信号DQSの位相を容易に設定することができるようになる。
上記各実施形態は、本発明を説明するための例示であり、本発明をこれらの実施形態にのみ限定する趣旨ではない。本発明は、その要旨を逸脱しない限り、さまざまな形態で実施することができる。
例えば、本明細書に開示される方法においては、その結果に矛盾が生じない限り、ステップ、動作又は機能を並行して又は異なる順に実施しても良い。説明されたステップ、動作及び機能は、単なる例として提供されており、ステップ、動作及び機能のうちのいくつかは、発明の要旨を逸脱しない範囲で、省略でき、また、互いに結合させることで一つのものとしてもよく、また、他のステップ、動作又は機能を追加してもよい。
また、本明細書では、さまざまな実施形態が開示されているが、一の実施形態における特定のフィーチャ(技術的事項)を適宜改良しながら、他の実施形態に追加し、又は該他の実施形態における特定のフィーチャと置換することができ、そのような形態も本発明の要旨に含まれる。