(57)【特許請求の範囲】
【請求項１】
メモリを制御するメモリ制御装置であって、
前記メモリ制御装置が前記メモリからデータを読み出す際に当該メモリがデータとともに出力する第１制御信号に対して位相調整を行う第１位相調整部と、
前記第１制御信号に基づいて、前記メモリから読み出されたデータを取り込むデータ取り込み部と
を備え、
前記メモリ制御装置は、前記第１制御信号に対する位相調整用の第１調整用データを前記メモリに書き込み、
前記データ取り込み部は、前記メモリ制御装置が前記メモリから読み出した前記第１調整用データを前記第１制御信号に基づいて取り込み、
前記第１位相調整部は、前記データ取り込み部によって取り込まれた前記第１調整用データが適切か否かを判定し、その判定結果に基づいて前記第１制御信号に対する位相調整を行い、
前記メモリ制御装置は、前記第１調整用データに含まれる複数種類の第１データのそれぞれについて、当該第１データを前記メモリに書き込んだ後、当該第１データを前記メモリから読み出す処理を複数回実行し、
前記第１位相調整部は、前記複数種類の第１データのそれぞれについて、当該第１データを用いた前記処理が前記メモリ制御装置で実行されるたびに、前記第１制御信号の位相を変化させ、
前記第１位相調整部は、前記複数種類の第１データのそれぞれについて、前記メモリ制御装置が前記処理を実行するたびに前記データ取り込み部によって取り込まれた当該第１データがそれぞれ適切であるか否かを判定し、その判定結果に基づいて、前記複数種類の第１データのそれぞれについて、前記データ取り込み部によって取り込まれた当該第１データが適切となる前記第１制御信号の位相範囲を特定し、特定した複数の位相範囲が重複する範囲の中央値を前記第１制御信号の位相の適切な値とする、メモリ制御装置。
【請求項２】
請求項１に記載のメモリ制御装置であって、
前記第１位相調整部は、前記データ取り込み部によって取り込まれた前記第１データに対してパリティチェックを行うことによって、当該第１データが適切か否かを判定する、メモリ制御装置。
【請求項３】
請求項１及び請求項２のいずれか一つに記載のメモリ制御装置であって、
前記メモリ制御装置と前記メモリとの間のデータバスのビット数は、Ｎ（≧２）ビットであり、
前記複数種類の第１データのそれぞれは、パターンデータであって、
前記複数種類の第１データは、
Ｎビットから成る第１単位データと、Ｎビットから成る第２単位データとが交互に現れる第１パターンデータと、
Ｎビットから成る第３単位データと、Ｎビットから成る第４単位データとが交互に現れる第２パターンデータと
を含み、
前記第１及び第２単位データの間では１ビットだけ相違し、
前記第３及び第４単位データの間ではＮビットすべて相違する、メモリ制御装置。
【請求項４】
請求項１乃至請求項３のいずれか一つに記載のメモリ制御装置であって、
前記メモリ制御装置が、前記メモリにデータを書き込む際に出力する、当該メモリが当該データを取り込む際の基準となる第２制御信号に対して位相調整を行う第２位相調整部を備え、
前記メモリ制御装置は、前記第２制御信号に対する位相調整用の第２調整用データを前記メモリに書き込み、
前記データ取り込み部は、前記メモリ制御装置が前記メモリから読み出した前記第２調整用データを前記第１制御信号に基づいて取り込み、
前記第２位相調整部は、前記データ取り込み部によって取り込まれた前記第２調整用データが適切か否かを判定し、その判定結果に基づいて前記第２制御信号に対する位相調整を行う、メモリ制御装置。
【請求項５】
請求項１乃至請求項４のいずれか一つに記載のメモリ制御装置であって、
前記メモリ制御装置が、前記メモリにデータを書き込む際あるいは当該メモリからデータを読み出す際に、当該データに先立って出力する第３制御信号に対して位相調整を行う第３位相調整部を備え、
前記メモリ制御装置は、前記第３制御信号に対する位相調整用の第３調整用データを前記メモリに書き込み、
前記データ取り込み部は、前記メモリ制御装置が前記メモリから読み出した前記第３調整用データを前記第１制御信号に基づいて取り込み、
前記第３位相調整部は、前記データ取り込み部によって取り込まれた前記第３調整用データが適切か否かを判定し、その判定結果に基づいて前記第３制御信号に対する位相調整を行う、メモリ制御装置。
【請求項６】
請求項１乃至請求項５のいずれか一つに記載のメモリ制御装置と、
前記メモリ制御装置が制御するメモリと
を備える、半導体装置。
【請求項７】
メモリを制御するメモリ制御装置を制御するための制御プログラムであって、
前記メモリ制御装置に、
（ａ）前記メモリ制御装置が前記メモリからデータを読み出す際に、当該メモリがデータとともに出力する制御信号に対する位相調整用の調整用データを前記メモリに書き込み、書き込んだ前記調整用データを前記メモリから読み出す工程と、
（ｂ）前記メモリから読み出された前記調整用データを前記制御信号に基づいて取り込む工程と、
（ｃ）前記制御信号に基づいて取り込まれた前記調整用データが適切か否かを判定し、その判定結果に基づいて前記制御信号に対する位相調整を行う工程と
を実行させ、
前記工程（ａ）は、前記調整用データに含まれる複数種類のデータのそれぞれについて、当該データを前記メモリに書き込んだ後、当該データを前記メモリから読み出す処理を複数回実行する工程を含み、
前記工程（ｂ）は、前記複数種類のデータのそれぞれについて、当該データを用いた前記処理が実行されるたびに、前記制御信号の位相を変化させて前記データを前記制御信号に基づいて取り込む工程を含み、
前記工程（ｃ）は、前記複数種類のデータのそれぞれについて、前記処理が実行されるたびに取り込まれた当該データがそれぞれ適切であるか否かを判定し、その判定結果に基づいて、前記複数種類のデータのそれぞれについて、取り込まれた当該データが適切となる前記制御信号の位相範囲を特定し、特定した複数の位相範囲が重複する範囲の中央値を前記制御信号の位相の適切な値とする工程を含む、制御プログラム。
【請求項８】
メモリを制御するメモリ制御装置の動作方法であって、
（ａ）前記メモリ制御装置が前記メモリからデータを読み出す際に、当該メモリがデータとともに出力する制御信号に対する位相調整用の調整用データを前記メモリに書き込み、書き込んだ前記調整用データを前記メモリから読み出す工程と、
（ｂ）前記メモリから読み出された前記調整用データを前記制御信号に基づいて取り込む工程と、
（ｃ）前記制御信号に基づいて取り込まれた前記調整用データが適切か否かを判定し、その判定結果に基づいて前記制御信号に対する位相調整を行う工程と
を備え、
前記工程（ａ）は、前記調整用データに含まれる複数種類のデータのそれぞれについて、当該データを前記メモリに書き込んだ後、当該データを前記メモリから読み出す処理を複数回実行する工程を含み、
前記工程（ｂ）は、前記複数種類のデータのそれぞれについて、当該データを用いた前記処理が実行されるたびに、前記制御信号の位相を変化させて前記データを前記制御信号に基づいて取り込む工程を含み、
前記工程（ｃ）は、前記複数種類のデータのそれぞれについて、前記処理が実行されるたびに取り込まれた当該データがそれぞれ適切であるか否かを判定し、その判定結果に基づいて、前記複数種類のデータのそれぞれについて、取り込まれた当該データが適切となる前記制御信号の位相範囲を特定し、特定した複数の位相範囲が重複する範囲の中央値を前記制御信号の位相の適切な値とする工程を含む、メモリ制御装置の動作方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリを制御するメモリ制御装置に関する。
【背景技術】
【０００２】
従来から、メモリを制御するメモリ制御装置に関する様々な技術が提案されている。特許文献１には、ＤＤＲ（Double Data Rate）型のＳＤＲＡＭ (Synchronous Dynamic Random Access Memory) を制御するメモリ制御装置に関する技術が開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１３−４１３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
さて、メモリ制御装置がメモリからデータを読み出す際には、メモリ制御装置がメモリからのデータを取り込む際の基準となる制御信号がメモリから出力されることがある。例えば、ＤＤＲ型のＳＤＲＡＭからは、データストローブ信号と呼ばれる制御信号が、データとともに出力される。メモリ制御装置は、この制御信号に基づいてメモリからのデータを取り込む。
【０００５】
メモリ制御装置では、上記の制御信号の位相が適切でなければ、当該制御信号に基づいて、メモリからのデータを適切に取り込めない可能性がある。
【０００６】
そこで、本発明は上述の点に鑑みて成されたものであり、メモリからデータとともに出力される制御信号の位相を適切な値に設定することが可能な技術を提供することを目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明に係るメモリ制御装置の一態様は、メモリを制御するメモリ制御装置であって、前記メモリ制御装置が前記メモリからデータを読み出す際に当該メモリがデータとともに出力する第１制御信号に対して位相調整を行う第１位相調整部と、前記第１制御信号に基づいて、前記メモリから読み出されたデータを取り込むデータ取り込み部とを備え、前記メモリ制御装置は、前記第１制御信号に対する位相調整用の第１調整用データを前記メモリに書き込み、前記データ取り込み部は、前記メモリ制御装置が前記メモリから読み出した前記第１調整用データを前記第１制御信号に基づいて取り込み、前記第１位相調整部は、前記データ取り込み部によって取り込まれた前記第１調整用データが適切か否かを判定し、その判定結果に基づいて前記第１制御信号に対する位相調整を行い、前記メモリ制御装置は、前記第１調整用データに含まれる複数種類の第１データのそれぞれについて、当該第１データを前記メモリに書き込んだ後、当該第１データを前記メモリから読み出す処理を複数回実行し、前記第１位相調整部は、前記複数種類の第１データのそれぞれについて、当該第１データを用いた前記処理が前記メモリ制御装置で実行されるたびに、前記第１制御信号の位相を変化させ、前記第１位相調整部は、前記複数種類の第１データのそれぞれについて、前記メモリ制御装置が前記処理を実行するたびに前記データ取り込み部によって取り込まれた当該第１データがそれぞれ適切であるか否かを判定し、その判定結果に基づいて、前記複数種類の第１データのそれぞれについて、前記データ取り込み部によって取り込まれた当該第１データが適切となる前記第１制御信号の位相範囲を特定し、特定した複数の位相範囲が重複する範囲の中央値を前記第１制御信号の位相の適切な値とする。
【０００８】
また、本発明に係るメモリ制御装置の一態様では、前記第１位相調整部は、前記データ取り込み部によって取り込まれた前記第１データに対してパリティチェックを行うことによって、当該第１データが適切か否かを判定する。
【００１２】
また、本発明に係るメモリ制御装置の一態様では、前記メモリ制御装置と前記メモリとの間のデータバスのビット数は、Ｎ（≧２）ビットであり、前記複数種類の第１データのそれぞれは、パターンデータであって、前記複数種類の第１データは、Ｎビットから成る第１単位データと、Ｎビットから成る第２単位データとが交互に現れる第１パターンデータと、Ｎビットから成る第３単位データと、Ｎビットから成る第４単位データとが交互に現れる第２パターンデータとを含み、前記第１及び第２単位データの間では１ビットだけ相違し、前記第３及び第４単位データの間ではＮビットすべて相違する。
【００１３】
また、本発明に係るメモリ制御装置の一態様では、前記メモリ制御装置が、前記メモリにデータを書き込む際に出力する、当該メモリが当該データを取り込む際の基準となる第２制御信号に対して位相調整を行う第２位相調整部が設けられ、前記メモリ制御装置は、前記第２制御信号に対する位相調整用の第２調整用データを前記メモリに書き込み、前記データ取り込み部は、前記メモリ制御装置が前記メモリから読み出した前記第２調整用データを前記第１制御信号に基づいて取り込み、前記第２位相調整部は、前記データ取り込み部によって取り込まれた前記第２調整用データが適切か否かを判定し、その判定結果に基づいて前記第２制御信号に対する位相調整を行う。
【００１４】
また、本発明に係るメモリ制御装置の一態様では、前記メモリ制御装置が、前記メモリにデータを書き込む際あるいは当該メモリからデータを読み出す際に、当該データに先立って出力する第３制御信号に対して位相調整を行う第３位相調整部が設けられ、前記メモリ制御装置は、前記第３制御信号に対する位相調整用の第３調整用データを前記メモリに書き込み、前記データ取り込み部は、前記メモリ制御装置が前記メモリから読み出した前記第３調整用データを前記第１制御信号に基づいて取り込み、前記第３位相調整部は、前記データ取り込み部によって取り込まれた前記第３調整用データが適切か否かを判定し、その判定結果に基づいて前記第３制御信号に対する位相調整を行う。
【００１５】
また、本発明に係る半導体装置は、上記のメモリ制御装置と、前記メモリ制御装置が制御するメモリとを備える。
【００１６】
また、本発明に係る制御プログラムの一態様は、メモリを制御するメモリ制御装置を制御するための制御プログラムであって、前記メモリ制御装置に、（ａ）前記メモリ制御装置が前記メモリからデータを読み出す際に、当該メモリがデータとともに出力する制御信号に対する位相調整用の調整用データを前記メモリに書き込み、書き込んだ前記調整用データを前記メモリから読み出す工程と、（ｂ）前記メモリから読み出された前記調整用データを前記制御信号に基づいて取り込む工程と、（ｃ）前記制御信号に基づいて取り込まれた前記調整用データが適切か否かを判定し、その判定結果に基づいて前記制御信号に対する位相調整を行う工程とを実行させ、前記工程（ａ）は、前記調整用データに含まれる複数種類のデータのそれぞれについて、当該データを前記メモリに書き込んだ後、当該データを前記メモリから読み出す処理を複数回実行する工程を含み、前記工程（ｂ）は、前記複数種類のデータのそれぞれについて、当該データを用いた前記処理が実行されるたびに、前記制御信号の位相を変化させて前記データを前記制御信号に基づいて取り込む工程を含み、前記工程（ｃ）は、前記複数種類のデータのそれぞれについて、前記処理が実行されるたびに取り込まれた当該データがそれぞれ適切であるか否かを判定し、その判定結果に基づいて、前記複数種類のデータのそれぞれについて、取り込まれた当該データが適切となる前記制御信号の位相範囲を特定し、特定した複数の位相範囲が重複する範囲の中央値を前記制御信号の位相の適切な値とする工程を含む。
【００１７】
また、本発明に係るメモリ制御装置の動作方法の一態様は、メモリを制御するメモリ制御装置の動作方法であって、（ａ）前記メモリ制御装置が前記メモリからデータを読み出す際に、当該メモリがデータとともに出力する制御信号に対する位相調整用の調整用データを前記メモリに書き込み、書き込んだ前記調整用データを前記メモリから読み出す工程と、（ｂ）前記メモリから読み出された前記調整用データを前記制御信号に基づいて取り込む工程と、（ｃ）前記制御信号に基づいて取り込まれた前記調整用データが適切か否かを判定し、その判定結果に基づいて前記制御信号に対する位相調整を行う工程とを備え、前記工程（ａ）は、前記調整用データに含まれる複数種類のデータのそれぞれについて、当該データを前記メモリに書き込んだ後、当該データを前記メモリから読み出す処理を複数回実行する工程を含み、前記工程（ｂ）は、前記複数種類のデータのそれぞれについて、当該データを用いた前記処理が実行されるたびに、前記制御信号の位相を変化させて前記データを前記制御信号に基づいて取り込む工程を含み、前記工程（ｃ）は、前記複数種類のデータのそれぞれについて、前記処理が実行されるたびに取り込まれた当該データがそれぞれ適切であるか否かを判定し、その判定結果に基づいて、前記複数種類のデータのそれぞれについて、取り込まれた当該データが適切となる前記制御信号の位相範囲を特定し、特定した複数の位相範囲が重複する範囲の中央値を前記制御信号の位相の適切な値とする工程を含む。
【発明の効果】
【００１８】
本発明の一態様によれば、メモリからデータとともに出力される制御信号の位相を適切な値に設定することができる。
【図面の簡単な説明】
【００１９】
【図１】半導体装置の構成を示す図である。
【図２】クロック信号、データ及びデータストローブ信号の理想的な関係を示す図である。
【図３】メモリ制御装置の構成を示す図である。
【図４】メモリ制御装置の動作を示すフローチャートである。
【図５】調整用データの一例を示す図である。
【図６】リード側データストローブ信号の位相の設定値の一例を示す図である。
【図７】メモリ制御装置の動作を示すフローチャートである。
【図８】判定部での判定結果の一例を示す図である。
【図９】メモリ制御装置の動作を示すフローチャートである。
【図１０】判定部での判定結果の一例を示す図である。
【図１１】メモリ制御装置の動作を示すフローチャートである。
【図１２】判定部での判定結果の一例を示す図である。
【図１３】調整用データに含まれるパターンデータの一例を示す図である。
【図１４】調整用データに含まれるパターンデータの一例を示す図である。
【図１５】メモリ制御装置の動作を示すフローチャートである。
【図１６】メモリ制御装置の動作を示すフローチャートである。
【発明を実施するための形態】
【００２０】
図１は実施の形態に係る半導体装置１の構成を示す図である。図１に示されるように、半導体装置１は、メモリ２及び半導体集積回路３を備えている。メモリ２は、例えばＤＤＲ型のＳＤＲＡＭである。半導体集積回路３は、例えば、入力される画像データに対して圧縮処理等の各種画像処理を行う画像処理回路である。半導体集積回路３は、画像データ等をメモリ２に書き込んだり、メモリ２内の画像データ等を読み出したりする。半導体集積回路３は、メモリ２を制御するメモリ制御装置４を備えている。メモリ制御装置４は、メモリ２にデータを書き込み、メモリ２からデータを読み出す。メモリ制御装置４とメモリ２とは、様々な信号線によって互いに接続されており、当該信号線を使用して信号のやり取りを行う。なお、半導体集積回路３は画像処理回路以外であっても良い。
【００２１】
本実施の形態では、半導体集積回路３とメモリ２とは別々のパッケージに収められている。そして、半導体集積回路３及びメモリ２は、プリント基板１０上に搭載されており、当該プリント基板１０上に設けられた配線によって互いに接続されている。なお、半導体集積回路３とメモリ２とは一つのパッケージに収められても良い。
【００２２】
メモリ制御装置４は、クロック信号ＣＬＫに同期して動作する。またメモリ制御装置４は、メモリ２に対してクロック信号ＣＬＫを出力する。メモリ２はクロック信号ＣＬＫに同期して動作する。
【００２３】
メモリ制御装置４とメモリ２とは、データＤＱのやり取りを行うデータ線ＤＱＬによって互いに接続されている。データ線ＤＱＬは双方向の信号線である。メモリ制御装置４が出力するデータＤＱはデータ線ＤＱＬを通じてメモリ２に入力され、メモリ２が出力するデータＤＱはデータ線ＤＱＬを通じてメモリ制御装置４に入力される。データ線ＤＱＬにデータＤＱが出力されていない場合には、データ線ＤＱＬはハイインピーダンスとなる。
【００２４】
データ線ＤＱＬはＮ（≧２）ビットのデータバスである。データＤＱはＮビットデータである。したがって、メモリ制御装置４とメモリ２との間のデータのやり取りはＮビット単位で行われる。本実施の形態では、例えばＮ＝８である。なお、Ｎの値はこれに限られない。例えば、Ｎ＝４、Ｎ＝１６、Ｎ＝３２であっても良い。以後、メモリ２から読み出されるデータＤＱを「リードデータｒＤＱ」と呼び、メモリ２に書き込まれるデータＤＱを「ライトデータｗＤＱ」と呼ぶことがある。
【００２５】
メモリ制御装置４とメモリ２とは、データストローブ信号ＤＱＳのやり取りを行うデータストローブ線ＤＱＳＬによって互いに接続されている。データストローブ線ＤＱＳＬは双方向の信号線である。メモリ制御装置４が出力するデータストローブ信号ＤＱＳはデータストローブ線ＤＱＳＬを通じてメモリ２に入力され、メモリ２が出力するデータストローブ信号ＤＱＳはデータストローブ線ＤＱＳＬを通じてメモリ制御装置４に入力される。データストローブ線ＤＱＳＬにデータストローブ信号ＤＱＳが出力されていない場合には、データストローブ線ＤＱＳＬはハイインピーダンスとなる。
【００２６】
メモリ制御装置４は、データストローブ信号ＤＱＳ以外の複数種類の制御信号ＣＮＴをメモリ２に出力する。複数種類の制御信号ＣＮＴには、アドレス信号ＡＤＤＲ、ロウアドレスストローブ信号ＲＡＳ、カラムアドレスストローブ信号ＣＡＳ、チップセレクト信号ＣＳ、ライトイネーブル信号ＷＥ等が含まれている。メモリ制御装置４は、リードサイクル及びライトサイクルにおいて、データストローブ信号ＤＱＳ及びデータＤＱに先立って制御信号ＣＮＴを出力する。以後、制御信号ＣＮＴを「先行制御信号ＣＮＴ」と呼ぶことがある。
【００２７】
図２は、クロック信号ＣＬＫ、データＤＱ及びデータストローブ信号ＤＱＳの理想的な関係を示す図である。図２の上から１番目にはクロック信号ＣＬＫが示されている。図２の上から２番目にはデータストローブ信号ＤＱＳが示されている。図２の上から３番目にはリードデータｒＤＱが示されている。そして、図２の一番下にはライトデータｗＤＱが示されている。
【００２８】
データストローブ信号ＤＱＳは、クロック信号ＣＬＫに同期して、Ｈｉｇｈレベル及びＬｏｗレベルを交互に繰り返す信号である。つまり、データストローブ信号ＤＱＳは、クロック信号ＣＬＫに同期して、立ち上がりエッジ及び立ち上がりエッジを交互に繰り返す信号である。データストローブ信号ＤＱＳの周期はクロック信号ＣＬＫの周期と一致する。
【００２９】
リードサイクルでは、理想的には、メモリ２から出力されるデータストローブ信号ＤＱＳにエッジが現れるたびに、当該エッジのタイミングで、メモリ２からのリードデータｒＤＱの出力が開始する。１回のリードサイクルにおいては、データストローブ信号ＤＱＳに複数回エッジが現れることから、１回のリードサイクルでは、８ビットのリードデータｒＤＱがメモリ２から複数回出力される。つまり、１回のリードサイクルにおいて、リードデータｒＤＱがバースト的にメモリ２から出力される。
【００３０】
一方で、ライトサイクルでは、理想的には、メモリ制御装置４から出力されるデータストローブ信号ＤＱＳにエッジが現れるたびに、当該エッジのタイミングから１／４サイクル前に、メモリ制御装置４からのライトデータｗＤＱの出力が開始する。１回のライトサイクルにおいては、データストローブ信号ＤＱＳに複数回エッジが現れることから、１回のライトサイクルでは、８ビットのライトデータｗＤＱがメモリ制御装置４から複数回出力される。つまり、１回のライトサイクルにおいて、ライトデータｗＤＱがバースト的にメモリ制御装置４から出力される。
【００３１】
リードサイクルにおいて、メモリ制御装置４内でのデータストローブ信号ＤＱＳ及びリードデータｒＤＱの位相の関係が図２に示される関係であれば、メモリ制御装置４は、入力されたデータストローブ信号ＤＱＳの位相を９０°だけ遅らせるだけで、データストローブ信号ＤＱＳの各エッジのタイミングでリードデータｒＤＱを適切に取り込むことができる。しかしながら、メモリ制御装置４とメモリ２とを実際に接続すると、配線遅延、同時スイッチングノイズなどが原因で、メモリ制御装置４内では、データストローブ信号ＤＱＳ及びリードデータｒＤＱの位相の関係が図２のような理想的な関係にはならない可能性がある。したがって、メモリ制御装置４は、入力されたデータストローブ信号ＤＱＳの位相を９０°だけ遅延させるだけでは、リードデータｒＤＱを適切に取り込むことができない可能性がある。
【００３２】
また、ライトサイクルにおいて、メモリ２内でのデータストローブ信号ＤＱＳ及びライトデータｗＤＱの位相の関係が図２に示される関係であれば、メモリ２は、入力されたデータストローブ信号ＤＱＳの各エッジのタイミングでライトデータｗＤＱを取り込むことができる。しかしながら、メモリ制御装置４とメモリ２とを実際に接続すると、配線遅延、同時スイッチングノイズなどが原因で、メモリ２内では、データストローブ信号ＤＱＳ及びライトデータｗＤＱの位相の関係が図２のような理想的な関係にはならない可能性がある。したがって、メモリ２は、入力されたデータストローブ信号ＤＱＳの各エッジのタイミングでライトデータｗＤＱを取り込んだとしても、当該ライトデータｗＤＱを適切に取り込むことができない可能性がある。
【００３３】
また、市場に投入された実運用中の半導体装置１においては、温度変化、電源電圧の変化等によって、リードサイクルでのデータストローブ信号ＤＱＳ及びリードデータｒＤＱの位相の関係が変化することがある。したがって、その位相関係が調整されない場合には、あるタイミングにおいて、メモリ制御装置４が、入力されたデータストローブ信号ＤＱＳに基づいてリードデータｒＤＱを適切に取り込むことができたとしても、別のタイミングでは、入力されたデータストローブ信号ＤＱＳに基づいてリードデータｒＤＱを適切に取り込むことができない可能性がある。
【００３４】
同様に、実運用中の半導体装置１においては、温度変化、電源電圧の変化等によって、ライトサイクルでのデータストローブ信号ＤＱＳ及びライトデータｗＤＱの位相の関係が変化することがある。したがって、その位相関係が調整されない場合には、あるタイミングにおいて、メモリ２が、入力されたデータストローブ信号ＤＱＳに基づいてライトデータｗＤＱを適切に取り込むことができたとしても、別のタイミングでは、入力されたデータストローブ信号ＤＱＳに基づいてライトデータｗＤＱを適切に取り込むことができない可能性がある。
【００３５】
そこで、本実施の形態に係るメモリ制御装置４は、当該メモリ制御装置４においてリードデータｒＤＱを適切に取り込むことができ、メモリ２においてもライトデータｗＤＱを適切に取り込むことができるように、データストローブ信号ＤＱＳの位相を適切な値に設定できるように構成されている。
【００３６】
また、メモリ制御装置４が、リードサイクルあるいはライトサイクルにおいて、データストローブ信号ＤＱＳ及びデータＤＱに先立って出力する、アドレス信号ＡＤＤＲ等の先行制御信号ＣＮＴの位相については、メモリ制御装置４単体では適切な値になっていたとしても、メモリ制御装置４とメモリ２とを実際に接続すると、配線遅延、同時スイッチングノイズなどが原因で適切な値にならない可能性がある。また、実運用中の半導体装置１では、温度変化、電源電圧の変化等によって、先行制御信号ＣＮＴの位相が変化することがある。したがって、先行制御信号ＣＮＴの位相が調整されない場合には、メモリ制御装置４は、メモリ２から適切にデータを読み出すことができなかったり、メモリ２に対して適切にデータを書き込めなかったりする可能性がある。
【００３７】
そこで、本実施の形態に係るメモリ制御装置４は、メモリ２から適切にデータを読み出したり、メモリ２に対して適切にデータを書き込めたりできるように、先行制御信号ＣＮＴの位相も適切な値に設定できるように構成されている。以下にメモリ制御装置４について詳細に説明する。
【００３８】
＜メモリ制御装置の詳細について＞
本実施の形態では、メモリ制御装置４は、動作モードとして、位相調整モードを備えている。位相調整モードでは、データストローブ信号ＤＱＳ等の制御信号の位相が調整される。以後、メモリ制御装置４での、位相調整モード以外の動作モードを「通常モード」と呼ぶ。通常モードでは、位相調整モードで位相が適切に調整された各種制御信号が使用されて、メモリ２に対してライトアクセス及びリードアクセスが行われる。
【００３９】
図３はメモリ制御装置４の構成を示す図である。図３に示されるように、メモリ制御装置４は、主制御部４０と、調整部４１，４２，４３と、位相調整用制御部４４と、セレクタ４５と、データ取り込み部４６と、判定部４７とを備えている。メモリ制御装置４は、一種のコンピュータ装置である。
【００４０】
主制御部４０は、メモリ制御装置４全体の動作を管理する。また主制御部４０は、半導体集積回路３全体の動作も管理する。主制御部４０は、例えば、ＣＰＵ４００及び記憶部４０１等を備えている。記憶部４０１は、ＲＯＭ（Read Only Memory）及びＲＡＭ（Random Access Memory）等の、ＣＰＵ４００が読み取り可能な非一時的な記録媒体で構成されている。記憶部４０１内には、メモリ制御装置４あるいは半導体集積回路３を制御するための様々な制御プログラムが記憶されている。例えば、記憶部４０１には、メモリ制御装置４を制御するための制御プログラムの一種である位相調整用プログラム４０２が記憶されている。位相調整用プログラム４０２は、データストローブ信号ＤＱＳ等の制御信号の位相を調整するための制御プログラムである。ＣＰＵ４００が記憶部４０１内の位相調整用プログラム４０２を実行することによって、メモリ制御装置４の動作モードは位相調整モードとなる。
【００４１】
主制御部４０は、メモリ２に供給するクロック信号ＣＬＫ及び複数種類の先行制御信号ＣＮＴを生成して出力する。また主制御部４０は、メモリ制御装置４が通常モードで動作する際にメモリ２に書き込むライトデータｗＤＱを生成して出力する。以後、当該ライトデータｗＤＱを「通常ライトデータｗＤＱｎ」と呼ぶことがある。
【００４２】
さらに主制御部４０は、ライトサイクルにおいて、データストローブ信号ＤＱＳを生成して出力する。以後、当該データストローブ信号ＤＱＳを「ライト側データストローブ信号ｗＤＱＳ」と呼ぶことがある。
【００４３】
調整部４１は、主制御部４０が出力する複数種類の先行制御信号ＣＮＴの位相を調整する。調整部４１で位相が調整された複数種類の先行制御信号ＣＮＴはメモリ２に入力される。本実施の形態では、複数種類の先行制御信号ＣＮＴの位相はまとめて調整されるが、複数種類の先行制御信号ＣＮＴのそれぞれの位相は個別に調整されても良い。
【００４４】
調整部４２は、主制御部４０が出力するライト側データストローブ信号ｗＤＱＳの位相を調整する。調整部４２で位相が調整されたライト側データストローブ信号ｗＤＱＳはメモリ２に入力される。
【００４５】
調整部４３は、リードサイクルにおいて、メモリ２が出力するデータストローブ信号ＤＱＳの位相を調整する。以後、当該データストローブ信号ＤＱＳを「リード側データストローブ信号ｒＤＱＳ」と呼ぶことがある。調整部４３で位相が調整されたリード側データストローブ信号ｒＤＱＳはデータ取り込み部４６に入力される。
【００４６】
位相調整用制御部４４は、主制御部４０によって制御される。位相調整用制御部４４は、調整部４１，４２，４３のそれぞれを個別に制御する。また位相調整用制御部４４は、メモリ制御装置４が位相調整モードで動作する際に、データストローブ信号ＤＱＳ等の制御信号に対する位相調整用のライトデータｗＤＱを出力する。以後、当該ライトデータｗＤＱを「調整用データｗＤＱｔ」と呼ぶことがある。
【００４７】
調整部４１，４２のそれぞれは、入力される制御信号の位相を遅延させる複数の遅延バッファを有している。調整部４１，４２のそれぞれは、遅延バッファのカスケード接続段数を変化させることによって、入力される制御信号の位相を遅延させる。つまり、調整部４１，４２のそれぞれは、入力される制御信号の位相についての、入力時の位相に対する遅延量を設定することによって、当該制御信号の位相を設定する。
【００４８】
調整部４３は、例えば、入力される制御信号（リード側データストローブ信号ｒＤＱＳ）を遅延させるＤＬＬ（Digital Locked Loop）回路を有している。調整部４３は、当該ＤＬＬ回路を使用して、入力される制御信号の位相についての、入力時の位相に対する相対的な遅延量を設定することによって、当該制御信号の位相を設定する。
【００４９】
以後、制御信号の位相の遅延量と言えば、制御信号の位相についての、入力時の位相に対する遅延量を意味する。
【００５０】
セレクタ４５は、２つの入力端子４５０，４５１を有している。一方の入力端子４５０には、通常ライトデータｗＤＱｎが入力され、他方の入力端子４５１には、調整用データｗＤＱｔが入力される。セレクタ４５は、位相調整用制御部４４による制御によって、２つの入力端子４５０，４５１のどちらか一方を選択し、選択した入力端子に入力される信号を出力する。セレクタ４５は、メモリ制御装置４が通常モードで動作するときには入力端子４５０を選択し、メモリ制御装置４が位相調整モードで動作するときには入力端子４５１を選択する。したがって、メモリ制御装置４が通常モードで動作するときには、セレクタ４５からは通常ライトデータｗＤＱｎが出力され、メモリ制御装置４が位相調整モードで動作するときには、セレクタ４５からは調整用データｗＤＱｔが出力される。セレクタ４５から出力されるライトデータｗＤＱはメモリ２に入力される。
【００５１】
データ取り込み部４６は、調整部４３で位相調整されたリード側データストローブ信号ｒＤＱＳに基づいて、メモリ２から出力されるリードデータｒＤＱを取り込む。具体的には、データ取り込み部４６は、例えばフリップフロップ回路を有しており、リード側データストローブ信号ｒＤＱＳの立ち上がりエッジ及び立下りエッジのそれぞれのタイミングにおいて、メモリ２からのリードデータｒＤＱを当該フリップフロップ回路によって保持する。
【００５２】
判定部４７は、データ取り込み部４６で取り込まれたリードデータｒＤＱが適切であるか否かを判定する。そして、判定部４７は、その判定結果を主制御部４０に出力する。主制御部４０は、判定部４７から通知される判定結果を記憶部４０１に記憶する。
【００５３】
なお、判定部４７での判定結果は、本実施の形態に係る半導体装置１の外部に出力されても良い。この場合には、判定部４７での判定結果が、半導体装置１の外部の表示装置に表示されても良い。
【００５４】
＜通常モードについて＞
次に通常モードのメモリ制御装置４の動作について説明する。通常モードのメモリ制御装置４では、位相調整用制御部４４は、主制御部４０による制御によって、入力端子４５０を選択するようにセレクタ４５を制御する。これにより、通常モードのメモリ制御装置４からは通常ライトデータｗＤＱｎがメモリ２に出力される。
【００５５】
また、通常モードのメモリ制御装置４では、調整部４１，４２，４３のそれぞれは、位相調整用制御部４４によって制御されない。これにより、通常モードのメモリ制御装置４では、調整部４１，４２，４３のそれぞれが設定する制御信号の位相は一定である。
【００５６】
通常モードのメモリ制御装置４では、リードサイクルにおいて、主制御部４０が、メモリ２からデータを読み出すために必要な先行制御信号ＣＮＴを出力する。この先行制御信号ＣＮＴは調整部４１を通じてメモリ２に出力される。リードサイクルでは、メモリ２は、メモリ制御装置４からのアドレス信号ＡＤＤＲ等の先行制御信号ＣＮＴで指定される記憶領域からリードデータｒＤＱを読み出してメモリ制御装置４に出力するとともに、リード側データストローブ信号ｒＤＱＳをメモリ制御装置４に出力する。通常モードのメモリ制御装置４では、メモリ２からのリード側データストローブ信号ｒＤＱＳが調整部４３を通じてデータ取り込み部４６に入力され、メモリ２からのリードデータｒＤＱもデータ取り込み部４６に入力される。データ取り込み部４６は、入力されるリードデータｒＤＱを、調整部４３が出力するリード側データストローブ信号ｒＤＱＳに基づいて取り込む。そして、データ取り込み部４６は、取り込んだリードデータｒＤＱを主制御部４０に出力する。これにより、主制御部４０は、メモリ２から読み出されたリードデータｒＤＱを取得することができる。
【００５７】
また、通常モードのメモリ制御装置４では、ライトサイクルにおいて、主制御部４０が、メモリ２にデータを書き込むために必要な先行制御信号ＣＮＴを出力する。この先行制御信号ＣＮＴは調整部４１を通じてメモリ２に出力される。ライトサイクルでは、その後、主制御部４０が通常ライトデータｗＤＱｎとライト側データストローブ信号ｗＤＱＳを出力する。通常ライトデータｗＤＱｎはセレクタ４５を通じてメモリ２に出力され、ライト側データストローブ信号ｗＤＱＳは調整部４２を通じてメモリ２に出力される。メモリ２は、メモリ制御装置４からの通常ライトデータｗＤＱｎを、メモリ制御装置４からのライト側データストローブ信号ｗＤＱＳに基づいて取り込む。そして、メモリ２は、取り込んだ通常ライトデータｗＤＱｎを、メモリ制御装置４からのアドレス信号ＡＤＤＲ等の先行制御信号ＣＮＴによって指定される記憶領域に記憶する。
【００５８】
＜位置調整モードについて＞
次に位置調整モードのメモリ制御装置４の動作について説明する。図４は位置調整モードのメモリ制御装置４が行う位置調整処理を示すフローチャートである。ＣＰＵ４００が記憶部４０１内の位相調整用プログラム４０２を実行することによって、図４に示される位相調整処理がメモリ制御装置４で行われる。図４に示される位相調整処理は、例えば、実運用中の半導体装置１の電源が投入された直後に実行される。また、図４に示される位相調整処理は、実運用中の半導体装置１において、定期的にあるいは不定期的に繰り返して実行される。
【００５９】
図４に示されるように、位相調整処理では、まずステップｓ１において、リード側データストローブ信号ｒＤＱＳに対する位相調整が行われる。その後、ステップｓ２において、ライト側データストローブ信号ｗＤＱＳに対する位相調整が行われる。最後にステップｓ３において、アドレス信号ＡＤＤＲ等の先行制御信号ＣＮＴに対する位相調整が行われる。
【００６０】
ここで、先行制御信号ＣＮＴの位相のずれの許容範囲は比較的広いことから、先行制御信号ＣＮＴの位相のずれに基づく不具合（メモリ２からのデータの読み出しミス、メモリ２に対するデータの書き込みミス）が発生する可能性は比較的低い。
【００６１】
また、ライトデータｗＤＱ及びライト側データストローブ信号ｗＤＱＳは、クロック信号ＣＬＫと同様にメモリ制御装置４で生成される信号である。したがって、メモリ２においては、クロック信号ＣＬＫの位相とライトデータｗＤＱの位相とライト側データストローブ信号ｗＤＱＳの位相との関係が図２のような理想的な関係から大きくずれる可能性は比較的低い。そのため、クロック信号ＣＬＫに基づいて動作するメモリ２が、図２のような理想的な関係に基づいてライトデータｗＤＱをライト側データストローブ信号ｗＤＱＳのエッジのタイミングで取り込んだとしても、ライトデータｗＤＱを適切に取り込むことができる可能性が比較的高い。
【００６２】
一方で、メモリ２は、メモリ制御装置４からのクロック信号ＣＬＫに基づいてリード側データストローブ信号ｒＤＱＳを生成する。このとき、メモリ２では、ＤＬＬ回路等の遅延回路が使用され、この遅延回路によって、リード側データストローブ信号ｒＤＱＳにジッタが発生することがある。このため、メモリ制御装置４においては、リード側データストローブ信号ｒＤＱＳの位相とリードデータｒＤＱの位相との関係が上述の図２のような理想的な関係から大きくずれる可能性が比較的高い。そのため、メモリ制御装置４が、図２のような理想的な関係を考慮して、リード側データストローブ信号ｒＤＱＳの位相を遅延させると、リード側データストローブ信号ｒＤＱＳに基づいてリードデータｒＤＱを適切に取り込むことができない可能性が比較的高い。
【００６３】
このように、先行制御信号ＣＮＴの位相のずれに基づく不具合が発生する可能性、及びメモリ２がライト側データストローブ信号ｗＤＱＳに基づいて適切にライトデータｗＤＱを取り込むことができない可能性は比較的低く、メモリ制御装置４がリード側データストローブ信号ｒＤＱＳに基づいて適切にリードデータｒＤＱを取り込むことができない可能性は比較的高い。
【００６４】
そこで、本実施の形態では、メモリ制御装置４は、まずステップｓ１において、リード側データストローブ信号ｒＤＱＳの位相を適切な値に調整する。そして、リード側データストローブ信号ｒＤＱＳの位相が適切な値に調整された後、メモリ制御装置４は、ステップｓ２において、ライト側データストローブ信号ｗＤＱＳの位相を適切な値に調整する。そして、リード側データストローブ信号ｒＤＱＳ及びライト側データストローブ信号ｗＤＱＳの位相が適切な値に調整された後、メモリ制御装置４は、ステップｓ３において、先行制御信号ＣＮＴの位相を適切な値に調整する。なお、ステップｓ１〜ｓ３の実行順序はこれに限られない。以下に、ステップｓ１〜ｓ３での処理について詳細に説明する。
【００６５】
＜リード側データストローブ信号に対する位相調整の詳細＞
本実施の形態では、ステップｓ１において、メモリ制御装置４は、メモリ２に対して書き込んだ調整用データｗＤＱｔを当該メモリ２から読み出し、読み出した調整用データｗＤＱｔをリード側データストローブ信号ｒＤＱＳに基づいて取り込む。そして、メモリ制御装置４は、取り込んだ調整用データｗＤＱｔが適切でるか否かを判定し、その判定結果に基づいて、リード側データストローブ信号ｒＤＱＳの位相を調整する。本実施の形態では、主制御部４０、位相調整用制御部４４、調整部４３及び判定部４７によって、取り込まれた調整用データｗＤＱｔが適切であるか否かを判定し、その判定結果に基づいてリード側データストローブ信号ｒＤＱＳの位相を調整する第１位相調整部１００（図３において破線で囲まれた部分）が構成される。
【００６６】
また本実施の形態では、調整用データｗＤＱｔとして、複数種類のパターンデータが規定されている。図５は当該複数種類のパターンデータの一例を示す図である。図５に示されるように、本実施の形態では、調整用データｗＤＱｔとして、９種類のパターンデータが規定されている。具体的には、調整用データｗＤＱｔとして、１ビット目変化パターンデータ、２ビット目変化パターンデータ、３ビット目変化パターンデータ、４ビット目変化パターンデータ、５ビット目変化パターンデータ、６ビット目変化パターンデータ、７ビット目変化パターンデータ、８ビット目変化パターンデータ、全ビット変化パターンデータが規定されている。
【００６７】
各パターンデータは、８ビット（Ｎビット）から成る第１単位データと、８ビットから成る第２単位データとが交互に現れるパターンデータである。本実施の形態に係る各パターンデータでは、第１及び第２単位データのそれぞれが例えば４回現れる。メモリ制御装置４とメモリ２との間のデータバスのビット数は８ビットであることから、メモリ制御装置４は、パターンデータをメモリ２に書き込む際には、８ビットのライトデータｗＤＱとして、第１単位データ及び第２単位データを交互に出力する。またメモリ制御装置４がパターンデータをメモリ２から読み出す際には、メモリ２は、８ビットのリードデータｒＤＱとして、第１単位データ及び第２単位データを交互に出力する。
【００６８】
１ビット目変化パターンデータでは、第１単位データは“０ｘ００”（１６進数表記の“００”）であり、第２単位データは“０ｘ０１”である。したがって、１ビット目変化パターンデータの第１及び第２単位データの間では、下位から１ビット目だけ相違する。
【００６９】
２ビット目変化パターンデータでは、第１単位データは“０ｘ００”であり、第２単位データは“０ｘ０２”である。したがって、２ビット目変化パターンデータの第１及び第２単位データの間では、下位から２ビット目だけ相違する。
【００７０】
３ビット目変化パターンデータでは、第１単位データは“０ｘ００”であり、第２単位データは“０ｘ０４”である。したがって、３ビット目変化パターンデータの第１及び第２単位データの間では、下位から３ビット目だけ相違する。
【００７１】
４ビット目変化パターンデータでは、第１単位データは“０ｘ００”であり、第２単位データは“０ｘ０８”である。したがって、４ビット目変化パターンデータの第１及び第２単位データの間では、下位から４ビット目だけ相違する。
【００７２】
５ビット目変化パターンデータでは、第１単位データは“０ｘ００”であり、第２単位データは“０ｘ１０”である。したがって、５ビット目変化パターンデータの第１及び第２単位データの間では、下位から５ビット目だけ相違する。
【００７３】
６ビット目変化パターンデータでは、第１単位データは“０ｘ００”であり、第２単位データは“０ｘ２０”である。したがって、６ビット目変化パターンデータの第１及び第２単位データの間では、下位から６ビット目だけ相違する。
【００７４】
７ビット目変化パターンデータでは、第１単位データは“０ｘ００”であり、第２単位データは“０ｘ４０”である。したがって、７ビット目変化パターンデータの第１及び第２単位データの間では、下位から７ビット目だけ相違する。
【００７５】
８ビット目変化パターンデータでは、第１単位データは“０ｘ００”であり、第２単位データは“０ｘ８０”である。したがって、８ビット目変化パターンデータの第１及び第２単位データの間では、下位から８ビット目だけ相違する。
【００７６】
全ビット変化パターンデータでは、第１単位データは“０ｘ００”であり、第２単位データは“０ｘｆｆ”である。したがって、全ビット変化パターンデータの第１及び第２単位データの間では、８ビットすべてが相違する。
【００７７】
本実施の形態では、９種類のパターンデータのすべてが使用されてリード側データストローブ信号ｒＤＱＳの位相の調整が行われる。以後、１ビット目変化パターンデータ、２ビット目変化パターンデータ、３ビット目変化パターンデータ、４ビット目変化パターンデータ、５ビット目変化パターンデータ、６ビット目変化パターンデータ、７ビット目変化パターンデータ及び８ビット目変化パターンデータを特に区別する必要が無い場合には、それぞれを「１ビット変化パターンデータ」と呼ぶ。
【００７８】
また本実施の形態では、リード側データストローブ信号ｒＤＱＳの位相の設定値について、複数種類の設定値が用意されている。例えば、３２種類の設定値が用意されている。調整部４３は、３２種類の設定値のうちのいずれか一つを、リード側データストローブ信号ｒＤＱＳの位相に設定する。
【００７９】
図６はリード側データストローブ信号ｒＤＱＳの位相についての複数種類の設定値の一例を示す図である。本実施の形態では、リード側データストローブ信号ｒＤＱＳの位相の設定値は、リード側データストローブ信号ｒＤＱＳの位相の遅延量を示している。図６に示されるように、本実施の形態では、“０”〜“３１”までの３２種類の設定値が規定されている。設定値“ｘ”（０≦ｘ≦３１）は、リード側データストローブ信号ｒＤＱＳの位相の遅延量が（１１．２５×ｘ）°であることを示している。調整部４３は、リード側データストローブ信号ｒＤＱＳの位相の遅延量を１１．２５°間隔で設定することが可能である。以後、リード側データストローブ信号ｒＤＱＳの位相の設定値を「ｒＤＱＳ用設定値」と呼ぶことがある。リード側データストローブ信号ｒＤＱＳの位相の初期値としては、図２に示される、リード側データストローブ信号ｒＤＱＳ及びリードデータｒＤＱの位相の理想的な関係に基づいて、例えば、ｒＤＱＳ用設定値“８”（遅延量９０°）が採用される。
【００８０】
図７はステップｓ１での処理を詳細に示すフローチャートである。図７に示されるように、ステップｓ１１において、主制御部４０は、調整用データｗＤＱｔの９種類のパターンデータのいずれか一つを、処理対象のパターンデータとして決定し、決定したパターンデータを位相調整用制御部４４に通知する。
【００８１】
次にステップｓ１２において、第１位相調整部１００は、リード側データストローブ信号ｒＤＱＳの位相を決定する。具体的には、主制御部４０が、ｒＤＱＳ用設定値“０”〜“３１”のうちの一つを選択し、選択したｒＤＱＳ用設定値を位相調整用制御部４４を通じて調整部４３に通知する。調整部４３は、リード側データストローブ信号ｒＤＱＳが入力されると、その位相を、通知されたｒＤＱＳ用設定値に設定する。つまり、調整部４３は、リード側データストローブ信号ｒＤＱＳの位相の遅延量を、主制御部４０から位相調整用制御部４４を介して通知された値に設定する。
【００８２】
次にステップｓ１３において、メモリ制御装置４は、ステップｓ１１で決定された処理対象のパターンデータをメモリ２に書き込む。このとき、調整部４１，４２のそれぞれでは、入力される制御信号の位相の遅延量が初期値に設定される。ステップｓ１３では、主制御部４０が、メモリ２にデータを書き込む際に必要な先行制御信号ＣＮＴと、ライト側データストローブ信号ｗＤＱＳを出力する。また位相調整用制御部４４が、ステップｓ１１で決定された処理対象のパターンデータを生成して出力する。位相調整モードのメモリ制御装置４では、セレクタ４５は入力端子４５１を選択していることから、位相調整用制御部４４が出力するパターンデータはメモリ２に入力される。
【００８３】
次にステップｓ１４において、メモリ制御装置４は、ステップｓ１３でメモリ２に書き込まれたパターンデータをメモリ２から読み出す。ステップｓ１４では、主制御部４０が、メモリ２からデータを読み出す際に必要な先行制御信号ＣＮＴを出力する。メモリ２から読み出されたパターンデータはデータ取り込み部４６に入力され、メモリ２が出力するリード側データストローブ信号ｒＤＱＳは調整部４３に入力される。調整部４３は、入力されるリード側データストローブ信号ｒＤＱＳの位相を、ステップｓ１２で通知されたｒＤＱＳ用設定値に設定して、当該リード側データストローブ信号ｒＤＱＳをデータ取り込み部４６に出力する。
【００８４】
次にステップｓ１５において、データ取り込み部４６は、ステップｓ１４で読み出されたパターンデータを、調整部４３から出力されるリード側データストローブ信号ｒＤＱＳの各エッジのタイミングで取り込む。そして、データ取り込み部４６は、取り込んだパターンデータを判定部４７に出力する。
【００８５】
次にステップｓ１６において、判定部４７は、ステップｓ１５で取り込まれたパターンデータが適切か否かを判定する。つまり、判定部４７は、取り込まれたパターンデータがステップｓ１３でメモリ２に書き込まれた処理対象のパターンデータと一致するか否かを判定する。
【００８６】
本実施の形態では、判定部４７は、例えば、取り込まれたパターンデータに対するパリティチェックを行うことによって、当該パターンデータが適切であるか否かを判定する。上述の図５に示されるように、各パターンデータでは、４ｂｙｔｅ単位（第１単位データとそれに続く第２単位データの組が２組）で見ると、“１”を示すビットの数が偶数となる。判定部４７は、取り込まれたパターンデータのパリティチェックを行う際には、当該パターンデータを４ｂｙｔｅごとに区切って、複数の区分データを生成する。そして、判定部４７は、取り込まれたパターンデータを構成する複数の区分データのそれぞれについて、当該区分データに含まれる、“１”を示すビットの数が偶数であるか否かを判定する。
【００８７】
ここで、区分データに含まれる、“１”を示すビットの数が偶数である場合には、当該区分データのパリティが“０”であるとし、区分データに含まれる、“１”を示すビットの数が奇数である場合には、当該区分データのパリティが“１”であるとする。判定部４７は、取り込まれたパターンデータを構成する複数の区分データのそれぞれについてのパリティが“０”である場合には、当該パターンデータが適切であると判定する。つまり、判定部４７は、取り込まれたパターンデータが、ステップｓ１３でメモリ２に書き込まれたパターンデータと一致すると判定する。一方で、判定部４７は、取り込まれたパターンデータを構成する複数の区分データに、パリティが“１”である区分データが含まれる場合には、当該パターンデータが適切ではないと判定する。つまり、判定部４７は、取り込まれたパターンデータが、ステップｓ１３でメモリ２に書き込まれたパターンデータと一致しないと判定する。判定部４７は、取り込まれたパターンデータが適切であるか否かの判定結果を主制御部４０に通知する。主制御部４０は、ステップｓ１７において、判定部４７から通知された判定結果を記憶部４０１に記憶する。このとき、主制御部４０は、判定結果と、ステップｓ１１で決定された処理対象のパターンデータを特定する情報と、ステップｓ１２で決定されたｒＤＱＳ用設定値を特定する情報とを互いに対応付けて記憶部４０１に記憶する。
【００８８】
次にステップｓ１８において、主制御部４０は、リード側データストローブ信号ｒＤＱＳの位相を所定範囲変化させたか否かを判定する。具体的には、主制御部４０は、３２種類のｒＤＱＳ用設定値のすべてを、リード側データストローブ信号ｒＤＱＳの位相に設定したか否かを判定する。ステップｓ１８においてＮｏと判定されると、再度ステップｓ１２が実行される。ここでのステップｓ１２では、３２種類のｒＤＱＳ用設定値のうち、リード側データストローブ信号ｒＤＱＳの位相として未だ採用されていないｒＤＱＳ用設定値が選択される。その後、ステップｓ１３が実行されて、処理対象のパターンデータがメモリ２に書き込まれる。以後、ステップｓ１４〜ｓ１７が同様に実行される。
【００８９】
一方で、ステップｓ１８においてＹｅｓと判定されると、つまり、判定部４７において、リード側データストローブ信号ｒＤＱＳの位相についての３２種類のｒＤＱＳ用設定値にそれぞれに対応する３２個の判定結果が得られると、主制御部４０は、ステップｓ１９において、９種類のパターンデータのすべてを処理対象としたかを判定する。ステップｓ１９においてＮｏと判定されると、ステップｓ１１が再度実行される。ここでのステップｓ１１では、９種類のパターンデータにおいて処理対象とされてないパターンデータが新たな処理対象とされる。その後、ステップｓ１２以降が同様に実行される。
【００９０】
なお、ステップｓ１１において処理対象のパターンデータが新たに決定された場合には、主制御部４０は、リード側データストローブ信号ｒＤＱＳの位相に、３２種類のｒＤＱＳ用設定値のそれぞれをあらためて設定する。したがって、ステップｓ１１において処理対象のパターンデータが新たに決定された後、ステップｓ１８においてＹｅｓと判定されると、主制御部４０は、３２種類のｒＤＱＳ用設定値にそれぞれに対応する、当該処理対象のパターンデータに応じた３２個の判定結果を記憶している。
【００９１】
ステップｓ１９においてＹｅｓと判定されると、つまり、９種類のパターンデータのそれぞれに関して、３２種類のｒＤＱＳ用設定値にそれぞれ対応する３２個の判定結果が主制御部４０に記憶されると、ステップｓ２０において、主制御部４０は、これらの判定結果に基づいて、リード側データストローブ信号ｒＤＱＳの位相の適切な値を決定する。
【００９２】
図８は、ステップｓ１９においてＹｅｓと判定された後に主制御部４０に記憶されている判定結果の一例を示す図である。図中の丸印は、取り込まれたパターンデータが適切であることを示し、図中の×印は、取り込まれたパターンデータが適切でないことを示している。後述の図１０，１２においても同様である。
【００９３】
ステップｓ２０において、主制御部４０は、９種類のパターンデータのそれぞれについて、当該パターンデータに応じた３２個の判定結果に基づいて、データ取り込み部４６で取り込まれる当該パターンデータが適切となる、リード側データストローブ信号ｒＤＱＳの位相範囲を特定する。言い換えれば、主制御部４０は、９種類のパターンデータのそれぞれについて、当該パターンデータに応じた３２個の判定結果に基づいて、データ取り込み部４６で取り込まれる当該パターンデータが適切となる、リード側データストローブ信号ｒＤＱＳの位相の遅延量の範囲を特定する。
【００９４】
図８の例では、データ取り込み部４６で取り込まれる１ビット目変化パターンデータが適切となる、リード側データストローブ信号ｒＤＱＳの位相範囲は、ｒＤＱＳ用設定値“７”〜“１２”の範囲である。また、データ取り込み部４６で取り込まれる２ビット目変化パターンデータが適切となる、リード側データストローブ信号ｒＤＱＳの位相範囲は、ｒＤＱＳ用設定値“７”〜“１２”の範囲である。また、データ取り込み部４６で取り込まれる３ビット目変化パターンデータが適切となる、リード側データストローブ信号ｒＤＱＳの位相範囲は、ｒＤＱＳ用設定値“７”〜“１３”の範囲である。
【００９５】
主制御部４０は、９種類のパターンデータのそれぞれについて、データ取り込み部４６で取り込まれる当該パターンデータが適切となる、リード側データストローブ信号ｒＤＱＳの位相範囲を特定すると、特定した複数の位相範囲が重複する重複範囲１１０からリード側データストローブ信号ｒＤＱＳの位相の適切な値を決定する。主制御部４０は、例えば、当該重複範囲１１０の中央の値を、リード側データストローブ信号ｒＤＱＳの位相の適切な値とする。図８の例では、重複範囲１１０はｒＤＱＳ用設定値“８”〜“１２”の範囲である。そして、リード側データストローブ信号ｒＤＱＳの位相の適切な値はｒＤＱＳ用設定値“１０”となる。
【００９６】
以上の説明から理解できるように、本実施の形態では、メモリ制御装置４は、処理対象のパターンデータをメモリ２に書き込んだ後、処理対象のパターンデータをメモリ２から読み出す処理を複数回実行する（ステップｓ１３，ｓ１４）。第１位相調整部１００は、メモリ制御装置４で当該処理が実行されるたびに、リード側データストローブ信号ｒＤＱＳの位相を変化させる（ステップｓ１２）。そして、第１位相調整部１００は、メモリ制御装置４が当該処理を実行するたびにデータ取り込み部４６によって取り込まれた処理対象のパターンデータがそれぞれ適切であるか否かを判定し（ステップｓ１５，ｓ１６）、その判定結果に基づいて、当該処理対象のパターンが適切となるリード側データストローブ信号ｒＤＱＳの位相範囲を特定する（ステップｓ２０）。メモリ制御装置４は、これらの処理を９種類のパターンデータのそれぞれについて行う。そして、第１位相調整部１００は、特定された複数の位相範囲が重複する重複範囲１１０から、リード側データストローブ信号ｒＤＱＳの位相の適切な値を決定する。
【００９７】
主制御部４０は、リード側データストローブ信号ｒＤＱＳの位相の適切な値を決定すると、その適切な値を位相調整用制御部４４を通じて調整部４３に通知する。これにより、ステップｓ１での、リード側データストローブ信号ｒＤＱＳに対する位相調整が完了する。通常モードのメモリ制御装置４では、リードアクセスにおいて、調整部４３は、入力されるリード側データストローブ信号ｒＤＱＳの位相を、ステップｓ１で決定された適切な値に設定する。図８の例では、調整部４３は、リード側データストローブ信号ｒＤＱＳの位相をｒＤＱＳ用設定値“１０”に設定する。
【００９８】
なお、調整用データｗＤＱｔはパターンデータでなくても良い。また上記の例では、調整用データｗＤＱｔとして、複数種類のパターンデータが使用されているが、メモリ制御装置４は、１種類のパターンデータのみを用いて、リード側データストローブ信号ｒＤＱＳに対する位相調整を行っても良い。この場合には、主制御部４０には、１種類のパターンデータ応じた３２個の判定結果が記憶される。第１位相調整部１００は、当該３２個の判定結果に基づいて、データ取り込み部４６で取り込まれるパターンデータが適切となる、リード側データストローブ信号ｒＤＱＳの位相範囲を特定し、その位相範囲から適切な値を決定する。例えば、第１位相調整部１００は、当該位相範囲の中央の値を適切な値とする。
【００９９】
また上記の例では、第１位相調整部１００は、データ取り込み部４６によって取り込まれたパターンデータに対してパリティチェックを行うことによって、当該パターンデータが適切か否かを判定しているが、これ以外の方法で、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔが適切か否かを判定しても良い。例えば、第１位相調整部１００は、ステップｓ１５においてデータ取り込み部４６によって取り込まれたパターンデータの全ビットと、ステップｓ１３においてメモリ２に書き込まれたパターンデータの全ビットとを直接比較し、両パターンデータが一致するか否かによって、データ取り込み部４６によって取り込まれたパターンデータが適切であるか否かを判定しても良い。
【０１００】
以上のように、本実施の形態では、主制御部４０、位相調整用制御部４４、調整部４３及び判定部４７によって構成される第１位相調整部１００は、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔが適切であるか否かを判定し、その判定結果に基づいてリード側データストローブ信号ｒＤＱＳの位相を調整する。そのため、第１位相調整部１００は、データ取り込み部４６によって取り込まれる、メモリ２からのリードデータｒＤＱが適切となるように、リード側データストローブ信号ｒＤＱＳの位相を適切な値に設定することができる。
【０１０１】
また、本実施の形態では、第１位相調整部１００は、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔに対してパリティチェックを行うことによって、当該調整用データｗＤＱｔが適切か否かを判定する。したがって、メモリ２に書き込んだ調整用データｗＤＱｔの全ビットと、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔの全ビットとを直接比較して、当該調整用データｗＤＱｔが適切か否かを判定する場合と比べて処理が簡素化される。
【０１０２】
また、本実施の形態では、調整用データｗＤＱｔとして、複数種類のパターンデータが使用されている。そして、第１位相調整部１００は、データ取り込み部４６によって取り込まれた当該複数種類のパターンデータのそれぞれが適切か否かを判定し、その判定結果に基づいてリード側データストローブ信号ｒＤＱＳに対して位相調整を行う。したがって、メモリ２から読み出されるリードデータｒＤＱのパターンにかかわらず、データ取り込み部４６によって取り込まれたリードデータｒＤＱが適切となるように、リード側データストローブ信号ｒＤＱＳの位相を適切な値に設定することができる。
【０１０３】
また、本実施の形態では、データ取り込み部４６で取り込まれる調整用データｗＤＱｔが適切となるリード側データストローブ信号ｒＤＱＳの位相範囲が特定され、当該位相範囲からリード側データストローブ信号ｒＤＱＳの位相の適切な値が決定される。したがって、実運用中の半導体装置１が動作している間に、温度変化、電源電圧の変化等によって、リード側データストローブ信号ｒＤＱＳ及びリードデータｒＤＱの位相の関係が多少変化する場合であっても、データ取り込み部４６で取り込まれるリードデータｒＤＱが適切とならないことを抑制することができる。
【０１０４】
また、本実施の形態では、調整用データｗＤＱｔについての複数種類のパターンデータのそれぞれについて、データ取り込み部４６で取り込まれた当該パターンデータが適切となるリード側データストローブ信号ｒＤＱＳの位相範囲が特定され、特定された複数の位相範囲が重複する重複範囲からリード側データストローブ信号ｒＤＱＳの位相の適切な値が決定される。したがって、実運用中の半導体装置１が動作している間に、リード側データストローブ信号ｒＤＱＳ及びリードデータｒＤＱの位相の関係が多少変化する場合であっても、メモリ２から読み出されるリードデータｒＤＱのパターンにかかわらず、データ取り込み部４６で取り込まれるリードデータｒＤＱが適切とならないことを抑制することができる。
【０１０５】
また、本実施の形態では、調整用データｗＤＱｔとして、第１及び第２単位データの間では１ビットだけ相違する１ビット変化パターンデータと、第１及び第２単位データの間では８ビットすべて相違する全ビット変化パターンデータとが使用されている。メモリ２から１ビット変化パターンデータが読み出される際には、同時スイッチングノイズの影響は少なく、メモリ２から全ビット変化パターンデータが読み出される際には、同時スイッチングノイズの影響は大きい。
【０１０６】
同時スイッチングノイズの影響が大きい状況だけが考慮されて、リード側データストローブ信号ｒＤＱＳの位相が調整される場合には、同時スイッチングノイズの影響が小さい状況において、データ取り込み部４６で取り込まれるリードデータｒＤＱが適切とならない可能性がある。本実施の形態では、１ビット変化パターンデータと全ビット変化パターンデータの両方が使用されてリード側データストローブ信号ｒＤＱＳの位相が調整されるため、同時スイッチングノイズの影響が小さい状況と、同時スイッチングノイズの影響が大きい状況との両方が考慮され、リード側データストローブ信号ｒＤＱＳの位相が調整される。したがって、同時スイッチングノイズの影響の大きさにかかわらず、データ取り込み部４６で取り込まれるリードデータｒＤＱが適切とならないことを抑制することができる。
【０１０７】
＜ライト側データストローブ信号に対する位相調整の詳細＞
ライト側データストローブ信号ｗＤＱＳに対する位相調整は、リード側データストローブ信号ｒＤＱＳに対する位相調整と同様に行われる。ステップｓ２において、メモリ制御装置４は、メモリ２に対して書き込んだ調整用データｗＤＱｔを当該メモリ２から読み出し、読み出した調整用データｗＤＱｔをリード側データストローブ信号ｒＤＱＳに基づいて取り込む。そして、メモリ制御装置４は、取り込んだ調整用データｗＤＱｔが適切であるか否かを判定し、その判定結果に基づいて、ライト側データストローブ信号ｗＤＱＳの位相を調整する。本実施の形態では、主制御部４０、位相調整用制御部４４、調整部４２及び判定部４７によって、取り込まれた調整用データｗＤＱｔが適切であるか否かを判定し、その判定結果に基づいてライト側データストローブ信号ｗＤＱＳの位相を調整する第２位相調整部２００（図３において一点鎖線で囲まれた部分）が構成される。
【０１０８】
また本実施の形態では、ステップｓ２で使用される調整用データｗＤＱｔは、例えば、ステップｓ１で使用される調整用データｗＤＱｔと同じである。ステップｓ２での調整用データｗＤＱｔとして、上述の図５に示される複数種類のパターンデータが使用される。なお、ステップｓ２で使用される調整用データｗＤＱｔは、ステップｓ１で使用される調整用データｗＤＱｔと異なっても良い。
【０１０９】
また本実施の形態では、ライト側データストローブ信号ｗＤＱＳの位相の設定値について、複数種類の設定値が用意されている。例えば、３２種類の設定値が用意されている。調整部４２は、３２種類の設定値のうちのいずれか一つを、ライト側データストローブ信号ｗＤＱＳの位相に設定する。以後、ライト側データストローブ信号ｗＤＱＳの位相の設定値を「ｗＤＱＳ用設定値」と呼ぶことがある。
【０１１０】
ｗＤＱＳ用設定値は、ライト側データストローブ信号ｗＤＱＳの位相の遅延量を示している。クロック信号ＣＬＫの周期が例えば２．５ｎｓであるとすると、調整部４２は、ライト側データストローブ信号ｗＤＱＳの位相の遅延量を例えば０．１ｎｓ間隔で設定することが可能である。本実施の形態では、“０”〜“３１”までの３２種類のｗＤＱＳ用設定値が規定されている。ｗＤＱＳ用設定値は、その値が大きいほど、ライト側データストローブ信号ｗＤＱＳの位相の遅延量が大きいことを示している。ライト側データストローブ信号ｗＤＱＳの位相の初期値としては、例えば、ｗＤＱＳ用設定値“１６”が採用される。
【０１１１】
図９はステップｓ２での処理を詳細に示すフローチャートである。図９に示されるように、ステップｓ２１において、主制御部４０は、上述のステップｓ１１と同様に、調整用データｗＤＱｔの９種類のパターンデータのいずれか一つを、処理対象のパターンデータとして決定し、決定したパターンデータを位相調整用制御部４４に通知する。
【０１１２】
次にステップｓ２２において、第２位相調整部２００は、ライト側データストローブ信号ｗＤＱＳの位相を決定する。具体的には、主制御部４０が、ｗＤＱＳ用設定値“０”〜“３１”のうちの一つのｗＤＱＳ用設定値を選択し、選択したｗＤＱＳ用設定値を位相調整用制御部４４を通じて調整部４２に通知する。調整部４２は、ライト側データストローブ信号ｗＤＱＳが入力されると、その位相を、通知されたｗＤＱＳ用設定値に設定する。つまり、調整部４２は、ライト側データストローブ信号ｗＤＱＳの位相の遅延量を、主制御部４０から位相調整用制御部４４を介して通知された値に設定する。
【０１１３】
次にステップｓ２３において、メモリ制御装置４は、上述のステップｓ１３と同様に、ステップｓ２１で決定された処理対象のパターンデータをメモリ２に書き込む。このとき、調整部４１では、入力される制御信号の位相が初期値に設定される。また制御部４３では、リード側データストローブ信号ｒＤＱＳの位相は、ステップｓ１で求められた適切な値に設定される。
【０１１４】
次にステップｓ２４において、メモリ制御装置４は、上述のステップｓ１４と同様に、ステップｓ２３でメモリ２に書き込まれたパターンデータをメモリ２から読み出す。
【０１１５】
次にステップｓ２５において、データ取り込み部４６は、ステップｓ２４で読み出されたパターンデータを、調整部４３から出力されるリード側データストローブ信号ｒＤＱＳの各エッジのタイミングで取り込む。そして、データ取り込み部４６は、取り込んだパターンデータを判定部４７に出力する。
【０１１６】
次にステップｓ２６において、判定部４７は、上述のステップｓ１６と同様にして、ステップｓ２５で取り込まれたパターンデータが適切か否かを判定する。そして、判定部４７は、取り込まれたパターンデータが適切であるか否かの判定結果を主制御部４０に通知する。主制御部４０は、ステップｓ２７において、判定部４７から通知された判定結果を記憶部４０１に記憶する。このとき、主制御部４０は、判定結果と、ステップｓ２１で決定された処理対象のパターンデータを特定する情報と、ステップｓ２２で決定されたｗＤＱＳ用設定値を特定する情報とを互いに対応付けて記憶部４０１に記憶する。
【０１１７】
次にステップｓ２８において、主制御部４０は、ライト側データストローブ信号ｗＤＱＳの位相を所定範囲変化させたか否かを判定する。具体的には、主制御部４０は、３２種類のｗＤＱＳ用設定値のすべてを、ライト側データストローブ信号ｗＤＱＳの位相に設定したか否かを判定する。ステップｓ２８においてＮｏと判定されると、再度ステップｓ２２が実行される。ここでのステップｓ２２では、３２種類のｗＤＱＳ用設定値のうち、ライト側データストローブ信号ｗＤＱＳの位相として未だ採用されていないｗＤＱＳ用設定値が選択される。その後、ステップｓ２３が実行されて、処理対象のパターンデータがメモリ２に書き込まれる。以後、ステップｓ２４〜ｓ２７が同様に実行される。
【０１１８】
一方で、ステップｓ２８においてＹｅｓと判定されると、つまり、判定部４７において、ライト側データストローブ信号ｗＤＱＳの位相についての３２種類のｗＤＱＳ用設定値にそれぞれに対応する３２個の判定結果が得られると、主制御部４０は、ステップｓ２９において、９種類のパターンデータのすべてを処理対象としたかを判定する。ステップｓ２９においてＮｏと判定されると、ステップｓ２１が再度実行される。ここでのステップｓ２１では、９種類のパターンデータにおいて処理対象とされてないパターンデータが新たな処理対象とされる。その後、ステップｓ２２以降が同様に実行される。
【０１１９】
なお、ステップｓ２１において処理対象のパターンデータが新たに決定された場合には、主制御部４０は、ライト側データストローブ信号ｗＤＱＳの位相に、３２種類のｗＤＱＳ用設定値のそれぞれをあらためて設定する。したがって、ステップｓ２１において処理対象のパターンデータが新たに決定された後、ステップｓ２８においてＹｅｓと判定されると、主制御部４０には、３２種類のｗＤＱＳ用設定値にそれぞれ対応する、当該処理対象のパターンデータに応じた３２個の判定結果が記憶される。
【０１２０】
ステップｓ２９においてＹｅｓと判定されると、つまり、９種類のパターンデータのそれぞれに関して、３２種類のｗＤＱＳ用設定値にそれぞれ対応する３２個の判定結果が主制御部４０に記憶されると、ステップｓ３０において、主制御部４０は、これらの判定結果に基づいて、ライト側データストローブ信号ｗＤＱＳの位相の適切な値を決定する。
【０１２１】
図１０は、ステップｓ２９においてＹｅｓと判定された後に主制御部４０に記憶されている判定結果の一例を示す図である。
【０１２２】
ステップｓ３０において、主制御部４０は、９種類のパターンデータのそれぞれについて、当該パターンデータに応じた３２個の判定結果に基づいて、データ取り込み部４６で取り込まれる当該パターンデータが適切となる、ライト側データストローブ信号ｗＤＱＳの位相範囲を特定する。
【０１２３】
図１０の例では、データ取り込み部４６で取り込まれる１ビット目変化パターンデータが適切となる、ライト側データストローブ信号ｗＤＱＳの位相範囲はｗＤＱＳ用設定値“２２”〜“２８”の範囲である。また、データ取り込み部４６で取り込まれる２ビット目変化パターンデータが適切となる、ライト側データストローブ信号ｗＤＱＳの位相範囲はｗＤＱＳ用設定値“２１”〜“２７”の範囲である。また、データ取り込み部４６で取り込まれる３ビット目変化パターンデータが適切となる、ライト側データストローブ信号ｗＤＱＳの位相範囲はｗＤＱＳ用設定値“２１”〜“２９”の範囲である。
【０１２４】
主制御部４０は、９種類のパターンデータのそれぞれについて、データ取り込み部４６で取り込まれる当該パターンデータが適切となる、ライト側データストローブ信号ｗＤＱＳの位相範囲を特定すると、特定した複数の位相範囲が重複する重複範囲２１０からライト側データストローブ信号ｗＤＱＳの位相の適切な値を決定する。主制御部４０は、例えば、当該重複範囲２１０の中央の値を、ライト側データストローブ信号ｗＤＱＳの位相の適切な値とする。図１０の例では、重複範囲２１０はｗＤＱＳ用設定値“２２”〜“２６”の範囲である。そして、ライト側データストローブ信号ｗＤＱＳの位相の適切な値はｗＤＱＳ用設定値“２４”となる。
【０１２５】
主制御部４０は、ライト側データストローブ信号ｗＤＱＳの位相の適切な値を決定すると、その適切な値を位相調整用制御部４４を通じて調整部４２に通知する。これにより、ステップｓ２での、ライト側データストローブ信号ｗＤＱＳに対する位相調整が完了する。通常モードのメモリ制御装置４では、ライトサイクルにおいて、調整部４２は、入力されるライト側データストローブ信号ｗＤＱＳの位相を、ステップｓ２で決定された適切な値に設定する。図１０の例では、調整部４２は、ライト側データストローブ信号ｗＤＱＳの位相をｗＤＱＳ用設定値“２４”に設定する。
【０１２６】
なお、ライト側データストローブ信号ｗＤＱＳの位相を調整する際の調整用データｗＤＱｔについても、パターンデータでなくても良い。また、リード側データストローブ信号ｒＤＱＳの位相を調整する場合と同様に、メモリ制御装置４は、１種類のパターンデータのみを用いて、ライト側データストローブ信号ｗＤＱＳに対する位相調整を行っても良い。また第２位相調整部２００は、データ取り込み部４６によって取り込まれたパターンデータに対してパリティチェックを行う以外の方法で、当該パターンデータが適切か否かを判定しても良い。
【０１２７】
以上のように、本実施の形態では、主制御部４０、位相調整用制御部４４、調整部４２及び判定部４７によって構成される第２位相調整部２００は、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔが適切であるか否かを判定し、その判定結果に基づいてライト側データストローブ信号ｗＤＱＳの位相を調整する。
【０１２８】
ここで、ステップｓ１の実行によって、リード側データストローブ信号ｒＤＱＳの位相は適切な値に設定されることから、データ取り込み部４６に入力されるリード側データストローブ信号ｒＤＱＳ及びリードデータｒＤＱの位相の関係は適切であり、データ取り込み部４６がリードデータｒＤＱを適切に取り込むことができる。このような場合には、メモリ２が、メモリ制御装置４からの調整用データｗＤＱｔを、メモリ制御装置４からのライト側データストローブ信号ｗＤＱＳに基づいて適切に取り込むことができれば、メモリ制御装置４のデータ取り込み部４６が取り込む、メモリ２からの調整用データｗＤＱｔは適切なデータとなる。したがって、データ取り込み部４６が取り込む調整用データｗＤＱｔが適切であれば、メモリ２が、メモリ制御装置４からの調整用データｗＤＱｔを、メモリ制御装置４からのライト側データストローブ信号ｗＤＱＳに基づいて適切に取り込むことができたと考えることができる。一方で、データ取り込み部４６が取り込む調整用データｗＤＱｔが適切でなければ、メモリ２が、メモリ制御装置４からの調整用データｗＤＱｔを、メモリ制御装置４からのライト側データストローブ信号ｗＤＱＳに基づいて適切に取り込むことができなかったと考えることができる。よって、ステップｓ２において、第２位相調整部２００が、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔが適切であるか否かの判定結果に基づいてライト側データストローブ信号ｗＤＱＳの位相を調整することにより、第２位相調整部２００は、メモリ２においてライトデータｗＤＱがライト側データストローブ信号ｗＤＱＳに基づいて適切に取り込まれるように、ライト側データストローブ信号ｗＤＱＳの位相を適切な値に設定することができる。
【０１２９】
また、ステップｓ２においては、ステップｓ１と同様に、第２位相調整部２００は、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔに対してパリティチェックを行うことによって、当該調整用データｗＤＱｔが適切か否かを判定する。そのため、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔが適切であるか否かを簡単に判定するができる。
【０１３０】
また、ステップｓ２においては、ステップｓ１と同様に、調整用データｗＤＱｔとして複数種類のパターンデータが使用されているため、メモリ２に書き込むライトデータｗＤＱのパターンにかかわらず、メモリ２においてライトデータｗＤＱがライト側データストローブ信号ｗＤＱＳに基づいて適切に取り込まれるように、ライト側データストローブ信号ｗＤＱＳの位相を適切な値に設定することができる。
【０１３１】
また、ステップｓ２においては、データ取り込み部４６で取り込まれる調整用データｗＤＱｔが適切となるライト側データストローブ信号ｗＤＱＳの位相範囲が特定され、当該位相範囲からライト側データストローブ信号ｗＤＱＳの位相の適切な値が決定される。したがって、実運用中の半導体装置１が動作している間に、温度変化、電源電圧の変化等によって、ライト側データストローブ信号ｗＤＱＳ及びライトデータｗＤＱの位相の関係が多少変化したとしても、メモリ２においてライトデータｗＤＱが適切に取り込まれないことを抑制することができる。
【０１３２】
また、ステップｓ２においては、調整用データｗＤＱｔについての複数種類のパターンデータのそれぞれについて、データ取り込み部４６で取り込まれた当該パターンデータが適切となるライト側データストローブ信号ｗＤＱＳの位相範囲が特定され、特定された複数の位相範囲が重複する重複範囲からライト側データストローブ信号ｗＤＱＳの位相の適切な値が決定されている。したがって、実運用中の半導体装置１が動作している間に、ライト側データストローブ信号ｗＤＱＳ及びライトデータｗＤＱの位相の関係が多少変化する場合であっても、メモリ２に書き込むライトデータｗＤＱのパターンにかかわらず、メモリ２においてライトデータｗＤＱが適切に取り込まれないことを抑制することができる。
【０１３３】
また、ステップｓ２において、ステップｓ１と同様に、調整用データｗＤＱｔとして１ビット変化パターンデータと全ビット変化パターンデータとが使用される。そのため、同時スイッチングノイズの影響が小さい状況と、同時スイッチングノイズの影響が大きい状況との両方が考慮されて、ライト側データストローブ信号ｗＤＱＳの位相が調整される。したがって、同時スイッチングノイズの影響の大きさにかかわらず、メモリ２においてライトデータｗＤＱが適切に取り込まれないことを抑制することができる。
【０１３４】
＜先行制御信号に対する位相調整の詳細＞
先行制御信号ＣＮＴに対する位相調整は、ライト側データストローブ信号ｗＤＱＳに対する位相調整と同様に行われる。ステップｓ３において、メモリ制御装置４は、メモリ２に対して書き込んだ調整用データｗＤＱｔを当該メモリ２から読み出し、読み出した調整用データｗＤＱｔをリード側データストローブ信号ｒＤＱＳに基づいて取り込む。そして、メモリ制御装置４は、取り込んだ調整用データｗＤＱｔが適切でるか否かを判定し、その判定結果に基づいて、各先行制御信号ＣＮＴの位相を調整する。本実施の形態では、主制御部４０、位相調整用制御部４４、調整部４１及び判定部４７によって、取り込まれた調整用データｗＤＱｔが適切であるか否かを判定し、その判定結果に基づいて先行制御信号ＣＮＴの位相を調整する第３位相調整部３００（図３において二点鎖線で囲まれた部分）が構成される。
【０１３５】
また本実施の形態では、ステップｓ３で使用される調整用データｗＤＱｔは、例えば、ステップｓ１，ｓ２で使用される調整用データｗＤＱｔと同じである。ステップｓ３での調整用データｗＤＱｔとして、上述の図５に示される複数種類のパターンデータが使用される。なお、ステップｓ３で使用される調整用データｗＤＱｔは、ステップｓ１で使用される調整用データｗＤＱｔと異なっても良い。また、ステップｓ３で使用される調整用データｗＤＱｔは、ステップｓ２で使用される調整用データｗＤＱｔと異なっても良い。
【０１３６】
また本実施の形態では、先行制御信号ＣＮＴの位相の設定値について、複数種類の設定値が用意されている。例えば、３２種類の設定値が用意されている。調整部４１は、３２種類の設定値のうちのいずれか一つを、各先行制御信号ＣＮＴの位相に設定する。以後、先行制御信号ＣＮＴの位相の設定値を「ＣＮＴ用設定値」と呼ぶことがある。
【０１３７】
ＣＮＴ用設定値は、先行制御信号ＣＮＴの位相の遅延量を示している。調整部４１は、調整部４２と同様に、先行制御信号ＣＮＴの位相の遅延量を例えば０．１ｎｓ間隔で設定することが可能である。本実施の形態では、“０”〜“３１”までの３２種類のＣＮＴ用設定値が規定されている。ＣＮＴ用設定値は、その値が大きいほど、先行制御信号ＣＮＴの位相の遅延量が大きいことを示している。各先行制御信号ＣＮＴの位相の初期値としては、例えば、ＣＮＴ用設定値“１６”が採用される。
【０１３８】
図１１はステップｓ３での処理を詳細に示すフローチャートである。図１１に示されるように、ステップｓ３１において、主制御部４０は、上述のステップｓ１１，ｓ２１と同様に、調整用データｗＤＱｔの９種類のパターンデータのいずれか一つを、処理対象のパターンデータとして決定し、決定したパターンデータを位相調整用制御部４４に通知する。
【０１３９】
次にステップｓ３２において、第３位相調整部３００は、各先行制御信号ＣＮＴの位相を決定する。具体的には、主制御部４０が、ＣＮＴ用設定値“０”〜“３１”のうちの一つのＣＮＴ用設定値を選択し、選択したＣＮＴ用設定値を位相調整用制御部４４を通じて調整部４１に通知する。調整部４１は、先行制御信号ＣＮＴが入力されると、その位相を、通知されたＣＮＴ用設定値に設定する。
【０１４０】
次にステップｓ３３において、メモリ制御装置４は、上述のステップｓ１３，ｓ２３と同様に、ステップｓ３１で決定された処理対象のパターンデータをメモリ２に書き込む。このとき、調整部４２では、ライト側データストローブ信号ｗＤＱＳの位相は、ステップｓ２で求められた適切な値に設定される。また制御部４３では、リード側データストローブ信号ｒＤＱＳの位相は、ステップｓ１で求められた適切な値に設定される。
【０１４１】
次にステップｓ３４において、メモリ制御装置４は、上述のステップｓ１４，ｓ２４と同様に、ステップｓ３３でメモリ２に書き込まれたパターンデータをメモリ２から読み出す。
【０１４２】
次にステップｓ３５において、データ取り込み部４６は、ステップｓ３４で読み出されたパターンデータを、調整部４３から出力されるリード側データストローブ信号ｒＤＱＳの各エッジのタイミングで取り込む。そして、データ取り込み部４６は、取り込んだパターンデータを判定部４７に出力する。
【０１４３】
次にステップｓ３６において、判定部４７は、上述のステップｓ１６，ｓ２６と同様にして、ステップｓ３５で取り込まれたパターンデータが適切か否かを判定する。そして、判定部４７は、取り込まれたパターンデータが適切であるか否かの判定結果を主制御部４０に通知する。主制御部４０は、ステップｓ３７において、判定部４７から通知された判定結果を記憶部４０１に記憶する。このとき、主制御部４０は、判定結果と、ステップｓ３１で決定された処理対象のパターンデータを特定する情報と、ステップｓ３２で決定されたＣＮＴ用設定値を特定する情報とを互いに対応付けて記憶部４０１に記憶する。
【０１４４】
次にステップｓ３８において、主制御部４０は、先行制御信号ＣＮＴの位相を所定範囲変化させたか否かを判定する。具体的には、主制御部４０は、３２種類のＣＮＴ用設定値のすべてを、先行制御信号ＣＮＴの位相に設定したか否かを判定する。ステップｓ３８においてＮｏと判定されると、再度ステップｓ３２が実行される。ここでのステップｓ３２では、３２種類のＣＮＴ用設定値のうち、先行制御信号ＣＮＴの位相として未だ採用されていないＣＮＴ用設定値が選択される。その後、ステップｓ３３が実行されて、処理対象のパターンデータがメモリ２に書き込まれる。以後、ステップｓ３４〜ｓ３７が同様に実行される。
【０１４５】
一方で、ステップｓ３８においてＹｅｓと判定されると、つまり、判定部４７において、先行制御信号ＣＮＴの位相についての３２種類のＣＮＴ用設定値にそれぞれ対応する３２個の判定結果が得られると、主制御部４０は、ステップｓ３９において、９種類のパターンデータのすべてを処理対象としたかを判定する。ステップｓ３９においてＮｏと判定されると、ステップｓ３１が再度実行される。ここでのステップｓ３１では、９種類のパターンデータにおいて処理対象とされてないパターンデータが新たな処理対象とされる。その後、ステップｓ３２以降が同様に実行される。
【０１４６】
なお、ステップｓ３１において処理対象のパターンデータが新たに決定された場合には、主制御部４０は、先行制御信号ＣＮＴの位相に、３２種類のＣＮＴ用設定値のそれぞれをあらためて設定する。したがって、ステップｓ３１において処理対象のパターンデータが新たに決定された後、ステップｓ３８においてＹｅｓと判定されると、主制御部４０には、３２種類のＣＮＴ用設定値にそれぞれ対応する、当該処理対象のパターンデータに応じた３２個の判定結果が記憶されている。
【０１４７】
ステップｓ３９においてＹｅｓと判定されると、つまり、９種類のパターンデータのそれぞれに関して、３２種類のＣＮＴ用設定値にそれぞれ対応する３２個の判定結果が主制御部４０に記憶されると、ステップｓ４０において、主制御部４０は、これらの判定結果に基づいて、各先行制御信号ＣＮＴの位相の適切な値を決定する。
【０１４８】
図１２は、ステップｓ３９においてＹｅｓと判定された後に主制御部４０に記憶されている判定結果の一例を示す図である。
【０１４９】
ステップｓ４０において、主制御部４０は、９種類のパターンデータのそれぞれについて、当該パターンデータに応じた３２個の判定結果に基づいて、データ取り込み部４６で取り込まれる当該パターンデータが適切となる、先行制御信号ＣＮＴの位相範囲を特定する。
【０１５０】
図１２の例では、データ取り込み部４６で取り込まれる１ビット目変化パターンデータが適切となる、先行制御信号ＣＮＴの位相範囲は、ＣＮＴ用設定値“１２”〜“１９”の範囲である。また、データ取り込み部４６で取り込まれる２ビット目変化パターンデータが適切となる、先行制御信号ＣＮＴの位相範囲は、ＣＮＴ用設定値“１２”〜“１７”の範囲である。また、データ取り込み部４６で取り込まれる３ビット目変化パターンデータが適切となる、先行制御信号ＣＮＴの位相範囲は、ＣＮＴ用設定値“１２”〜“１９”の範囲である。
【０１５１】
主制御部４０は、９種類のパターンデータのそれぞれについて、データ取り込み部４６で取り込まれる当該パターンデータが適切となる、先行制御信号ＣＮＴの位相範囲を特定すると、特定した複数の位相範囲が重複する重複範囲３１０からライト側データストローブ信号ｗＤＱＳの位相の適切な値を決定する。主制御部４０は、例えば、当該重複範囲３１０の中央の値を、先行制御信号ＣＮＴの位相の適切な値とする。図１２の例では、重複範囲３１０はＣＮＴ用設定値“１２”〜“１７”の範囲である。そして、重複範囲３１０の中央の値は、ＣＮＴ用設定値“１４”及び“１５”である。このように、重複範囲３１０の中央の値が２つ存在する場合には、当該２つのうちのどちらを、先行制御信号ＣＮＴの位相の適切な値としても良い。ここでは、ＣＮＴ用設定値“１４”が、先行制御信号ＣＮＴの位相の適切な値とされる。
【０１５２】
主制御部４０は、先行制御信号ＣＮＴの位相の適切な値を決定すると、その適切な値を位相調整用制御部４４を通じて調整部４１に通知する。これにより、ステップｓ３での、各先行制御信号ＣＮＴに対する位相調整が完了する。通常モードのメモリ制御装置４では、リードサイクルあるいはライトサイクルにおいて、調整部４１は、入力される先行制御信号ＣＮＴの位相を、ステップｓ３で決定された適切な値に設定する。図１２の例では、調整部４１は、各先行制御信号ＣＮＴの位相をＣＮＴ用設定値“１４”に設定する。
【０１５３】
なお、先行制御信号ＣＮＴの位相を調整する際の調整用データｗＤＱｔについても、パターンデータでなくても良い。また、リード側データストローブ信号ｒＤＱＳの位相を調整する場合と同様に、メモリ制御装置４は、１種類のパターンデータのみを用いて、先行制御信号ＣＮＴに対する位相調整を行っても良い。また第３位相調整部３００は、データ取り込み部４６によって取り込まれたパターンデータに対してパリティチェックを行う以外の方法で、当該パターンデータが適切か否かを判定しても良い。
【０１５４】
以上のように、本実施の形態では、主制御部４０、位相調整用制御部４４、調整部４１及び判定部４７によって構成される第３位相調整部３００は、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔが適切であるか否かを判定し、その判定結果に基づいて先行制御信号ＣＮＴの位相を調整する。
【０１５５】
ここで、ステップｓ１，ｓ２の実行によって、リード側データストローブ信号ｒＤＱＳ及びライト側データストローブ信号ｗＤＱＳの位相は適切な値に設定されることから、データ取り込み部４６に入力されるリード側データストローブ信号ｒＤＱＳ及びリードデータｒＤＱの位相の関係は適切であり、メモリ２でのライト側データストローブ信号ｗＤＱＳ及びライトデータｗＤＱの位相の関係は適切である。このような場合には、先行制御信号ＣＮＴの位相が適切であれば、データ取り込み部４６が取り込む調整用データｗＤＱｔは適切なデータとなる。したがって、データ取り込み部４６が取り込む調整用データｗＤＱｔが適切であれば、各制御信号ＣＮＴの位相は適切であると考えることができる。一方で、データ取り込み部４６が取り込む調整用データｗＤＱｔが適切でなければ、制御信号ＣＮＴの位相は適切でないと考えることができる。よって、ステップｓ３において、第３位相調整部３００が、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔが適切であるか否かの判定結果に基づいて先行制御信号ＣＮＴの位相を調整することにより、第３位相調整部３００は、先行制御信号ＣＮＴの位相を適切な値に設定することができる。その結果、メモリ２からのデータの読み出しミスが発生したり、メモリ２に対するデータの書き込みミスが発生したりすることが抑制される。
【０１５６】
また、ステップｓ３においては、ステップｓ１，ｓ２と同様に、第３位相調整部３００は、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔに対してパリティチェックを行うことによって、当該調整用データｗＤＱｔが適切か否かを判定する。そのため、データ取り込み部４６によって取り込まれた調整用データｗＤＱｔが適切であるか否かを簡単に判定するができる。
【０１５７】
また、ステップｓ３においては、ステップｓ１，ｓ２と同様に、調整用データｗＤＱｔとして、複数種類のパターンデータが使用されているため、メモリ２に書き込むライトデータｗＤＱのパターン及びメモリ２から読み出すリードデータｒＤＱのパターンにかかわらず、先行制御信号ＣＮＴの位相を適切な値に設定することができる。
【０１５８】
また、ステップｓ３においては、データ取り込み部４６で取り込まれる調整用データｗＤＱｔが適切となる先行制御信号ＣＮＴの位相範囲が特定され、当該位相範囲から先行制御信号ＣＮＴの位相の適切な値が決定される。したがって、実運用中の半導体装置１が動作している間に、温度変化、電源電圧の変化等によって、先行制御信号ＣＮＴの位相が多少変化したとしても、メモリ２からのデータの読み出しミスが発生したり、メモリ２に対するデータの書き込みミスが発生したりすることが抑制される。
【０１５９】
また、ステップｓ３においては、調整用データｗＤＱｔについての複数種類のパターンデータのそれぞれについて、データ取り込み部４６で取り込まれた当該パターンデータが適切となる先行制御信号ＣＮＴの位相範囲が特定され、特定された複数の位相範囲が重複する重複範囲から先行制御信号ＣＮＴの位相の適切な値が決定されている。したがって、実運用中の半導体装置１が動作している間に、先行制御信号ＣＮＴの位相が多少変化する場合であっても、メモリ２に書き込むライトデータｗＤＱのパターン及びメモリ２から読み出すリードデータｒＤＱのパターンにかかわらず、メモリ２からのデータの読み出しミスが発生したり、メモリ２に対するデータの書き込みミスが発生したりすることが抑制される。
【０１６０】
また、ステップｓ３において、ステップｓ１，ｓ２と同様に、調整用データｗＤＱｔとして１ビット変化パターンデータと全ビット変化パターンデータとが使用される。そのため、同時スイッチングノイズの影響が小さい状況と、同時スイッチングノイズの影響が大きい状況との両方が考慮されて、先行制御信号ＣＮＴの位相が調整される。したがって、同時スイッチングノイズの影響の大きさにかかわらず、メモリ２からのデータの読み出しミスが発生したり、メモリ２に対するデータの書き込みミスが発生したりすることが抑制される。
【０１６１】
なお、リード側データストローブ信号ｒＤＱＳ等の制御信号に対する位相調整に使用される調整用データｗＤＱｔには、図５に示されるパターンデータ以外のパターンデータが含められても良い。例えば、図１３に示されるような、第１及び第２単位データの間で２ビットだけが相違する２ビット変化パターンデータが調整用データｗＤＱｔに含められても良い。また図１４に示されるような、第１及び第２単位データの間で４ビットだけが相違する４ビット変化パターンデータが調整用データｗＤＱｔに含められても良い。２ビット変化パターンデータ及び４ビット変化パターンデータの少なくとも一方が使用されて制御信号の位相が調整されることによって、同時スイッチングノイズの影響が小さい状況（１ビット変化パターンデータ）と、同時スイッチングノイズの影響がやや大きい状況（２ビット変化パターンデータ、４ビット変化パターンデータ）と、同時スイッチングノイズの影響がかなり大きい状況（全ビット変化パターンデータ）とが考慮されて、制御信号の位相が調整される。
【０１６２】
また上記の例では、図４に示される位相調整処理は、実運用中の半導体装置１において実行されていた。しかしながら、メモリ制御装置４とメモリ２とが接続された状態で半導体装置１の出荷が行われる場合には、つまり、半導体装置１全体が一つの製品として出荷される場合には、半導体装置１の出荷検査（製造工場での検査）において、図４に示される位相調整処理が実行されても良い。また、半導体集積回路３とメモリ２とが別々の製品として出荷され、ユーザが半導体集積回路３とメモリ２とを接続して半導体装置１を製作する場合には、半導体集積回路３とメモリ２との接続確認テストの際に、図４に示される位相調整処理が行われても良い。
【０１６３】
また上記の例では、ステップｓ１が実行される際に、ライト側データストローブ信号ｗＤＱＳとライトデータｗＤＱの位相の関係が大きくずれており、メモリ制御装置４がメモリ２に対してデータを適切に書き込むことができない場合には、ステップｓ１においてデータ取り込み部４６が取り込んだパターンデータは常に不適切となる。したがって、ステップｓ２０において、メモリ制御装置４は、リード側データストローブ信号ｒＤＱＳの位相の適切な値を求めることができない。図１５に示されるように、メモリ制御装置４は、ステップｓ１（ステップｓ２０）においてリード側データストローブ信号ｒＤＱＳの位相の適切な値を求めることができない場合には（ステップｓ５０）、リード側データストローブ信号ｒＤＱＳの位相を初期値に設定した上でステップｓ２及びステップｓ３を順次実行し、その後、ステップｓ１を再度実行しても良い。このとき、図１６に示されるように、ステップｓ２においてライト側データストローブ信号ｗＤＱＳの位相について適切な値が求められない場合には（ステップｓ６０のＮｏ）、メモリ制御装置４は、ステップｓ３を実行せずに、リード側データストローブ信号ｒＤＱＳの位相を変化させた上で（ステップｓ６１）再度ステップｓ２を実行しても良い。そして、このステップｓ２においても、ライト側データストローブ信号ｗＤＱＳの位相について適切な値が求められない場合（ステップｓ６０のＮｏ）には、メモリ制御装置４は、リード側データストローブ信号ｒＤＱＳの位相をさらに変化させて（ステップｓ６１）、ステップｓ２を実行する。メモリ制御装置４は、ステップｓ２においてライト側データストローブ信号ｗＤＱＳの位相について適切な値が求められるまでこれを繰り返す。メモリ制御装置４は、ステップｓ２おいてライト側データストローブ信号ｗＤＱＳの位相について適切な値が求められると（ステップｓ６０のＹｅｓ）、ステップｓ３を実行し、その後ステップｓ１を実行する。
【０１６４】
以上のように、半導体装置１は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。
【符号の説明】
【０１６５】
１  半導体装置
２  メモリ
４  メモリ制御装置
４６  データ取り込み部
１００  第１位相調整部
２００  第２位相調整部
３００  第３位相調整部
４０２  位置調整用プログラム
【図１】
0006407653.tif 000002
【図２】
0006407653.tif 000003
【図３】
0006407653.tif 000004
【図４】
0006407653.tif 000005
【図５】
0006407653.tif 000006
【図６】
0006407653.tif 000007
【図７】
0006407653.tif 000008
【図８】
0006407653.tif 000009
【図９】
0006407653.tif 000010
【図１０】
0006407653.tif 000011
【図１１】
0006407653.tif 000012
【図１２】
0006407653.tif 000013
【図１３】
0006407653.tif 000014
【図１４】
0006407653.tif 000015
【図１５】
0006407653.tif 000016
【図１６】
0006407653.tif 000017