(57)【要約】【課題】遅延量を調整可能な遅延調整回路において回路規模を縮小する。【解決手段】可変遅延部３１は、データストローブ信号ＤＱＳを遅延させて遅延信号ＤＱＳｄｌｙを出力する。位相比較部３２は、データストローブ信号ＤＱＳの位相が遅延信号ＤＱＳｄｌｙとの位相を比較する。遅延制御部３３は、可変遅延部３１の遅延量を徐々に増加させながら位相比較部３２による比較結果を監視し、データストローブ信号ＤＱＳの位相が遅延信号ＤＱＳｄｌｙの位相よりも進んでいることを検出すると、その時の遅延量（計数部３０１の計数値）を取得し、取得した遅延量に１／２を乗算して設定量（設定値）を算出する。また、遅延制御部３３は、可変遅延部３１の遅延量をその設定量に設定する。これにより、可変遅延部３１の遅延量をデータストローブ信号ＤＱＳの１／４周期分に相当する遅延量に設定することができる。【選択図】図４
2008311999.tif 000002
【特許請求の範囲】
【請求項１】
ロジックレベルが周期的に変化する入力信号を遅延させる回路であり、遅延量を調整可能な遅延調整回路であって、
遅延量が可変であり、前記入力信号を遅延させ遅延信号を出力する可変遅延部と、
前記入力信号の位相と前記遅延信号の位相とを比較する位相比較部と、
前記可変遅延部の遅延量を徐々に増加させながら前記位相比較部による比較結果を監視し、前記入力信号と前記遅延信号との位相関係が逆転するときの前記可変遅延部の遅延量を検出し、前記入力信号の１／２周期と所望の遅延量との関係に基づいて前記検出した遅延量から設定量を算出し、前記可変遅延部の遅延量を前記設定量に設定する遅延制御部とを備える
ことを特徴とする遅延調整回路。
【請求項２】
請求項１において、
前記可変遅延部は、複数の遅延素子と、前記複数の遅延素子に対応する複数のセレクタとを含み、
前記複数の遅延素子および複数のセレクタは、遅延素子を先頭にして交互に直列に配置され、初段の遅延素子は、前記入力信号を受け、
前記複数のセレクタの各々は、前記入力信号および自己の前段に配置された遅延素子の出力のうちいずれか一方を自己の後段に配置された遅延素子に供給し、
前記遅延制御部は、前記可変遅延部の遅延量が徐々に増加するように、複数のセレクタの各々を制御する
ことを特徴とする遅延調整回路。
【請求項３】
請求項１または請求項２において、
前記位相比較部は、データ端子およびクロック端子のいずれか一方に前記入力信号を受け他方に前記遅延信号を受けるフリップフロップを含み、
前記遅延制御部は、前記フリップフロップの出力のロジックレベルが変化するときの前記可変遅延部の遅延量を検出する
ことを特徴とする遅延調整回路。
【請求項４】
請求項１〜３のいずれか１項において、
前記遅延制御部は、さらに、前記可変遅延部のオフセット遅延量に応じて、前記設定量を補正する
ことを特徴とする遅延調整回路。
【請求項５】
請求項１〜４のいずれか１項において、
前記遅延制御部は、さらに、以前に算出した設定量と今回の設定量との加重平均値を算出し、当該加重平均値を今回の設定量とする
ことを特徴とする遅延調整回路。
【請求項６】
請求項１〜５のいずれか１項において、
前記遅延制御部は、さらに、以前に算出した設定量と今回の設定量との差分を求め、当該差分が所定量を超えている場合には、以前に算出した設定量に当該所定量を加算したものを今回の設定量とする
ことを特徴とする遅延調整回路。
【請求項７】
ロジックレベルが周期的に変化する入力信号を遅延させる回路であり、遅延量を調整可能な遅延調整回路であって、
遅延量が可変であり、前記入力信号を遅延させ遅延信号を出力する可変遅延部と、
前記入力信号の位相と前記遅延信号の位相とを比較する位相比較部と、
前記可変遅延部の遅延量を徐々に増加させながら前記位相比較部による比較結果を監視し、前記入力信号と前記遅延信号との位相関係が逆転すると、前記可変遅延部の遅延量を固定する遅延制御部とを備える
ことを特徴とする遅延調整回路。
【請求項８】
シンクロナスＤＲＡＭに記憶されたデータを読み出すメモリコントローラであり、当該シンクロナスＤＲＡＭからデータ信号および当該データ信号と同位相であるデータストローブ信号とを受けるメモリコントローラであって、
遅延量が可変であり、前記データストローブ信号を遅延させ遅延信号を出力する可変遅延部と、
前記データストローブ信号の位相と前記遅延信号の位相とを比較する位相比較部と、
前記可変遅延部の遅延量を徐々に増加させながら前記位相比較部による比較結果を監視し、前記データストローブ信号と前記遅延信号との位相関係が逆転するときの前記可変遅延部の遅延量を検出し、前記検出した遅延量に１／２を乗算して設定量を算出し、前記可変遅延部の遅延量を前記設定量に設定する遅延制御部と、
前記可変遅延部からの遅延信号を反転する反転部と、
前記可変遅延部からの遅延信号に同期して前記データ信号を取り込む第１の保持部と、
前記反転部の出力に同期して前記データ信号を取り込む第２の保持部とを備える
ことを特徴とするメモリコントローラ。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、入力信号を遅延させる回路に関し、さらに詳しくは、入力信号の周期に応じて自己の遅延量を調整することができる遅延調整回路およびその遅延調整回路を搭載したメモリコントローラに関する。
【背景技術】
【０００２】
ＤＤＲＳＤＲＡＭ（Double Data Rate Synchronous Dynamic Random Access Memory）は、クロック信号に同期して信号を入出力するシンクロナスＤＲＡＭの一種であり、クロック信号のポジティブエッジおよびネガティブエッジの各々に同期してデータを転送することにより、クロック周波数の倍の転送レートを実現している。
【０００３】
例えば、特開平１１−８８１５３号公報（特許文献１）に開示された技術では、メモリコントローラがＤＤＲＳＤＲＡＭからデータを読み出す場合、ＤＤＲＳＤＲＡＭは、メモリコントローラからのクロック信号のポジティブエッジに同期してデータ信号およびデータストローブ信号を出力する。一方、メモリーコントローラは、データストローブ信号のポジティブエッジおよびネガティブエッジの各々をデータ信号のデータアイの中央に合わせるためにデータストローブ信号を１／４周期分だけ遅延させ、遅延させたデータストローブ信号のポジティブエッジおよびネガティブエッジの各々に同期してデータ信号を取り込む。このように、メモリコントローラにおいてデータ信号を正確に取り込むために、データストローブ信号を１／４周期だけ遅延させる回路が必要とされている。
【０００４】
従来、データストローブ信号を遅延させる回路として、デジタルＤＬＬ（Delay Locked Loop）が用いられている（例えば、特開２００６−１０７３５２号公報（特許文献２）の図８，図９，図１０）。このデジタルＤＬＬでは、直列に接続された複数のバッファ（バッファチェーン）の初段に入力信号（データストローブ信号）が与えられ、複数のバッファの各段の出力のうちいずれか１つが出力信号として出力される。また、位相比較回路によって入力信号（データストローブ信号）の位相と出力信号との位相とが比較され、その位相比較回路の出力に基づいて出力信号となるバッファ出力が選択される。このようなデジタルＤＬＬを用いてデータストローブ信号を１／４周期分だけ遅延させる場合、次のような処理が行われる。まず、入力信号に対する出力信号の遅延量を徐々に大きくしながら、位相比較回路の出力を監視する。出力信号の遅延量の増加に伴い、位相比較回路の出力は、『Ｈ』→『Ｌ』→『Ｈ』→『Ｌ』→・・・のように、周期的に反転する。ここで、位相比較回路の出力が初めて反転したとき（例えば、『Ｈ』→『Ｌ』）の遅延量を「第１の基準量」とし、その後、位相比較回路の出力が２回反転したとき（例えば、『Ｌ』→『Ｈ』→『Ｌ』）の遅延量を「第２の基準量」として取得する。「第２の基準量」から「第１の基準量」を減じた量は入力信号の１周期分に相当するので、（「第２の基準量」−「第１の基準量」）を「４」で除算することにより、データストローブ信号の１／４周期分に相当する遅延量を得ることができる。このようにして、１／４周期分の遅延量を実現している。
【０００５】
また、データストローブ信号を遅延させる回路として、遅延量をプログラマブルに設定可能な可変遅延回路（プログラマブル遅延回路）を用いる場合もある。
【特許文献１】特開平１１−８８１５３号公報
【特許文献２】特開２００６−１０７３５２号公報
【発明の開示】
【発明が解決しようとする課題】
【０００６】
しかしながら、デジタルＤＬＬでは、第１および第２の基準量を取得するために入力信号を１周期分遅延させなければならないので、バッファチェーンの総遅延量を遅延対象である信号の１周期分よりも多くする必要があった。そのため、バッファチェーンの総遅延量を１周期分よりも少なくすることできず、可変遅延回路の回路規模を縮小することが困難であった。
【０００７】
また、プログラマブル遅延回路では、遅延対象である信号の周期に応じて遅延量を設定する場合、遅延対象である信号が変化することを考慮すると準備すべき遅延量を多くする必要があった。そのため、プログラマブル遅延回路により多くの遅延素子を形成しなければならず、回路規模を縮小することが困難であった。
【０００８】
そこで、本発明は、遅延量が調整可能である遅延調整回路において回路規模を縮小することを目的とする。
【課題を解決するための手段】
【０００９】
この発明による遅延調整回路は、ロジックレベルが周期的に変化する入力信号を遅延させる回路であり、遅延量を調整可能な遅延調整回路であって、遅延量が可変であり上記入力信号を遅延させ遅延信号を出力する可変遅延部と、上記入力信号の位相と上記遅延信号の位相とを比較する位相比較部と、上記可変遅延部の遅延量を徐々に増加させながら上記位相比較部による比較結果を監視し、上記入力信号と上記遅延信号との位相関係が逆転するときの上記可変遅延部の遅延量を検出し、上記入力信号の周期と所望の遅延量との関係に基づいて上記検出した遅延量から設定量を算出し、上記可変遅延部の遅延量を上記設定量に設定する遅延制御部とを備える。
【００１０】
上記遅延調整回路では、入力信号と遅延信号との位相関係が逆転するとき、可変遅延部の遅延量は、入力信号の１／２周期分に相当する量になっている。よって、このときの可変遅延部の遅延量を検出することにより、入力信号の１／２周期分に相当する量を把握することができる。さらに、検出した遅延量から入力信号の１／２周期と所望の遅延量との関係に基づいて設定量を算出し、可変遅延部の遅延量をその設定量に設定することにより、可変遅延部の遅延量を所望量に設定することができる。このように、入力信号の周期に応じて、入力信号に対する遅延信号の遅延量を所望量にすることができる。また、可変遅延部３１の総遅延量が少なくとも入力信号の１／２周期分に相当する量であれば、入力信号と遅延信号との位相関係が逆転することを検出することができるので、従来よりも、準備すべき遅延量を少なくすることができ、可変遅延部の回路規模を小さくすることができる。
【００１１】
この発明による別の遅延調整回路は、ロジックレベルが周期的に変化する入力信号を遅延させる回路であり、遅延量を調整可能な遅延調整回路であって、遅延量が可変であり上記入力信号を遅延させ遅延信号を出力する可変遅延部と、上記入力信号の位相と上記遅延信号の位相とを比較する位相比較部と、上記可変遅延部の遅延量を徐々に増加させながら上記位相比較部による比較結果を監視し、上記入力信号と上記遅延信号との位相関係が逆転すると、上記可変遅延部の遅延量を固定する遅延制御部とを備える。
【００１２】
上記遅延調整回路では、可変遅延部の遅延量を入力信号の１／２周期分に相当する量に設定することができる。
【００１３】
この発明によるメモリコントローラは、シンクロナスＤＲＡＭに記憶されたデータを読み出すメモリコントローラであり、そのシンクロナスＤＲＡＭからデータ信号およびそのデータ信号と同位相であるデータストローブ信号とを受けるメモリコントローラであって、遅延量が可変であり上記データストローブ信号を遅延させ遅延信号を出力する可変遅延部と、上記データストローブ信号の位相と上記遅延信号の位相とを比較する位相比較部と、上記可変遅延部の遅延量を徐々に増加させながら上記位相比較部による比較結果を監視し、上記データストローブ信号と上記遅延信号との位相関係が逆転するときの上記可変遅延部の遅延量を検出し、上記検出した遅延量に１／２を乗算して設定量を算出し、上記可変遅延部の遅延量を上記設定量に設定する遅延制御部と、上記可変遅延部からの遅延信号を反転する反転部と、上記可変遅延部からの遅延信号に同期して上記データ信号を取り込む第１の保持部と、上記反転部の出力に同期して上記データ信号を取り込む第２の保持部とを備える。
【００１４】
上記メモリコントローラでは、データストローブ信号に対する遅延信号の遅延量を１／４周期分にすることができ、データ信号を正確に取り込むことができる。
【発明の効果】
【００１５】
以上のように、入力信号の周期に応じて入力信号に対する遅延信号の遅延量を所望量にすることができるとともに、回路規模を小さくすることができる。
【発明を実施するための最良の形態】
【００１６】
以下、この発明の実施の形態を図面を参照して詳しく説明する。
【００１７】
図１は、この発明の実施形態によるメモリコントローラの構成を示す。メモリコントローラ１０は、ＤＤＲＳＤＲＡＭ仕様に従うＤＤＲＳＤＲＡＭ２０との間でデータの読み出し／書き込みを行う。メモリコントローラ１０とＤＤＲＳＤＲＡＭ２０と間のデータ転送は、データストローブ信号ＤＱＳに同期して実行される。メモリコントローラ１０は、メモリ制御回路１１と、読み出しデータ取り込み回路１２と、書き込みデータ出力回路１３とを備える。
【００１８】
メモリ制御回路１１は、システムクロックＳＣＬＫに基づいてクロック信号ＣＬＫおよび反転クロック信号／ＣＬＫからなる差動クロックを出力するとともに、クロック信号ＣＬＫのポジティブエッジに同期してコマンドＣＭＤを出力する。コマンドＣＭＤには、読み出し動作および書き込み動作を指定する命令や、読み出しアドレスおよび書き込みアドレスを指定する命令等が含まれる。ＤＤＲＳＤＲＡＭ２０は、メモリ制御回路１１からのクロック信号ＣＬＫおよび反転クロック信号／ＣＬＫに同期して動作し、コマンドＣＭＤに応答して処理を実行する。
【００１９】
読み出し動作時では、ＤＤＲＳＤＲＡＭ２０は、クロック信号ＣＬＫのポジティブエッジに同期して、データ信号Ｄａｔａおよびデータストローブ信号ＤＱＳの両方を出力する。図２のようにデータ信号Ｄａｔａおよびデータストローブ信号ＤＱＳの各々は互いに同位相であるので、メモリコントローラ１０において、図３のようにデータ信号Ｄａｔａの位相に対してデータストローブ信号ＤＱＳの位相を１／４周期分だけずらす必要がある。そこで、読み出しデータ取り込み回路１２は、データストローブ信号ＤＱＳを１／４周期分だけ遅延させ、遅延させたデータストローブ信号ＤＱＳのポジティブエッジおよびネガティブエッジの各々に同期してデータ信号Ｄａｔａを取り込み、メモリ制御回路１１へ出力する。これにより、クロック周波数の倍の転送レート（ダブルデータレート）を実現することができる。
【００２０】
一方、書き込み動作時では、メモリ制御回路１１は、ＤＤＲＳＤＲＡＭ２０に書き込むべきデータを書き込みデータ出力回路に供給する。書き込みデータ出力回路１３は、システムクロックＳＣＬＫに同期して、データ信号Ｄａｔａおよびデータストローブ信号ＤＱＳをＤＤＲＳＤＲＡＭ２０へ出力する。
【００２１】
図４は、図１に示した読み出しデータ取り込み回路１２の内部構成を示す。読み出しデータ取り込み回路１２は、入力バッファゲート１０１，１０２と、遅延調整回路１０３と、インバータ１０４と、フリップフロップ１０５，１０６，１０７とを含む。
【００２２】
入力バッファゲート１０１は、ＤＤＲＳＤＲＡＭ２０からのデータ信号Ｄａｔａを受け、入力バッファゲート１０２は、ＤＤＲＳＤＲＡＭ２０からのデータストローブ信号ＤＱＳを受ける。遅延調整回路１０３は、入力バッファゲート１０２からのデータ信号ＤＱＳを１／４周期分だけ遅延させて遅延信号ＤＱＳｄｌｙを出力する。
【００２３】
図５のように、フリップフロップ１０５は、遅延調整回路１０３からの遅延信号ＤＱＳｄｌｙのポジティブエッジに同期して、入力バッファゲート１０１からのデータ信号Ｄａｔａを取り込む。一方、フリップフロップ１０６は、インバータ１０４からの信号のポジティブエッジ（すなわち、遅延信号ＤＱＳｄｌｙのネガティブエッジ）に同期して、入力バッファゲート１０１からのデータ信号Ｄａｔａを取り込む。これにより、データ信号Ｄａｔａは、遅延信号ＤＱＳｄｌｙのポジティブエッジおよびネガティブエッジの各々に同期して取り込まれたことになる。フリップフロップ１０７は、システムクロックＳＣＬＫに同期して、フリップフロップ１０５，１０６の各々からのデータ信号を取り込む。このようにして、システムクロックＳＣＬＫに同期したデータ信号が後段の回路（メモリ制御回路１１）に供給される。
【００２４】
なお、フリップフロップ１０７は、フリップフロップ１０５，１０６の各々で取り込まれたデータ信号を同時に取り込むために、フリップフロップ１０７のバス幅は、フリップフロップ１０５，１０６の各々のバス幅の総計（換言すれば、データ信号Ｄａｔａのバス幅の２倍）である。すなわち、フリップフロップ１０５およびフリップフロップ１０６の各々のバス幅を「ｎビット」とすると、フリップフロップ１０７のバス幅は「２×ｎビット」になる。
【００２５】
次に、遅延調整回路１０３について詳しく説明する。遅延調整回路１０３は、可変遅延部３１と、位相比較部３２と、遅延制御部３３とを含む。可変遅延部３１は、遅延量が可変である。位相比較部３２は、入力バッファゲート１０２からのデータストローブ信号ＤＱＳの位相と可変遅延部３１からの遅延信号ＤＱＳｄｌｙの位相とを比較する。遅延制御部３３は、可変遅延部３１の遅延量を設定する。また、遅延制御部３３は、調整指示信号を受けると、可変遅延部３１の遅延量を調整する処理（調整処理）を開始する。すなわち、遅延制御部３３は、可変遅延部３１の遅延量を徐々に増加させながら位相比較部３２による比較結果を監視し、データストローブ信号ＤＱＳと遅延信号ＤＱＳｄｌｙとの位相関係が逆転するときの可変遅延部３１の遅延量を検出する。さらに、遅延制御部３３は、データストローブ信号の１／２周期と所望の遅延量との関係に基づいてその検出した遅延量を増減して設定量を算出し、可変遅延部３１の遅延量をその設定量に設定する。可変遅延部３１，位相比較部３２，および遅延制御部３３の各々の内部構成を図６に示す。
【００２６】
可変遅延部３１は、ｎ個（ｎは２以上の整数）のセレクタＳ１〜Ｓｎと、ｎ個のバッファＢ１〜Ｂｎとを含む。セレクタＳ１〜ＳｎおよびバッファＢ１〜Ｂｎは、バッファＢｎを先頭にして交互に直列に並んでおり、先頭のバッファＢｎの入力端子には、データストローブ信号ＤＱＳが与えられ、セレクタＳ１〜Ｓｎには、それぞれ、選択信号ＳＥＬ１〜ＳＥＬｎが与えられる。セレクタＳ１〜Ｓｎの各々は、データストローブ信号ＤＱＳと自己の前段に配置されたバッファの出力とを受け、自己に与えられる選択信号に応じていずれか一方を選択する。例えば、セレクタＳ１は、選択信号ＳＥＬ１が「Ｈ」である場合には、バッファＢ１の出力を選択し、選択信号ＳＥＬ１が「Ｌ」である場合には、データストローブ信号ＤＱＳを選択する。セレクタＳ２〜Ｓｎの各々の出力は、そのセレクタの後段に配置されたバッファに供給され、セレクタＳ１の出力は、遅延信号ＤＱＳｄｌｙとして供給される。
【００２７】
位相比較部３２は、フリップフロップＦＦを含む。フリップフロップＦＦは、データストローブ信号ＤＱＳのポジティブエッジに同期して遅延信号ＤＱＳｄｌｙを取り込む。データストローブ信号ＤＱＳの位相に対して遅延信号ＤＱＳｄｌｙの位相が進んでいる場合には、フリップフロップＦＦの出力は「Ｌ」になり、逆に、遅れている場合には、「Ｈ」になる。
【００２８】
遅延制御部３３は、計数部３０１と、検出部３０２と、演算部３０３と、オフセット補正部３０４と、加重平均算出部３０５と、クリップ制御部３０６と、保持部３０７と、選択部３０８とを含む。
【００２９】
計数部３０１は、例えば、カウンタであり、調整指示信号ＡＤＪが与えられると駆動し、自己の計数値を徐々に増加させる。検出部３０２は、調整指示信号ＡＤＪが与えられると駆動し、フリップフロップＦＦの出力が「Ｈ」であることを検出する。演算部３０３は、検出部３０２によってフリップフロップＦＦの出力が「Ｈ」であることが検出されると、計数部３０１の計数値を取得する。また、演算部３０３は、取得した計数値に「２／Ｎ（Ｎは２以上の整数であり、ここでは、Ｎ＝４）」を乗算して設定値を算出する。設定値は、オフセット補正部３０４，加重平均算出部３０５，クリップ制御部３０６の各々によって処理され、保持部３０７に与えられる。保持部３０７は、設定値を保持する。計数値（設定値）は、データストローブ信号ＤＱＳを通過させるバッファの段数（すなわち、可変遅延部３１の遅延量）を示す値である。
【００３０】
選択部３０８は、通常モードと調整モードとを有し、調整指示信号ＡＤＪが与えられると通常モードから調整モードになり、計数部３０１の計数値に応じて選択信号を制御する。また、選択部３０８は、保持部３０７に保持された設定値が更新されると調整モードから通常モードになり、保持部３０７に保持された設定値に応じて選択信号を制御する。ここで、計数値（設定値）をｍ（０≦ｍ≦ｎ）とすると、選択部３０８は、選択信号ＳＥＬ１〜ＳＥＬｎのうち選択信号ＳＥＬ１から数えてｍ番目までの選択信号を「Ｈ」にし、その他の選択信号を「Ｌ」にする。例えば、計数値が「０」である場合では、選択信号ＳＥＬ１〜ＳＥＬｎは全て「Ｌ」になり、計数値が「１」である場合には、選択信号ＳＥＬ１のみが「Ｈ」になる。
【００３１】
次に、図７を参照しつつ、図６に示した遅延調整回路１０３によって、データストローブ信号ＤＱＳに対する遅延信号ＤＱＳｄｌｙの遅延量をデータストローブ信号ＤＱＳの１／４周期分にするための調整処理について説明する。
【００３２】
〔ステップＳＴ１０１〕
まず、調整指示信号ＡＤＪが与えられ、選択部３０８は、通常モードから調整モードになり、計数部３０１の計数値に応じて選択信号ＳＥＬ１〜ＳＥＬｎの各々を制御する。これにより、可変遅延部３１の遅延量は、計数部３０１の計数値に応じた量になる。また、計数部３０１および検出部３０２の各々は、駆動状態になる。なお、計数部３０１の計数値は、リセットされて「０」になる。
【００３３】
〔ステップＳＴ１０２〕
次に、計数部３０１は、自己の計数値を徐々に増加させる。これにより。可変遅延部３１の遅延量は、計数値の増加に伴って、徐々に増加する。
【００３４】
〔ステップＳＴ１０３〕
検出部３０２は、フリップフロップＦＦの出力を受ける。ここで、フリップフロップＦＦの出力が「Ｌ」である場合（データストローブ信号ＤＱＳの位相に対して遅延信号ＤＱＳｄｌｙの位相が遅れている場合）には、ステップＳＴ１０２へ進み、フリップフロップＦＦの出力が「Ｈ」である場合（データストローブ信号ＤＱＳと遅延信号ＤＱＳｄｌｙとの位相関係が逆転している場合）には、ステップＳＴ１０４へ進む。
【００３５】
このように、フリップフロップＦＦの出力が「Ｈ」であることが検出されるまで、可変遅延部３１の遅延量は、徐々に増加する。これにより、調整処理の開始時では、遅延信号ＤＱＳｄｌｙはデータストローブ信号ＤＱＳとほぼ同位相である（図８参照）が、調整処理が進むに連れて、データストローブ信号ＤＱＳに対する遅延信号ＤＱＳｄｌｙの遅延量が徐々に大きくなり（図９参照）、遅延量がデータストローブ信号ＤＱＳの１／２周期分に到達すると、データストローブ信号ＤＱＳと遅延信号ＤＱＳｄｌｙとの位相関係が逆転する（図１０参照）。
【００３６】
〔ステップＳＴ１０４〕
検出部３０２によって位相関係の逆転が検出される（すなわち、フリップフロップＦＦの出力が「Ｈ」であることが検出される）と、演算部３０３は、計数部３０１の計数値を取得する。この計数値は、可変遅延部３１の遅延量がデータストローブ信号ＤＱＳの１／２周期分に相当する量であるときのバッファの段数を示す。このようにして、データストローブ信号ＤＱＳの１／２周期分に相当する可変遅延部３１の遅延量を検出することができる。ここで、データストローブ信号ＤＱＳに対する遅延信号ＤＱＳｄｌｙの遅延量をデータストローブ信号ＤＱＳの１／４周期分にするために、演算部３０３は、取得した計数値に「１／２」を乗算して設定値を算出する。なお、遅延信号ＤＱＳｄｌｙの遅延量を「１／８周期分」にする場合は、取得した計数値に「１／４」を乗算すれば良い。
【００３７】
〔ステップＳＴ１０５〕
オフセット補正部３０４は、可変遅延部３１のオフセット遅延量を調整するために、オフセット遅延量に応じた値を演算部３０３によって算出された設定値に加算する。これにより、設定値が増減される。オフセット遅延量は、選択信号ＳＥＬ１〜ＳＥＬｎの全てが「Ｌ」であるときの可変遅延部３１の遅延量であり、オフセット遅延量に応じた値（設定値を増減するための値）は、オフセット補正部３０４に予め設定されている。
【００３８】
〔ステップＳＴ１０６〕
加重平均算出部３０５は、今回の調整処理によって得られた設定値と保持部３０７に保持された設定値（前回の設定値）とを受け、今回および前回の設定値の各々に対して重みを付加し、今回および前回の設定値の加重平均値を算出する。算出された加重平均値は、今回の設定値となる。例えば、１回目の設定値を「ＤＬ１」，２回目の設定値を「ＤＬ２」、３回目の設定値を「ＤＬ３」とすると、２回目の調整処理を終了した際に、１回目の設定値「ＤＬ１」と２回目の設定値「ＤＬ２」の平均値（すなわち、（ＤＬ１＋ＤＬ２）／２）が算出される。また、３回目の調整処理を終了した際に、「ＤＬ１」，「ＤＬ２」，「ＤＬ３」の平均値（すなわち、（ＤＬ１＋ＤＬ２＋ＤＬ３）／３）が算出される。なお、今回および前回の設定値の各々に付加するための値は、加重平均算出部３０５に予め設定されている。
【００３９】
〔ステップＳＴ１０７〕
クリップ制御部３０６は、今回の設定値と保持部に保持された設定値との差分を求める。また、クリップ制御部３０６は、求めた差分がクリップ上限値を超えている場合には、前回の設定値にクリップ上限値を加算し、加算後の設定値を今回の設定値とする。例えば、クリップ上限値を「２」，（ｎ−１）回目迄の設定値の平均を「ＤＬ」、ｎ回目迄の算出値の平均を「ＤＬ＋４」とすると、（ｎ−１）回目迄の平均値とｎ回目迄の平均値との差分は「４」であるので、クリップ制御部３０６は、（ｎ−１）回目迄の平均値「ＤＬ」にクリップ上限値「２」を加算した値「ＤＬ＋２」が今回の設定値とする。一方、クリップ制御部３０６は、求めた差分がクリップ上限値を超えていない場合には、今回の設定値に対して処理を行わない。なお、クリップ上限値は、クリップ制御部３０６に予め設定されている。
【００４０】
〔ステップＳＴ１０８〕
保持部３０７は、ステップＳＴ１０４〜ＳＴ１０７を経て得られた設定値を受け、自己に保持している設定値を更新する（前回の設定値を破棄し、今回の設定値を保持する）。保持部３０７の設定値が更新されると、選択部３０８は、調整モードから通常モードになり、その更新された設定値に応じて選択信号ＳＥＬ１〜ＳＥＬｎの各々の制御する。これにより、可変遅延部３１の遅延量は、更新された設定値に応じた量に設定される。ここでは、設定値は、ステップＳＴ１０４において取得された計数値の１／２であるので、可変遅延部３１の遅延量は、データストローブ信号ＤＱＳの１／４周期分に相当する遅延量に設定される。
【００４１】
以上のように、データストローブ信号の周期に応じて可変遅延部の遅延量を設定することができる。すなわち、データストローブ信号の周期に応じた量（ここでは、データストローブ信号の１／４周期分）だけデータストローブ信号を遅延させることができる。また、可変遅延部３１の総遅延量が少なくともデータストローブ信号ＤＱＳの１／２周期分に相当する量であれば、データストローブ信号と遅延信号との位相関係が逆転することを検出することができる。よって、従来よりも準備すべき遅延量を少なくすることができ、可変遅延部３１の回路規模を小さくすることができる。
【００４２】
さらに、メモリーコントローラにおいてデータストローブ信号ＤＱＳを１／４周期分だけ遅延させることができるので、データ信号を正確に取り込むことができる。
【００４３】
ここで、オフセット補正部３０４による効果について説明する。遅延制御部３３では、データストローブ信号ＤＱＳに対して遅延信号ＤＱＳｄｌｙを１／４周期分だけ遅延させるために演算部３０３による処理が行われるが、何らかの意図があって遅延信号ＤＱＳｄｌｙの遅延量を１／４周期分ではない別の量に設定したい場合もある。例えば、図１１のように、データストローブ信号ＤＱＳに対してデータ信号Ｄａｔａが遅延している場合、遅延信号ＤＱＳｄｌｙの遅延量を１／４周期分にしても遅延信号ＤＱＳｄｌｙの両エッジがデータ信号Ｄａｔａのデータアイの中央からずれてしまい、データ信号Ｄａｔａを正確に取り込むことができないおそれがある。そこで、オフセット遅延量に応じた値を用いて演算部３０３によって得られた設定値を増減することによって、可変遅延部３１の遅延量を調整することができ、図１２のように、遅延信号ＤＱＳｄｌｙの両エッジをデータ信号Ｄａｔａのデータアイの中央に一致させることが可能となる。このように、オフセット補正部３０４によって遅延信号ＤＱＳｄｌｙの遅延量を調整することができ、遅延信号ＤＱＳｄｌｙの遅延量を１／４周期分以外に設定することができる。
【００４４】
次に、加重平均算出部３０５による効果について説明する。遅延制御部３３は、調整指示信号ＡＤＪを受けて調整処理を開始し、データストローブ信号ＤＱＳの１／４周期分に相当する設定量を算出すると調整処理を終了する。ところで、遅延調整回路１０３やＤＤＲＳＤＲＡＭ２０は、電源電圧や周囲温度等の影響を受けて動作タイミングが変動するので、遅延制御部３３による調整処理を周期的に繰り返し行うことが望ましい。しかし、調整処理を繰り返し行った場合、瞬間的な電源電圧の変動や外部からのノイズの混入により、データストローブ信号ＤＱＳの１／４周期分に対応する設定値を正確に算出できず、設定値が突発的に変動してしまうおそれがある。そこで、加重平均算出部３０５によって以前の設定値と今回の設定値とを平均化することにより、設定値の突発的な変動を緩和することができ、誤算出による誤動作を防止することができる。
【００４５】
次に、クリップ制御部３０６による効果について説明する。上述のように、調整処理を繰り返し行った場合、設定値が突発的に変動することがある。また、変動量があまりにも大きい場合、以前の設定値とかけ離れた設定値が算出されてしまう。そこで、以前の設定値と今回の設定値との差分に上限値を設定することにより、設定値の変動を規制することができ、誤算出による誤動作を防止することができる。
【００４６】
なお、演算部３０３による処理（設定量を算出する処理）を行わずに、検出部３０２によってフリップフロップＦＦの出力が「Ｈ」になることが検出されたときの計数部３０１の計数値に基づいて、選択部３０８が選択信号ＳＥＬ１〜ＳＥＬｎの各々を制御するように構成しても良い。このように構成することにより、可変遅延部３１の遅延量をデータストローブ信号の１／２周期分に相当する量に設定することができる。
【００４７】
また、オフセット補正部３０４，加重平均算出部３０５，クリップ制御部３０６は、それぞれ、バイパス設定が可能であっても良い。すなわち、オフセット補正部３０４，加重平均算出部３０５，クリップ制御部３０６のうち必要な機能を選択して利用できるように構成しても良い。さらに、オフセット補正部３０４，加重平均算出部３０５，クリップ制御部３０６の各々に予め設定されている値を外部から書き換えることができるように構成しても良い。例えば、オフセット補正部３０４にオフセット遅延量に応じた値を格納するための保持部を設け、ＣＰＵ等の別回路がその保持部にアクセスできるように構成しても構わない。このように構成することにより、オフセット遅延量に応じた値を任意に設定することができる。加重平均算出部３０５，クリップ制御部３０６についても同様である。
【産業上の利用可能性】
【００４８】
この発明による遅延調整回路は、入力信号の周期に応じて遅延量を調整でき且つ回路規模を縮小することができるので、モバイル機器向けのメモリーコントローラにおいてデータストローブ信号を遅延させる遅延回路等として有用である。
【図面の簡単な説明】
【００４９】
【図１】この発明の実施形態によるメモリコントローラの構成を示す図。
【図２】ＤＤＲＳＤＲＡＭから供給されるデータ信号とデータストローブ信号との位相関係を説明するための信号波形図。
【図３】調整処理が施された後のデータ信号と遅延信号との位相関係を説明するための信号波形図。
【図４】図１に示した読み出しデータ取り込み回路の内部構成を示す図。
【図５】図４に示した読み出しデータ取り込み回路による動作について説明するための信号波形図。
【図６】図４に示した可変遅延部，位相比較部，遅延制御部の構成例を示す図。
【図７】図６に示した遅延調整回路による動作について説明するためのフローチャート。
【図８】調整処理の開始直後の入力信号と遅延信号との位相関係を示す信号波形図。
【図９】遅延信号の位相遅れ量が大きくなることを説明するための信号波形図。
【図１０】遅延信号の位相が入力信号の位相よりも進んでいる状態になることを説明するための信号波形図。
【図１１】データストローブ信号に対してデータ信号が遅延している場合を示す信号波形図。
【図１２】図１１に示した遅延信号に対してオフセット遅延量を加算した場合を示す信号波形図。
【符号の説明】
【００５０】
１０    メモリコントローラ
１１    メモリ制御回路
１２    読み出しデータ取り込み回路
１３    書き込みデータ出力回路
２０    ＤＤＲＳＤＲＡＭ
１０１，１０２    入力バッファゲート
１０３    遅延調整回路
１０４    インバータ
１０５，１０６，１０７，１０９    フリップフロップ
１０８    セレクタ
３１    可変遅延部
３２    位相比較部
３３    遅延制御部
Ｓ１〜Ｓｎ    セレクタ
Ｂ１〜Ｂｎ    バッファ
ＦＦ    フリップフロップ
３０１    計数部
３０２    検出部
３０３    演算部
３０４    オフセット補正部
３０５    加重平均算出部
３０６    クリップ制御部
３０７    保持部
３０８    選択部
【図１】
2008311999.tif 000003
【図２】
2008311999.tif 000004
【図３】
2008311999.tif 000005
【図４】
2008311999.tif 000006
【図５】
2008311999.tif 000007
【図６】
2008311999.tif 000008
【図７】
2008311999.tif 000009
【図８】
2008311999.tif 000010
【図９】
2008311999.tif 000011
【図１０】
2008311999.tif 000012
【図１１】
2008311999.tif 000013
【図１２】
2008311999.tif 000014