図1は実施の形態に係る半導体装置1の構成を示す図である。図1に示されるように、半導体装置1は、メモリ2及び半導体集積回路3を備えている。メモリ2は、例えばDDR型のSDRAMである。半導体集積回路3は、例えば、入力される画像データに対して圧縮処理等の各種画像処理を行う画像処理回路である。半導体集積回路3は、画像データ等をメモリ2に書き込んだり、メモリ2内の画像データ等を読み出したりする。半導体集積回路3は、メモリ2を制御するメモリ制御装置4を備えている。メモリ制御装置4は、メモリ2にデータを書き込み、メモリ2からデータを読み出す。メモリ制御装置4とメモリ2とは、様々な信号線によって互いに接続されており、当該信号線を使用して信号のやり取りを行う。なお、半導体集積回路3は画像処理回路以外であっても良い。
本実施の形態では、半導体集積回路3とメモリ2とは別々のパッケージに収められている。そして、半導体集積回路3及びメモリ2は、プリント基板10上に搭載されており、当該プリント基板10上に設けられた配線によって互いに接続されている。なお、半導体集積回路3とメモリ2とは一つのパッケージに収められても良い。
メモリ制御装置4は、クロック信号CLKに同期して動作する。またメモリ制御装置4は、メモリ2に対してクロック信号CLKを出力する。メモリ2はクロック信号CLKに同期して動作する。
メモリ制御装置4とメモリ2とは、データDQのやり取りを行うデータ線DQLによって互いに接続されている。データ線DQLは双方向の信号線である。メモリ制御装置4が出力するデータDQはデータ線DQLを通じてメモリ2に入力され、メモリ2が出力するデータDQはデータ線DQLを通じてメモリ制御装置4に入力される。データ線DQLにデータDQが出力されていない場合には、データ線DQLはハイインピーダンスとなる。
データ線DQLはN(≧2)ビットのデータバスである。データDQはNビットデータである。したがって、メモリ制御装置4とメモリ2との間のデータのやり取りはNビット単位で行われる。本実施の形態では、例えばN=8である。なお、Nの値はこれに限られない。例えば、N=4、N=16、N=32であっても良い。以後、メモリ2から読み出されるデータDQを「リードデータrDQ」と呼び、メモリ2に書き込まれるデータDQを「ライトデータwDQ」と呼ぶことがある。
メモリ制御装置4とメモリ2とは、データストローブ信号DQSのやり取りを行うデータストローブ線DQSLによって互いに接続されている。データストローブ線DQSLは双方向の信号線である。メモリ制御装置4が出力するデータストローブ信号DQSはデータストローブ線DQSLを通じてメモリ2に入力され、メモリ2が出力するデータストローブ信号DQSはデータストローブ線DQSLを通じてメモリ制御装置4に入力される。データストローブ線DQSLにデータストローブ信号DQSが出力されていない場合には、データストローブ線DQSLはハイインピーダンスとなる。
メモリ制御装置4は、データストローブ信号DQS以外の複数種類の制御信号CNTをメモリ2に出力する。複数種類の制御信号CNTには、アドレス信号ADDR、ロウアドレスストローブ信号RAS、カラムアドレスストローブ信号CAS、チップセレクト信号CS、ライトイネーブル信号WE等が含まれている。メモリ制御装置4は、リードサイクル及びライトサイクルにおいて、データストローブ信号DQS及びデータDQに先立って制御信号CNTを出力する。以後、制御信号CNTを「先行制御信号CNT」と呼ぶことがある。
図2は、クロック信号CLK、データDQ及びデータストローブ信号DQSの理想的な関係を示す図である。図2の上から1番目にはクロック信号CLKが示されている。図2の上から2番目にはデータストローブ信号DQSが示されている。図2の上から3番目にはリードデータrDQが示されている。そして、図2の一番下にはライトデータwDQが示されている。
データストローブ信号DQSは、クロック信号CLKに同期して、Highレベル及びLowレベルを交互に繰り返す信号である。つまり、データストローブ信号DQSは、クロック信号CLKに同期して、立ち上がりエッジ及び立ち上がりエッジを交互に繰り返す信号である。データストローブ信号DQSの周期はクロック信号CLKの周期と一致する。
リードサイクルでは、理想的には、メモリ2から出力されるデータストローブ信号DQSにエッジが現れるたびに、当該エッジのタイミングで、メモリ2からのリードデータrDQの出力が開始する。1回のリードサイクルにおいては、データストローブ信号DQSに複数回エッジが現れることから、1回のリードサイクルでは、8ビットのリードデータrDQがメモリ2から複数回出力される。つまり、1回のリードサイクルにおいて、リードデータrDQがバースト的にメモリ2から出力される。
一方で、ライトサイクルでは、理想的には、メモリ制御装置4から出力されるデータストローブ信号DQSにエッジが現れるたびに、当該エッジのタイミングから1/4サイクル前に、メモリ制御装置4からのライトデータwDQの出力が開始する。1回のライトサイクルにおいては、データストローブ信号DQSに複数回エッジが現れることから、1回のライトサイクルでは、8ビットのライトデータwDQがメモリ制御装置4から複数回出力される。つまり、1回のライトサイクルにおいて、ライトデータwDQがバースト的にメモリ制御装置4から出力される。
リードサイクルにおいて、メモリ制御装置4内でのデータストローブ信号DQS及びリードデータrDQの位相の関係が図2に示される関係であれば、メモリ制御装置4は、入力されたデータストローブ信号DQSの位相を90°だけ遅らせるだけで、データストローブ信号DQSの各エッジのタイミングでリードデータrDQを適切に取り込むことができる。しかしながら、メモリ制御装置4とメモリ2とを実際に接続すると、配線遅延、同時スイッチングノイズなどが原因で、メモリ制御装置4内では、データストローブ信号DQS及びリードデータrDQの位相の関係が図2のような理想的な関係にはならない可能性がある。したがって、メモリ制御装置4は、入力されたデータストローブ信号DQSの位相を90°だけ遅延させるだけでは、リードデータrDQを適切に取り込むことができない可能性がある。
また、ライトサイクルにおいて、メモリ2内でのデータストローブ信号DQS及びライトデータwDQの位相の関係が図2に示される関係であれば、メモリ2は、入力されたデータストローブ信号DQSの各エッジのタイミングでライトデータwDQを取り込むことができる。しかしながら、メモリ制御装置4とメモリ2とを実際に接続すると、配線遅延、同時スイッチングノイズなどが原因で、メモリ2内では、データストローブ信号DQS及びライトデータwDQの位相の関係が図2のような理想的な関係にはならない可能性がある。したがって、メモリ2は、入力されたデータストローブ信号DQSの各エッジのタイミングでライトデータwDQを取り込んだとしても、当該ライトデータwDQを適切に取り込むことができない可能性がある。
また、市場に投入された実運用中の半導体装置1においては、温度変化、電源電圧の変化等によって、リードサイクルでのデータストローブ信号DQS及びリードデータrDQの位相の関係が変化することがある。したがって、その位相関係が調整されない場合には、あるタイミングにおいて、メモリ制御装置4が、入力されたデータストローブ信号DQSに基づいてリードデータrDQを適切に取り込むことができたとしても、別のタイミングでは、入力されたデータストローブ信号DQSに基づいてリードデータrDQを適切に取り込むことができない可能性がある。
同様に、実運用中の半導体装置1においては、温度変化、電源電圧の変化等によって、ライトサイクルでのデータストローブ信号DQS及びライトデータwDQの位相の関係が変化することがある。したがって、その位相関係が調整されない場合には、あるタイミングにおいて、メモリ2が、入力されたデータストローブ信号DQSに基づいてライトデータwDQを適切に取り込むことができたとしても、別のタイミングでは、入力されたデータストローブ信号DQSに基づいてライトデータwDQを適切に取り込むことができない可能性がある。
そこで、本実施の形態に係るメモリ制御装置4は、当該メモリ制御装置4においてリードデータrDQを適切に取り込むことができ、メモリ2においてもライトデータwDQを適切に取り込むことができるように、データストローブ信号DQSの位相を適切な値に設定できるように構成されている。
また、メモリ制御装置4が、リードサイクルあるいはライトサイクルにおいて、データストローブ信号DQS及びデータDQに先立って出力する、アドレス信号ADDR等の先行制御信号CNTの位相については、メモリ制御装置4単体では適切な値になっていたとしても、メモリ制御装置4とメモリ2とを実際に接続すると、配線遅延、同時スイッチングノイズなどが原因で適切な値にならない可能性がある。また、実運用中の半導体装置1では、温度変化、電源電圧の変化等によって、先行制御信号CNTの位相が変化することがある。したがって、先行制御信号CNTの位相が調整されない場合には、メモリ制御装置4は、メモリ2から適切にデータを読み出すことができなかったり、メモリ2に対して適切にデータを書き込めなかったりする可能性がある。
そこで、本実施の形態に係るメモリ制御装置4は、メモリ2から適切にデータを読み出したり、メモリ2に対して適切にデータを書き込めたりできるように、先行制御信号CNTの位相も適切な値に設定できるように構成されている。以下にメモリ制御装置4について詳細に説明する。
<メモリ制御装置の詳細について>
本実施の形態では、メモリ制御装置4は、動作モードとして、位相調整モードを備えている。位相調整モードでは、データストローブ信号DQS等の制御信号の位相が調整される。以後、メモリ制御装置4での、位相調整モード以外の動作モードを「通常モード」と呼ぶ。通常モードでは、位相調整モードで位相が適切に調整された各種制御信号が使用されて、メモリ2に対してライトアクセス及びリードアクセスが行われる。
図3はメモリ制御装置4の構成を示す図である。図3に示されるように、メモリ制御装置4は、主制御部40と、調整部41,42,43と、位相調整用制御部44と、セレクタ45と、データ取り込み部46と、判定部47とを備えている。メモリ制御装置4は、一種のコンピュータ装置である。
主制御部40は、メモリ制御装置4全体の動作を管理する。また主制御部40は、半導体集積回路3全体の動作も管理する。主制御部40は、例えば、CPU400及び記憶部401等を備えている。記憶部401は、ROM(Read Only Memory)及びRAM(Random Access Memory)等の、CPU400が読み取り可能な非一時的な記録媒体で構成されている。記憶部401内には、メモリ制御装置4あるいは半導体集積回路3を制御するための様々な制御プログラムが記憶されている。例えば、記憶部401には、メモリ制御装置4を制御するための制御プログラムの一種である位相調整用プログラム402が記憶されている。位相調整用プログラム402は、データストローブ信号DQS等の制御信号の位相を調整するための制御プログラムである。CPU400が記憶部401内の位相調整用プログラム402を実行することによって、メモリ制御装置4の動作モードは位相調整モードとなる。
主制御部40は、メモリ2に供給するクロック信号CLK及び複数種類の先行制御信号CNTを生成して出力する。また主制御部40は、メモリ制御装置4が通常モードで動作する際にメモリ2に書き込むライトデータwDQを生成して出力する。以後、当該ライトデータwDQを「通常ライトデータwDQn」と呼ぶことがある。
さらに主制御部40は、ライトサイクルにおいて、データストローブ信号DQSを生成して出力する。以後、当該データストローブ信号DQSを「ライト側データストローブ信号wDQS」と呼ぶことがある。
調整部41は、主制御部40が出力する複数種類の先行制御信号CNTの位相を調整する。調整部41で位相が調整された複数種類の先行制御信号CNTはメモリ2に入力される。本実施の形態では、複数種類の先行制御信号CNTの位相はまとめて調整されるが、複数種類の先行制御信号CNTのそれぞれの位相は個別に調整されても良い。
調整部42は、主制御部40が出力するライト側データストローブ信号wDQSの位相を調整する。調整部42で位相が調整されたライト側データストローブ信号wDQSはメモリ2に入力される。
調整部43は、リードサイクルにおいて、メモリ2が出力するデータストローブ信号DQSの位相を調整する。以後、当該データストローブ信号DQSを「リード側データストローブ信号rDQS」と呼ぶことがある。調整部43で位相が調整されたリード側データストローブ信号rDQSはデータ取り込み部46に入力される。
位相調整用制御部44は、主制御部40によって制御される。位相調整用制御部44は、調整部41,42,43のそれぞれを個別に制御する。また位相調整用制御部44は、メモリ制御装置4が位相調整モードで動作する際に、データストローブ信号DQS等の制御信号に対する位相調整用のライトデータwDQを出力する。以後、当該ライトデータwDQを「調整用データwDQt」と呼ぶことがある。
調整部41,42のそれぞれは、入力される制御信号の位相を遅延させる複数の遅延バッファを有している。調整部41,42のそれぞれは、遅延バッファのカスケード接続段数を変化させることによって、入力される制御信号の位相を遅延させる。つまり、調整部41,42のそれぞれは、入力される制御信号の位相についての、入力時の位相に対する遅延量を設定することによって、当該制御信号の位相を設定する。
調整部43は、例えば、入力される制御信号(リード側データストローブ信号rDQS)を遅延させるDLL(Digital Locked Loop)回路を有している。調整部43は、当該DLL回路を使用して、入力される制御信号の位相についての、入力時の位相に対する相対的な遅延量を設定することによって、当該制御信号の位相を設定する。
以後、制御信号の位相の遅延量と言えば、制御信号の位相についての、入力時の位相に対する遅延量を意味する。
セレクタ45は、2つの入力端子450,451を有している。一方の入力端子450には、通常ライトデータwDQnが入力され、他方の入力端子451には、調整用データwDQtが入力される。セレクタ45は、位相調整用制御部44による制御によって、2つの入力端子450,451のどちらか一方を選択し、選択した入力端子に入力される信号を出力する。セレクタ45は、メモリ制御装置4が通常モードで動作するときには入力端子450を選択し、メモリ制御装置4が位相調整モードで動作するときには入力端子451を選択する。したがって、メモリ制御装置4が通常モードで動作するときには、セレクタ45からは通常ライトデータwDQnが出力され、メモリ制御装置4が位相調整モードで動作するときには、セレクタ45からは調整用データwDQtが出力される。セレクタ45から出力されるライトデータwDQはメモリ2に入力される。
データ取り込み部46は、調整部43で位相調整されたリード側データストローブ信号rDQSに基づいて、メモリ2から出力されるリードデータrDQを取り込む。具体的には、データ取り込み部46は、例えばフリップフロップ回路を有しており、リード側データストローブ信号rDQSの立ち上がりエッジ及び立下りエッジのそれぞれのタイミングにおいて、メモリ2からのリードデータrDQを当該フリップフロップ回路によって保持する。
判定部47は、データ取り込み部46で取り込まれたリードデータrDQが適切であるか否かを判定する。そして、判定部47は、その判定結果を主制御部40に出力する。主制御部40は、判定部47から通知される判定結果を記憶部401に記憶する。
なお、判定部47での判定結果は、本実施の形態に係る半導体装置1の外部に出力されても良い。この場合には、判定部47での判定結果が、半導体装置1の外部の表示装置に表示されても良い。
<通常モードについて>
次に通常モードのメモリ制御装置4の動作について説明する。通常モードのメモリ制御装置4では、位相調整用制御部44は、主制御部40による制御によって、入力端子450を選択するようにセレクタ45を制御する。これにより、通常モードのメモリ制御装置4からは通常ライトデータwDQnがメモリ2に出力される。
また、通常モードのメモリ制御装置4では、調整部41,42,43のそれぞれは、位相調整用制御部44によって制御されない。これにより、通常モードのメモリ制御装置4では、調整部41,42,43のそれぞれが設定する制御信号の位相は一定である。
通常モードのメモリ制御装置4では、リードサイクルにおいて、主制御部40が、メモリ2からデータを読み出すために必要な先行制御信号CNTを出力する。この先行制御信号CNTは調整部41を通じてメモリ2に出力される。リードサイクルでは、メモリ2は、メモリ制御装置4からのアドレス信号ADDR等の先行制御信号CNTで指定される記憶領域からリードデータrDQを読み出してメモリ制御装置4に出力するとともに、リード側データストローブ信号rDQSをメモリ制御装置4に出力する。通常モードのメモリ制御装置4では、メモリ2からのリード側データストローブ信号rDQSが調整部43を通じてデータ取り込み部46に入力され、メモリ2からのリードデータrDQもデータ取り込み部46に入力される。データ取り込み部46は、入力されるリードデータrDQを、調整部43が出力するリード側データストローブ信号rDQSに基づいて取り込む。そして、データ取り込み部46は、取り込んだリードデータrDQを主制御部40に出力する。これにより、主制御部40は、メモリ2から読み出されたリードデータrDQを取得することができる。
また、通常モードのメモリ制御装置4では、ライトサイクルにおいて、主制御部40が、メモリ2にデータを書き込むために必要な先行制御信号CNTを出力する。この先行制御信号CNTは調整部41を通じてメモリ2に出力される。ライトサイクルでは、その後、主制御部40が通常ライトデータwDQnとライト側データストローブ信号wDQSを出力する。通常ライトデータwDQnはセレクタ45を通じてメモリ2に出力され、ライト側データストローブ信号wDQSは調整部42を通じてメモリ2に出力される。メモリ2は、メモリ制御装置4からの通常ライトデータwDQnを、メモリ制御装置4からのライト側データストローブ信号wDQSに基づいて取り込む。そして、メモリ2は、取り込んだ通常ライトデータwDQnを、メモリ制御装置4からのアドレス信号ADDR等の先行制御信号CNTによって指定される記憶領域に記憶する。
<位置調整モードについて>
次に位置調整モードのメモリ制御装置4の動作について説明する。図4は位置調整モードのメモリ制御装置4が行う位置調整処理を示すフローチャートである。CPU400が記憶部401内の位相調整用プログラム402を実行することによって、図4に示される位相調整処理がメモリ制御装置4で行われる。図4に示される位相調整処理は、例えば、実運用中の半導体装置1の電源が投入された直後に実行される。また、図4に示される位相調整処理は、実運用中の半導体装置1において、定期的にあるいは不定期的に繰り返して実行される。
図4に示されるように、位相調整処理では、まずステップs1において、リード側データストローブ信号rDQSに対する位相調整が行われる。その後、ステップs2において、ライト側データストローブ信号wDQSに対する位相調整が行われる。最後にステップs3において、アドレス信号ADDR等の先行制御信号CNTに対する位相調整が行われる。
ここで、先行制御信号CNTの位相のずれの許容範囲は比較的広いことから、先行制御信号CNTの位相のずれに基づく不具合(メモリ2からのデータの読み出しミス、メモリ2に対するデータの書き込みミス)が発生する可能性は比較的低い。
また、ライトデータwDQ及びライト側データストローブ信号wDQSは、クロック信号CLKと同様にメモリ制御装置4で生成される信号である。したがって、メモリ2においては、クロック信号CLKの位相とライトデータwDQの位相とライト側データストローブ信号wDQSの位相との関係が図2のような理想的な関係から大きくずれる可能性は比較的低い。そのため、クロック信号CLKに基づいて動作するメモリ2が、図2のような理想的な関係に基づいてライトデータwDQをライト側データストローブ信号wDQSのエッジのタイミングで取り込んだとしても、ライトデータwDQを適切に取り込むことができる可能性が比較的高い。
一方で、メモリ2は、メモリ制御装置4からのクロック信号CLKに基づいてリード側データストローブ信号rDQSを生成する。このとき、メモリ2では、DLL回路等の遅延回路が使用され、この遅延回路によって、リード側データストローブ信号rDQSにジッタが発生することがある。このため、メモリ制御装置4においては、リード側データストローブ信号rDQSの位相とリードデータrDQの位相との関係が上述の図2のような理想的な関係から大きくずれる可能性が比較的高い。そのため、メモリ制御装置4が、図2のような理想的な関係を考慮して、リード側データストローブ信号rDQSの位相を遅延させると、リード側データストローブ信号rDQSに基づいてリードデータrDQを適切に取り込むことができない可能性が比較的高い。
このように、先行制御信号CNTの位相のずれに基づく不具合が発生する可能性、及びメモリ2がライト側データストローブ信号wDQSに基づいて適切にライトデータwDQを取り込むことができない可能性は比較的低く、メモリ制御装置4がリード側データストローブ信号rDQSに基づいて適切にリードデータrDQを取り込むことができない可能性は比較的高い。
そこで、本実施の形態では、メモリ制御装置4は、まずステップs1において、リード側データストローブ信号rDQSの位相を適切な値に調整する。そして、リード側データストローブ信号rDQSの位相が適切な値に調整された後、メモリ制御装置4は、ステップs2において、ライト側データストローブ信号wDQSの位相を適切な値に調整する。そして、リード側データストローブ信号rDQS及びライト側データストローブ信号wDQSの位相が適切な値に調整された後、メモリ制御装置4は、ステップs3において、先行制御信号CNTの位相を適切な値に調整する。なお、ステップs1〜s3の実行順序はこれに限られない。以下に、ステップs1〜s3での処理について詳細に説明する。
<リード側データストローブ信号に対する位相調整の詳細>
本実施の形態では、ステップs1において、メモリ制御装置4は、メモリ2に対して書き込んだ調整用データwDQtを当該メモリ2から読み出し、読み出した調整用データwDQtをリード側データストローブ信号rDQSに基づいて取り込む。そして、メモリ制御装置4は、取り込んだ調整用データwDQtが適切でるか否かを判定し、その判定結果に基づいて、リード側データストローブ信号rDQSの位相を調整する。本実施の形態では、主制御部40、位相調整用制御部44、調整部43及び判定部47によって、取り込まれた調整用データwDQtが適切であるか否かを判定し、その判定結果に基づいてリード側データストローブ信号rDQSの位相を調整する第1位相調整部100(図3において破線で囲まれた部分)が構成される。
また本実施の形態では、調整用データwDQtとして、複数種類のパターンデータが規定されている。図5は当該複数種類のパターンデータの一例を示す図である。図5に示されるように、本実施の形態では、調整用データwDQtとして、9種類のパターンデータが規定されている。具体的には、調整用データwDQtとして、1ビット目変化パターンデータ、2ビット目変化パターンデータ、3ビット目変化パターンデータ、4ビット目変化パターンデータ、5ビット目変化パターンデータ、6ビット目変化パターンデータ、7ビット目変化パターンデータ、8ビット目変化パターンデータ、全ビット変化パターンデータが規定されている。
各パターンデータは、8ビット(Nビット)から成る第1単位データと、8ビットから成る第2単位データとが交互に現れるパターンデータである。本実施の形態に係る各パターンデータでは、第1及び第2単位データのそれぞれが例えば4回現れる。メモリ制御装置4とメモリ2との間のデータバスのビット数は8ビットであることから、メモリ制御装置4は、パターンデータをメモリ2に書き込む際には、8ビットのライトデータwDQとして、第1単位データ及び第2単位データを交互に出力する。またメモリ制御装置4がパターンデータをメモリ2から読み出す際には、メモリ2は、8ビットのリードデータrDQとして、第1単位データ及び第2単位データを交互に出力する。
1ビット目変化パターンデータでは、第1単位データは“0x00”(16進数表記の“00”)であり、第2単位データは“0x01”である。したがって、1ビット目変化パターンデータの第1及び第2単位データの間では、下位から1ビット目だけ相違する。
2ビット目変化パターンデータでは、第1単位データは“0x00”であり、第2単位データは“0x02”である。したがって、2ビット目変化パターンデータの第1及び第2単位データの間では、下位から2ビット目だけ相違する。
3ビット目変化パターンデータでは、第1単位データは“0x00”であり、第2単位データは“0x04”である。したがって、3ビット目変化パターンデータの第1及び第2単位データの間では、下位から3ビット目だけ相違する。
4ビット目変化パターンデータでは、第1単位データは“0x00”であり、第2単位データは“0x08”である。したがって、4ビット目変化パターンデータの第1及び第2単位データの間では、下位から4ビット目だけ相違する。
5ビット目変化パターンデータでは、第1単位データは“0x00”であり、第2単位データは“0x10”である。したがって、5ビット目変化パターンデータの第1及び第2単位データの間では、下位から5ビット目だけ相違する。
6ビット目変化パターンデータでは、第1単位データは“0x00”であり、第2単位データは“0x20”である。したがって、6ビット目変化パターンデータの第1及び第2単位データの間では、下位から6ビット目だけ相違する。
7ビット目変化パターンデータでは、第1単位データは“0x00”であり、第2単位データは“0x40”である。したがって、7ビット目変化パターンデータの第1及び第2単位データの間では、下位から7ビット目だけ相違する。
8ビット目変化パターンデータでは、第1単位データは“0x00”であり、第2単位データは“0x80”である。したがって、8ビット目変化パターンデータの第1及び第2単位データの間では、下位から8ビット目だけ相違する。
全ビット変化パターンデータでは、第1単位データは“0x00”であり、第2単位データは“0xff”である。したがって、全ビット変化パターンデータの第1及び第2単位データの間では、8ビットすべてが相違する。
本実施の形態では、9種類のパターンデータのすべてが使用されてリード側データストローブ信号rDQSの位相の調整が行われる。以後、1ビット目変化パターンデータ、2ビット目変化パターンデータ、3ビット目変化パターンデータ、4ビット目変化パターンデータ、5ビット目変化パターンデータ、6ビット目変化パターンデータ、7ビット目変化パターンデータ及び8ビット目変化パターンデータを特に区別する必要が無い場合には、それぞれを「1ビット変化パターンデータ」と呼ぶ。
また本実施の形態では、リード側データストローブ信号rDQSの位相の設定値について、複数種類の設定値が用意されている。例えば、32種類の設定値が用意されている。調整部43は、32種類の設定値のうちのいずれか一つを、リード側データストローブ信号rDQSの位相に設定する。
図6はリード側データストローブ信号rDQSの位相についての複数種類の設定値の一例を示す図である。本実施の形態では、リード側データストローブ信号rDQSの位相の設定値は、リード側データストローブ信号rDQSの位相の遅延量を示している。図6に示されるように、本実施の形態では、“0”〜“31”までの32種類の設定値が規定されている。設定値“x”(0≦x≦31)は、リード側データストローブ信号rDQSの位相の遅延量が(11.25×x)°であることを示している。調整部43は、リード側データストローブ信号rDQSの位相の遅延量を11.25°間隔で設定することが可能である。以後、リード側データストローブ信号rDQSの位相の設定値を「rDQS用設定値」と呼ぶことがある。リード側データストローブ信号rDQSの位相の初期値としては、図2に示される、リード側データストローブ信号rDQS及びリードデータrDQの位相の理想的な関係に基づいて、例えば、rDQS用設定値“8”(遅延量90°)が採用される。
図7はステップs1での処理を詳細に示すフローチャートである。図7に示されるように、ステップs11において、主制御部40は、調整用データwDQtの9種類のパターンデータのいずれか一つを、処理対象のパターンデータとして決定し、決定したパターンデータを位相調整用制御部44に通知する。
次にステップs12において、第1位相調整部100は、リード側データストローブ信号rDQSの位相を決定する。具体的には、主制御部40が、rDQS用設定値“0”〜“31”のうちの一つを選択し、選択したrDQS用設定値を位相調整用制御部44を通じて調整部43に通知する。調整部43は、リード側データストローブ信号rDQSが入力されると、その位相を、通知されたrDQS用設定値に設定する。つまり、調整部43は、リード側データストローブ信号rDQSの位相の遅延量を、主制御部40から位相調整用制御部44を介して通知された値に設定する。
次にステップs13において、メモリ制御装置4は、ステップs11で決定された処理対象のパターンデータをメモリ2に書き込む。このとき、調整部41,42のそれぞれでは、入力される制御信号の位相の遅延量が初期値に設定される。ステップs13では、主制御部40が、メモリ2にデータを書き込む際に必要な先行制御信号CNTと、ライト側データストローブ信号wDQSを出力する。また位相調整用制御部44が、ステップs11で決定された処理対象のパターンデータを生成して出力する。位相調整モードのメモリ制御装置4では、セレクタ45は入力端子451を選択していることから、位相調整用制御部44が出力するパターンデータはメモリ2に入力される。
次にステップs14において、メモリ制御装置4は、ステップs13でメモリ2に書き込まれたパターンデータをメモリ2から読み出す。ステップs14では、主制御部40が、メモリ2からデータを読み出す際に必要な先行制御信号CNTを出力する。メモリ2から読み出されたパターンデータはデータ取り込み部46に入力され、メモリ2が出力するリード側データストローブ信号rDQSは調整部43に入力される。調整部43は、入力されるリード側データストローブ信号rDQSの位相を、ステップs12で通知されたrDQS用設定値に設定して、当該リード側データストローブ信号rDQSをデータ取り込み部46に出力する。
次にステップs15において、データ取り込み部46は、ステップs14で読み出されたパターンデータを、調整部43から出力されるリード側データストローブ信号rDQSの各エッジのタイミングで取り込む。そして、データ取り込み部46は、取り込んだパターンデータを判定部47に出力する。
次にステップs16において、判定部47は、ステップs15で取り込まれたパターンデータが適切か否かを判定する。つまり、判定部47は、取り込まれたパターンデータがステップs13でメモリ2に書き込まれた処理対象のパターンデータと一致するか否かを判定する。
本実施の形態では、判定部47は、例えば、取り込まれたパターンデータに対するパリティチェックを行うことによって、当該パターンデータが適切であるか否かを判定する。上述の図5に示されるように、各パターンデータでは、4byte単位(第1単位データとそれに続く第2単位データの組が2組)で見ると、“1”を示すビットの数が偶数となる。判定部47は、取り込まれたパターンデータのパリティチェックを行う際には、当該パターンデータを4byteごとに区切って、複数の区分データを生成する。そして、判定部47は、取り込まれたパターンデータを構成する複数の区分データのそれぞれについて、当該区分データに含まれる、“1”を示すビットの数が偶数であるか否かを判定する。
ここで、区分データに含まれる、“1”を示すビットの数が偶数である場合には、当該区分データのパリティが“0”であるとし、区分データに含まれる、“1”を示すビットの数が奇数である場合には、当該区分データのパリティが“1”であるとする。判定部47は、取り込まれたパターンデータを構成する複数の区分データのそれぞれについてのパリティが“0”である場合には、当該パターンデータが適切であると判定する。つまり、判定部47は、取り込まれたパターンデータが、ステップs13でメモリ2に書き込まれたパターンデータと一致すると判定する。一方で、判定部47は、取り込まれたパターンデータを構成する複数の区分データに、パリティが“1”である区分データが含まれる場合には、当該パターンデータが適切ではないと判定する。つまり、判定部47は、取り込まれたパターンデータが、ステップs13でメモリ2に書き込まれたパターンデータと一致しないと判定する。判定部47は、取り込まれたパターンデータが適切であるか否かの判定結果を主制御部40に通知する。主制御部40は、ステップs17において、判定部47から通知された判定結果を記憶部401に記憶する。このとき、主制御部40は、判定結果と、ステップs11で決定された処理対象のパターンデータを特定する情報と、ステップs12で決定されたrDQS用設定値を特定する情報とを互いに対応付けて記憶部401に記憶する。
次にステップs18において、主制御部40は、リード側データストローブ信号rDQSの位相を所定範囲変化させたか否かを判定する。具体的には、主制御部40は、32種類のrDQS用設定値のすべてを、リード側データストローブ信号rDQSの位相に設定したか否かを判定する。ステップs18においてNoと判定されると、再度ステップs12が実行される。ここでのステップs12では、32種類のrDQS用設定値のうち、リード側データストローブ信号rDQSの位相として未だ採用されていないrDQS用設定値が選択される。その後、ステップs13が実行されて、処理対象のパターンデータがメモリ2に書き込まれる。以後、ステップs14〜s17が同様に実行される。
一方で、ステップs18においてYesと判定されると、つまり、判定部47において、リード側データストローブ信号rDQSの位相についての32種類のrDQS用設定値にそれぞれに対応する32個の判定結果が得られると、主制御部40は、ステップs19において、9種類のパターンデータのすべてを処理対象としたかを判定する。ステップs19においてNoと判定されると、ステップs11が再度実行される。ここでのステップs11では、9種類のパターンデータにおいて処理対象とされてないパターンデータが新たな処理対象とされる。その後、ステップs12以降が同様に実行される。
なお、ステップs11において処理対象のパターンデータが新たに決定された場合には、主制御部40は、リード側データストローブ信号rDQSの位相に、32種類のrDQS用設定値のそれぞれをあらためて設定する。したがって、ステップs11において処理対象のパターンデータが新たに決定された後、ステップs18においてYesと判定されると、主制御部40は、32種類のrDQS用設定値にそれぞれに対応する、当該処理対象のパターンデータに応じた32個の判定結果を記憶している。
ステップs19においてYesと判定されると、つまり、9種類のパターンデータのそれぞれに関して、32種類のrDQS用設定値にそれぞれ対応する32個の判定結果が主制御部40に記憶されると、ステップs20において、主制御部40は、これらの判定結果に基づいて、リード側データストローブ信号rDQSの位相の適切な値を決定する。
図8は、ステップs19においてYesと判定された後に主制御部40に記憶されている判定結果の一例を示す図である。図中の丸印は、取り込まれたパターンデータが適切であることを示し、図中の×印は、取り込まれたパターンデータが適切でないことを示している。後述の図10,12においても同様である。
ステップs20において、主制御部40は、9種類のパターンデータのそれぞれについて、当該パターンデータに応じた32個の判定結果に基づいて、データ取り込み部46で取り込まれる当該パターンデータが適切となる、リード側データストローブ信号rDQSの位相範囲を特定する。言い換えれば、主制御部40は、9種類のパターンデータのそれぞれについて、当該パターンデータに応じた32個の判定結果に基づいて、データ取り込み部46で取り込まれる当該パターンデータが適切となる、リード側データストローブ信号rDQSの位相の遅延量の範囲を特定する。
図8の例では、データ取り込み部46で取り込まれる1ビット目変化パターンデータが適切となる、リード側データストローブ信号rDQSの位相範囲は、rDQS用設定値“7”〜“12”の範囲である。また、データ取り込み部46で取り込まれる2ビット目変化パターンデータが適切となる、リード側データストローブ信号rDQSの位相範囲は、rDQS用設定値“7”〜“12”の範囲である。また、データ取り込み部46で取り込まれる3ビット目変化パターンデータが適切となる、リード側データストローブ信号rDQSの位相範囲は、rDQS用設定値“7”〜“13”の範囲である。
主制御部40は、9種類のパターンデータのそれぞれについて、データ取り込み部46で取り込まれる当該パターンデータが適切となる、リード側データストローブ信号rDQSの位相範囲を特定すると、特定した複数の位相範囲が重複する重複範囲110からリード側データストローブ信号rDQSの位相の適切な値を決定する。主制御部40は、例えば、当該重複範囲110の中央の値を、リード側データストローブ信号rDQSの位相の適切な値とする。図8の例では、重複範囲110はrDQS用設定値“8”〜“12”の範囲である。そして、リード側データストローブ信号rDQSの位相の適切な値はrDQS用設定値“10”となる。
以上の説明から理解できるように、本実施の形態では、メモリ制御装置4は、処理対象のパターンデータをメモリ2に書き込んだ後、処理対象のパターンデータをメモリ2から読み出す処理を複数回実行する(ステップs13,s14)。第1位相調整部100は、メモリ制御装置4で当該処理が実行されるたびに、リード側データストローブ信号rDQSの位相を変化させる(ステップs12)。そして、第1位相調整部100は、メモリ制御装置4が当該処理を実行するたびにデータ取り込み部46によって取り込まれた処理対象のパターンデータがそれぞれ適切であるか否かを判定し(ステップs15,s16)、その判定結果に基づいて、当該処理対象のパターンが適切となるリード側データストローブ信号rDQSの位相範囲を特定する(ステップs20)。メモリ制御装置4は、これらの処理を9種類のパターンデータのそれぞれについて行う。そして、第1位相調整部100は、特定された複数の位相範囲が重複する重複範囲110から、リード側データストローブ信号rDQSの位相の適切な値を決定する。
主制御部40は、リード側データストローブ信号rDQSの位相の適切な値を決定すると、その適切な値を位相調整用制御部44を通じて調整部43に通知する。これにより、ステップs1での、リード側データストローブ信号rDQSに対する位相調整が完了する。通常モードのメモリ制御装置4では、リードアクセスにおいて、調整部43は、入力されるリード側データストローブ信号rDQSの位相を、ステップs1で決定された適切な値に設定する。図8の例では、調整部43は、リード側データストローブ信号rDQSの位相をrDQS用設定値“10”に設定する。
なお、調整用データwDQtはパターンデータでなくても良い。また上記の例では、調整用データwDQtとして、複数種類のパターンデータが使用されているが、メモリ制御装置4は、1種類のパターンデータのみを用いて、リード側データストローブ信号rDQSに対する位相調整を行っても良い。この場合には、主制御部40には、1種類のパターンデータ応じた32個の判定結果が記憶される。第1位相調整部100は、当該32個の判定結果に基づいて、データ取り込み部46で取り込まれるパターンデータが適切となる、リード側データストローブ信号rDQSの位相範囲を特定し、その位相範囲から適切な値を決定する。例えば、第1位相調整部100は、当該位相範囲の中央の値を適切な値とする。
また上記の例では、第1位相調整部100は、データ取り込み部46によって取り込まれたパターンデータに対してパリティチェックを行うことによって、当該パターンデータが適切か否かを判定しているが、これ以外の方法で、データ取り込み部46によって取り込まれた調整用データwDQtが適切か否かを判定しても良い。例えば、第1位相調整部100は、ステップs15においてデータ取り込み部46によって取り込まれたパターンデータの全ビットと、ステップs13においてメモリ2に書き込まれたパターンデータの全ビットとを直接比較し、両パターンデータが一致するか否かによって、データ取り込み部46によって取り込まれたパターンデータが適切であるか否かを判定しても良い。
以上のように、本実施の形態では、主制御部40、位相調整用制御部44、調整部43及び判定部47によって構成される第1位相調整部100は、データ取り込み部46によって取り込まれた調整用データwDQtが適切であるか否かを判定し、その判定結果に基づいてリード側データストローブ信号rDQSの位相を調整する。そのため、第1位相調整部100は、データ取り込み部46によって取り込まれる、メモリ2からのリードデータrDQが適切となるように、リード側データストローブ信号rDQSの位相を適切な値に設定することができる。
また、本実施の形態では、第1位相調整部100は、データ取り込み部46によって取り込まれた調整用データwDQtに対してパリティチェックを行うことによって、当該調整用データwDQtが適切か否かを判定する。したがって、メモリ2に書き込んだ調整用データwDQtの全ビットと、データ取り込み部46によって取り込まれた調整用データwDQtの全ビットとを直接比較して、当該調整用データwDQtが適切か否かを判定する場合と比べて処理が簡素化される。
また、本実施の形態では、調整用データwDQtとして、複数種類のパターンデータが使用されている。そして、第1位相調整部100は、データ取り込み部46によって取り込まれた当該複数種類のパターンデータのそれぞれが適切か否かを判定し、その判定結果に基づいてリード側データストローブ信号rDQSに対して位相調整を行う。したがって、メモリ2から読み出されるリードデータrDQのパターンにかかわらず、データ取り込み部46によって取り込まれたリードデータrDQが適切となるように、リード側データストローブ信号rDQSの位相を適切な値に設定することができる。
また、本実施の形態では、データ取り込み部46で取り込まれる調整用データwDQtが適切となるリード側データストローブ信号rDQSの位相範囲が特定され、当該位相範囲からリード側データストローブ信号rDQSの位相の適切な値が決定される。したがって、実運用中の半導体装置1が動作している間に、温度変化、電源電圧の変化等によって、リード側データストローブ信号rDQS及びリードデータrDQの位相の関係が多少変化する場合であっても、データ取り込み部46で取り込まれるリードデータrDQが適切とならないことを抑制することができる。
また、本実施の形態では、調整用データwDQtについての複数種類のパターンデータのそれぞれについて、データ取り込み部46で取り込まれた当該パターンデータが適切となるリード側データストローブ信号rDQSの位相範囲が特定され、特定された複数の位相範囲が重複する重複範囲からリード側データストローブ信号rDQSの位相の適切な値が決定される。したがって、実運用中の半導体装置1が動作している間に、リード側データストローブ信号rDQS及びリードデータrDQの位相の関係が多少変化する場合であっても、メモリ2から読み出されるリードデータrDQのパターンにかかわらず、データ取り込み部46で取り込まれるリードデータrDQが適切とならないことを抑制することができる。
また、本実施の形態では、調整用データwDQtとして、第1及び第2単位データの間では1ビットだけ相違する1ビット変化パターンデータと、第1及び第2単位データの間では8ビットすべて相違する全ビット変化パターンデータとが使用されている。メモリ2から1ビット変化パターンデータが読み出される際には、同時スイッチングノイズの影響は少なく、メモリ2から全ビット変化パターンデータが読み出される際には、同時スイッチングノイズの影響は大きい。
同時スイッチングノイズの影響が大きい状況だけが考慮されて、リード側データストローブ信号rDQSの位相が調整される場合には、同時スイッチングノイズの影響が小さい状況において、データ取り込み部46で取り込まれるリードデータrDQが適切とならない可能性がある。本実施の形態では、1ビット変化パターンデータと全ビット変化パターンデータの両方が使用されてリード側データストローブ信号rDQSの位相が調整されるため、同時スイッチングノイズの影響が小さい状況と、同時スイッチングノイズの影響が大きい状況との両方が考慮され、リード側データストローブ信号rDQSの位相が調整される。したがって、同時スイッチングノイズの影響の大きさにかかわらず、データ取り込み部46で取り込まれるリードデータrDQが適切とならないことを抑制することができる。
<ライト側データストローブ信号に対する位相調整の詳細>
ライト側データストローブ信号wDQSに対する位相調整は、リード側データストローブ信号rDQSに対する位相調整と同様に行われる。ステップs2において、メモリ制御装置4は、メモリ2に対して書き込んだ調整用データwDQtを当該メモリ2から読み出し、読み出した調整用データwDQtをリード側データストローブ信号rDQSに基づいて取り込む。そして、メモリ制御装置4は、取り込んだ調整用データwDQtが適切であるか否かを判定し、その判定結果に基づいて、ライト側データストローブ信号wDQSの位相を調整する。本実施の形態では、主制御部40、位相調整用制御部44、調整部42及び判定部47によって、取り込まれた調整用データwDQtが適切であるか否かを判定し、その判定結果に基づいてライト側データストローブ信号wDQSの位相を調整する第2位相調整部200(図3において一点鎖線で囲まれた部分)が構成される。
また本実施の形態では、ステップs2で使用される調整用データwDQtは、例えば、ステップs1で使用される調整用データwDQtと同じである。ステップs2での調整用データwDQtとして、上述の図5に示される複数種類のパターンデータが使用される。なお、ステップs2で使用される調整用データwDQtは、ステップs1で使用される調整用データwDQtと異なっても良い。
また本実施の形態では、ライト側データストローブ信号wDQSの位相の設定値について、複数種類の設定値が用意されている。例えば、32種類の設定値が用意されている。調整部42は、32種類の設定値のうちのいずれか一つを、ライト側データストローブ信号wDQSの位相に設定する。以後、ライト側データストローブ信号wDQSの位相の設定値を「wDQS用設定値」と呼ぶことがある。
wDQS用設定値は、ライト側データストローブ信号wDQSの位相の遅延量を示している。クロック信号CLKの周期が例えば2.5nsであるとすると、調整部42は、ライト側データストローブ信号wDQSの位相の遅延量を例えば0.1ns間隔で設定することが可能である。本実施の形態では、“0”〜“31”までの32種類のwDQS用設定値が規定されている。wDQS用設定値は、その値が大きいほど、ライト側データストローブ信号wDQSの位相の遅延量が大きいことを示している。ライト側データストローブ信号wDQSの位相の初期値としては、例えば、wDQS用設定値“16”が採用される。
図9はステップs2での処理を詳細に示すフローチャートである。図9に示されるように、ステップs21において、主制御部40は、上述のステップs11と同様に、調整用データwDQtの9種類のパターンデータのいずれか一つを、処理対象のパターンデータとして決定し、決定したパターンデータを位相調整用制御部44に通知する。
次にステップs22において、第2位相調整部200は、ライト側データストローブ信号wDQSの位相を決定する。具体的には、主制御部40が、wDQS用設定値“0”〜“31”のうちの一つのwDQS用設定値を選択し、選択したwDQS用設定値を位相調整用制御部44を通じて調整部42に通知する。調整部42は、ライト側データストローブ信号wDQSが入力されると、その位相を、通知されたwDQS用設定値に設定する。つまり、調整部42は、ライト側データストローブ信号wDQSの位相の遅延量を、主制御部40から位相調整用制御部44を介して通知された値に設定する。
次にステップs23において、メモリ制御装置4は、上述のステップs13と同様に、ステップs21で決定された処理対象のパターンデータをメモリ2に書き込む。このとき、調整部41では、入力される制御信号の位相が初期値に設定される。また制御部43では、リード側データストローブ信号rDQSの位相は、ステップs1で求められた適切な値に設定される。
次にステップs24において、メモリ制御装置4は、上述のステップs14と同様に、ステップs23でメモリ2に書き込まれたパターンデータをメモリ2から読み出す。
次にステップs25において、データ取り込み部46は、ステップs24で読み出されたパターンデータを、調整部43から出力されるリード側データストローブ信号rDQSの各エッジのタイミングで取り込む。そして、データ取り込み部46は、取り込んだパターンデータを判定部47に出力する。
次にステップs26において、判定部47は、上述のステップs16と同様にして、ステップs25で取り込まれたパターンデータが適切か否かを判定する。そして、判定部47は、取り込まれたパターンデータが適切であるか否かの判定結果を主制御部40に通知する。主制御部40は、ステップs27において、判定部47から通知された判定結果を記憶部401に記憶する。このとき、主制御部40は、判定結果と、ステップs21で決定された処理対象のパターンデータを特定する情報と、ステップs22で決定されたwDQS用設定値を特定する情報とを互いに対応付けて記憶部401に記憶する。
次にステップs28において、主制御部40は、ライト側データストローブ信号wDQSの位相を所定範囲変化させたか否かを判定する。具体的には、主制御部40は、32種類のwDQS用設定値のすべてを、ライト側データストローブ信号wDQSの位相に設定したか否かを判定する。ステップs28においてNoと判定されると、再度ステップs22が実行される。ここでのステップs22では、32種類のwDQS用設定値のうち、ライト側データストローブ信号wDQSの位相として未だ採用されていないwDQS用設定値が選択される。その後、ステップs23が実行されて、処理対象のパターンデータがメモリ2に書き込まれる。以後、ステップs24〜s27が同様に実行される。
一方で、ステップs28においてYesと判定されると、つまり、判定部47において、ライト側データストローブ信号wDQSの位相についての32種類のwDQS用設定値にそれぞれに対応する32個の判定結果が得られると、主制御部40は、ステップs29において、9種類のパターンデータのすべてを処理対象としたかを判定する。ステップs29においてNoと判定されると、ステップs21が再度実行される。ここでのステップs21では、9種類のパターンデータにおいて処理対象とされてないパターンデータが新たな処理対象とされる。その後、ステップs22以降が同様に実行される。
なお、ステップs21において処理対象のパターンデータが新たに決定された場合には、主制御部40は、ライト側データストローブ信号wDQSの位相に、32種類のwDQS用設定値のそれぞれをあらためて設定する。したがって、ステップs21において処理対象のパターンデータが新たに決定された後、ステップs28においてYesと判定されると、主制御部40には、32種類のwDQS用設定値にそれぞれ対応する、当該処理対象のパターンデータに応じた32個の判定結果が記憶される。
ステップs29においてYesと判定されると、つまり、9種類のパターンデータのそれぞれに関して、32種類のwDQS用設定値にそれぞれ対応する32個の判定結果が主制御部40に記憶されると、ステップs30において、主制御部40は、これらの判定結果に基づいて、ライト側データストローブ信号wDQSの位相の適切な値を決定する。
図10は、ステップs29においてYesと判定された後に主制御部40に記憶されている判定結果の一例を示す図である。
ステップs30において、主制御部40は、9種類のパターンデータのそれぞれについて、当該パターンデータに応じた32個の判定結果に基づいて、データ取り込み部46で取り込まれる当該パターンデータが適切となる、ライト側データストローブ信号wDQSの位相範囲を特定する。
図10の例では、データ取り込み部46で取り込まれる1ビット目変化パターンデータが適切となる、ライト側データストローブ信号wDQSの位相範囲はwDQS用設定値“22”〜“28”の範囲である。また、データ取り込み部46で取り込まれる2ビット目変化パターンデータが適切となる、ライト側データストローブ信号wDQSの位相範囲はwDQS用設定値“21”〜“27”の範囲である。また、データ取り込み部46で取り込まれる3ビット目変化パターンデータが適切となる、ライト側データストローブ信号wDQSの位相範囲はwDQS用設定値“21”〜“29”の範囲である。
主制御部40は、9種類のパターンデータのそれぞれについて、データ取り込み部46で取り込まれる当該パターンデータが適切となる、ライト側データストローブ信号wDQSの位相範囲を特定すると、特定した複数の位相範囲が重複する重複範囲210からライト側データストローブ信号wDQSの位相の適切な値を決定する。主制御部40は、例えば、当該重複範囲210の中央の値を、ライト側データストローブ信号wDQSの位相の適切な値とする。図10の例では、重複範囲210はwDQS用設定値“22”〜“26”の範囲である。そして、ライト側データストローブ信号wDQSの位相の適切な値はwDQS用設定値“24”となる。
主制御部40は、ライト側データストローブ信号wDQSの位相の適切な値を決定すると、その適切な値を位相調整用制御部44を通じて調整部42に通知する。これにより、ステップs2での、ライト側データストローブ信号wDQSに対する位相調整が完了する。通常モードのメモリ制御装置4では、ライトサイクルにおいて、調整部42は、入力されるライト側データストローブ信号wDQSの位相を、ステップs2で決定された適切な値に設定する。図10の例では、調整部42は、ライト側データストローブ信号wDQSの位相をwDQS用設定値“24”に設定する。
なお、ライト側データストローブ信号wDQSの位相を調整する際の調整用データwDQtについても、パターンデータでなくても良い。また、リード側データストローブ信号rDQSの位相を調整する場合と同様に、メモリ制御装置4は、1種類のパターンデータのみを用いて、ライト側データストローブ信号wDQSに対する位相調整を行っても良い。また第2位相調整部200は、データ取り込み部46によって取り込まれたパターンデータに対してパリティチェックを行う以外の方法で、当該パターンデータが適切か否かを判定しても良い。
以上のように、本実施の形態では、主制御部40、位相調整用制御部44、調整部42及び判定部47によって構成される第2位相調整部200は、データ取り込み部46によって取り込まれた調整用データwDQtが適切であるか否かを判定し、その判定結果に基づいてライト側データストローブ信号wDQSの位相を調整する。
ここで、ステップs1の実行によって、リード側データストローブ信号rDQSの位相は適切な値に設定されることから、データ取り込み部46に入力されるリード側データストローブ信号rDQS及びリードデータrDQの位相の関係は適切であり、データ取り込み部46がリードデータrDQを適切に取り込むことができる。このような場合には、メモリ2が、メモリ制御装置4からの調整用データwDQtを、メモリ制御装置4からのライト側データストローブ信号wDQSに基づいて適切に取り込むことができれば、メモリ制御装置4のデータ取り込み部46が取り込む、メモリ2からの調整用データwDQtは適切なデータとなる。したがって、データ取り込み部46が取り込む調整用データwDQtが適切であれば、メモリ2が、メモリ制御装置4からの調整用データwDQtを、メモリ制御装置4からのライト側データストローブ信号wDQSに基づいて適切に取り込むことができたと考えることができる。一方で、データ取り込み部46が取り込む調整用データwDQtが適切でなければ、メモリ2が、メモリ制御装置4からの調整用データwDQtを、メモリ制御装置4からのライト側データストローブ信号wDQSに基づいて適切に取り込むことができなかったと考えることができる。よって、ステップs2において、第2位相調整部200が、データ取り込み部46によって取り込まれた調整用データwDQtが適切であるか否かの判定結果に基づいてライト側データストローブ信号wDQSの位相を調整することにより、第2位相調整部200は、メモリ2においてライトデータwDQがライト側データストローブ信号wDQSに基づいて適切に取り込まれるように、ライト側データストローブ信号wDQSの位相を適切な値に設定することができる。
また、ステップs2においては、ステップs1と同様に、第2位相調整部200は、データ取り込み部46によって取り込まれた調整用データwDQtに対してパリティチェックを行うことによって、当該調整用データwDQtが適切か否かを判定する。そのため、データ取り込み部46によって取り込まれた調整用データwDQtが適切であるか否かを簡単に判定するができる。
また、ステップs2においては、ステップs1と同様に、調整用データwDQtとして複数種類のパターンデータが使用されているため、メモリ2に書き込むライトデータwDQのパターンにかかわらず、メモリ2においてライトデータwDQがライト側データストローブ信号wDQSに基づいて適切に取り込まれるように、ライト側データストローブ信号wDQSの位相を適切な値に設定することができる。
また、ステップs2においては、データ取り込み部46で取り込まれる調整用データwDQtが適切となるライト側データストローブ信号wDQSの位相範囲が特定され、当該位相範囲からライト側データストローブ信号wDQSの位相の適切な値が決定される。したがって、実運用中の半導体装置1が動作している間に、温度変化、電源電圧の変化等によって、ライト側データストローブ信号wDQS及びライトデータwDQの位相の関係が多少変化したとしても、メモリ2においてライトデータwDQが適切に取り込まれないことを抑制することができる。
また、ステップs2においては、調整用データwDQtについての複数種類のパターンデータのそれぞれについて、データ取り込み部46で取り込まれた当該パターンデータが適切となるライト側データストローブ信号wDQSの位相範囲が特定され、特定された複数の位相範囲が重複する重複範囲からライト側データストローブ信号wDQSの位相の適切な値が決定されている。したがって、実運用中の半導体装置1が動作している間に、ライト側データストローブ信号wDQS及びライトデータwDQの位相の関係が多少変化する場合であっても、メモリ2に書き込むライトデータwDQのパターンにかかわらず、メモリ2においてライトデータwDQが適切に取り込まれないことを抑制することができる。
また、ステップs2において、ステップs1と同様に、調整用データwDQtとして1ビット変化パターンデータと全ビット変化パターンデータとが使用される。そのため、同時スイッチングノイズの影響が小さい状況と、同時スイッチングノイズの影響が大きい状況との両方が考慮されて、ライト側データストローブ信号wDQSの位相が調整される。したがって、同時スイッチングノイズの影響の大きさにかかわらず、メモリ2においてライトデータwDQが適切に取り込まれないことを抑制することができる。
<先行制御信号に対する位相調整の詳細>
先行制御信号CNTに対する位相調整は、ライト側データストローブ信号wDQSに対する位相調整と同様に行われる。ステップs3において、メモリ制御装置4は、メモリ2に対して書き込んだ調整用データwDQtを当該メモリ2から読み出し、読み出した調整用データwDQtをリード側データストローブ信号rDQSに基づいて取り込む。そして、メモリ制御装置4は、取り込んだ調整用データwDQtが適切でるか否かを判定し、その判定結果に基づいて、各先行制御信号CNTの位相を調整する。本実施の形態では、主制御部40、位相調整用制御部44、調整部41及び判定部47によって、取り込まれた調整用データwDQtが適切であるか否かを判定し、その判定結果に基づいて先行制御信号CNTの位相を調整する第3位相調整部300(図3において二点鎖線で囲まれた部分)が構成される。
また本実施の形態では、ステップs3で使用される調整用データwDQtは、例えば、ステップs1,s2で使用される調整用データwDQtと同じである。ステップs3での調整用データwDQtとして、上述の図5に示される複数種類のパターンデータが使用される。なお、ステップs3で使用される調整用データwDQtは、ステップs1で使用される調整用データwDQtと異なっても良い。また、ステップs3で使用される調整用データwDQtは、ステップs2で使用される調整用データwDQtと異なっても良い。
また本実施の形態では、先行制御信号CNTの位相の設定値について、複数種類の設定値が用意されている。例えば、32種類の設定値が用意されている。調整部41は、32種類の設定値のうちのいずれか一つを、各先行制御信号CNTの位相に設定する。以後、先行制御信号CNTの位相の設定値を「CNT用設定値」と呼ぶことがある。
CNT用設定値は、先行制御信号CNTの位相の遅延量を示している。調整部41は、調整部42と同様に、先行制御信号CNTの位相の遅延量を例えば0.1ns間隔で設定することが可能である。本実施の形態では、“0”〜“31”までの32種類のCNT用設定値が規定されている。CNT用設定値は、その値が大きいほど、先行制御信号CNTの位相の遅延量が大きいことを示している。各先行制御信号CNTの位相の初期値としては、例えば、CNT用設定値“16”が採用される。
図11はステップs3での処理を詳細に示すフローチャートである。図11に示されるように、ステップs31において、主制御部40は、上述のステップs11,s21と同様に、調整用データwDQtの9種類のパターンデータのいずれか一つを、処理対象のパターンデータとして決定し、決定したパターンデータを位相調整用制御部44に通知する。
次にステップs32において、第3位相調整部300は、各先行制御信号CNTの位相を決定する。具体的には、主制御部40が、CNT用設定値“0”〜“31”のうちの一つのCNT用設定値を選択し、選択したCNT用設定値を位相調整用制御部44を通じて調整部41に通知する。調整部41は、先行制御信号CNTが入力されると、その位相を、通知されたCNT用設定値に設定する。
次にステップs33において、メモリ制御装置4は、上述のステップs13,s23と同様に、ステップs31で決定された処理対象のパターンデータをメモリ2に書き込む。このとき、調整部42では、ライト側データストローブ信号wDQSの位相は、ステップs2で求められた適切な値に設定される。また制御部43では、リード側データストローブ信号rDQSの位相は、ステップs1で求められた適切な値に設定される。
次にステップs34において、メモリ制御装置4は、上述のステップs14,s24と同様に、ステップs33でメモリ2に書き込まれたパターンデータをメモリ2から読み出す。
次にステップs35において、データ取り込み部46は、ステップs34で読み出されたパターンデータを、調整部43から出力されるリード側データストローブ信号rDQSの各エッジのタイミングで取り込む。そして、データ取り込み部46は、取り込んだパターンデータを判定部47に出力する。
次にステップs36において、判定部47は、上述のステップs16,s26と同様にして、ステップs35で取り込まれたパターンデータが適切か否かを判定する。そして、判定部47は、取り込まれたパターンデータが適切であるか否かの判定結果を主制御部40に通知する。主制御部40は、ステップs37において、判定部47から通知された判定結果を記憶部401に記憶する。このとき、主制御部40は、判定結果と、ステップs31で決定された処理対象のパターンデータを特定する情報と、ステップs32で決定されたCNT用設定値を特定する情報とを互いに対応付けて記憶部401に記憶する。
次にステップs38において、主制御部40は、先行制御信号CNTの位相を所定範囲変化させたか否かを判定する。具体的には、主制御部40は、32種類のCNT用設定値のすべてを、先行制御信号CNTの位相に設定したか否かを判定する。ステップs38においてNoと判定されると、再度ステップs32が実行される。ここでのステップs32では、32種類のCNT用設定値のうち、先行制御信号CNTの位相として未だ採用されていないCNT用設定値が選択される。その後、ステップs33が実行されて、処理対象のパターンデータがメモリ2に書き込まれる。以後、ステップs34〜s37が同様に実行される。
一方で、ステップs38においてYesと判定されると、つまり、判定部47において、先行制御信号CNTの位相についての32種類のCNT用設定値にそれぞれ対応する32個の判定結果が得られると、主制御部40は、ステップs39において、9種類のパターンデータのすべてを処理対象としたかを判定する。ステップs39においてNoと判定されると、ステップs31が再度実行される。ここでのステップs31では、9種類のパターンデータにおいて処理対象とされてないパターンデータが新たな処理対象とされる。その後、ステップs32以降が同様に実行される。
なお、ステップs31において処理対象のパターンデータが新たに決定された場合には、主制御部40は、先行制御信号CNTの位相に、32種類のCNT用設定値のそれぞれをあらためて設定する。したがって、ステップs31において処理対象のパターンデータが新たに決定された後、ステップs38においてYesと判定されると、主制御部40には、32種類のCNT用設定値にそれぞれ対応する、当該処理対象のパターンデータに応じた32個の判定結果が記憶されている。
ステップs39においてYesと判定されると、つまり、9種類のパターンデータのそれぞれに関して、32種類のCNT用設定値にそれぞれ対応する32個の判定結果が主制御部40に記憶されると、ステップs40において、主制御部40は、これらの判定結果に基づいて、各先行制御信号CNTの位相の適切な値を決定する。
図12は、ステップs39においてYesと判定された後に主制御部40に記憶されている判定結果の一例を示す図である。
ステップs40において、主制御部40は、9種類のパターンデータのそれぞれについて、当該パターンデータに応じた32個の判定結果に基づいて、データ取り込み部46で取り込まれる当該パターンデータが適切となる、先行制御信号CNTの位相範囲を特定する。
図12の例では、データ取り込み部46で取り込まれる1ビット目変化パターンデータが適切となる、先行制御信号CNTの位相範囲は、CNT用設定値“12”〜“19”の範囲である。また、データ取り込み部46で取り込まれる2ビット目変化パターンデータが適切となる、先行制御信号CNTの位相範囲は、CNT用設定値“12”〜“17”の範囲である。また、データ取り込み部46で取り込まれる3ビット目変化パターンデータが適切となる、先行制御信号CNTの位相範囲は、CNT用設定値“12”〜“19”の範囲である。
主制御部40は、9種類のパターンデータのそれぞれについて、データ取り込み部46で取り込まれる当該パターンデータが適切となる、先行制御信号CNTの位相範囲を特定すると、特定した複数の位相範囲が重複する重複範囲310からライト側データストローブ信号wDQSの位相の適切な値を決定する。主制御部40は、例えば、当該重複範囲310の中央の値を、先行制御信号CNTの位相の適切な値とする。図12の例では、重複範囲310はCNT用設定値“12”〜“17”の範囲である。そして、重複範囲310の中央の値は、CNT用設定値“14”及び“15”である。このように、重複範囲310の中央の値が2つ存在する場合には、当該2つのうちのどちらを、先行制御信号CNTの位相の適切な値としても良い。ここでは、CNT用設定値“14”が、先行制御信号CNTの位相の適切な値とされる。
主制御部40は、先行制御信号CNTの位相の適切な値を決定すると、その適切な値を位相調整用制御部44を通じて調整部41に通知する。これにより、ステップs3での、各先行制御信号CNTに対する位相調整が完了する。通常モードのメモリ制御装置4では、リードサイクルあるいはライトサイクルにおいて、調整部41は、入力される先行制御信号CNTの位相を、ステップs3で決定された適切な値に設定する。図12の例では、調整部41は、各先行制御信号CNTの位相をCNT用設定値“14”に設定する。
なお、先行制御信号CNTの位相を調整する際の調整用データwDQtについても、パターンデータでなくても良い。また、リード側データストローブ信号rDQSの位相を調整する場合と同様に、メモリ制御装置4は、1種類のパターンデータのみを用いて、先行制御信号CNTに対する位相調整を行っても良い。また第3位相調整部300は、データ取り込み部46によって取り込まれたパターンデータに対してパリティチェックを行う以外の方法で、当該パターンデータが適切か否かを判定しても良い。
以上のように、本実施の形態では、主制御部40、位相調整用制御部44、調整部41及び判定部47によって構成される第3位相調整部300は、データ取り込み部46によって取り込まれた調整用データwDQtが適切であるか否かを判定し、その判定結果に基づいて先行制御信号CNTの位相を調整する。
ここで、ステップs1,s2の実行によって、リード側データストローブ信号rDQS及びライト側データストローブ信号wDQSの位相は適切な値に設定されることから、データ取り込み部46に入力されるリード側データストローブ信号rDQS及びリードデータrDQの位相の関係は適切であり、メモリ2でのライト側データストローブ信号wDQS及びライトデータwDQの位相の関係は適切である。このような場合には、先行制御信号CNTの位相が適切であれば、データ取り込み部46が取り込む調整用データwDQtは適切なデータとなる。したがって、データ取り込み部46が取り込む調整用データwDQtが適切であれば、各制御信号CNTの位相は適切であると考えることができる。一方で、データ取り込み部46が取り込む調整用データwDQtが適切でなければ、制御信号CNTの位相は適切でないと考えることができる。よって、ステップs3において、第3位相調整部300が、データ取り込み部46によって取り込まれた調整用データwDQtが適切であるか否かの判定結果に基づいて先行制御信号CNTの位相を調整することにより、第3位相調整部300は、先行制御信号CNTの位相を適切な値に設定することができる。その結果、メモリ2からのデータの読み出しミスが発生したり、メモリ2に対するデータの書き込みミスが発生したりすることが抑制される。
また、ステップs3においては、ステップs1,s2と同様に、第3位相調整部300は、データ取り込み部46によって取り込まれた調整用データwDQtに対してパリティチェックを行うことによって、当該調整用データwDQtが適切か否かを判定する。そのため、データ取り込み部46によって取り込まれた調整用データwDQtが適切であるか否かを簡単に判定するができる。
また、ステップs3においては、ステップs1,s2と同様に、調整用データwDQtとして、複数種類のパターンデータが使用されているため、メモリ2に書き込むライトデータwDQのパターン及びメモリ2から読み出すリードデータrDQのパターンにかかわらず、先行制御信号CNTの位相を適切な値に設定することができる。
また、ステップs3においては、データ取り込み部46で取り込まれる調整用データwDQtが適切となる先行制御信号CNTの位相範囲が特定され、当該位相範囲から先行制御信号CNTの位相の適切な値が決定される。したがって、実運用中の半導体装置1が動作している間に、温度変化、電源電圧の変化等によって、先行制御信号CNTの位相が多少変化したとしても、メモリ2からのデータの読み出しミスが発生したり、メモリ2に対するデータの書き込みミスが発生したりすることが抑制される。
また、ステップs3においては、調整用データwDQtについての複数種類のパターンデータのそれぞれについて、データ取り込み部46で取り込まれた当該パターンデータが適切となる先行制御信号CNTの位相範囲が特定され、特定された複数の位相範囲が重複する重複範囲から先行制御信号CNTの位相の適切な値が決定されている。したがって、実運用中の半導体装置1が動作している間に、先行制御信号CNTの位相が多少変化する場合であっても、メモリ2に書き込むライトデータwDQのパターン及びメモリ2から読み出すリードデータrDQのパターンにかかわらず、メモリ2からのデータの読み出しミスが発生したり、メモリ2に対するデータの書き込みミスが発生したりすることが抑制される。
また、ステップs3において、ステップs1,s2と同様に、調整用データwDQtとして1ビット変化パターンデータと全ビット変化パターンデータとが使用される。そのため、同時スイッチングノイズの影響が小さい状況と、同時スイッチングノイズの影響が大きい状況との両方が考慮されて、先行制御信号CNTの位相が調整される。したがって、同時スイッチングノイズの影響の大きさにかかわらず、メモリ2からのデータの読み出しミスが発生したり、メモリ2に対するデータの書き込みミスが発生したりすることが抑制される。
なお、リード側データストローブ信号rDQS等の制御信号に対する位相調整に使用される調整用データwDQtには、図5に示されるパターンデータ以外のパターンデータが含められても良い。例えば、図13に示されるような、第1及び第2単位データの間で2ビットだけが相違する2ビット変化パターンデータが調整用データwDQtに含められても良い。また図14に示されるような、第1及び第2単位データの間で4ビットだけが相違する4ビット変化パターンデータが調整用データwDQtに含められても良い。2ビット変化パターンデータ及び4ビット変化パターンデータの少なくとも一方が使用されて制御信号の位相が調整されることによって、同時スイッチングノイズの影響が小さい状況(1ビット変化パターンデータ)と、同時スイッチングノイズの影響がやや大きい状況(2ビット変化パターンデータ、4ビット変化パターンデータ)と、同時スイッチングノイズの影響がかなり大きい状況(全ビット変化パターンデータ)とが考慮されて、制御信号の位相が調整される。
また上記の例では、図4に示される位相調整処理は、実運用中の半導体装置1において実行されていた。しかしながら、メモリ制御装置4とメモリ2とが接続された状態で半導体装置1の出荷が行われる場合には、つまり、半導体装置1全体が一つの製品として出荷される場合には、半導体装置1の出荷検査(製造工場での検査)において、図4に示される位相調整処理が実行されても良い。また、半導体集積回路3とメモリ2とが別々の製品として出荷され、ユーザが半導体集積回路3とメモリ2とを接続して半導体装置1を製作する場合には、半導体集積回路3とメモリ2との接続確認テストの際に、図4に示される位相調整処理が行われても良い。
また上記の例では、ステップs1が実行される際に、ライト側データストローブ信号wDQSとライトデータwDQの位相の関係が大きくずれており、メモリ制御装置4がメモリ2に対してデータを適切に書き込むことができない場合には、ステップs1においてデータ取り込み部46が取り込んだパターンデータは常に不適切となる。したがって、ステップs20において、メモリ制御装置4は、リード側データストローブ信号rDQSの位相の適切な値を求めることができない。図15に示されるように、メモリ制御装置4は、ステップs1(ステップs20)においてリード側データストローブ信号rDQSの位相の適切な値を求めることができない場合には(ステップs50)、リード側データストローブ信号rDQSの位相を初期値に設定した上でステップs2及びステップs3を順次実行し、その後、ステップs1を再度実行しても良い。このとき、図16に示されるように、ステップs2においてライト側データストローブ信号wDQSの位相について適切な値が求められない場合には(ステップs60のNo)、メモリ制御装置4は、ステップs3を実行せずに、リード側データストローブ信号rDQSの位相を変化させた上で(ステップs61)再度ステップs2を実行しても良い。そして、このステップs2においても、ライト側データストローブ信号wDQSの位相について適切な値が求められない場合(ステップs60のNo)には、メモリ制御装置4は、リード側データストローブ信号rDQSの位相をさらに変化させて(ステップs61)、ステップs2を実行する。メモリ制御装置4は、ステップs2においてライト側データストローブ信号wDQSの位相について適切な値が求められるまでこれを繰り返す。メモリ制御装置4は、ステップs2おいてライト側データストローブ信号wDQSの位相について適切な値が求められると(ステップs60のYes)、ステップs3を実行し、その後ステップs1を実行する。
以上のように、半導体装置1は詳細に説明されたが、上記した説明は、全ての局面において例示であって、この発明がそれに限定されるものではない。また、上述した各種変形例は、相互に矛盾しない限り組み合わせて適用可能である。そして、例示されていない無数の変形例が、この発明の範囲から外れることなく想定され得るものと解される。