図1は、本発明の実施形態によるメモリ装置の構成を示すブロック図である。マイクロコントローラ101は、外部バス121及び122を介して内部コントローラ104に接続される。外部バス121はコントロール制御信号線であり、外部バス122はRAMインタフェース線122である。
内部コントローラ104は、メモリバス124を介して不揮発性メモリ(NVメモリ)105に接続され、メモリバス125を介してRAM106に接続される。不揮発性メモリ105は、例えばNAND型フラッシュメモリである。RAM106は、例えばSRAM(static random access memory)である。メモリバス124は、NAND型フラッシュメモリインタフェースバスである。メモリバス125は、RAMインタフェースバスである。上記の内部コントローラ104、NAND型フラッシュメモリ105及びRAM106は、同一のパッケージ103内に内蔵される。
内部コントローラ104は、制御レジスタ111、NAND型フラッシュメモリ用シーケンサ112、エラー検出訂正回路113、RAM用シーケンサ114、及びデータラッチ115を有する。制御レジスタ111は、後に図2を参照しながら説明する。NAND型フラッシュメモリ用シーケンサ112は、メモリバス124を介してNAND型フラッシュメモリ105を制御することができる。RAM用シーケンサ114は、メモリバス125を介してRAM106を制御することができる。エラー検出訂正回路113は、エラー検出及び訂正処理を行う。データラッチ115は、入出力線LT1及びLT2を介して、NAND型フラッシュメモリ105とRAM106との間のデータ転送の際にページサイズ以下で任意のデータ長(例えば、1ワード)のデータをバッファリングすることができる。
また、マイクロコントローラ101は、外部バス123を介して、不揮発性メモリ(NVメモリ)102に接続される。外部バス122及び123は、共通のバスを介してマイクロコントローラ101に接続される。不揮発性メモリ102は、例えばNOR型フラッシュメモリである。
NOR型フラッシュメモリ102は、ランダムアクセスが可能である。そのため、マイクロコントローラ101は、バス123を介してNOR型フラッシュメモリ102に直接アクセスが可能である。しかし、NOR型フラッシュメモリ102は、小容量、大型及び大消費電力という欠点がある。
そこで、大容量、小型及び小消費電力の利点を有するNAND型フラッシュメモリ105をメモリ装置に設ける。しかし、NAND型フラッシュメモリ105は、シーケンシャルアクセスしかできないため、ランダムアクセスを可能にするためにRAM106を必要とする。また、NAND型フラッシュメモリ105は、上記の利点を有するが、データの信頼性が低いため、エラー検出訂正回路113を必要とする。
図7に示すように、NAND型フラッシュメモリ701は、複数ページ702、703、704等を有する。各ページ702〜704は、実データエリア及びスペアデータエリアを有する。実データエリアは実データを記憶するためのエリアであり、スペアデータエリアはスペアデータを記憶するためのエリアである。1ページは、実データエリアが例えば512ワード、スペアデータエリアが例えば16ワードである。スペアデータエリアは、先の8ワードが制御情報及び管理情報を記憶するためのエリアであり、後の8ワードがエラー検出訂正データを記憶するためのエリアである。なお、エラー検出訂正データは、例えば3ワードである。
図2は、上記の制御レジスタ111の構成を示す。制御レジスタ111は、コマンドレジスタ201、ソースアドレスレジスタ202、ディスティネーションアドレスレジスタ203、データサイズレジスタ204、エラー検出訂正アドレスレジスタ205、スペアデータレジスタ206、スペアセットレジスタ207、及びステータスレジスタ208等を有する。
コマンドレジスタ201は、マイクロコントローラ101から外部バス122を介して指示されたコマンドを格納する。コマンドは、例えば、セーブ命令、ロード命令、サスペンド命令、リジューム命令等がある。セーブ命令は、RAM106からNAND型フラッシュメモリ105にデータを転送するための命令である。ロード命令は、NAND型フラッシュメモリ105からRAM106にデータを転送するための命令である。サスペンド命令は、上記のセーブ命令又はロード命令により、NAND型フラッシュメモリ105とRAM106との間で行われているデータ転送を一時停止させるための命令である。リジューム命令は、上記の一時停止していたデータ転送を再開させるための命令である。
ソースアドレスレジスタ202は、上記のデータ転送の際の転送元を示すソースアドレスを記憶するためのレジスタである。ディスティネーションアドレスレジスタ203は、上記のデータ転送の際の転送先を示すディスティネーションアドレスを記憶するためのレジスタである。データサイズレジスタ204は、上記のデータ転送を行うデータサイズを記憶するためのレジスタである。
エラー検出訂正アドレスレジスタ205は、エラー検出訂正回路113によりエラーが検出されたときに、そのエラーが検出されたデータのアドレスを記憶するためのレジスタである。
スペアデータレジスタ206は、NAND型フラッシュメモリ105に書き込むスペアデータを記憶するためのレジスタである。スペアセットレジスタ207は、スペアデータレジスタ206に記憶されているスペアデータをNAND型フラッシュメモリ105に書き込むか否かを示すレジスタである。
ステータスレジスタ208は、内部コントローラ104の状態等を示すレジスタである。
図3は、図1の内部コントローラ104、NAND型フラッシュメモリ105及びRAM106の端子ピンの接続状態を示す。内部コントローラ104には、コントローラ制御信号線121及びRAMインタフェース線122が接続される。
内部コントローラ104は、コントローラ制御信号線121に接続される以下の端子を有する。端子XRESETは、外部からリセットするためのリセット入力端子である。端子CLKINは、外部クロック入力端子である。端子RDXBYは、レディ/ビジー出力端子である。端子INTは、割り込み信号の出力端子であり、例えば上記のデータ転送が終了した旨の割り込み信号等を出力する。端子XCEは、チップイネーブル入力端子である。
また、内部コントローラ104は、RAMインタフェース線122に接続される以下の一般的なRAMの端子を有する。端子Aは、アドレス入力端子であり、RAM106及び制御レジスタ111(図2)内のレジスタのアドレスを指定することもできる。端子Dは、データの入出力端子である。端子XCE1は第1のチップイネーブル入力端子であり、端子CE2は第2のチップイネーブル入力端子である。チップイネーブル入力端子XCE1及びCE2の組み合わせにより、チップイネーブル及び動作モードを指示することができる。端子XUBは、16ビットのデータ端子Dのうちの上位8ビットをイネーブル状態にするための入力端子である。端子XLBは、16ビットのデータ端子Dのうちの下位8ビットをイネーブル状態にするための入力端子である。端子XOEは、アウトプット(読み出し)イネーブル入力端子である。端子XWEは、ライト(書き込み)イネーブル入力端子である。
また、内部コントローラ104は、上記のバス122に接続される端子に対応して、メモリバス125に接続される一般的な以下のRAMの端子を有する。すなわち、バス125には、端子MA、MD、XMCE1、MCE2、XMUB、XMLB、XMOE、XMWEが設けられる。
RAM106は、バス125を介して、相手方の内部コントローラ104の端子と同様に、端子Add、Data、XCE1、CE2、XUB、XLB、XOE、XWEを有する。
上記のように、バス122及び125がRAMインタフェースで共通化されているので、マイクロコントローラ101(図1)は、外部バス122からの指示により外部から直接RAM106へアクセスしているような擬似的アクセスが可能になる。
また、内部コントローラ104は、メモリバス124に接続される以下の端子を有する。端子FDは、データ入出力端子である。端子XFCEは、チップイネーブル出力端子である。端子XFREは、リード(読み出し)イネーブル出力端子である。端子XFWEは、ライト(書き込み)イネーブル出力端子である。端子FALEは、アドレスラッチイネーブル出力端子である。端子FCLEは、コマンドラッチイネーブル出力端子である。これら端子FALE及びFCLEが選択されないときには、データが出力IOバス上に現れている。端子XFSEは、スペアエリアイネーブル出力端子であり、NAND型フラッシュメモリ105のスペアデータエリアをイネーブル状態にするための端子である。端子XFWPは、ライトプロテクト出力端子である。端子XFRSTは、外部リセット出力端子である。端子XRDxBYは、レディ/ビジー入力端子である。
NAND型フラッシュメモリ105は、バス124を介して、相手方の内部コントローラ104の端子と同様に、端子IO、XCE、XRE、XWE、ALE、CLE、XSE、XWP、XEx_RESET、RDxBYを有する。
次に、図1を参照しながら、マイクロコントローラ101がRAM106からNAND型フラッシュメモリ105へデータ転送する方法を説明する。マイクロコントローラ101は、図2のコマンドレジスタ201にセーブ命令を格納し、ソースアドレスレジスタ202に転送元のRAM106のスタートアドレスを格納し、ディスティネーションアドレスレジスタ203に転送先のNAND型フラッシュメモリ105のスタートアドレスを格納し、データサイズレジスタ204に転送データサイズを格納する。
すると、内部コントローラ104は、RAM106からデータラッチ115を介してNAND型フラッシュメモリ105へ実データ(512ワード)をエラー検出訂正回路113に通しながら転送する。そのデータ転送に伴い、上記のソースアドレスレジスタ202及びディスティネーションアドレスレジスタ203はインクリメントされ、データサイズレジスタ204はデクリメントされる。
エラー検出訂正回路113は、その実データを基にエラー検出訂正データ(3ワード)を生成する。内部コントローラ104は、NAND型フラッシュメモリ105の実データエリアに実データの書き込みが終了すると、続いて、生成されたエラー検出訂正データを含むスペアデータをNAND型フラッシュメモリ105のスペアエリアに書き込む。
次に、マイクロコントローラ101がNAND型フラッシュメモリ105からRAM106にデータ転送する方法を説明する。マイクロコントローラ101は、図2のコマンドレジスタ201にロード命令を格納し、ソースアドレスレジスタ202に転送元のNAND型フラッシュメモリ105のスタートアドレスを格納し、ディスティネーションアドレスレジスタ203に転送先のRAM106のスタートアドレスを格納し、データサイズレジスタ204に転送データサイズを格納する。
すると、内部コントローラ104は、NAND型フラッシュメモリ105からデータラッチ115を介してRAM106へ実データ(512ワード)をエラー検出訂正回路113に通しながら転送する。そのデータ転送に伴い、上記のソースアドレスレジスタ202及びディスティネーションアドレスレジスタ203はインクリメントされ、データサイズレジスタ204はデクリメントされる。
エラー検出訂正回路113は、その実データを基にエラー検出訂正データ(3ワード)を生成する。内部コントローラ104は、NAND型フラッシュメモリ105の実データエリアから実データの読み出しが終了すると、続いて、NAND型フラッシュメモリ105のスペアデータエリアからスペアデータ(エラー検出訂正データを含む)を読み出す。そして、内部コントローラ104は、その読み出したエラー検出訂正データとエラー検出訂正回路113が生成したエラー検出訂正データとを比較する。両者が一致していれば転送した実データにエラーがないことを示し、一致していなければ転送した実データにエラーが存在することを意味する。
エラーがなければRAM106上の実データを訂正する必要がない。エラーがあるときには、上記の比較結果を基に、エラーがあったデータのRAM106上のアドレスを特定し、エラー検出訂正アドレスレジスタ205に格納する。マイクロコントローラ101は、そのエラーのあったアドレスのデータをRAM106から読み出し、エラー検出訂正アドレスレジスタ205内のアドレスを基に、そのアドレスのデータをビット反転して、再び書き込む。これにより、RAM106上の実データの訂正処理が終了する。
同様にして、データサイズレジスタ204が0になるまで、次のページのデータ転送を続ける。データ転送の終了は、内部コントローラ104の端子INTからマイクロコントローラ101へ割り込み信号として通知される。
内部コントローラ104は、外部バス122への影響なしに、上記のデータ転送を行うことができる。したがって、マイクロコントローラ101がデータ転送を内部コントローラ104に指示した後、データ転送が行われている間、外部バス122及び123がそのデータ転送により占有されることはない。上記のデータ転送中であっても、外部バス123は空いているので、マイクロコントローラ101は、マルチタスク環境(OS)の下で、外部バス123を介してNOR型フラッシュメモリ102に対してアクセスすることができる。
また、マイクロコントローラ101は、上記のデータ転送中であっても、RAM106へのアクセスが可能である。具体的には、マイクロコントローラ101は、NAND型フラッシュメモリ105とRAM106との間のデータ転送中に、サスペンド命令を内部コントローラ104に指示することにより該データ転送を一時停止させることができる。その後、マイクロコントローラ101は、RAMインタフェース形式で、内部コントローラ104を介してRAM106にアクセスすることができる。その後、マイクロコントローラ101は、リジューム命令を内部コントローラ104に指示することにより上記のデータ転送を再開させることができる。この再開は、図2のソースアドレスレジスタ202、ディスティネーションアドレスレジスタ203、及びデータサイズレジスタ204に残されているデータをそのまま使って行うことができる。
図4は、NAND型フラッシュメモリ105からRAM106へデータ転送するタイミングを示すタイミングチャートである。クロック信号CLKは、内部コントローラ104の動作クロックである。リードイネーブル信号XFREは、NAND型フラッシュメモリ105のリードイネーブル信号である。データFDは、NAND型フラッシュメモリ105のデータである。内部ラッチタイミング信号LTTは、1ワードのデータラッチ115(図1)のラッチ信号である。ラッチ出力LT2は、データラッチ115からRAM106への出力である。
データMDは、RAM106のデータである。チップイネーブルXMCE1は、RAM106のチップイネーブル信号である。アドレスMAは、RAM106のアドレス信号であり、アドレスのインクリメントに従い、下位2ビットが「0」、「1」、「2」、「3」を繰り返すことになる。ライトイネーブルXMWEは、RAM106のライトイネーブル信号である。
時刻t1では、リードイネーブルXFREが立下り、データFDがNAND型フラッシュメモリ105から読み出される。
次に、時刻t2では、内部ラッチタイミング信号LTTがハイレベルかつクロックCLKが立ち上がり、データFDがデータラッチ115にラッチされ、ラッチ出力LT2が出力される。ラッチ出力LT2は、データMDとして出力される。
次に、時刻t3では、ライトイネーブルXMWEが立ち上がり、データMDがRAM106へ書き込まれる。以上で第1の1ワードのデータ転送が終了する。
次に、時刻t4では、リードイネーブルXFREが立下り、次のデータFDがNAND型フラッシュメモリ105から読み出される。
次に、時刻t5では、内部ラッチタイミング信号LTTがハイレベルかつクロックCLKが立ち上がり、データFDがデータラッチ115にラッチされ、ラッチ出力LT2がデータMDとして出力される。
次に、時刻t6では、ライトイネーブルXMWEが立ち上がり、データMDがRAM106へ書き込まれる。以上で第2の1ワードのデータ転送が終了する。
同様に、時刻t7〜t9で第3の1ワードのデータ転送が行われ、時刻t10〜t12で第4の1ワードのデータ転送が行われる。
以上のように、NAND型フラッシュメモリ105とRAM106との間でデータ転送を行う際、NAND型フラッシュメモリ105又はRAM106から複数のデータを読み出し終わる前に、該複数のデータをRAM106又はNAND型フラッシュメモリ105へ書き込み始める。
内部コントローラ104は、上記のデータ転送を行うために、1ワードのデータをバッファリングするためのデータラッチ(バッファ)115を有し、データラッチ115を介してデータ転送を行う。
内部コントローラ104は、転送サイクルに転送データ数を乗じた時間に1転送サイクルを加算した時間でデータ転送を行うことができる。この時の転送サイクルは、クロックCLKの2周期に相当する。
図5は、メモリ装置で使用する電源レベルを示す。NAND型フラッシュメモリ105とRAM106は、電気的仕様が異なり、互いに動作可能な入出力電圧レベルの範囲が異なる。NAND型フラッシュメモリ105は、動作可能な入出力電圧レベルが2.7〜3.6Vの範囲である。一方、RAM106は、動作可能な入出力電圧レベルが2.5〜3.1Vの範囲である。
図9の従来技術によるメモリ装置では、2つのメモリ905,906の動作可能な入出力電圧レベルが異なる場合、マイクロコントローラ901が2つのメモリに対応する2電源を基に制御する必要があった。そのため、マイクロコントローラ901を1.8V等の低電源電圧を採用したいとの要求を満たすことができなかった。
本実施形態では、内部コントローラ104は、NAND型フラッシュメモリ105とRAM106の動作可能な入出力電圧レベルの重複範囲である2.7〜3.1Vで2つのメモリ105,106に対してアクセスする。すなわち、内部コントローラ104とNAND型フラッシュメモリ105との間の入出力503の電圧レベルが2.7〜3.1Vであり、内部コントローラ104とRAM106との間の入出力504の電圧レベルも2.7〜3.1Vである。NAND型フラッシュメモリ105の電源端子VCCには2.7〜3.1Vの電圧VCCNが供給され、RAM106の電源端子VCCにも2.7〜3.1Vの電圧VCCFが供給される。
マイクロコントローラ101は、低消費電力を実現するために、例えば1.8Vの低電源電圧を基に1.8Vの入出力電圧レベルで内部コントローラ104に対して入出力を行う。すなわち、マイクロコントローラ101は、電源線501を介して内部コントローラ104の入出力用電源端子VCCqに1.8Vの入出力用電源を供給し、入出力線502を介して内部コントローラ104の入出力端子I/Oに対して1.8Vの入出力電圧レベルで入出力を行う。
内部コントローラ104は、電圧レベル変換回路511を有し、入出力503,504を制御するために電源端子VDDに2.7〜3.1Vの電圧VDDを入力する。電圧レベル変換回路511は、2.7〜3.1Vの電源端子VDDを基に、2つのメモリ105,106に対する入出力503,504を制御し、1.8Vの入出力用電源端子VCCqを基にマイクロコントローラ101に対する入出力502を制御する。すなわち、電圧レベル変換回路511は、マイクロコントローラ101に対する入出力電圧レベル(1.8V)と2つのメモリ105,106に対する入出力電圧レベル(2.7〜3.1V)との間で電圧レベル変換を行う。
以上のように、電気的仕様が異なる2種類のメモリ105,106に関係なく、マイクロコントローラ101の入出力電圧レベルを決めることができるので、マイクロコントローラ101の電源電圧を単一の低電圧(1.8V)にすることができる。
上記では、NAND型フラッシュメモリ105とRAM106の動作可能な入出力電圧レベルが重複する場合を例に説明した。次に、2つのメモリ105,106の動作可能な入出力電圧レベルが重複せずに異なる場合を説明する。
図6は、2種類のメモリ105,106が異なる入出力電圧レベルの範囲を有する場合を示す。NAND型フラッシュメモリ105とRAM106は、電気的仕様が異なり、互いに動作可能な入出力電圧レベルの範囲が重複せずに異なる。例えば、NAND型フラッシュメモリ105は、動作可能な入出力電圧レベルが1.65〜2.1Vの範囲である。一方、RAM106は、動作可能な入出力電圧レベルが2.7〜3.1Vの範囲である。
マイクロコントローラ101は、図5の場合と同様に、電源線601を介して内部コントローラ104の入出力用電源端子VCCqに1.8Vの入出力用電源を供給し、入出力線602を介して内部コントローラ104の入出力端子I/Oに対して1.8Vの入出力電圧レベルで入出力を行う。
内部コントローラ104は、電圧レベル変換回路611を有し、入出力603を制御するための電源端子VDD1に1.65〜2.1Vの電圧VDD1を入力し、入出力604を制御するための電源端子VDD2に2.7〜3.1Vの電圧VDD2を入力する。電圧レベル変換回路611は、1.65〜2.1Vの電源端子VDD1を基にNAND型フラッシュメモリ105に対する入出力603を制御し、2.7〜3.1Vの電源端子VDD2を基にRAM106に対する入出力604を制御し、1.8Vの入出力用電源端子VCCqを基にマイクロコントローラ101に対する入出力602を制御する。すなわち、電圧レベル変換回路611は、入出力602、603及び604の間で電圧レベル変換を行う。
内部コントローラ104は、NAND型フラッシュメモリ105とRAM106に対して重複せずに異なる入出力電圧レベルでアクセスすることができる。すなわち、内部コントローラ104とNAND型フラッシュメモリ105との間の入出力603の電圧レベルが1.65〜2.1Vであり、内部コントローラ104とRAM106との間の入出力604の電圧レベルは2.7〜3.1Vである。NAND型フラッシュメモリ105の電源端子VCCには1.65〜2.1Vの電圧VCCNが供給され、RAM106の電源端子VCCには2.7〜3.1Vの電圧VCCFが供給される。
以上のように、NAND型フラッシュメモリ105とRAM106の動作可能な入出力電圧レベルが重複せずに異なる場合には、内部コントローラ104に設けられた2つの電源端子VDD1及びVDD2を用いることにより、2つのメモリ105,106に対して重複せずに異なる入出力電圧レベルでアクセスすることができる。
なお、2つのメモリ105,106の動作可能な入出力電圧レベルが重複する場合にも、2つのメモリ105,106に対して重複せずに異なる入出力電圧レベルでアクセスしてもよい。
図12は、図5の電圧レベル変換回路511の構成例を示す回路図である。まず、電圧レベル変換回路511の構成を説明する。入力端子I/Oは、インバータ1212に接続される。インバータ1212は、pチャネルMOSトランジスタ1201及びnチャネルMOSトランジスタ1202を有する。pチャネルMOSトランジスタ1201は、ゲートが入力端子I/Oに接続され、ソースが入出力用電源端子VCCqに接続される。nチャネルMOSトランジスタ1202は、ゲートが入力端子I/Oに接続され、ソースがグランド端子に接続され、ドレインがpチャネルMOSトランジスタ1201のドレインに接続される。nチャネルMOSトランジスタ1203は、ゲートが入出力用電源端子VCCqに接続され、ドレインがトランジスタ1201のドレイン及びトランジスタ1202のドレインの相互接続点に接続され、ソースがインバータ1213に接続される。
インバータ1213は、pチャネルMOSトランジスタ1204及びnチャネルMOSトランジスタ1205を有する。pチャネルMOSトランジスタ1204は、ゲートがnチャネルMOSトランジスタ1203のソースに接続され、ソースが電源端子VDDに接続され、ドレインが出力端子1214に接続される。nチャネルMOSトランジスタ1205は、ゲートがnチャネルMOSトランジスタ1203のソースに接続され、ソースがグランド端子に接続され、ドレインが出力端子1214に接続される。pチャネルMOSトランジスタ1206は、ゲートが出力端子1214に接続され、ソースが電源端子VDDに接続され、ドレインがnチャネルMOSトランジスタ1203のソースに接続される。出力端子1214は、図5の信号線503を介してNAND型フラッシュメモリ105に接続され、又は信号線504を介してRAM106に接続される。
次に、電圧レベル変換回路511の動作を説明する。例えば、入出力用電源電圧端子VCCqには1.8Vが供給され、電源電圧端子VDDには3Vが供給される。入力端子I/Oには1.8Vレベル(ハイレベルが1.8V、ローレベルが0V)の入力信号が入力され、出力端子1214からは3Vレベル(ハイレベルが3V、ローレベルが0V)の出力信号が出力される。すなわち、電圧レベル変換回路511は、1.8Vレベルの入力信号を3Vレベルの出力信号に変換する。
入力端子I/Oに入力された例えば1.8Vレベルの入力信号は、インバータ1212に入力される。インバータ1212は、入力信号を論理反転し、1.8Vレベルの信号を出力する。インバータ1212の出力は、nチャネルMOSトランジスタ1203を介してインバータ1213に入力される。インバータ1213は、入力信号を論理反転して出力する。例えば、インバータ1213は入力信号がハイレベル(1.8V)であればローレベルを出力する。すると、pチャネルMOSトランジスタ1206はハイレベル(3V)を出力する。そのハイレベル(3V)の出力がインバータ1213の入力にフィードバックされる。その結果、インバータ1213の出力はローレベルに確定する。この時、nチャネルMOSトランジスタ1203は、ゲートの電位を1.8V(VCCp)としてオフさせるので、インバータ1212の入出力用電源端子(VCCq)に電流が流れ込まないようにしている。逆に、インバータ1212の出力信号がローレベルであれば、インバータ1213はハイレベル(3V)を出力端子1214に出力する。このようにして、異なるレベルの電圧変換をすることができる。これは、図6の電圧レベル変換回路611の場合も同様である。
図13は、NAND型フラッシュメモリ105の試験方法を説明するための図である。図13の構成は、図3の構成に対して内部コントローラ104に試験モード用端子TMODEを追加した点が異なる。メモリ装置103の試験を行う際、図3のように、NAND型フラッシュメモリ105が外部に端子(ピン)を持たない場合、NAND型フラッシュメモリ105の単体の試験は信頼性に欠けることがある。
図13のメモリ装置103では、試験モード用端子TMODEに2ビットの試験モード信号を入力することができる。メモリ装置103の外部端子である試験モード用端子TMODEをアサートにすることで、メモリ装置103の内部に閉じられているNAND型フラッシュメモリ105の端子を内部コントローラ104の外部端子(すなわちメモリ装置103の外部端子)にアサインすることができる。これにより、その外部端子を用いて、NAND型フラッシュメモリ105の単体の試験を一般的なNAND型フラッシュメモリと同等に行うことができる。
内部コントローラ104は、複数の内部端子FD等と、外部に接続可能な複数の外部端子A等と、外部から試験モード信号(アサイン信号)を入力するための試験モード(アサイン)用端子TMODEとを有する。内部コントローラ104の複数の内部端子FD等は、NAND型フラッシュメモリ105の複数の端子IO等に接続される。内部コントローラ104は、試験モード用端子TMODEに試験モード信号が入力されると、内部端子FD等と外部端子A等との間のアサインを行う。すなわち、複数の内部端子FD等と複数の外部端子A等とがそれぞれ対応付けされて接続される。その外部端子がNAND型フラッシュメモリ105の端子と同等になり、NAND型フラッシュメモリ105の端子に直接接続する場合と同様の試験を行うことができる。
次に、図13の電源レベルについて説明する。電源レベルは、図5と同様である。内部コントローラ104は、入出力用電源電圧端子VCCqに1.65〜2.1Vの電源電圧を入力し、電源電圧端子VDDに2.7〜3.1Vの電源電圧を入力する。NAND型フラッシュメモリ105は、電源電圧端子VCCに2.7〜3.1Vの電源電圧を入力する。RAM106も、電源電圧端子VCCに2.7〜3.1Vの電源電圧を入力する。
図7は、NAND型フラッシュメモリ105とRAM106との間の他のデータ転送方法を示す。NAND型フラッシュメモリ701は、複数のページ702、703、704等を有する。各ページ702〜704は、実データエリア及びスペアデータエリアを有する。実データエリアは実データを記憶するためのエリアであり、スペアデータエリアはスペアデータ(制御情報、管理方法及びエラー検出訂正データを含む)を記憶するためのエリアである。1ページは、実データエリアが例えば512ワード、スペアデータエリアが例えば16ワードである。スペアデータエリアは、先の8ワードが制御情報及び管理情報を記憶するためのエリアであり、後の8ワードがエラー検出訂正データを記憶するためのエリアである。本実施形態では、RAM711にも、実データエリア712及びスペアデータエリア713を設ける。
まず、NAND型フラッシュメモリ701からRAM711へデータ転送する場合を説明する。NAND型フラッシュメモリ701には実データ及びスペアデータが記憶されている。マイクロコントローラ721は、NAND型フラッシュメモリ701から実データ731及びスペアデータ732を分解して読み出す。実データ731はRAM711の実データエリア712に実データ712a,712b,712cとして書き込まれ、スペアデータ732はRAM711のスペアデータエリア713にスペアデータ713a,713b,713cとして書き込まれる。実データ712a,712b,712cとスペアデータ713a,713b,713cとは、それぞれページ毎に1対1で対応している。
なお、スペアデータ713a〜713cは、制御情報及び管理情報の8ワードのデータを含み、エラー検出訂正データを必ずしも含まなくてよい。エラー検出訂正データは、エラー検出訂正回路113(図1)が生成するので、RAM711上に記憶させる必要はない。
スペアデータには、書き込み回数や消去回数等の情報を含むので、実データ712a〜712cを再びNAND型フラッシュメモリ701に書き込むときには、それに応じてスペアデータを変更する必要がある。また、RAM711上の実データ712a〜712cを修正する場合には、それに応じてスペアデータ713a〜713cも修正する必要がある。マイクロコントローラ721は、RAM711上でスペアデータ713a〜713cを変更する。
次に、RAM711からNAND型フラッシュメモリ701へデータ転送する場合を説明する。RAM711上の必要に応じて変更された実データ712a〜712c及びスペアデータ713a〜713cは、それぞれページ毎に1対1に対応させて結合し、NAND型フラッシュメモリ701に書き込まれる。
図11の従来技術によれば、マイクロコントローラ1121がRAM1111上のデータを修正し、NAND型フラッシュメモリ1101に書き込むときには、一度、NAND型フラッシュメモリ1101からスペアデータを読み出し、そのスペアデータを修正する。そして、マイクロコントローラ1121は、その修正されたスペアデータ及び修正されたRAM1111上の実データをNAND型フラッシュメモリ1101に書き込む。このように、NAND型フラッシュメモリ1101から一度スペアデータを読み出さなければならないため、処理ステップが多くなり、処理速度が遅いという問題がある。
本実施形態によれば、NAND型フラッシュメモリ701から改めてスペアデータを読み出す必要がないので、処理ステップが減り、処理速度が速くなる利点がある。
RAM711の実データエリア712及びスペアデータエリア713は、それぞれ連続アドレスエリアとして設けられている。一方、NAND型フラッシュメモリ701の実データエリア及びスペアデータエリアは、それぞれ不連続アドレスエリアとして設けられている。
次に、図2のスペアデータレジスタ206について説明する。RAM711上の複数のスペアデータ713a〜713cは、同じ内容のものが所定の数だけ連続することがある。例えば、スペアデータが実データの名称を示すものとして使用される場合には、複数ページが同じスペアデータになることがある。その場合には、その同じ内容のスペアデータを一のスペアデータとしてスペアデータレジスタ206に記憶させ、連続データ数をデータサイズレジスタ204に記憶させ、ソースアドレス及びディスティネーションアドレスをそれぞれソースアドレスレジスタ202及びディスティネーションアドレスレジスタ203に記憶させる。さらに、スペアセットレジスタ207にスペアデータレジスタ206を使用する旨の情報を記憶させる。
これにより、内部コントローラ104は、RAM711の実データエリア712内の実データ712a〜712c及びスペアデータレジスタ206内のスペアデータを結合し、それぞれNAND型フラッシュメモリ701内の実データエリア及びスペアデータエリアに書き込む。
RAM上の同じ内容のスペアデータ713a〜713cを変更するには、すべてのスペアデータ713a〜713cを変更する必要がある。それに対し、同じ内容のスペアデータをスペアデータレジスタ206に記憶させておけば、スペアデータレジスタ206内の一のスペアデータを修正するだけで済むので、処理が簡単になり、処理速度が速くなる。
スペアデータレジスタ206は、一又は複数のスペアデータを記憶するためのレジスタである。内部コントローラ104は、NAND型フラッシュメモリ701に書き込む複数のスペアデータが同じ内容であるときには、スペアデータレジスタ206内の一のスペアデータを用いてNAND型フラッシュメモリ701内に同じ内容の複数のスペアデータを書き込むことができる。
図2のスペアセットレジスタ207は、スペアデータレジスタ206内のスペアデータ又はRAM711内のスペアデータ713a〜713cのいずれかを選択してNAND型フラッシュメモリ701に書き込むためのレジスタである。
図8は、上記のRAM711からNAND型フラッシュメモリ701へのセーブ命令の処理を示すフローチャートである。
ステップS801では、レジスタにパラメータをセットする。例えば、NAND型フラッシュメモリ及びRAMのページアドレスをセットし、ページ数をセットする。ステップS802では、コマンドコードをコマンドレジスタにセットする。ステップS803では、割り込み信号INTをアサート、ビジー信号BSYをセット、エラー信号ERR及びエンド信号ENDをクリアする。
ステップS804では、NAND型フラッシュメモリをアクティブ状態にし、NAND型フラッシュメモリにアドレス情報を送る。ステップS805では、RAMからNAND型フラッシュメモリへのデータ転送を指示する。
ステップS806では、スペアセットレジスタが0か否かをチェックする。0であるときにはステップS807へ進み、0でないときにはステップS808へ進む。
ステップS807では、RAMの実データエリア上の512ワードの実データとRAMのスペアデータエリア上の8ワードのスペアデータをセットし、ステップS809へ進む。
ステップS808では、RAMの実データエリア上の512ワードの実データとスペアデータレジスタ上の8ワードのスペアデータをセットし、ステップS809へ進む。
ステップS809では、NAND型フラッシュメモリがレディ状態になったらNAND型フラッシュメモリのステータスを読み出す。ステップS810では、ステータスレジスタのエラーフラグERR及びフェールフラグFAILをセットする。ステップS811では、NAND型フラッシュメモリを非アクティブ状態にする。ステップS812では、エラーフラグERRが0か否かをチェックする。0であればステップS813へ進み、0でなければステップS815へ進む。
ステップS813では、ページ数レジスタをデクリメントし、RAM及びNAND型フラッシュメモリのページアドレスをインクリメントする。ステップS814では、ページ数が0であるか否かをチェックする。0であればステップS815へ進み、0でなければステップS804へ戻り、次のページのセーブ処理を繰り返す。
ステップS815では、ビジー信号BSYをクリアし、エンド信号ENDをセットし、割り込み信号INTをアサートにする。マイクロコントローラがステータスレジスタを読むと、割り込み信号INTはクリアされる。以上で、セーブ処理が終了する。
以上のように、スペアセットレジスタ207(図2)が0であるときには、ステップS807で、RAM上の512ワードの実データとRAM上の8ワードのスペアデータをNAND型フラッシュメモリに書き込む。一方、スペアセットレジスタ207が1であるときには、ステップS808で、RAM上の512ワードの実データとスペアデータレジスタ上の8ワードのスペアデータをNAND型フラッシュメモリに書き込む。スペアセットレジスタ207へのセットにより、いずれかのセーブ方法を選択することができる。
本実施形態では、NAND型フラッシュメモリ105とRAM106との間でデータ転送を行っている間にも、NOR型フラッシュメモリ102に対するアクセスが可能になる。
また、NAND型フラッシュメモリ105とRAM106との間で高速にデータ転送を行うことができる。
また、NAND型フラッシュメモリ105とRAM106との間のデータ転送を制御する内部コントローラ104内のデータラッチ115のバッファ容量を小さくすることができる。
また、NAND型フラッシュメモリ105とRAM106の電気的仕様にかかわらずマイクロコントローラ101の電気的仕様を決めることができる。
また、図7のRAM711内にスペアデータエリア713を設けることにより、NAND型フラッシュメモリ701内にスペアデータを高速に書き込むことができる。
本実施形態によるメモリ装置は、画像情報や音楽情報等のストリームデータを実データとして扱う携帯電話等に適用することができ、その他、ストリームデータをNAND型フラッシュメモリに記憶させる用途に適している。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化のほんの一例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、またはその主要な特徴から逸脱することなく、様々な形で実施することができる。
本発明の実施形態は、以下のように種々の形態で適用することができる。
(付記1) データを記憶可能な不揮発性メモリと、ランダムアクセスが可能な揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリの間でデータ転送を行うことができ、該データ転送が行われていないときには外部バスからの指示に応じて外部から直接前記揮発性メモリへアクセスしているような擬似的アクセスを可能にするコントローラとを有するメモリ装置。
(付記2) 前記コントローラは、転送の対象となるデータのソースアドレス、ディスティネーションアドレス及びサイズを記憶可能なレジスタを有する付記1記載のメモリ装置。
(付記3) 前記コントローラは、外部からの指示に応じて、前記揮発性メモリ及び前記不揮発性メモリの間のデータ転送を前記外部バスへの影響なしに行う付記1記載のメモリ装置。
(付記4) 前記コントローラは、前記データ転送の終了を割り込みで外部バスへ通知する付記3記載のメモリ装置。
(付記5) 前記コントローラは、前記不揮発性メモリ及び前記揮発性メモリの間のデータ転送中に、サスペンド命令により該データ転送を一時停止し、その後に外部からの指示に応じて前記揮発性メモリへアクセスを行い、その後のリジューム命令により前記データ転送を再開する付記1記載のメモリ装置。
(付記6) 前記不揮発性メモリ、前記揮発性メモリ及び前記コントローラが1つのパッケージに内蔵されている付記1記載のメモリ装置。
(付記7) データを記憶可能な不揮発性メモリと、ランダムアクセスが可能な揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリの間でデータ転送を行う際、前記不揮発性メモリ又は前記揮発性メモリから複数のデータを読み出し終わる前に、該複数のデータを前記揮発性メモリ又は前記不揮発性メモリへ書き込み始めるコントローラとを有するメモリ装置。
(付記8) 前記コントローラは、前記不揮発性メモリから前記揮発性メモリへデータ転送を行う際、前記不揮発性メモリから複数のデータを読み出し終わる前に、該複数のデータを前記揮発性メモリへ書き込み始める付記7記載のメモリ装置。
(付記9) 前記コントローラは、前記揮発性メモリから前記不揮発性メモリへデータ転送を行う際、前記揮発性メモリから複数のデータを読み出し終わる前に、該複数のデータを前記不揮発性メモリへ書き込み始める付記7記載のメモリ装置。
(付記10) 前記コントローラは、前記データ転送を行う際にエラー検出及び/又は訂正処理を行う付記7記載のメモリ装置。
(付記11) 前記コントローラは、前記不揮発性メモリから前記揮発性メモリへデータ転送を行う際、前記不揮発性メモリから実データ及びエラー検出訂正データを読み出し、該エラー検出訂正データを基に該実データのエラー検出及び/又は訂正処理を行い、実データを前記揮発性メモリに書き込む付記10記載のメモリ装置。
(付記12) 前記コントローラは、前記揮発性メモリから前記不揮発性メモリへデータ転送を行う際、前記揮発性メモリから実データを読み出し、該実データを基にエラー検出訂正データを生成し、該実データ及び該エラー検出訂正データを前記不揮発性メモリに書き込む付記10記載のメモリ装置。
(付記13) 前記コントローラは、エラー検出訂正情報を記憶するためのエラー検出訂正レジスタを有する付記10記載のメモリ装置。
(付記14) 前記エラー検出訂正レジスタは、エラーが検出されたデータのアドレスを記憶する付記13記載のメモリ装置。
(付記15) 前記コントローラは、データをバッファリングするためのバッファを有し、該バッファを介して前記データ転送を行う付記7記載のメモリ装置。
(付記16) 前記コントローラは、転送サイクルに転送データ数を乗じた時間に1転送サイクルを加算した時間でデータ転送を行う付記15記載のメモリ装置。
(付記17) 前記コントローラは、前記不揮発性メモリから前記揮発性メモリへデータ転送を行う際、前記不揮発性メモリから実データ及びエラー検出訂正データを読み出し、該エラー検出訂正データを基に該実データのエラー検出を行い、該実データを前記揮発性メモリに書き込み、前記揮発性メモリ上で該実データのエラー訂正処理を行う付記16記載のメモリ装置。
(付記18) 電気的仕様が異なる複数のメモリと、前記複数のメモリに接続されるメモリバスと外部に接続される外部バスとを含み、前記外部バスの入出力電圧レベルが単一であり、かつ前記メモリバスと前記外部バスとの入出力電圧レベルの範囲が異なるコントローラとを有するメモリ装置。
(付記19) 前記複数のメモリは、互いに動作可能な入出力電圧レベルの範囲が異なる付記18記載のメモリ装置。
(付記20) 前記コントローラは、前記複数のメモリの動作可能な入出力電圧レベルの重複範囲で前記複数のメモリに対してアクセスする付記19記載のメモリ装置。
(付記21) 前記コントローラは、前記重複範囲の入出力電圧レベルの電源電圧を入力する電源端子を含み、該電源端子の電圧を基に前記複数のメモリの入出力電圧レベルを制御する付記20記載のメモリ装置。
(付記22) 前記コントローラは、前記複数のメモリに対して互いに重複せずに異なる入出力電圧レベルでアクセスする付記19記載のメモリ装置。
(付記23) 前記コントローラは、前記重複せずに異なる入出力電圧レベルの電源電圧を入力する2つの電源端子を含み、該2つの電源端子の電圧を基に前記複数のメモリの入出力電圧レベルを制御する付記22記載のメモリ装置。
(付記24) 前記複数のメモリは、互いに動作可能な入出力電圧レベルの範囲が重複しない付記22記載のメモリ装置。
(付記25) 前記複数のメモリは、不揮発性メモリ及び揮発性メモリである付記18記載のメモリ装置。
(付記26) 複数の実データを記憶するための実データエリアと複数のスペアデータを記憶するためのスペアデータエリアを含む不揮発性メモリと、複数の実データを記憶するための実データエリアと複数のスペアデータを記憶するためのスペアデータエリアを含む揮発性メモリと、前記不揮発性メモリ及び前記揮発性メモリの間のデータ転送を行うコントローラとを有するメモリ装置。
(付記27) 前記スペアデータは、制御情報又は管理情報である付記26記載のメモリ装置。
(付記28) 前記複数の実データと前記複数のスペアデータは、それぞれ1対1で対応している付記26記載のメモリ装置。
(付記29) 前記揮発性メモリ内の実データエリア及びスペアデータエリアは、それぞれ連続アドレスエリアとして設けられる付記26記載のメモリ装置。
(付記30) 前記不揮発性メモリ内の実データエリア及びスペアデータエリアは、それぞれ不連続アドレスエリアとして設けられる付記29記載のメモリ装置。
(付記31) 前記コントローラは、前記不揮発性メモリから前記揮発性メモリにデータ転送を行う際、前記不揮発性メモリ内の実データエリア及びスペアデータエリアから対応して読み出した実データ及びスペアデータを分解し、それぞれ前記揮発性メモリ内の実データエリア及びスペアデータエリアに書き込む付記28記載のメモリ装置。
(付記32) 前記コントローラは、前記揮発性メモリから前記不揮発性メモリへデータ転送を行う際、前記揮発性メモリ内の実データエリア及びスペアデータエリアから対応して読み出した実データ及びスペアデータを結合し、それぞれ前記不揮発性メモリ内の実データエリア及びスペアデータエリアに書き込む第1の書き込みコントローラを含む付記28記載のメモリ装置。
(付記33) 前記コントローラは、一又は複数のスペアデータを記憶するためのスペアデータレジスタを含み、前記揮発性メモリの実データエリア内の実データ及び前記スペアデータレジスタ内のスペアデータを結合し、それぞれ前記不揮発性メモリ内の実データエリア及びスペアデータエリアに書き込む付記28記載のメモリ装置。
(付記34) 前記スペアデータレジスタは、一のスペアデータを記憶するためのレジスタである付記33記載のメモリ装置。
(付記35) 前記コントローラは、前記不揮発性メモリに書き込む複数のスペアデータが同じ内容であるときには、前記スペアデータレジスタ内の一のスペアデータを用いて前記不揮発性メモリ内の同じ内容の複数のスペアデータを書き込む付記33記載のメモリ装置。
(付記36) 前記コントローラは、一又は複数のスペアデータを記憶するためのスペアデータレジスタを含み、前記揮発性メモリの実データエリア内の実データ及び前記スペアデータレジスタ内のスペアデータを結合し、それぞれ前記不揮発性メモリ内の実データエリア及びスペアデータエリアに書き込む第2の書き込みコントローラを含む付記32記載のメモリ装置。
(付記37) 前記コントローラは、前記第1及び第2の書き込みコントローラのいずれにより書き込みを行うかを選択することができる付記36記載のメモリ装置。
(付記38) 前記不揮発性メモリは複数の端子を有し、前記コントローラは、前記不揮発性メモリの複数の端子に接続される複数の内部端子と、外部に接続可能な複数の外部端子と、外部からアサイン信号を入力するためのアサイン用端子とを有し、該アサイン用端子にアサイン信号が入力されると、前記内部端子と前記外部端子との間のアサインを行う付記1記載のメモリ装置。