(57)【特許請求の範囲】
【請求項１】
マスターＤＬＬにより決定されたディレイコードに基づき、ＤＤＲメモリからのストローブ信号をスレーブディレイにて遅延させ、前記ＤＤＲメモリからのデータ信号に対するストローブ信号とするＤＤＲメモリコントローラであって、
周波数の異なる複数のクロック信号から周波数選択信号に応じて選択されたクロック信号を前記ＤＤＲメモリに出力するクロック制御回路を備え、
前記クロック制御回路は、
入力された基準クロック信号から前記複数のクロック信号のそれぞれを生成する複数の分周回路と、
前記周波数選択信号を前記複数のクロック信号のそれぞれに同期化させる同期化回路と、
前記同期化回路から出力される前記周波数選択信号に応じたクロック信号を前記複数のクロック信号から選択する選択回路と
を有し、
前記マスターＤＬＬには、前記複数のクロック信号のうち最大周波数のクロック信号がリファレンスクロックとして入力されることを特徴とするＤＤＲメモリコントローラ。
【請求項２】
請求項１に記載のＤＤＲメモリコントローラであって、
前記クロック制御回路は、前記基準クロック信号の周波数を逓倍するＰＬＬ回路を有し、前記複数のクロック信号は、逓倍後の前記基準クロック信号から生成されることを特徴とするＤＤＲメモリコントローラ。
【請求項３】
請求項１又は２に記載のＤＤＲメモリコントローラであって、
前記ディレイコードは、初期化時に決定され、前記ＤＤＲメモリに対して出力されるクロック信号が変わっても変化しないことを特徴とするＤＤＲメモリコントローラ。
【請求項４】
請求項１乃至３のいずれかに記載のＤＤＲメモリコントローラを備えることを特徴とする半導体集積回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＤＤＲメモリ用のＤＤＲメモリコントローラ、及びそのＤＤＲメモリコントローラが搭載された半導体装置に関する。
【背景技術】
【０００２】
ＳＤＲＡＭ（Synchronous Dynamic Random Access Memory）の一種として、高速データ転送が可能なＤＤＲ（Double Data Rate）−ＳＤＲＡＭが知られている。ＤＤＲ−ＳＤＲＡＭは、以下「ＤＤＲメモリ」と参照される。また、ＤＤＲメモリ用のメモリコントローラは、以下「ＤＤＲメモリコントローラ」と参照される。
【０００３】
ＤＤＲメモリとＤＤＲメモリコントローラとの間の高速データ転送においては、「ストローブ信号」と呼ばれる専用の信号が用いられる。具体的には、データ送出側は、データ信号と共にストローブ信号を出力する。そのストローブ信号は、データ信号の出力タイミング毎にＨ／Ｌのトグル動作を繰り返すが、クロック信号とは別の信号である。データ受取側は、クロック信号ではなく受け取ったストローブ信号を参照して、データ信号の取り込みを行う。
【０００４】
例えばデータ読み出し時、ＤＤＲメモリは、読み出しデータを示すデータ信号に加えてストローブ信号を出力する。ＤＤＲメモリコントローラは、受け取ったストローブ信号を参照して、ストローブ信号の立ち上がりエッジ及び立ち下がりエッジのタイミングで、受け取ったデータ信号をラッチする。この時、データ信号が安定した状態でラッチを行うために、ＤＤＲメモリコントローラは、受け取ったストローブ信号を遅延させ、遅延したストローブ信号を参照してデータ信号をラッチする。ストローブ信号を遅延させる手法として、ＤＬＬ（Delay Locked Loop）回路及びディレイ回路を用いる手法が知られている（特許文献１、非特許文献１参照）。
【０００５】
図１は、非特許文献１のＦｉｇ．３０に記載されたＤＤＲメモリコントローラ１４０を示している。このＤＤＲメモリコントローラ１４０は、ＤＤＲメモリから出力されるデータ信号ＤＱ及びストローブ信号ＤＱＳを受け取る。データ信号ＤＱは、例えば８ビットの信号（ＤＱ０〜ＤＱ７）である。図１に示されるように、ＤＤＲメモリコントローラは、スレーブディレイ回路１１０、マスターＤＬＬ回路１２０、及びギア比論理回路１３０を備えている。
【０００６】
スレーブディレイ回路１１０は、ＤＤＲメモリから受け取ったストローブ信号ＤＱＳを遅延させる回路である。具体的には、スレーブディレイ回路１１０は、ディレイコードに応じて遅延段数が変化する可変遅延回路を有しており、その遅延段数に応じた遅延時間ｔＳＤだけストローブ信号ＤＱＳを遅延させる。このスレーブディレイ回路１１０から出力されるストローブ信号ＤＱＳの立ち上がりエッジ及び立ち下がりエッジを参照して、フリップフロップ群はデータ信号ＤＱをラッチする。データ信号ＤＱが安定状態でラッチされるために、典型的には、ストローブ信号ＤＱＳの位相が約９０度シフトするように遅延段数（遅延時間ｔＳＤ）が設定される。言い換えれば、ストローブ信号ＤＱＳの位相が約９０度シフトするように、ディレイコードが決定される。
【０００７】
ここで、遅延回路を構成する遅延素子の特性は、温度や製造ばらつきに依存して変化することに注意する必要がある。つまり、ディレイコード（遅延段数）が同じ場合であっても、温度や製造ばらつきに依存して遅延時間ｔＳＤがばらつく可能性がある。半導体チップ毎に遅延時間ｔＳＤを揃えるためには、半導体チップ毎にディレイコードを調整（トリミング）する必要がある。そのようなディレイコードのトリミングを行うための構成が、マスターＤＬＬ回路１２０及びギア比論理回路１３０である。
【０００８】
マスターＤＬＬ回路１２０は、ＤＤＲメモリの動作クロックＣＫをリファレンスクロックとして受け取り、そのリファレンスクロックＣＫの位相が３６０度（１周期）シフトするような遅延段数を求める。具体的には、マスターＤＬＬ回路１２０は、可変遅延回路、位相検出器、及び遅延コントローラを有している。可変遅延回路は、上述のスレーブディレイ回路１１０と同じ構成を有しており、遅延コントローラから出力される制御信号に応じて遅延段数が変化する。この可変遅延回路は、リファレンスクロックＣＫを受け取り、設定された遅延段数に応じた遅延時間ｔＣＫだけリファレンスクロックＣＫを遅延させる。位相検出器には、遅延していないリファレンスクロックＣＫと、可変遅延回路から出力される遅延後のリファレンスクロックＣＫが入力される。そして、位相検出器は、それら２つのリファレンスクロックＣＫの位相を比較し、比較結果を遅延コントローラに出力する。遅延コントローラは、比較結果に基づいて制御信号を変更し、可変遅延回路における遅延段数を変化させる。このような構成により、リファレンスクロックＣＫが１周期遅延するような遅延段数を決定することが可能となる。
【０００９】
ギア比論理回路１３０は、リファレンスクロックＣＫが１周期遅延するような遅延段数を“４”で割る。その結果、リファレンスクロックＣＫの位相が９０度シフトするような遅延段数が算出される。その算出された遅延段数を示す信号が、本半導体チップにおけるディレイコードである。スレーブディレイ回路１１０は、決定されたディレイコードに基づいて遅延段数を設定し、ストローブ信号ＤＱＳを遅延時間ｔＳＤだけ遅延させる。
【００１０】
このようにして、マスターＤＬＬ回路１２０及びギア比論理回路１３０により、ディレイコードのトリミングが半導体チップ毎に実施される。その結果、スレーブディレイ回路１１０におけるストローブ信号ＤＱＳの遅延時間ｔＳＤが、半導体チップ毎に揃うことになる。すなわち、動作環境の温度や製造ばらつきに対処することが可能となる。
【００１１】
【特許文献１】特開２００４−２２０６４３号公報
【非特許文献１】ＤｅｓｉｇｎＬｉｎｅ，Ｖｏｌｕｍｅ  ８，Ｉｓｓｕｅ  ３，３Ｑ９９，  Ｍｉｃｒｏｎ  Ｔｅｃｈｎｏｌｏｇｙ  Ｉｎｃ．
【発明の開示】
【発明が解決しようとする課題】
【００１２】
近年、ＤＤＲメモリを様々な動作周波数で動作させたいという要望がある。例えば、データがあまり読み出されないときには、消費電力を抑制するために、ＤＤＲメモリの動作周波数を低下させたいという要望がある。図１で示された構成によれば、ＤＤＲメモリの動作クロックＣＫが変更されると、それに応じて上述のディレイコードも適切な値に再度設定される。これにより、ＤＤＲメモリの動作周波数の変更後でも、ＤＤＲメモリコントローラはデータ信号ＤＱを安定的に取り込むことができる。
【００１３】
しかしながら、ディレイコードの再設定（再トリミング）には、ある程度の時間が必要である。従って、ディレイコードの再設定の間は、ＤＤＲメモリを待機状態にする必要があり、スループットが低下する。すなわち、ＤＤＲメモリの動作周波数の変更に伴うディレイコードの再設定による時間的なオーバーヘッドは、スループットの低下を招く。
【課題を解決するための手段】
【００１４】
以下に、［発明を実施するための最良の形態］で使用される番号・符号を用いて、［課題を解決するための手段］を説明する。これらの番号・符号は、［特許請求の範囲］の記載と［発明を実施するための最良の形態］との対応関係を明らかにするために括弧付きで付加されたものである。ただし、それらの番号・符号を、［特許請求の範囲］に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１５】
本発明の第１の観点において、マスターＤＬＬ（５０）により決定されたディレイコード（ＤＣＯＤＥ）に基づき、ＤＤＲメモリ（１）からのストローブ信号（ＤＱＳ）をスレーブディレイ（４０）にて遅延させ、ＤＤＲメモリ（１）からのデータ信号（ＤＱ）に対するストローブ信号（ＤＱＳ’）とするＤＤＲメモリコントローラ（１０）が提供される。そのＤＤＲメモリコントローラ（１０）は、周波数の異なる複数のクロック信号（ＣＬＫ１〜ＣＬＫｎ）から周波数選択信号（ＳＥＬ）に応じて選択されたクロック信号（ＳＣＬＫ）をＤＤＲメモリ（１）に出力するクロック制御回路（２０）を備える。マスターＤＬＬ（５０）には、上記複数のクロック信号（ＣＬＫ１〜ＣＬＫｎ）のうち最大周波数のクロック信号（ＣＬＫ１）がリファレンスクロック（ＲＥＦ）として入力される。
【００１６】
本発明の第２の観点において、ＤＤＲメモリコントローラ（１０）は、クロック制御回路（２０）とストローブ遅延回路（４０）とを備える。クロック制御回路（２０）は、周波数の異なる複数のクロック信号（ＣＬＫ１〜ＣＬＫｎ）のうちいずれか１つをＤＤＲメモリ（１）の動作クロック信号（ＳＣＬＫ）として出力する。ストローブ遅延回路（４０）は、ＤＤＲメモリ（１）から出力されるストローブ信号（ＤＱＳ）を、所定の遅延時間（ｔＳＤ）だけ遅延させる。その遅延時間（ｔＳＤ）は、上記複数のクロック信号（ＣＬＫ１〜ＣＬＫｎ）のうち最大周波数のクロック信号（ＣＬＫ１）の位相が所定の角度だけシフトする量に調整される。
【００１７】
本発明の第３の観点において、上記ＤＤＲメモリコントローラ（１０）が搭載された半導体装置が提供される。
【００１８】
本発明によれば、クロック制御回路（２０）によって、ＤＤＲメモリ（１）の動作クロック信号（ＳＣＬＫ）を変更したいという要求は満たされる。一方で、ディレイコード（ＤＣＯＤＥ）は、ＤＤＲメモリ（１）の動作クロック信号（ＳＣＬＫ）となり得る複数のクロック信号（ＣＬＫ１〜ＣＬＫｎ）のうち、最大周波数のクロック信号（ＣＬＫ１）を基準として用いることにより決定される。つまり、ストローブ信号（ＤＱＳ）の遅延時間（ｔＳＤ）は、ＤＤＲメモリ（１）の動作クロック信号（ＳＣＬＫ）にかかわらず、最大周波数のクロック信号（ＣＬＫ１）の位相が所定の角度だけシフトする量に調整される。
【００１９】
ＤＤＲメモリ（１）の動作クロック信号（ＳＣＬＫ）が、最大周波数のクロック信号（ＣＬＫ１）から、それ以外のもの（ＣＬＫ２〜ＣＬＫｎ）に変更される場合を考える。この時、データ信号（ＤＱ）のストローブ信号（ＤＱＳ’）に対するセットアップバジェットは変わらず、これは動作上問題ない。また、データ信号（ＤＱ）のストローブ信号（ＤＱＳ’）に対するホールドバジェットは必然的により大きくなり、これも動作上問題ない。すなわち、ＤＤＲメモリ（１）の動作クロック信号（ＳＣＬＫ）としていかなるクロック信号が選択されても、ＤＤＲメモリコントローラ（１０）は、データ信号（ＤＱ）を安定的に取り込むことが可能である。言い換えれば、ＤＤＲメモリ（１）の動作クロック信号（ＳＣＬＫ）が変更されても、ディレイコード（ＤＣＯＤＥ）を再度トリミングする必要はない。
【００２０】
以上に説明されたように、ディレイコード（ＤＣＯＤＥ）のトリミング時に基準となるクロック信号（ＲＥＦ）は、ＤＤＲメモリ（１）の動作クロック信号（ＳＣＬＫ）となり得る複数のクロック信号（ＣＬＫ１〜ＣＬＫｎ）のうち最大周波数のクロック信号（ＣＬＫ１）に固定される。この場合、ＤＤＲメモリ（１）の動作クロック信号（ＳＣＬＫ）が変更されても、ディレイコード（ＤＣＯＤＥ）を再度トリミングする必要はない。従って、動作クロック信号（ＳＣＬＫ）の変更に伴う時間的なオーバーヘッドが短縮される。結果として、スループットの低下が防止され、動作速度が全体として向上する。
【発明の効果】
【００２１】
本発明によれば、ＤＤＲメモリの動作周波数の変更に伴う時間的なオーバーヘッドが短縮される。その結果、スループットの低下が防止され、動作速度が全体として向上する。
【発明を実施するための最良の形態】
【００２２】
添付図面を参照して、本発明の実施の形態に係るＤＤＲメモリコントローラ及び半導体装置を説明する。
【００２３】
１．第１の実施の形態
１−１．全体構成
図２は、本発明の第１の実施の形態に係るＤＤＲメモリコントローラ及び半導体装置の構成を示すブロック図である。半導体装置は、ＤＤＲメモリ（ＤＤＲ−ＳＤＲＡＭ）１及びＤＤＲメモリコントローラ１０を備えている。例えば、ＤＤＲメモリ１とＤＤＲメモリコントローラ１０とは、それぞれ別々の半導体チップとして構成される。また、ＤＤＲメモリコントローラ１０は論理半導体チップなどに搭載されていてもよい。つまり、ＤＤＲメモリコントローラ１０が搭載された半導体集積回路が提供されてもよい。さらにまた、ＤＤＲメモリ１とＤＤＲメモリコントローラ１０とが１つの半導体チップに構成されていてもよい。
【００２４】
ＤＤＲメモリ１は、動作クロック信号ＳＣＬＫに基づいて動作する。また、データ読み出し時、ＤＤＲメモリ１は、読み出しデータを示すデータ信号ＤＱ（ＤＱ０〜ＤＱｉ）に加えて、そのデータ信号ＤＱに対応するストローブ信号ＤＱＳを出力する。
【００２５】
ＤＤＲメモリコントローラ１０は、動作クロック信号ＳＣＬＫをＤＤＲメモリ１に出力し、また、動作クロック信号ＳＣＬＫを切り換える機能を有している。更に、ＤＤＲメモリコントローラ１０は、ＤＤＲメモリ１からデータ信号ＤＱ及びストローブ信号ＤＱＳ信号を受け取り、ストローブ信号ＤＱＳに基づいてデータ信号ＤＱを外部に出力する機能を有している。これら機能を実現するために、ＤＤＲメモリコントローラ１０は、クロック制御回路２０、出力回路３０、ストローブ遅延回路４０、及びＤＬＬ回路５０を有している。以下、各構成を詳しく説明する。
【００２６】
１−２．クロック制御回路
近年、ＤＤＲメモリ１を状況に応じて様々な動作周波数で動作させたいという要望がある。つまり、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫを動的に変更したいという要望がある。そのような要望に応えるための構成が、クロック制御回路２０である。
【００２７】
クロック制御回路２０は、ＤＤＲメモリコントローラ１０の外部から基準クロック信号ＣＬＫを受け取る。典型的には、基準クロック信号ＣＬＫは、システムクロック信号である。クロック制御回路２０は、受け取った基準クロック信号ＣＬＫに基づいて、互いに周波数の異なる複数のクロック信号ＣＬＫ１〜ＣＬＫｎを生成する（ｎは２以上の整数）。更に、クロック制御回路２０は、生成された複数のクロック信号ＣＬＫ１〜ＣＬＫｎのうちいずれか１つを、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫとしてＤＤＲメモリ１に出力する。
【００２８】
より詳細には、図２に示されるように、クロック制御回路２０は、クロック生成回路６０及びクロック選択回路７０を有している。クロック生成回路６０は、基準クロック信号ＣＬＫから、互いに周波数の異なる複数のクロック信号ＣＬＫ１〜ＣＬＫｎを生成する。一方、クロック選択回路７０は、複数のクロック信号ＣＬＫ１〜ＣＬＫｎに加えて周波数選択信号ＳＥＬを受け取る。周波数選択信号ＳＥＬは、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫを指定する信号であり、例えばＣＰＵによって発行される。クロック選択回路７０は、周波数選択信号ＳＥＬに応答して、複数のクロック信号ＣＬＫ１〜ＣＬＫｎから１つの動作クロック信号ＳＣＬＫを選択し、選択された動作クロック信号ＳＣＬＫをＤＤＲメモリ１に出力する。
【００２９】
このように、クロック制御回路２０は、複数のクロック信号ＣＬＫ１〜ＣＬＫｎを生成し、そのうち周波数選択信号ＳＥＬに応じて選択された動作クロック信号ＳＣＬＫをＤＤＲメモリ１に出力する。ＤＤＲメモリ１は、選択された動作クロック信号ＳＣＬＫに基づいて動作する、すなわち、複数のクロック信号ＣＬＫ１〜ＣＬＫｎのいずれかに基づいて動作する。クロック制御回路２０によって生成される複数のクロック信号ＣＬＫ１〜ＣＬＫｎは、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫとなり得る候補であると言える。
【００３０】
図３は、クロック制御回路２０の回路構成の一例を示している。図３において、クロック生成回路６０は、複数の分周回路６１、６２及び６３を有している。分周回路６１、６２及び６３のそれぞれは、基準クロック信号ＣＬＫから、互いに周波数の異なるクロック信号ＣＬＫ１、ＣＬＫ２及びＣＬＫ３を生成する。例えば、分周回路６１、６２及び６３は、それぞれ１／２分周回路、１／４分周回路、及び１／８分周回路である。この場合、分周回路６１によって生成されるクロック信号ＣＬＫ１の周波数が最大となり、分周回路６３によって生成されるクロック信号ＣＬＫ３の周波数が最小となる。尚、クロック生成回路６０の別の形態として、分周回路６１、６２、６３の他に入力クロック（ＣＬＫ）をスルーするバッファを有する構成も可能である。
【００３１】
クロック選択回路７０は、クロック信号ＣＬＫ１〜ＣＬＫ３と周波数選択信号ＳＥＬを受け取る。周波数選択信号ＳＥＬは、クロック信号ＣＬＫ１の選択／非選択を示す選択信号ＳＥＬ１と、クロック信号ＣＬＫ２の選択／非選択を示す選択信号ＳＥＬ２と、クロック信号ＣＬＫ３の選択／非選択を示す選択信号ＳＥＬ３からなる。いずれの選択信号に関しても、Ｈレベルが「選択」を意味し、Ｌレベルが「非選択」を意味するとする。ここでは、複数のクロック信号（ＣＬＫ１〜ＣＬＫ３）から１つのクロック信号が選択されるように、選択信号ＳＥＬ１、ＳＥＬ２、ＳＥＬ３は排他的に設定される。
【００３２】
図３において、クロック選択回路７０は、選択回路７５と同期化回路８０を有している。同期化回路８０は、周波数選択信号ＳＥＬをクロック信号ＣＬＫ１〜ＣＬＫ３のそれぞれに同期化させるための回路であり、フリップフロップ群８１〜８３を有している。具体的には、フリップフロップ群８１は、多段に接続されたフリップフロップを含んでおり、クロック信号ＣＬＫ１を利用して選択信号ＳＥＬ１の同期化を行う。同様に、フリップフロップ群８２は、クロック信号ＣＬＫ２を利用して選択信号ＳＥＬ２の同期化を行い、フリップフロップ群８３は、クロック信号ＣＬＫ３を利用して選択信号ＳＥＬ３の同期化を行う。尚、選択信号ＳＥＬ（ＳＥＬ１〜ＳＥＬ３）としてデコード済みの信号が入力される例をここでは示したが、クロック選択回路７０は、選択情報をデコードして選択信号ＳＥＬ（ＳＥＬ１〜ＳＥＬ３）を出力するデコード回路を有していてもよい。
【００３３】
選択回路７５は、同期化回路８０から出力される周波数選択信号ＳＥＬ（ＳＥＬ１〜ＳＥＬ３）に応じたクロック信号を、クロック信号ＣＬＫ１〜ＣＬＫ３の中から選択し出力する。例えば図３に示されるように、選択回路７５は、ＡＮＤ回路７１〜７３及びＯＲ回路７４を有している。ＡＮＤ回路７１には、クロック信号ＣＬＫ１と同期化回路８０から出力される選択信号ＳＥＬ１が入力される。ＡＮＤ回路７２には、クロック信号ＣＬＫ２と同期化回路８０から出力される選択信号ＳＥＬ２が入力される。ＡＮＤ回路７３には、クロック信号ＣＬＫ３と同期化回路８０から出力される選択信号ＳＥＬ３が入力される。ＡＮＤ回路７１〜７３のそれぞれの出力は、ＯＲ回路７４に入力される。ＯＲ回路７４から出力される信号が、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫである。
【００３４】
図４は、図３で示されたクロック制御回路２０の動作の一例を示すタイミングチャートである。図４には、基準クロック信号ＣＬＫ、クロック信号ＣＬＫ１〜ＣＬＫ３、選択信号ＳＥＬ１、ＡＮＤ回路７１の出力、選択信号ＳＥＬ２、ＡＮＤ回路７２の出力、及び選択された動作クロック信号ＳＣＬＫが示されている。尚、図４中の各段に付されている数字は、図３中の対応する数字で示される位置での信号をそれぞれ意味している。
【００３５】
図４で示される例では、最初、選択信号ＳＥＬ１だけがＨレベルであり、その他の選択信号はＬレベルである。その結果、クロック制御回路２０からは、クロック信号ＣＬＫ１〜ＣＬＫ３のうち最大周波数のクロック信号ＣＬＫ１が、選択的に動作クロック信号ＳＣＬＫとして出力される。その後、選択信号ＳＥＬ１がＬレベルに変更される。続いて、選択信号ＳＥＬ２がＬレベルからＨレベルに変更される。その結果、クロック制御回路２０からは、クロック信号ＣＬＫ１〜ＣＬＫ３のうちクロック信号ＣＬＫ２が、選択的に動作クロック信号ＳＣＬＫとして出力される。このように、動作クロック信号ＳＣＬＫが、最大周波数のクロック信号ＣＬＫ１から、それより低い周波数のクロック信号ＣＬＫ２に切り換えられる。
【００３６】
図５は、クロック制御回路２０の回路構成の他の例を示している。図５において、クロック選択回路７０の構成は、図３で示されたものと同じである。一方、クロック生成回路６０は、分周回路６１〜６３に加えてＰＬＬ回路６４を更に有している。ＰＬＬ回路６４は、基準クロック信号ＣＬＫの周波数を逓倍する機能を有している。この場合、分周回路６１〜６３のそれぞれは、逓倍後の基準クロック信号ＣＬＫ’からクロック信号ＣＬＫ１〜ＣＬＫ３を生成する。このように、クロック制御回路２０は、基準クロック信号ＣＬＫを逓倍した後に、複数のクロック信号ＣＬＫ１〜ＣＬＫ３を生成してもよい。この場合でも、クロック制御回路２０が果たす役割は同じである。
【００３７】
１−３．出力回路及びストローブ遅延回路
再度図２を参照して、ＤＤＲメモリコントローラ１０の出力回路３０及びストローブ遅延回路４０（スレーブディレイ回路）を説明する。
【００３８】
ＤＤＲメモリ１から出力されるストローブ信号ＤＱＳは、まず、ストローブ遅延回路４０に入力される。このストローブ遅延回路４０は、ＤＤＲメモリ１から受け取ったストローブ信号ＤＱＳを、所定の遅延時間（ｔＳＤ）だけ遅延させる回路である。具体的には、スレーブディレイ回路４０は、多段の遅延素子から構成される可変遅延回路４１を含んでいる。その遅延素子の段数、すなわち、遅延時間（ｔＳＤ）は、後述される「ディレイコードＤＣＯＤＥ」に応じて変化する。つまり、ストローブ遅延回路４０は、ディレイコードＤＣＯＤＥに応じた遅延時間（ｔＳＤ）だけ、ストローブ信号ＤＱＳを遅延させる。遅延後のストローブ信号ＤＱＳは、以下「ストローブ信号ＤＱＳ’」と参照される。そのストローブ信号ＤＱＳ’は、出力回路３０に供給される。
【００３９】
出力回路３０は、ＤＤＲメモリ１から出力されるデータ信号ＤＱ（ＤＱ０〜ＤＱｉ）を受け取る。データ信号ＤＱは、例えば８ビットの信号（ＤＱ０〜ＤＱ７）である。また、出力回路３０は、ストローブ遅延回路４０を通して、ストローブ信号ＤＱＳ’を受け取る。そして、出力回路３０は、受け取ったストローブ信号ＤＱＳ’を参照し、そのストローブ信号ＤＱＳ’の立ち上がりエッジ及び立ち下がりエッジのタイミングでデータ信号ＤＱを取り込む。
【００４０】
具体的には、図２に示されるように、出力回路３０は、フリップフロップ３１−０〜３１−ｉ及びフリップフロップ３２−０〜３２−ｉを有している。フリップフロップ３１−０〜３１−ｉには、ストローブ信号ＤＱＳ’が入力される。そして、フリップフロップ３１−０〜３１−ｉのそれぞれは、ストローブ信号ＤＱＳ’の立ち上がりエッジのタイミングで、データ信号ＤＱ０〜ＤＱｉをラッチする。一方、フリップフロップ３２−０〜３２−ｉには、ストローブ信号ＤＱＳ’の反転信号が入力される。そして、フリップフロップ３２−０〜３２−ｉのそれぞれは、ストローブ信号ＤＱＳ’の立ち下がりエッジのタイミングで、データ信号ＤＱ０〜ＤＱｉをラッチする。そして、出力回路３０は、データ信号ＤＱ０〜ＤＱｉを、ＤＤＲメモリコントローラ１０の外部に出力する。
【００４１】
図６は、データ信号ＤＱとストローブ信号ＤＱＳ、ＤＱＳ’の関係を示すタイミングチャートである。ＤＤＲメモリ１は、上述の動作クロック信号ＳＣＬＫに基づいて動作し、データ信号ＤＱとストローブ信号ＤＱＳを出力する。この時、ストローブ信号ＤＱＳは、データ信号ＤＱの出力タイミング毎にＨ／Ｌのトグル動作を繰り返す。
【００４２】
ＤＤＲメモリコントローラ１０内で、ストローブ遅延回路４０は、ストローブ信号ＤＱＳを所定の遅延時間ｔＳＤだけ遅延させる。その結果、ストローブ遅延回路４０から出力されるストローブ信号ＤＱＳ’の立ち上がりエッジ及び立ち下がりエッジのタイミングは、データ信号ＤＱが安定期間に含まれることになる。つまり、データ信号ＤＱに関して十分なセットアップ時間ｔ（ｓｅｔｕｐ）とホールド時間ｔ（ｈｏｌｄ）が確保されることになる。結果として、出力回路３０は、データ信号ＤＱが安定している期間に、そのデータ信号ＤＱをラッチすることが可能となる。尚、図６では、データ信号ＤＱ及びストローブ信号ＤＱＳの各エッジにおいて位相差（スキュー）が無いものとして記載している。しかしながら実際には、後述のように（例えば図８）、各データ信号ＤＱ及びストローブ信号ＤＱＳ間にはスキューが生じてしまう。
【００４３】
このように、ストローブ遅延回路４０がストローブ信号ＤＱＳを遅延時間ｔＳＤだけ遅延させることにより、ＤＤＲメモリコントローラ１０はデータ信号ＤＱを安定状態でラッチすることが可能となる。逆に言えば、データ信号ＤＱが安定状態でラッチされるように、遅延時間ｔＳＤは設定される。その遅延時間ｔＳＤは、可変遅延回路４１を構成する遅延素子の段数によって決まり、その段数はディレイコードＤＣＯＤＥに応じて設定される。
【００４４】
ここで、遅延素子の特性は、温度や製造ばらつきに依存して変化することに注意する必要がある。つまり、ディレイコードＤＣＯＤＥ（遅延段数）が同じ場合であっても、温度や製造ばらつきに依存して遅延時間ｔＳＤがばらつく可能性がある。半導体チップ毎に遅延時間ｔＳＤを揃えるためには、半導体チップ毎にディレイコードＤＣＯＤＥを調整（トリミング）する必要がある。そのようなディレイコードＤＣＯＤＥのトリミングを行うための構成が、次に説明されるＤＬＬ回路５０である。
【００４５】
１−４．ＤＬＬ回路
再度図２を参照して、ＤＬＬ回路５０（マスターＤＬＬ回路）を説明する。ＤＬＬ回路５０は、ストローブ遅延回路４０（スレーブディレイ回路）における遅延時間ｔＳＤを指定するディレイコードＤＣＯＤＥのトリミングを行い、適切なディレイコードＤＣＯＤＥを決定する。
【００４６】
ディレイコードＤＣＯＤＥの決定に際し、本実施の形態に係るＤＬＬ回路５０は、上述のクロック制御回路２０によって生成された複数のクロック信号ＣＬＫ１〜ＣＬＫｎのうち「最大周波数のクロック信号ＣＬＫ１」をリファレンスクロックＲＥＦとして利用する。つまり、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫにかかわらず、ＤＬＬ回路５０は、最大周波数のクロック信号ＣＬＫ１を利用してディレイコードＤＣＯＤＥを決定する。そのために、ＤＬＬ回路５０はクロック制御回路２０から、最大周波数のクロック信号ＣＬＫ１をリファレンスクロックＲＥＦとして受け取る（図２、図３、図５参照）。
【００４７】
図２に示されるように、ＤＬＬ回路５０は、可変遅延回路５１、位相検出器５２、遅延コントローラ５３、及びコード生成論理回路５４を有している。可変遅延回路５１は、ストローブ遅延回路４０に含まれる可変遅延回路４１のレプリカであり、多段の遅延素子を有している。その遅延素子の段数（遅延段数）は、遅延コントローラ５３から出力される制御信号に応じて変化する。可変遅延回路５１は、リファレンスクロックＲＥＦを受け取り、設定された遅延段数に応じた遅延時間だけリファレンスクロックＲＥＦを遅延させる。
【００４８】
位相検出器５２には、遅延していないリファレンスクロックＲＥＦと、可変遅延回路５１から出力される遅延後のリファレンスクロックＲＥＦが入力される。そして、位相検出器５２は、それら２つのリファレンスクロックＲＥＦの位相を比較し、比較結果を遅延コントローラ５３に出力する。遅延コントローラ５３は、比較結果に基づいて制御信号を変更し、可変遅延回路５１における遅延段数を変化させる。
【００４９】
以上に説明された可変遅延回路５１、位相検出器５２、及び遅延コントローラ５３によって、リファレンスクロックＲＥＦの位相が３６０度（１周期）シフトするような遅延段数を決定することが可能である。コード生成論理回路５４は、リファレンスクロックＲＥＦの位相が３６０度シフトするような遅延段数を、所定の数で割る割算回路である。例えば、コード生成論理回路５４は、上記遅延段数を“４”で割る。その結果、リファレンスクロックＲＥＦの位相が９０度シフトするような遅延段数が算出される。言い換えれば、最大周波数のクロック信号ＣＬＫ１の位相が９０度シフトするような遅延段数が算出される。
【００５０】
このようにして算出された遅延段数を示す信号が、ディレイコードＤＣＯＤＥである。本実施の形態に係るＤＬＬ回路５０は、最大周波数のクロック信号ＣＬＫ１の位相が所定の角度（例えば９０度）だけシフトするようにディレイコードＤＣＯＤＥを決定する。上述のストローブ遅延回路４０は、決定されたディレイコードＤＣＯＤＥに基づいて、遅延段数を設定し、ストローブ信号ＤＱＳを遅延時間ｔＳＤだけ遅延させる。すなわち、ストローブ信号ＤＱＳの遅延時間ｔＳＤは、最大周波数のクロック信号ＣＬＫ１の位相が所定の角度（例えば９０度）だけシフトする量に調整（トリミング）される。
【００５１】
以上に説明されたように、本実施の形態によれば、ＤＬＬ回路５０に入力されるリファレンスクロックＲＥＦは、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫにかかわらず、最大周波数のクロック信号ＣＬＫ１に固定される。言い換えれば、ディレイコードＤＣＯＤＥは、動作クロック信号ＳＣＬＫとなり得るクロック信号ＣＬＫ１〜ＣＬＫｎのうち、最大周波数のクロック信号ＣＬＫ１を基準として用いることにより決定される。結果として、ストローブ信号ＤＱＳの遅延時間ｔＳＤは、動作クロック信号ＳＣＬＫに依存することなく、最大周波数のクロック信号ＣＬＫ１の位相が所定の角度だけシフトする量に調整されることになる。ＤＤＲメモリ１の動作クロック信号ＳＣＬＫが変更されたとしても、ディレイコードＤＣＯＤＥや遅延時間ｔＳＤは変わらないことに留意されたい。
【００５２】
１−５．ＤＤＲメモリの動作クロック信号の切り換え
次に、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫの切り換え時におけるＤＤＲメモリコントローラ１０の動作を説明する。図７は、動作クロック信号ＳＣＬＫの切り換え処理の一例を示すタイミングチャートである。図７には、ＤＤＲメモリ１に対するコマンド、動作クロック信号ＳＣＬＫ、ＤＤＲメモリ１から出力されるストローブ信号ＤＱＳとデータ信号ＤＱ、及びストローブ遅延回路４０から出力されるストローブ信号ＤＱＳ’が示されている。
【００５３】
図７で示される例において、ＤＤＲメモリ１にはリードコマンド（ＲＥＡＤ）が入力され、その後、ノーオペレーションコマンド（ＮＯＰ）が入力される。リードコマンド（ＲＥＡＤ）に応答して、ＤＤＲメモリ１は、データを読み出す。このとき、バースト長は８であるとする。
【００５４】
最初、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫは、最大周波数のクロック信号ＣＬＫ１である。ＤＤＲメモリ１は、最大周波数のクロック信号ＣＬＫ１に基づいて、ストローブ信号ＤＱＳ及びデータ信号ＤＱを出力する。ストローブ信号ＤＱＳ及びデータ信号ＤＱは、ＮＯＰコマンドの期間に出力されている。ＤＤＲメモリコントローラ１０において、ストローブ遅延回路４０は、ストローブ信号ＤＱＳを所定の遅延時間ｔＳＤだけ遅延させる。その遅延時間ｔＳＤは、最大周波数のクロック信号ＣＬＫ１の位相が所定の角度だけシフトする量に設定されている。
【００５５】
ＮＯＰコマンドの期間中のあるタイミングにおいて、周波数選択信号ＳＥＬが変更され、動作クロック信号ＳＣＬＫが切り換えられる。例えば、動作クロック信号ＳＣＬＫは、最大周波数のクロック信号ＣＬＫ１から、それより低いクロック信号ＣＬＫ２に切り換えられる（既出の図４参照）。図４及び図７に示されるように、動作クロック信号ＳＣＬＫは、クロック信号ＣＬＫ１から多少の間をおいてクロック信号ＣＬＫ２に変わる。その後、ＤＤＲメモリ１は、クロック信号ＣＬＫ２に基づいて、ストローブ信号ＤＱＳ及びデータ信号ＤＱを出力する。
【００５６】
ここで注意すべきことは、ＤＬＬ回路５０に入力されるリファレンスクロックＲＥＦは、最大周波数のクロック信号ＣＬＫ１のまま変わらないことである。すなわち、ＤＬＬ回路５０においてディレイコードＤＣＯＤＥの再トリミングは実施されず、ディレイコードＤＣＯＤＥは変わらず一定である。従って、ストローブ遅延回路４０によるストローブ信号ＤＱＳの遅延時間ｔＳＤも変わらない。遅延時間ｔＳＤは、最大周波数のクロック信号ＣＬＫ１の位相が所定の角度だけシフトする量のままである。
【００５７】
図８は、ＤＤＲメモリ１の動作周波数が最大周波数の場合とその他の場合とでのタイミングバジェットを概念的に示している。より詳細には、図８には、ＤＤＲメモリコントローラ１０に入力されるストローブ信号ＤＱＳとデータ信号ＤＱが示されている。ストローブ信号ＤＱＳは、時刻ｔ１においてＤＤＲメモリコントローラ１０に到達するとする。また、スキュー（Skew）を考慮すると、データ信号ＤＱが安定する期間は、図中の“Data Valid”で示される期間となる。そのデータ信号ＤＱの安定期間内の時刻ｔ２に、ストローブ信号ＤＱＳ’のエッジのタイミングが位置することが望ましい。その時刻ｔ２と上記時刻ｔ１の差が、望ましい遅延時間ｔＳＤである。但し、実際の遅延回路では、遅延時間ｔＳＤに誤差が生じる可能性がある。そのような不確定性（SU: Strobe Uncertainty）も考慮すると、図８に示されるように、セットアップバジェット（Setup Budget）とホールドバジェット（Hold Budget）が定義され得る。
【００５８】
上述の通り、本実施の形態によれば、ディレイコードＤＣＯＤＥは、最大周波数のクロック信号ＣＬＫ１を利用することによりトリミングされている。つまり、遅延時間ｔＳＤは、ＤＤＲメモリ１の動作周波数が最大の場合でもセットアップ／ホールド制約が満たされるように設定されている。
【００５９】
次に、動作周波数が最大周波数以外の場合を考える。この場合も、ディレイコードＤＣＯＤＥ、すなわち遅延時間ｔＳＤは、最大周波数の場合と同じである。そのため、セットアップバジェットは最大周波数の場合と変わらないが、これは動作上問題ない。一方、ホールドバジェットは、図８に示されるように、最大周波数の場合よりも必然的に大きくなる。これも当然、動作上問題ない。すなわち、最大周波数の場合と少なくとも同等のタイミングバジェットが確保されるため、正常動作が保障される。
【００６０】
このように、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫとしていかなるクロック信号が選択されても、十分なタイミングバジェットが確保されるため、ＤＤＲメモリコントローラ１０は、データ信号ＤＱを安定的に取り込むことが可能である。言い換えれば、十分なタイミングバジェットが保障されているため、動作クロック信号ＳＣＬＫが変更されても、ディレイコードＤＣＯＤＥを再度トリミングする必要はない。
【００６１】
以上に説明されたように、ディレイコードＤＣＯＤＥは、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫとなり得る候補のうち最大周波数のクロック信号ＣＬＫ１を利用することにより決定される。その場合、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫが変更されても、ディレイコードＤＣＯＤＥを再度トリミングする必要はない。従って、ＤＤＲメモリコントローラ１０におけるディレイコードＤＣＯＤＥの再トリミング処理の間に、ＤＤＲメモリ１を待機状態にする必要もない。周波数選択信号ＳＥＬが切り換えられたとき、ＤＤＲメモリ１は、コントローラ側の再トリミング処理を待つことなく、すぐに動作することが可能である。このように、動作クロック信号ＳＣＬＫの動的な変更に伴う時間的なオーバーヘッドが短縮される。結果として、スループットの低下が防止され、動作速度が全体として向上する。
【００６２】
尚、動作クロック信号ＳＣＬＫの切り換えタイミングは、図７で示された例に限られない。動作クロック信号ＳＣＬＫの切り換えタイミングは、ＤＤＲメモリ１側の仕様に応じて適宜決定されるとよい。例えば、ＤＤＲメモリ１の仕様が、セルフリフレッシュ動作中での動作クロック信号ＳＣＬＫの切り換えを許可する場合を考える。その場合は、図９に示されるように、セルフリフレッシュ動作の最中に、動作クロック信号ＳＣＬＫが切り換えられるとよい。図９で示される例の場合でも、ＤＤＲコントローラ１０側の処理は同じである。つまり、本実施の形態に係るＤＤＲコントローラ１０は、ＤＤＲメモリ１側の仕様によらず、汎用的に適用可能である。
【００６３】
１−６．効果
本実施の形態によれば、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫを動的に変更したいという要求は、クロック制御回路２０によって満たされる。
【００６４】
また、ディレイコードＤＣＯＤＥのトリミング時に用いられるリファレンスクロックＲＥＦは、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫとなり得る複数のクロック信号ＣＬＫ１〜ＣＬＫｎのうち最大周波数のクロック信号ＣＬＫ１に固定される。この場合、ＤＤＲメモリ１の動作クロック信号ＳＣＬＫが変更されても、ディレイコードＤＣＯＤＥを再度トリミングする必要はない。従って、動作クロック信号ＳＣＬＫの動的な変更に伴う時間的なオーバーヘッドが短縮される。結果として、スループットの低下が防止され、動作速度が全体として向上する。
【００６５】
２．第２の実施の形態
図１０は、本発明の第２の実施の形態に係るＤＤＲメモリコントローラ及び半導体装置の構成を示すブロック図である。半導体装置は、ＤＤＲメモリ１及びＤＤＲメモリコントローラ１０を備えている。本実施の形態において、ＤＤＲメモリコントローラ１０は、図２で示された構成に加えて保持回路９０を有している。その他の構成は第１の実施の形態と同様であり、重複する説明は適宜省略される。
【００６６】
保持回路９０は、ディレイコードＤＣＯＤＥを保持する記憶回路であり、ＤＬＬ回路５０とストローブ遅延回路４０に接続されている。ＤＬＬ回路５０は、決定したディレイコードＤＣＯＤＥを保持回路９０に出力し、保持回路９０は、ＤＬＬ回路５０によって決定されたディレイコードＤＣＯＤＥを保持する。そのディレイコードＤＣＯＤＥは、保持回路９０からストローブ遅延回路４０に出力される。ストローブ遅延回路４０は、保持回路９０によって保持されているディレイコードＤＣＯＤＥに基づいて、ストローブ信号ＤＱＳを遅延させる。
【００６７】
第１の実施の形態で説明されたように、ＤＤＲメモリ１の動作クロックＳＣＬＫが変更されたとしても、ディレイコードＤＣＯＤＥの再トリミングを実施する必要はない。従って、ディレイコードＤＣＯＤＥが一旦決定された後は、ＤＬＬ回路５０の動作を停止させることが可能である。これにより、消費電力が低減される。
【００６８】
例えば、ＤＤＲメモリコントローラ１０の初期化時に、イネーブル信号ＥＮがＨレベルに設定され、ＤＬＬ回路５０はディレイコードＤＣＯＤＥを決定する。ディレイコードＤＣＯＤＥの決定後は、イネーブル信号ＥＮはＬレベルに設定され、ＤＬＬ回路５０はスタンバイ状態に設定される。これにより、ＤＬＬ回路５０におけるリファレンスクロックＲＥＦのトグル動作がなくなり、消費電力が大幅に削減される。ＤＬＬ回路５０がスタンバイ状態となっても、保持回路９０からストローブ遅延回路４０にディレイコードＤＣＯＤＥが出力されるため、ストローブ遅延回路４０はストローブ信号ＤＱＳを遅延させることができる。
【００６９】
３．その他の例
本発明は、上述のいずれの実施の形態の記載にのみ限定されるものではない。たとえば、上述の可変遅延回路４１、５１はともに段数が固定の多段の遅延素子を有し、その遅延素子の動作電圧（電源電圧）を、遅延コントローラ５３から出力される制御信号に応じて変化する構成としてもよい。たとえば可変遅延回路５１を４段の遅延素子で構成すれば、遅延素子が１段ごとに位相を９０度ずつシフトすることが可能である。
【００７０】
また、上述のいずれの実施の形態においてもクロック生成回路６０を備える構成として示した。別途周波数の異なる複数のクロックを本発明のＤＤＲコントローラのために準備できる場合は、単に周波数の異なる複数のクロック信号を直接クロック選択回路７０に入力する構成をとってもよいことはもちろんである。
【００７１】
さらにまた、上述のＤＤＲメモリ１及びＤＤＲコントローラ１０が備えられた半導体装置は、単にプリント板（ＰＣＢ）にそれぞれ独立した半導体集積回路（半導体チップ）として搭載された構成でもよい。あるいは、ＳＩＰ（System In Package）として、ＤＤＲメモリチップとＤＤＲコントローラ１０が搭載された半導体チップとが１つの半導体パッケージ基板に収められてもよい。ＤＤＲメモリチップやＤＤＲコントローラ１０が搭載された半導体チップは、所望の数（１つまたは複数）を搭載してよい。
【図面の簡単な説明】
【００７２】
【図１】図１は、従来技術におけるＤＤＲメモリコントローラの構成を示すブロック図である。
【図２】図２は、本発明の第１の実施の形態に係るＤＤＲメモリコントローラ及び半導体装置の構成を示すブロック図である。
【図３】図３は、クロック制御回路の構成の一例を示す回路図である。
【図４】図４は、クロック制御回路の動作の一例を示すタイミングチャートである。
【図５】図５は、クロック制御回路の構成の他の例を示す回路図である。
【図６】図６は、データ信号ＤＱとストローブ信号ＤＱＳ、ＤＱＳ’の関係を示すタイミングチャートである。
【図７】図７は、ＤＤＲメモリの動作クロック信号の切り換え処理の一例を示すタイミングチャートである。
【図８】図８は、最高周波数の場合とその他の周波数の場合とでのタイミングバジェットの比較を示す概念図である。
【図９】図９は、ＤＤＲメモリの動作クロック信号の切り換え処理の他の例を示すタイミングチャートである。
【図１０】図１０は、本発明の第２の実施の形態に係るＤＤＲメモリコントローラ及び半導体装置の構成を示すブロック図である。
【符号の説明】
【００７３】
１    ＤＤＲメモリ
１０    ＤＤＲメモリコントローラ
２０    クロック制御回路
３０    出力回路
４０    ストローブ遅延回路
４１    可変遅延回路
５０    ＤＬＬ回路
５１    可変遅延回路
５２    位相検出器
５３    遅延コントローラ
５４    コード生成論理回路
６０    クロック生成回路
６１〜６３  分周回路
６４    ＰＬＬ回路
７０    クロック選択回路
７５    選択回路
８０    同期化回路
９０    保持回路
ＣＬＫ  基準クロック信号
ＣＬＫ１〜ＣＬＫｎ  クロック信号
ＳＣＬＫ  動作クロック信号
ＤＱ    データ信号
ＤＱＳ，ＤＱＳ’  ストローブ信号
ＲＥＦ  リファレンスクロック
ＳＥＬ  周波数選択信号
ＤＣＯＤＥ  ディレイコード
【図１】
0005160856.tif 000002
【図２】
0005160856.tif 000003
【図３】
0005160856.tif 000004
【図４】
0005160856.tif 000005
【図５】
0005160856.tif 000006
【図６】
0005160856.tif 000007
【図７】
0005160856.tif 000008
【図８】
0005160856.tif 000009
【図９】
0005160856.tif 000010
【図１０】
0005160856.tif 000011