(57)【特許請求の範囲】
【請求項１】
ＲＥＡＤコマンドを受信したときに、非活性状態から、クロック信号の周期で第１のレベルから第２のレベルへの変化と、それに続く、第２のレベルから第１のレベルへの変化とを繰り返す活性状態を経て、非活性状態に戻るデータストローブ信号を送信するとともに、該データストローブ信号のレベル変化に同期してデータを送信する同期メモリに、前記ＲＥＡＤコマンドを送信するとともに、前記データストローブ信号を受信し、該データストローブ信号のレベル変化に同期して前記データを読み取るメモリインターフェース回路であって、
前記データストローブ信号のレベル変化を検出して前記データの読み取りのタイミングを制御する検出回路と、
非マスク期間を除いて前記検出回路による検出を禁止する読み取りマスク信号を生成する読み取りマスクコントロール回路とを有するとともに、
前記データストローブ信号のレベル変化を検出し、前記クロック信号に対する前記データストローブ信号の遅延値を計算する遅延値計算回路を有し、
前記マスクコントロール回路が、さらに、前記ＲＥＡＤコマンド送信から所定の時間の後から前記活性状態の一部のみを含む非マスク期間を除いて、前記遅延値計算回路による検出を禁止する遅延値計算用マスク信号を生成し、該遅延値計算用マスク信号を利用して前記遅延値計算回路により計算された前記データストローブ信号の遅延値に基づいて、前記読み取りマスク信号を生成し、
前記遅延値計算用マスク信号の非マスク期間が、前記ＲＥＡＤコマンドの送信から前記データストローブ信号の受信までの遅延時間が許容範囲内のいずれであっても、前記データストローブ信号の、前記活性状態の最初の第１のレベルから第２のレベルへの変化と、最後の第２のレベルから第１のレベルへのレベル変化との少なくとも一方を含まないことを特徴とするメモリインターフェース回路。
【請求項２】
前記遅延値計算用マスク信号の非マスク期間が、前記ＲＥＡＤコマンドの送信から前記データストローブ信号の受信までの遅延時間が許容範囲内のいずれであっても、前記データストローブ信号の、前記活性状態の最初の第１のレベルから第２のレベルへの変化と、最後の第２のレベルから第１のレベルへのレベル変化との両方を含まないことを特徴とする請求項１記載のメモリインターフェース回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クロック信号に同期して動作し、データストローブ信号に同期してデータの送受信を行う同期メモリの動作（データの書き込みおよび読み出し）を制御するメモリインターフェース回路に関するものである。
【背景技術】
【０００２】
ＤＤＲメモリ等の同期メモリは、クロック信号ＣＬＫに同期して動作し、データストローブ信号ＤＱＳに同期してデータＤＱの転送が行われる。例えば、ＤＤＲメモリの動作を制御するメモリインターフェース回路は、データ書き込み時には、データストローブ信号ＤＱＳに同期してデータＤＱをＤＤＲメモリに送信し、データ読み出し時には、データストローブ信号ＤＱＳに同期してＤＤＲメモリからデータＤＱを受信する。
【０００３】
データストローブ信号ＤＱＳは、ＤＤＲメモリとメモリインターフェース回路との間でデータの書き込みおよび読み出しが行われる時に使用される双方向のタイミング制御信号である。そのため、メモリインターフェース回路において、データストローブ信号ＤＱＳは、データ書き込み時は出力信号、データ読み出し時は入力信号として動作し、動作が行われていない場合はＨｉ−Ｚ（ハイインピーダンス）状態となる。
【０００４】
上記のように、メモリインターフェース回路では、データ読み出し時にデータストローブ信号ＤＱＳを入力信号として認識するが、データストローブ信号ＤＱＳの遅延によって、Ｈｉ−Ｚ状態のデータストローブ信号ＤＱＳが入力信号として認識される場合がある。Ｈｉ−Ｚ状態の場合、入力信号のＨレベル（ハイレベル）、Ｌレベル（ローレベル）が確定していないため、データストローブ信号ＤＱＳが誤認識される虞がある。
【０００５】
そのため、メモリインターフェース回路では、データストローブ信号ＤＱＳの不定期間（Ｈｉ−Ｚ状態の期間）をマスクするためのマスク信号を内部で生成して、有効範囲のデータストローブ信号ＤＱＳのみを使用するように設計が行われている。
【０００６】
例えば、特許文献１には、データストローブ信号ＤＱＳの有効範囲を計算する方法として、リードプリアンブルを検出してマスク信号を生成することが開示されている。しかし、Ｈｉ−Ｚ状態からリードプリアンブルに変化したかどうかを判断することは困難である。例えば、アナログ的な回路を利用してリードプリアンブルを検出することが考えられるが、回路設計が困難である。
【０００７】
データストローブ信号ＤＱＳのマスク期間は、あらかじめデータストローブ信号ＤＱＳの遅延値を計算して設定される。そのため、例えば、ＰＶＴ（Ｐ：プロセス、Ｖ：電源電圧、Ｔ：温度）条件の変動により遅延値の値が大きく変動した場合や、同期メモリおよびメモリインターフェース回路等が実装されるボード上の配線（ボード配線）が想定よりも長くなった場合などに、マスク信号を最適なタイミングに設定できない場合がある。
【０００８】
図５は、メモリインターフェース回路の動作を表す一例のタイミングチャートである。同図に示すように、ＤＤＲメモリ等の同期メモリでは、ＲＥＡＤコマンドを受信してから所定の時間の後から活性状態のデータストローブ信号ＤＱＳの送信が開始される。同図には、データストローブ信号ＤＱＳとして、Ｌレベルのリードプリアンブルが出力された後、クロック信号ＣＬＫの周期でＨレベルとＬレベルとの間の変化を４回繰り返す活性状態を経て、Ｌレベルのポストアンブルが出力された後に、非活性状態に戻る様子が示されている。
【０００９】
同図に示すように、データストローブ信号ＤＱＳの遅延値の最小値（ｍｉｎ条件）と最大値（ｍａｘ条件）との間には、クロック信号ＣＬＫの周期の１／２を超えて、１周期に近いほどの差が発生する場合がある。この両方の条件を満たす期間がほとんど存在せず、場合によってはマスク信号ＤＱＳ＿ＭＡＳＫを設定することができないことがある。また、両方の条件を満たせたとしても、最小値の条件の場合に、マスク信号ＤＱＳ＿ＭＡＳＫの最後のところで、内部データストローブ信号ＤＱＳＩとして不定期間のデータストローブ信号ＤＱＳが取り込まれる虞もある。
【００１０】
また、本出願人が本発明に関連性のあると考える先行技術文献として、特許文献２および３がある。
【００１１】
特許文献２は、ＤＤＲメモリからのリードデータをメモリインタフェースコントローラ側の内部クロックに同期化する技術に関するものである。同文献には、データストローブ信号を用いて内部クロック信号に対するデータストローブ信号の到達遅延を算出し、到達したデータストローブ信号の位相をシフトさせた信号に基づいて、到達したリード信号をサンプルすることが開示されている。
【００１２】
特許文献３は、ＤＤＲメモリにおけるデータストローブ信号からハイインピーダンス状態を排除して、データ信号の取込みのためのストローブ信号を生成する技術に関するものである。同文献には、リード指令信号の入力からデータストローブ信号の有効エッジまでのレイテンシ計測値を計測し、レイテンシ計測値だけ待機した後、データストローブ信号の遮断を解除することが開示されている。
【先行技術文献】
【特許文献】
【００１３】
【特許文献１】特開２００６−２６０３２２号公報
【特許文献２】特開２００５−７８５４７号公報
【特許文献３】特開２００７−２６５３９９号公報
【発明の概要】
【発明が解決しようとする課題】
【００１４】
特許文献２および３はいずれも、データストローブ信号ＤＱＳの１回目の立ち上がりのタイミングの測定結果に基づいて、タイミングの調整を行うものである。この場合、データストローブ信号ＤＱＳの不定期間による誤測定の問題、もしくは、それを防止するための対策が必要になるものと想像される。
【００１５】
本発明の目的は、前記従来技術の問題点を解消し、常に最適なタイミングでデータストローブ信号の不定期間をマスクすることができるメモリインターフェース回路を提供することにある。
【課題を解決するための手段】
【００１６】
上記目的を達成するために、本発明は、ＲＥＡＤコマンドを受信したときに、非活性状態から、クロック信号の周期で第１のレベルから第２のレベルへの変化と、それに続く、第２のレベルから第１のレベルへの変化とを繰り返す活性状態を経て、非活性状態に戻るデータストローブ信号を送信するとともに、該データストローブ信号のレベル変化に同期してデータを送信する同期メモリに、前記ＲＥＡＤコマンドを送信するとともに、前記データストローブ信号を受信し、該データストローブ信号のレベル変化に同期して前記データを読み取るメモリインターフェース回路であって、
前記データストローブ信号のレベル変化を検出して前記データの読み取りのタイミングを制御する検出回路と、
非マスク期間を除いて前記検出回路による検出を禁止する読み取りマスク信号を生成する読み取りマスクコントロール回路とを有するとともに、
前記データストローブ信号のレベル変化を検出し、前記クロック信号に対する前記データストローブ信号の遅延値を計算する遅延値計算回路を有し、
前記マスクコントロール回路が、さらに、前記ＲＥＡＤコマンド送信から所定の時間の後から前記活性状態の一部のみを含む非マスク期間を除いて、前記遅延値計算回路による検出を禁止する遅延値計算用マスク信号を生成し、該遅延値計算用マスク信号を利用して前記遅延値計算回路により計算された前記データストローブ信号の遅延値に基づいて、前記読み取りマスク信号を生成することを特徴とするメモリインターフェース回路を提供するものである。
【００１７】
ここで、前記遅延値計算用マスク信号の非マスク期間が、前記ＲＥＡＤコマンドの送信から前記データストローブ信号の受信までの遅延時間が許容範囲内のいずれであっても、前記データストローブ信号の、前記活性状態の最初の第１のレベルから第２のレベルへの変化と、最後の第２のレベルから第１のレベルへのレベル変化との少なくとも一方を含まないことが好ましい。
また、前記遅延値計算用マスク信号の非マスク期間が、前記ＲＥＡＤコマンドの送信から前記データストローブ信号の受信までの遅延時間が許容範囲内のいずれであっても、前記データストローブ信号の、前記活性状態の最初の第１のレベルから第２のレベルへの変化と、最後の第２のレベルから第１のレベルへのレベル変化との両方を含まないことが好ましい。
【発明の効果】
【００１８】
本発明によれば、遅延値計算回路がデータストローブ信号の遅延値を計算するときに、遅延値計算用マスク信号を利用して、遅延値計算回路の誤動作の原因になるデータストローブ信号の不定期間を確実にマスクすることにより、誤測定を防止して、正確に計算することができる。この、データストローブ信号の遅延値（実測値）に基づいて、読み出しマスク信号の非マスク期間を設定するため、ＰＶＴ条件の変動やボード配線等に依らず、非マスク期間を常に最適なタイミングとすることができる。
【図面の簡単な説明】
【００１９】
【図１】本発明のメモリインターフェース回路の構成を表す一実施形態の概略図である。
【図２】図１に示す遅延値計算回路１６の構成を表す一例の概略図である。
【図３】図１に示すメモリインターフェース回路１０の動作を表す一例のフローチャートである。
【図４】図１に示すメモリインターフェース回路１０の動作を表す一例のタイミングチャートである。
【図５】メモリインターフェース回路の動作を表す一例のタイミングチャートである。
【発明を実施するための形態】
【００２０】
以下に、添付の図面に示す好適実施形態に基づいて、本発明のメモリインターフェース回路を詳細に説明する。
【００２１】
図１は、本発明のメモリインターフェース回路の構成を表す一実施形態の概略図である。同図に示すメモリインターフェース回路１０は、クロック信号ＣＬＫに同期して動作し、データストローブ信号ＤＱＳに同期してデータＤＱの送受信を行う同期メモリの動作（データの書き込みおよび読み出し）を制御するものである。同図には、説明を容易にするために、データの読み出しを制御する部分だけが示されている。
【００２２】
同期メモリは、データ読み出し時に、ＲＥＡＤコマンドを受信したときに、例えば、非活性状態から、Ｌレベルのリードプリアンブルを出力し、クロック信号ＣＬＫの周期でＨレベルとＬレベルとの間の変化を繰り返す活性状態を経て、Ｌレベルのリードポストアンブルを出力した後に、非活性状態に戻るデータストローブ信号ＤＱＳをメモリインターフェース回路１０に送信する。また、データストローブ信号ＤＱＳのレベル変化に同期してデータＤＱを送信する。
【００２３】
メモリが送信したデータストローブ信号ＤＱＳは、メモリインターフェース回路１０がＲＥＡＤコマンドを送信してから、ボード上の配線の設計等に依存する遅延時間の後に、メモリインターフェース回路１０に入力される。その遅延時間は、同期メモリのスペックにより規定される遅延時間の最小値と最大値との間の範囲内である。
【００２４】
メモリインターフェース回路１０は、データ読み出し時に、同期メモリにＲＥＡＤコマンドを送信するとともに、同期メモリから送信されてくるデータストローブ信号ＤＱＳを受信し、データストローブ信号ＤＱＳのレベル変化に同期してデータＤＱを読み取る。メモリインターフェース回路１０は、図１に示すように、読み取りマスクコントロール回路１２、ＡＮＤ回路１４、遅延値計算回路１６、フリップフロップ１８等を備えている。
【００２５】
マスクコントロール回路１２は、データストローブ信号ＤＱＳの不定期間をマスクするためのマスク信号として、データストローブ信号ＤＱＳの遅延値を計算するために行われるダミーのデータ読み出し（ダミーリード）時には遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１を生成し、それ以外の通常のデータ読み出し時には読み取りマスク信号ＤＱＳ＿ＭＡＳＫ２を生成する。
【００２６】
マスクコントロール回路１２には、ＩＮＩＴ（初期化）信号、および、ＲＥＡＤコマンドが入力される。ＩＮＩＴ信号は、ダミーリードなのか通常のデータ読み出しなのかを表す信号である。本実施形態では、ダミーリードが行われる場合にＩＮＩＴ信号が活性状態とされる。ＩＮＩＴ信号およびＲＥＡＤコマンドは、メモリインターフェース回路１０の図示していない回路によって生成される。マスクコントロール回路１２には、また、後述するように遅延値計算回路１６が計算したデータストローブ信号ＤＱＳの遅延値が、入力される。
【００２７】
マスクコントロール回路１２は、ＩＮＩＴ信号が活性状態の場合にＲＥＡＤコマンドが活性状態になるとダミーリードであると判断する。この場合、ＲＥＡＤコマンドの送信から所定の時間の後から所定の期間を非マスク期間とする遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１が生成される。遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間は、前述のデータストローブ信号ＤＱＳの出力遅延時間の最小値および最大値に基づいてあらかじめ最適なタイミングに設定されている。
【００２８】
具体的には、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間は、ダミーリードにおいてメモリから受信するデータストローブ信号ＤＱＳの活性状態の一部のみを含む。すなわち、活性状態の一部はマスクされる。これにより、遅延値計算回路１６の誤動作の原因となる不定期間を確実にマスクすることができる。より具体的には、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間は、データストローブ信号ＤＱＳの遅延値が許容範囲（データストローブ信号ＤＱＳの遅延時間の最小値と最大値との間の範囲）内のいずれであっても、データストローブ信号ＤＱＳの活性状態の最初のレベル変化のタイミングを含まないように設定される。もしくは、データストローブ信号ＤＱＳの遅延値が許容範囲内のいずれであっても、活性状態の最後のレベル変化のタイミングを含まないように設定される。
【００２９】
前述のように、ＲＥＡＤコマンドの送信からデータストローブ信号ＤＱＳの受信までの時間の範囲は、同期メモリのスペックから既知である。このため、このような遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間の設定が可能である。遅延値計算回路１６は、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間に存在するデータストローブ信号ＤＱＳのレベル変化を検出し、そのタイミングを、クロック信号ＣＬＫを基準として計算する。すなわち、クロック信号ＣＬＫを基準としたデータストローブ信号ＤＱＳの遅延時間（遅延値）を計算する。
【００３０】
また、マスクコントロール回路１２は、ＩＮＩＴ信号が非活性状態の場合にＲＥＡＤコマンドが活性状態になると通常のデータ読み出しであると判断する。この場合、遅延値計算回路１６が計算した、クロック信号ＣＬＫに対するデータストローブ信号ＤＱＳの遅延値に基づいて、ＲＥＡＤコマンドの送信から所定の遅延時間の後から受信されるデータストローブ信号ＤＱＳの、活性状態の全てのレベル変化のタイミングを含む期間を非マスク期間とする読み取りマスク信号ＤＱＳ＿ＭＡＳＫ２が生成される。
【００３１】
ＲＥＡＤコマンドおよび遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１はクロック信号ＣＬＫを基準にして生成されるため、クロック信号ＣＬＫからこれらのコマンドおよび信号までの時間は既知である。また、受信されるデータストローブ信号ＤＱＳのクロック信号ＣＬＫに対する遅延値（実測値）は遅延値計算回路１６により計算される。これらの情報に基づいて、マスクコントロール回路１２は、ＲＥＡＤコマンドを送信してから、データストローブ信号ＤＱＳが受信されるまでの実際の遅延時間を算出する。
【００３２】
読み取りマスク信号ＤＱＳ＿ＭＡＳＫ２の非マスク期間は、上記のＲＥＡＤコマンドの送信からデータストローブ信号ＤＱＳの受信までの遅延時間に基づいて、リードプリアンブル以前およびリードポストアンブル以降の不定期間を含まず、かつ、活性状態の全てのレベル変化を含むように設定される。
【００３３】
続いて、ＡＮＤ回路１４には、データ読み出し時に、同期メモリから送信されてくるデータストローブ信号ＤＱＳと、マスクコントロール回路１２により生成されるマスク信号が入力される。ＡＮＤ回路１４は、本発明の検出回路の一例であり、データストローブ信号ＤＱＳのレベル変化を検出してデータＤＱの読み取りのタイミングを制御する内部データストローブ信号ＤＱＳＩを出力する。
【００３４】
内部データストローブ信号ＤＱＳＩは、フリップフロップ１８のクロック入力端子ＣＫに入力される。また、フリップフロップ１８のデータ入力端子Ｄには、データ読み出し時に、データストローブ信号ＤＱＳに同期して同期メモリから送信されてくるデータＤＱが入力される。フリップフロップ１８は、内部データストローブ信号ＤＱＳＩの立ち上がりに同期してデータＤＱを保持し、受信データとして出力する。なお、ＤＤＲ（Double Data Rate）型同期メモリ用のコントローラの場合には、内部データストローブ信号ＤＱＳＩの立ち上がりのみではなく、立ち下がりにも同期してデータＤＱを保持し、受信データとして出力する。
【００３５】
最後に、遅延値計算回路１６は、ＡＮＤ回路１４から出力される内部データストローブ信号ＤＱＳＩ（ＤＱＳＩ１）、および、同期メモリおよびメモリインターフェース回路１０の動作の基準となるクロック信号ＣＬＫに基づいて、ダミーリード時に、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間に存在するデータストローブ信号ＤＱＳのレベル変化を検出することにより、クロック信号ＣＬＫに対するデータストローブ信号ＤＱＳの遅延値（実測値）を計算する。
【００３６】
次に、遅延値計算回路１６について一例を挙げて説明する。
【００３７】
図２は、図１に示す遅延値計算回路１６の構成を表す一例の概略図である。同図に示す遅延値計算回路１６は、クロック遅延回路２０と、４個のフリップフロップ２２ａ、２２ｂ、２２ｃ、２２ｄと、０，１判別回路２４とによって構成されている。
【００３８】
クロック遅延回路２０は、直列に接続された４個の遅延素子（例えば、バッファ回路）２６ａ、２６ｂ、２６ｃ、２６ｄによって構成されている。クロック信号ＣＬＫは、クロック遅延回路２０を構成する遅延素子２６ａ〜２６ｄによって順次遅延され、遅延素子２６ａ〜２６ｄからは、それぞれ、遅延クロック信号ＣＬＫ１，ＣＬＫ２，ＣＬＫ３，ＣＬＫ４が出力される。
【００３９】
内部データストローブ信号ＤＱＳＩは、フリップフロップ２２ａ〜２２ｄのデータ入力端子Ｄに入力される。フリップフロップ２２ａ〜２２ｄのクロック入力端子ＣＫには、それぞれ、遅延クロック信号ＣＬＫ１〜ＣＬＫ４が入力される。それぞれのフリップフロップ２２ａ〜２２ｄには、対応する遅延クロックＣＬＫ１〜ＣＬＫ４の立ち上がりに同期して内部データストローブ信号ＤＱＳＩが保持される。
【００４０】
０，１判別回路２４には、フリップフロップ２２ａ〜２２ｄの出力信号が入力される。０，１判別回路２４は、フリップフロップ２２ａ〜２２ｄの出力信号に基づいて、クロック信号ＣＬＫの立ち上がりエッジに対する、内部データストローブ信号ＤＱＳＩの遅延値を計算する。０，１判別回路２４からは、計算された内部データストローブ信号ＤＱＳＩの遅延値、つまり、データストローブ信号ＤＱＳの遅延値が出力される。
【００４１】
図１に示すように、内部データストローブ信号ＤＱＳＩは、ＡＮＤ回路１４により、データストローブ信号ＤＱＳの活性状態の一部の期間が、マスクコントロール回路１２により生成されるマスク信号（遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１）でマスクされたものである。すなわち、マスク信号がＬレベル（マスク期間）の時、内部データストローブ信号ＤＱＳＩは、データストローブ信号ＤＱＳに関係なくＬレベルとなる。
【００４２】
一方、マスク信号がＨレベル（非マスク期間）の時、内部データストローブ信号ＤＱＳＩはデータストローブ信号ＤＱＳと等価となる。そして、クロック信号ＣＬＫに対するデータストローブ信号ＤＱＳの遅延時間と、各遅延クロック信号ＣＬＫ１〜ＣＬＫ４の遅延時間との関係に応じて、フリップフロップ２２ａ〜２２ｄには、ＬレベルまたはＨレベルが保持される。
【００４３】
０，１判別回路２４は、フリップフロップ２２ａ〜２２ｄの出力信号のいずれがＬレベルでいずれがＨレベルであるかに応じて、クロック信号ＣＬＫの立ち上がりエッジに対する、内部データストローブ信号ＤＱＳＩの遅延値、つまり、データストローブ信号ＤＱＳの遅延値を計算する。
【００４４】
なお、図２では、説明を容易に行うために、クロック遅延回路２０を構成する遅延素子の段数と、これに対応するフリップフロップの個数を４に設定しているが、この個数を増やすことによって遅延値の検出精度を向上させることができる。
【００４５】
次に、図３のフローチャートおよび図４のタイミングチャートを参照して、メモリインターフェース回路１０の動作を説明する。
【００４６】
同期メモリおよびメモリインターフェース回路１０は、電源投入後に、または、必要に応じて任意のタイミングで初期化される（図３のステップＳ１）。
【００４７】
この例では、初期化により、ＩＮＩＴ信号が活性状態とされるとともに、後述するダミーリード時に、４サイクルのバースト転送が行われるように、同期メモリおよびメモリインターフェース回路１０が設定される。なお、バースト転送の設定は、初期化時に限らず、ダミーリードを行う前の適時に行うことができる。バースト転送によるデータ転送の期間は、すなわち、データストローブ信号ＤＱＳのレベル変化のサイクル数は、この例のように４サイクル以上とすることが望ましい。
【００４８】
初期化によりＩＮＩＴ信号が活性状態になると、マスクコントロール回路１２は、ダミーリード時に、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１が生成されるように設定される（図３のステップＳ２）。
【００４９】
図４に示す例では、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１は、ダミーリード時に受信されるデータストローブ信号ＤＱＳの、２回目および３回目のレベル変化（ＬレベルからＨレベルおよびこれに続くＨレベルからＬレベルへのレベル変化の両方）を含み、かつ、１回目および４回目のレベル変化（ＬレベルからＨレベルおよびこれに続くＨレベルからＬレベルへのレベル変化のいずれも）を含まないように、非マスク期間（図４の例では、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１がＨレベル）となる期間が設定されている。
【００５０】
図４には、データストローブ信号ＤＱＳの遅延時間が、最小値と最大値との間の範囲内のある１つの値である場合を示す。ボード上の配線の長さ等に応じてデータストローブ信号ＤＱＳの遅延時間が最大値と最小値との間の範囲で変化した場合には、１回目のレベル変化の後半（ＨレベルからＬレベルへの変化）、もしくは、４回目のレベル変化の前半（ＬレベルからＨレベルへの変化）が、非マスク期間に含まれる可能性がある。しかし、遅延値の許容範囲内において、１回目のＬレベルからＨレベルへの変化や４回目のＨレベルからＬレベルへの変化は、非マスク期間に含まない。すなわち、リードプリアンブルが終了して活性状態に移行した直後の最初のＬレベルからＨレベルへのレベル変化、および、活性状態が終了する直前の最後のＨレベルからＬレベルへのレベル変化は、非マスク期間に含まない。
【００５１】
このように、許容される遅延時間の範囲内でデータストローブ信号ＤＱＳの活性状態の最初（リードプリアンブルから活性状態に移行した直後）のレベル変化をマスクするように非マスク期間を設定することにより、ＲＥＡＤコマンドを送信してデータストローブ信号ＤＱＳの受信が開始されてから、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間の開始タイミングまでの間に十分長い期間を設けることができる。そのため、リードプリアンブルの期間が短くなった場合であっても、十分な余裕をもって、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１でリードプリアンブル以前の不定期間をマスクすることが可能である。
【００５２】
同様に、許容される遅延時間の範囲内でデータストローブ信号ＤＱＳの活性状態の最後（活性状態からリードポストアンブルに移行する直前）のレベル変化をマスクするように非マスク期間を設定することにより、非マスク期間の終了タイミングからデータストローブ信号ＤＱＳが不定期間となるまでの間に十分長い期間を設けることができる。そのため、リードポストアンブルの期間が短くなった場合であっても、十分な余裕をもって遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１でリードポストアンブル以後の不定期間をマスクすることが可能である。
【００５３】
上記のように、データストローブ信号ＤＱＳの不定期間が十分な余裕をもってマスクされるため、不定期間のデータストローブ信号ＤＱＳが遅延値計算回路１６に取り込まれて誤認識されることを防止することができる。ただし、０，１判定回路２４の構成によっては、活性状態の最初と最後の両方のレベル変化をマスクすることは必ずしも必須ではなく、一方のみをマスクすることによって誤認識を防止することが可能な場合もある。
【００５４】
続いて、メモリインターフェース回路１０の図示していない回路からＲＥＡＤコマンドが出力される（ダミーリードが行われる）。ＲＥＡＤコマンドは、同期メモリに送信されるとともに、マスクコントロール回路１２にも入力される（図３のステップＳ３）。
【００５５】
ＲＥＡＤコマンドが送信されると、同期メモリにより、ＲＥＡＤコマンドを受信してから所定の時間の経過後に、データストローブ信号ＤＱＳの送信が開始される。図４の例では、データストローブ信号ＤＱＳは、非活性状態から、Ｌレベルのリードプリアンブルが出力された後、クロック信号ＣＬＫの周期でＨレベルとＬレベルとの間のレベル変化を４回繰り返す活性状態を経て、Ｌレベルのリードポストアンブルが出力された後に、非活性状態（Ｈｉ−Ｚ状態）に戻る。
【００５６】
メモリインターフェース回路１０では、ＡＮＤ回路１４により、同期メモリから送信されてくるデータストローブ信号ＤＱＳが、マスクコントロール回路１２により生成される遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１でマスクされ、内部データストローブ信号ＤＱＳＩ１が出力される。内部データストローブ信号ＤＱＳＩ１は、図４の例では、データストローブ信号ＤＱＳの２回目および３回目のレベル変化が取り出された波形となる。
【００５７】
続いて、遅延値計算回路１６により、クロック信号ＣＬＫの立ち上がりエッジに対する、内部データストローブ信号ＤＱＳＩ１、つまり、データストローブ信号ＤＱＳの遅延値が計算され、マスクコントロール回路１２にフィードバックされる。（図３のステップＳ４）。
【００５８】
ダミーリードが終了すると、ＩＮＩＴ信号が非活性状態とされる。これにより、マスクコントロール回路１２は、通常のデータ読み出し時に、読み取りマスク信号ＤＱＳ＿ＭＡＳＫ２が出力されるように設定される（図３のステップＳ５）。
【００５９】
読み出しマスク信号ＤＱＳ＿ＭＡＳＫ２は、ダミーリード期間に計算したクロック信号ＣＬＫに対するデータストローブ信号ＤＱＳの遅延値と、バースト長に基づいて、データストローブ信号ＤＱＳの前後の不定期間がマスクされ、かつ、活性状態での全てのレベル変化を含む期間が非マスク期間となるように設定される。
【００６０】
上記のように、ダミーリードを行って計算されたデータストローブ信号ＤＱＳの遅延値（実測値）に基づいて、読み出しマスク信号ＤＱＳ＿ＭＡＳＫ２の非マスク期間を設定するため、ＰＶＴ条件の変動やボード配線等に依らず、非マスク期間を常に最適なタイミングとすることができる。
【００６１】
これ以後の通常のデータ読み出し時には、ＡＮＤ回路１４により、同期メモリから送信されてくるデータストローブ信号ＤＱＳが、マスクコントロール回路１２により生成される読み取りマスク信号ＤＱＳ＿ＭＡＳＫ２でマスクされ、内部データストローブ信号ＤＱＳＩ２が生成される。内部データストローブ信号ＤＱＳＩ２は、図４の例では、受信されるデータストローブ信号ＤＱＳの１回目〜４回目までの全てのレベル変化が取り出された波形となる。
【００６２】
そして、データストローブ信号ＤＱＳのレベル変化に同期して同期メモリから送信されてくるデータＤＱが、内部データストローブ信号ＤＱＳＩ２の立ち上がりエッジに同期して、順次フリップフロップ１８に保持され、受信データとして出力される。
【００６３】
なお、マスクコントロール回路１２、検出回路（ＡＮＤ回路１４）、遅延値計算回路１６の具体的な構成は何ら限定されず、同様の機能を果たすことができる各種構成のものが利用可能である。
【００６４】
また、図４のタイミングチャートでは、データ読み出し時のデータストローブ信号ＤＱＳとして、Ｌレベルのリードプレアンブルに続き、ＨレベルとＬレベルとの間のレベル変化を繰り返す活性状態を経て、非活性状態に戻る例を示したが、これに限定されない。例えば、これとは逆に、Ｈレベルのリードプレアンブルに続き、ＬレベルとＨレベルとの間のレベル変化を繰り返す活性状態を経て、非活性状態に戻るものでもよい。
【００６５】
ここで、図２および図４を参照して、遅延値計算回路１６の動作についてさらに説明する。
【００６６】
図示は省略されているが、例えば、０，１判定回路２４に内部データストローブ信号ＤＱＳＩ１を供給し、データストローブ信号ＤＱＳの最後の立ち上がりエッジのタイミングで、フリップフロップ２２ａ〜２２ｄから入力される信号を保持することが可能である。
【００６７】
より具体的には、０，１判定回路２４に、例えば、フリップフロップ２２ａ〜２２ｄのそれぞれのＱ出力がデータ入力端子に入力されたフリップフロップを設け、クロック端子に、内部データストローブ信号ＤＱＳＩ１を入力する。これにより、内部データストローブ信号ＤＱＳＩ１の最後の立ち上がりエッジのタイミングでのフリップフロップ２２ａ〜２２ｄのＱ出力が保持される。
【００６８】
前述のように、フリップフロップ２２ａ〜２２ｄには、遅延素子２６ａ〜２６ｄによって順次遅延された遅延クロック信号ＣＬＫ１〜ＣＬＫ４が供給される。図４の例では、データストローブ信号ＤＱＳの、ＬレベルからＨレベルへの変化とそれに続くＨレベルからＬレベルへの変化とを、２サイクル含むように、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間が設定されている。この場合、内部データストローブ信号ＤＱＳＩ１の最後の立ち上がりエッジ、すなわち、内部データストローブ信号ＤＱＳＩ１の２回目の立ち上がりエッジのタイミングでは、フリップフロップ２２ａ〜２２ｄのうち、内部データストローブ信号ＤＱＳＩ１の最初の立ち下がりエッジ（データストローブ信号ＤＱＳの２回目の立ち下がりエッジ）より前に立ち上がりエッジを有する遅延クロック信号が供給されたもののＱ出力はＨレベル、それより後に立ち上がりエッジを有する遅延クロック信号が供給されたもののＱ出力はＬレベルである。従って、内部データストローブ信号ＤＱＳＩ１の最後の立ち上がりエッジで保持した結果に基づいて、内部データストローブ信号ＤＱＳＩ１の最初の立ち下がりエッジ、すなわち、データストローブ信号ＤＱＳの２回目の立ち下がりエッジの、クロック信号の立ち上がりエッジからの遅延時間（遅延値）を計算することができる。
【００６９】
図４に示された状態から、データストローブ信号ＤＱＳの遅延値がさらに大きくなると、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間が、データストローブ信号ＤＱＳが最初にＨレベルになる期間の一部を含むようになる。この場合でも、データストローブ信号ＤＱＳの３回目の立ち上がりエッジが遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間に含まれていれば、図４に示された状態の場合と同様に、２回目の立ち下がり遅延時間を計算することができる。
【００７０】
逆に、データストローブ信号ＤＱＳの遅延値が小さくなると、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間が、データストローブ信号ＤＱＳが４回目にＨレベルになる期間の一部を含むようになる。この場合、０，１判定回路２４のフリップフロップには、データストローブ信号ＤＱＳの４回目の立ち上がりエッジのタイミングでのフリップフロップ２２ａ〜２２ｄのＱ出力が保持される。この保持結果に基づいて、クロック信号の立ち上がりエッジに対する、データストローブ信号ＤＱＳの３回目の立ち下がりエッジの遅延時間を計算することができる。すなわち、図４に示された場合に比較して、１つ後の立ち下がりエッジの遅延時間が計算できる。しかし、その遅延時間計算の基準となるクロック信号ＣＬＫの立ち上がりエッジも図４に示された場合に比較して１つ後のものになり、図４に示された状態の場合と連続性のある遅延時間を計算することが可能である。
【００７１】
しかしながら、データストローブ信号ＤＱＳの遅延値がさらに小さくなり、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間がデータストローブ信号ＤＱＳの４回目の立ち下がりエッジを含むようになると、リードポストアンブルが短い場合には、その後の不定期間をマスクすることができず、遅延値計算回路１６が誤動作を起こす可能性がある。これを防止するためには、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間を以下のように設定する。すなわち、データストローブ信号ＤＱＳが、活性状態において、ＬレベルからＨレベルへの変化とそれに続くＨレベルからＬレベルへの変化とを、ｍサイクル（ｍは２以上の整数）だけ含む場合に、ｎを１以上、かつ、ｍ−１以下の整数として、データストローブ信号ＤＱＳの遅延値が許容範囲内のいずれであっても、データストローブ信号ＤＱＳのｎ番目の立ち下がりエッジとｎ＋１番目の立ち上がりエッジとを含み、かつ、ｍ番目の立ち下がりエッジを含まないように、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間を設定する。前述のように、データストローブ信号ＤＱＳの遅延値の許容範囲の幅はクロック信号ＣＬＫの１周期よりも小さいため、ｍが３以上であれば、このように設定することが可能である。非マスク期間がｍ番目の立ち下がりエッジを含まないことにより、ポストアンブルの期間が短い場合であっても、確実に、ポストアンブルより後の不定期間をマスクすることができ、遅延値計算回路の誤動作を防止することができる。
【００７２】
なお、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間が、データストローブ信号ＤＱＳの最初の立ち上がりエッジを含むと、リードプリアンブルが短い場合には、リードプリアンブルより前の不定期間をマスクできない可能性がある。しかし、内部データストローブ信号ＤＱＳＩ１の最後の立ち上がりエッジのタイミングでのフリップフロップ２２ａ〜２２ｄのＱ出力を保持する場合には、リードプリアンブルより前の不定期間をマスクすることができなかった場合でも、必ずしも、誤動作の原因にはならない。ただし、ｍが４以上であれば、データストローブ信号ＤＱＳの遅延値が許容範囲内のいずれであっても最初の立ち上がりエッジを含まないように遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間を設定し、さらに確実に誤動作の発生を防止することができる。
【００７３】
また、０，１判定回路２４に設けたフリップフロップのクロック端子に、内部データストローブ信号ＤＱＳＩをそのまま供給するのではなく、ゲート回路を介して、ゲート信号が有効である期間だけ内部データストローブ信号ＤＱＳＩを供給することも可能である。
【００７４】
ゲート信号は、例えば、２個のフリップフロップと１個のＡＮＤゲートとを利用して、以下のように生成することができる。すなわち、１つめのフリップフロップのデータ入力端子をＨレベルに固定し、そのＱ出力を２つめのフリップフロップのデータ入力端子に供給し、１つめのフリップフロップのＱ出力をＡＮＤゲートの正論理入力に、２つめのフリップフロップのＱ出力をＡＮＤゲートの負論理入力に供給する。そして、ＲＥＡＤコマンドに続いて、両方のフリップフロップを、そのＱ出力がＬレベルになるように初期化した後に、内部データストローブ信号ＤＱＳＩを両方のフリップフロップのクロック端子（負論理）に供給する。これにより、ＡＮＤゲートから、内部データストローブ信号ＤＱＳＩの１回目の立ち下がりエッジから２回目の立ち下がりエッジまでの間だけ有効（Ｈレベル）となるゲート信号を出力することができる。
【００７５】
そして、他のＡＮＤゲートをゲート回路として使用し、その入力端子（正論理）に、ゲート信号と内部データストローブ信号ＤＱＳＩとを供給し、その出力を、０，１判定回路２４のフリップフロップのクロック端子に供給する。これにより、内部データストローブ信号ＤＱＳＩの１回目の立ち下がりエッジと２回目の立ち下がりエッジとの間に挟まれた立ち上がりエッジのタイミングで、フリップフロップ２２ａ〜２２ｄのＱ出力を保持することができる。このタイミングでは、フリップフロップ２２ａ〜２２ｄのうち、内部データストローブ信号ＤＱＳＩ１の最初の立ち下がりエッジより前に立ち上がりエッジを有する遅延クロック信号が供給されたもののＱ出力はＨレベル、それより後に立ち上がりエッジを有する遅延クロック信号が供給されたもののＱ出力はＬレベルである。従って、０，１判定回路２４のフリップフロップに保持した結果に基づいて、内部データストローブ信号ＤＱＳＩ１の最初の立ち下がりエッジの、クロック信号の立ち上がりエッジからの遅延時間を計算することができる。
【００７６】
この場合、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間がデータストローブ信号ＤＱＳの最初の立ち上がりエッジを含むと、プリアンブルの期間が短い場合には、プリアンブルより前の不定期間をマスクすることができず、遅延値計算回路１６が誤動作を起こす可能性がある。従って、ｎを１以上、かつ、ｍ−１以下の整数として、データストローブ信号ＤＱＳの遅延値が許容範囲内のいずれであっても、データストローブ信号ＤＱＳの１番目の立ち上がりエッジを含まず、かつ、ｎ番目およびｎ＋１番目の立ち下がりエッジを含むように、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間を設定する。データストローブ信号ＤＱＳの遅延値の許容範囲の幅はクロック信号ＣＬＫの１周期より小さいため、ｍが３以上であれば、このように設定することが可能である。遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間がデータストローブ信号ＤＱＳの１回目の立ち上がりエッジを含まないことにより、プリアンブルの期間が短い場合であっても、その前の不定期間を確実にマスクし、誤動作を防止することができる。
【００７７】
なお、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間が、データストローブ信号ＤＱＳのｍ番目の立ち下がりエッジを含むと、ポストアンブルの期間が短い場合には、ポストアンブルの後の不定期間をマスクできない可能性がある。しかし、ゲート信号が有効である期間だけ０，１判定回路２４のフリップフロップに内部データストローブ信号ＤＱＳＩを供給することにより、ポストアンブルより後の不定期間をマスクすることができなかった場合でも、誤動作の発生を防止することが可能である。ただし、ｍが４以上であれば、データストローブ信号ＤＱＳの遅延値が許容範囲内のいずれであってもｍ番目の立ち下がりエッジを含まないように遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間を設定し、さらに確実に誤動作の発生を防止することができる。
【００７８】
なお、図１に示した例では、正論理のクロック入力端子ＣＫを有するフリップフロップ２２ａ〜２２ｄを利用して遅延クロック信号ＣＬＫ１〜ＣＬＫ４の立ち上がりエッジのタイミングでの内部データストローブ信号ＤＱＳＩのレベルを保持している。これに対して、負論理のクロック入力端子ＣＫを有するフリップフロップ２２ａ〜２２ｄを利用して遅延クロック信号ＣＬＫ１〜ＣＬＫ４の立ち下がりエッジのタイミングでの内部データストローブ信号ＤＱＳＩのレベルを保持することも可能である。この場合には、クロック信号ＣＬＫの立ち下がりエッジからのデータストローブ信号ＤＱＳの遅延値を計算することが可能である。
【００７９】
また、データストローブ信号ＤＱＳが、Ｈレベルのプリアンブルとポストアンブルとの間に、ＨレベルからＬレベルへの変化とそれに続くＬレベルからＨレベルへの変化とを、複数サイクル繰り返す活性状態を含む場合であっても、遅延値計算用マスク信号ＤＱＳ＿ＭＡＳＫ１の非マスク期間を適切に設定することにより、データストローブ信号ＤＱＳの遅延値を計算することが可能である。
【００８０】
本発明は、基本的に以上のようなものである。
以上、本発明について詳細に説明したが、本発明は上記実施形態に限定されず、本発明の主旨を逸脱しない範囲において、種々の改良や変更をしてもよいのはもちろんである。
【符号の説明】
【００８１】
１０  メモリインターフェース回路
１２  読み取りマスクコントロール回路
１４  ＡＮＤ回路
１６  遅延値計算回路
１８、２２ａ、２２ｂ、２２ｃ、２２ｄ  フリップフロップ
２０  クロック遅延回路
２４  ０，１判別回路
２６ａ、２６ｂ、２６ｃ、２６ｄ  遅延素子
【図１】
0005450112.tif 000002
【図２】
0005450112.tif 000003
【図３】
0005450112.tif 000004
【図４】
0005450112.tif 000005
【図５】
0005450112.tif 000006