(57)【要約】【課題】フライトタイムの調整に対応する回路規模を小さくする遅延調整回路を提供する。【解決手段】メモリへ接続し、リードコマンドに応じて、メモリから出力されるデータ信号及びデータストローブ信号を用いてデータを取り込むタイミングを調整する遅延調整回路１であって、データ信号と、データストローブ信号とを入力し、データストローブ信号に応じてデータ信号のデータ値を出力するデータ取得部１０と、メモリへリードコマンドを発行し、リードコマンドに応じてデータストローブ信号の値を取り込むことによって、フライトタイムを算出し、フライトタイムに基づいてデータストローブ信号を有効にする期間を制御する制御部２０と、を備える。【選択図】図１
2010122842.tif 000002
【特許請求の範囲】
【請求項１】
メモリへ接続し、リードコマンドに応じて、メモリから出力されるデータ信号及びデータストローブ信号を用いてデータを取り込むタイミングを調整する遅延調整装置であって、
前記データ信号と、前記データストローブ信号とを入力し、前記データストローブ信号に応じてデータ信号のデータ値を出力するデータ取得部と、
前記メモリへリードコマンドを発行し、前記リードコマンドに応じて前記データストローブ信号の値を取り込むことによって、フライトタイムを算出し、前記フライトタイムに基づいて前記データストローブ信号を有効にする期間を制御する制御部と、を備える遅延調整装置。
【請求項２】
前記制御部は、
前記データストローブ信号が有効な期間を示す有効信号を出力する有効信号出力部と、
前記有効信号に応じて前記データストローブ信号の値を取り込むストローブ値取得部と、
前記リードコマンドを発行し、前記有効信号出力部へ前記有効信号を出力するタイミングを指示し、前記ストローブ値取得部から前記データストローブ信号の値を取り込み、取り込んだ値を用いて前記フライトタイムを算出する調整部と、を備えることを特徴とする請求項１記載の遅延調整装置。
【請求項３】
前記調整部は、リードコマンドの発行後、異なるタイミングで前記有効信号出力部に前記有効信号を出力させることによって、複数のデータストローブ信号の値を前記データストローブ値取得部から取得し、前記データストローブ信号の既知の波形と、前記複数のデータストローブ信号の値の変化とを比較することによって、前記フライトタイムを算出することを特徴とする請求項２記載の遅延調整装置。
【請求項４】
前記調整部は、内部クロックに基づいて、前記有効信号を出力するタイミングを前記有効信号出力部へ指示し、前記内部クロックとデータストローブ信号との位相差を用いて、フライトタイムを算出することを特徴とする請求項２または３記載の遅延調整装置。
【請求項５】
前記調整部は、前記要求元が使用する要求元クロックを内部クロックとして用いることを特徴とする請求項４記載の遅延調整装置。
【請求項６】
前記データ取得部は、少なくとも、
前記有効信号に応じて前記データストローブ信号を有効にし、有効にした信号を出力するマスク部と、
前記マスク部が出力する信号を用いて、前記データ信号からデータ値を取り出すデータ値取り出し部と、
前記取り出したデータ値を前記要求元クロックに応じて遅延させる遅延部と、を備えることを特徴とする請求項５記載の遅延調整装置。
【請求項７】
前記制御部は、前記要求元がリードコマンドを発行する通常モードと、自己がリードコマンドを発行し、フライトタイムを算出する調整モードとを備え、
前記通常モードにおいて、
前記調整部は、算出したフライトタイムに基づいて、前記要求元から前記リードコマンドが発行された後、前記有効信号を出力するまでの遅延時間を前記有効信号出力部へ通知し、
前記有効信号出力部は、前記リードコマンドが発行されてから前記遅延時間経過後、前記有効信号を出力し、
前記マスク部は、前記有効信号を用いて、前記データストローブ信号を有効にすることを特徴とする請求項６記載の遅延調整装置。
【請求項８】
前記データストローブ信号は、データ信号がデータを転送する期間と、前記データを転送する期間の前段階のプリアンブルとを有し、
前記調整モードにおいて、
前記調整部は、自己が発行したリードコマンドに応じて、前記データストローブ信号を取り込むまでの時間を前記遅延時間として前記有効信号出力部へ通知し、前記リードコマンドの発行と前記遅延時間の通知とを複数繰り返すことによって、複数のタイミングにおけるデータストローブ信号の値を取り出し、前記データストローブ信号がプリアンブルである期間を検出することによって、前記フライトタイムを算出することを特徴とする請求項７記載の遅延調整装置。
【請求項９】
前記調整部は、前記リードコマンドを発行するときに、プルアップすることによって、前記データストローブ信号をハイインピーダンス状態よりハイレベルに調整させることを特徴とする請求項８記載の遅延調整装置。
【請求項１０】
前記メモリは、ＤＤＲ  ＳＤＲＡＭ（Double Data Rate Synchronous Dynamic Random Access Memory）であることを特徴とする請求項１乃至９のいずれか一項に記載の遅延調整装置。
【請求項１１】
前記請求項１乃至１０のいずれか一項に記載の遅延調整装置と、
前記遅延調整装置が出力するデータ値を処理する処理装置と、を備える半導体装置。
【請求項１２】
前記処理装置は、前記遅延調整装置へ自己が用いる内部クロックを出力し、
前記遅延調整装置は、前記内部クロックを用いて前記ストローブ値を取り込むことを特徴とする請求項１１記載の半導体装置。
【請求項１３】
前記処理装置と前記遅延調整装置との一方は、さらに、前記内部クロックを用いて、前記データ取得部が出力するデータ値を取り込むフリップフロップを備えることを特徴とする請求項１２記載の半導体装置。
【請求項１４】
前記処理装置がリードコマンドを発行する通常モードと、前記遅延調整装置がリードコマンドを発行し、フライトタイムを算出する調整モードとを備え、
前記処理装置は、前記遅延調整装置へ調整モードと通常モードとのいずれのモードを選択するかを示すモード指示情報を通知し、
前記制御部は、調整モードを示すモード指示情報を受け取ったとき、リードコマンドを発行し、前記フライトタイムを算出することと特徴とする請求項１２または１３記載の半導体装置。
【請求項１５】
メモリへ接続し、リードコマンドに応じて、メモリから出力されるデータ信号及びデータストローブ信号を用いて、データを取り込むタイミングを調整する遅延調整装置の遅延調整方法であって、
前記メモリへリードコマンドを発行し、
前記リードコマンドに応じて、異なるタイミングで前記データストローブ信号の値を取り込み、
取り込んだ複数のデータストローブ信号の値を用いて、フライトタイムを算出し、
前記フライトタイムに基づいて前記データストローブ信号を有効にする期間を制御する遅延調整方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリとメモリコントローラ間の遅延調整に関し、特にＤＤＲ  ＳＤＲＡＭ（Double Data Rate Synchronous Dynamic Random Access Memory）とメモリコントローラ間の遅延調整に関する。
【背景技術】
【０００２】
ＤＤＲ  ＳＤＲＡＭは、高速な転送機能を有するメモリであり、具体的には、回路間の同期をとるためのクロック信号の立ち上がり時と立ち下がり時の両方でデータの読み書きを行う。すなわち、ＤＤＲ  ＳＤＲＡＭでは、外部クロックの２倍の周波数でデータの入出力を行う。このため、ＳＤＲ  ＳＤＲＡＭ（Single Data Rate Synchronous Dynamic Random Access Memory）よりもデータを確実に読み取れる幅（確定データの幅）が狭くなる。また、ＤＤＲ  ＳＤＲＡＭから出力されるデータを、正確に読み出すタイミングを通知する必要がある。そこで、ＤＤＲ  ＳＤＲＡＭでは、データストローブ信号（DQS）を用いている。データストローブ信号は、データを転送するタイミングを通知する信号である。具体的には、ＤＤＲ  ＳＤＲＡＭは、データ信号（DQ）とデータストローブ信号とを同時に出力する。データ転送を要求する要求元は、リードコマンドの発行に応じて、データ信号とデータストローブ信号をメモリから受け取る。そして、データストローブ信号に応じてデータ信号からデータを取り込む。このような動作が必要なため、メモリと要求元との間にメモリコントローラが配置される。ここでは、メモリコントローラは、メモリと要求元との間に配置され、メモリへアクセスする動作を制御する機能全般を含むものとする。
【０００３】
また、要求元がメモリへリードコマンドを発行した場合、メモリからメモリコントローラまでの配線長に応じて、要求元へデータが届くまでの時間（フライトタイム：flight time）に差が生じる。このため、要求元は、データを取り込むタイミングを決定することが困難になる。特に、ＤＤＲ  ＳＤＲＡＭでは、読み出しの動作速度が速くなっているため、動作クロック周期に対してメモリとメモリコントローラ間のフライトタイムを無視することができなくなる。
【０００４】
そのため、データストローブ信号の受信タイミングにフライトタイム分の遅延を考慮した構造がメモリコントローラ内に必要となる。また、実装条件（例えば、メモリからメモリコントローラまでの配線長）によりフライトタイムはまちまちである。このため、メモリコントローラ設計時には受信タイミングを一意的に決めることはできない。従って、一定の範囲のフライトタイムに対応できる機能（例えば、回路）をメモリコントローラに搭載する必要である。
【０００５】
例えば、特許文献１には、装置初期化時に期待値を用いて遅延時間を調整する技術が開示されている。具体的には、メモリへキャリブレーション用パターンを生成し、装置初期化時にこのパターンを期待値としてＰＡＳＳ／ＦＡＩＬ判定を行う。判定結果に基づいて、最適な遅延時間になるように調整する。図６は、特許文献１に開示されているメモリインタフェース制御回路の構成を示す回路図である。特許文献１に開示された回路は、次の機能を行う制御回路であるといえる。すなわち、ＤＱＳの取り込みタイミングを内部で生成し、実際にＤＲＡＭに対して読み書きを行いデータが正しく取り込めたか期待値照合を行う。そしてＤＱＳ取り込みタイミングを少しずつずらしながら繰り返すことによって最適なタイミングを選択する。
【０００６】
また、特許文献２には、プリアンブルが始まるタイミング（インピーダンス状態からロウレベルへの変化）を検出するための比較器を搭載する回路が開示されている。図７は、特許文献２に開示されているデータストローブ受信機を示す図である。さらに、特許文献３には、データストローブ信号の遅延変動による不安定動作を解消する技術が開示されている。図８は、特許文献３に開示されたメモリリード制御回路の構成を示すブロック図である。メモリリード制御回路は、リード要求信号がアクティブとなった場合にデータストローブ信号をプルアップするようにプルアップ回路１１ｓを制御する。プリアンブルを受信すると信号がハイレベルからロウレベルになる。このタイミングで制御回路１４ｓのＥｎａｂｌｅによって、ＤＱＳの入力を有効にする。その後ＤＱＳの信号エッジをバーストレングスの数だけカウントしたあと、制御回路１４ｓのＥｎａｂｌｅによってＤＱＳの入力を無効にする。
【０００７】
特許文献１の回路は、事前にキャリブレーション用パターンをメモリへデータを書き込む回路と、メモリから読み出した値と比較する回路とが必要となり、回路規模が大きくなっていた。
【０００８】
特許文献２の制御回路では独立した２ｎｄ  Ｖｒｅｆを要求するため比較器、電圧源ともに追加しなければならず回路が大きくなる。また、特許文献２または特許文献３の制御回路は、ＤＱＳ信号を取り込むタイミングを検出しているものの、フライトタイムを把握していない。フライトタイムがわからない構造であるため、後段の回路（要求元）にデータを渡すためにクロックののせかえが必要となっていた。このような場合、例えばＦＩＦＯを用いるが、このために回路規模が大きくなっていた。
【特許文献１】特開２００５−２７６３９６号公報
【特許文献２】特開２００３−２２３７８６号公報
【特許文献３】特開２００８−１０３０１３号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
上述したように、メモリとメモリコントローラ間のフライトタイムは、配線長により異なるため、設計段階では算出することができない。このため、メモリコントローラ内でフライトタイムの調整に対応する回路が必要であった。しかしながら、フライトタイムの調整に対応する回路規模が大きくなっているという問題があった。
【課題を解決するための手段】
【００１０】
本発明に係る遅延調整装置の一態様は、メモリへ接続し、リードコマンドに応じて、メモリから出力されるデータ信号及びデータストローブ信号を用いてデータを取り込むタイミングを調整する遅延調整装置であって、前記データ信号と、前記データストローブ信号とを入力し、前記データストローブ信号に応じてデータ信号のデータ値を出力するデータ取得部と、前記メモリへリードコマンドを発行し、前記リードコマンドに応じて前記データストローブ信号の値を取り込むことによって、フライトタイムを算出し、前記フライトタイムに基づいて前記データストローブ信号を有効にする期間を制御する制御部と、を備える。制御部は、リードコマンドを発行し、リードコマンドに応じてデータストローブ信号の値を複数のタイミングで取り込む。そして、複数のデータストローブ信号の値を用いて、フライトタイムを算出する。フライトタイムを用いることにより、データ信号及びデータストローブ信号がデータ取得部に到達する時間を精度よく予測することができる。このようにして、データストローブ信号を用いてフライトタイムを見積る回路を実現する。これにより、データ信号を用いてフライトタイムを見積る場合に比べ、回路規模を小さくすることが期待できる。
【００１１】
また、本発明に係る半導体装置の一態様は、上述した遅延調整装置と、前記遅延調整装置が出力するデータ値を処理する処理装置と、を備える。上述した遅延調整装置を用いることにより、半導体装置全体の回路規模を小さくすることが期待できる。また、処理装置が用いる内部クロックを遅延調整装置に用いることにより、内部クロックに同期させてデータ信号のデータ値を取り込むことができる。
【００１２】
さらに、本発明に係る遅延調整方法の一態様は、メモリへ接続し、リードコマンドに応じて、メモリから出力されるデータ信号及びデータストローブ信号を用いて、データを取り込むタイミングを調整する遅延調整装置の遅延調整方法であって、前記メモリへリードコマンドを発行し、前記リードコマンドに応じて、異なるタイミングで前記データストローブ信号の値を取り込み、取り込んだ複数のデータストローブ信号の値を用いて、フライトタイムを算出し、前記フライトタイムに基づいて前記データストローブ信号を有効にする期間を制御する。
【発明の効果】
【００１３】
本発明によれば、フライトタイムに対応する回路の規模を小さくすることが可能となる。これにより、チップのサイズを小さくすることができるため、コストを削減することができる。
【発明を実施するための最良の形態】
【００１４】
以下、本発明の実施形態について、図面を参照しながら説明する。説明の明確化のため、以下の記載及び図面は、適宜、省略、及び簡略化がなされている。各図面において同一の構成または機能を有する構成要素および相当部分には、同一の符号を付し、その説明は省略する。
【００１５】
以下の各実施形態では、メモリの一例として、ＤＤＲ  ＳＤＲＡＭを用いて説明する。遅延調整装置は、ＤＤＲ  ＳＤＲＡＭから出力されるデータストローブ信号を用いて、フライトタイムを算出し、データ信号からデータ値を適切に取り出すタイミングを調整する。以下の各実施形態では、遅延調整装置の一例として、遅延調整回路によって実現する場合を一例として説明する。また、メモリへアクセス要求（例えば、リードコマンドの発行）する装置（回路）を要求元ということもある。要求元（処理回路、内部回路ともいう）は、メモリコントローラを介してメモリへアクセスすることを前提とする。ここでは、メモリコントローラは、メモリへのアクセスを制御する機能を備える装置（回路）とする。本発明に係る遅延調整装置は、メモリコントローラの機能の一部を実現することになる。
【００１６】
ＤＤＲ  ＳＤＲＡＭは、リードコマンドに応じて、データ信号とデータストローブ信号を出力する。データ信号（以下、適宜、「ＤＱ」という）は、リードコマンドに応じたデータを転送する信号である。データストローブ信号（以下、適宜、「ＤＱＳ」という）は、データを転送するタイミングを通知する信号であり、データ信号と同時にメモリから出力される。
【００１７】
（実施形態１）
図１は、本発明に係る実施形態１の遅延調整装置の構成例を示すブロック図である。遅延調整回路１は、データ取得部１０と制御部２０とを備える。
【００１８】
データ取得部１０は、ＤＤＲ  ＳＤＲＡＭからデータ信号とデータストローブ信号とを入力し、データストローブ信号に応じてデータ信号のデータ値を出力する。データ取得部１０は、データ値を出力するタイミングを、制御部２０によって制御される。具体的には、データストローブ信号を有効にする期間を制御部２０が調整することによって制御される。
【００１９】
制御部２０は、データストローブ信号を用いて、フライトタイムを算出する。具体的には、制御部２０は、ＤＤＲ  ＳＤＲＡＭへリードコマンドを発行し、データストローブ信号の値を取り込む。取り込んだデータストローブ信号の値を用いて、フライトタイムを算出する。また、制御部２０は、算出したフライトタイムに基づいて、データストローブ信号を有効にする期間を制御する。すなわち、制御部２０は、データストローブ信号を有効にする期間をデータ取得部１０に通知することによって、データ取得部１０がデータストローブ信号に応じてデータ値を出力するタイミングを制御する。データ取得部１０と制御部２０との詳細については後述する。
【００２０】
図２は、ＤＤＲ  ＳＤＲＡＭメモリと、図１に示す遅延調整回路１を搭載した半導体装置との構成例を示すブロック図である。半導体装置８は、遅延調整回路１、及び処理回路７を備える。また、図２中、符号ＡからＨは、信号を示す。後述する図５の説明で用いる。なお、図２では、本発明に直接関係しないメモリコントローラの機能の構成要素を省略して示している。
【００２１】
処理回路７は、コマンドを発行し、所望のデータをＤＤＲ  ＳＤＲＡＭ９から読み出し、読み出したデータを利用する。処理回路７は、リードコマンドを発行することによって、ＤＤＲ  ＳＤＲＡＭ９へデータを要求するため、「要求元」ということもある。処理回路７は、フリップフロップ７１を備える。フリップフロップ７１は、処理回路７で用いる内部クロックに応じて、遅延調整回路１からデータ値を取り込み、出力する。出力されたデータ値は、処理回路７内の処理に用いられる。処理回路７内の具体的な処理については、処理回路７の機能に応じて異なるため図面での回路の例示及び説明を省略する。
【００２２】
また、処理回路７は、モード指示情報を遅延調整回路１へ出力する。モード指示情報は、調整モードと、通常モードとのいずれかを指示する。調整モードは、フライトタイムを算出するモードである。通常モードは、処理回路７から発行されるコマンドが実行されるモードである。さらに、処理回路７は、内部クロック、ＤＱＳ有効信号（ＤＱＳマスク信号）を出力する。ＤＱＳ有効信号は、リードコマンドの発行に応じて、設計上の計測可能な遅延時間遅延させてデータストローブ信号を有効にする信号である。
【００２３】
遅延調整回路１は、ＤＤＲ  ＤＲＡＭ９から読み出したデータを、処理回路７に出力する。また、フライトタイムを算出する。また、データ値を取り込むタイミングを調整する。遅延調整回路１は、調整モードと、通常モードとを有する。調整モードでは、遅延調整回路１は、フライトタイムを算出する。通常モードでは、遅延調整回路１は、フライトタイムに基づいて、データ信号からデータを取り込むタイミングと、取り込んだデータ値を処理回路７に出力するタイミングとの少なくとも一方を制御する。
【００２４】
なお、図２は、図１に示す遅延調整回路１と、処理回路７及びＤＤＲ  ＳＤＲＡＭ９との関係を説明するために示したものである。従って、半導体装置８に搭載する処理回路７は一例であり、これらに限られることなはなく、異なる接続状態である場合、その他の構成要素を含む場合であってもよい。
【００２５】
続いて、遅延調整回路１が備えるデータ取得部１０と制御部２０との詳細について図１と図２を参照して説明する。
【００２６】
データ取得部１０は、バッファ（第１バッファ）１１、バッファ（第２バッファ）１２、マスク回路（マスク部）１３、遅延回路（ＤＤＬ、ストローブ信号遅延部）１４、フリップフロップ（データ値取り出し部）１５、及び可変遅延回路（遅延部）１６を備える。また、制御部２０は、調整回路（調整部、Calibration回路）２１、有効信号出力回路（有効信号出力部、遅延調整回路）２２、ストローブ値取得回路（ストローブ値取得部）２３、スイッチ２４、２５、及びバッファ（第３バッファ）２６、及びバッファ（第４バッファ）２７を備える。
【００２７】
バッファ１１、１２は、データ信号、データストローブ信号それぞれを入力する入力バッファである。
【００２８】
マスク回路１３は、データストローブ信号が有効な期間、データストローブ信号を出力し、無効な期間、データストローブ信号をマスクする。具体的には、マスク回路１３は、バッファ１２からデータストローブ信号を入力し、有効信号出力回路２２から有効信号を入力し、データストローブ信号と有効信号との論理積を出力する。有効信号は、データストローブ信号が有効な期間を示す信号である。ここでは、ハイレベルを有効な期間とする。マスク回路１３は、有効信号に応じてデータストローブ信号を有効（アクティブ）にする。また、有効信号は、制御部２０において生成される。すなわち、マスク回路１３は、制御部２０からの指示に基づいて、データストローブ信号を有効にする。
【００２９】
遅延回路１４は、データストローブ信号の位相を、例えばクロックの半周期ほどずらす。データ信号とデータストローブ信号とは同位相で出力されることから、データストローブ信号に応じてデータ信号からデータ値を取り込むタイミングが確実にならない（窓がない）。このため、遅延回路１４は、データストローブ信号をずらず制御をおこなう。
【００３０】
フリップフロップ１５は、遅延回路１４から出力されるデータストローブ信号に応じて、データ信号からデータ値を取り込む。
【００３１】
可変遅延回路１６は、制御部２０からの指示に基づいて、データ値の出力を遅延させる。これにより、処理回路７で用いる内部クロックでデータ値を確実に取り込めるようにする。
【００３２】
調整回路２１は、フライトタイムを算出し、データストローブ信号を有効にする期間を制御する。具体的には、調整回路２１は、調整モードにおいて、フライトタイムを算出し、通常モードにおいて、フライトタイムを用いてデータストローブ信号を有効にする期間を制御する。調整回路２１は、処理回路７からモード指示情報を入力し、モード指示情報に基づいて、調整モードと通常モードとを、スイッチ２５、２６を用いて切り替える。
【００３３】
調整モードにおいて、調整回路２１は、処理回路７が出力するＤＱＳ有効信号に替えて調整用有効信号を出力する。調整用有効信号は、有効信号出力回路２２が有効信号、ここでは、ストローブ値取得回路２３がデータストローブ信号の値を取り込むタイミングを指示する信号である。また、調整回路２１は、リードコマンドをＤＤＲ  ＳＤＲＡＭ９へ発行する。
【００３４】
フライトタイムを算出する場合、調整回路２１は、リードコマンドを発行し、有効信号出力回路２２へ有効信号を出力するタイミングを指示する。このとき、異なるタイミングで有効信号を出力するように指示する。具体的には、調整回路２１は、遅延量（遅延時間）を有効信号出力回路２２へ出力する。調整回路２１は、複数のリードコマンドの発行し、それぞれについて、異なるタイミングで有効信号が出力されるように、遅延量を変化させる。このようにして、複数のタイミングでデータストローブ信号の値を取り込み、取り込んだ値を用いてフライトタイムを算出する。なお、一つのリードコマンドの発行について、複数のタイミングで有効信号を出力し、データストローブ信号の値を複数取り込んでもかまわない。
【００３５】
通常モードにおいて、フライトタイムを用いてデータストローブ信号を有効にする期間を制御する場合、調整回路２１は、調整回路２１は、フライトタイムに基づいて算出した遅延量を有効信号出力回路２２へ出力する。これにより、有効信号は、処理回路７が指定する設計上の計測可能な遅延時間とフライトタイムとの時間、有効信号を有効にする時間を遅らせる。これにより、実際にデータ信号がデータ取得部１０に到達する時間にデータストローブ信号を有効にし、確実にデータを取り込むことを可能にする。
【００３６】
有効信号出力回路２２は、処理回路７からスイッチ２５を介して、ＤＱＳ有効信号と調整用有効信号とのいずれかを有効信号として入力する。また、有効信号出力回路２２は、調整回路２１から通知された時間（遅延量）経過後、有効信号を出力する。有効信号は、マスク回路１３とストローブ値取得回路２３へ出力される。
【００３７】
ストローブ値取得回路２３は、有効信号に応じてデータストローブ信号の値を取り込む。すわなち、有効信号が有効になったタイミングでデータストローブ信号の値をフリップフロップに取り込む。取り込んだストローブ値は、調整回路２１へ出力される。
【００３８】
スイッチ２４は、処理回路７が発行するコマンドと、調整回路２１が発行するリードコマンドとのいずれかを、モード指示情報に応じて選択するスイッチである。スイッチ２５は、処理回路７が出力する有効信号と、調整回路２１が出力する有効信号とのいずれかを、モード指示情報に応じて選択するスイッチである。ここでは、スイッチ２４及び２５は、通常モードでは、処理回路７から出力される信号を選択し、調整モードでは、調整回路２１から出力される信号を選択する。
【００３９】
バッファ２６は、スイッチ２４が選択したコマンドをＤＤＲ  ＳＤＲＡＭ９へ出力する出力バッファである。バッファ２７は、内部クロックをＤＤＲ  ＳＤＲＡＭ９へ出力する出力バッファである。
【００４０】
ここで、フライトタイムは、メモリコントローラからＤＤＲ  ＳＤＲＡＭ９およびＤＤＲ  ＳＤＲＡＭ９からメモリコントローラの配線による遅延時間である。図２では、半導体装置８とＤＤＲ  ＳＤＲＡＭ９との間を信号が転送される時間である。すなわち、半導体装置８内で発生する遅延については、設計段階で決定されるため、遅延時間を算出することができる（設計上の計測可能な遅延時間）。しかしながら、半導体装置８とＤＤＲ  ＳＤＲＡＭ９との間は、配線長により遅延時間が異なる。この配線長は、半導体装置８を搭載する装置によって異なるため、半導体装置８の設計時には、算出することができない。従って、遅延調整回路１によって算出する必要がある。
【００４１】
また、遅延調整回路１は、処理回路７が用いる内部クロックと同期したクロックを用いる。従って、調整回路２１は、内部クロックで動作する。図１、２では、内部クロックが処理回路７から調整回路２１及びＤＤＲ  ＳＤＲＡＭ９へ出力されていることが示されている。
【００４２】
遅延調整回路１は、図１に示す構成をとることにより、制御部２０は次の機能を実現する。制御部２０は、内部クロックに対して既知の遅延を付加した調整用有効信号を、有効信号出力回路２２から出力する。また、制御部２０は、有効信号出力回路２２から出力する有効信号のタイミングでデータストローブ信号を取り込むフリップフロップ（ストローブ値取得回路２３）を備える。そして、制御部２０は、データストローブ信号に応じてデータ信号のデータ値を取り込むフリップフロップ１５と内部クロックで動作するフリップフロップ７１との間に可変遅延回路１６を制御する信号を出す。
【００４３】
次に、遅延調整回路１の動作を説明する。調整モード時、すなわちｃａｌｉｂｒａｔｉｏｎ実行時に、調整回路２１は、まずＤＤＲ  ＳＤＲＡＭ９に対してリードコマンド（read command）を発行する。このコマンドに応じたＤＱとＤＱＳがＤＤＲ  ＳＤＲＡＭ９からあらかじめ設定したクロック数（設計上の計測可能な遅延時間）＋実装基板上のフライトタイムの後に送られてくる。このときＤＱＳと内部クロックの位相関係は不明であるが、データストローブ信号は必ず決まった波形を返してくる。
【００４４】
ここでデータストローブ信号の波形について図３を用いて説明する。データストローブ信号は、Ｈｉ−z状態（リード・プリアンブル）、プリアンブル、有効データ期間、ポストアンブル、及びＨｉ−z状態の波形を形成する。データストローブ信号は、リードコマンドを受け取るまでは、ハイインピーダンス状態（Ｈｉ−z状態）となっている。リードコマンドを受け取るとハイインピーダンス状態からロウレベルに変化する。この最初のロウレベルの期間がプリアンブルである。プリアンブルは、最初のデータが出力される約１クロック前に生ずる。有効データ期間は、データが転送される期間であり、有効データがある期間、トグルする。ポストアンブルは、最後のデータエッジ後の期間であり、再びハイインピーダンス状態になる。
【００４５】
データストローブ信号は、リードコマンドを発行してから、設計上の計測可能な遅延時間（リードレイテンシー：read latency）と、フライトタイム経過後、入力バッファに到達することになる。リードレイテンシーは、設計上計測（算出）できる時間であり、処理回路７及び調整回路２１は、予めリードレイテンシーの時間を保持する。以下適宜、リードコマンド発行時における設計上可能な遅延時間をリードレイテンシーという。フライトタイムは上述したように、配線長等により異なってくる。このため、調整回路２１によって算出する。本実施形態では、調整回路２１は、データストローブ信号のプリアンブルの期間を検出することによって、フライトタイムを算出する場合を説明する。データストローブ信号は、プリアンブルのストローブ値の変化が、データ転送期間の２倍になっている。このため、プリアンブルのストローブ値の変化を検出することによって、確実にデータ転送期間の開始を把握することができる。従って、プリアンブルを用いてフライトタイムを算出することが好ましい。
【００４６】
具体的な動作について説明する。処理回路７は、フライトタイムの調整を実施するタイミングにおいて、モード指示情報を調整モードに指定し、調整回路２１へ出力する。調整回路２１は、モード指示情報に応じて、スイッチ２４及びスイッチ２５を調整モードへ切り替える。調整回路２１は、リードコマンドをスイッチ２４へ出力し、調整用有効信号をスイッチ２５へ出力する。また、調整回路２１は、有効信号出力回路２２へ通知する遅延量を決定し、通知する。ストローブ値取得回路２３は、有効信号出力回路２２が出力した有効信号に応じてデータストローブ信号の値（ストローブ値）を取り込む。そこで、調整回路２１は、有効信号出力回路２２が有効信号を出力するタイミングを制御する。具体的には、有効信号出力回路２２は、調整回路２１から通知される遅延量に応じて、調整用有効信号を遅延させて出力する。従って、調整回路２１は、調整モードにおいて、リードコマンドを発行し、遅延量を変えながら、ストローブ信号の値を取得することを繰り返す。調整回路２１は、プリアンブルが予想される遅延量を算出し、複数のストローブ値を取得して、実際にプリアンブルがバッファ１１に取り込まれるタイミングを検出する。
【００４７】
図４に示す模式図を用いて、ストローブ値取得回路２３が取得するストローブ値の値と遅延量との関係を説明する。図４では、タイミングＩからタイミングＶの５つの遅延量を用いて、プリアンブルの期間を検出する具体例を示している。データストローブ信号の値は、タイミングＩ及びＶでは、ハイレベル（１）。タイミングＩＩ、ＩＩＩ及びＩＶではロウレベル（０）である。従って、調整回路２１は、タイミングＩＩＩからＩＶの期間がプリアンブルであることが検出する。
【００４８】
図１、及び図２に示すように、処理回路７の内部クロックは、ＤＤＲ  ＳＤＲＡＭ９へ出力される。また、リードコマンドは、処理回路７または調整回路２１から出力されが、どちらも内部クロックに応じて動作する回路である。ＤＤＲ  ＳＤＲＡＭ９は、内部クロックに応じてデータストローブ信号及びデータ信号を生成し、出力する。従って、内部クロックに応じたタイミングでデータストローブ信号の値が変化することになる。このため、調整回路２１は、プリアンブルの位置を検出することにより、データストローブ信号と内部クロックとの位相関係を検出することができる。すなわち、調整回路２１は、データストローブ信号と内部クロックとの位相差を算出できる。調整回路２１は、位相差として、１クロック未満の情報を保持し、位相差が１クロック以上になる場合には、何クロック位相差があるかを位相差情報として処理回路７へ出力する。
【００４９】
以上説明したように、制御部２０では、ストローブ値取得回路２３は、有効信号出力回路２２を通過した有効信号でデータストローブ信号のストローブ値を取り込む。調整回路２１は、リードコマンド発行とストローブ値の取り込みを遅延量を変えながら繰り返し行う。これにより、調整回路２１は、内部クロックに対してデータストローブ信号がどのような位相関係で取り込まれるかを確認することができる。この結果、調整回路２１は、位相関係からフライトタイムを知ることができる。
【００５０】
このようにして、調整回路２１は、内部クロックとデータストローブ信号の位相差を取得する。これにより、調整回路２１は、フライトタイムの時間を遅延量として、すなわち、通常モードにおいて、有効信号の出力を遅延させるため、フライトタイムに相当する遅延量を有効信号出力回路２２へ通知する。有効信号出力回路２２は、通知された遅延量を用いて、処理回路７から出力されるＤＱＳ有効信号を出力するタイミングを、遅延させ、出力する。このようにして、有効信号出力回路２２は、リードレイテンシーとフライトタイムの時間を遅らせた有効信号をマスク回路１３へ出力する。
【００５１】
また、データストローブ信号と内部クロックの位相関係を取得することにより、データストローブ信号のタイミングで取り込まれるデータ信号の値を内部クロックに渡すときに発生する位相差を算出することができる。すなわち、フリップフロップ１５が保持するデータ値は、内部クロックに応じてデータを取り込む場合にはレーシングの発生を考慮する必要がある。調整回路２１は、データストローブ信号と内部クロックとの位相関係に基づいて、フリップフロップ１５が出力するデータ値を遅延させる。具体的には、調整回路２１は、位相関係に基づいて算出されたデータ値用遅延量を可変遅延回路１６へ通知する。可変遅延回路１６は、フリップフロップ１５から出力されたデータ値を、通知されたデータ値用遅延量遅延させ、フリップフロップ７１へ出力する。これにより、フリップフロップ７１は、内部クロックに応じて確実にデータ値が取り込むことができる。このように、調整回路２１及び可変遅延回路１６は、レーシングが起こらないようにデータ値に対して最適な遅延を付加するよう制御する。これにより確実にデータ値を内部クロックに渡すことができる。
【００５２】
図５は、通常モードにおいて、リードコマンドが発行された後の信号の値を示したタイミングチャートである。図５中、ＡからＨは、図２の信号を示す符号ＡからＨに対応する。また、ＤＤＲ  ＳＤＲＡＭは、ＤＲＡＭと示す。以下では、ＡからＨの各信号を、例えば「信号Ａ」のようにいう。図５の最上段と下から２段目とに、内部クロックの信号を示す。２段目に、ＤＤＲ  ＳＤＲＡＭ９から出力されるときのデータ信号、すなわち、リードレイテンシーとＤＤＲ  ＳＤＲＡＭ９までのフライトタイムの時間遅延した状態のデータ信号を示す。フライトタイムは、バッファ２６からコマンドが発行されてからＤＤＲ  ＳＤＲＡＭ９までのフライトタイムとＤＤＲ  ＳＤＲＡＭ９からバッファ１１までのフライトタイムとの合計である。
【００５３】
バッファ１１は、リードレイテンシーとフライトタイムとの時間遅延したデータ信号（信号Ａ）を入力する。バッファ１２は、同様に、リードレイテンシーとフライトタイムとの時間遅延したデータストローブ信号（信号Ｂ）を入力する。有効信号出力回路２２は、処理回路７から出力された有効信号を、リードレイテンシーとフライトタイムの時間遅延させた有効信号（信号Ｃ）を出力する。
【００５４】
マスク回路１３は、データストローブ信号（信号Ｂ）と有効信号（信号Ｃ）との論理積の信号（信号Ｄ）を出力する。遅延回路１４は、信号Ｄの位相を９０度ずらした信号Ｅを出力する。フリップフロップ１５は、信号Ａを信号Ｅに応じて取り込んだ信号Ｆを出力する。このとき、信号Ｅは、データストローブ信号（信号Ｂ）をフライトタイム分遅延させた有効信号（信号Ｃ）によってアクティブにした信号である。このため、フリップフロップ１５は、フライトタイムの遅れを考慮して、データ信号を取り込むことが可能になっている。
【００５５】
可変遅延回路１６は、調整回路２１から通知された遅延量に応じて、信号Ｆを遅延させて出力する。すなわち、可変遅延回路１６は、信号Ｇを出力するタイミングを調整し、フリップフロップ７１が内部クロックに応じてデータ値を取り込み易いようする。フリップフロップ７１は、内部クロックに応じて、信号Ｇからデータ値を取り込み、信号Ｈを出力する。
【００５６】
図５に示すように、データストローブ信号（信号Ｂ）は、内部クロックとは、非同期になっている。従って、データストローブ信号に応じてデータ信号からデータ値を取り込んだ信号Ｆも内部クロックとは非同期となっている。そこで、可変遅延回路１６によって信号Ｆを遅延させ、フリップフロップ７１が内部クロックに応じてデータ値を取り込み易いように位相をずらす。すなわち、遅延調整回路１は、データストローブ信号と内部クロックとの位相関係のずれ、位相差を調整している。これは、遅延調整回路１（調整回路２１）が位相差を把握していることによって実現される。このようにして、遅延調整回路１は、フリップフロップ７１において、レーシングを回避するように、信号Ｆの出力を調整する。また、この調整機能により、ＦＩＦＯを必要としないため、最短の時間で遅延調整回路１から処理回路７へデータを渡すことができる。
【００５７】
以上説明したように、本実施形態によれば、データストローブ信号を用いて、フライトタイムを見積もることができる。このとき、データストローブ信号を用いることにより、特許文献１の技術に比べ、回路規模を小さくすることができる。具体的には、特許文献１では、ＤＤＲ  ＳＤＲＡＭ９へデータを書き込み、書き込んだデータが正しく読み込めるかを判定していた。この判定結果を用いて、処理回路７との位相関係を検出し、フライトタイムを見積もっていた。従って、特許文献１の技術では、ＤＤＲ  ＳＤＲＡＭ９にデータを書き込む回路、データを読み込む回路、データと期待値を比較する回路すべてが必要になり、回路規模が大きくなっていた。これに対して、本実施形態の回路では、データ信号の値は用いないため、データを書き込む回路や期待値比較回路を必要としない。これにより、フライトタイムの算出するために必要な回路規模を小さくすることができる。
【００５８】
また、データの期待値（キャリブレーション用パターン）が必要ない。すなわち、ＤＤＲ  ＳＤＲＡＭ９へデータを書き込む必要がない。このため、処理回路７は、ＤＤＲ  ＳＤＲＡＭ９にアクセスしない期間において、遅延調整回路１を調整モードに移行させ、制御部２０にフライトタイムの算出させることができる。従って、本実施形態の回路は初期化中だけでなく通常動作中にも調整回路を動作させタイミングを微調整することができる。このため、動作中の環境変化により、フライトタイムが変化した場合にも対応することができる。例えば、特許文献１の技術では、動作中にフライトタイムを調整する場合、電源をＯＦＦにしてリスタートさせることになる。本実施形態では、装置の電源がＯＦＦにすることなく、動作中にフライトタイムを調整し、環境の変化に対応させることができる。
【００５９】
また、フライトタイムの算出において、遅延調整回路１は、処理回路７の内部クロックを用いる。このため、遅延調整回路１は、内部クロックとデータストローブ信号との位相関係を取得することができる。これにより、遅延調整回路１は、内部クロックとデータストローブ信号との位相差を用いて、データ信号から取り出したデータ値を内部クロックが取り込み易いように制御することができる。すなわち、遅延調整回路１は、可変遅延回路１６のデータ値用遅延量をフライトタイムに基づいて制御する。これにより、内部クロックに最小の遅延でデータを渡すことができる。これに対し、内部クロックとデータストローブ信号との位相関係がわからない場合、非同期クロックとして扱い、ＦＩＦＯが必要になる。すなわち、ＦＩＦＯによって、位相関係のわからない信号を同期させている。このため、遅延が余分に必要になったり、回路規模が大きくなる。本実施形態の回路では、ＦＩＦＯを必要としないため、ＦＩＦＯによる遅延や回路規模の増加を防止することができる。
【００６０】
また、遅延調整回路１は、フライトタイムを用いて、有効信号を生成する。具体的には、遅延調整回路１は、フライトタイムを把握しているため、処理回路７がリードコマンド発行後、有効信号出力回路２２が有効信号を出力するタイミングを制御することができる。より具体的には、データストローブ信号がバッファ１２に入力するタイミングに合わせて、有効信号出力回路２２及びマスク回路１３を制御することができる。このため、データ取得部１０は、安定してデータストローブ信号を取り込むことができる。
【００６１】
また、本実施形態の遅延調整回路を搭載した半導体装置を用いることにより、実装基盤のフライトタイムに関する制約を与えずに、ＤＤＲ  ＳＤＲＡＭへアクセスする動作を実施させる。また、本実施形態の遅延調整回路は、従来に比べフライトタイムに対応する回路規模を小さくすることができるため、半導体装置のチップサイズを小さくすることが可能となる。従って、コストを削減することができる。
【００６２】
さらに、本実施形態の回路では、データストローブ信号をプルアップすることにより、確実にプリアンブルの期間を検出している。このため、例えば特許文献２のように、ハイインピーダンス状態とロウレベルとを区別する２ｎｄ  Ｖｒｅｆの電圧の設定する必要がなくなる。また、これに要する回路を削減することができる。
【００６３】
（その他の実施形態）
上記実施形態では、メモリの一例としてＤＤＲ  ＳＤＲＡＭを用いて説明したが、これに限られることはない。ＤＤＲ  ＳＤＲＡＭと同様に、リードコマンドの発行に応じて、メモリからデータ信号とデータストローブ信号とを出力するメモリであれは、本発明を適用することが可能である。
【００６４】
遅延調整装置（遅延調整回路）は、処理回路７とともに、一つの半導体装置（１チップ）として製造する例を示した。しかしながら、これに限られるわけではない。一つの半導体装置内にどのような機能（回路）を搭載するかは設計上の問題であり、上記各実施形態に限られることはない。
【００６５】
上記実施形態では、遅延調整装置として回路を用いて説明したが、実現手段として回路（ハードウェア）に限定されることはない。例えば、ハードウェア、ファームウェア、あるいは、ソフトウェアのいずれかあるいはこれらの組み合わせによって実現する場合であってもよい。例えば、一部の機能をプログラムにより実現してもよい。記憶領域に記憶したプログラムをメモリ（ＲＡＭ；Random Access Unit）にロードし、ＣＰＵ（Central Processing Unit）に実行させるようにしてもよい。
【００６６】
上記実施形態では、遅延調整回路１は、処理回路７が用いるクロックを入力し、使用する場合を説明した。処理回路７が用いるクロックとは異なるクロックを用いる場合、可変遅延回路１６において、処理回路７が用いるクロックでデータ値が出力できるように遅延時間を調整する機能を搭載することが好ましい。ＦＩＦＯを用いる場合に比べ、回路規模の小さい機能を実現することがより好ましい。また、ＦＩＦＯを用いる場合に比べ、データ値を処理回路７に出力するまでの時間が短くする機能を実現することがより好ましい。
【００６７】
上記実施形態では、調整回路２１は、プリアンブルの期間を検出してフライトタイムを算出する例を示したが、データ転送期間を用いてフライトタイムを算出する場合であってもよい。データ転送期間のトルグの回数は予め決められている。これを用いて、データストローブ信号の波形の変化を検出し、フライトタイムを算出する方法であってもよい。
【００６８】
上記実施形態では、処理回路７がフリップフロップ７１を備える構成例を示したが、データ取得部１０が、同様の機能のフリップフロップを備えてもよい。この場合、データ取得部１０は、内部クロックに同期させたデータ値を処理回路７へ出力することになる。
【００６９】
なお、本発明は上記に示す実施形態に限定されるものではない。本発明の範囲において、上記実施形態の各要素を、当業者であれば容易に考えうる内容に変更、追加、変換することが可能である。
【図面の簡単な説明】
【００７０】
【図１】本発明に係る実施形態１の遅延調整装置の構成例を示すブロック図である。
【図２】ＤＤＲ  ＳＤＲＡＭメモリと、図１に示す遅延調整回路を搭載した半導体装置との構成例を示すブロック図である。
【図３】データストローブ信号の波形を説明する図である。
【図４】ストローブ値取得回路が取得するストローブ値の値と遅延量との関係を説明する模式図である。
【図５】通常モードにおいて、リードコマンドが発行された後の信号の値を示したタイミングチャートである。
【図６】特許文献１に開示されているメモリインタフェース制御回路の構成を示す回路図である。
【図７】特許文献２に開示されているデータストローブ受信機を示す図である。
【図８】特許文献３に開示されたメモリリード制御回路の構成を示すブロック図である。
【符号の説明】
【００７１】
１  遅延調整回路
７  処理回路
８  半導体装置
９  ＤＤＲ  ＳＤＲＡＭ
１０  データ取得部
１１、１２、２６、２７  バッファ
１３  マスク回路
１４  遅延回路
１５、１７  フリップフロップ
１６  可変遅延回路
２０  制御部
２１  調整回路
２２  有効信号出力回路
２３  ストローブ値取得回路
２４、２５  スイッチ
【図１】
2010122842.tif 000003
【図２】
2010122842.tif 000004
【図３】
2010122842.tif 000005
【図４】
2010122842.tif 000006
【図５】
2010122842.tif 000007
【図６】
2010122842.tif 000008
【図７】
2010122842.tif 000009
【図８】
2010122842.tif 000010