以下に、本願の開示する信号制御回路、情報処理装置及び信号制御方法の実施例を図面に基づいて詳細に説明する。なお、以下の実施例により本願の開示する信号制御回路、情報処理装置及び信号制御方法が限定されるものではない。
図1は、情報処理装置の概略構成図である。本実施例に係る情報処理装置は、チップセット100、Dual Inline Memory Module(DIMM)2、及びCentral Processing Unit(CPU)3を有する。
チップセット100は、メモリコントローラ10を搭載する。そして、メモリコントローラ10は、メモリインタフェース回路1を有する。
DIMM2は、記憶媒体であるDRAM(Dynamic Random Access Memory)を有する記憶装置である。DIMM2は、データのリード要求及びクロック信号(CLK)を後述するメモリインタフェース回路1から受信する。そして、DIMM2は、受信したクロック信号(CLK)からデータストローブ(DQS)信号を生成する。そして、DIMM2は、DQS信号をデータ(DQ)信号とともにメモリインタフェース回路1へ送信する。
CPU3は、DIMM2からデータを読み出す命令であるリード要求のコマンドをチップセット100上のメモリコントローラ10へ送信する。そして、CPU3は、リード要求で指定したデータをメモリコントローラ10から受信する。その後、CPU3の演算処理部31は、受信したデータに対して処理を実行する。
メモリコントローラ10は、リード要求のコマンドをCPU3から受信する。そして、メモリコントローラ10は、内部クロック信号を生成し、生成した内部クロック信号とともにリード要求をメモリインタフェース回路1に対して送信する。その後、メモリコントローラ10は、メモリインタフェース回路1が取り込んだデータを取得する。そして、メモリコントローラ10は、取得したデータをCPU3へ送信する。
メモリインタフェース回路1は、リード要求をメモリコントローラ10から受信する。さらに、メモリインタフェース回路1は、内部クロック信号をメモリコントローラ10から受信する。そして、メモリインタフェース回路1は、リード要求とともにクロック(CK)信号をDIMM2へ送信する。
その後、メモリインタフェース回路1は、データストローブ(DQS)信号及びデータ(DQ)信号を受信する。このDQS信号が、「参照信号」の一例にあたる。
次に、メモリインタフェース回路1は、DQS信号に遅延を与えて内部クロック信号との同期をとる。この内部クロック信号が、「基準信号」の一例にあたる。
具体的には、メモリインタフェース回路1は、DQS信号の立上りとDQS信号に固定遅延を与えた信号の立上りが内部クロック信号の立下りの前後にくるように、DQS信号に遅延を与える。これにより、メモリインタフェース回路1は、DQS信号の立上りの位相と内部クロック信号の位相とを一致させる遅延量を求める。この遅延量を「立上り側遅延量」という。また、メモリインタフェース回路1は、DQS信号の立下りとDQS信号に固定遅延を与えた信号の立下りが内部クロック信号の立下りの前後にくるように、DQS信号に遅延を与える。これにより、メモリインタフェース回路1は、DQS信号の立下りの位相と内部クロック信号の位相とを一致させる遅延量を求める。この遅延量を「立下り側遅延量」という。
ここで、メモリインタフェース回路1は、DQ信号をDQS信号の立上りのタイミングと立下りのタイミングの2つのタイミングで取り込む。すなわち、DQ信号には、DQS信号の立上りのタイミングで取り込まれる信号成分と、DQS信号の立下りのタイミングで取り込まれる信号成分とを有する。そして、DQS信号の立上りと立下りは交互に到来するので、DQS信号の立上りのタイミングで取り込まれる信号成分とDQS信号の立下りのタイミングで取り込まれる信号成分とは、DQ信号において交互に繰り返されることになる。すなわち、これらの信号成分の一方をDQ信号の偶数番目のデータとすると他方は奇数番目のデータとなる。そこで、以下では、説明の都合上、DQS信号の立上りのタイミングで取り込まれる信号成分を、偶数番目のデータとして「EVEN成分」といい、DQS信号の立下りのタイミングで取り込まれる信号成分を、奇数番目のデータとして「ODD成分」という。
そして、メモリインタフェース回路1は、DQ信号のEVEN成分に立上り側遅延量を与える。そして、内部クロック信号を用いて、立上り側遅延量を与えたDQ信号のEVEN成分からデータを取り込む。また、メモリインタフェース回路1は、DQ信号のODD成分に立下り側遅延量を与える。そして、内部クロック信号を用いて、立下り側遅延量を与えたDQ信号のODD成分からデータを取り込む。その後、メモリインタフェース回路1は、取り込んだデータをCPU3へ送信する。このように、DQS信号のクロック取り扱われるデータを、内部クロックで取り扱えるデータへ変換することを、「クロックドメインチェンジ」と呼ぶことがある。
図2を参照して、本実施例に係るメモリインタフェース回路1の詳細を説明する。図2は、実施例1に係るメモリインタフェース回路及び情報処理装置のブロック図である。図2では、クロックドメインチェンジの機能について説明するため、例えば、DIMM2へのクロック(CLK)信号の送信などの機能については省略してある。
図2に示すように、本実施例に係るメモリインタフェース回路1は、立上側位相比較回路11、EVEN成分選択部13、可変遅延付加部14及びデータ取込部15を有する。また、メモリインタフェース回路1は、立下側位相比較回路12、位相反転部21、ODD成分選択部22、可変遅延付加部23及びデータ取込部24を有する。
立上側位相比較回路11は、内部クロック信号の立下りとDQS信号の立上りのタイミングを合わせるための遅延量を求める回路である。以下に、立上側位相比較回路11の詳細について説明する。
立上側位相比較回路11は、可変遅延付加部111、固定遅延付加部112、ラッチ113、位相判定部114及び可変遅延制御部115を有する。この立上側位相比較回路11が、「第1位相差検出部」の一例にあたる。
可変遅延付加部111は、DQS信号をDIMM2から受信する。また、可変遅延付加部111は、DQS信号に与える遅延量を指定する可変遅延設定値を可変遅延制御部115から受ける。そして、可変遅延付加部111は、可変遅延設定値で指定されるステップ数分の遅延量をDQS信号に与える。ここで、ステップとは、予め決められた遅延量をDQS信号に与える単位である。すなわち、可変遅延付加部111は、可変遅延制御部115から受信したステップ数に予め決められた遅延量を乗算した値を遅延量としてDQS信号に与える。以下では、可変遅延付加部111が与える遅延量を「立上用可変遅延量」という。そして、可変遅延付加部111は、立上用可変遅延量を与えたDQS信号をラッチ113及び固定遅延付加部112へ出力する。
固定遅延付加部112は、立上用可変遅延量が与えられたDQS信号の入力を可変遅延付加部111から受ける。そして、固定遅延付加部112は、立上用可変遅延量が与えられたDQS信号に予め決められた遅延量を与える。以下では、固定遅延付加部112が与える遅延量を「立上用固定遅延量」という。その後、固定遅延付加部112は、立上用可変遅延量及び立上用固定遅延量が付加されたDQS信号をラッチ113へ出力する。
ラッチ113は、立上用可変遅延量が与えられたDQS信号の入力を可変遅延付加部111から受ける。また、ラッチ113は、立上用可変遅延量及び立上用固定遅延量が付加されたDQS信号の入力を固定遅延付加部112から受ける。以下では、可変遅延付加部111から出力された信号を「立上用先行信号」と呼び、固定遅延付加部112から出力された信号を「立上用後行信号」と呼ぶ。
また、ラッチ113は、内部クロック信号の入力をクロック発生部40から受ける。さらに、ラッチ113は、立上用インヒビット(Inhibit:IH)信号の入力を可変遅延制御部115から受ける。
ラッチ113は、立上用IH信号がLowの場合、内部クロック信号の立下りのタイミングで立上用先行信号及び立上用後行信号の位相情報を取り込む。本実施例では、ラッチ113は、信号がHighレベルの場合、位相情報を「1」として取り込み、信号がLowレベルの場合、位相情報を「0」として取り込む。例えば、内部クロック信号が立下りのタイミングで、立上用先行信号がHighで、立上用後行信号がLowの場合、立上用先行信号の位相情報として「1」を取り込み、立上用後行信号の位相情報として「0」を取り込む。
ここで、図3を参照して、ラッチ113による位相情報の取得について説明する。図3は、立上用先行信号及び立上用後行信号の位相情報の取得を表す図である。図3の1番上のグラフが内部クロック信号を表す。また、上から2番目のグラフが立上用IH信号を表す。そして、図3におけるグラフ(a)及びグラフ(b)のグラフ対201〜204において、グラフ(a)が立上用先行信号を表し、グラフ(b)が立上用後行信号を表す。グラフ対201〜204は、それぞれ立上用先行信号及び立上用後行信号の組の位相の状態が異なる場合を示している。
ラッチ113は、IH信号がLowの状態で内部クロック信号の立下りのタイミングで立上用先行信号及び立上用後行信号の値を取得する。すなわち、ラッチ113は、タイミング205で立上用先行信号及び立上用後行信号の値を取得する。
グラフ対201の場合、立上用先行信号及び立上用後行信号のいずれもHighであり、ラッチ113は、位相情報としていずれも「1」を取得する。また、グラフ対202の場合、立上用先行信号はHighであり、立上用後行信号はLowである。すなわち、ラッチ113は、立上用先行信号の位相情報として「1」を取得し、立上用後行信号の位相情報として「0」を取得する。また、グラフ対203の場合、立上用先行信号及び立上用後行信号のいずれもLowであり、ラッチ113は、位相情報としていずれも「0」を取得する。また、グラフ対204の場合、立上用先行信号はLowであり、立上用後行信号はHighである。すなわち、ラッチ113は、立上用先行信号の位相情報として「0」を取得し、立上用後行信号の位相情報として「1」を取得する。
そして、ラッチ113は、立上用先行信号及び立上用後行信号の位相情報を位相判定部114へ出力する。
位相判定部114は、位相情報の組み合わせに対応する位相状態を記憶している。例えば、位相判定部114は、図4で表される位相判定テーブル210を記憶している。図4は、位相判定テーブルの一例の図である。図4では、位相情報を2ビットの情報で示す。位相情報は、2ビットのうち、上位ビットが立上用後行信号の値を表し、下位ビットが立上用先行信号の値を表す。
位相判定部114は、立上用先行信号及び立上用後行信号の位相情報の入力をラッチ113から受ける。そして、位相判定部114は、受信した位相情報の組み合わせに対応する位相状態を位相判定テーブル210から取得する。その後、位相判定部114は、取得した位相状態を可変遅延制御部115へ出力する。以下では、DQS信号の位相が内部クロック信号の位相に比べて遅れている位相状態を、「位相遅延状態」という。また、DQS信号の位相がクロック信号の位相に比べて進んでいる位相状態を、「位相前進状態」という。また、DQS信号の位相とクロック信号の位相とが一致している位相状態を、「位相一致状態」という。さらに、DQS信号の位相とクロック信号の位相とが本来発生しないはずの異常状態となっている状態を「位相異常状態」という。
可変遅延制御部115は、位相状態の入力を位相判定部114から受ける。そして、可変遅延制御部115は、位相遅延状態の場合、DQS信号の位相を1ステップ分前進させる可変遅延設定値を求める。すなわち、可変遅延制御部115は、可変遅延付加部111へ通知したステップ数から1を減算したステップ数を可変遅延設定値とする。そして、可変遅延制御部115は、求めた可変遅延設定値を可変遅延付加部111へ送信する。
また、可変遅延制御部115は、位相前進状態の場合、現在のDQS信号の位相からさらに予め決められた1ステップ分遅らせる可変遅延設定値を求める。すなわち、可変遅延制御部115は、可変遅延付加部111へ通知したステップ数に1を加算したステップ数を可変遅延設定値とする。そして、可変遅延制御部115は、求めた可変遅延設定値を可変遅延付加部111へ送信する。
また、可変遅延制御部115は、位相一致状態の場合、可変遅延設定値を保持する指示を可変遅延付加部111へ送信する。
これに対して、位相状態が位相異常状態の場合、可変遅延制御部115は、DQS信号の位相の調整を行わない。
さらに、可変遅延制御部115は、立上用先行信号及び立上用後行信号の位相情報からIH信号を生成する。そして、可変遅延制御部115は、立上用IH信号をラッチ113へ出力する。
EVEN成分選択部13は、DQ信号の入力をDIMM2から受ける。さらに、EVEN成分選択部13は、DQS信号の入力をDIMM2から受ける。
そして、EVEN成分選択部13は、DQS信号の立上りのタイミングでDQ信号からEVEN成分を取得する。その後、EVEN成分選択部13は、取得したDQ信号のEVEN成分を可変遅延付加部14へ出力する。このEVEN成分選択部13が、「取得部」の一例にあたる。
可変遅延付加部14は、位相一致状態とするための立上用可変遅延量を可変遅延付加部111から取得する。
また、可変遅延付加部14は、DQ信号のEVEN成分の入力をEVEN成分選択部13から受ける。
そして、可変遅延付加部14は、一致した位相状態となる立上用可変遅延量である立上り側遅延量をDQ信号のEVEN成分に付加する。その後、可変遅延付加部14は、立上り側遅延量を付加したDQ信号のEVEN成分をデータ取込部15へ送信する。この可変遅延付加部14が、「第1遅延付加部」の一例にあたる。また、立上り側遅延量が、「第1の遅延」にあたる。
データ取込部15は、立上り側遅延量が付加されたDQ信号のEVEN成分の入力を可変遅延付加部14から受ける。また、データ取込部15は、可変遅延制御部115からIH信号の入力を受ける。さらに、データ取込部15は、クロック発生部40から内部クロック信号の入力を受ける。
そして、データ取込部15は、立上用IH信号がLowになっている間の内部クロック信号の立下りのタイミングで、DQ信号のEVEN成分からデータを取り込む。その後、データ取込部15は、DQ信号のEVEN成分から取り込んだデータをCPU3へ出力する。
次に、立下り側の位相調整について説明する。位相反転部21は、DQS信号の入力をDIMM2から受ける。次に、位相反転部21は、受信したDQS信号の位相を反転させる。そして、位相反転部21は、位相を反転させたDQS信号を可変遅延付加部121及びODD成分選択部22へ出力する。以下では、位相が反転したDQS信号を「反転DQS信号」という。
立下側位相比較回路12は、内部クロック信号の立下りとDQS信号の立下りのタイミングを合わせるための遅延量を求める回路である。以下に、立下側位相比較回路12の詳細について説明する。
立下側位相比較回路12は、可変遅延付加部121、固定遅延付加部122、ラッチ123、位相判定部124、可変遅延制御部125及び位相反転部126を有する。この立下側位相比較回路12が、「第2位相差検出部」の一例にあたる。
可変遅延付加部121は、反転DQS信号を位相反転部21から受信する。また、可変遅延付加部121は、反転DQS信号に与える遅延量を指定する可変遅延設定値を可変遅延制御部125から受ける。そして、可変遅延付加部121は、可変遅延設定値で指定されるステップ数分の遅延量を反転DQS信号に与える。以下では、可変遅延付加部121が与える遅延量を「立下用可変遅延量」という。そして、可変遅延付加部121は、立下用可変遅延量を与えた反転DQS信号をラッチ123及び固定遅延付加部122へ出力する。
固定遅延付加部122は、立下用可変遅延量が与えられた反転DQS信号の入力を可変遅延付加部121から受ける。そして、固定遅延付加部122は、立下用可変遅延量が与えられた反転DQS信号に予め決められた遅延量を与える。以下では、固定遅延付加部122が与える遅延量を「立下用固定遅延量」という。その後、固定遅延付加部122は、立下用可変遅延量及び立下用固定遅延量が付加された反転DQS信号をラッチ123へ出力する。
ラッチ123は、立下用可変遅延量が与えられた反転DQS信号の入力を可変遅延付加部121から受ける。また、ラッチ123は、立下用可変遅延量及び立下用固定遅延量が付加された反転DQS信号の入力を固定遅延付加部122から受ける。以下では、可変遅延付加部121から出力された信号を「立下用先行信号」と呼び、固定遅延付加部122から出力された信号を「立下用後行信号」と呼ぶ。
また、ラッチ123は、内部クロック信号の入力をクロック発生部40から受ける。さらに、ラッチ123は、立下用IH信号の入力を位相反転部126から受ける。立下用IH信号は、後述する可変遅延制御部125が出力する立上用IH信号の位相を反転した信号である。
ラッチ123は、立下用IH信号がLowの場合、内部クロック信号の立下りのタイミングで立下用先行信号及び立下用後行信号の位相情報を取り込む。本実施例では、ラッチ123は、信号がHighレベルの場合、位相情報を「1」として取り込み、信号がLowレベルの場合、位相情報を「0」として取り込む。例えば、内部クロック信号が立下りのタイミングで、立下用先行信号がHighで、立下用後行信号がLowの場合、立下用先行信号の位相情報として「1」を取り込み、立下用後行信号の位相情報として「0」を取り込む。
ここで、ラッチ123が用いる反転DQS信号の位相はラッチ113で用いるDQS信号の位相を反転させたものである。そして、後述するように、ラッチ123が用いる立下用IH信号は、可変遅延制御部125が生成したIH信号の位相を反転させたものである。すなわち、ラッチ123は、立下用IH信号がLowの状態における内部クロック信号の立下りのタイミングで反転DQS信号の立上りの位相状態を取得することで、DQS信号の立下りの位相状態を取得することができる。
ここで、図5を参照して、ラッチ123による位相情報の取得について説明する。図5は、立下用先行信号及び立下用後行信号の位相情報の取得を表す図である。図5の1番上のグラフが内部クロック信号を表す。また、上から2番目のグラフが立下用IH信号を表す。そして、図5におけるグラフ(c)及びグラフ(d)のグラフ対221〜224において、グラフ(c)が立下用先行信号を表し、グラフ(d)が立下用後行信号を表す。グラフ対221〜224は、それぞれ立下用先行信号及び立下用後行信号の組の位相の状態が異なる場合を示している。
ラッチ123は、IH信号がLowの状態で内部クロック信号の立下りのタイミングで立下用先行信号及び立下用後行信号の値を取得する。すなわち、ラッチ123は、タイミング225で立下用先行信号及び立下用後行信号の値を取得する。
グラフ対221の場合、立下用先行信号及び立下用後行信号のいずれもHighであり、ラッチ123は、位相情報としていずれも「1」を取得する。また、グラフ対222の場合、立下用先行信号はHighであり、立下用後行信号はLowである。すなわち、ラッチ123は、立下用先行信号の位相情報として「1」を取得し、立下用後行信号の位相情報として「0」を取得する。また、グラフ対223の場合、立下用先行信号及び立下用後行信号のいずれもLowであり、ラッチ123は、位相情報としていずれも「0」を取得する。また、グラフ対224の場合、立下用先行信号はLowであり、立下用後行信号はHighである。すなわち、ラッチ123は、立下用先行信号の位相情報として「0」を取得し、立下用後行信号の位相情報として「1」を取得する。
そして、ラッチ123は、立下用先行信号及び立下用後行信号の位相情報を位相判定部124へ出力する。
位相判定部124は、位相情報の組み合わせに対応する位相状態を記憶している。例えば、位相判定部124も、図4の位相判定テーブル210を記憶している。上述したように反転DQS信号の位相はDQS信号の位相を反転させたものであり、立下用IH信号は可変遅延制御部125が生成した立上用IH信号の位相を反転させたものである。そのため、位相判定部124は、立下用先行信号及び立下用後行信号の位相情報を用いた判定論理として位相判定部114が用いる判定論理と同様となる。このように、判定論理を一致させることで回路設計時間を短縮することができる。
ただし、DQS信号の位相の反転や立上用IH信号の位相の反転を行わずに、位相判定部124における立下り用の判定論理として、立上り用の判定論理と異なる位相判定テーブルを用いることで、同様の動作が可能である。例えば、立下り用の位相判定テーブルは、立下用先行信号及び立下用後行信号の位相信号を並べた2ビットの位相情報が、「00」の場合に「位相前進状態」、「10」の場合に「位相一致状態」、「11」の場合に「位相遅延状態」、「01」の場合に「位相異常状態」となる判定論理を有するテーブルである。
位相判定部124は、立下用先行信号及び立下用後行信号の位相情報の入力をラッチ123から受ける。そして、位相判定部124は、受信した位相情報の組み合わせに対応する位相状態を位相判定テーブル210から取得する。その後、位相判定部124は、取得した位相状態を可変遅延制御部125へ出力する。
可変遅延制御部125は、位相状態の入力を位相判定部124から受ける。そして、可変遅延制御部125は、位相遅延状態の場合、反転DQS信号の位相を1ステップ分前進させる可変遅延設定値を求める。すなわち、可変遅延制御部125は、可変遅延付加部121へ通知したステップ数から1を減算したステップ数を可変遅延設定値とする。そして、可変遅延制御部125は、求めた可変遅延設定値を可変遅延付加部121へ送信する。
また、可変遅延制御部125は、位相前進状態の場合、現在の反転DQS信号の位相からさらに1ステップ分遅延させる可変遅延設定値を求める。すなわち、可変遅延制御部125は、可変遅延付加部121へ通知したステップ数に1を加算したステップ数を可変遅延設定値とする。そして、可変遅延制御部125は、求めた可変遅延設定値を可変遅延付加部121へ送信する。
また、可変遅延制御部125は、位相一致状態の場合、可変遅延設定値を保持する指示を可変遅延付加部121へ送信する。
これに対して、位相状態が位相異常状態の場合、可変遅延制御部125は、反転DQS信号の位相の調整を行わない。
さらに、可変遅延制御部125は、立下用先行信号及び立下用後行信号の位相情報からIH信号を生成する。そして、可変遅延制御部125は、IH信号を位相反転部126へ出力する。
位相反転部126は、立下用IH信号の入力を可変遅延制御部125から受ける。そして、位相反転部126は、受信した立下用IH信号の位相を反転させる。そして、位相反転部126は、位相を反転させた立下用IH信号をラッチ123及びデータ取込部24へ出力する。
ODD成分選択部22は、DQ信号の入力をDIMM2から受ける。さらに、ODD成分選択部22は、反転DQS信号の入力を位相反転部21から受ける。
そして、ODD成分選択部22は、反転DQS信号の立上りのタイミングでDQ信号のODD成分を取得する。その後、ODD成分選択部22は、取得したDQ信号のODD成分を可変遅延付加部23へ出力する。このODD成分選択部22が、「取得部」の一例にあたる。
可変遅延付加部23は、反転DQS信号の立上りの位相と内部クロック信号の立下りの位相とが一致した位相状態となる立下用可変遅延量である立下り側遅延量を可変遅延付加部121から取得する。言い換えれば、可変遅延付加部23は、DQS信号の立下りの位相と内部クロック信号の立下りの位相とが一致した位相状態となるような立下用可変遅延量を可変遅延付加部121から取得する。以下では、DQS信号の立下りの位相と内部クロック信号の立下りの位相とが一致した位相状態を「位相一致状態」として説明する。
また、可変遅延付加部23は、DQ信号のODD成分の入力をODD成分選択部22から受ける。
そして、可変遅延付加部23は、立下り側遅延量をDQ信号のODD成分に付加する。その後、可変遅延付加部23は、立下り側遅延量を付加したDQ信号のODD成分をデータ取込部24へ送信する。この可変遅延付加部23が、「第2遅延付加部」の一例にあたる。また、立下り側遅延量が、「第2の遅延」の一例にあたる。
データ取込部24は、立下り側遅延量が付加されたDQ信号のODD成分の入力を可変遅延付加部23から受ける。また、データ取込部24は、位相反転部126から反転IH信号の入力を受ける。さらに、データ取込部24は、クロック発生部40から内部クロック信号の入力を受ける。
そして、データ取込部24は、立下用IH信号がLowになっている間の内部クロック信号の立下りのタイミングで、DQ信号のODD成分からデータを取り込む。その後、データ取込部24は、DQ信号のODD成分から取り込んだデータをCPU3へ出力する。
次に、図6を参照して、本実施例に係るメモリコントローラ10によるデータの取り込み処理の全体的な流れについて説明する。図6は、実施例1に係るメモリコントローラによるデータの取り込み処理のフローチャートである。図6のフローチャートにおいて、ステップS1〜S4、S9がDQS信号の立上りを用いたデータの取り込み処理である。一方、ステップS5〜S9がDQS信号の立下りを用いたデータの取り込み処理である。図6に示すフローチャートでは、ステップS1〜S4、S9及びステップS5〜S9それぞれの処理が並行して行われることを示している。
ラッチ113は、立上用先行信号及び立上用後行信号の入力を可変遅延付加部111及び固定遅延付加部112から受ける。そして、ラッチ113は、立上用先行信号及び立上用後行信号それぞれの位相状態を取得する。その後、ラッチ113は、立上用先行信号及び立上用後行信号それぞれの位相状態を位相判定部114へ出力する。位相判定部114は、ラッチ113から受信した立上用先行信号及び立上用後行信号それぞれの位相状態から、DQS信号の立上りの位相が一致しているか否かを判定する(ステップS1)。
位相が一致していない場合(ステップS1:否定)、可変遅延制御部115は、立上の可変遅延設定値の調整を行う(ステップS2)。その後、立上側位相比較回路11は、ステップS1へ処理を戻す。
これに対して、位相が一致している場合(ステップS1:肯定)、可変遅延付加部14は、DQ信号のEVEN成分に、DQS信号の立上りと内部クロック信号との位相を一致させるための立上用可変遅延量を付加する(ステップS3)。
データ取込部15は、可変遅延制御部115により生成された立上用IH信号がLowの状態における内部クロック信号の立下りのタイミングで、立上用可変遅延量が付加されたDQ信号のEVEN成分からデータを取り込む(ステップS4)。
一方、ラッチ123は、反転DQS信号から生成された立下用先行信号及び立下用後行信号の入力を可変遅延付加部121及び固定遅延付加部122から受ける。そして、ラッチ123は、立下用先行信号及び立下用後行信号それぞれの位相状態を取得する。その後、ラッチ123は、立下用先行信号及び立下用後行信号それぞれの位相状態を位相判定部124へ出力する。位相判定部124は、ラッチ123から受信した立下用先行信号及び立下用後行信号それぞれの位相状態から、DQS信号の立下りの位相が一致しているか否かを判定する(ステップS5)。
位相が一致していない場合(ステップS5:否定)、可変遅延制御部125は、立下の可変遅延設定値の調整を行う(ステップS6)。その後、立下側位相比較回路12は、ステップS5へ戻る。
これに対して、位相が一致している場合(ステップS5:肯定)、可変遅延付加部23は、DQ信号のODD成分に、DQS信号の立下りと内部クロック信号との位相を一致させる立下用可変遅延量を付加する(ステップS7)。
データ取込部24は、可変遅延制御部125により生成されたIH信号の位相を反転させた信号がLowの状態における内部クロック信号の立下りのタイミングで、立下用可変遅延量が付加されたDQ信号のODD成分からデータを取り込む(ステップS8)。
その後、CPU3は、DQ信号のEVEN成分から取り込まれたデータ及びDQ信号のODD成分から取り込まれたデータを取得する(ステップS9)。これにより、CPU3は、DIMM2からデータを読み出すことができる。
次に、図7を参照して、DQS信号の位相が内部クロック信号(CLK)に対し、進んでいる場合の位相調整処理の全体的な流れを説明する。図7は、DQS信号の位相が進んでいる場合の位相調整処理のタイミングチャートである。
図7の横軸は時間の経過を表す。CLKは、内部クロック信号を表す。DQSは、DQS信号を表す。信号301は、立上用先行信号を表す。また、信号302は、立上用後行信号を表す。また、信号303は、立上用IH信号を表す。また、立上設定値は、立上り側の位相調整に用いる可変遅延設定値を表す。また、反転DQSは、反転DQS信号を表す。また、信号304は、立下用先行信号を表す。また、信号305は、立下用後行信号を表す。また、信号306は、立下用IH信号を表す。また、立下設定値は、立下り側の位相調整に用いる可変遅延設定値を表す。
信号301及び信号302は、立上用IH信号303がLowの場合に値が取得される。すなわち、B0、B1、及びB2のタイミングで、ラッチ113は、信号301及び信号302の値を取得する。信号304及び信号305は、立下用IH信号306がLowの場合に値が取得される。すなわち、A0、A1、及びA2のタイミングで、ラッチ123は、信号304及び信号305の値を取得する。
立上り側位相調整では、可変遅延付加部111は、信号301に可変遅延設定値が「n−1」分の立上用可変遅延量を有する可変遅延を与えている(ステップS10)。信号302は、信号301に固定遅延が付加された信号となっている。
ラッチ113は、信号303がLowで且つ内部クロック信号の立下りのタイミングを検知し位相情報の取得を行う(ステップS11)。すなわち、タイミングB0において、ラッチ113は、信号301及び信号302の値を取得する(ステップS12)。この場合、ラッチ113は、信号301の値として「1」を取得し、信号302の値として「1」を取得する。位相判定部114は、「11」という位相情報の組の入力をラッチ113から受ける(ステップS13)。ここで、位相情報の組を2ビット表現する。「11」は、上位ビットが立上用後行信号の値を表し、下位ビットが立上用先行信号の値を表す。以下では、先行信号及び後行信号の位相情報の組を、単に「位相情報」という場合がある。
位相判定部114は、位相前進状態であると判定する。そして、位相判定部114は、位相前進状態である旨を可変遅延制御部115へ通知する(ステップS14)。可変遅延制御部115は、可変遅延設定値に1を加算し新たな可変遅延設定値を求める。図7では、可変遅延制御部115は、「n−1」であった可変遅延設定値に1を加算して、新たな可変遅延設定値として「n」を求めている。そして、可変遅延制御部115は、求めた可変遅延設定値を可変遅延付加部111へ通知する(ステップS15)。
可変遅延付加部111は、可変遅延設定値の入力を可変遅延制御部115から受けて、1ステップ分遅延量を増加させた立上用可変遅延量をDQS信号に与える(ステップS16)。ここで、立上用可変遅延量は前回加えた値に比べて増えているので、信号301及び302の遅延は増加する。
次に、ラッチ113は、信号303がLowで且つ内部クロック信号の立下りのタイミングを検知し位相情報の取得を行う(ステップS17)。すなわち、タイミングB1において、ラッチ113は、信号301及び信号302の値を取得する(ステップS18)。この場合、ラッチ113は、信号301の値として「1」を取得し、信号302の値として「0」を取得する。位相判定部114は、「01」という位相情報の入力をラッチ113から受ける(ステップS19)。
位相判定部114は、位相情報が「01」であることから、DQS信号の位相が一致したと判定する(ステップS20)。そして、位相判定部114は、一致した位相状態である旨を可変遅延制御部115へ通知する。可変遅延制御部115は、位相が一致したことから、可変遅延量の保持を可変遅延付加部14へ指示する(ステップS21)。
一方、立下り側位相調整では、可変遅延付加部121は、信号304に可変遅延設定値が「m−1」分の立下用可変遅延量を有する可変遅延を与えている(ステップS22)。信号305は、信号304に固定遅延が付加された信号となっている。
ラッチ123は、信号306がLowで且つ内部クロック信号の立下りのタイミングを検知し位相情報の取得を行う(ステップS23)。すなわち、タイミングA0において、ラッチ123は、信号304及び信号305の値を取得する(ステップS24)。この場合、ラッチ123は、信号304の値として「1」を取得し、信号305の値として「1」を取得する。位相判定部124は、「11」という位相情報をラッチ123から受ける(ステップS25)。
位相判定部124は、進んだ位相状態であると判定する。そして、位相判定部124は、進んだ位相状態である旨を可変遅延制御部125へ通知する(ステップS26)。可変遅延制御部125は、可変遅延設定値に1を加算し新たな可変遅延設定値を求める。図7では、可変遅延制御部125は、「m−1」であった可変遅延設定値に1を加算して、新たな可変遅延設定値として「m」を求めている。そして、可変遅延制御部125は、求めた可変遅延設定値を可変遅延付加部121へ通知する(ステップS27)。
可変遅延付加部121は、可変遅延設定値の入力を可変遅延制御部125から受けて、1ステップ分遅延量を増加させた立下用可変遅延量をDQS信号に与える(ステップS28)。ここで、立下用可変遅延量は前回加えたものに比べて増えているので、信号304及び305の遅延は増加する。
続いて、ラッチ123は、信号306がLowで且つ内部クロック信号の立下りのタイミングを検知し位相情報の取得を行う(ステップS29)。すなわち、タイミングA1において、ラッチ123は、信号304及び信号305の値を取得する(ステップS30)。この場合、ラッチ123は、信号304の値として「1」を取得し、信号305の値として「0」を取得する。位相判定部124は、「01」という位相情報の入力をラッチ123から受ける(ステップS31)。
位相判定部124は、位相情報が「01」であることから、DQS信号の位相が一致したと判定する(ステップS32)。そして、位相判定部124は、一致した位相状態である旨を可変遅延制御部125へ通知する。可変遅延制御部125は、立下用可変遅延量の保持を可変遅延付加部121へ指示する(ステップS33)。
次に、図8を参照して、DQS信号の位相が内部クロック信号(CLK)に対し、遅れている場合の位相調整処理の全体的な流れを説明する。図8は、DQS信号の位相が遅れている場合の位相調整処理のタイミングチャートである。
図8の横軸は時間の経過を表す。また、信号311は、立上用先行信号を表す。また、信号312は、立上用後行信号を表す。また、信号313は、立上用IH信号を表す。また、信号314は、立下用先行信号を表す。また、信号315は、立下用後行信号を表す。また、信号316は、立下用IH信号を表す。信号311及び信号312は、立上用IH信号313がLowの場合に値が取得される。すなわち、B0、B1、及びB2のタイミングで、ラッチ113は、信号311及び信号312の値を取得する。信号314及び信号315は、立下用IH信号316がLowの場合に値が取得される。すなわち、A0、A1、及びA2のタイミングで、ラッチ123は、信号314及び信号315の値を取得する。
立上り側位相調整では、可変遅延付加部111は、信号311に可変遅延設定値が「n+1」分の立上用可変遅延量を有する可変遅延を与えている(ステップS41)。信号312は、信号311に固定遅延が付加された信号となっている。
ラッチ113は、信号313がLowで且つ内部クロック信号の立下りのタイミングを検知し位相情報の取得を行う(ステップS42)。すなわち、タイミングB0において、ラッチ113は、信号311及び信号312の値を取得する(ステップS43)。この場合、ラッチ113は、信号311の値として「0」を取得し、信号312の値として「0」を取得する。位相判定部114は、「00」という位相情報の入力をラッチ113から受ける(ステップS44)。
位相判定部114は、遅れた位相状態であると判定する。そして、位相判定部114は、遅れた位相状態である旨を可変遅延制御部115へ通知する(ステップS45)。可変遅延制御部115は、可変遅延設定値から1を減算し新たな可変遅延設定値を求める。図8では、可変遅延制御部115は、「n+1」であった可変遅延設定値から1を減算して、新たな可変遅延設定値として「n」を求めている。そして、可変遅延制御部115は、求めた可変遅延設定値を可変遅延付加部111へ通知する(ステップS46)。
可変遅延付加部111は、立上りの可変遅延設定値の入力を可変遅延制御部115から受けて、1ステップ分遅延量を減少させた遅延をDQS信号に与える(ステップS47)。ここで、立上用可変遅延量は前回加えた値に比べて減っているので、信号311及び312の遅延は減少する。
続いて、ラッチ113は、信号313がLowで且つ内部クロック信号の立下りのタイミングを検知し位相情報の取得を行う(ステップS48)。すなわち、タイミングB1において、ラッチ113は、信号311及び信号312の値を取得する(ステップS49)。この場合、ラッチ113は、信号311の値として「1」を取得し、信号312の値として「0」を取得する。位相判定部114は、「01」という位相情報の入力をラッチ113から受ける(ステップS50)。
位相判定部114は、位相情報が「01」であることから、一致した位相状態であると判定する(ステップS51)。そして、位相判定部114は、一致した位相状態である旨を可変遅延制御部115へ通知する。可変遅延制御部115は、位相が一致したことから、可変遅延量の保持を可変遅延付加部14へ指示する(ステップS52)。
一方、立下り側位相調整では、可変遅延付加部121は、信号314に可変遅延量が「m+1」分の立下用可変遅延量を有する可変遅延を与えている(ステップS53)。信号315は、信号314に固定遅延が付加された信号となっている。
ラッチ123は、信号316がLowで且つ内部クロック信号の立下りのタイミングを検知し位相情報の取得を行う(ステップS54)。すなわち、タイミングA0において、ラッチ123は、信号314及び信号315の値を取得する(ステップS55)。この場合、ラッチ123は、信号314の値として「0」を取得し、信号315の値として「0」を取得する。位相判定部124は、「00」という位相情報をラッチ123から受ける(ステップS56)。
そして、位相判定部124は、位相遅延状態であると判定する。そして、位相判定部124は、位相遅延状態である旨を可変遅延制御部125へ通知する(ステップS57)。可変遅延制御部125は、可変遅延設定値から1を減算し新たな可変遅延設定値を求める。図8では、可変遅延制御部125は、「m+1」であった可変遅延設定値から1を減算して、新たな可変遅延設定値として「m」を求めている。そして、可変遅延制御部125は、求めた可変遅延設定値を可変遅延付加部121へ通知する(ステップS58)。
可変遅延付加部121は、可変遅延設定値の入力を可変遅延制御部125から受けて、1ステップ分遅延量を減少させた立下用可変遅延量をDQS信号に与える(ステップS59)。ここで、立下用可変遅延量は前回加えた値に比べて減っているので、信号314及び315の遅延は減少する。
続いて、ラッチ123は、信号316がLowで且つ内部クロック信号の立下りのタイミングを検知し位相情報の取得を行う(ステップS60)。すなわち、タイミングA1において、ラッチ123は、信号314及び信号315の値を取得する(ステップS61)。この場合、ラッチ123は、信号314の値として「1」を取得し、信号315の値として「0」を取得する。位相判定部124は、「01」という位相情報をラッチ123から受ける(ステップS62)。
位相判定部124は、位相情報が「01」であることから、一致した位相状態であると判定する(ステップS63)。そして、位相判定部124は、一致した位相状態である旨を可変遅延制御部125へ通知する。可変遅延制御部125は、立下用可変遅延量の保持を可変遅延付加部121へ指示する(ステップS64)。
次に、図9〜11を参照して、本実施例に係るメモリインタフェース回路によるデューティ劣化時のタイミングマージンの確保について説明する。図9は、デューティが劣化していない状態での各信号のタイミングを表す図である。図10は、デューティ劣化時に立上りのタイミングのみで位相調整を行った場合の各信号のタイミングを表す図である。図11は、実施例1に係るメモリインタフェース回路を使用した場合のDuty劣化時の各信号のタイミングを表す図である。
まず、図9を参照して、デューティ劣化が無い状態について説明する。図9の各グラフは左端に記載している各信号に対応する信号を表している。CLKは、内部クロック信号である。DQSは、DQS信号である。DQは、DQ信号である。dqeは、DQ信号のEVEN成分である。dqoは、DQ信号のODD成分である。ddqsは、DQS信号に遅延を加えて立上りの位相を内部クロック信号に一致させた信号である。ddqeは、DQSの立上りの位相を内部クロック信号と一致させるためにDQS信号に加えた遅延と同じ遅延をdqeに加えた信号である。ddqoは、DQSの立上りの位相を内部クロック信号と一致させるためにDQS信号に加えた遅延と同じ遅延をdqoに加えた信号である。EVEN IHは、dqe用の立上用IH信号である。ODD IHは、dqo用の立上用IH信号である。DQEVENは、取り込まれたDQ信号のEVEN成分のデータである。DQODDは、取り込まれたDQ信号のODD成分のデータである。
さらに、P1より上方にある内部クロック信号以外の信号は、DQS信号を用いて動作を行うDQSドメイン内の信号である。また、P2より下方にある信号は、内部クロック信号を用いて動作を行う信号である。
DQS信号は、デューティ劣化が発生していないので、各周期における信号401のようにHigh及びLowの割合が等しくなっている。ここで、DQS信号に遅延量Xを付加することで、内部クロック信号と位相が一致したものとする。
まず、可変遅延付加部111は、DQS信号の立上りと内部クロック信号の位相を一致させる遅延量XをDQS信号に付加することで遅延402を与えてddqsを生成する。すなわち、ddqsの立上りと内部クロック信号との位相が一致する。
そして、タイミング403で、EVEN成分選択部13は、DQ信号のEVEN成分を抽出し、遷移404で示されるようにdqeを生成する。そして、可変遅延付加部14は、dqeに遅延量Xを付加することで遅延405を与えddqeを生成する。
その後、データ取込部15は、DQ信号のEVEN成分の立下用IH信号がLowの状態における内部クロック信号の立下りのタイミング406で、ddqeからデータを取り込む。ここで、遅延量Xは、DQS信号の立上りと内部クロック信号との位相を合わせることで求められた値であるので、DQS信号の立上りで抽出されるEVEN成分に対応するddqeでは、正確なタイミングマージンが確保される。そして、データ取込部15は、遷移407で示すようにddqeから取り込んだデータを取得する。
また、ODD成分選択部22は、タイミング408で、DQ信号のODD成分を抽出し、遷移409で示されるようにdqoを生成する。そして、可変遅延付加部23は、dqoに遅延量Xを付加することで遅延410を与えてddqoを生成する。
その後、データ取込部24は、DQ信号のODD成分の立下用IH信号がLowの状態における内部クロック信号の立下りのタイミング411で、ddqeからデータを取り込む。ここで、デューティ劣化が無いので立上り及び立下りの内部クロック信号に対する位相差は同じである。そのため、この場合、ddqeと同様にODD成分に対応するddqoにおいても、正確なタイミングマージン412が確保される。そして、データ取込部24は、遷移413で示すように、ddqeから取り込んだデータを取得する。
次に、図10を参照して、デューティ劣化が発生した状態で立上りのタイミングのみで位相を調整する方式で位相調整を行った場合について説明する。各信号は、図9と同様である。
この場合、DQS信号は、デューティ劣化が発生しており、信号420に示すように、HighとLowとの割合が崩れている。すなわち、DQS信号の立上り及び立下りの内部クロック信号に対する位相差が異なる。
この場合、可変遅延付加部111は、DQS信号の立上りと内部クロック信号の位相を一致させる遅延量XをDQS信号に付加することで遅延421を与えてddqsを生成する。すなわち、ddqsの立上りと内部クロック信号との位相が一致する。これに対して、DQS信号の立上り及び立下りの内部クロック信号に対する位相差が異なるため、遅延量Xを付加した場合、ddqsの立下りと内部クロック信号との位相は一致していない。
そして、可変遅延付加部14は、dqeに遅延量Xを付加することで遅延422を与えてddqeを生成する。この場合も、図9と同様にデータ取込部15は、ddqeからデータを取得する。
これに対して、可変遅延付加部23は、dqoに遅延量Xを付加することで遅延423を与えてddqoを生成する。しかし、ddqsの立下りと内部クロック信号との位相は一致していないので、遅延量Xを付加して生成されたddqoは、内部クロック信号に対する最適な位相からずれた位相を有する。そのため、ddqoが内部クロック信号に対する最適な位相を有する場合のタイミングマージン425に比較して、この場合のタイミングマージン426では、差分427分のマージンの減少が発生してしまう。マージンの減少が大きくなれば、タイミング424でddqoからデータを取得することが困難になってしまい、データ異常が発生してしまう。
次に、図11を参照して、デューティ劣化が発生した状態で実施例1のメモリインタフェース回路1を用いて位相調整を行った場合について説明する。ddqsrは、DQS信号に遅延を加えて立上りの位相を内部クロック信号の位相に一致させた信号である。ddqfは、反転DQS信号に遅延を加えて立下りの位相を内部クロック信号に一致させた信号である。その他の各信号は、図9と同様である。
この場合、DQS信号は、デューティ劣化が発生しており、信号430に示すように、HighとLowとの割合が等しくない。すなわち、DQS信号の立上り及び立下りの内部クロック信号に対する位相差が異なる。
この場合、可変遅延付加部111は、DQS信号の立上りと内部クロック信号の位相を一致させる遅延量XをDQS信号に付加することで遅延431を与えてddqsrを生成する。すなわち、ddqsrの立上りと内部クロック信号との位相が一致する。
そして、可変遅延付加部14は、dqeに遅延量Xを付加することで遅延433を与えてddqeを生成する。この場合も、図9と同様にデータ取込部15は、ddqeからデータを取得する。
これに対して、可変遅延付加部121は、DQS信号の立下りと内部クロック信号の位相を一致させる遅延量Yを反転DQS信号に付加することで遅延432を与えてddqsfを生成する。すなわち、ddqsfの立上りと内部クロック信号との位相が一致する。
そして、可変遅延付加部23は、dqoに遅延量Yを付加することで遅延434を与えてddqoを生成する。ここで、遅延量Yは、反転DQS信号の立上りと内部クロック信号との位相を合わせることで求められた値であるので、DQS信号の立下りで抽出されるODD成分に対応するddqoにおいて、正確なタイミングマージン436が確保される。そして、データ取込部15は、タイミング435でデータを取り込み、遷移437で示すようにddqeから取り込んだデータを取得する。
以上に説明したように、本実施例に係るメモリインタフェース回路は、DQS信号の立上りを用いてDQS信号と内部クロック信号との位相を一致させた場合の遅延を求める。そして、本実施例に係るメモリインタフェース回路は、求めた遅延をDQS信号の立上りで取り込まれるDQ信号の信号成分に与えて、内部クロック信号を用いてデータの取り込みを行う。また、本実施例に係るメモリインタフェース回路は、DQS信号の立下りを用いてDQS信号と内部クロック信号との位相を一致させた場合の遅延を求める。そして、本実施例に係るメモリインタフェース回路は、求めた遅延をDQS信号の立下りで取り込まれるDQ信号の信号成分に与えて、内部クロック信号を用いてデータの取り込みを行う。
これにより、DQS信号にデューティ劣化が発生しても、DQ信号の取り込みタイミングを適切に調整することができる。すなわち、タイミングマージンの減少を軽減でき、データ異常の発生を軽減することができる。言い換えれば、DQS信号の立上り及び立下りそれぞれに最適な位相でクロックドメインチェンジを行うことができる。
図12は、実施例2に係るメモリインタフェース回路及び情報処理装置のブロック図である。本実施例に係る情報処理システムは、立上用可変遅延量及び立下用可変遅延量を同じ位相比較回路を用いて求めることが実施例1と異なるものである。以下の説明では、実施例1と同じ機能を有する各部については説明を省略する。
位相比較回路16は、図2における立上側位相比較回路11及び立下側位相比較回路12の機能をまとめた回路である。動作の概要としては、位相比較回路16は、最初に立上側位相比較回路11と同様の動作を行い立上用可変遅延量を求め、次に立下側位相比較回路12と同様の動作を行い立下用可変遅延量を求める。以下に詳細を説明する。
位相比較回路16は、可変遅延付加部161、固定遅延付加部162、ラッチ163、位相判定部164、及び可変遅延制御部165を有する。さらに、位相比較回路16は、位相反転部166、エッジ切替部167、立上用可変遅延設定値保持部168、立下用可変遅延設定値保持部169、位相反転部171及びエッジ切替信号生成部170を有する。この位相比較回路16が、「切替位相差検出部」の一例にあたる。
可変遅延付加部161は、図2における可変遅延付加部111及び可変遅延付加部121と同様の動作を行う。
固定遅延付加部162は、図2における固定遅延付加部112及び固定遅延付加部122と同様の動作を行う。
ラッチ163は、立上りの位相判定を行う場合には、立上用IH信号の入力をエッジ切替部167から受ける。そして、ラッチ163は、図2におけるラッチ113と同様の動作を行う。また、立下りの位相判定を行う場合には、立下用IH信号の入力をエッジ切替部167から受ける。そして、ラッチ163は、図2におけるラッチ123と同様の動作を行う。
位相判定部164は、立上りの位相判定を行う場合、立上りのエッジを用いた位相判定を行うためのエッジ切替信号をエッジ切替部167から受ける。その場合、位相判定部164は、図2における位相判定部114と同様の動作を行う。また、位相判定部164は、立下りの位相判定を行う場合、立下りのエッジを用いた位相判定を行うためのエッジ切替信号をエッジ切替部167から受ける。その場合、位相判定部164は、図2における位相判定部124と同様の動作を行う。
そして、位相判定部164は、求めた位相情報をエッジ切替信号生成部170へ出力する。
ここで、図13を参照して、本実施例に係る位相判定部164の詳細について説明する。図13は、実施例2に係る位相判定部の詳細を表すブロック図である。位相判定部164は、XOR回路641及び642、並びに、位相判定回路643を有している。
エッジ切替部167は、立上りのエッジを用いた位相判定を行うためのエッジ切替信号として、「0」をXOR回路641及び642に入力する。また、エッジ切替部167は、立下りのエッジを用いた位相判定を行うためのエッジ切替信号として、「1」をXOR回路641及び642に入力する。
XOR回路641には、立上りの位相判定を行う場合、立上用先行信号の位相情報がラッチ163から入力される。また、立下りの位相判定を行う場合、XOR回路641には、立下用先行信号の位相情報がラッチ163から入力される。
立上りの位相判定の場合、XOR回路641は、エッジ切替部167から入力された「0」と立上用先行信号の位相情報との排他的論理和を求めて出力する。すなわち、立上りの位相判定の場合、XOR回路641は、ラッチ163から入力された立上用先行信号の位相情報をそのまま出力する。
これに対して、立下りの位相判定の場合、XOR回路641は、エッジ切替部167から入力された「1」と立下用先行信号との排他的論理和を求めて出力する。すなわち、立上りの位相判定の場合、XOR回路641は、ラッチ163から入力された立上用先行信号の位相情報を反転させて出力する。
XOR回路642には、立上りの位相判定を行う場合、立上用後行信号の位相情報がラッチ163から入力される。また、立下りの位相判定を行う場合、XOR回路642には、立下用後行信号の位相情報がラッチ163から入力される。
立上りの位相判定の場合、XOR回路642は、エッジ切替部167から入力された「0」と立上用後行信号の位相情報との排他的論理和を求めて出力する。すなわち、立上りの位相判定の場合、XOR回路642は、ラッチ163から入力された立上用後行信号の位相情報をそのまま出力する。
これに対して、立下りの位相判定の場合、XOR回路642は、エッジ切替部167から入力された「1」と立下用後行信号の位相情報との排他的論理和を求めて出力する。すなわち、立下りの位相判定の場合、XOR回路642は、ラッチ163から入力された立下用後行信号の位相情報を反転させて出力する。
位相判定回路643は、図2における位相判定部114と同様の動作を行う。すなわち、位相判定回路643は、立上り又は立下りの先行信号及び後行信号の位相情報の入力をXOR回路641及び642から受ける。そして、位相判定回路643は、図4の位相判定テーブル210で示される対応を用いてDQS信号の位相状態を判定する。
ここで、立下りの位相判定について説明する。図14は、実施例2に係る位相判定部による立下りの位相判定を説明するための図である。
図14における位相情報の列は、可変遅延付加部161及び固定遅延付加部162から入力される位相情報である。2ビットで表現される位相情報のうち、上位ビットが立下用後行信号の値を示し、下位ビットが立下用先行信号の値を示す。また、XOR後位相情報は、上位ビットがXOR回路642から出力され、下位ビットがXOR回路641からの出力される。
立上りと立下りでは、HighとLowが反転しているので、立下りの場合の位相情報を反転させた信号は、立上りの位相判定と同じ論理で判定することができる。そして、図14に示すように、XOR後位相情報は位相情報を反転したものになる。すなわち、XOR後位相情報を用いる場合、図14に示すように、位相判定部164は、立上りの位相判定と同じ論理で位相状態を判定することができる。このように、XOR回路641及び642を配置することで、立上りの位相判定と立下り位相判定とのいずれにおいても同じ論理で判定することができ、位相判定回路643を共通化することができる。
図12に戻って説明を続ける。可変遅延制御部165は、立上りの位相判定を行う場合、立上りのエッジを用いた位相判定を行うためのエッジ切替の信号をエッジ切替部167から受ける。その場合、可変遅延制御部165は、立上用可変遅延設定値保持部168に格納されている可変遅延設定値を読み出し、図2における可変遅延制御部115と同様に立上りの位相判定の処理における可変遅延設定値を求める。そして、可変遅延制御部165は、立上りの可変遅延設定値を順次上書きしながら立上用可変遅延設定値保持部168に格納する。その後、位相が一致すると、可変遅延制御部165は、立上りの可変遅延設定値の算出完了の通知を立上用可変遅延設定値保持部168へ出力する。
また、可変遅延制御部165は、立下りの位相判定を行う場合、立下りのエッジを用いた位相判定を行うためのエッジ切替の信号をエッジ切替部167から受ける。その場合、可変遅延制御部165は、立下用可変遅延設定値保持部169に格納されている可変遅延設定値を読み出し、図2における可変遅延制御部125と同様に立下りの可変遅延設定値を求める。そして、可変遅延制御部165は、求めた立下りの可変遅延設定値を順次上書きしながら立下用可変遅延設定値保持部169に格納する。その後、立下りの位相が一致すると、可変遅延制御部165は、立下りの可変遅延設定値の算出完了の通知を立下用可変遅延設定値保持部169へ出力する。
エッジ切替部167は、IH信号の入力を可変遅延制御部165から受ける。このIH信号は、実施例1における立上用IH信号と同様の信号である。また、エッジ切替部167は、可変遅延制御部165が出力したIH信号の反転信号の入力を位相反転部166から受ける。
さらに、エッジ切替部167は、立上りの位相判定を行う場合、立上りのエッジを用いた位相判定を行うためのエッジ切替の信号をエッジ切替信号生成部170から受ける。この場合、エッジ切替部167は、可変遅延制御部165から受信したIH信号をラッチ163、位相判定部164及び可変遅延制御部165へ出力する。
また、エッジ切替部167は、立下りの位相判定を行う場合、立下りのエッジを用いた位相判定を行うためのエッジ切替の信号をエッジ切替信号生成部170から受ける。この場合、エッジ切替部167は、位相反転部166から受信した信号であり、可変遅延制御部165から出力されたIH信号の反転信号をラッチ163、位相判定部164及び可変遅延制御部165へ出力する。
立上用可変遅延設定値保持部168は、立上りの位相判定を行う場合、立上りのエッジを用いた位相判定を行うためのエッジ切替の信号をエッジ切替信号生成部170から受ける。そして、立上用可変遅延設定値保持部168は、立上りの位相判定における可変遅延設定値を可変遅延制御部165から受信し、順次上書きしながら格納していく。
そして、立上用可変遅延設定値保持部168は、立上の可変遅延設定値の算出完了の通知の入力を可変遅延制御部165から受ける。この場合、立上用可変遅延設定値保持部168は、格納する可変遅延設定値を可変遅延付加部14へ出力する。
立下用可変遅延設定値保持部169は、立下りの位相判定を行う場合、立下りのエッジを用いた位相判定を行うためのエッジ切替の信号を位相反転部171から受ける。そして、立下用可変遅延設定値保持部169は、立下りの位相判定における可変遅延設定値を可変遅延制御部165から受信し、順次上書きしながら格納していく。
そして、立下用可変遅延設定値保持部169は、立下の可変遅延設定値の算出完了の通知の入力を可変遅延制御部165から受ける。この場合、立下用可変遅延設定値保持部169は、格納する可変遅延設定値を可変遅延付加部23へ出力する。
エッジ切替信号生成部170は、位相情報の入力を位相判定部164から受ける。そして、エッジ切替信号生成部170は、位相情報の入力が所定の条件に達すると、位相判定を行うエッジを切り替えるための信号を立上用可変遅延設定値保持部168、エッジ切替部167及び位相反転部171へ出力する。以下に、エッジ切替信号生成部170によるエッジ切替信号の生成の例を説明する。
例えば、エッジ切替信号生成部170は、位相比較の結果、一致状態を検出した場合にエッジ切替信号を反転させる。他にも、エッジ切替信号生成部170は、位相比較の結果、一致状態を規定回数検出した場合にエッジ切替信号を反転させてもよい。この場合、規定回数は、1以上であれば何回でもよい。また、エッジ切替信号生成部170は、データ取込部15又は24からデータ読み出しの通知を受けて、データ読み出しを規定ビット数行った場合にエッジ切替信号を反転させてもよい。また、エッジ切替信号生成部170は、CPU3などから連続データの情報を受信して、連続データ読み出しの終了を契機にエッジ切替信号を反転させてもよい。
次に、図15を参照して、実施例2に係るメモリコントローラ10によるデータの取り込みの処理について説明する。図15は、実施例2に係るメモリコントローラによるデータの取り込み処理のフローチャートである。
エッジ切替信号生成部170は、エッジ切替信号は立下りか否かを判定する(ステップS101)。エッジ切替信号が立上りの場合(ステップS101:肯定)、エッジ切替信号生成部170は、立上りのエッジを用いた位相判定を行うためのエッジ切替の信号を立上用可変遅延設定値保持部168、エッジ切替部167及び位相反転部171へ出力する。エッジ切替部167は、可変遅延制御部165から出力されたIH信号をラッチ163へ出力する。また、エッジ切り替え部167は、エッジ切り替え信号を位相判定部164及び可変遅延制御部165へ出力する。
ラッチ163は、立上用先行信号及び立上用後行信号の入力を可変遅延付加部161及び固定遅延付加部162から受ける。そして、ラッチ163は、立上用先行信号及び立上用後行信号それぞれの位相状態を取得する。その後、ラッチ163は、立上用先行信号及び立上用後行信号それぞれの位相状態を位相判定部164へ出力する。位相判定部164は、ラッチ163から受信した立上用先行信号及び立上用後行信号それぞれの位相状態から、DQS信号の立上りの位相が一致しているか否かを判定する(ステップS102)。
位相が一致していない場合(ステップS102:否定)、可変遅延制御部165は、立上の可変遅延設定値の調整を行う(ステップS103)。その後、位相比較回路16は、ステップS102へ戻る。
これに対して、位相が一致している場合(ステップS102:肯定)、立上用可変遅延設定値保持部168は、DQS信号の立上りと内部クロック信号との位相を一致させる立上の可変遅延設定値を保持する(ステップS104)。
可変遅延付加部14は、DQS信号の立上りと内部クロック信号との位相を一致させる立上の可変遅延設定値を立上用可変遅延設定値保持部168から読み込む(ステップS105)。
次に、可変遅延付加部14は、DQ信号のEVEN成分に、DQS信号の立上りと内部クロック信号との位相を一致させる立上用可変遅延量を付加する(ステップS106)。
データ取込部15は、可変遅延制御部165により生成されたIH信号がLowの状態における内部クロック信号の立下りのタイミングで、立上用可変遅延量が付加されたDQ信号のEVEN成分からデータを取り込む(ステップS107)。
一方、可変遅延付加部23は、DQS信号の立下りと内部クロック信号との位相を一致させる立下の可変遅延設定値を立下用可変遅延設定値保持部169から読み込む(ステップS108)。
次に、可変遅延付加部23は、DQ信号のODD成分に、DQS信号の立下りと内部クロック信号との位相を一致させる立下用可変遅延量を付加する(ステップS109)。
データ取込部24は、可変遅延制御部165により生成されたIH信号を反転させた信号がLowの状態における内部クロック信号の立下りのタイミングで、立下用可変遅延量が付加されたDQ信号のODD成分からデータを取り込む(ステップS110)。その後、位相比較回路16は、ステップS120へ進む。
一方、エッジ切替信号が立下りで始まる場合(ステップS101:否定)、エッジ切替信号生成部170は、立下りのエッジを用いた位相判定を行うためのエッジ切替の信号を立下用可変遅延設定値保持部169、エッジ切替部167及び位相反転部171へ出力する。エッジ切替部167は、可変遅延制御部165から出力されたIH信号の反転信号をラッチ163、位相判定部164及び可変遅延制御部165へ出力する。
ラッチ163は、立下用先行信号及び立下用後行信号の入力を可変遅延付加部161及び固定遅延付加部162から受ける。そして、ラッチ163は、立下用先行信号及び立下用後行信号それぞれの位相状態を取得する。その後、ラッチ163は、立下用先行信号及び立下用後行信号それぞれの位相状態を位相判定部164へ出力する。位相判定部164は、ラッチ163から受信した立下用先行信号及び立下用後行信号それぞれの位相状態から、DQS信号の立下りの位相が一致しているか否かを判定する(ステップS111)。
位相が一致していない場合(ステップS111:否定)、可変遅延制御部165は、立下の可変遅延設定値の調整を行う(ステップS112)。その後、位相比較回路16は、ステップS111へ戻る。
これに対して、位相が一致している場合(ステップS111:肯定)、立下用可変遅延設定値保持部169は、DQS信号の立下りと内部クロック信号との位相を一致させる立下の可変遅延設定値を保持する(ステップS113)。
可変遅延付加部23は、DQS信号の立下りと内部クロック信号との位相を一致させる立下の可変遅延設定値を立下用可変遅延設定値保持部169から読み込む(ステップS114)。
次に、可変遅延付加部23は、DQ信号のODD成分に、DQS信号の立下りと内部クロック信号との位相を一致させる立下用可変遅延量を付加する(ステップS115)。
データ取込部24は、可変遅延制御部165により生成されたIH信号を反転させた信号がLowの状態における内部クロック信号の立下りのタイミングで、立下用可変遅延量が付加されたDQ信号のODD成分からデータを取り込む(ステップS116)。
可変遅延付加部14は、DQS信号の立上りと内部クロック信号との位相を一致させる立上の可変遅延設定値を立上用可変遅延設定値保持部168から読み込む(ステップS117)。
次に、可変遅延付加部14は、DQ信号のEVEN成分に、DQS信号の立上りと内部クロック信号との位相を一致させる立上用可変遅延量を付加する(ステップS118)。
データ取込部15は、可変遅延制御部165により生成されたIH信号がLowの状態における内部クロック信号の立下りのタイミングで、立上用可変遅延量が付加されたDQ信号のEVEN成分からデータを取り込む(ステップS119)。
CPU3は、DQ信号のEVEN成分から取り込まれたデータ及びDQ信号のODD成分から取り込まれたデータを受信する(ステップS120)。これにより、CPU3は、DIMM2からデータを読み出すことができる。
そして、メモリインタフェース回路1は、自己を搭載する情報処理装置の動作が停止したか否かを判定する(ステップS121)。動作が停止していない場合(ステップS121:否定)、メモリインタフェース回路1は、ステップS101へ戻る。
これに対して、動作が停止した場合(ステップS121:肯定)、メモリインタフェース回路1も動作を停止する。
以上に説明したように、本実施例に係るメモリインタフェース回路は、1つの位相比較回路を用いて、DQS信号の立上りを用いた位相調整における可変遅延設定値及びDQS信号の立下りを用いた位相調整における可変遅延設定値を求める。すなわち、実施例1に比べて位相比較回路1つ分程度実装規模を縮小することができる。
また、以上の説明では、図1に示すように、メモリコントローラ10が、CPU3とは異なるチップセット100上に配置されている構成で説明したが、ハードウェア構成はこれに限らない。
各実施例に係るメモリインタフェース回路1を搭載したメモリコントローラ10は、CPU3上に搭載されていてもよい。この場合、CPU3には、演算処理部31及びメモリコントローラ10が搭載される。