(57)【要約】【課題】ホストプロセッサとＮＡＮＤフラッシュメモリとの間をインタフェースするＮＡＮＤフラッシュメモリインタフェース装置を提供する。【解決手段】本発明は、レジスタファイル、内部メモリ、フラッシュインタフェース部及びステートマシンを備える。レジスタファイルはホストプロセッサからＮＡＮＤフラッシュメモリの動作を制御するためのコマンド及び動作情報を受領する。内部メモリはホストプロセッサからＮＡＮＤフラッシュメモリに貯蔵するホストデータを受領し、ＮＡＮＤフラッシュメモリからホストプロセッサに転送されるフラッシュデータを貯蔵する。フラッシュインタフェース部はＮＡＮＤフラッシュメモリを動作させるための制御信号を制御する。ステートマシンはレジスタファイルからコマンド及び動作情報を引出して内部メモリとフラッシュインタフェース部を制御する。【選択図】　　　図３
2004005699.tif 000002
【特許請求の範囲】
【請求項１】
ホストプロセッサとＮＡＮＤフラッシュメモリとの間をインタフェースするインタフェース装置において、
前記ホストプロセッサから前記ＮＡＮＤフラッシュメモリの動作を制御するためのコマンド、及び該コマンドの動作遂行に必要な動作情報を受領して貯蔵するレジスタファイルと、
前記ホストプロセッサから前記ＮＡＮＤフラッシュメモリに貯蔵されるホストデータを受領して貯蔵し、前記ＮＡＮＤフラッシュメモリから引出されて前記ホストプロセッサに転送されるフラッシュデータを貯蔵する内部メモリと、
前記ＮＡＮＤフラッシュメモリを動作させるための制御信号を制御し、前記コマンド、前記動作情報、及び前記ホストデータのうちいずれか一つが出力され、前記フラッシュデータが入力されるＩ／Ｏ信号線を制御するフラッシュインタフェース部、及び
前記レジスタファイルから前記コマンド及び前記動作情報を引出して、前記コマンドによる動作が行われるよう前記内部メモリと、前記フラッシュインタフェース部を制御するステートマシンと、を含むことを特徴とするインタフェース装置。
【請求項２】
前記コマンドは、ＲＥＡＤコマンド、ＷＲＩＴＥコマンド、ＥＲＡＳＥコマンド、ＩＮＶＡＬＩＤＣＨＥＣＫコマンド、及びＷＲＩＴＥＩＮＶＡＬＩＤコマンドのうちいずれか一つであることを特徴とする請求項１に記載のインタフェース装置。
【請求項３】
前記動作情報は、前記ＮＡＮＤフラッシュメモリで前記コマンドによる動作が行われる領域の開始アドレスと、を含むことを特徴とする請求項１に記載のインタフェース装置。
【請求項４】
前記制御信号は、ＡＬＥ制御信号、ＣＬＥ制御信号、ＣＥ制御信号、ＲＥ制御信号、及びＷＥ制御信号と、を含むことを特徴とする請求項１に記載のインタフェース装置。
【請求項５】
前記内部メモリは、前記ホストデータ及び前記フラッシュデータが貯蔵されるバッファと、
システムをブーティングさせるためのブートコードが貯蔵されるブートメモリと、を含むことを特徴とする請求項１に記載のインタフェース装置。
【請求項６】
前記内部メモリは、前記ホストデータ及び前記フラッシュデータが入出力される場合、エラー訂正コードを発生させエラーを検出するＥＣＣチェッカをさらに備えることを特徴とする請求項５に記載のインタフェース装置。
【請求項７】
前記レジスタファイルには、前記開始アドレスの貯蔵されるアドレスレジスタが設けられていることを特徴とする請求項１に記載のインタフェース装置。
【請求項８】
前記レジスタファイルには、前記コマンドの貯蔵されるコマンドレジスタが設けられていることを特徴とする請求項１に記載のＮＡＮＤフラッシュメモリインタフェース装置。
【請求項９】
前記レジスタファイルには、前記コマンドの動作状態、及び前記コマンドの動作遂行結果のうち少なくともいずれか一つの情報が貯蔵される状態レジスタが設けられていることを特徴とする請求項１に記載のインタフェース装置。
【請求項１０】
ホストプロセッサと、制御線及びＩ／Ｏ信号線を備えたＮＡＮＤフラッシュメモリ間のインタフェース方法において、
前記ホストプロセッサから前記フラッシュメモリの動作を制御するためのコマンド、及び前記コマンドの動作遂行に必要な動作情報を受領する段階と、
受領した前記コマンド、及び前記動作情報を解読する段階、及び
解読した前記コマンドによる動作が行われるよう前記制御線及び前記Ｉ／Ｏ信号線を制御する段階と、を備えることを特徴とするインタフェース方法。
【請求項１１】
前記制御段階は、前記ＮＡＮＤフラッシュメモリにデータが入出力される場合、エラー訂正コードを発生させエラーを検出する段階と、を備えることを特徴とする請求項１０に記載のインタフェース方法。
【請求項１２】
前記コマンドは、ＲＥＡＤコマンド、ＷＲＩＴＥコマンド、ＥＲＡＳＥコマンド、ＩＮＶＡＬＩＤＣＨＥＣＫコマンド、及びＷＲＩＴＥＩＮＶＡＬＩＤコマンドのうちいずれか一つであることを特徴とする請求項１０に記載のインタフェース方法。
【請求項１３】
前記動作情報は、前記ＮＡＮＤフラッシュメモリにおける前記コマンドによる動作が行われる領域の開始アドレスを含むことを特徴とする請求項１０に記載のインタフェース方法。
【請求項１４】
前記制御信号は、ＡＬＥ制御信号、ＣＬＥ制御信号、ＣＥ制御信号、ＲＥ制御信号、及びＷＥ制御信号と、を含むことを特徴とする請求項１０に記載のインタフェース方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明はインタフェース装置に係り、さらに詳しくはホストプロセッサとＮＡＮＤフラッシュメモリとの間をインタフェースするＮＡＮＤフラッシュメモリインタフェース装置に関する。
【０００２】
【従来の技術】
フラッシュメモリ（Ｆｌａｓｈ　Ｍｅｍｏｒｙ）は不揮発性メモリであるが、プログラミングと削除がオンライン状態で可能なメモリである。フラッシュメモリはＥＥＰＲＯＭと同様に電気的に削除する技術を用い、メモリ全体が１秒または数秒で消される。フラッシュメモリに貯蔵されたデータの削除はチップ全体だけではなくブロック単位の削除も可能であるが、バイト単位の削除は不可能である。フラッシュメモリは修正可能な制御プログラムを貯蔵したり、補助メモリの代用として使用される場合もある。
【０００３】
フラッシュメモリにはＮＡＮＤフラッシュメモリ（ＮＡＮＤ　Ｆｌａｓｈ　Ｍｅｍｏｒｙ）と、ＮＯＲ型フラッシュメモリ（ＮＯＲ　Ｔｙｐｅ　Ｆｌａｓｈ　Ｍｅｍｏｒｙ）がある。ＮＯＲ型フラッシュメモリはＳＲＡＭやＲＯＭタイプのインタフェース方式を使用するのでプロセッサなどとの回路構成が容易である。これに比べて、ＮＡＮＤフラッシュメモリはインタフェース方式がＮＯＲ型フラッシュメモリより複雑である。しかし、ＮＡＮＤフラッシュメモリはＮＯＲ型フラッシュメモリに比べて集積度に優れ、低価格であるという長所を有している。
【０００４】
図１はホストプロセッサとＮＡＮＤフラッシュメモリとの接続を示すブロック図である。
ホストプロセッサ１０は複数の制御線、複数のアドレス信号線、及び複数のデータ信号線を備えている。ＮＡＮＤフラッシュメモリ３０は複数の制御線と、Ｉ／Ｏ０〜Ｉ／Ｏ７の８ビットで構成されたＩ／Ｏ（Ｄａｔａ　Ｉｎｐｕｔ／Ｏｕｔｐｕｔｓ）信号線を備えている。
【０００５】
ホストプロセッサ１０のＣＬＥ（Ｃｏｍｍａｎｄ　Ｌａｔｃｈ　Ｅｎａｂｌｅ）、ＡＬＥ（Ａｄｄｒｅｓｓ　Ｌａｔｃｈ　Ｅｎａｂｌｅ）、ＣＥ（Ｃｈｉｐ　Ｅｎａｂｌｅ）、ＲＥ（Ｒｅａｄ　Ｅｎａｂｌｅ）、ＷＥ（Ｗｒｉｔｅ　Ｅｎａｂｌｅ）制御線は対応するＮＡＮＤフラッシュメモリ３０の制御線に連結される。ホストプロセッサ１０の複数のアドレス信号線と複数のデータ信号線はＮＡＮＤフラッシュメモリ３０のＩ／Ｏ信号線と接続される。そして、ＮＡＮＤフラッシュメモリ３０のＲ／Ｂ（Ｒｅａｄｙ／Ｂｕｓｙ　ｏｕｔｐｕｔ）制御線はホストプロセッサ１０の対応する制御線に接続される。
【０００６】
このような接続状態において、ＮＡＮＤフラッシュメモリ３０に貯蔵されたデータを引出す場合、ＮＡＮＤフラッシュメモリ３０の動作方法を説明すれば次の通りである。
ホストプロセッサ１０はＣＬＥ制御線をハイ（ｈｉｇｈ）にし、Ｉ／Ｏ信号線を介してＲＥＡＤコマンドをＮＡＮＤフラッシュメモリ３０に転送する。コマンド転送後、ホストプロセッサ１０はＡＬＥ信号をハイにし、Ｉ／Ｏ信号線を介してアドレスをＮＡＮＤフラッシュメモリ３０に転送する。ホストプロセッサ１０が転送するアドレスは、ＮＡＮＤフラッシュメモリ３０からデータを引出そうとする領域のアドレスである。コマンドとアドレスを転送されたＮＡＮＤフラッシュメモリ３０は内部メモリセル（Ｍｅｍｏｒｙ　Ｃｅｌｌ）からデータを引出して内部入出力バッファに転送する。この際、ＮＡＮＤフラッシュメモリ３０のＲ／Ｂ制御線はロー（ｌｏｗ）になって内部動作が進行中のＢＵＳＹ状態であることを示す。
【０００７】
ＮＡＮＤフラッシュメモリ３０で内部動作が完了されれば、Ｒ／Ｂ制御線はハイになり、内部入出力バッファに貯蔵されたデータはＩ／Ｏ信号線を介してホストプロセッサ１０に転送される。制御線のうちＣＥ、ＲＥ、ＷＥは一般のＳＲＡＭで使用されるインタフェース方式と同様に駆動される。
このようにＮＡＮＤフラッシュメモリ３０を使用するためには一般のＳＲＡＭにおいて使用されるＣＥ、ＲＥ、ＷＥ制御線以外に、ＣＬＥ、ＡＬＥ、Ｒ／Ｂなどの制御線を駆動するための回路が必要である。また、ホストプロセッサ１０とＮＡＮＤフラッシュメモリ３０との間にＩ／Ｏ信号線を介してコマンド、アドレス、データなどが伝達されるべきである。このような点は一般のメモリ駆動に使用されるインタフェース方式と互換性がないようにする。
【０００８】
従来はＮＡＮＤフラッシュメモリ３０を使用するため、ＧＰＩＯポートにＡＬＥ、ＣＬＥ、Ｒ／Ｂなどの制御線を連結して制御する方式が使用された。また、ＣＬＥとＡＬＥ制御線をプロセッサの０番目アドレス信号線と１番目アドレス信号線にそれぞれ接続し、Ｒ／Ｂ制御線は使用されない上位データ線のうち一つに接続して制御する方式も利用された。
【０００９】
しかし、このような方式は制御方法が複雑であり、全体動作の処理速度が遅れるという問題点があった。また、ＮＡＮＤフラッシュメモリ３０のＩ／Ｏ信号線は８ビットなので、１６ビットやそれ以上のデータ幅が求められるプロセッサの場合、ＮＡＮＤフラッシュメモリ３０が２個またはそれ以上が必要になる。従って、プロセッサの種類に応じて使用されるＮＡＮＤフラッシュメモリ３０の個数が増加すべきなので、全体回路の大きさも増加するという問題点もある。
そして、ＮＡＮＤフラッシュメモリ３０にブートコードを貯蔵して使用する場合、別の回路構成なしにソフトウェア的にＥＣＣ（Ｅｒｒｏｒ　Ｃｏｒｒｅｃｔｉｏｎ　Ｃｏｄｅ）機能を支援すればブーティング速度が低下するので、別の回路構成を必要とするという問題点も発生する。
【００１０】
【発明が解決しようとする課題】
本発明は前述したような問題点を解決するために案出されたもので、その目的は一般のメモリの駆動に使用されるインタフェース方式でＮＡＮＤフラッシュメモリを制御できるインタフェース装置を提供することにある。
本発明の他の目的は、ＮＡＮＤフラッシュメモリと接続されるプロセッサのデータ幅が増加してもＮＡＮＤフラッシュメモリの個数を増加する必要のないインタフェース装置を提供することにある。
本発明のさらに他の目的は、ＮＡＮＤフラッシュメモリにデータ入出力時エラー検出機能をハードウェア的に支援して、エラー検出速度を早められるインタフェース装置を提供することにある。
【００１１】
【課題を解決するための手段】
前述した目的を達成するための本発明に係るインタフェース装置は、ホストプロセッサとＮＡＮＤフラッシュメモリとをインタフェースし、前記ホストプロセッサから前記ＮＡＮＤフラッシュメモリの動作を制御するためのコマンド、及び前記コマンドの動作遂行に必要な動作情報を受領して貯蔵するレジスタファイルと、前記ホストプロセッサから前記ＮＡＮＤフラッシュメモリに貯蔵するホストデータを受領して貯蔵し、前記ＮＡＮＤフラッシュメモリから引出されて前記ホストプロセッサに転送されるフラッシュデータを貯蔵する内部メモリと、前記ＮＡＮＤフラッシュメモリを動作させるための制御信号を制御し、前記コマンド、前記動作情報、及び前記ホストデータのうちいずれか一つが出力され、及び前記フラッシュデータが入力されるＩ／Ｏ信号線を制御するフラッシュインタフェース部、及び前記レジスタファイルから前記コマンド及び前記動作情報を引出して、前記コマンドによる動作が行われるよう前記内部メモリと、前記フラッシュインタフェース部を制御するステートマシンとを含む。
【００１２】
前記コマンドは、ＲＥＡＤコマンド、ＷＲＩＴＥコマンド、ＥＲＡＳＥコマンド、ＩＮＶＡＬＩＤＣＨＥＣＫコマンド、ＷＲＩＴＥＩＮＶＡＬＩＤコマンドのうちいずれか一つである。前記動作情報は、前記ＮＡＮＤフラッシュメモリで前記コマンドによる動作が行われる領域の開始アドレスを含むことが望ましい。
【００１３】
前記制御信号は、ＡＬＥ信号、ＣＬＥ信号、ＣＥ信号、ＲＥ信号、ＷＥ信号を含み、前記内部メモリは、前記ホストデータ及び前記フラッシュデータが貯蔵されるバッファ、及びシステムをブーティングさせるためのブートコードが貯蔵されたブートメモリを含むよう構成することが望ましい。また、前記内部メモリは、前記ホストデータ及び前記フラッシュデータが入出力される場合エラー訂正コードを発生させエラーを検出するＥＣＣチェッカをさらに含むよう構成することも可能である。
【００１４】
前記レジスタファイルには、前記開始アドレスが貯蔵されるアドレスレジスタ、前記コマンドが貯蔵されるコマンドレジスタ、前記コマンドの動作状態、及び前記コマンドの動作遂行結果のうち少なくともいずれか一つの情報が貯蔵される状態レジスタが設けられることが望ましい。
【００１５】
一方、本発明に係るホストプロセッサと、制御線及びＩ／Ｏ信号線を備えたＮＡＮＤフラッシュメモリとのインタフェース方法は、前記ホストプロセッサから前記フラッシュメモリの動作を制御するためのコマンド、及び前記コマンドの動作遂行に必要な動作情報を受領する段階と、受領した前記コマンド、及び前記動作情報を解読する段階、及び解読した前記コマンドによる動作が行われるよう前記制御線、及び前記Ｉ／Ｏ信号線を制御する段階を含む。この際、前記制御段階は、前記ＮＡＮＤフラッシュメモリにデータが入出力される場合エラー訂正コードを発生させエラーを検出する段階を含む。
【００１６】
前記コマンドは、ＲＥＡＤコマンド、ＷＲＩＴＥコマンド、ＥＲＡＳＥコマンド、ＩＮＶＡＬＩＤＣＨＥＣＫコマンド、ＷＲＩＴＥＩＮＶＡＬＩＤコマンドのうちいずれか一つである。前記動作情報は、前記ＮＡＮＤフラッシュメモリにおける前記コマンドによる動作が行われる領域の開始アドレスを含む。前記制御信号は、ＡＬＥ信号、ＣＬＥ信号、ＣＥ信号、ＲＥ信号、ＷＥ信号を含むことが望ましい。
【００１７】
【発明の実施の形態】
以下、添付した図面に基づき本発明をさらに詳述する。
図２は本発明に係るインタフェース装置と、ホストプロセッサ及びＮＡＮＤフラッシュメモリ間の接続を示すブロック図である。
ブロック図に示した通り、インタフェース装置２０はホストプロセッサ１０とＮＡＮＤフラッシュメモリ３０との間に位置する。
【００１８】
ホストプロセッサ１０は複数の制御線、複数のアドレス（ＡＤＤＲ）信号線、及び複数のデータ（ＤＡＴＡ）信号線を備えている。インタフェース装置２０は複数の制御線、複数のデータ（ＤＡＴＡ）信号線、及びＩ／Ｏ０〜Ｉ／Ｏ７の８ビットで構成されたＩ／Ｏ（Ｄａｔａ　Ｉｎｐｕｔ／Ｏｕｔｐｕｔｓ）信号線を備える。ＮＡＮＤフラッシュメモリ３０は複数の制御線と、Ｉ／Ｏ０〜Ｉ／Ｏ７の８ビットで構成されたＩ／Ｏ信号線を備えている。
【００１９】
ホストプロセッサ１０のＣＥ（Ｃｈｉｐ　Ｅｎａｂｌｅ）、ＲＥ（Ｒｅａｄ　Ｅｎａｂｌｅ）、ＷＥ（ＷｒｉｔｅＥｎａｂｌｅ）制御線は対応するインタフェース装置２０の制御線に連結され、ホストプロセッサ１０のアドレス信号線及びデータ信号線はインタフェース装置２０のアドレス信号線とデータ信号線にそれぞれ接続される。
インタフェース装置２０から出力されるＡＬＥ（Ａｄｄｒｅｓｓ　Ｌａｔｃｈ）、ＣＬＥ（Ｃｏｍｍａｎｄ　Ｌａｔｃｈ　Ｅｎａｂｌｅ）、ＣＥ（Ｃｈｉｐ　Ｅｎａｂｌｅ）、ＲＥ（Ｒｅａｄ　Ｅｎａｂｌｅ）、ＷＥ（ｗｒｉｔｅ　Ｅｎａｂｌｅ）制御線は対応するＮＡＮＤフラッシュメモリ３０の制御線に接続される。インタフェース装置２０のＩ／Ｏ信号線はＮＡＮＤフラッシュメモリ３０のＩ／Ｏ信号線と接続され、ＮＡＮＤフラッシュメモリ３０から出力されるＲ／Ｂ（Ｒｅａｄｙ／Ｂｕｓｙ　ｏｕｔｐｕｔ）制御線はインタフェース装置２０の対応する制御線に接続される。
【００２０】
この接続状態において、ホストプロセッサ１０はＮＡＮＤフラッシュの動作制御のためのコマンドとコマンドの動作遂行に必要な動作情報をインタフェース装置２０に伝達する。コマンド遂行に必要な動作情報は、読出動作の場合はＮＡＮＤフラッシュメモリ３０でデータを引出した領域のアドレス、書込動作の場合にはＮＡＮＤフラッシュメモリ３０でデータを貯蔵する領域のアドレス及び貯蔵するデータなどを含む。ホストプロセッサ１０からコマンドなどを伝達されたインタフェース装置２０は該当コマンドによる動作が行われるようＮＡＮＤフラッシュメモリ３０を制御する。
【００２１】
例えば、インタフェース装置２０がホストプロセッサ１０からＲＥＡＤコマンドを受けた場合、インタフェース装置２０はＣＬＥ制御線をハイ（ｈｉｇｈ）にし、Ｉ／Ｏ信号線を介してＲＥＡＤコマンドをＮＡＮＤフラッシュメモリ３０に転送する。コマンド転送後、インタフェース装置２０はＡＬＥ信号をハイにし、Ｉ／Ｏ信号線を介してアドレスをＮＡＮＤフラッシュメモリ３０に転送する。コマンドとアドレスを転送されたＮＡＮＤフラッシュメモリ３０は内部のメモリセル（Ｍｅｍｏｒｙ　ｃｅｌｌ）から内部入出力バッファにデータを移動する。この際、Ｒ／Ｂ信号がロー（ｌｏｗ）になってＢＵＳＹ状態であることを表示する。ＮＡＮＤフラッシュメモリ３０内で動作が完了されればＲ／Ｂ信号がハイになり、内部入出力バッファに貯蔵されたデータはＩ／Ｏ信号線を介してインタフェース装置２０に伝達される。インタフェース装置２０は伝達されたデータをデータ信号線を介してホストプロセッサ１０に伝達する。
【００２２】
インタフェース装置２０がホストプロセッサ１０からＷＲＩＴＥコマンドを受けた場合、コマンドとアドレスの伝達はＲＥＡＤコマンドを受けた場合と同一な順序で行われる。すなわち、インタフェース装置２０はＣＬＥ制御線をハイ（ｈｉｇｈ）にし、Ｉ／Ｏ信号線を介してＷＲＩＴＥコマンドを出力し、ＡＬＥ信号をハイにしＩ／Ｏ信号線を介してアドレスを出力する。アドレス出力後はデータを順次に入力する。
【００２３】
データの入力後、再びコマンドを転送する。ＷＲＩＴＥコマンドの場合、２回のコマンドが入力されるが、最初のコマンドはＮＡＮＤフラッシュメモリ３０内の内部バッファにデータを入力せよとのコマンドであり、二番目のコマンドは内部バッファからメモリセルにデータを転送させるコマンドである。ＲＥＡＤコマンドの場合のように、動作が完了されればＲ／Ｂ信号がハイになる。インタフェース装置２０はＩ／Ｏ信号線を確認して動作が正しく行われたかをチェックする。この情報はインタフェース装置２０内に貯蔵され、ホストプロセッサ１０はこれに基づき動作遂行結果が分かるようになる。
【００２４】
図３は図２のインタフェース装置２０をさらに詳細に示すブロック図である。インタフェース装置２０はレジスタファイル２２、ステートマシン２４、内部メモリ２６、及びフラッシュインタフェース部２８を備える。
レジスタファイル（Ｒｅｇｉｓｔｅｒ　Ｆｉｌｅ）２２はホストプロセッサ１０からコマンドと、コマンドの動作遂行に必要な動作情報を受領して貯蔵する。レジスタファイル２２内にはコマンドレジスタ（Ｃｏｍｍａｎｄ　Ｒｅｇｉｓｔｅｒ）、アドレスレジスタ（ＡｄｄｒｅｓｓＲｅｇｉｓｔｅｒ）が設けられている。ホストプロセッサ１０から伝達されたコマンドと、アドレスはそれぞれコマンドレジスタとアドレスレジスタに貯蔵される。
【００２５】
レジスタファイル２２内には状態レジスタ（Ｓｔａｔｕｓ　Ｒｅｇｉｓｔｅｒ）も設けられている。状態レジスタは現在実行中のコマンドの動作状態、コマンド動作遂行後の結果などが貯蔵される。ホストプロセッサ１０は状態レジスタを参照してコマンド遂行結果が判るようになる。
ステートマシン（Ｆｉｎｉｔｅ　Ｓｔａｔｅ　Ｍａｃｈｉｎｅ）２４はホストプロセッサ１０から伝えられレジスタファイル２２に貯蔵されたコマンドを引出して、該当コマンドによる動作が行われるよう内部メモリ２６とフラッシュインタフェース部２８などインタフェース装置２０内の全般的な動作を制御する。
【００２６】
ステートマシン２４は引出したコマンドによる制御を開始する場合、実行開始信号をレジスタファイル２２に出力し、コマンドの実行による動作状態もレジスタファイル２２に貯蔵する。ステートマシン２４は該当コマンドに対する動作を完了した後、その動作結果をチェックしてレジスタファイル２２内の状態レジスタに実行結果値を書き込んで、ホストプロセッサ１０が参照できるようにする。内部メモリ（Ｉｎｔｅｒｎａｌ　Ｍｅｍｏｒｙ）２６はブーティング（Ｂｏｏｔｉｎｇ）ＳＲＡＭと、バッファ、及びＥＣＣチェッカで構成される。バッファは総４個があり、自由に読出書込が可能である。バッファは一定サイズの頁に区画され、各頁にはスペア領域があって、ＥＣＣのためのバイトと、Ｉｎｖａｌｉｄ／Ｖａｌｉｄブロックマーキングのためのバイトが割当てられる。
【００２７】
内部メモリ２６のバッファはホストプロセッサ１０からＮＡＮＤフラッシュメモリ３０に転送するデータ及びＮＡＮＤフラッシュメモリ３０から引出されるデータを貯蔵する。内部メモリ２６のＥＣＣチェックは内部メモリ２６にデータが貯蔵される場合、ＥＣＣなどのエラー訂正コードを発生してエラーを検出する。エラー検出結果はレジスタファイル２２に転送して貯蔵される。ホストプロセッサ１０はレジスタファイル２２を参照してエラー検出結果が判る。
【００２８】
フラッシュインタフェース部（Ｆｌａｓｈ　Ｉｎｔｅｒｆａｃｅ）２８はステートマシン２４の制御によりＮＡＮＤフラッシュメモリ３０のインタフェース規格に適するＡＬＥ、ＣＬＥ、ＣＥ、ＯＥ、ＷＥなど制御信号及びＩ／Ｏ信号線を制御し、ＮＡＮＤフラッシュメモリ３０からＲ／Ｂ制御信号が入力される。Ｉ／Ｏ信号線を介してはコマンド、コマンドの動作遂行に必要な動作情報、ホストプロセッサ１０からＮＡＮＤフラッシュメモリ３０に貯蔵されるデータなどが出力される。また、Ｉ／Ｏ信号線にはフラッシュメモリ３０から引出されるデータが入力されるが、該データは内部メモリ２６に貯蔵される。もし、ＮＡＮＤフラッシュメモリ３０のインタフェース規格が変る場合は、インタフェース装置２０内でフラッシュメモリインタフェース部２８だけ修正することで可能である。
【００２９】
表１はインタフェース装置２０のピン構成を示す。表１において方向は信号の流れ方向を示す。すなわち、Ｉはインタフェース装置２０が信号を入力される入力ピン、Ｏはインタフェース装置２０で信号を出力する出力ピン、Ｉ／Ｏはインタフェース装置２０が信号を受けたり信号を出力する入出力ピンを示す。
【００３０】
【表１】
2004005699.tif 000003
【００３１】
表１においてＡＤＤＲ［１５：０］ピンにはホストプロセッサ１０のアドレス信号線が接続され、ＨＯＳＴ＿ＤＡＴＡ［３１：０］ピンにはホストプロセッサ１０のデータ信号線が接続される。ＣＳピン、ＯＥピン、ＷＥピンにはホストプロセッサ１０のＣＥ、ＯＥ、ＷＥ制御線がそれぞれ接続される。
【００３２】
出力ピンであるＦＬＡＳＨ＿ＡＬＥピン、ＦＬＡＳＨ＿ＣＬＥピン、ＦＬＡＳＨ＿ＣＥピン、ＦＬＡＳＨ＿ＲＥピン、ＦＬＡＳＨ＿ＷＥピンにはそれぞれフラッシュメモリ３０のＡＬＥ、ＣＬＥ、ＣＥ、ＲＥ、ＷＥ制御線が接続され、ＦＬＡＳＨ＿ＢＵＳＹピンにはＲ／Ｂ制御線が接続される。そして、ＣＬＯＣＫピンには動作のためのクロック信号が入力され、ＲＥＳＥＴピンには外部からリセット信号が入力される。
【００３３】
ＤＡＴＡ＿ＷＩＤＴＨピンにはデータ幅構成信号が入力され、入力される信号に応じてインタフェース装置２０が処理するデータ幅を変化させる。ＦＬＡＳＨ−ＤＡＴＡ＿ＷＩＤＴＨピンは１６ビットやそれ以上のデータ幅を有するＮＡＮＤフラッシュメモリ３０のために予約されたピンである。そして、ＡＳＩＣ＿ＢＵＳＹピンはインタフェース装置２０がＢＵＳＹ状態であるか否かを示す信号を出力するピンである。
【００３４】
表２及び表３はインタフェース装置２０内のメモリマップを示す。表２は１６ビットインタフェースの場合であり、表３は３２ビットインタフェースの場合である。データ幅の変化はＤＡＴＡ＿ＷＩＤＴＨピンに入力されるデータ幅構成信号により変化される。すなわち、ＤＡＴＡ＿ＷＩＤＴＨピンにロー信号が入力されれば１６ビットインタフェースになり、ハイ信号が入力されれば３２ビットインタフェースになるよう構成できる。
【００３５】
【表２】
2004005699.tif 000004
【００３６】
【表３】
2004005699.tif 000005
【００３７】
図４Ａないし図４Ｆはインタフェース装置２０で動作過程を示す流れ図である。
図４Ａにおいて、インタフェース装置２０のＲＥＳＥＴピンに外部からリセット（ＲＥＳＥＴ）信号が入力される（Ｓ４０）。リセット信号が入力されればレジスタファイル２２とステートマシン２４の内部状態が初期化される（Ｓ４２）。初期化過程を終了された後、インタフェース装置２０はホストプロセッサ１０からコマンドを入力される（Ｓ４４）。インタフェース装置２０は入力されるコマンドの種類によってＮＡＮＤフラッシュメモリ３０の動作を制御する。
【００３８】
図４ＢはＲＥＡＤコマンドの場合であって、まずＩ／Ｏ信号線を介して’００ｈ’値を出力する（Ｓ５６）。ＲＥＡＤコマンドはＮＡＮＤフラッシュメモリ３０に貯蔵されたデータを引出すコマンドであり、’００ｈ’値はＮＡＮＤフラッシュメモリ３０でＲＥＡＤ動作を行うよう定義された値である。’００ｈ’出力後は、インタフェース装置２０はＮＡＮＤフラッシュメモリ３０でデータを引き出そうとする領域の開始アドレスをＩ／Ｏ信号線に出力する（Ｓ５８）。一般に、ＮＡＮＤフラッシュメモリ３０の大きさは数十Ｍｂｙｔｅ以上なのでアドレスビット数が２０個以上必要であるが、Ｉ／Ｏ信号線は８ビットなので、アドレスは順次に３回以上入力されるべきである。
【００３９】
アドレスが入力されれば、インタフェース装置２０はＲ／Ｂ＝１であるか否かを検査する（Ｓ５９）。Ｒ／Ｂ＝１ならば、ＮＡＮＤフラッシュメモリ３０の内部動作が完了されたものであり、これによりインタフェース装置２０はＮＡＮＤフラッシュメモリ３０の該当領域から順次に出力されるデータを読み出す（Ｓ６０）。ＮＡＮＤフラッシュメモリ３０から出力されるデータは内部メモリ２６に貯蔵される。この際、ＥＣＣ（Ｅｒｒｏｒ　Ｃｏｒｒｅｃｔｉｏｎ　Ｃｏｄｅ）が発生し（Ｓ６２）、ＥＣＣを検査してエラー有無を判断する（Ｓ６４）。判断結果エラーが発生したならば、実行結果値（ＲＥＳＵＬＴ）をＥＣＣＥＲＲＯＲにし（Ｓ６８）、エラーがなければ実行結果値をＯＫにする（Ｓ６６）。
コマンドの処理が終了されれば、図４Ｇに示した通り、インタフェース装置２０は実行結果値を受け入れ（Ｓ１３８）、状態レジスタに実行結果値を書き込む（Ｓ１４０）。このような過程によってＲＥＡＤコマンドの遂行が完了される。
【００４０】
図４ＣはＷＲＩＴＥコマンドの場合であって、ＮＡＮＤフラッシュメモリ３０にデータを貯蔵するコマンドである。このコマンドの場合、まず’８０ｈ’を出力する（Ｓ７０）。その後、ＲＥＡＤコマンドの場合のようにアドレスを出力し（Ｓ７２）、データを出力する（Ｓ７４）。その後再び’１０ｈ’を出力する（Ｓ７６）。前述した通り、ＷＲＩＴＥコマンドの場合、二回のコマンドが出力される。コマンド出力後、状態レジスタの値を読み出す（Ｓ７８）。Ｉ／Ｏ信号線のＩ／Ｏ　６＝１であるか、Ｒ／Ｂ＝１なら内部動作が完了されたものであり、そうでなければ内部動作中なので動作の完了を待つ（Ｓ８０）。このような信号線の値は状態レジスタに貯蔵されるので、貯蔵された状態レジスタの値を参照して判る。
【００４１】
内部動作が完了されたならば、Ｉ／Ｏ信号線のＩ／Ｏ０＝０であるかを判断する（Ｓ８２）。ＷＲＩＴＥコマンドが成功的に行われたならばＩ／Ｏ　０＝０になり、遂行過程にエラーがあったし、Ｉ／Ｏ０＝１が出力される。これによりコマンド処理過程でエラーがあるかが判る。エラーが発生したならば、実行結果値（ＲＥＳＵＬＴ）をＷＲＩＴＥＥＲＲＯＲにし（Ｓ８６）、エラーがなければ実行結果値をＯＫにする（Ｓ８４）。以降の過程はＲＥＡＤコマンドの処理過程と同様である（Ｓ１３８、Ｓ１４０）。
【００４２】
図４ＤはＥＲＡＳＥコマンドの場合であって、該当領域に貯蔵されたデータを削除する命令である。この場合、インタフェース装置２０はまず’６０ｈ’を出力する（Ｓ８８）。その後、アドレスを出力し（Ｓ９０）、’ＤＯｈ’を出力する（Ｓ９２）。コマンド出力後、状態レジスタの値を読み出す（Ｓ９４）。Ｉ／Ｏ信号線のＩ／Ｏ６＝１であるかＲ／Ｂ＝１ならば内部動作が完了されたものであり、そうでなければ内部動作中なので動作の完了を待つ（Ｓ９６）。その後、ＷＲＩＴＥコマンドの処理過程のように、Ｉ／Ｏ０＝０であるかを判断する（Ｓ９８）。Ｉ／Ｏ０＝０ならば、エラーなしにコマンドが行われたことなので実行結果値をＯＫにする（Ｓ１００）。そうでなければ、ＥＲＡＳＥコマンド遂行過程中にエラーが発生したことなので、実行結果値（ＲＥＳＵＬＴ）をＥＲＡＳＥＥＲＲＯＲにする（Ｓ１０２）。以降の過程はＲＥＡＤコマンドの処理過程と同様である（Ｓ１３８、Ｓ１４０）。
【００４３】
図４ＥはコマンドがＩＮＶＡＬＩＤＣＨＥＣＫの場合であって、まず’５０ｈ’を出力する（Ｓ１０４）。ＩＮＶＡＬＩＤＣＨＥＣＫコマンドは一つ以上のビットが不良なので信頼性を有しない無効なブロック（Ｉｎｖａｌｉｄ　Ｂｌｏｃｋ）を検索するコマンドである。’５０ｈ’出力後、チェックしようとするブロックのアドレスを出力し（Ｓ１０６）、Ｒ／Ｂ＝１であるか否かを検査する（Ｓ１０７）。Ｒ／Ｂ＝１ならば、データを読み出して（Ｓ１０８）、スペア領域（Ｓｐａｒｅ　ａｒｅａ）の６番目バイトが’ＦＦｈ’であるかを検査する（Ｓ１１０、Ｓ１１２）。ＮＡＮＤフラッシュメモリ３０は各頁毎に幾つかのバイトがスペア領域として設定されているが、無効なブロックに対する情報はこのスペア領域の６番目バイトに貯蔵される。スペア領域の６番目バイトの値が’ＦＦｈ’の場合は該当ブロックには不良のビットがないことで、実行結果値をＶＡＬＩＤにする（Ｓ１１４）。そうでない場合は、実行結果値をＩＮＶＡＬＩＤにする（Ｓ１１６）。以降の過程はＲＥＡＤコマンドの処理過程と同様である（Ｓ１３８、Ｓ１４０）。
【００４４】
図４ＦはコマンドがＷＲＩＴＥＩＮＶＡＬＩＤの場合であって、まず’５０ｈ’を出力し、’８０ｈ’を出力する（Ｓ１１８、Ｓ１２０）。ＷＲＩＴＥＩＮＶＡＬＩＤコマンドは無効なブロック情報を書き込むコマンドである。’８０ｈ’出力後、スペア領域の６番目バイトデータに無効なブロック情報に該当する値を書き込み、’１０ｈ’を出力する（Ｓ１２４、Ｓ１２６）。その後、状態レジスタ値を読み出す（Ｓ１２８）。Ｉ／Ｏ信号線のＩ／Ｏ６＝１であるかＲ／Ｂ＝１ならば内部動作が完了されたものであり、そうでなければ内部動作中なので動作の完了を待つ（Ｓ１３０）。内部動作が完了されれば、Ｉ／Ｏ０＝０であるかを判断する（Ｓ１３２）。Ｉ／Ｏ０＝０ならば結果値をＯＫにする（Ｓ１３４）。そうでなければ、結果値をＷＲＩＴＥＥＲＲＯＲにする（Ｓ１３６）。以降の過程はＲＥＡＤコマンドの処理過程と同様である（Ｓ１３８、Ｓ１４０）。
【００４５】
図５Ａないし図５Ｃはホストプロセッサ１０でインタフェース装置２０の駆動方法の例を示す流れ図である。
図５ＡはＥＲＡＳＥコマンドの場合である。この場合は、まずＥＲＡＳＥコマンドを書き込み（Ｓ２００）、状態を読み出してＢＵＳＹか否かをチェックする（Ｓ２０２、Ｓ２０４）。状態がＢＵＳＹであるか否かはＮＡＮＤフラッシュメモリ３０から出力されるＲ／Ｂ制御信号をインタフェース装置２０が受け入れてレジスタファイル２２内に記録すれば、ホストプロセッサ１０はこれを参照して判る。このような方法の他、ハードウェア的にＡＳＣＩ＿ＢＵＳＹピンの信号をチェックして、ＢＵＳＹ状態が終わればホストプロセッサ１０にインタラプトをかける方法で具現することも可能である。ＢＵＳＹ状態の場合は待機する（Ｓ２０４、Ｓ２０２）。ＢＵＳＹ状態が終了すれば、引き続きコマンドを出力するかを判断する（Ｓ２０６）。出力するコマンドがあれば、前述した過程を繰り返し、出力するコマンドがなければ終了する。
【００４６】
図５ＢはＷＲＩＴＥコマンドの場合である。この場合はデータを書き込み（Ｓ２１０）、ＷＲＩＴＥコマンドを出力する（Ｓ２１２）。コマンドを書き込んでからは状態を読み出して、ＢＵＳＹか否かをチェックする（Ｓ２０２、Ｓ２０４）。ＢＵＳＹ状態の場合は待機する（Ｓ２１６、Ｓ２１４）。ＢＵＳＹ状態が終了すれば、引き続きコマンドを出力するかを判断する（Ｓ２１８）。出力するコマンドがあれば前述した過程を繰り返し、出力するコマンドがなければ終了する。
【００４７】
図５ＣはＲＥＡＤコマンドの場合である。この場合にはコマンドを書き込み（Ｓ２２０）、状態を読み出して、ＢＵＳＹか否かをチェックする（Ｓ２２２、Ｓ２２４）。ＢＵＳＹ状態の場合待機し（Ｓ２２４、Ｓ２２２）、ＢＵＳＹ状態が終わればデータを読み出す（Ｓ２２６）。出力するコマンドがあれば前述した過程を繰り返し、そうでなければ終了する。
このような過程によりホストプロセッサ１０はインタフェース装置２０にコマンドを伝える。
【００４８】
【発明の效果】
以上述べた通り、本発明によればホストプロセッサは一般のメモリの駆動に使用されるインタフェース方式でＮＡＮＤフラッシュメモリを制御できるようになる。また、ホストプロセッサのデータ幅が大きくなっても使用するＮＡＮＤフラッシュメモリの個数は増やす必要がなくなる。そして、エラー検出機能をハードウェア的に支援することによって、エラー検出などによる処理速度の低下を防止することができる。
【００４９】
また、以上では本発明の望ましい実施例について示しかつ説明したが、本発明は前述した特定の実施例に限られず、請求の範囲で請求する本発明の要旨を逸脱せず当該発明の属する技術分野において通常の知識を持つ者によって多様な変形実施が可能なことは勿論、このような変形実施は本発明の技術的思想や展望から個別的に理解されてはいけない。
【図面の簡単な説明】
【図１】ホストプロセッサとＮＡＮＤフラッシュメモリとの接続を示すブロック図である。
【図２】本発明に係るインタフェース装置と、ホストプロセッサ及びＮＡＮＤフラッシュメモリ間の接続を示すブロック図である。
【図３】本発明に係るインタフェース装置のブロック図である。
【図４Ａ】本発明に係るインタフェース装置の動作方法を示す流れ図である。
【図４Ｂ】本発明に係るインタフェース装置の動作方法を示す流れ図である。
【図４Ｃ】本発明に係るインタフェース装置の動作方法を示す流れ図である。
【図４Ｄ】本発明に係るインタフェース装置の動作方法を示す流れ図である。
【図４Ｅ】本発明に係るインタフェース装置の動作方法を示す流れ図である。
【図４Ｆ】本発明に係るインタフェース装置の動作方法を示す流れ図である。
【図４Ｇ】本発明に係るインタフェース装置の動作方法を示す流れ図である。
【図５Ａ】ホストプロセッサにおいて本発明に係るインタフェース装置の駆動方法の例を示す流れ図である。
【図５Ｂ】ホストプロセッサにおいて本発明に係るインタフェース装置の駆動方法の例を示す流れ図である。
【図５Ｃ】ホストプロセッサにおいて本発明に係るインタフェース装置の駆動方法の例を示す流れ図である。
【符号の説明】
１０；ホストプロセッサ
２０；インタフェース装置
２２；レジスタファイル
２４；ステートマシン
２６；内部メモリ
２８；フラッシュインタフェース部
３０；ＮＡＮＤフラッシュメモリ
【図１】
2004005699.tif 000006
【図２】
2004005699.tif 000007
【図３】
2004005699.tif 000008
【図４Ａ】
2004005699.tif 000009
【図４Ｂ】
2004005699.tif 000010
【図４Ｃ】
2004005699.tif 000011
【図４Ｄ】
2004005699.tif 000012
【図４Ｅ】
2004005699.tif 000013
【図４Ｆ】
2004005699.tif 000014
【図４Ｇ】
2004005699.tif 000015
【図５Ａ】
2004005699.tif 000016
【図５Ｂ】
2004005699.tif 000017
【図５Ｃ】
2004005699.tif 000018