(57)【要約】  【課題】  特殊な回路を使わずに、電源・温度の変化や、プリント基板上の配線層や、層間接続、素材のばらつき等があっても、安定的に動作させることが可能なメモリ制御方法および装置を提供する。  【解決手段】  メモリ装置であるＤＤＲ−ＳＤＲＡＭ２が出力するデータを、ＤＤＲインタフェイス７０でＤＤＲ−ＳＤＲＡＭ２が出力する複数のストローブ信号のうち、少なくとも２つのストローブ信号のそれぞれに基づいて取り込み、選択部４０が、ＤＤＲインタフェイス７０が取り込んだデータのいずれかを選択して出力する。【選択図】        図１
2006065470.tif 000002
【特許請求の範囲】
【請求項１】
複数のストローブ信号を出力するとともに該ストローブ信号に同期してデータを出力するメモリ装置を制御するメモリ制御方法であって、
メモリ装置が出力するデータを、該メモリ装置が出力する複数のストローブ信号のうち、少なくとも２つのストローブ信号のそれぞれに基づいて取り込み、該取り込んだデータのいずれかを選択して出力することを特徴とするメモリ制御方法。
【請求項２】
前記ストローブ信号に基づいて取り込んだデータの正誤を判定し、該判定により正と判定されたデータを選択して出力することを特徴とする請求項１記載のメモリ制御方法。
【請求項３】
前記選択は、前記ストローブ信号のうち特定のストローブ信号で取り込んだデータが誤りと判定された場合に、該特定のストローブ信号とは別のストローブ信号で取り込んだデータを出力することにより行われることを特徴とする請求項２記載のメモリ制御方法。
【請求項４】
前記判定は、前記メモリ装置の初期化処理時に行われることを特徴とする請求項２記載のメモリ制御方法。
【請求項５】
前記データは、前記ストローブ信号の位相をシフトした信号のエッジと同期して取り込まれることを特徴とする請求項１記載のメモリ制御方法。
【請求項６】
前記データは、前記ストローブ信号の位相をシフトした信号の立ち上がりエッジと立ち下がりエッジのそれぞれに同期して取り込まれることを特徴とする請求項５記載のメモリ制御方法。
【請求項７】
前記ストローブ信号は、前記メモリ装置に接続された複数の信号線のそれぞれから出力され、該信号線のうち近傍に配置された少なくとも２つの信号線のそれぞれから出力されるストローブ信号に基づいて前記データを取り込むことを特徴とする請求項１記載のメモリ制御方法。
【請求項８】
前記ストローブ信号は、前記メモリ装置に接続された複数の信号線のそれぞれから出力され、該信号線のうち対称に配置された少なくとも２つの信号線のそれぞれから出力されるストローブ信号に基づいて前記データを取り込むことを特徴とする請求項１記載のメモリ制御方法。
【請求項９】
複数のストローブ信号を出力するとともに該ストローブ信号に同期してデータを出力するメモリ装置を制御するメモリ制御装置において、
メモリ装置が出力するデータを、該メモリ装置が出力する複数のストローブ信号のうち、少なくとも２つのストローブ信号のそれぞれに基づいて取り込むデータ取得手段と、
前記データ取得手段が取り込んだデータのいずれかを選択して出力する選択手段と
を具備することを特徴とするメモリ制御装置。
【請求項１０】
前記データ取得手段は、１のストローブ信号に基づいてデータを取り込むデータ取り込み手段を少なくとも２つ具備することを特徴とする請求項９記載のメモリ制御装置。
【請求項１１】
前記選択手段が選択したデータの正誤を判定する判定手段をさらに具備し、
前記選択手段は、前記判定手段の判定結果に基づいて選択するデータを変更する
ことを特徴とする請求項９記載のメモリ制御装置。
【請求項１２】
前記判定手段は、前記選択手段が選択したデータが誤りと判定された場合に、前記選択手段に該誤りと判定されたデータを取り込んだストローブ信号とは別のストローブ信号で取り込んだデータ選択させることを特徴とする請求項１１記載のメモリ制御装置。
【請求項１３】
前記判定手段は、前記メモリ装置の初期化処理時に前記判定を行うことを特徴とする請求項１１記載のメモリ制御装置。
【請求項１４】
前記ストローブ信号の位相をシフトした信号を生成する位相シフト手段をさらに具備し、
前記データ取得手段は、前記位相シフト手段が生成した信号のエッジと同期してデータを取り込む
ことを特徴とする請求項９記載のメモリ制御装置。
【請求項１５】
前記データ取得手段は、前記位相シフト手段が生成した信号の立ち上がりエッジと立ち下がりエッジのそれぞれに同期してデータを取り込むことを特徴とする請求項１４記載のメモリ制御装置。
【請求項１６】
前記ストローブ信号は、前記メモリ装置に接続された複数の信号線のそれぞれから出力され、
前記データ取得手段は、前記信号線のうち近傍に配置された少なくとも２つの信号線のそれぞれから出力されるストローブ信号に基づいて前記データを取り込む
ことを特徴とする請求項９記載のメモリ制御装置。
【請求項１７】
前記ストローブ信号は、前記メモリ装置に接続された複数の信号線のそれぞれから出力され、
前記データ取得手段は、前記信号線のうち対称に配置された少なくとも２つの信号線のそれぞれから出力されるストローブ信号に基づいて前記データを取り込む
ことを特徴とする請求項９記載のメモリ制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリ制御方法および装置に関し、特に、ストローブ信号に基づいてデータの読み出しを行うメモリ制御方法および装置に関する。
【背景技術】
【０００２】
近年、大容量な半導体メモリとしては、同期型のシンクロナスＤＲＡＭ（Synchronous Dynamic Random Access Memory：以下、ＳＤＲＡＭと略称する）が主流になってきている。しかしながら、ＳＤＲＡＭでは、ＤＲＡＭ（Dynamic Random Access Memory）自体を高速化することは困難であるために、その入出力部（Ｉ／Ｏ）を高速化するDouble Data Rate(以下、ＤＤＲと略称する)のＳＤＲＡＭが利用され始めている。
【０００３】
ＤＤＲ−ＳＤＲＡＭは、ストローブ信号の両エッジを使ってデータ転送するために、データ（ｎビット）とストローブ信号のタイミング関係が非常に厳しくなっている。具体的には、ＤＤＲ２６６と称される規格においては、制御回路は１３３ＭＨｚ（周期７．５ｎｓ）で動作するものの、データ転送部分は２６６ＭＨｚ（周期３．７ｎｓ）となっており、半導体デバイス設計のみならず、プリント基板の信号配線設計も困難を極めている。
【０００４】
ここで、ＤＤＲ−ＳＤＲＡＭへのデータの書き込みとＤＤＲ−ＳＤＲＡＭからのデータの読み出しを制御するメモリ制御装置について説明する。
【０００５】
図７は、メモリ制御装置が適用されるシステムの構成例を示した図である。同図に示すように、メモリ制御装置５０１は、ＤＤＲ−ＳＤＲＡＭ５０２と接続されるとともに、プロセッサ５０３とシステムバス５０４を介して接続される。
【０００６】
プロセッサ５０３は、システム全体を制御するものであり、メモリ制御装置５０１を介してＤＤＲ−ＳＤＲＡＭ５０２へのデータの書き込みやＤＤＲ−ＳＤＲＡＭ５０２からのデータの読み出しを行う。また、システムバス５０４には、ネットワークを介してデータの送受信を行うＮＩＣ（Network Interface Controller）等（不図示）が接続されている。
【０００７】
ここで、図７に示した構成におけるデータの書き込みおよびデータの読み出し時の動作について説明する。図８は、図７に示した構成においてプロセッサ５０３がＤＤＲ−ＳＤＲＡＭ５０２にデータを書き込む際の信号のタイミングを示した図であり、図９は、図７に示した構成においてプロセッサ５０３がＤＤＲ−ＳＤＲＡＭ５０２からデータを読み出す際の信号のタイミングを示した図である。
【０００８】
プロセッサ５０３がＤＤＲ−ＳＤＲＡＭ５０２にデータを書き込む際には、メモリ制御装置５０１は、プロセッサ５０３からSYSTEM_CLK、ChipSelect、ADDR、DATA、R/Wの各信号を受けて、ＤＤＲ−ＳＤＲＡＭ５０２へ送出するCK、nCK、Command、DQS0、DQ[7:0]、DQS1、DQ[15:8]の各信号を所定のタイミングで生成する。
【０００９】
SYSTEM_CLKは、図７に示したシステムに共通のクロックであり、ChipSelectは、ＤＤＲ−ＳＤＲＡＭ５０２を制御するメモリ制御装置５０１を選択する信号、ADDRは、データの書き込み先のアドレスを示す信号、DATAは、ＤＤＲ−ＳＤＲＡＭ５０２へ書き込むデータ、R/Wは、ＤＤＲ−ＳＤＲＡＭ５０２に対するデータの書き込み若しくは読み出しを指示する信号（０が書き込み指示）である。
【００１０】
CKとnCKは、ＤＤＲ−ＳＤＲＡＭ５０２を動作させるクロックであり、Commandは動作指示、DQ[7:0]は、DQ0乃至DQ7として表される８ビットのデータ、DQS0は、DQ[7:0]に対応するストローブ信号、DQ[15:8]は、DQ8乃至DQ15として表される８ビットのデータ、DQS1は、DQ[15:8]に対応するストローブ信号である。
【００１１】
また、プロセッサ５０３がＤＤＲ−ＳＤＲＡＭ５０２からデータを読み出す際には、メモリ制御装置５０１は、プロセッサ５０３からSYSTEM_CLK、ChipSelect、ADDR、R/Wの各信号を受けて、ＤＤＲ−ＳＤＲＡＭ５０２へ送出するCK、nCK、Commandの各信号を所定のタイミングで生成する。そして、ＤＤＲ−ＳＤＲＡＭ５０２からDQS0、DQ[7:0]、DQS1、DQ[15:8]の各信号が返されると、メモリ制御装置５０１は、DATA信号をプロセッサ５０３へ送出する。
【００１２】
SYSTEM_CLKは、図７に示したシステムに共通のクロックであり、ChipSelectは、ＤＤＲ−ＳＤＲＡＭ５０２を選択する信号、ADDRは、データの読み出し元のアドレスを示す信号、DATAは、ＤＤＲ−ＳＤＲＡＭ５０２から読み出したむデータ、R/Wは、ＤＤＲ−ＳＤＲＡＭ５０２に対するデータの書き込み若しくは読み出しを指示する信号（１が読み出し指示）である。
【００１３】
CKとnCKは、ＤＤＲ−ＳＤＲＡＭ５０２を動作させるクロックであり、Commandは動作指示、DQ[7:0]は、DQ0乃至DQ7として表される８ビットのデータ、DQS0は、DQ[7:0]に対応するストローブ信号、DQ[15:8]は、DQ8乃至DQ15として表される８ビットのデータ、DQS1は、DQ[15:8]に対応するストローブ信号である。
【００１４】
続いて、プロセッサ５０３がＤＤＲ−ＳＤＲＡＭ５０２からデータを読み出す際のメモリ制御装置５０１の動作について説明する。図１０は、メモリ制御装置５０１の構成を示した図であり、図１１は、プロセッサ５０３がＤＤＲ−ＳＤＲＡＭ５０２からデータを読み出す際のメモリ制御装置５０１内の信号のタイミングを示した図である。なお、図１０においては、メモリ制御装置５０１のうち、８ビットのデータDQ[7:0]を処理する部分のみを示しており、他の部分は省略している。
【００１５】
図１０に示すように、メモリ制御装置５０１は、データリード制御部５１０と、ラッチ５１１−Ｌ、ラッチ５１１−Ｈ、ラッチ５２０−Ｌ、ラッチ５２０−Ｈ、ＤＬＬ(Delay Locked Loop)５３０を具備して構成される。この構成においては、ＤＬＬ５３０は、ＤＤＲ−ＳＤＲＡＭ５０２から入力されるストローブ信号DQS0の位相を９０度遅らせた内部DQS0を生成する。ラッチ５２０−Ｌは、ＤＬＬ５３０が生成した内部DQS0の立ち上がりに同期してＤＤＲ−ＳＤＲＡＭ５０２から入力されるデータDQ[7:0]をラッチしてdata_in[7:0]Lを取得し、ラッチ５２０−Ｈは、ＤＬＬ５３０が生成した内部DQS0の立ち下がりに同期してＤＤＲ−ＳＤＲＡＭ５０２から入力されるデータDQ[7:0]をラッチしてdata_in[7:0]Hを取得する。ラッチ５１１−Ｌとラッチ５１１−Ｈは、データリード制御部５１０に配され、システムクロックに同期して、それぞれ、data_in[7:0]Lとdata_in[7:0]Hを取得し、データとしてint_DQ[7:0]L、int_DQ[7:0]Hを出力する。
【００１６】
ところで、DQS0とDQ[7:0]は、同期してＤＤＲ−ＳＤＲＡＭ５０２から入力されるために上述の処理でデータを取得することができるが、DQS0とDQ[7:0]は厳密には同期していない。これは、プリント基板上の配線長のズレや電源・温度変化、プリント基板上の配線層、層間接続、素材ばらつき等により、DQ[7:0]にタイミングのズレ（以下、スキューと称する）が生じることが原因である。
【００１７】
スキューが発生した場合に、その大きさが許容範囲内であれば、図１２に示すように正しいデータを取得することができるが、スキューが大きくなった場合には、図１３に示すように、データを正しく取得することができなくなってしまう。なお、図１３に示す状態は、DQ[3]とDQ[15]を正しく取得することができていない状態である。
【００１８】
このため、一般的には、プリント基板上の配線を等長配線とすることで、スキューの発生を抑制している。図１４は、等長配線の１例を示した図である。プリント基板上では、データストローブとデータの１つの塊（図１４では、DQS0とDQ[7:0]）が等しい長さになるように、ミアンダと呼ばれる長さ調整のための曲線配線を行っている。
【００１９】
特に、Dual Inline Memory Module（以下、ＤＩＭＭと略称する）のような多ビット、例えば６４ビットのデータをもつ場合には、１つのストローブに対し、データ信号を８本割り当てて、８本の中でタイミングばらつきの押さえ込みを行っている。
【００２０】
しかしながら、実際には、等長配線を行うにも限界があり、長さには多少のズレがでている。さらに、電源や温度変化、プリント基板上の配線層、層間接続、素材ばらつき等の影響で全ての信号を同期させることは不可能に近い。
【００２１】
このため、可変遅延回路を備えて、データの最適遅延量を決め、これを設定して利用する技術（例えば、特許文献１参照）や、可変容量回路を備えて、データの遅延を調整する技術（例えば、特許文献２参照）、プリント基板上の配線を考慮して、チップの１辺にデータ信号を並べる技術（例えば、特許文献３参照）等が提案されている。
【特許文献１】特開２００１−３３７８６２号公報
【特許文献２】特開２００１−３０７４８０号公報
【特許文献３】特開２０００−２４３８９３号公報
【発明の開示】
【発明が解決しようとする課題】
【００２２】
しかしながら、上述の特許文献１や特許文献２に記載の技術においては、可変遅延回路や可変容量回路自体の特性が入り込むため、電源電圧や温度、プロセスの影響を含めた可変量を特定することは困難である。あわせて遅延精度や容量精度をたかめるということは、半導体プロセスに精度をもとめることになり、結果としてコストがかかる。その上、精度よく遅延を調整しても、電源・温度の変化や、プリント基板上の配線層や、層間接続、素材ばらつきのために、必ずしも最適のタイミングで動作させることは、困難である。
【００２３】
また、特許文献３に記載された技術のように、チップの１辺にデータ信号を並べることは、物理的に効果があることであるが、ＬＳＩのパッケージが多ピン化した場合には、この方法では限界を迎える。つまり、ＤＤＲ−ＳＤＲＡＭのＤＩＭＭをアクセスするのに必要な信号は、データに関してDQS[7:0]、DQ[63:0]、DM[7:0]の８０ピンであり、チップの１辺に全てを並べるということは、８０ピン×４辺の３２０ピンのQuadFlatPackage（以下、ＱＦＰと略称する）という大きなサイズのパッケージを使用することが余儀なくされ、プリント基板サイズが大きくなるという副次的なコストアップが発生してしまう。さらに、最近主流のBallGridArray(以下、ＢＧＡと略称する)パッケージでは、内部デバイスからピン端子までの配線も関係するために１辺に並べることで大きな効果が期待できるものではない。
【００２４】
また、以上のような高速化への対応をせずに動作クロック自体を低速にすることで、技術的障壁を下げることも考えられるが、ＤＤＲ−ＳＤＲＡＭには、ＤＬＬという信号の位相制御回路が内蔵されており、標準化団体ＪＥＤＥＣより発行されている文書JESD79「DDR SDRAM Specification」によると、クロック周期の最大値は15ns、すなわち、クロック周波数は66.6MHz以上となっている。この数値は、メモリデバイスメーカーによっては、84MHz以上という制約になっている場合もあり、必ずしも技術的に簡易になるとは、いいがたい。
【００２５】
そこで、本発明は、特殊な回路を使わずに、電源・温度の変化や、プリント基板上の配線層や、層間接続、素材のばらつき等があっても、安定的に動作させることが可能なメモリ制御方法および装置を提供することを目的とする。
【課題を解決するための手段】
【００２６】
上述した目的を達成するため、請求項１の発明は、複数のストローブ信号を出力するとともに該ストローブ信号に同期してデータを出力するメモリ装置を制御するメモリ制御方法であって、メモリ装置が出力するデータを、該メモリ装置が出力する複数のストローブ信号のうち、少なくとも２つのストローブ信号のそれぞれに基づいて取り込み、該取り込んだデータのいずれかを選択して出力することを特徴とする。
【００２７】
また、請求項２の発明は、請求項１の発明において、前記ストローブ信号に基づいて取り込んだデータの正誤を判定し、該判定により正と判定されたデータを選択して出力することを特徴とする。
【００２８】
また、請求項３の発明は、請求項２の発明において、前記選択は、前記ストローブ信号のうち特定のストローブ信号で取り込んだデータが誤りと判定された場合に、該特定のストローブ信号とは別のストローブ信号で取り込んだデータを出力することにより行われることを特徴とする。
【００２９】
また、請求項４の発明は、請求項２の発明において、前記判定は、前記メモリ装置の初期化処理時に行われることを特徴とする。
【００３０】
また、請求項５の発明は、請求項１の発明において、前記データは、前記ストローブ信号の位相をシフトした信号のエッジと同期して取り込まれることを特徴とする。
【００３１】
また、請求項６の発明は、請求項５の発明において、前記データは、前記ストローブ信号の位相をシフトした信号の立ち上がりエッジと立ち下がりエッジのそれぞれに同期して取り込まれることを特徴とする。
【００３２】
また、請求項７の発明は、請求項１の発明において、前記ストローブ信号は、前記メモリ装置に接続された複数の信号線のそれぞれから出力され、該信号線のうち近傍に配置された少なくとも２つの信号線のそれぞれから出力されるストローブ信号に基づいて前記データを取り込むことを特徴とする。
【００３３】
また、請求項８の発明は、請求項１の発明において、前記ストローブ信号は、前記メモリ装置に接続された複数の信号線のそれぞれから出力され、該信号線のうち対称に配置された少なくとも２つの信号線のそれぞれから出力されるストローブ信号に基づいて前記データを取り込むことを特徴とする。
【００３４】
また、請求項９の発明は、複数のストローブ信号を出力するとともに該ストローブ信号に同期してデータを出力するメモリ装置を制御するメモリ制御装置において、メモリ装置が出力するデータを、該メモリ装置が出力する複数のストローブ信号のうち、少なくとも２つのストローブ信号のそれぞれに基づいて取り込むデータ取得手段と、前記データ取得手段が取り込んだデータのいずれかを選択して出力する選択手段とを具備することを特徴とする。
【００３５】
また、請求項１０の発明は、請求項９の発明において、前記データ取得手段は、１のストローブ信号に基づいてデータを取り込むデータ取り込み手段を少なくとも２つ具備することを特徴とする。
【００３６】
また、請求項１１の発明は、請求項９の発明において、前記選択手段が選択したデータの正誤を判定する判定手段をさらに具備し、前記選択手段は、前記判定手段の判定結果に基づいて選択するデータを変更することを特徴とする。
【００３７】
また、請求項１２の発明は、請求項１１の発明において、前記判定手段は、前記選択手段が選択したデータが誤りと判定された場合に、前記選択手段に該誤りと判定されたデータを取り込んだストローブ信号とは別のストローブ信号で取り込んだデータ選択させることを特徴とする。
【００３８】
また、請求項１３の発明は、請求項１１の発明において、前記判定手段は、前記メモリ装置の初期化処理時に前記判定を行うことを特徴とする。
【００３９】
また、請求項１４の発明は、請求項９の発明において、前記ストローブ信号の位相をシフトした信号を生成する位相シフト手段をさらに具備し、前記データ取得手段は、前記位相シフト手段が生成した信号のエッジと同期してデータを取り込むことを特徴とする。
【００４０】
また、請求項１５の発明は、請求項１４の発明において、前記データ取得手段は、前記位相シフト手段が生成した信号の立ち上がりエッジと立ち下がりエッジのそれぞれに同期してデータを取り込むことを特徴とする。
【００４１】
また、請求項１６の発明は、請求項９の発明において、前記ストローブ信号は、前記メモリ装置に接続された複数の信号線のそれぞれから出力され、前記データ取得手段は、前記信号線のうち近傍に配置された少なくとも２つの信号線のそれぞれから出力されるストローブ信号に基づいて前記データを取り込むことを特徴とする。
【００４２】
また、請求項１７の発明は、請求項９の発明において、前記ストローブ信号は、前記メモリ装置に接続された複数の信号線のそれぞれから出力され、前記データ取得手段は、前記信号線のうち対称に配置された少なくとも２つの信号線のそれぞれから出力されるストローブ信号に基づいて前記データを取り込むことを特徴とする。
【発明の効果】
【００４３】
本発明によれば、メモリ装置が出力するデータを、該メモリ装置が出力する複数のストローブ信号のうち、少なくとも２つのストローブ信号のそれぞれに基づいて取り込み、該取り込んだデータのいずれかを選択して出力するように構成したので、特殊な回路を用いることなく、電源・温度の変化や、プリント基板上の配線層や、層間接続、素材ばらつきがあっても、メモリの読み出し動作を安定的にすることができる。
【発明を実施するための最良の形態】
【００４４】
以下、本発明に係るメモリ制御方法および装置の一実施の形態について、添付図面を参照して詳細に説明する。
【実施例】
【００４５】
図１は、本発明を適用したメモリ制御装置の概略構成を示すブロック図である。同図に示すように、メモリ制御装置１は、データリード制御部１０と、選択部４０、判定部５０、システムバスインタフェイス６０、ＤＤＲインタフェイス７０、データライト制御部８０を具備して構成される。
【００４６】
システムバスインタフェイス６０は、システムバス４との接続を制御するもので、双方向データ制御と入出力、制御情報の取得を行う。また、システムバス４を介して、プロセッサ３等と接続されている。
【００４７】
ＤＤＲインタフェイス７０は、ＤＤＲ−ＳＤＲＡＭ２との接続を制御するもので、ＤＤＲ−ＳＤＲＡＭ２との制御信号やり取りや双方向データ制御と入出力を行う。
【００４８】
データライト制御部８０は、システムバスインタフェイス６０を介してプロセッサ３から指示されたＤＤＲ−ＳＤＲＡＭ２へのデータの書き込み要求に基づいて、ＤＤＲ−ＳＤＲＡＭ２への書き込み制御を行う。
【００４９】
データリード制御部１０は、システムバスインタフェイス６０を介してプロセッサ３から指示されたＤＤＲ−ＳＤＲＡＭ２からのデータの読み出し要求に基づいて、ＤＤＲ−ＳＤＲＡＭ２からの読み出し制御を行う。
【００５０】
選択部４０は、ＤＤＲインタフェイス７０がＤＤＲ−ＳＤＲＡＭ２から取り込んだデータの接続組替えを行い、判定部５０は、データリード制御部１０に取り込んだデータの状況を確認して、選択部４０の接続組替え情報を決定する。
【００５１】
続いて、プロセッサ３がＤＤＲ−ＳＤＲＡＭ２からデータを読み出す際のメモリ制御装置１の動作について説明する。図２は、メモリ制御装置１の詳細な構成を示した図であり、図３は、プロセッサ３がＤＤＲ−ＳＤＲＡＭ２からデータを読み出す際のメモリ制御装置１内の信号のタイミングを示した図である。なお、図３においては、メモリ制御装置１のうち、８ビットのデータDQ[7:0]とDQ[15:8]を処理する部分のみを示しており、他の部分は省略している。
【００５２】
図２に示すように、メモリ制御装置１は、データリード制御部１０−０と、データリード制御部１０−１、ラッチ１１−０Ｌ、ラッチ１１−０Ｈ、ラッチ１１−１Ｌ、ラッチ１１−１Ｈ、ラッチ２０−０Ｌ、ラッチ２０−０Ｈ、ラッチ２０−１Ｌ、ラッチ２０−１Ｈ、ラッチ２１−０Ｌ、ラッチ２１−０Ｈ、ラッチ２１−１Ｌ、ラッチ２１−１Ｈ、ＤＬＬ３０−０、ＤＬＬ３０−１、選択部４０−０、選択部４０−１、判定部５０−０、判定部５０−１を具備して構成される。
【００５３】
この構成においては、ＤＬＬ３０−０は、ＤＤＲ−ＳＤＲＡＭ２から入力されるストローブ信号DQS0の位相を９０度遅らせた内部DQS0を生成し、ＤＬＬ３０−１は、ＤＤＲ−ＳＤＲＡＭ２から入力されるストローブ信号DQS1の位相を９０度遅らせた内部DQS1を生成する。
【００５４】
ラッチ２０−０Ｌは、ＤＬＬ３０−０が生成した内部DQS0の立ち上がりに同期してＤＤＲ−ＳＤＲＡＭ２から入力されるデータDQ[7:0]をラッチしてdata_in[7:0]L0を取得し、ラッチ２０−０Ｈは、ＤＬＬ３０−０が生成した内部DQS0の立ち下がりに同期してＤＤＲ−ＳＤＲＡＭ２から入力されるデータDQ[7:0]をラッチしてdata_in[7:0]H0を取得する。
【００５５】
ラッチ２１−０Ｌは、ＤＬＬ３０−１が生成した内部DQS1の立ち上がりに同期してＤＤＲ−ＳＤＲＡＭ２から入力されるデータDQ[7:0]をラッチしてdata_in[7:0]L1を取得し、ラッチ２１−０Ｈは、ＤＬＬ３０−１が生成した内部DQS1の立ち下がりに同期してＤＤＲ−ＳＤＲＡＭ２から入力されるデータDQ[7:0]をラッチしてdata_in[7:0]H1を取得する。
【００５６】
ラッチ２０−１Ｌは、ＤＬＬ３０−０が生成した内部DQS0の立ち上がりに同期してＤＤＲ−ＳＤＲＡＭ２から入力されるデータDQ[15:8]をラッチしてdata_in[15:8]L0を取得し、ラッチ２０−１Ｈは、ＤＬＬ３０−０が生成した内部DQS0の立ち下がりに同期してＤＤＲ−ＳＤＲＡＭ２から入力されるデータDQ[15:8]をラッチしてdata_in[15:8]H0を取得する。
【００５７】
ラッチ２１−１Ｌは、ＤＬＬ３０−１が生成した内部DQS1の立ち上がりに同期してＤＤＲ−ＳＤＲＡＭ２から入力されるデータDQ[15:8]をラッチしてdata_in[15:8]L1を取得し、ラッチ２１−１Ｈは、ＤＬＬ３０−１が生成した内部DQS1の立ち下がりに同期してＤＤＲ−ＳＤＲＡＭ２から入力されるデータDQ[15:8]をラッチしてdata_in[15:8]H1を取得する。
【００５８】
選択部４０−０は、判定部５０−０から入力される接続組替え情報に基づいて、data_in[7:0]L0とdata_in[7:0]L1のいずれかのデータを各ビット毎に選択してdata_in[7:0]Lを出力するとともに、data_in[7:0]H0とdata_in[7:0]H1のいずれかのデータを各ビット毎に選択してdata_in[7:0]Hを出力する。
【００５９】
同様に、選択部４０−１は、判定部５０−１から入力される接続組替え情報に基づいて、data_in[15:8]L0とdata_in[15:8]L1のいずれかのデータを各ビット毎に選択してdata_in[15:8]Lを出力するとともに、data_in[15:8]H0とdata_in[15:8]H1のいずれかのデータを各ビット毎に選択してdata_in[15:8]Hを出力する。
【００６０】
ラッチ１１−０Ｌとラッチ１１−０Ｈは、データリード制御部１０−０に配され、システムクロックに同期して、それぞれ、data_in[7:0]Lとdata_in[7:0]Hを取得し、データとしてint_DQ[7:0]L、int_DQ[7:0]Hを出力する。
【００６１】
ラッチ１１−１Ｌとラッチ１１−１Ｈは、データリード制御部１０−１に配され、システムクロックに同期して、それぞれ、data_in[15:8]Lとdata_in[15:8]Hを取得し、データとしてint_DQ[15:8]L、int_DQ[15:8]Hを出力する。
【００６２】
判定部５０−０は、ラッチ１１−０Ｌとラッチ１１−０Ｈが出力するint_DQ[7:0]L、int_DQ[7:0]Hを取得し、これらに誤りのあるデータを含んでいた場合には、該当するビットのデータを別のデータから選択するような接続組替え情報を生成し、生成した接続組替え情報を選択部４０−０へ出力する。
【００６３】
判定部５０−１は、ラッチ１１−１Ｌとラッチ１１−１Ｈが出力するint_DQ[15:8]L、int_DQ[15:8]Hを取得し、これらに誤りのあるデータを含んでいた場合には、該当するビットのデータを別のデータから選択するような接続組替え情報を生成し、生成した接続組替え情報を選択部４０−１へ出力する。
【００６４】
例えば、図３に示した状態では、data_in[7:0]L0は、DQ[3]の誤りを含むが、data_in[7:0]L1のDQ[3]は正しい値である。したがって、この状態では、判定部５０−０は、DQ[0]からDQ[2]とDQ[4]からDQ[7]をdata_in[7:0]L0から選択し、DQ[3]をdata_in[7:0]L1から選択するような接続組替え情報を生成し、生成した接続組替え情報を選択部４０−０へ出力する。また、判定部５０−０は、DQ[0]からDQ[2]とDQ[4]からDQ[7]をdata_in[7:0]H0から選択し、DQ[3]をdata_in[7:0]H1から選択するような接続組替え情報を生成する。
【００６５】
同様に、data_in[15:8]L1は、DQ[15]の誤りを含むが、data_in[15:8]L0のDQ[15]は正しい値である。したがって、この状態では、判定部５０−１は、DQ[8]からDQ[14]をdata_in[15:8]L1から選択し、DQ[15]をdata_in[15:8]L0から選択するような接続組替え情報を生成し、生成した接続組替え情報を選択部４０−１へ出力する。また、判定部５０−１は、DQ[8]からDQ[14]をdata_in[15:8]H1から選択し、DQ[15]をdata_in[15:8]H0から選択するような接続組替え情報を生成する。
【００６６】
ここで、メモリ制御装置１の動作の流れを説明する。図４は、メモリ制御装置１の動作の流れを示すフローチャートである。なお、ここでは、DQ[7:0]の８ビットのデータに対する処理の流れを説明するが、メモリ制御装置１は、DQ[15:8]等の他のデータに対しても同様の処理を同時に行っているものとする。
【００６７】
メモリ制御装置１は、動作を開始すると、まず、メモリ制御装置１自体の初期化とＤＤＲ−ＳＤＲＡＭ２の初期化処理を行い（ステップ１０１）、データライト制御部８０が、確認用のデータとして「ＦＦ（DQ[7:0]の全ビットが１のデータ）」と、「００（DQ[7:0]の全ビットが０のデータ）」を順次ＤＤＲ−ＳＤＲＡＭ２へ書き込む（ステップ１０２）。
【００６８】
続いて、データリード制御部１０−０がＤＤＲ−ＳＤＲＡＭ２から確認用のデータを読み出すが（ステップ１０３）、このとき、判定部５０−０は、DQ[7:0]の全てのビットをdata_in[7:0]L0から選択するような接続組替え情報を生成し、選択部４０−０が、接続組替え情報に基づいて、data_in[7:0]L0の全ビットをdata_in[7:0]Lとして選択する。ここで、読み出した確認用データに誤りが無ければ（ステップ１０４でＹＥＳ）、メモリ制御装置１は、初期化が正常に終了した旨をプロセッサ３に通知して（ステップ１０５）、初期化処理を終了する。そして、以降の処理では、data_in[7:0]L0の全ビットをdata_in[7:0]Lとして選択することとなる。
【００６９】
一方、読み出した確認用データに誤りがあった場合には（ステップ１０４でＮＯ）、その誤りのあった回数が予め指定した回数未満、例えば、ｎ回未満であれば（ステップ１０６でＮＯ）、判定部５０−０は、誤りのあるビットのデータをdata_in[7:0]L1から選択するような接続組替え情報、例えば、図３に示した状態では、DQ[3]をdata_in[7:0]L1から選択するような接続組替え情報を生成して選択部４０−０に入力する（ステップ１０７）。
【００７０】
続いて、データライト制御部８０が、確認用のデータとして「ＦＦ」と、「００」を順次ＤＤＲ−ＳＤＲＡＭ２へ書き込み（ステップ１０２）、データリード制御部１０−０がＤＤＲ−ＳＤＲＡＭ２から確認用のデータを読み出す（ステップ１０３）。このとき、選択部４０−０は、ステップ１０６の処理で入力された接続組替え情報に基づいてデータを選択するため、例えば、DQ[3]をdata_in[7:0]L1から選択し、他のビットのデータをdata_in[7:0]L1から選択する。
【００７１】
その結果、読み出した確認用データに誤りが無ければ（ステップ１０４でＹＥＳ）、メモリ制御装置１は、初期化が正常に終了した旨をプロセッサ３に通知して（ステップ１０５）、初期化処理を終了する。そして、以降の処理では、DQ[3]をdata_in[7:0]L1から選択し、他のビットをdata_in[7:0]L0から選択したデータをdata_in[7:0]Lとして選択することとなる。
【００７２】
また、ステップ１０３で読み出した確認用データに誤りがあった場合には（ステップ１０４でＮＯ）、同様の処理を繰り返すが、その誤りのあった回数が予め指定した回数であるｎ回に達した場合には（ステップ１０６でＹＥＳ）、メモリ制御装置１は、その時点での環境では、ＤＤＲ−ＳＤＲＡＭ２に正常にアクセスすることができないため、プロセッサ３に異常を通知して（ステップ１０８）、処理を終了する。
【００７３】
ところで、上述の説明では、各データを２つのストローブ信号のそれぞれで取得し、そのいずれかを選択するものとして説明したが、各データを３つ以上のストローブ信号のそれぞれから取得するようにしてもよい。そして、データを取得する際に利用するストローブ信号は、どのような組み合わせであってもよく、例えば、DQS0とDQS1の組み合わせでもよく、DQS0とDQS4の組み合わせを利用するようにしてもよい。
【００７４】
また、利用するストローブ信号の組み合わせは、メモリ制御装置１とＤＤＲ−ＳＤＲＡＭ２の間の配線が図５に示すような場合には、DQS0とDQS1、DQS2とDQS3、DQS4とDQS5、DQS6とDQS7といったような配線が物理的に近傍であるストローブ信号を組み合わせ、メモリ制御装置１とＤＤＲ−ＳＤＲＡＭ２の間の配線が図６に示すような場合には、DQS0とDQS7、DQS1とDQS6、DQS2とDQS5、DQS3とDQS4といったような配線が物理的に対称であるストローブ信号を組み合わせることで、より安定的な動作を実現することが可能である。
【図面の簡単な説明】
【００７５】
【図１】本発明を適用したメモリ制御装置の概略構成を示すブロック図である。
【図２】メモリ制御装置１の詳細な構成を示した図である。
【図３】プロセッサ３がＤＤＲ−ＳＤＲＡＭ２からデータを読み出す際のメモリ制御装置１内の信号のタイミングを示した図である。
【図４】メモリ制御装置１の動作の流れを示すフローチャートである。
【図５】物理的に近傍であるストローブ信号を組み合わせる場合の配線例を示した図である。
【図６】物理的に対称であるストローブ信号を組み合わせる場合の配線例を示した図である。
【図７】メモリ制御装置が適用されるシステムの構成例を示した図である。
【図８】図７に示した構成においてプロセッサ５０３がＤＤＲ−ＳＤＲＡＭ５０２にデータを書き込む際の信号のタイミングを示した図である。
【図９】図７に示した構成においてプロセッサ５０３がＤＤＲ−ＳＤＲＡＭ５０２からデータを読み出す際の信号のタイミングを示した図である。
【図１０】メモリ制御装置５０１の構成を示した図である。
【図１１】プロセッサ５０３がＤＤＲ−ＳＤＲＡＭ５０２からデータを読み出す際のメモリ制御装置５０１内の信号のタイミングを示した図である。
【図１２】発生したスキューが許容範囲内である場合に取得するデータを説明するための図である。
【図１３】発生したスキューが許容範囲外であり、データを正しく取得できない場合を説明するための図である。
【図１４】等長配線の１例を示した図である。
【符号の説明】
【００７６】
１    メモリ制御装置
２    ＤＤＲ−ＳＤＲＡＭ
３    プロセッサ
４    システムバス
１０、１０−０、１０−１    データリード制御部
１１−０Ｌ、１１−０Ｈ、１１−１Ｌ、１１−１Ｈ    ラッチ
２０−０Ｌ、２０−０Ｈ、２０−１Ｌ、２０−１Ｈ    ラッチ
２１−０Ｌ、２１−０Ｈ、２１−１Ｌ、２１−１Ｈ    ラッチ
３０−０、３０−１    ＤＬＬ
４０、４０−０、４０−１    選択部
５０、５０−０、５０−１    判定部
６０    システムバスインタフェイス
７０    ＤＤＲインタフェイス
８０    データライト制御部
【図１】
2006065470.tif 000003
【図２】
2006065470.tif 000004
【図３】
2006065470.tif 000005
【図４】
2006065470.tif 000006
【図５】
2006065470.tif 000007
【図６】
2006065470.tif 000008
【図７】
2006065470.tif 000009
【図８】
2006065470.tif 000010
【図９】
2006065470.tif 000011
【図１０】
2006065470.tif 000012
【図１１】
2006065470.tif 000013
【図１２】
2006065470.tif 000014
【図１３】
2006065470.tif 000015
【図１４】
2006065470.tif 000016