(57)【要約】【課題】エラーを特定することができるメモリシステムを提供すること。【解決手段】本発明のメモリシステムによれば、ライト時において、ライトデータをループバックし、そのライトデータがエラーである場合、そのエラーは、第１処理部（５１〜５３）、第２処理部（５６〜５８）と入出力部（６０）間で発生している。これにより、第１処理部（５１〜５３）、第２処理部（５６〜５８）と入出力部（６０）間で発生するエラーであるのか、メモリ（８）で発生するエラーであるのかを特定することができる。【選択図】図３
2010026896.tif 000002
【特許請求の範囲】
【請求項１】
ライト時において、ライトデータを受け取り、前記ライトデータに対する第１ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を生成し、前記ライトデータと前記第１ＥＣＣとを出力する第１処理部と、
前記第１処理部からの前記ライトデータと前記第１ＥＣＣとをメモリに出力すると共に、それぞれ出力データと第２ＥＣＣとして出力する入出力部と、
前記出力データと前記第２ＥＣＣとを受け取り、前記出力データに対する第３ＥＣＣを生成し、前記第２ＥＣＣと前記第３ＥＣＣとを比較し、前記比較の結果と前記出力データとを出力する第２処理部と、
を具備するメモリシステム。
【請求項２】
リード時において、リードデータとそれに対するＥＣＣとが前記メモリから読み出されたとき、
前記入出力部は、前記メモリからの前記リードデータとそれに対する前記ＥＣＣとをそれぞれ前記出力データと前記第２ＥＣＣとして前記第２処理部に出力する、
請求項１に記載のメモリシステム。
【請求項３】
前記第２処理部は、
前記比較の結果として前記第２ＥＣＣと前記第３ＥＣＣとが一致しない場合、前記第２ＥＣＣと前記第３ＥＣＣとが一致しないことを表すエラー情報を出力し、
前記リード時に供給されるリード制御信号に応じて、前記出力データを出力する、
請求項２に記載のメモリシステム。
【請求項４】
前記入出力部は、
前記第１処理部からの前記ライトデータを前記メモリに出力する第１データ出力部と、
前記第１データ出力部からの前記ライトデータを前記出力データとして前記第２処理部に出力する第２データ出力部と、
前記第１処理部からの前記第１ＥＣＣを前記メモリに出力する第１ＥＣＣ出力部と、
前記第１ＥＣＣ出力部からの前記第１ＥＣＣを前記第２ＥＣＣとして前記第２処理部に出力する第２ＥＣＣ出力部と、
を具備する請求項１〜３のいずれかに記載のメモリシステム。
【請求項５】
前記第１処理部は、
前記ライト時において、前記ライトデータを受け取り、前記ライトデータに対する第１ＥＣＣを生成するＥＣＣ発生部と、
前記ライトデータを受け取って保持し、第１クロック信号に同期して前記第１データ出力部に出力する第１データ保持部と、
前記ＥＣＣ発生部からの前記第１ＥＣＣを保持し、前記第１クロック信号に同期して第１ＥＣＣ出力部に出力する第１ＥＣＣ保持部と、
を具備し、
前記第２処理部は、
前記第２データ出力部からの前記出力データを保持し、第２クロック信号に同期して出力する第２データ保持部と、
前記第２ＥＣＣ出力部からの前記第２ＥＣＣを保持し、前記第２クロック信号に同期して出力する第２ＥＣＣ保持部と、
前記第２データ保持部からの前記出力データに対する前記第３ＥＣＣを生成し、前記第２ＥＣＣ保持部からの前記第２ＥＣＣと前記第３ＥＣＣとを比較し、前記比較の結果と前記出力データとを出力するＥＣＣチェック部と、
を具備する請求項４に記載のメモリシステム。
【請求項６】
前記第１処理部と前記メモリ間の第１遅延時間と、前記第１処理部と前記第２処理部間の第２遅延時間とが同一になるように、遅延を調整する調整部、
を更に具備する請求項５に記載のメモリシステム。
【請求項７】
前記第１遅延時間は、前記ライトデータ、前記第１ＥＣＣがそれぞれ前記第１データ保持部、前記第１ＥＣＣ保持部から前記メモリに伝達される時間を表し、
前記第２遅延時間は、前記ライトデータ、前記第１ＥＣＣがそれぞれ前記第１データ保持部、前記第１ＥＣＣ保持部から前記第２データ保持部、前記第２ＥＣＣ保持部に伝達される時間を表し、
前記第１遅延時間と前記第２遅延時間とが異なる場合、
調整部は、前記第１遅延時間と前記第２遅延時間とが同一になるように、前記第２遅延時間を調整する、
請求項６に記載のメモリシステム。
【請求項８】
前記第１クロック信号と前記第２クロック信号は同一であり、
前記調整部は、
前記第１遅延時間と前記第２遅延時間とが異なる場合、前記第１遅延時間と前記第２遅延時間との差分である差分時間を調整するための遅延調整信号が供給される第１、２遅延部、
を具備し、
前記第１遅延部は、前記第２データ出力部からの前記出力データを保持し、前記遅延調整信号に応じて、前記出力データを前記差分時間だけ遅らせて前記第２データ保持部に出力し、
前記第２遅延部は、前記第２ＥＣＣ出力部からの前記第２ＥＣＣを保持し、前記遅延調整信号に応じて、前記第２ＥＣＣを前記差分時間だけ遅らせて前記第２ＥＣＣ保持部に出力する、
請求項７に記載のメモリシステム。
【請求項９】
前記調整部は、
遅延無効信号に応じて、前記第２データ出力部からの前記出力データを前記第２データ保持部に出力し、遅延有効信号に応じて、前記第１遅延部からの前記出力データを前記第２データ保持部に出力する第１選択部と、
前記遅延無効信号に応じて、前記第２ＥＣＣ出力部からの前記第２ＥＣＣを前記第２ＥＣＣ保持部に出力し、前記遅延有効信号に応じて、前記第２遅延部からの前記第２ＥＣＣを前記第２ＥＣＣ保持部に出力する第２選択部と、
を更に具備する請求項８に記載のメモリシステム。
【請求項１０】
前記調整部は、
ライト時において、ライトストローブ信号を出力する第１ＤＬＬ（Ｄｅｌａｙ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）部と、
第２ＤＬＬ部と、
を具備し、
前記入出力部は、
前記第１ＤＬＬ部からの前記ライトストローブ信号を前記メモリに出力する第１ストローブ出力部と、
前記第１ストローブ出力部からの前記ライトストローブ信号を調整ストローブ信号として前記第２ＤＬＬ部に出力する第２ストローブ出力部と、
を更に具備し、
前記第１遅延時間は、前記ライトデータ、前記第１ＥＣＣがそれぞれ前記第１データ保持部、第１ＥＣＣ保持部から前記メモリに伝達される時間と、前記ライトストローブ信号が前記第１ＤＬＬ部から前記メモリに伝達される時間との差を表し、
前記第２遅延時間は、前記ライトデータ、前記第１ＥＣＣがそれぞれ前記第１データ保持部、第１ＥＣＣ保持部から前記第２データ保持部、前記第２ＥＣＣ保持部に伝達される時間と、前記ライトストローブ信号が前記第１ＤＬＬ部から前記第２ＤＬＬ部に伝達される時間との差を表し、
前記第１遅延時間と前記第２遅延時間とが異なる場合、
前記第２ＤＬＬ部は、前記第１遅延時間と前記第２遅延時間とが同一になるように、前記第２遅延時間を調整する、
請求項６に記載のメモリシステム。
【請求項１１】
前記第１クロック信号と前記第２クロック信号は異なり、
前記第２ＤＬＬ部には、前記第１遅延時間と前記第２遅延時間とが異なる場合、前記第１遅延時間と前記第２遅延時間との差分である差分時間を調整するための第１位相調整信号が供給され、
前記第２ＤＬＬ部は、
前記第１位相調整信号と前記第１クロック信号とに応じて、前記第２ストローブ出力部からの前記調整ストローブ信号を前記差分時間だけ遅らせて、前記第２クロック信号として前記第２データ保持部、前記第２ＥＣＣ保持部に出力する、
請求項１０に記載のメモリシステム。
【請求項１２】
リード時において、リードストローブ信号が前記メモリから出力されたとき、
前記第２ストローブ出力部は、前記メモリからの前記リードストローブ信号を前記調整ストローブ信号として前記第２ＤＬＬ部に出力し、
前記第２ＤＬＬ部には、前記調整ストローブ信号の位相を所望の位相に調整するための第２位相調整信号が供給され、
前記第２ＤＬＬ部は、
前記第２位相調整信号と前記第１クロック信号とに応じて、前記第２ストローブ出力部からの前記調整ストローブ信号の位相を前記所望の位相に調整して、前記第２クロック信号として前記第２データ保持部、前記第２ＥＣＣ保持部に出力する、
請求項１１に記載のメモリシステム。
【請求項１３】
第１処理部が、ライト時において、ライトデータを受け取り、前記ライトデータに対する第１ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を生成し、前記ライトデータと前記第１ＥＣＣとを出力する第１ステップと、
入出力部が、前記第１処理部からの前記ライトデータと前記第１ＥＣＣとをメモリに出力すると共に、それぞれ出力データと第２ＥＣＣとして出力する第２ステップと、
第２処理部が、前記出力データと前記第２ＥＣＣとを受け取り、前記出力データに対する第３ＥＣＣを生成し、前記第２ＥＣＣと前記第３ＥＣＣとを比較し、前記比較の結果と前記出力データとを出力する第３ステップと、
を具備するメモリエラー要因特定方法。
【請求項１４】
リード時において、リードデータとそれに対するＥＣＣとが前記メモリから読み出されたとき、
前記第２ステップは、
前記入出力部が、前記メモリからの前記リードデータとそれに対する前記ＥＣＣとをそれぞれ前記出力データと前記第２ＥＣＣとして出力するステップ、
を更に含む請求項１３に記載のメモリエラー要因特定方法。
【請求項１５】
前記第３ステップは、
前記比較の結果として前記第２ＥＣＣと前記第３ＥＣＣとが一致しない場合、前記第２処理部が、前記第２ＥＣＣと前記第３ＥＣＣとが一致しないことを表すエラー情報を出力するステップと、
前記第２処理部が、前記リード時に供給されるリード制御信号に応じて、前記出力データを出力するステップと、
を更に含む請求項１４に記載のメモリエラー要因特定方法。
【請求項１６】
前記第１処理部と前記メモリ間の第１遅延時間と、前記第１処理部と前記第２処理部間の第２遅延時間とが同一になるように、調整部が遅延を調整する第４ステップ、
を更に具備する請求項１３〜１５のいずれかに記載のメモリエラー要因特定方法。
【請求項１７】
メモリと、
前記メモリに接続され、ライトデータと、リードデータと、それぞれのデータに対応するＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）とを前記メモリに対して入出力を行うメモリインターフェース部と、
前記メモリインターフェース部に接続され、前記メモリへのライトデータと、前記ライトデータから生成された第１のＥＣＣとを前記メモリインターフェース部に出力するライトデータ処理部と、
前記メモリインターフェース部に接続され、前記メモリからのリードデータと前記リードデータに対応する第２のＥＣＣとを受け取るリードデータ処理部と、
前記リードデータ処理部に接続され、前記リードデータから第３のＥＣＣを生成し、前記第２と第３のＥＣＣとを比較するＥＣＣチェック部と
を備え、
前記メモリインターフェース部は、前記ライトデータをメモリへ出力するときは、前記ライトデータと前記第１のＥＣＣとを、それぞれ前記リードデータ、前記第２のＥＣＣとして前記リードデータ処理部に出力するメモリシステム。
【請求項１８】
前記ライトデータ処理部と前記メモリ間の第１の遅延時間と、前記ライトデータ処理部と前記リードデータ処理部間の第２の遅延時間とが同じになるように遅延を調整する遅延調整部、
を更に備える請求項１７に記載のメモリシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリにアクセス可能であり、そのメモリにアクセスするときにエラーが発生する要因を特定するメモリシステム及びその方法に関する。
【背景技術】
【０００２】
メモリにアクセスするためのＩ／Ｆ（インターフェース）を有するメモリシステムが開発されている。メモリシステムとして、マイクロコンピュータ・ＳＯＣ（Ｓｙｓｔｅｍ  Ｏｎ  ａ  Ｃｈｉｐ）・ＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）等が挙げられる。メモリシステムは、クロック信号に同期して動作する。メモリは、メモリシステムのＩ／Ｆがクロック信号に同期して動作するように設計されている。このようなメモリとして、ＳＤＲＡＭ（Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）等が挙げられる。
【０００３】
近年、半導体の微細化、メモリアクセスの高速化が進んでいる。これに伴い、再現性の低いメモリエラーの発生が多くなりつつある。再現性の低いメモリエラーとして、例えば、クロストーク等のノイズ起因や、メモリに格納されたデータの一部が反転するようなソフトエラー等が挙げられる。メモリエラーが発生した場合、実装機上のどの部品、あるいは、どの配線が原因かを特定する必要がある。
【０００４】
特開２００２−１３２５９０号公報（特許文献１）には、メモリエラー切り分け方式が記載されている。この公報では、メモリエラー検出時に、オシロスコープ等の測定器を用いることなく、エラーの要因を切り分けることを目的としている。メモリエラー切り分け方式は、制御回路と入出力部（Ｉ／Ｏ部）とを具備している。制御回路は、指定アドレス保持回路、ライトデータ保持回路、エラーアドレス保持回路、エラーデータ保持回路を具備している。制御回路は、ライト要求（アドレス・ライトコマンド）に応じてＩ／Ｏ部を介してメモリにライトデータを書き込む。このとき、そのアドレスが指定されたアドレスである場合、制御回路は、そのアドレスを指定アドレス保持回路に保持し、ライトデータをライトデータ保持回路に保持する。リード要求（アドレス・リードコマンド）に応じてリードデータがメモリから読み出される。Ｉ／Ｏ部は、メモリから読み出されたリードデータを制御回路に出力する。このとき、制御回路は、そのアドレスをエラーアドレス保持回路に保持し、Ｉ／Ｏ部からのリードデータをエラーデータ保持回路に保持する。制御回路は、エラーデータ保持回路に保持されているリードデータがエラーであるか否かをチェックする。チェックの結果、リードデータがエラーである。この場合、制御回路は、エラーアドレス保持回路に保持されているアドレスと指定アドレス保持回路に保持されているアドレスとを比較する。その結果、一致した場合、ライトデータ保持回路に保持されているライトデータとエラーデータ保持回路に保持されているリードデータとを比較する。制御回路は、その比較の結果を出力する。
【０００５】
特開昭６１−９５４６５号公報（特許文献２）には、記憶装置が記載されている。この公報では、メモリエラー検出時に、診断制御用の新規のソフトウェア開発を行うことなく、エラー箇所の交換部品カードの切り分けをある程度まで可能にすることを目的としている。記憶装置は、制御回路とＩ／Ｏ部とを具備している。制御回路は、書き込みデータレジスタ、読み出しデータレジスタ、診断結果レジスタを具備している。制御回路は、ライト要求（アドレス・ライトコマンド）に応じてＩ／Ｏ部を介してメモリにライトデータを書き込む。このとき、制御回路は、ライトデータを書き込みデータレジスタに保持する。次に、リード要求（アドレス・リードコマンド）に応じてリードデータがメモリから読み出される。Ｉ／Ｏ部は、メモリから読み出されたリードデータを制御回路に出力する。このとき、制御回路は、Ｉ／Ｏ部からのリードデータを読み出しデータレジスタに保持する。制御回路は、読み出しデータレジスタに保持されているリードデータに対するＥＣＣのチェックを行う。チェックの結果、リードデータがエラーである。この場合、制御回路は、書き込みデータレジスタに保持されているライトデータに対するＥＣＣのチェックを行い、その結果を診断結果レジスタに格納する。
【０００６】
【特許文献１】特開２００２−１３２５９０号公報
【特許文献２】特開昭６１−９５４６５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
上述のように、メモリエラーが発生した場合、実装機上のどの部品、あるいは、配線が原因かを特定する必要がある。しかし、再現性の低いメモリエラーが発生した場合、それらを特定することは困難である。
【０００８】
特許文献１に記載された技術では、指定アドレス保持回路にアドレスが保持されたときだけ、制御回路は、ライトデータ保持回路に保持されているライトデータとエラーデータ保持回路に保持されているリードデータとを比較する。このため、アドレスが指定されない限り、エラーが発生したか否かを確認することができない。
【０００９】
また、特許文献１に記載された技術では、ライトデータ保持回路からメモリを介してエラーデータ保持回路までに発生するエラーを確認している。即ち、制御回路とメモリ間で発生するエラーを確認している。しかし、制御回路とメモリ間で発生するエラーであるのか、制御回路とＩ／Ｏ部間で発生するエラーであるのかを特定することができない。
【００１０】
特許文献２に記載された技術では、特許文献１に記載された技術のようにアドレスの指定がない。このため、あるアドレスに応じてメモリにライトデータが書き込まれ、そのアドレスに応じてリードデータがメモリから読み出される、という一連の動作しか適用できない。例えば、あるアドレスに応じてメモリにライトデータが書き込まれ、別のアドレスに応じてメモリからリードデータが読み出される場合、エラーが発生したか否かを確認することができない。
【００１１】
また、特許文献２に記載された技術では、書き込みデータレジスタからメモリを介して読み出しデータレジスタまでに発生するエラーを確認している。即ち、制御回路とメモリ間で発生するエラーを確認している。しかし、制御回路とメモリ間で発生するエラーであるのか、制御回路とＩ／Ｏ部間で発生するエラーであるのかを特定することができない。
【課題を解決するための手段】
【００１２】
以下に、発明を実施するための最良の形態・実施例で使用される符号を括弧付きで用いて、課題を解決するための手段を記載する。この符号は、特許請求の範囲の記載と発明を実施するための最良の形態・実施例の記載との対応を明らかにするために付加されたものであり、特許請求の範囲に記載されている発明の技術的範囲の解釈に用いてはならない。
【００１３】
本発明のメモリシステム（５）は、第１処理部（５１〜５３）と、入出力部（６０）と、第２処理部（５６〜５８）と、を具備している。第１処理部（５１〜５３）は、ライト時において、ライトデータを受け取り、ライトデータに対する第１ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を生成し、ライトデータと第１ＥＣＣとを出力する。入出力部（６０）は、第１処理部（５１〜５３）からのライトデータと第１ＥＣＣとをメモリ（８）に出力すると共に、それぞれ出力データと第２ＥＣＣとして出力する。第２処理部（５６〜５８）は、出力データと第２ＥＣＣとを受け取り、出力データに対する第３ＥＣＣを生成し、第２ＥＣＣと第３ＥＣＣとを比較し、比較の結果と出力データとを出力する。
【発明の効果】
【００１４】
本発明のメモリシステムによれば、ライト時において、ライトデータをループバックし、そのライトデータがエラーである場合、そのエラーは、第１処理部（５１〜５３）、第２処理部（５６〜５８）と入出力部（６０）間で発生している。これにより、第１処理部（５１〜５３）、第２処理部（５６〜５８）と入出力部（６０）間で発生するエラーであるのか、メモリ（８）で発生するエラーであるのかを特定することができる。
【発明を実施するための最良の形態】
【００１５】
以下に添付図面を参照して、本発明の実施形態によるメモリシステムについて詳細に説明する。
【００１６】
（第１実施形態）
図１は、本発明の第１実施形態によるメモリシステムの構成を示している。このメモリシステムは、ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１と、ネットワークカード２と、ＰＣＩ（Ｐｅｒｉｐｈｅｒａｌ  Ｃｏｍｐｏｎｅｎｔ  Ｉｎｔｅｒｃｏｎｅｃｔ）３と、内部バス４と、メモリコントローラ５と、ローカルバス６と、割込みコントローラ７と、を具備している。メモリコントローラ５は、内部バス４を介して、ＣＰＵ１、ネットワークカード２、ＰＣＩ３、メモリコントローラ５、ローカルバス６に接続されている。割込みコントローラ７は、ＣＰＵ１、ネットワークカード２、ＰＣＩ３、メモリコントローラ５、ローカルバス６に接続されている。ネットワークカード２、ＰＣＩ３、メモリコントローラ５、ローカルバス６は、それぞれ、外部のインターフェース（Ｉ／Ｆ）部に接続されている。メモリコントローラ５は、Ｉ／Ｆ部を介してメモリに接続されている。
【００１７】
ＣＰＵ１、ネットワークカード２、ＰＣＩ３などの書込先から内部バス４を介してメモリコントローラ５に、メモリへのライト要求（アドレス・ライトコマンド）が発生する。この場合、メモリコントローラ５は、ライト要求に応じて、メモリにライトデータを書き込む。ＣＰＵ１、ネットワークカード２、ＰＣＩ３などの読出先から内部バス４を介してメモリコントローラ５に、メモリへのリード要求（アドレス・リードコマンド）が発生する。この場合、メモリコントローラ５は、リード要求に応じてメモリからリードデータを読み出す。
【００１８】
図２は、メモリコントローラ５の構成を示している。メモリコントローラ５は、第１処理部５１〜５３と、第２処理部５６〜５８と、制御部５５と、入出力部（Ｉ／Ｏバッファ部）６０と、を具備している。制御部５５は、第１処理部５１〜５３と第２処理部５６〜５８と入出力部６０とを制御する。第１処理部５１〜５３は、ライトバッファ部５１と、ＥＣＣ発生部５２と、第１保持部５３と、を具備している。第２処理部５６〜５８は、リードバッファ５６と、ＥＣＣチェック部５７と、第２保持部５８と、を具備している。
【００１９】
制御部５５は、書込先からライト要求を受け、このライト要求をメモリに出力する。
【００２０】
ライトバッファ部５１は、ライト時において、ライトデータを受け取り、ＥＣＣ発生部５２に出力する。ＥＣＣ発生部５２は、ライトデータに対する第１ＥＣＣ（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）を生成し、ライトデータと第１ＥＣＣとを第１保持部５３に出力する。第１保持部５３は、ＥＣＣ発生部５２からのライトデータと第１ＥＣＣとを保持し、クロック信号に同期してライトデータと第１ＥＣＣとを入出力部６０に出力する。
【００２１】
入出力部６０は、第１保持部５３からのライトデータと第１ＥＣＣとをメモリに出力する。このとき、ライトデータと第１ＥＣＣは、ライト要求に応じてメモリに書き込まれる。同時に、入出力部６０は、ライトデータと第１ＥＣＣとをそれぞれ出力データと第２ＥＣＣとして第２保持部５８に出力する。
【００２２】
第２保持部５８は、入出力部６０からの出力データと第２ＥＣＣとを保持し、クロック信号に同期して出力データと第２ＥＣＣとをＥＣＣチェック部５７に出力する。ＥＣＣチェック部５７は、第２保持部５８からの出力データと第２ＥＣＣとを受け取り、出力データに対する第３ＥＣＣを生成する。その後、ＥＣＣチェック部５７は、第２ＥＣＣと第３ＥＣＣとを比較する。比較の結果、第２ＥＣＣと第３ＥＣＣとが一致しない。この場合、ＥＣＣチェック部５７は、第２ＥＣＣと第３ＥＣＣとが一致しないことを表すエラー情報と、出力データとを出力装置に出力する。例えば出力装置は割込みコントローラ７であるものとする。割込みコントローラ７は、エラー情報に応じて所定の処理を実行する。
【００２３】
本発明の第１実施形態によるメモリシステムによれば、ライト時において、ライトデータをループバックし、そのライトデータがエラーである場合、そのエラーは、第１処理部５１〜５３、第２処理部５６〜５８と入出力部６０間で発生している。これにより、第１の効果として、第１処理部５１〜５３、第２処理部５６〜５８と入出力部６０間で発生するエラーであるのか、メモリ８で発生するエラーであるのかを特定することができる。
【００２４】
制御部５５は、読出先からリード要求を受け、このリード要求をメモリに出力する。リード要求に応じて、リードデータとそれに対するＥＣＣとがメモリから読み出される。また、リード時において、例えば読出先からリード制御信号がＥＣＣチェック部５７に供給されるものとする。
【００２５】
リード時において、入出力部６０は、メモリからのリードデータとそれに対するＥＣＣとをそれぞれ出力データと第２ＥＣＣとして第２保持部５８に出力する。
【００２６】
第２保持部５８は、入出力部６０からの出力データと第２ＥＣＣとを保持し、クロック信号に同期して出力データと第２ＥＣＣとをＥＣＣチェック部５７に出力する。ＥＣＣチェック部５７は、第２保持部５８からの出力データと第２ＥＣＣとを受け取り、出力データに対する第３ＥＣＣを生成する。その後、ＥＣＣチェック部５７は、第２ＥＣＣと第３ＥＣＣとを比較する。比較の結果、第２ＥＣＣと第３ＥＣＣとが一致しない。この場合、ＥＣＣチェック部５７は、第２ＥＣＣと第３ＥＣＣとが一致しないことを表すエラー情報と、出力データとを出力装置（割込みコントローラ７）に出力する。割込みコントローラ７は、エラー情報に応じて所定の処理を実行する。また、ＥＣＣチェック部５７は、リード制御信号に応じて、出力データをリードデータとしてリードバッファ５６に出力する。リードバッファ５６は、このリードデータを読出先に出力する。リード制御信号が発生している場合、即ち、リード時では、リードデータは、エラーの有無に関わらず、リードバッファ５６を介して読出先に出力される。
【００２７】
ここで、一般的なＥＣＣ：ＳＥＣＤＥＤ（Ｓｉｎｇｌｅ  ｅｒｒｏｒ  ｃｏｒｒｅｃｔｉｏｎ、ｄｏｕｂｌｅ  ｅｒｒｏｒ  ｄｅｔｅｃｔｉｏｎ）である場合、ＥＣＣチェック部５７は、リードデータに対する１ビットのエラーを訂正して出力する。
【００２８】
本発明の第１実施形態によるメモリシステムによれば、リード時において、リードデータがエラーである場合、そのエラーは、第１処理部５１〜５３、第２処理部５６〜５８、入出力部６０とメモリ８間で発生している。例えば、ライトデータがエラーではない場合、上記のエラーは、メモリ８で発生しているものと思われる。これにより、第２の効果として、第１処理部５１〜５３、第２処理部５６〜５８と入出力部６０間で発生するエラーであるのか、メモリ８で発生するエラーであるのかを特定することができる。
【００２９】
図３は、ＥＣＣ発生部５２と第１保持部５３とＥＣＣチェック部５７と第２保持部５８と入出力部６０とを示している。
【００３０】
メモリコントローラ５は、更に、データ端子６１と、ＥＣＣ端子６２と、を具備している。上記のメモリであるメモリ８は、データ端子６１、ＥＣＣ端子６２にそれぞれ接続されるデータ端子、ＥＣＣ端子を具備している。例えば、データ端子６１、ＥＣＣ端子６２は、それぞれ、６４個、８個であるものとし、メモリコントローラ５の各構成要素は、その個数に応じて構成されている。
【００３１】
入出力部６０は、データ出力部６０１を具備している。データ出力部６０１は、第１データ出力部（出力バッファ）６０１−１と、第２データ出力部（出力バッファ）６０１−２と、を具備している。第１データ出力部６０１−１は、第１保持部５３の出力とデータ端子６１との間に設けられている。第２データ出力部６０１−２は、第１データ出力部６０１−１の出力と第２保持部５８の入力との間に設けられている。
【００３２】
入出力部６０は、更に、ＥＣＣ出力部６０２を具備している。ＥＣＣ出力部６０２は、第１ＥＣＣ出力部（出力バッファ）６０２−１と、第２ＥＣＣ出力部（出力バッファ）６０２−２と、を具備している。第１ＥＣＣ出力部６０２−１は、第１保持部５３の出力とデータ端子６２との間に設けられている。第２ＥＣＣ出力部６０２−２は、第１ＥＣＣ出力部６０２−１の出力と第２保持部５８の入力との間に設けられている。
【００３３】
第１保持部５３は、第１データ保持部（フリップフロップ）５３１と、第１ＥＣＣ保持部（フリップフロップ）５３２と、を具備している。第１データ保持部５３１は、ＥＣＣ発生部５２と第１データ出力部６０１−１との間に設けられている。第１ＥＣＣ保持部５３２は、ＥＣＣ発生部５２と第１ＥＣＣ出力部６０２−１との間に設けられている。第１データ保持部５３１、第１ＥＣＣ保持部５３２には、第１クロック信号としてクロック信号ＣＬＫが供給される。
【００３４】
第２保持部５８は、第２データ保持部（フリップフロップ）５８１と、第２ＥＣＣ保持部（フリップフロップ）５８２と、を具備している。第２データ保持部５８１は、第２データ出力部６０１−２とＥＣＣチェック部５７との間に設けられている。第２ＥＣＣ保持部５８２は、第２ＥＣＣ出力部６０２−２とＥＣＣチェック部５７との間に設けられている。第２データ保持部５８１、第２ＥＣＣ保持部５８２には、第２クロック信号として、第１クロック信号と同じクロック信号ＣＬＫが供給される。
【００３５】
本発明の第１実施形態によるメモリシステムによれば、このような構成により、上述の第１、２の効果を実現する。
【００３６】
第２保持部５８は、更に、調整部５８３〜５８６を具備している。調整部５８３〜５８６は、第１遅延部（遅延回路）５８３と、第２遅延部（遅延回路）５８４と、第１選択部（セレクタ）５８５と、第２選択部（セレクタ）５８６と、を具備している。第１選択部５８５は、第２データ出力部６０１−２と第２データ保持部５８１との間に設けられている。第１遅延部５８３は、第２データ出力部６０１−２と第１選択部５８５との間に設けられている。第２選択部５８６は、第２ＥＣＣ出力部６０２−２と第２ＥＣＣ保持部５８２との間に設けられている。第２遅延部５８４は、第２ＥＣＣ出力部６０２−２と第２選択部５８６との間に設けられている。
【００３７】
第１データ保持部５３１、第１ＥＣＣ保持部５３２からメモリ８への配線による遅延を考慮しない場合、第１選択部５８５、第２選択部５８６には、遅延無効信号が供給される。配線による遅延を考慮する場合、第１選択部５８５、第２選択部５８６には、遅延有効信号が供給される。ここで、遅延無効信号について図示されていないが、遅延無効信号は、遅延有効信号の信号レベルが反転したものとする。また、第１遅延部５８３、第２遅延部５８４には、遅延調整信号が供給される。遅延調整信号については後述する。
【００３８】
第１選択部５８５は、遅延無効信号に応じて、第２データ出力部６０１−２の出力と第１遅延部５８３の出力のうちの、第２データ出力部６０１−２の出力を選択する。一方、遅延有効信号に応じて、第２データ出力部６０１−２の出力と第１遅延部５８３の出力のうちの、第１遅延部５８３の出力を選択する。第１遅延部５８３の動作については後述する。
【００３９】
第２選択部５８６は、遅延無効信号に応じて、第２ＥＣＣ出力部６０２−２の出力と第２遅延部５８４の出力のうちの、第２ＥＣＣ出力部６０２−２の出力を選択する。一方、遅延有効信号に応じて、第２ＥＣＣ出力部６０２−２の出力と第２遅延部５８４の出力のうちの、第２遅延部５８４の出力を選択する。第２遅延部５８４の動作については後述する。
【００４０】
本発明の第１実施形態によるメモリシステムによれば、このような構成により、第３の効果として、配線による遅延を考慮して、上述のエラーを特定することができる。
【００４１】
図４は、メモリコントローラ５の動作を示すタイミングチャートである。
【００４２】
配線による遅延を考慮しない場合について説明する。
【００４３】
まず、ライト時について説明する。
【００４４】
ＥＣＣ発生部５２は、ライトバッファ部５１からのライトデータをライトデータ（ＤＯＵＴＰＰ）として受け取る。ＥＣＣ発生部５２は、ライトデータ（ＤＯＵＴＰＰ）に対するＥＣＣをＥＣＣ（ＥＣＣＯＰ）として生成する。ＥＣＣ（ＥＣＣＯＰ）は、第１ＥＣＣに対応する。ＥＣＣ発生部５２は、ライトデータ（ＤＯＵＴＰ）、ＥＣＣ（ＥＣＣＯＰ）をそれぞれ第１データ保持部５３１、第１ＥＣＣ保持部５３２に出力する。
【００４５】
第１データ保持部５３１は、ＥＣＣ発生部５２からのライトデータ（ＤＯＵＴＰ）を受け取って保持し、クロック信号ＣＬＫに同期してライトデータ（ＤＯＵＴＰ）をライトデータ（ＤＯＵＴ）として第１データ出力部６０１−１に出力する。第１ＥＣＣ保持部５３２は、ＥＣＣ発生部５２からのＥＣＣ（ＥＣＣＯＰ）を受け取って保持し、クロック信号ＣＬＫに同期してＥＣＣ（ＥＣＣＯＰ）をＥＣＣ（ＥＣＣＯ）として第１ＥＣＣ出力部６０２−１に出力する。
【００４６】
第１データ出力部６０１−１は、第１データ保持部５３１からのライトデータ（ＤＯＵＴ）を、データ端子６１を介してメモリ８に出力する。第２データ出力部６０１−２は、第１データ出力部６０１−１からのライトデータ（ＤＯＵＴ）をデータ（ＤＩＮ）として出力する。データ（ＤＩＮ）は、出力データに対応する。
【００４７】
第１ＥＣＣ出力部６０２−１は、第１ＥＣＣ保持部５３２からのＥＣＣ（ＥＣＣＯ）を、ＥＣＣ端子６２を介してメモリ８に出力する。第２ＥＣＣ出力部６０２−２は、第１ＥＣＣ出力部６０２−１からのＥＣＣ（ＥＣＣＯ）をＥＣＣ（ＥＣＣＩ）として出力する。ＥＣＣ（ＥＣＣＩ）は、第２ＥＣＣに対応する。
【００４８】
第１選択部５８５は、遅延無効信号に応じて、第２データ出力部６０１−２の出力と第１遅延部５８３の出力のうちの、第２データ出力部６０１−２の出力を選択する。この場合、第１選択部５８５は、第２データ出力部６０１−２からのデータ（ＤＩＮ）を第２データ保持部５８１に出力する。
【００４９】
第２選択部５８６は、遅延無効信号に応じて、第２ＥＣＣ出力部６０２−２の出力と第２遅延部５８４の出力のうちの、第２ＥＣＣ出力部６０２−２の出力を選択する。この場合、第２選択部５８６は、第２ＥＣＣ出力部６０２−２からのＥＣＣ（ＥＣＣＩ）を第２ＥＣＣ保持部５８２に出力する。
【００５０】
第２データ保持部５８１は、第１選択部５８５からのデータ（ＤＩＮ）を受け取って保持し、クロック信号ＣＬＫに同期してデータ（ＤＩＮ）をデータ（ＤＩＮＤ）としてＥＣＣチェック部５７に出力する。第２ＥＣＣ保持部５８２は、第２選択部５８６からのＥＣＣ（ＥＣＣＩ）を受け取って保持し、クロック信号ＣＬＫに同期してＥＣＣ（ＥＣＣＩ）をＥＣＣ（ＥＣＣＩＤ）としてＥＣＣチェック部５７に出力する。
【００５１】
ＥＣＣチェック部５７は、第２データ保持部５８１からのデータ（ＤＩＮＤ）と第２ＥＣＣ保持部５８２からのＥＣＣ（ＥＣＣＩＤ）とを受け取り、データ（ＤＩＮＤ）に対するＥＣＣを生成する。データ（ＤＩＮＤ）に対するＥＣＣは、第３ＥＣＣに対応する。その後、ＥＣＣチェック部５７は、ＥＣＣ（ＥＣＣＩＤ）とデータ（ＤＩＮＤ）に対するＥＣＣとを比較する。比較の結果、ＥＣＣ（ＥＣＣＩＤ）とデータ（ＤＩＮＤ）に対するＥＣＣとが一致しない場合、ＥＣＣチェック部５７は、ＥＣＣ（ＥＣＣＩＤ）とデータ（ＤＩＮＤ）に対するＥＣＣとが一致しないことを表すエラー情報と、データ（ＤＩＮＤ）とを割込みコントローラ７に出力する。
【００５２】
次に、リード時について説明する。この場合、上述と同じ説明を省略する。
【００５３】
第２データ出力部６０１−２は、メモリ８からのリードデータをデータ（ＤＩＮ）として出力する。データ（ＤＩＮ）は、出力データに対応する。
【００５４】
第２ＥＣＣ出力部６０２−２は、メモリ８からのＥＣＣをＥＣＣ（ＥＣＣＩ）として出力する。ＥＣＣ（ＥＣＣＩ）は、第２ＥＣＣに対応する。
【００５５】
第１選択部５８５は、データ遅延無効信号に応じて、第２データ出力部６０１−２からのデータ（ＤＩＮ）を第２データ保持部５８１に出力する。
【００５６】
第２選択部５８６は、ＥＣＣ遅延無効信号に応じて、第２ＥＣＣ出力部６０２−２からのＥＣＣ（ＥＣＣＩ）を第２ＥＣＣ保持部５８２に出力する。
【００５７】
第２データ保持部５８１は、第１選択部５８５からのデータ（ＤＩＮ）を受け取って保持し、クロック信号ＣＬＫに同期してデータ（ＤＩＮ）をデータ（ＤＩＮＤ）としてＥＣＣチェック部５７に出力する。第２ＥＣＣ保持部５８２は、第２選択部５８６からのＥＣＣ（ＥＣＣＩ）を受け取って保持し、クロック信号ＣＬＫに同期してＥＣＣ（ＥＣＣＩ）をＥＣＣ（ＥＣＣＩＤ）としてＥＣＣチェック部５７に出力する。
【００５８】
ＥＣＣチェック部５７は、第２データ保持部５８１からのデータ（ＤＩＮＤ）と第２ＥＣＣ保持部５８２からのＥＣＣ（ＥＣＣＩＤ）とを受け取り、データ（ＤＩＮＤ）に対するＥＣＣを生成する。データ（ＤＩＮＤ）に対するＥＣＣは、第３ＥＣＣに対応する。その後、ＥＣＣチェック部５７は、ＥＣＣ（ＥＣＣＩＤ）とデータ（ＤＩＮＤ）に対するＥＣＣとを比較する。比較の結果、ＥＣＣ（ＥＣＣＩＤ）とデータ（ＤＩＮＤ）に対するＥＣＣとが一致しない場合、ＥＣＣチェック部５７は、ＥＣＣ（ＥＣＣＩＤ）とデータ（ＤＩＮＤ）に対するＥＣＣとが一致しないことを表すエラー情報と、データ（ＤＩＮＤ）とを割込みコントローラ７に出力する。また、ＥＣＣチェック部５７は、リード時に供給されるリード制御信号に応じて、データ（ＤＩＮＤ）をリードデータ（ＤＩＮＤＤ）としてリードバッファ５６に出力する。リードバッファ５６は、リードデータ（ＤＩＮＤＤ）を読出先に出力する。
【００５９】
次に、配線による遅延を考慮する場合について説明する。この場合、上述と同じ説明を省略する。
【００６０】
第１選択部５８５は、遅延有効信号に応じて、第２データ出力部６０１−２の出力と第１遅延部５８３の出力のうちの、第１遅延部５８３の出力を選択する。第２選択部５８６は、遅延有効信号に応じて、第２ＥＣＣ出力部６０２−２の出力と第２遅延部５８４の出力のうちの、第２遅延部５８４の出力を選択する。ここで、ライトデータ（ＤＯＵＴ）が第１データ保持部５３１からメモリ８に伝達される時間と、ＥＣＣ（ＥＣＣＯ）が第１ＥＣＣ保持部５３２からメモリ８に伝達される時間は、同じであるものとする。また、ライトデータ（ＤＯＵＴ）が第１データ保持部５３１から第２データ保持部５８１にデータ（ＤＩＮ）として伝達される時間と、ＥＣＣ（ＥＣＣＯ）が第１ＥＣＣ保持部５３２から第２ＥＣＣ保持部５８２にＥＣＣ（ＥＣＣＩ）として伝達される時間は、同じであるものとする。
【００６１】
第１遅延部５８３、第２遅延部５８４は、第１遅延時間と第２遅延時間とが異なる場合（この場合、第１遅延時間が第２遅延時間よりも長いとき）、第１遅延時間と第２遅延時間とが同一になるように、第２遅延時間を調整する。第１遅延時間は、ライトデータ（ＤＯＵＴ）、ＥＣＣ（ＥＣＣＯ）がそれぞれ第１データ保持部５３１、第１ＥＣＣ保持部５３２からメモリ８に伝達される時間を表している。第２遅延時間は、ライトデータ（ＤＯＵＴ）、ＥＣＣ（ＥＣＣＯ）がそれぞれ第１データ保持部５３１、第１ＥＣＣ保持部５３２から第２データ保持部５８１、第２ＥＣＣ保持部５８２に伝達される時間を表している。
【００６２】
ここで、第１遅延時間が第２遅延時間よりも長い場合、第１遅延部５８３、第２遅延部５８４には、遅延調整信号が供給される。遅延調整信号は、第１遅延時間と第２遅延時間との差分である差分時間を調整するための命令を表している。第１遅延部５８３は、第２データ出力部６０１−２からのデータ（ＤＩＮ）を保持する。第１遅延部５８３は、遅延調整信号に応じて、データ（ＤＩＮ）を差分時間だけ遅らせて、第１選択部５８５を介して第２データ保持部５８１に出力する。第２遅延部５８４は、第２ＥＣＣ出力部６０２−２からのＥＣＣ（ＥＣＣＩ）を保持する。第２遅延部５８４は、遅延調整信号に応じて、ＥＣＣ（ＥＣＣＩ）を差分時間だけ遅らせて、第２選択部５８６を介して第２ＥＣＣ保持部５８２に出力する。
【００６３】
本発明の第１実施形態によるメモリシステムによれば、ライト時において、ライトデータをループバックし、そのライトデータがエラーである場合、そのエラーは、第１処理部５１〜５３、第２処理部５６〜５８と入出力部６０間で発生している。これにより、第１の効果として、第１処理部５１〜５３、第２処理部５６〜５８と入出力部６０間で発生するエラーであるのか、メモリ８で発生するエラーであるのかを特定することができる。
【００６４】
また、ＳＤＲ  ＳＤＲＡＭ（Ｓｉｎｇｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のようにデータ端子がそれぞれ双方向に使用される場合、通常であれば、ライト時において、リード側のパス（第２処理部５６〜５８）が動作していない。一方、本発明の第１実施形態によるメモリシステムによれば、ライト時において、ライトデータをループバックし、リード側のパスを使用している。これにより、ライトデータがエラーであるか否かを確認することができる。
【００６５】
本発明の第１実施形態によるメモリシステムによれば、リード時において、リードデータがエラーである場合、そのエラーは、第１処理部５１〜５３、第２処理部５６〜５８、入出力部６０とメモリ８間で発生している。例えば、ライトデータがエラーではない場合、上記のエラーは、メモリ８で発生しているものと思われる。これにより、第２の効果として、第１処理部５１〜５３、第２処理部５６〜５８と入出力部６０間で発生するエラーであるのか、メモリ８で発生するエラーであるのかを特定することができる。
【００６６】
本発明の第１実施形態によるメモリシステムによれば、第１データ保持部５３１とメモリ８間のスキューと、第１データ保持部５３１と第２データ保持部５８１間のスキューとを調整している。また、第１ＥＣＣ保持部５３２とメモリ８間のスキューと、第１ＥＣＣ保持部５３２と第２ＥＣＣ保持部５８２間のスキューとを調整している。これにより、第３の効果として、配線による遅延を考慮して、上述のエラーを特定することができる。
【００６７】
（第２実施形態）
第２実施形態では、メモリ８として、ＤＤＲ  ＳＤＲＡＭ（Ｄｏｕｂｌｅ  Ｄａｔａ  Ｒａｔｅ  Ｓｙｎｃｈｒｏｎｏｕｓ  Ｄｙｎａｍｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）のように、ストローブ信号が用いられるメモリを想定する。この場合、メモリコントローラ５には、後述のＤＬＬ（Ｄｅｌａｙ  Ｌｏｃｋｅｄ  Ｌｏｏｐ）が追加される。第２実施形態では、第１実施形態と重複する説明を省略する。
【００６８】
図５は、本発明の第２実施形態によるメモリシステムのメモリコントローラ５の構成を示している。メモリコントローラ５は、第２保持部５８内の第１遅延部５８３、第２遅延部５８４、第１選択部５８５、第２選択部５８６に代えて、第１ＤＬＬ（ＷＤＬＬ）部５４と、第２ＤＬＬ（ＲＤＬＬ）部５９と、を具備している。即ち、メモリコントローラ５に第１ＤＬＬ部５４と第２ＤＬＬ部５９とが追加されることにより、第２保持部５８内の第１遅延部５８３、第２遅延部５８４、第１選択部５８５、第２選択部５８６が必要なくなる。
【００６９】
図６は、メモリコントローラ５内のＥＣＣ発生部５２と第１保持部５３と第１ＤＬＬ部５４とＥＣＣチェック部５７と第２保持部５８と第２ＤＬＬ部５９と入出力部６０とを示している。
【００７０】
メモリコントローラ５は、更に、ストローブ端子６３を具備している。メモリ８は、ストローブ端子６３に接続されるストローブ端子を具備している。例えば、データ端子６１、ＥＣＣ端子６２、ストローブ端子６３は、それぞれ、６４個、８個、８個であるものとし、メモリコントローラ５の各構成要素は、その個数に応じて構成されている。
【００７１】
入出力部６０は、更に、ストローブ出力部６０３を具備している。ストローブ出力部６０３は、第１ストローブ出力部（出力バッファ）６０３−１と、第２ストローブ出力部（出力バッファ）６０３−２と、を具備している。第１ストローブ出力部６０３−１は、第１ＤＬＬ部５４の出力とストローブ端子６３との間に設けられている。第２ストローブ出力部６０３−２は、第１ストローブ出力部６０３−１の出力と第２ＤＬＬ部５９の入力との間に設けられている。
【００７２】
第１ＤＬＬ部５４、第２ＤＬＬ部５９には、第１クロック信号としてクロック信号ＣＬＫが供給される。第１クロック信号と第２クロック信号は異なる。また、ライト時において、第１ＤＬＬ部５４には位相調整信号７０が供給され、第２ＤＬＬ部５９には、第１位相調整信号７１が供給される。リード時において、第２ＤＬＬ部５９には、第２位相調整信号７２が供給される。これらの位相調整信号については後述する。
【００７３】
本発明の第２実施形態によるメモリシステムによれば、このような構成により、前述の第１、２の効果を実現する上に、第３の効果を実現する。
【００７４】
本発明の第２実施形態によるメモリコントローラ５の動作について説明する。この場合、前述と同じ説明を省略する。
【００７５】
まず、ライト時について説明する。
【００７６】
第１ＤＬＬ部５４は、ライト時において、クロック信号ＣＬＫの位相をずらしたライトストローブ信号を第１ストローブ出力部６０３−１に出力する。
【００７７】
第１ストローブ出力部６０３−１は、第１ＤＬＬ部５４からのライトストローブ信号を、ストローブ端子６３を介してメモリ８に出力する。第２ストローブ出力部６０３−２は、第１ストローブ出力部６０３−１からのライトストローブ信号を調整ストローブ信号（ＳＴＢＩ）として第２ＤＬＬ部５９に出力する。
【００７８】
第２ＤＬＬ部５９は、第１遅延時間と第２遅延時間とが異なる場合、第１遅延時間と第２遅延時間とが同一になるように、第２遅延時間を調整する。第１遅延時間は、ライトデータ、第１ＥＣＣがそれぞれ第１データ保持部５３１、第１ＥＣＣ保持部５３２からメモリ８に伝達される時間と、ライトストローブ信号が第１ＤＬＬ部５４からメモリ８に伝達される時間との差を表している。第２遅延時間は、ライトデータ、第１ＥＣＣがそれぞれ第１データ保持部５３１、第１ＥＣＣ保持部５３２から第２データ保持部５８１、第２ＥＣＣ保持部５８２に出力データ、第２ＥＣＣとして伝達される時間と、ライトストローブ信号が第１ＤＬＬ部５４から第２ＤＬＬ部５９に伝達される時間との差を表している。
【００７９】
ここで、第１遅延時間と第２遅延時間とが異なる場合、第２ＤＬＬ部５９には、第１位相調整信号７１が供給される。第１位相調整信号７１は、第１遅延時間と第２遅延時間との差分である差分時間を調整するための命令を表している。第２ＤＬＬ部５９は、第２ストローブ出力部６０３−２からの調整ストローブ信号（ＳＴＢＩ）を保持する。第２ＤＬＬ部５９は、第１位相調整信号７１とクロック信号ＣＬＫとに応じて、調整ストローブ信号（ＳＴＢＩ）を差分時間だけ遅らせて、調整ストローブ信号（ＳＴＢＩＤ）として第２データ保持部５８１、第２ＥＣＣ保持部５８２に出力する。調整ストローブ信号（ＳＴＢＩＤ）は、第２クロック信号に対応する。
【００８０】
また、この場合、第１ＤＬＬ部５４には、位相調整信号７０が供給される。第１ＤＬＬ部５４は、ライト時において、位相調整信号７０とクロック信号ＣＬＫとに応じて、ライトストローブ信号を第１ストローブ出力部６０３−１に出力する。
【００８１】
次に、リード時について説明する。この場合、前述と同じ説明を省略する。
【００８２】
リード時において、リードストローブ信号がメモリ８から出力される。このとき、第２ストローブ出力部６０３−２は、メモリ８からのリードストローブ信号を調整ストローブ信号（ＳＴＢＩ）として第２ＤＬＬ部５９に出力する。
【００８３】
第２ＤＬＬ部５９は、リード時において調整ストローブ信号の位相を所望の位相に調整する必要がある。
【００８４】
この場合、第２ＤＬＬ部５９には、第２位相調整信号７２が供給される。第２位相調整信号７２は、調整ストローブ信号の位相を所望の位相に調整するための命令を表している。第２ＤＬＬ部５９は、第２ストローブ出力部６０３−２からの調整ストローブ信号（ＳＴＢＩ）を保持する。第２ＤＬＬ部５９は、第２位相調整信号７２とクロック信号ＣＬＫとに応じて、調整ストローブ信号（ＳＴＢＩ）の位相を所望の位相に調整して、調整ストローブ信号（ＳＴＢＩＤ）として第２データ保持部５８１、第２ＥＣＣ保持部５８２に出力する。調整ストローブ信号（ＳＴＢＩＤ）は、第２クロック信号に対応する。
【００８５】
メモリ８は、ＤＤＲ  ＳＤＲＡＭのように、ストローブ信号が用いられるメモリである。この場合、リード時において、ストローブ信号（この場合、リードストローブ信号）を第２データ保持部５８１、第２ＥＣＣ保持部５８２（Ｆ／Ｆ）へのクロック信号とし、第２データ保持部５８１、第２ＥＣＣ保持部５８２は、このストローブ信号に応じて、出力データ（この場合、リードデータ）をラッチする。その際、第２データ保持部５８１、第２ＥＣＣ保持部５８２にストローブ信号を供給する前に、ストローブ信号の位相を９０度程度ずらす必要がある。それにはＤＬＬが用いられる。また、ＤＬＬは位相の微調整できる場合が一般的である。
【００８６】
図７は、第２ＤＤＬ部５９の構成を示している。
【００８７】
第２ＤＤＬ部５９は、マスター部（ＭＡＳＴＥＲ）５９０と、スレーブ部（ＳＬＡＶＥ部）５９５と、を具備している。
【００８８】
マスター部５９０は、遅延回路５９１−１〜５９１−４と、位相比較器（ＰＤ）５９２と、ローパスフィルタ（ＬＰＦ）５９３と、を具備している。遅延回路５９１−１〜５９１−４は、この順で直列に接続されている。遅延回路５９１−４は、位相比較器５９２に接続されている。位相比較器５９２は、ローパスフィルタ５９３に接続されている。ローパスフィルタは、遅延回路５９１−１〜５９１−４とスレーブ部５９５に接続されている。遅延回路５９１−１と位相比較器５９２には、クロック信号ＣＬＫが供給される。遅延回路５９１−１〜５９１−４は、遅延調整信号に基づいて、クロック信号ＣＬＫを９０度ずつ遅延させる。遅延回路５９１−４は、クロック信号ＣＬＫをクロック信号（ＦＥＥＤＢＡＣＫ）として位相比較器５９２に出力する。位相比較器５９２は、クロック信号ＣＬＫとクロック信号（ＦＥＥＤＢＡＣＫ）との位相を比較し、遅延回路５９１−１〜５９１−４の段数を調整することでクロック信号ＣＬＫと同位相となる段数を求める。位相比較器５９２は、この段数を遅延調整信号として、ローパスフィルタ５９３を介して遅延回路５９１−１〜５９１−４とスレーブ部５９５に出力する。
【００８９】
スレーブ部５９５は、遅延回路５９６−１〜５９６−４と、位相インターポレータ５９７と、を具備している。遅延回路５９６−１〜５９６−４は、この順で直列に接続されている。遅延回路５９６−１〜５９６−４は、マスター部５９０のローパスフィルタ５９３に接続されている。位相インターポレータ５９７は、遅延回路５９６−１〜５９６−４に接続されている。遅延回路５９６−１には、第２ストローブ出力部６０３−２からの調整ストローブ信号（ＳＴＢＩ）が供給される。また、遅延回路５９６−１には、マスター部５９０からの遅延調整信号が供給される。位相インターポレータ５９７には、位相調整信号として第２位相調整信号７２が供給される。遅延回路５９６−１〜５９６−４は、遅延調整信号に基づいて、調整ストローブ信号（ＳＴＢＩ）を９０度ずつ遅延させる。その結果、遅延回路５９６−１〜５９６−４により、それぞれ、調整ストローブ信号（ＳＴＢＩ）に対して、９０度遅れのストローブ信号（ＳＴＢ９０）、１８０度遅れのストローブ信号（ＳＴＢ＃）、２７０度遅れのストローブ信号（ＳＴＢ９０＃）、３６０度遅れのストローブ信号（ＳＴＢ）の４層クロックが生成される。これら４層クロックは、位相インターポレータ５９７に与えられる。位相インターポレータ５９７は、０〜３６０度の範囲で、位相調整信号に基づいて位相調整が可能であり、調整ストローブ信号（ＳＴＢＩ）を位相調整したストローブ信号を調整ストローブ信号（ＳＴＢＩＤ）として第２データ保持部５８１、第２ＥＣＣ保持部５８２に出力する。
【００９０】
第２実施形態では、この第２ＤＤＬ部５９を利用して、ライトデータのＥＣＣチェック時には、位相調整信号を第２位相調整信号７２から第１位相調整信号７１に変更することで、調整ストローブ信号（ＳＴＢＩＤ）とデータ（ＤＩＮ）・ＥＣＣ（ＥＣＣＩ）の細かいスキューの調整も可能となる。
【００９１】
本発明の第２実施形態によるメモリシステムによれば、前述の第１〜３の効果を実現する上に、リード時に使用するＲＤＤＬ（第２ＤＬＬ部５９）を利用するので、遅延回路やセレクタ（第１遅延部５８３、第２遅延部５８４、第１選択部５８５、第２選択部５８６）等を追加する必要がなくなる。ＤＬＬを使用することにより、細かい精度での位相調整が可能になり、メモリ８との配線等のスキュー要因をある程度考慮して、前述のエラーを特定することができる。
【図面の簡単な説明】
【００９２】
【図１】図１は、本発明の第１、２実施形態によるメモリシステムの構成を示している。
【図２】図２は、本発明の第１実施形態によるメモリシステムのメモリコントローラ５の構成を示している。
【図３】図３は、本発明の第１実施形態によるメモリシステムのメモリコントローラ５内のＥＣＣ発生部５２と第１保持部５３とＥＣＣチェック部５７と第２保持部５８と入出力部６０とを示している。
【図４】図４は、本発明の第１、２実施形態によるメモリシステムのメモリコントローラ５の動作を示すタイミングチャートである。
【図５】図５は、本発明の第２実施形態によるメモリシステムのメモリコントローラ５の構成を示している。
【図６】図６は、本発明の第２実施形態によるメモリシステムのメモリコントローラ５内のＥＣＣ発生部５２と第１保持部５３と第１ＤＬＬ部（ＷＤＬＬ）５４とＥＣＣチェック部５７と第２保持部５８と第２ＤＬＬ部（ＲＤＬＬ）５９と入出力部６０とを示している。
【図７】図７は、本発明の第２実施形態によるメモリシステムのメモリコントローラ５内の第２ＤＬＬ部５９の構成を示している。
【符号の説明】
【００９３】
１    ＣＰＵ、
２    ネットワークカード、
３    ＰＣＩ、
４    内部バス、
５    メモリコントローラ、
６    ローカルバス、
７    割込みコントローラ、
８    メモリ、
５１    ライトバッファ部、
５２    ＥＣＣ発生部、
５３    第１保持部、
５３１    第１データ保持部（フリップフロップ）、
５３２    第１ＥＣＣ保持部（フリップフロップ）、
５４    第１ＤＬＬ（ＷＤＬＬ）部、
５５    制御部、
５６    リードバッファ、
５７    ＥＣＣチェック部、
５８    第２保持部、
５８１    第２データ保持部（フリップフロップ）、
５８２    第２ＥＣＣ保持部（フリップフロップ）、
５８３    第１遅延部（遅延回路）、
５８４    第２遅延部（遅延回路）、
５８５    第１選択部（セレクタ）、
５８６    第２選択部（セレクタ）、
５９    第２ＤＬＬ（ＲＤＬＬ）部、
５９０    マスター部（ＭＡＳＴＥＲ）、
５９１−１〜５９１−４    遅延回路、
５９２    位相比較器（ＰＤ）、
５９３    ローパスフィルタ（ＬＰＦ）、
５９５    スレーブ部（ＳＬＡＶＥ）、
５９６−１〜５９６−４    遅延回路、
５９７    位相インターポレータ、
６０    入出力部（Ｉ／Ｏバッファ部）、
６０１    データ出力部、
６０１−１    第１データ出力部（出力バッファ）、
６０１−２    第２データ出力部（出力バッファ）、
６０２    ＥＣＣ出力部、
６０２−１    第１ＥＣＣ出力部（出力バッファ）、
６０２−２    第２ＥＣＣ出力部（出力バッファ）、
６０３    ストローブ出力部、
６０３−１    第１ストローブ出力部（出力バッファ）、
６０３−２    第２ストローブ出力部（出力バッファ）、
６１    データ端子、
６２    ＥＣＣ端子、
７０、７１、７２    位相調整信号、
【図１】
2010026896.tif 000003
【図２】
2010026896.tif 000004
【図３】
2010026896.tif 000005
【図４】
2010026896.tif 000006
【図５】
2010026896.tif 000007
【図６】
2010026896.tif 000008
【図７】
2010026896.tif 000009