(57)【要約】【課題】位相シフトしたクロックのエッジ位置と、データ信号の論理変化位置とのマージンを改善できる半導体集積回路およびメモリシステム並びにクロック信号設定方法を提供する。【解決手段】半導体集積回路に、メモリからデータを読み出す場合に、該データをラッチするために使用するクロックの位相シフト量を決定する位相シフト量決定手段と、前記位相シフト量に基づいて、クロックを生成するクロック生成手段と、前記クロックを用いて、前記メモリから予め書き込まれたデータを読み出し、該読み出したデータが、前記書き込まれたデータと一致するか否かを判定し、該判定結果に基づいて、前記クロックの位相シフト量を設定する位相シフト量設定手段とを備えることにより達成される。【選択図】図４
2007164697.tif 000002
【特許請求の範囲】
【請求項１】
記憶手段からデータを読み出す場合に、該データをラッチするために使用するクロックの位相シフト量を決定する位相シフト量決定手段と、
前記位相シフト量に基づいて、クロックを生成するクロック生成手段と、
前記クロックを用いて、前記記憶手段から予め書き込まれたデータを読み出し、該読み出したデータが、前記書き込まれたデータと一致するか否かを判定し、該判定結果に基づいて、前記クロックの位相シフト量を設定する位相シフト量設定手段と
を備えることを特徴とする半導体集積回路。
【請求項２】
請求項１に記載の半導体集積回路において、
前記位相シフト量設定手段は、前記記憶手段に予め書き込まれたデータと、前記読み出したデータとが一致する場合の位相シフト量に基づいて、前記クロックの位相シフト量を設定することを特徴とする半導体集積回路。
【請求項３】
請求項１または２に記載の半導体集積回路において、
前記位相シフト量決定手段は、所定範囲の位相シフト量を決定し、
前記位相シフト量設定手段は、前記記憶手段に予め書き込まれたデータと、前記読み出したデータとが一致する場合の位相シフト量の範囲に基づいて、その中間値を位相シフト量に設定することを特徴とする半導体集積回路。
【請求項４】
記憶手段と、
前記記憶手段からデータを読み出す場合に、該データをラッチするために使用するクロックの位相シフト量を決定する位相シフト量決定手段と、
前記位相シフト量に基づいて、クロックを生成するクロック生成手段と、
前記クロックを用いて、前記記憶手段から予め書き込まれたデータと読み出し、該読み出したデータが、前記書き込まれたデータと一致するか否かを判定し、該判定結果に基づいて、前記クロックの位相シフト量を設定する位相シフト量設定手段と
を備えることを特徴とするメモリシステム。
【請求項５】
記憶手段からデータを読み出す場合に、該データをラッチするために使用するクロックの位相シフト量を決定する位相シフト量決定ステップと、
前記位相シフト量に基づいて、クロックを生成するクロック生成ステップと、
前記クロックを用いて、前記記憶手段から予め書き込まれたデータを読み出すデータ読み出しステップと、
前記読み出したデータが、前記書き込まれたデータと一致するか否かを判定する判定ステップと、
前記判定結果に基づいて、前記クロックの位相シフト量を設定する位相シフト量設定ステップと
を有することを特徴とするクロック信号設定方法。
【請求項６】
請求項５に記載のクロック信号設定方法において、
前記位相シフト量設定ステップは、前記記憶手段に予め書き込まれたデータと、前記読み出したデータとが一致する場合の位相シフト量に基づいて、前記クロックの位相シフト量を決定することを特徴とするクロック信号設定方法。
【請求項７】
請求項５または６に記載のクロック信号設定方法において、
前記位相シフト量決定ステップは、所定範囲の位相シフト量を決定し、
前記位相シフト量設定ステップは、前記記憶手段に予め書き込まれたデータと、前記読み出したデータとが一致する場合の位相シフト量の範囲に基づいて、その中間値を位相シフト量に設定することを特徴とするクロック信号設定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路およびメモリシステム並びにクロック信号設定方法に関する。
【背景技術】
【０００２】
近年のプロセッサの高速化とＩＴ（Ｉｎｆｏｒｍａｔｉｏｎ  Ｔｅｃｈｎｏｌｏｇｙ）の発達に伴い、高速なメモリが要求されている。その要求に従って、ＤＤＲ  ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）のような外部クロックに同期して、その２倍の周波数でデータを転送するメモリが登場した。
【０００３】
従来のＳＤＲ  ＳＤＲＡＭ（Ｓｉｎｇｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  ＤＲＡＭ）では、クロックの立ち上がりエッジのみに同期してデータ転送が行われるのに対し、ＤＤＲ  ＳＤＲＡＭでは、クロックの立ち上がりと立下りの両エッジに同期してデータ転送が行われる。このため、ＤＤＲ  ＳＤＲＡＭはＳＤＲ  ＳＤＲＡＭの２倍のデータ転送速度を得ることができる。
【０００４】
しかし、データ転送速度が高速になるほど、データの有効期間（データｗｉｎｄｏｗ）が狭くなり、ＤＤＲ  ＳＤＲＡＭコントローラ側でのデータの取りこみが困難になる。そこで、ＤＤＲ  ＳＤＲＡＭでは、データストローブ信号（以下、ＤＱＳと呼ぶ）を新たに設け、一般にＤＤＲ  ＳＤＲＡＭコントローラ側ではこの信号を受けてデータの取り込みを行っている。
【０００５】
ＤＱＳは、クロックに同期した双方向信号（ライト時もリード時も利用される）であり、ライト時にはＤＤＲ  ＳＤＲＡＭコントローラ側からＤＱＳとライト用のデータ（以下、ＤＱと呼ぶ）を受け取ってメモリにデータを書き込む。逆に、リード時にはメモリからＤＱＳが出力され、ＤＤＲ  ＳＤＲＡＭコントローラ側ではこのＤＱＳとリード用のＤＱを受け取る。
【０００６】
このように、ＤＱＳはＤＱに同期しているため、ＤＱＳとＤＱのそれぞれの配線長（トレース長）を等しくする必要がある。
【０００７】
ここで、高速化により問題となるのは、リード時のデータ取りこみタイミングである。
【０００８】
双方向のＤＱＳについて、ライト時とリード時のそれぞれにおけるデータ取りこみタイミングについて説明する。
【０００９】
ＪＥＤＥＣ−ＤＤＲにより定められている双方向のＤＱＳについて、ライト時におけるデータ取りこみタイミングを図１に示し、リード時におけるデータ取り込みタイミングを図２に示す。
【００１０】
図示のように、ライト時とリード時のデータ取りこみはＤＱＳの立ち上がりと立ち下りの両エッジで行われるが、リード時に問題が生じる。
【００１１】
ライト時のデータ取りこみは、図１からわかるようにＤＱＳのクロックエッジがライトデータ信号ＤＱの有効期間の中央付近にあるため、ＤＱＳの立ち上がりエッジで確実にデータを取り込むことができる。
【００１２】
一方、図２に示すように、ＤＤＲ  ＳＤＲＡＭコントローラ側でデータを取り込むリード時には、ＤＱＳの両エッジとＤＱの変化点がほぼ同じタイミングである。このため、図３に示すように、ＤＤＲ  ＳＤＲＡＭコントローラ側でＤＱＳのタイミングや位相をずらし、データ有効期間の中間付近にＤＱＳの両エッジがくるようにタイミング調整を行わなければならない。
【００１３】
例えば、メモリの内部にて、ＤＱを出力するＩ／Ｏバッファの駆動能力と、ＤＱＳを出力するＩ／Ｏバッファの駆動能力とをそれぞれ可変制御し、コントローラに入力するようにしたメモリシステムがある（例えば、特許文献１参照）。
【特許文献１】特開２００３−０８５９７４号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
しかし、上述した背景技術には、以下に示すような問題がある。
【００１５】
ＤＤＲ  ＳＤＲＡＭコントローラ側でＤＱＳのタイミングや位相をずらし、データ有効期間の中間付近にＤＱＳの両エッジがくるようにタイミング調整を行わなければならない問題がある。
【００１６】
そのため、ＤＱＳのタイミングや位相の微調整がしづらいデバイスではタイミング調整が難しく、さらに、ＤＱＳのタイミングや位相の最適値はデバイスやメモリとＤＤＲ  ＳＤＲＡＭコントローラ間のトレース長などにより変化するためタイミング調整が面倒である問題がある。
【００１７】
そこで、本発明は、かかる事情に鑑み、位相シフトしたクロックのエッジ位置と、データ信号の論理変化位置とのマージンを改善できる半導体集積回路およびメモリシステム並びにクロック信号設定方法を提供することを目的とする。
【課題を解決するための手段】
【００１８】
上記課題を解決するため、本発明にかかる半導体集積回路は、記憶手段からデータを読み出す場合に、該データをラッチするために使用するクロックの位相シフト量を決定する位相シフト量決定手段と、前記位相シフト量に基づいて、クロックを生成するクロック生成手段と、前記クロックを用いて、前記記憶手段から予め書き込まれたデータを読み出し、該読み出したデータが、前記書き込まれたデータと一致するか否かを判定し、該判定結果に基づいて、前記クロックの位相シフト量を設定する位相シフト量設定手段とを備えることを特徴の１つとする。
【００１９】
このように構成することにより、ＤＤＲ  ＳＤＲＡＭコントローラでは、リード時にデータストローブ信号ではなく、位相シフトが可能なクロックを用いてデータ信号を取り込むことができる。
【００２０】
また、本発明のメモリシステムは、記憶手段と、前記記憶手段からデータを読み出す場合に、該データをラッチするために使用するクロックの位相シフト量を決定する位相シフト量決定手段と、前記位相シフト量に基づいて、クロックを生成するクロック生成手段と、前記クロックを用いて、前記記憶手段から予め書き込まれたデータを読み出し、該読み出したデータが、前記書き込まれたデータと一致するか否かを判定し、該判定結果に基づいて、前記クロックの位相シフト量を設定する位相シフト量設定手段とを備えることを特徴の１つとする。
【００２１】
このように構成することにより、ＤＤＲ  ＳＤＲＡＭコントローラでは、リード時にデータストローブ信号ではなく、位相シフトが可能なクロックを用いてデータ信号を取り込むことができる。
【００２２】
本発明にかかるクロック信号設定方法は、記憶手段からデータを読み出す場合に、該データをラッチするために使用するクロックの位相シフト量を決定する位相シフト量決定ステップと、前記位相シフト量に基づいて、クロックを生成するクロック生成ステップと、前記クロックを用いて、前記記憶手段から予め書き込まれたデータを読み出すデータ読み出しステップと、前記読み出したデータが、前記書き込まれたデータと一致するか否かを判定する判定ステップと、前記判定結果に基づいて、前記クロックの位相シフト量を設定する位相シフト量設定ステップとを有することを特徴の１つとする。
【００２３】
このようにすることにより、メモリに記憶しておいたデータと、読み出したデータとを比較し、正常に読み書きできる位相範囲に基づいて、データ信号を取り込む場合に使用するクロック信号を設定できる。
【発明の効果】
【００２４】
本発明の実施例によれば、位相シフトしたクロックのエッジ位置と、データ信号の論理変化位置とのマージンを改善できる半導体集積回路およびメモリシステム並びにクロック信号設定方法を実現できる。
【発明を実施するための最良の形態】
【００２５】
次に、本発明を実施するための最良の形態を、以下の実施例に基づき図面を参照しつつ説明する。
なお、実施例を説明するための全図において、同一機能を有するものは同一符号を用い、繰り返しの説明は省略する。
【００２６】
本実施例にかかるメモリシステムについて、図４を参照して説明する。
【００２７】
本実施例にかかるメモリシステム１００は、半導体集積回路１０２と、半導体集積回路１０２と接続された記憶手段としてのＤＤＲ  ＳＤＲＡＭ１０４とを備える。
【００２８】
半導体集積回路１０２は、例えばＦＰＧＡに搭載され、メモリ１０６と、メモリ１０６と接続された位相シフト量決定手段および位相シフト量設定手段としての制御回路１０８と、制御回路１０８と接続されたクロック生成手段としてのクロック制御回路１１０およびＤＤＲ  ＳＤＲＡＭコントローラ１１２とを備える。ＤＤＲ  ＳＤＲＡＭコントローラ１１２は、クロック制御回路１１０およびＤＤＲ  ＳＤＲＡＭ１０４を備える。
【００２９】
メモリ１０６は、ライト用テストデータと、ＤＤＲ  ＳＤＲＡＭ１０４に対してデータの読み書きが正常に行われるときの位相シフト値を格納する。
【００３０】
クロック制御回路１１０は、入力される位相シフト値に基づいて、リード時にデータをラッチするためにＤＤＲ  ＳＤＲＡＭコントローラ１１２で使用されるクロックを生成し、該クロックをＤＤＲ  ＳＤＲＡＭコントローラ１１２に入力する。
【００３１】
制御回路１０８は、メモリ１０６に記憶されたライト用テストデータを読み込み、該ライト用テストデータをＤＤＲ  ＳＤＲＡＭ１０４に書き込むための要求、すなわちライト要求をＤＤＲ  ＳＤＲＡＭコントローラ１１２に対して行う。
【００３２】
また、制御回路１０８は、ＤＤＲ  ＳＤＲＡＭ１０４に書き込まれたライト用テストデータを読み込む場合の、クロックの位相シフト量を決定し、クロック制御回路１１０に入力する。
【００３３】
また、制御回路１０８は、ＤＤＲ  ＳＤＲＡＭ１０４に書き込まれたライト用テストデータを読み込むための要求、すなわちリード要求をＤＤＲ  ＳＤＲＡＭコントローラ１１２に対して行う。その結果、制御回路１０８は、クロック制御回路１１０により入力されたクロックを用いてデータ信号を取り込む。
【００３４】
また、制御回路１０８は、メモリ１０６に記憶されたライト用テストデータと、取り込まれたデータ信号とを比較し、一致するか否か、すなわちデータの読み書きを正常に行うことができるか否かを判定する。一致する場合、制御回路１０８は、この場合のクロックの位相シフト量を示す情報をメモリ１０６に書き込む。
【００３５】
また、制御回路１０８は、メモリ１０６に記憶されたライト用テストデータと、取り込まれたデータ信号とが一致する場合の位相シフト量に基づいて、位相シフトしたクロックのエッジ位置と、データ信号の論理変化位置とのマージンが最大となる位相シフト量を決定し、クロック制御回路１１０に対してセットする。例えば、制御回路１０８は、データの読み書きを正常に行うことができる位相シフトの範囲を求め、その中間値を位相シフト量としてクロック制御回路１１０に対してセット（設定）する。
【００３６】
ＤＤＲ  ＳＤＲＡＭコントローラ１１２は、制御回路１０８により入力されたライト要求およびリード要求に応じて、ＤＤＲ  ＳＤＲＡＭ１０４を制御する。例えば、ＤＤＲ  ＳＤＲＡＭコントローラ１１２は、クロック信号（ＣＫ）と、該クロック信号の反転信号（ＣＫ＃）を生成し、ＤＤＲ  ＳＤＲＡＭ１０４に入力する。
【００３７】
また、ＤＤＲ  ＳＤＲＡＭコントローラ１１２は、ライト要求に応じて、クロック信号に同期したデータストローブ信号（ＤＱＳ）と、制御回路１０８から入力されたライト用のデータ（ＤＱ）とを、ＤＤＲ  ＳＤＲＡＭ１０４に入力する。その結果、ＤＤＲ  ＳＤＲＡＭ１０４は、ＤＱＳに基づいて、データを記憶する。
【００３８】
また、ＤＤＲ  ＳＤＲＡＭコントローラ１１２は、リード要求に応じて、クロック制御回路１１０から入力される位相シフトが可能なクロック（以下、Ｒｄ＿ＣＫと呼ぶ）に基づいて、ＤＤＲ  ＳＤＲＡＭ１０４から出力されたデータを取り込む。
【００３９】
ＤＤＲ  ＳＤＲＡＭ１０４は、入力されたＣＫと、ＣＫ＃の交点を基準にタイミングを生成する。また、ＤＤＲ  ＳＤＲＡＭ１０４は、ライト時において、入力されたＤＱＳに基づいて、データを取り込むタイミングを調整し、データを書き込む。また、ＤＤＲ  ＳＤＲＡＭ１０４は、リード時において、ＤＱＳおよびリード用のＤＱを出力する。
【００４０】
本実施例にかかるメモリシステム１００では、ＤＤＲ  ＳＤＲＡＭコントローラ１１２は、リード時にＤＱＳではなく、Ｒｄ＿ＣＫを用いてデータ信号を取り込む。この場合、ＤＤＲ  ＳＤＲＡＭ１０４から出力されるＤＱＳは使用されない。
【００４１】
クロック制御回路１１０は、制御回路１０８により入力された位相シフト量に基づいて、Ｒｄ＿ＣＫを生成する。Ｒｄ＿ＣＫは、図５に示すようにＣＫを位相シフトさせた信号である。例えば、クロック制御回路１１０をＤＣＭ（Ｄｉｇｉｔａｌ  Ｃｌｏｃｋ  Ｍａｎａｇｅｒ）により構成し、該ＤＣＭは、クロック信号（ＣＫ）を位相シフトすることにより、Ｒｄ＿ＣＫを生成する。また、クロック制御回路１１０を水晶振動子により構成し、Ｒｄ＿ＣＫを生成するようにしてもよい。
【００４２】
次に、本実施例にかかるメモリシステム１００の動作について、図６を参照して説明する。
【００４３】
最初に、メモリシステムを構成する電子回路が安定するまで一定期間待つ（ステップＳ６０２）。
【００４４】
次に、制御回路１０８は、メモリ１０６に記憶されたライト用テストデータを読み込み、ＤＤＲ  ＳＤＲＡＭコントローラ１１２へライト要求を行う。ＤＤＲ  ＳＤＲＡＭコントローラ１１２は、制御回路１０８からのライト要求にしたがって、ＤＤＲ  ＳＤＲＡＭ１０４へ該ライト用テストデータを書き込む（ステップＳ６０４）。
【００４５】
次に、制御回路１０８は、ＤＤＲ  ＳＤＲＡＭ１０４に書き込まれたライト用テストデータを読み込む場合の、クロックの位相シフト量を決定し、該位相シフト量を示す情報をクロック制御回路１１０にセットする（ステップＳ６０６）。例えば、制御回路１０８は、０°〜３６０°の位相シフトの範囲の内、所定範囲の位相シフト量を予め決定しておき、該所定範囲の位相シフト量の最小値をクロック制御回路１１０にセットする。
【００４６】
次に、制御回路１０８は、ＤＤＲ  ＳＤＲＡＭコントローラ１１２にリード要求を出し、ＤＤＲ  ＳＤＲＡＭ１０４に書き込まれたライト用テストデータを読み込む（ステップＳ６０８）。この場合、ＤＤＲ  ＳＤＲＡＭコントローラ１１２は、リード要求に応じて、クロック制御回路１１０から出力されるクロックに基づいて、ＤＤＲ  ＳＤＲＡＭ１０４から出力されるデータ信号を取り込む。このデータ信号は、制御回路１０８に入力される。
【００４７】
次に、制御回路１０８は、ステップＳ６０４においてＤＤＲ  ＳＤＲＡＭに書き込んだテストデータと、ステップＳ６０８においてリード要求して得たデータとを比較し、等しいか否かを判断する（ステップＳ６１０）。
【００４８】
ステップＳ６０４においてＤＤＲ  ＳＤＲＡＭ１０４に書き込んだテストデータと、ステップＳ６０８においてリード要求して得たデータとが等しい場合（ステップＳ６１０：ＹＥＳ）、制御回路１０８は、このときの位相シフト値をメモリ１０６に格納する（ステップＳ６１２）。
【００４９】
次に、制御回路１０８はクロック制御回路１１０に対して、位相シフト値をインクリメントする（ステップＳ６１４）。すなわち、制御回路１０８は、位相シフト値をインクリメント（増加）させ、該位相シフト値をクロック制御回路１１０に入力する。
【００５０】
一方、ステップＳ６０４においてＤＤＲ  ＳＤＲＡＭ１０４に書き込んだテストデータと、ステップＳ６０８においてリード要求して得たデータとが等しくない場合（ステップＳ６１０：ＮＯ）、ステップＳ６１４に進む。すなわち、制御回路１０８はクロック制御回路１１０に対して、位相シフト値をインクリメントする（ステップＳ６１４）。
【００５１】
次に、制御回路１０８は、位相シフト値が調整することのできる最大値以下であるか否かを判断する（ステップＳ６１６）。例えば、制御回路１０８は、予め決定された所定範囲の位相シフト量の上限であるか否かを判断する。
【００５２】
位相シフト値が最大値以下である場合（ステップＳ６１６：ＹＥＳ）、制御回路１０８は、クロック制御回路１１０に対してステップＳ６１４においてインクリメントされた位相シフト値をセットし（ステップＳ６１８）、ステップＳ６０８に戻る。
【００５３】
位相シフト値が最大値に達するまで、ステップＳ６０８からステップＳ６１６の処理が繰り返される。その結果、ＤＤＲ  ＳＤＲＡＭ１０４とのデータの読み書きを正常に行うことができる位相シフト範囲が求められる。
【００５４】
一方、位相シフト値が最大値以下でない場合（ステップＳ６１６：ＮＯ）、すなわち、位相シフト値が最大値に達した場合、制御回路１０８は、メモリ１０６に記憶されたＤＤＲ  ＳＤＲＡＭ１０４のデータの読み書きを正常に行うことができる位相シフトの範囲を求め、その中間値を、位相シフト量として、クロック制御回路１１０に対してセット（設定）する（ステップＳ６２０）。
【００５５】
このようにＤＤＲ  ＳＤＲＡＭ１０４へのデータの読み書きを正常に行うことができる位相シフトの範囲の中間値を、位相シフト量として設定することにより、位相シフトしたクロックのエッジ位置と、データ信号の論理変化位置とのマージンを改善でき、最適な位相シフト値を設定できる。
【００５６】
本実施例にかかるメモリシステムによれば、ＤＤＲ  ＳＤＲＡＭコントローラ側で位相シフトしたクロックのエッジ位置とデータ信号の論理変化位置とのマージンをできるだけ大きく確保できるように自動調整でき、リード時のデータの信頼性を高めることができる。
【００５７】
以上、本発明を好ましい実施例について説明したが、本発明は上記の特定の実施例に限定されるものではなく、特許請求の範囲に記載した要旨内において様々な変形・変更が可能である。
【産業上の利用可能性】
【００５８】
本発明は、メモリシステムに適用できる。
【図面の簡単な説明】
【００５９】
【図１】ライト時におけるデータ取り込みタイミングを示す説明図である。
【図２】リード時におけるデータ取り込みタイミングを示す説明図である。
【図３】データ有効期間の中間付近にＤＱＳの両エッジがくるようにタイミング調整を行う例を示す説明図である。
【図４】本発明の一実施例にかかるメモリシステムを示すブロック図である。
【図５】本発明の一実施例にかかるメモリシステムにおける位相シフトが可能なクロックを示す説明図である。
【図６】本発明の一実施例にかかるメモリシステムの動作を示すフロー図である。
【符号の説明】
【００６０】
１００  メモリシステム
【図１】
2007164697.tif 000003
【図２】
2007164697.tif 000004
【図３】
2007164697.tif 000005
【図４】
2007164697.tif 000006
【図５】
2007164697.tif 000007
【図６】
2007164697.tif 000008