(57)【要約】【課題】１セクタ単位のユーザデータと、その付加データが書き込まれる領域をカラムアドレスが連続する領域に割り当てフラッシュメモリにデータを書き込む際、ブロックステータス領域にユーザデータや付加データが書き込まれてしまうことを回避する。【解決手段】ホストシステム側から供給される１セクタ単位のユーザデータを保持する工程と、前記保持された前記ユーザデータを先頭データから順番に前記フラッシュメモリに転送する工程と、前記フラッシュメモリに転送された前記ユーザデータに対応する付加データを前記フラッシュメモリに転送する工程と、予め設定されたダミーデータを前記フラッシュメモリに転送する工程とを有し、前記ダミーデータを前記フラッシュメモリに転送する工程は、前記フラッシュメモリに転送されるデータの書き込み先がブロックステータスの記憶領域に対応するときにだけ実行される。【選択図】図６
2008234514.tif 000002
【特許請求の範囲】
【請求項１】
ホストシステムからの要求に応じて、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
前記ホストシステム側から供給される１セクタ単位のユーザデータを保持するデータ保持手段と、
前記データ保持手段に保持されている前記ユーザデータを先頭データから順番に前記フラッシュメモリに転送するユーザデータ転送手段と、
前記ユーザデータ転送手段により前記フラッシュメモリに転送される前記ユーザデータに対応する誤り訂正符号を含む付加データを前記フラッシュメモリに転送する付加データ転送手段と、
予め設定されたダミーデータを前記フラッシュメモリに転送するダミーデータ転送手段と、
前記ユーザデータ転送手段、前記付加データ転送手段及び前記ダミーデータ転送手段を択一的に動作させる制御手段とを備え、
前記制御手段は、前記フラッシュメモリに転送されるデータの書き込み先がブロックステータスの記憶領域に対応するときにだけ前記ダミーデータ転送手段を動作させ、
前記ユーザデータと該ユーザデータに対応する前記付加データは、前記ページ内の連続した領域に書き込まれることを特徴とするメモリコントローラ。
【請求項２】
一定の周期でカウントアップされるカウンタ手段を備え、
前記カウンタ手段は、前記ダミーデータが前記フラッシュメモリに転送される期間に係わるときに１周期分のカウントアップを停止し、
前記ユーザデータ転送手段は、前記カウンタ手段から出力されるカウント値に基づいて、前記ユーザデータの先頭データから末尾データまでのデータの中から前記フラッシュメモリに転送するデータを決定することを特徴とする請求項１に記載のメモリコントローラ。
【請求項３】
前記ダミーデータの論理値が、前記フラッシュメモリの消去状態の論理値に一致することを特徴とする請求項１又は２に記載のメモリコントローラ。
【請求項４】
複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリと、請求項１乃至３のいずれか１項に記載のメモリコントローラを備えることを特徴とするフラッシュメモリシステム。
【請求項５】
ホストシステムからの要求に応じて、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
前記ホストシステム側から供給される１セクタ単位のユーザデータを保持するデータ保持工程と、
前記データ保持工程で保持される前記ユーザデータを先頭データから順番に前記フラッシュメモリに転送するユーザデータ転送工程と、
前記ユーザデータ転送工程により前記フラッシュメモリに転送される前記ユーザデータに対応する誤り訂正符号を含む付加データを前記フラッシュメモリに転送する付加データ転送工程と、
予め設定されたダミーデータを前記フラッシュメモリに転送するダミーデータ転送工程とを有し、
前記ユーザデータ転送工程、前記付加データ転送工程及び前記ダミーデータ転送工程は択一的に実行され、
前記ダミーデータ転送工程は、前記フラッシュメモリに転送されるデータの書き込み先がブロックステータスの記憶領域に対応するときにだけ実行され、
前記ユーザデータと該ユーザデータに対応する前記付加データは、前記ページ内の連続した領域に書き込まれることを特徴とするフラッシュメモリの制御方法。
【請求項６】
前記ユーザデータ転送工程、前記付加データ転送工程及び前記ダミーデータ転送工程が、一定の周期でカウントアップされるカウンタのカウント値に基づいて、択一的に実行されることを特徴とする請求項５に記載のフラッシュメモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
【背景技術】
【０００２】
メモリカードやシリコンディスクなどの記憶媒体である半導体メモリとして、フラッシュメモリが多く用いられている。フラッシュメモリにはＮＯＲ型フラッシュメモリとＮＡＮＤ型フラッシュメモリがあり、特にＮＡＮＤ型フラッシュメモリは集積度に優れ、また書き込みに必要な動作電流が少ないなどの特長により大容量のメモリとして急成長をとげている。
【０００３】
ＮＡＮＤ型フラッシュメモリでは、これらのメモリセルを消去状態から書き込み状態に変化させる場合には、メモリセル単位で行うことができるが、メモリセルを書き込み状態から消去状態に変化させる場合には、メモリセル単位で行うことができず、所定数のメモリセルからなるブロック単位で一括消去することが行われる（ブロック消去）。
【０００４】
また、所定数のメモリセルからなるブロック（物理ブロック）は、書き込み及び読み出しのアクセス処理単位である複数個のページで構成されている。例えば、1個の物理ブロックが３２個のページで構成され、各ページが１セクタ（＝５１２バイト）のユーザ領域と１６バイトの冗長領域とによって構成されているフラッシュメモリや、1個の物理ブロックが６４個のページで構成され、１個のページが４セクタ（＝２０４８バイト）のユーザ領域と６４バイトの冗長領域とによって構成されているフラッシュメモリがある。フラッシュメモリにデータを書き込むときは、フラッシュメモリ内のレジスタを介してメモリセルにデータが書き込まれ、フラッシュメモリからデータを読み出すときは、フラッシュメモリ内のレジスタを介してメモリセルからデータが読み出される。
【０００５】
従来、１個のページが複数セクタのユーザ領域で構成されているフラッシュメモリでは、例えば、図１１に示したように各領域が割り当てられていた。図１１において、２５〜２８はユーザ領域を５１２バイト毎に分割した第１〜第４セクタ領域を示し、これらの領域は５１２バイト単位のユーザデータを記憶するための領域として使用されていた。３１〜３４は第１〜第４セクタ領域に対応した第１〜第４付加データ領域（１４バイトの領域）を示し、これらの領域はエラー・コレクション・コード（ＥＣＣ）などの付加データを記憶するための領域として使用されていた。また、３０は７バイトのヘッダ領域（ＨＤ）を示し、この領域は論理アドレス情報（論理ブロックと物理ブロックの対応関係を示す情報）などを記憶するための領域として使用されていた。また、３５は１バイトのブロックステータス領域（ＢＳ）を示し、この領域は当該物理ブロックが不良ブロックであるか否かを示すブロックステータスを記憶するための領域として使用されていた。
【０００６】
５１２バイト単位のユーザデータの書き込みでは、ユーザデータの書き込みと、このユーザデータに対応するエラー・コレクション・コード（ＥＣＣ）の書き込みが連続して行われ、読み出しでは、ユーザデータの読み出しと、このユーザデータに対応するエラー・コレクション・コード（ＥＣＣ）の読み出しが連続して行われる。従って、図１１に示したように各領域が割り当てられていた場合、第１セクタ領域２５→第１付加データ領域３１→第２セクタ領域２６→第２付加データ領域３２→第３セクタ領域２７→第３付加データ領域３３→第４セクタ領域２８→第４付加データ領域３４の順番で書き込み又は読み出しが行われる。この書き込み又は読み出しでは、書き込むデータ又は読み出すデータがユーザデータからエラー・コレクション・コード（ＥＣＣ）に切り替わるとき又はエラー・コレクション・コード（ＥＣＣ）からユーザデータに切り替わるときにカラムアドレスが不連続になるため、書き込み又は読み出しの処理が複雑になるという問題があった。
【０００７】
この問題を解決する技術が下記特許文献１に提案されている。特許文献１の技術では、１個のページが複数セクタのユーザ領域で構成されているフラッシュメモリにおいて、５１２バイト単位のユーザデータとその付加データをカラムアドレスが連続する領域に割り当て (特許文献１の図６参照)、上記問題を解決している。
【特許文献１】特開２００５−２９２９２５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１に示した従来技術では、２０４８のカラムアドレスにブロックステータス領域（ＢＳ）３５が割り当てられることが考慮されていなかった。一般的なフラッシュメモリでは、カラムアドレスが２０４８の領域は、初期不良ブロックを識別するためのブロックステータスが書き込まれる領域に割り当てられている。従って、カラムアドレスが２０４８の領域をブロックステータス領域（ＢＳ）３５に割り当てれば、各物理ブロックのブロックステータス領域（ＢＳ）３５からブロックステータスを読み出すことにより、その物理ブロックが初期不良ブロック、後発不良ブロック及び良品ブロックのいずれに該当するかを判断することができる。尚、初期不良ブロックのブロックステータスについては００ｈ（１６進数表示）が出荷前に書き込まれており、このブロックステータスは消去することができない。又、良品ブロックのブロックステータスは消去状態のＦＦｈ（１６進数表示）であり、後発不良ブロックのブロックステータスについては、０Ｆｈ（１６進数表示）やＦ０ｈ（１６進数表示）などが書き込まれる。特許文献１では、このようなことが考慮されていないため、良品ブロックのブロックステータス領域（ＢＳ）３５にユーザデータなどが書き込まれてしまう。その結果、各物理ブロックのブロックステータス領域（ＢＳ）３５から読み出したブロックステータスに基づいて、その物理ブロックが初期不良ブロック、後発不良ブロック及び良品ブロックのいずれに該当するかを判断することができなくなってしまう。
【０００９】
本発明の目的は、５１２バイト単位のユーザデータと、そのエラー・コレクション・コード（ＥＣＣ）を含む付加データが書き込まれる領域をカラムアドレスが連続する領域に割り当てたときに、ブロックステータス領域にユーザデータや付加データが書き込まれてしまうことを回避することができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明のメモリコントローラは、ホストシステムからの要求に応じて、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、前記ホストシステム側から供給される１セクタ単位のユーザデータを保持するデータ保持手段と、前記データ保持手段に保持されている前記ユーザデータを先頭データから順番に前記フラッシュメモリに転送するユーザデータ転送手段と、前記ユーザデータ転送手段により前記フラッシュメモリに転送される前記ユーザデータに対応する誤り訂正符号を含む付加データを前記フラッシュメモリに転送する付加データ転送手段と、予め設定されたダミーデータを前記フラッシュメモリに転送するダミーデータ転送手段と、前記ユーザデータ転送手段、前記付加データ転送手段及び前記ダミーデータ転送手段を択一的に動作させる制御手段とを備え、前記制御手段は、前記フラッシュメモリに転送されるデータの書き込み先がブロックステータスの記憶領域に対応するときにだけ前記ダミーデータ転送手段を動作させ、前記ユーザデータと該ユーザデータに対応する前記付加データは、前記ページ内の連続した領域に書き込まれることを特徴とする。
本発明のメモリコントローラは、更に、一定の周期でカウントアップされるカウンタ手段を備えることが好ましく、前記カウンタ手段は、前記ダミーデータが前記フラッシュメモリに転送される期間に係わるときに１周期分のカウントアップを停止し、前記ユーザデータ転送手段は、前記カウンタ手段から出力されるカウント値に基づいて、前記ユーザデータの先頭データから末尾データまでのデータの中から前記フラッシュメモリに転送するデータを決定することが好ましい。尚、前記カウンタ手段については、一定の周期でカウントダウンされる構成であっても実質的に同様の効果を得ることができる。
又、前記ダミーデータの論理値が、前記フラッシュメモリの消去状態の論理値に一致することが好ましい。
本発明のフラッシュメモリシステムは、上記メモリコントローラと、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリを備えることを特徴とする。
本発明のフラッシュメモリの制御方法は、ホストシステムからの要求に応じて、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、前記ホストシステム側から供給される１セクタ単位のユーザデータを保持するデータ保持工程と、前記データ保持工程で保持される前記ユーザデータを先頭データから順番に前記フラッシュメモリに転送するユーザデータ転送工程と、前記ユーザデータ転送工程により前記フラッシュメモリに転送される前記ユーザデータに対応する誤り訂正符号を含む付加データを前記フラッシュメモリに転送する付加データ転送工程と、予め設定されたダミーデータを前記フラッシュメモリに転送するダミーデータ転送工程とを有し、前記ユーザデータ転送工程、前記付加データ転送工程及び前記ダミーデータ転送工程は択一的に実行され、前記ダミーデータ転送工程は、前記フラッシュメモリに転送されるデータの書き込み先がブロックステータスの記憶領域に対応するときにだけ実行され、前記ユーザデータと該ユーザデータに対応する前記付加データは、前記ページ内の連続した領域に書き込まれることを特徴とする。
前記ユーザデータ転送工程、前記付加データ転送工程及び前記ダミーデータ転送工程が、一定の周期でカウントアップ又はカウントダウンされるカウンタのカウント値に基づいて、択一的に実行されることが好ましい。
【発明の効果】
【００１１】
本発明によれば、初期不良ブロックのブロックステータスが書き込まれる領域に、ブロックステータス領域を割り当て、５１２バイト単位のユーザデータと、そのエラー・コレクション・コード（ＥＣＣ）を含む付加データが書き込まれる領域をカラムアドレスが連続する領域に割り当てても、ブロックステータス領域にブロックステータス以外のデータが書き込まれてしまうことを回避することができる。
【発明を実施するための最良の形態】
【００１２】
次に、本発明を実施するための最良の形態を、図面を参照して具体的に説明する。
【００１３】
図１は、本発明の実施の形態であるフラッシュメモリシステムの概略構成を示すブロック図である。図１に示すように、フラッシュメモリシステム１は、フラッシュメモリ２と、それを制御するメモリコントローラ３で構成され、フラッシュメモリ２とメモリコントローラ３は内部バス１４を介して接続されている。また、フラッシュメモリシステム１は、外部バス１３を介してホストシステム４と接続される。
【００１４】
ホストシステム４は、ホストシステム４の全体の動作を制御するためのＣＰＵ（Central Processing Unit）と、フラッシュメモリシステム１との情報の授受を担うコンパニオンチップ等とから構成される。ホストシステム４は、例えば文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
【００１５】
フラッシュメモリ２は、ＮＡＮＤ型フラッシュメモリであり、データを書き込むときは、メモリコントローラ３から入力されたデータが、内部のレジスタに保持された後、レジスタからメモリセルアレイに書き込まれる。一方、フラッシュメモリ２からデータを読み出すときは、メモリセルアレイからレジスタにデータが読み出された後、レジスタに読み出されたデータがメモリコントローラ３に転送される。
【００１６】
メモリコントローラ３は、マイクロプロセッサ６と、ホスト・インターフェース・ブロック７と、ワークエリア８と、バッファ９と、フラッシュメモリ・インターフェース・ブロック１０と、ＥＣＣ（エラー・コレクション・コード）ブロック１１と、ＲＯＭ（Read Only Memory）１２とから構成される。これらの機能ブロックによって構成されるメモリコントローラ３は、一つの半導体チップ上に集積されている。
【００１７】
マイクロプロセッサ６は、メモリコントローラ３を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
【００１８】
ホスト・インターフェース・ブロック７は、ホストシステム４との間で、外部バス１３を介して、データ、アドレス、ステータス、外部コマンド等の情報の授受を行う。ホストシステム４よりフラッシュメモリシステム１に供給されるデータ等は、ホスト・インターフェース・ブロック７を入口としてメモリコントローラ３の内部（例えば、バッファ９）に取り込まれる。フラッシュメモリシステム１からホストシステム４に供給されるデータ等は、ホスト・インターフェース・ブロック７を出口としてホストシステム４に供給される。
【００１９】
フラッシュメモリ・インターフェース・ブロック１０は、内部バス１４を介して、フラッシュメモリ２とデータ、アドレス、ステータス、内部コマンド等の情報の授受を行う。ここで、フラッシュメモリ２は、コマンド・ラッチ・イネーブル（ＣＬＥ）、アドレス・ラッチ・イネーブル（ＡＬＥ）、ライト・イネーブル（ＷＥ）、リード・イネーブル（ＲＥ）、チップ・イネーブル（ＣＥ）等の制御信号端子を備えている。これらの制御信号端子に入力される信号は、フラッシュメモリ２の入出力バス（Ｉ／Ｏ）に入出力される情報に応じて制御される。
【００２０】
尚、「内部コマンド」とは、メモリコントローラ３がフラッシュメモリ２を制御するためのコマンドであり、ホストシステム４からメモリコントローラ３に与えられるコマンドを「外部コマンド」と言う。
【００２１】
ホスト・インターフェース・ブロック７及びフラッシュメモリ・インターフェース・ブロック１０には各種レジスタが備わる。ホスト・インターフェース・ブロック７のレジスタにはホストシステム４から与えられるアドレス、外部コマンド等の情報が書き込まれる。また、フラッシュメモリ・インターフェース・ブロック１０のレジスタには、ホスト・インターフェース・ブロック７に書き込まれた情報に基づいて、フラッシュメモリ２内のアクセス対象領域を指示する情報が書き込まれる。
【００２２】
ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。メモリコントローラ３の内部では、複数個のセクタをまとめた論理ブロックが構成され、各論理ブロックに対応するデータは、その論理ブロックに割り当てられた１個又は複数個の物理ブロックに書き込まれる。従って、メモリコントローラ３は、論理ブロックと物理ブロックの対応関係を管理している。
【００２３】
ワークエリア８は、マイクロプロセッサ６によるフラッシュメモリ２の制御に必要なデータが一時的に保持される作業領域であり、複数のＳＲＡＭ（Static Random Access Memory）セルによって構成される。例えば、物理ブロックと論理ブロックとの対応関係を管理するためのアドレス変換テーブルは、このワークエリア８上に作成される。
【００２４】
バッファ９は、フラッシュメモリ２から読み出されたデータ及びフラッシュメモリ２に書き込むべきデータを一時的に保持するバッファである。すなわち、フラッシュメモリ２から読み出されたデータは、ホストシステム４が受け取り可能な状態となるまでバッファ９に保持され、フラッシュメモリ２に書き込むべきデータは、フラッシュメモリ２が書き込み可能な状態となるまでバッファ９に保持される。
【００２５】
ＥＣＣブロック１１は、フラッシュメモリ２に書き込むデータに対応するエラー・コレクション・コードを生成するとともに、読み出しデータに対応するエラー・コレクション・コードに基づいて、読み出しデータに含まれる誤りを検出・訂正する。
【００２６】
ＲＯＭ１２は、不揮発性の記憶素子であり、プログラム等を記憶している。マイクロプロセッサ６は、ＲＯＭ１２に記憶されているプログラムを読み込むことで、各種処理を実行している。また、ＲＯＭ１２は、各種処理等を定義したコマンドセットで構成さたシーケンスコマンドも記憶しており、フラッシュメモリ・インターフェース・ブロック１０は、このシーケンスコマンドに従って、フラッシュメモリ２とデータ、アドレス、ステータス、内部コマンド等の情報の授受を行う。
【００２７】
次に、本実施の形態のフラッシュメモリ２におけるアドレス空間の構造を、図２を参照して説明する。
【００２８】
本実施の形態で用いたフラッシュメモリ２のアドレス空間は、ブロック０〜ブロック４０９５からなる４０９６個の物理ブロックで構成されている。各物理ブロックは、ページ０〜ページ６３からなる６４個のページで構成されている。更に、各ページは、２１１２バイトの領域で構成されている。
【００２９】
ここで、フラッシュメモリ２が有する４０９６個の物理ブロックに付けた通番が、物理ブロックを特定するための物理ブロックアドレス（ＰＢＡ）である。フラッシュメモリ２が有する４０９６個の物理ブロックに含まれる全てのページ、つまり、２６２１４４個のページに付けた通番が、フラッシュメモリ２に与えるロウアドレス（０〜２６２１４３）に対応する。つまり、ロウアドレスにより、書き込み又は読み出しの対象のページが特定される。また、各ページ内の領域には、図２に示したように、ビットｂ０〜ｂ７からなる８ビットを１バイトとした、０〜２１１１のカラムアドレスが割り当てられている。
【００３０】
更に、ページの構造について、図３を参照して説明する。
【００３１】
本実施の形態では、０〜２１１１のカラムアドレスが割り当てられている２１１２バイトの領域を、従来のようにユーザ領域と冗長領域に分離せずに使用している。カラムアドレスが０〜６の７バイトの領域には、ヘッダ領域（ＨＤ）３０が割り当てられている。カラムアドレスが７〜５１８の５１２バイトの領域には、第１セクタ領域２５が割り当てられている。カラムアドレスが５１９〜５３２の１４バイトの領域には、第１付加データ領域３１が割り当てられている。カラムアドレスが５３３〜１０４４の５１２バイトの領域には、第２セクタ領域２６が割り当てられている。カラムアドレスが１０４５〜１０５８の１４バイトの領域には、第２付加データ領域３２が割り当てられている。カラムアドレスが１０５９〜１５７０の５１２バイトの領域には、第３セクタ領域２７が割り当てられている。カラムアドレスが１５７１〜１５８４の１４バイトの領域には、第３付加データ領域３３が割り当てられている。カラムアドレスが２０４８のブロックステータス領域（ＢＳ）３５を挟んだ、カラムアドレスが１５８５〜２０４７の領域と２０４９〜２０９７の領域には、第４セクタ領域２８が割り当てられている。つまり、第４セクタ領域２８に割り当てられた５１２バイトの領域は、ブロックステータス領域（ＢＳ）３５を挟んで２つの領域２８ａ、２８ｂに分割されている。カラムアドレスが２０９８〜２１１１の１４バイトの領域には、第４付加データ領域３４が割り当てられている。
【００３２】
第１セクタ領域２５、第２セクタ領域２６、第３セクタ領域２７及び第４セクタ領域２８は、ホストシステム４から与えられる１セクタ（５１２バイト）単位のユーザデータが記憶される。第１付加データ領域３１、第２付加データ領域３２、第３付加データ領域３３及び第４付加データ領域３４はエラー・コレクション・コード（ＥＣＣ）を含む付加データが記憶される。ここで、第１付加データ領域３１には第１セクタ領域２５に対応する付加データが記憶され、第２付加データ領域３２には第２セクタ領域２６に対応する付加データが記憶され、第３付加データ領域３３には第３セクタ領域２７に対応する付加データが記憶され、第４付加データ領域３４には第４セクタ領域２８に対応する付加データが記憶される。
ブロックステータス領域（ＢＳ）３５に記憶されるブロックステータスと、ヘッダ領域（ＨＤ）３０に記憶される論理アドレス情報等の管理情報は、物理ブロックに含まれる６３個のページに共通な情報であり、このブロックステータスと管理情報は、通常は物理ブロックの先頭ページにだけ書き込まれる。
【００３３】
ブロックステータス領域（ＢＳ）３５に記憶されるブロックステータスは、当該ページが属する物理ブロックが不良か否かを示す情報であり、初期不良ブロックのブロックステータス領域（ＢＳ）３５には、出荷前に００ｈ（１６進数表示）が書き込まれており、このブロックステータスは消去することができない。又、良品ブロックのブロックステータスは消去状態のＦＦｈ（１６進数表示）であり、後発不良ブロックのブロックステータスについては、０Ｆｈ（１６進数表示）やＦ０ｈ（１６進数表示）などが書き込まれる。
【００３４】
上記エラー・コレクション・コード（ＥＣＣ）は、ホストシステム４から与えられるユーザデータに基づいてＥＣＣブロック１１で生成される情報であり、フラッシュメモリ２から読み出されるユーザデータに含まれる誤りの検出、訂正に用いられる。例えば、第１セクタ領域２５に書き込まれるユーザデータに基づいて生成されるエラー・コレクション・コード（ＥＣＣ）は、第１付加データ領域３１に記憶され、第１セクタ領域２５から読み出されるユーザデータに含まれる誤りは、第１付加データ領域３１に記憶されているエラー・コレクション・コード（ＥＣＣ）に基づいて検出、訂正される。尚、エラー・コレクション・コード（ＥＣＣ）のデータ量は誤りの訂正能力に応じて適宜設定することがでできる。
【００３５】
論理アドレス情報は、ユーザデータが記憶されている物理ブロックと対応関係にある論理ブロックを特定するための情報である。ユーザデータが格納されていない物理ブロックについては、そのブロックの冗長領域に、論理アドレス情報は格納されていない。したがって、冗長領域に論理アドレス情報が格納されているか否かにより、その冗長領域が含まれている物理ブロックに有効なデータが格納されているか否かを判断することができる。つまり、冗長領域に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断する。
【００３６】
論理ブロックは、ホストシステム４側のアドレス空間における、複数セクタの領域をまとめたものであり、１個の論理ブロックに含まれる領域は、１個の物理ブロックに含まれる記憶領域となるように設定される。ここで、ホストシステム４側のアドレス空間は、セクタ（５１２バイト）単位で分割した領域に付けた通番であるＬＢＡ（Logical Block Address）で管理されている。又、複数セクタの領域をまとめた論理ブロックに付けた通番を論理ブロック番号（ＬＢＮ）と呼んでいる。
【００３７】
尚、論理ブロックと物理ブロックとの対応関係は通常、アドレス変換テーブルによって管理され、このアドレス変換テーブルを用いて論理ブロック番号（ＬＢＮ）が物理ブロックアドレス（ＰＢＡ）に変換される。又、このアドレス変換テーブルは、ヘッダ領域（ＨＤ）３０に記憶される論理アドレス情報に基づいて作成される。
【００３８】
次に、ホストシステム４からＬＢＡで指定されるアクセス領域と、フラッシュメモリ２内のページ及び第１セクタ領域２５〜第４セクタ領域２８との対応関係について説明する。本実施の形態では、１個の論理ブロックに対して１個の物理ブロックを割り当てているため、１個の論理ブロックには２５６セクタの領域が含まれる。従って、ホストシステム４から指定されたＬＢＡの下位８ビットを除いた上位ビットが論理ブロック番号（ＬＢＮ）に対応する。この論理ブロック番号（ＬＢＮ）は、アドレス変換テーブルに基づいて物理ブロックアドレス（ＰＢＡ）に変換される。ホストシステム４から指定されたＬＢＡの下位８ビットのうち、上位６ビット（０〜６３）は物理ブロックに含まれるページ０〜ページ６３を特定する番号になり、下位２ビットは各ページに含まれる第１セクタ領域２５〜第４セクタ領域２８を特定する番号になる。
【００３９】
上記のような対応関係により、フラッシュメモリ２にアクセスするときに与えるロウアドレスは、アドレス変換テーブルに基づいて求められた物理ブロックアドレス（ＰＢＡ）の下位側に、ＬＢＡの下位側から数えて８ビット目から３ビット目までの６ビット（０〜６３）を連結することにより求められる。又、フラッシュメモリ２にアクセスするときに与えるカラムアドレスは、ＬＢＡの下位２ビットに基づいて特定される。つまり、ＬＢＡの下位２ビットが０（２進数表示：００ｂ）のときは、第１セクタ領域２５の先頭のカラムアドレスである７が、ＬＢＡの下位２ビットが１（２進数表示：０１ｂ）のときは、第２セクタ領域２６の先頭のカラムアドレスである５３３が、ＬＢＡの下位２ビットが２（２進数表示：１０ｂ）のときは、第３セクタ領域２７の先頭のカラムアドレスである１０５９が、ＬＢＡの下位２ビットが３（２進数表示：１１ｂ）のときは、第４セクタ領域２８の先頭のカラムアドレスである１５８５がフラッシュメモリ２にアクセスするときに与えられる。
【００４０】
次に、フラッシュメモリ２の１個のページに４セクタのユーザデータを書き込む動作を、図４を参照して説明する。
【００４１】
図４（ａ）はヘッダ領域（ＨＤ）３０に管理情報を書き込む必要のあるページの場合の書き込み動作であり、ｔ１〜ｔ５の期間にフラッシュメモリ２の入出力バス（Ｉ／Ｏ）に入力されるコマンド、アドレス及びデータを示している。
【００４２】
ｔ１〜ｔ２の期間：
インプットコマンド（ＩＣ）が入出力バス（Ｉ／Ｏ）に入力される。
【００４３】
ｔ２〜ｔ３の期間：
アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力される。ここでは、書き込み先のページに対応するロウアドレスとヘッダ領域（ＨＤ）３０の先頭（図３に示した（１））のカラムアドレスである０が入力される。
【００４４】
ｔ３〜ｔ４の期間：
ロウアドレスで指定されたページに書き込まれるデータ（ＤＴ）が入出力バス（Ｉ／Ｏ）に入力され、ライト・イネーブル（ＷＥ）の端子に入力される信号レベルが遷移（ロー・レベルからハイ・レベルへの遷移）するタイミングでフラッシュメモリ２内のレジスタに保持される。入力されたデータ（ＤＴ）に対応するカラムアドレスは、ライト・イネーブル（ＷＥ）の端子に入力される信号レベルの遷移（ロー・レベルからハイ・レベルへの遷移）に合わせてカウントアップされる（次のカラムアドレスに切り替わる）。このデータ（ＤＴ）の入力では、管理情報、ユーザデータ又は付加データが、ライト・イネーブル（ＷＥ）の端子に入力される信号レベルの遷移（ロー・レベルからハイ・レベルへの遷移）に合わせて、カラムアドレスの順番で入力される。尚、カラムアドレスが２０４８に対応するときには、ダミーデータとしてＦＦｈ（１６進数表示）が入力される。つまり、管理情報、ユーザデータ又は付加データに対応する２１１１バイトのデータと、カラムアドレスが２０４８のときに入力されるダミーデータがカラムアドレスの順番で入力される。
【００４５】
ｔ４〜ｔ５の期間：
プログラムコマンド（ＰＣ）が入出力バス（Ｉ／Ｏ）に入力される。このプログラムコマンド（ＰＣ）に応答して、入出力バス（Ｉ／Ｏ）に入力され、フラッシュメモリ２内のレジスタに保持されたデータ（ＤＴ）が、メモリセルアレイに書き込まれる。この書き込みでは、ｔ２〜ｔ３の期間に入力されたロウアドレスで指定されたページに、レジスタに保持されているデータ（ＤＴ）が書き込まれる。
【００４６】
また、図４（ｂ）はヘッダ領域（ＨＤ）３０に管理情報を書き込む必要がないページの場合の書き込み動作であり、ｔ１１〜ｔ１５の期間にフラッシュメモリ２の入出力バス（Ｉ／Ｏ）に入力されるコマンド、アドレス及びデータを示している。
【００４７】
ｔ１１〜ｔ１２の期間：
インプットコマンド（ＩＣ）が入出力バス（Ｉ／Ｏ）に入力される。
【００４８】
ｔ１２〜ｔ１３の期間：
アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力される。ここでは、書き込み先のページに対応するロウアドレスと第１セクタ領域２５の先頭（図３に示した（２））のカラムアドレスである７が入力される。
【００４９】
ｔ１３〜ｔ１４の期間：
ロウアドレスで指定されたページに書き込まれるデータ（ＤＴ）が入出力バス（Ｉ／Ｏ）に入力され、ライト・イネーブル（ＷＥ）の端子に入力される信号レベルが遷移（ロー・レベルからハイ・レベルへの遷移）するタイミングでフラッシュメモリ２内のレジスタに保持される。入力されたデータ（ＤＴ）に対応するカラムアドレスは、ライト・イネーブル（ＷＥ）の端子に入力される信号レベルの遷移（ロー・レベルからハイ・レベルへの遷移）に合わせてカウントアップされる（次のカラムアドレスに切り替わる）。このデータ（ＤＴ）の入力では、ユーザデータ又は付加データが、ライト・イネーブル（ＷＥ）の端子に入力される信号レベルの遷移（ロー・レベルからハイ・レベルへの遷移）に合わせて、カラムアドレスの順番で入力される。尚、カラムアドレスが２０４８に対応するときには、ダミーデータとしてＦＦｈ（１６進数表示）が入力される。つまり、ユーザデータ又は付加データに対応する２１０４バイトのデータと、カラムアドレスが２０４８のときに入力されるダミーデータがカラムアドレスの順番で入力される。この期間に入力されたデータ（ＤＴ）はフラッシュメモリ２内のレジスタに保持されるが、データ（ＤＴ）が保持されないカラムアドレスが０〜６に対応する領域には、ＦＦｈ（１６進数表示）が保持される。
【００５０】
ｔ１４〜ｔ１５の期間：
プログラムコマンド（ＰＣ）が入出力バス（Ｉ／Ｏ）に入力される。このプログラムコマンド（ＰＣ）に応答して、入出力バス（Ｉ／Ｏ）に入力され、フラッシュメモリ２内のレジスタに保持されたデータ（ＤＴ）が、メモリセルアレイに書き込まれる。この書き込みでは、ｔ１２〜ｔ１３の期間に入力されたロウアドレスで指定されたページに、レジスタに保持されているデータ（ＤＴ）が書き込まれる。
【００５１】
尚、第２セクタ領域２６、第３セクタ領域２７又は第４セクタ領域２８から書き込みを開始するときは、第２セクタ領域２６、第３セクタ領域２７又は第４セクタ領域２８の先頭のカラムアドレスがアドレス（ＡＤ）として入力される。又、書き込むユーザデータが４セクタ未満（１〜３セクタ）の場合には、書き込むセクタ分のユーザデータと、そのユーザデータに対応する付加データがデータ（ＤＴ）として入力される。
【００５２】
また、インプットコマンド（ＩＣ）、及びプログラムコマンド（ＰＣ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子にハイ・レベルの信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子にロー・レベルの信号が入力される。アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子にロー・レベルの信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子にハイ・レベルの信号が入力される。データ（ＤＴ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子にロー・レベルの信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子にロー・レベルの信号が入力される。インプットコマンド（ＩＣ）、プログラムコマンド（ＰＣ）及びアドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力されている期間に、ライト・イネーブル（ＷＥ）の端子に入力される信号をハイ・レベルからロー・レベルに遷移させることにより、インプットコマンド（ＩＣ）、プログラムコマンド（ＰＣ）及びアドレス（ＡＤ）がフラッシュメモリに取り込まれる。
【００５３】
次に、フラッシュメモリ２の１個のページから４セクタのユーザデータを読み出す動作を、図５を参照して説明する。尚、ユーザデータの読み出しでは、通常、ヘッダ領域（ＨＤ）３０に記憶されている管理情報は読み出されない。
【００５４】
図５は、ｔ２１〜ｔ２５の期間にフラッシュメモリ２の入出力バス（Ｉ／Ｏ）に入力されるコマンド及びアドレスと入出力バス（Ｉ／Ｏ）から出力されるデータを示している。
【００５５】
ｔ２１〜ｔ２２の期間：
リードコマンド（ＲＣ）が入出力バス（Ｉ／Ｏ）に入力される。
【００５６】
ｔ２２〜ｔ２３の期間：
アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力される。ここでは、読み出すページに対応するロウアドレスと第１セクタ領域２５の先頭（図３に示した（２））のカラムアドレスである７が入力される。
【００５７】
ｔ２３〜ｔ２４の期間：
フラッシュメモリ２内のメモリセルアレイに記憶されているデータがレジスタに読み出される。この読み出しでは、ｔ２２〜ｔ２３の期間に入力されたロウアドレスで指定されたページに記憶されているデータがレジスタに読み出される。
【００５８】
ｔ２４〜ｔ２５の期間：
リード・イネーブル（ＲＥ）の端子に入力される信号レベルを、ハイ・レベルとロー・レベルに交互に遷移させることより、フラッシュメモリ２内のレジスタに保持されているデータが入出力バス（Ｉ／Ｏ）から出力される。入出力バス（Ｉ／Ｏ）から出力されるデータ（ＤＴ）のカラムアドレスは、ｔ２２〜ｔ２３の期間に入力されたカラムアドレスから始まり、リード・イネーブル（ＲＥ）の端子に入力される信号レベルの遷移に合わせてカウントアップされる（次のカラムアドレスに切り替わる）。
【００５９】
入出力バス（Ｉ／Ｏ）から出力されるユーザデータ（第１セクタ領域２５、第２セクタ領域２６、第３セクタ領域２７又は第４セクタ領域２８から読み出されたユーザデータ）は、バッファ９に保持される。尚、第４セクタ領域２８ａと第４セクタ領域２８ｂに挟まれたブロックステータス領域（ＢＳ）３５から読み出されたブロックステータスについては、バッファ９に保持されないように制御される。
【００６０】
尚、リードコマンド（ＲＣ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子にハイ・レベルの信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子にロー・レベルの信号が入力される。アドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力されている期間は、コマンド・ラッチ・イネーブル（ＣＬＥ）の端子にロー・レベルの信号が入力され、アドレス・ラッチ・イネーブル（ＡＬＥ）の端子にハイ・レベルの信号が入力される。リードコマンド（ＲＣ）、及びアドレス（ＡＤ）が入出力バス（Ｉ／Ｏ）に入力されている期間に、ライト・イネーブル（ＷＥ）の端子に入力される信号をロー・レベルからハイ・レベルに遷移させることにより、リードコマンド（ＲＣ）、及びアドレス（ＡＤ）がフラッシュメモリに取り込まれる。
【００６１】
次に、第４セクタ領域２８に対するユーザデータの書き込みで、第４セクタ領域２８ａに書き込むユーザデータと第４セクタ領域２８ｂに書き込むユーザデータとの間にブロックステータス領域（ＢＳ）３５に書き込むダミーデータを挿入する書き込み動作について図６、図７を参照して説明する。第１セクタ領域２５〜第３セクタ領域２７に対するユーザデータの書き込み動作についても図８を参照して説明する。
【００６２】
図６は、フラッシュメモリ２にユーザデータ及び付加データを転送するための回路だけを示している。この回路は、フラッシュメモリ・インターフェース・ブロック１０に含まれている。
【００６３】
このフラッシュメモリ２にユーザデータ及び付加データを転送するための回路は、シーケンサ制御回路４５、アドレスカウンタ４６、ＪＫ−Ｆ／Ｆ（ＪＫフリップ・フロップ）４７、ＡＮＤ回路４９〜５３、比較回路５４、５５、セレクタ４２、４３、Ｄ−Ｆ／Ｆ（Ｄフリップ・フロップ）５７から構成されている。
【００６４】
バッファ９は、第１セクタ領域２５〜第４セクタ領域２８に書き込むユーザデータ又は第１セクタ領域２５〜第４セクタ領域２８から読み出したユーザデータを保持する第１バッファ２１−１、第２バッファ２１−２と、第１付加データ領域３１〜第４付加データ領域３４に書き込む付加データを保持する第１レジスタ１６−１、第２レジスタ１６−２から構成されている。尚、第１付加データ領域３１〜第４付加データ領域３４に書き込む付加データに含まれるエラー・コレクション・コード（ＥＣＣ）については、ＥＣＣブロック１１からフラッシュメモリ２に供給される。
【００６５】
シーケンサ制御回路４５、アドレスカウンタ４６、ＪＫ−Ｆ／Ｆ４７、Ｄ−Ｆ／Ｆ５７には共通にクロック信号（ＣＬＫ）が入力されている。
【００６６】
シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）はＡＮＤ回路５０、５１のそれぞれ一方の入力端子に入力され、更にＡＮＤ回路５２の正論理側の入力端子に入力されている。また、シーケンサ制御回路４５から出力されるスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）はＡＮＤ回路４９の一方の入力端子に入力されている。
【００６７】
ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）はＡＮＤ回路５２の負論理側の入力端子に入力されている。また、ＡＮＤ回路５２の出力信号（ＣＮＴ＿ＥＮ）はアドレスカウンタ４６のイネーブル端子（ＥＮ）に入力されている。
【００６８】
アドレスカウンタ４６の出力信号（１０ビットのアドレス信号（ＡＤＲ））は、比較回路５４、５５、及びバッファ９に入力されている。また、比較回路５４の出力信号はＡＮＤ回路５０の他方の入力端子に入力されている。また、比較回路５５の出力信号はＡＮＤ回路５１の他方の入力端子に入力され、更にＡＮＤ回路５３の正論理側の入力端子に入力されている。
【００６９】
ＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）はＪＫ＿Ｆ／Ｆ４７のＪ端子に入力されている。また、ＡＮＤ回路５１の出力信号（Ｋ＿ＩＮ）はＪＫ＿Ｆ／Ｆ４７のＫ端子に入力されている。また、ＪＫ＿Ｆ／Ｆ４７のＱ出力信号（ＳＫＩＰ１）はＡＮＤ回路５３の負論理側の入力端子、及びＡＮＤ回路４９の他方の入力端子に入力されている。
【００７０】
ＡＮＤ回路５３が出力する信号（ＳＥＬ１）は選択信号としてセレクタ４３に入力されている。また、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）はセレクタ４３の一方の入力側に入力されている。また、セレクタ４３の他方の入力側にはダミーデータとしてＦＦｈ（１６進数表示）が入力されている。また、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）はＤ＿Ｆ／Ｆ５７に入力されている。また、Ｄ＿Ｆ／Ｆ５７の出力信号（Ｄ＿ＯＵＴ３）はフラッシュメモリ２に入力されている。従って、ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）に基づいて、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）又はダミーデータ（ＦＦｈ）が、Ｄ＿Ｆ／Ｆ５７を介してフラッシュメモリ２に入力される。また、フラッシュメモリ２のライト・イネーブル（ＷＥ）の端子には、シーケンサ制御回路４５から出力されるライト・イネーブル信号（ＷＥ＿ＩＮ）が入力されている。
【００７１】
セレクタ４２にはバッファ９の出力信号（Ｄ＿ＯＵＴ０）と、ＥＣＣブロック１１の出力信号（Ｄ＿ＯＵＴ４）が入力されており、シーケンサ制御回路４５から出力される選択信号（ＳＥＬ２）に基づいて、バッファ９の出力信号（Ｄ＿ＯＵＴ０）又はＥＣＣブロック１１の出力信号（Ｄ＿ＯＵＴ４）が、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）としてセレクタ４３に入力される。尚、バッファ９の出力信号（Ｄ＿ＯＵＴ０）はＥＣＣブロック１１にも入力され、ＥＣＣブロック１１は入力された信号（第１セクタ領域２５〜第４セクタ領域２８に書き込むユーザデータに対応する信号）に基づいて生成したエラー・コレクション・コード（ＥＣＣ）を出力信号（Ｄ＿ＯＵＴ４）として出力する。
【００７２】
上記シーケンサ制御回路４５は、クロック信号（ＣＬＫ）に同期してアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）、スキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）、ライト・イネーブル信号（ＷＥ＿ＩＮ）、選択信号（ＳＥＬ２）を出力することにより、フラッシュメモリ・インターフェース・ブロック１０全体の動作を制御する。
【００７３】
アドレスカウンタ４６はクロック信号ＣＬＫに同期してカウントアップする１０ビットのカウンタであり、０〜５２５のカウント値をアドレス信号（ＡＤＲ）として出力する。カウント値が５２５になったときは、「０」にリセットされる。
カウント値が０〜５１１の期間：
バッファ９が、アドレス信号（ＡＤＲ）が示すカウント値に基づいて特定される第１バッファ２１−１又は第２バッファ２１−２内のユーザデータを、出力信号（Ｄ＿ＯＵＴ０）として出力する。
【００７４】
カウント値が５１２〜５２１の期間：
ＥＣＣブロック１１が、カウント値が０〜５１１の期間にバッファ９から出力された出力信号（Ｄ＿ＯＵＴ０）に基づいて生成されたエラー・コレクション・コード（ＥＣＣ）を出力信号（Ｄ＿ＯＵＴ４）として出力する。
【００７５】
カウント値が５２２〜５２５の期間：
バッファ９が、アドレス信号（ＡＤＲ）が示すカウント値に基づいて特定される第１レジスタ１６−１又は第２レジスタ１６−２内の付加データを、出力信号（Ｄ＿ＯＵＴ０）として出力する。
【００７６】
セレクタ４２は、上記シーケンサ制御回路４５から出力される選択信号（ＳＥＬ２）に基づいて、カウント値が０〜５１１の期間及びカウント値が５２２〜５２５の期間については、バッファ９の出力信号（Ｄ＿ＯＵＴ０）を出力信号（Ｄ＿ＯＵＴ１）として出力し、カウント値が５１２〜５２１の期間については、ＥＣＣブロック１１の出力信号（Ｄ＿ＯＵＴ４）を出力信号（Ｄ＿ＯＵＴ１）として出力する。ここで、セレクタ４２は、ロー・レベル（以下「０」と表記する）の選択信号（ＳＥＬ２）が与えられたときにＥＣＣブロック１１の出力信号（Ｄ＿ＯＵＴ４）を出力信号（Ｄ＿ＯＵＴ１）として出力し、セレクタ４２は、ハイ・レベル（以下「１」と表記する）の選択信号（ＳＥＬ２）が与えられたときにバッファ９の出力信号（Ｄ＿ＯＵＴ０）を出力信号（Ｄ＿ＯＵＴ１）として出力する。
【００７７】
ホストシステム４から与えられたユーザデータは、フラッシュメモリ２側へのデータ出力が先に終了した側のバッファ（第１バッファ２１−１又は第２バッファ２１−２）に取り込まれ、先にユーザデータが取り込まれた側のバッファ（第１バッファ２１−１又は第２バッファ２１−２）に保持されているユーザデータが先にフラッシュメモリ２側に出力される。従って、通常の書き込み動作では、ホストシステム４から与えられるユーザデータの入力先は、第１バッファ２１−１と第２バッファ２１−２が交互に選択され、フラッシュメモリ２側に出力されるユーザデータの出力元も第１バッファ２１−１と第２バッファ２１−２が交互に選択される。
【００７８】
比較回路５４はアドレスカウンタ４６が出力するアドレス信号（ＡＤＲ）が示すカウント値が４６１に一致したとき「１」を出力する。また、比較回路５５はアドレスカウンタ４６が出力するアドレス信号（ＡＤＲ）が示すカウント値が４６２に一致したとき「１」を出力する。
【００７９】
ＪＫ＿Ｆ／Ｆ４７は、エッジトリガＪＫフリップフロップ回路であり、Ｊ入力が「１」、Ｋ入力が「０」の状態で、クロック信号（ＣＬＫ）が立ち上がる（「０」から「１」に遷移する）と、Ｑ出力が「１」となり、Ｊ入力が「０」、Ｋ入力が「１」の状態で、クロック信号（ＣＬＫ）が立ち上がる（「０」から「１」に遷移する）と、Ｑ出力が「０」となる。
【００８０】
セレクタ４３は、選択信号（ＳＥＬ１）が「０」のときセレクタ４２から出力される出力信号（Ｄ＿ＯＵＴ１）を選択し、選択信号（ＳＥＬ１）が「１」のときダミーデータ（ＦＦｈ）の信号を選択する。
【００８１】
Ｄ＿Ｆ／Ｆ５７は、入力信号を１クロック分遅延させるためのＤフリップフロップ回路であり、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）を１クロック分だけ遅らせた出力信号（Ｄ＿ＯＵＴ３）を出力する。このＤ＿Ｆ／Ｆ５７は、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）における出力信号（Ｄ＿ＯＵＴ３）を安定させるために用いられている。
【００８２】
次に、第４セクタ領域２８に対する書き込み動作と第１セクタ領域２５〜第３セクタ領域２７に対する書き込み動作の違いについて、図７、図８を参照して詳細に説明する。
【００８３】
以下の説明における書き込み動作は、図４（ａ）のｔ３〜ｔ４の期間又は図４（ｂ）のｔ１３〜ｔ１４の期間に実行される動作であり、カラムアドレスが７〜２１１１の領域に書き込むデータをＤ＿Ｆ／Ｆ５７の出力信号（Ｄ＿ＯＵＴ３）としてフラッシュメモリ２に与える動作に対応する。この書き込み動作は、第１セクタ領域２５と第１付加データ領域３１に対応するカラムアドレスが７〜５３２の領域に書き込むデータを出力する動作と、第２セクタ領域２６と第２付加データ領域３２に対応するカラムアドレスが５３３〜１０５８の領域に書き込むデータを出力する動作と、第３セクタ領域２７と第３付加データ領域３３に対応するカラムアドレスが１０５９〜１５８４の領域に書き込むデータを出力する動作と、第４セクタ領域２８と第４付加データ領域３４に対応するカラムアドレスが１５８５〜２１１１の領域（ブロックステータス領域（ＢＳ）３５が含まれている）に書き込むデータを出力する動作で構成されている。
【００８４】
図７は、カラムアドレスが１５８５〜２１１１の領域に書き込むデータを出力する動作において、ダミーデータ（ＦＦｈ）がＤ＿Ｆ／Ｆ５７の出力信号（Ｄ＿ＯＵＴ３）として出力されるタイミングを示している。図８は、カラムアドレスが１５８５〜２１１１の領域に書き込むデータを出力する動作と比較するために、カラムアドレスが７〜５３２の領域、カラムアドレスが５３３〜１０５８の領域又はカラムアドレスが１０５９〜１５８４の領域に書き込むデータを出力する動作を示している。尚、カラムアドレスが１５８５〜２１１１の領域に書き込むデータを出力する動作を行っているときは、シーケンサ制御回路４５からスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）として「１」が出力され、カラムアドレスが７〜５３２の領域、カラムアドレスが５３３〜１０５８の領域又はカラムアドレスが１０５９〜１５８４の領域に書き込むデータを出力する動作を行っているときは、シーケンサ制御回路４５からスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）として「０」が出力される。
【００８５】
図７において、ＣＬＫは、シーケンサ制御回路４５とアドレスカウンタ４６とＪＫ−Ｆ／Ｆ４７とＤ−Ｆ／Ｆ５７に入力されるクロック信号を表している。ＡＤ＿ＩＮＣは、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号を表している。このアドレス・インクリメンタル信号は、クロック信号を２分周した信号となっている。ＡＤＲは、アドレスカウンタ４６から出力されるカウント値を示すアドレス信号である。Ｊ＿ＩＮは、ＪＫ−Ｆ／Ｆ４７のＪ端子に入力されるＡＮＤ回路５０の出力信号を表している。Ｋ＿ＩＮは、ＪＫ−Ｆ／Ｆ４７のＫ端子に入力されるＡＮＤ回路５１の出力信号を表している。
【００８６】
ＳＫＩＰ１＆２は、ＪＫ−Ｆ／Ｆ４７のＱ出力信号（ＳＫＩＰ１）及びＡＮＤ回路４９の出力信号（ＳＫＩＰ２）を示している。つまり、図７の場合、シーケンサ制御回路４５からスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）として「１」が出力されているので、ＪＫ−Ｆ／Ｆ４７のＱ出力信号（ＳＫＩＰ１）がそのままＡＮＤ回路４９の出力信号（ＳＫＩＰ２）となる。ＣＮＴ＿ＥＮは、アドレスカウンタ４６のイネーブル端子（ＥＮ）に入力されるＡＮＤ回路５２の出力信号を表している。
【００８７】
ＳＥＬ１は、ＡＮＤ回路５３の出力する選択信号を表している。このＡＮＤ回路５３の出力信号は選択信号としてセレクタ４３に入力される。Ｄ＿ＯＵＴ１は、セレクタ４２から出力される出力信号を表している。Ｄ＿ＯＵＴ２は、セレクタ４３から出力される出力信号を表している。Ｄ＿ＯＵＴ３は、Ｄ＿Ｆ／Ｆ５７から出力される出力信号を表している。ＷＥ＿ＩＮは、シーケンサ制御回路４５から出力されるライト・イネーブル信号を表している。このライト・イネーブル信号は、フラッシュメモリ２のライト・イネーブル（ＷＥ）の端子に入力される。
【００８８】
次に図６と図７を参照して、第４セクタ領域２８ａに書き込むユーザデータと第４セクタ領域２８ｂに書き込むユーザデータとの間に、ブロックステータス領域（ＢＳ）３５に書き込むダミーデータ（ＦＦｈ）を挿入する動作を説明する。尚、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値は、第４セクタ領域２８の先頭に対応するカラムアドレスが１５８５の領域に書き込むユーザデータがバッファ９から出力されるときに０からカウントが開始される。
【００８９】
アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値は、イネーブル端子（ＥＮ）に入力される信号が「１」の期間に、クロック信号（ＣＬＫ）が立ち上がる（「０」から「１」に遷移する）とカウントアップされる。ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）が「０」の期間、イネーブル端子（ＥＮ）には、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）がそのまま入力される。従って、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）が「０」の期間、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値は、アドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）の周期でカウントアップされる。
【００９０】
アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が０〜５１１の期間と５２２〜５２５の期間は、シーケンサ制御回路４５から出力される選択信号（ＳＥＬ２）が「１」になり、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が５１２〜５２１の期間は、シーケンサ制御回路４５から出力される選択信号（ＳＥＬ２）が「０」になる。従って、カウント値が０〜５１１の期間は、第１バッファ２１−１又は第２バッファ２１−２に保持されているユーザデータがバッファ９の出力信号（Ｄ＿ＯＵＴ０）として出力され、この出力信号（Ｄ＿ＯＵＴ０）がセレクタ４２の出力信号（Ｄ＿ＯＵＴ１）としてそのまま出力される。
【００９１】
以下、ｔ４１〜ｔ４６の期間について詳細に説明する。
【００９２】
ｔ４１の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４５９から４６０にカウントアップされる。これに応答して、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６０に対応するユーザデータに切り替わる。ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）は「０」なので、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、そのままセレクタ４３の出力信号（Ｄ＿ＯＵＴ２）として出力される。尚、Ｄ＿Ｆ／Ｆ５７から出力される出力信号（Ｄ＿ＯＵＴ３）は、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）より１クロック分遅延しているため、この時点では、未だカウント値４５９に対応するユーザデータが出力信号（Ｄ＿ＯＵＴ３）として出力されている。従って、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）で、カウント値４５９に対応するユーザデータがフラッシュメモリ２に取り込まれる。
【００９３】
ｔ４２の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６０から４６１にカウントアップされる。これに応答して、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６１に対応するユーザデータに切り替わる。ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）は「０」なので、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、そのままセレクタ４３の出力信号（Ｄ＿ＯＵＴ２）として出力される。尚、Ｄ＿Ｆ／Ｆ５７から出力される出力信号（Ｄ＿ＯＵＴ３）は、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）より１クロック分遅延しているため、この時点では、未だカウント値４６０に対応するユーザデータが出力信号（Ｄ＿ＯＵＴ３）として出力されている。従って、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）で、カウント値４６０に対応するユーザデータがフラッシュメモリ２に取り込まれる。
【００９４】
尚、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６１になることにより、比較回路５４の出力信号が「１」になる。この比較回路５４の出力信号が「０」に戻るまで、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）が、そのままＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）として出力されようになる。一方、比較回路５５の出力信号は「０」なので、ＡＮＤ回路５１の出力信号（Ｋ＿ＩＮ）は「０」のままになっている。
【００９５】
ｔ４３の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６１から４６２にカウントアップされる。これに応答して、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６２に対応するユーザデータに切り替わる。ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）は「０」なので、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、そのままセレクタ４３の出力信号（Ｄ＿ＯＵＴ２）として出力される。尚、Ｄ＿Ｆ／Ｆ５７から出力される出力信号（Ｄ＿ＯＵＴ３）は、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）より１クロック分遅延しているため、この時点では、未だカウント値４６１に対応するユーザデータが出力信号（Ｄ＿ＯＵＴ３）として出力されている。従って、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）で、カウント値４６１に対応するユーザデータがフラッシュメモリ２に取り込まれる。
【００９６】
ＡＮＤ回路５０は、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）を、そのまま出力信号（Ｊ＿ＩＮ）として出力しているので、この時点では、出力信号（Ｊ＿ＩＮ）が「１」になっている。一方、ＡＮＤ回路５１の出力信号（Ｋ＿ＩＮ）は「０」なので、ＪＫ−Ｆ／Ｆ４７のＱ端子から出力されるＱ出力信号（ＳＫＩＰ１）は、クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、「０」から「１」に遷移する。また、シーケンサ制御回路４５から出力されているスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）が「１」なので、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）も「０」から「１」に遷移する。
【００９７】
尚、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６２になることにより、比較回路５５の出力信号が「１」になる。この比較回路５５の出力信号が「０」に戻るまで、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）が、そのままＡＮＤ回路５１の出力信号（Ｋ＿ＩＮ）として出力されるようになる。一方、比較回路５４の出力信号は「０」に戻るで、ＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）は「０」になる。
【００９８】
ｔ４４の時点：
ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）が「１」の期間は、ＡＮＤ回路５２の出力信号（ＣＮＴ＿ＥＮ）が「０」なので、クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）でアドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値はカウントアップされない。従って、比較回路５５の出力信号も「１」のまま維持される。又、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）は、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６２に対応するユーザデータの出力が維持される。
【００９９】
ＡＮＤ回路５１は、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）を、そのまま出力信号（Ｋ＿ＩＮ）として出力しているので、この時点では、出力信号（Ｋ＿ＩＮ）が「１」になっている。一方、ＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）は「０」なので、ＪＫ−Ｆ／Ｆ４７のＱ端子から出力されるＱ出力信号（ＳＫＩＰ１）は、クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で「１」から「０」に遷移する。このＱ出力信号（ＳＫＩＰ１）が「１」から「０」に遷移することにより、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）も「１」から「０」に遷移する。又、比較回路５５の出力信号が「１」なので、ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）が「０」から「１」に遷移する。
【０１００】
ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）が「１」になるので、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）が、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）からダミーデータ（ＦＦｈ）に切り替わる。尚、Ｄ＿Ｆ／Ｆ５７から出力される出力信号（Ｄ＿ＯＵＴ３）は、この時点では、未だカウント値４６２に対応するユーザデータなので、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）で、カウント値４６２に対応するユーザデータがフラッシュメモリ２に取り込まれる。
【０１０１】
ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）が「０」に戻るため、アドレスカウンタ４６のイネーブル端子（ＥＮ）に、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）が、ＡＮＤ回路５２の出力信号（ＣＮＴ＿ＥＮ）として、そのまま入力されるようになる。
【０１０２】
ｔ４５の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６２から４６３にカウントアップされる。これに応答して、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６３に対応するユーザデータに切り替わる。
【０１０３】
アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６２から４６３になるので、比較回路５５の出力信号が「０」になり、ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）も「０」になる。又、ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）が「０」になるので、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）が、ダミーデータ（ＦＦｈ）からセレクタ４２の出力信号（Ｄ＿ＯＵＴ１）に切り替わる。尚、Ｄ＿Ｆ／Ｆ５７から出力される出力信号（Ｄ＿ＯＵＴ３）は、この時点では、未だダミーデータ（ＦＦｈ）なので、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）で、ダミーデータ（ＦＦｈ）がフラッシュメモリ２に取り込まれる。
【０１０４】
ｔ４６の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６３から４６４にカウントアップされる。これに応答して、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６４に対応するユーザデータに切り替わる。ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）は「０」なので、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、そのままセレクタ４３の出力信号（Ｄ＿ＯＵＴ２）として出力される。尚、Ｄ＿Ｆ／Ｆ５７から出力される出力信号（Ｄ＿ＯＵＴ３）は、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）より１クロック分遅延しているため、この時点では、未だカウント値４６３に対応するユーザデータが出力信号（Ｄ＿ＯＵＴ３）として出力されている。従って、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）で、カウント値４６３に対応するユーザデータがフラッシュメモリ２に取り込まれる。
【０１０５】
上述のように、第４セクタ領域２８に対するユーザデータの書き込みでは、シーケンサ制御回路４５からスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）として「１」が出力されている。スキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）が「１」の場合、第４セクタ領域２８ａの末尾に書き込むユーザデータ（第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６２に対応するユーザデータ）と第４セクタ領域２８ｂの先頭に書き込むユーザデータ（第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６３に対応するユーザデータ）との間にブロックステータス領域（ＢＳ）３５に書き込むダミーデータ（ＦＦｈ）が挿入される。尚、ブロックステータス領域（ＢＳ）３５に書き込まれるダミーデータはＦＦｈ（１６進数表示）なので、ブロックステータス領域（ＢＳ）３５に記憶されているブロックステータスは変更されない。
【０１０６】
次に、シーケンサ制御回路４５からスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）として「０」が出力されている場合の動作、つまり、カラムアドレスが７〜５３２の領域、カラムアドレスが５３３〜１０５８の領域又はカラムアドレスが１０５９〜１５８４の領域に書き込むデータを出力する場合の動作について図８を参照して説明する。
【０１０７】
カラムアドレスが７〜５３２の領域、カラムアドレスが５３３〜１０５８の領域及びカラムアドレスが１０５９〜１５８４の領域に書き込むデータを出力する動作は、同様の動作である。ここで、カラムアドレスが７〜５３２の領域に書き込むデータを出力する場合は、第１セクタ領域２５の先頭に対応するカラムアドレスが７の領域に書き込むユーザデータがバッファ９から出力されるときに、アドレスカウンタ４６のカウントが０から開始され、カラムアドレスが５３３〜１０５８の領域に書き込むデータを出力する場合は、第２セクタ領域２６の先頭に対応するカラムアドレスが５３３の領域に書き込むユーザデータがバッファ９から出力されるときに、アドレスカウンタ４６のカウントが０から開始され、カラムアドレスが１０５９〜１５８４の領域に書き込むデータを出力する場合は、第３セクタ領域２７の先頭に対応するカラムアドレスが１０５９の領域に書き込むユーザデータがバッファ９から出力されるときに、アドレスカウンタ４６のカウントが０から開始される。
【０１０８】
スキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）が「１」の場合と同様に、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値は、イネーブル端子（ＥＮ）に入力される信号が「１」の期間に、クロック信号（ＣＬＫ）が立ち上がる（「０」から「１」に遷移する）とカウントアップされる。尚、スキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）として「０」が出力されている場合、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）は常に「０」なので、イネーブル端子（ＥＮ）には、常にシーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）がそのまま入力される。従って、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値は、アドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）の周期で常にカウントアップされる。
【０１０９】
アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が０〜５１１の期間と５２２〜５２５の期間は、シーケンサ制御回路４５から出力される選択信号（ＳＥＬ２）が「１」になり、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が５１２〜５２１の期間は、シーケンサ制御回路４５から出力される選択信号（ＳＥＬ２）が「０」になる。従って、カウント値が０〜５１１の期間は、第１バッファ２１−１又は第２バッファ２１−２に保持されているユーザデータがバッファ９の出力信号（Ｄ＿ＯＵＴ０）として出力され、この出力信号（Ｄ＿ＯＵＴ０）がセレクタ４２の出力信号（Ｄ＿ＯＵＴ１）としてそのまま出力される。
【０１１０】
以下、シーケンサ制御回路４５から出力されるスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）が「１」の場合と異なるｔ５３〜ｔ５５の期間についてだけ、詳細に説明する。
【０１１１】
ｔ５３の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６１から４６２にカウントアップされる。これに応答して、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６２に対応するユーザデータに切り替わる。ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）は「０」なので、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、そのままセレクタ４３の出力信号（Ｄ＿ＯＵＴ２）として出力される。尚、Ｄ＿Ｆ／Ｆ５７から出力される出力信号（Ｄ＿ＯＵＴ３）は、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）より１クロック分遅延しているため、この時点では、未だカウント値４６１に対応するユーザデータが出力信号（Ｄ＿ＯＵＴ３）として出力されている。従って、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）で、カウント値４６１に対応するユーザデータがフラッシュメモリ２に取り込まれる。
【０１１２】
この時点での比較回路５４の出力信号は「１」なので、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）は、そのままＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）として出力されている。従って、この時点でのＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）は「１」になっている。一方、比較回路５５の出力信号は「０」なので、ＡＮＤ回路５１の出力信号（Ｋ＿ＩＮ）は「０」になっている。
【０１１３】
ＪＫ−Ｆ／Ｆ４７のＪ端子に入力されているＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）が「１」で、Ｋ端子に入力されているＡＮＤ回路５１の出力信号（Ｋ＿ＩＮ）が「０」なので、ＪＫ−Ｆ／Ｆ４７のＱ端子から出力されるＱ出力信号（ＳＫＩＰ１）は、クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で「０」から「１」に遷移する。但し、シーケンサ制御回路４５から出力されているスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）が「０」なので、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）は「０」のままで変化しない。
【０１１４】
尚、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６２になるため、比較回路５５の出力信号が「１」になる。この比較回路５５の出力信号が「０」に戻るまで、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）が、そのままＡＮＤ回路５１の出力信号（Ｊ＿ＩＮ）として出力されるようになる。一方、比較回路５４の出力信号は「０」になるので、ＡＮＤ回路５０の出力信号（Ｋ＿ＩＮ）は「０」になる。
【０１１５】
ｔ５４の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６２から４６３にカウントアップされる。これに応答して、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６３に対応するユーザデータに切り替わる。
【０１１６】
ＡＮＤ回路５１は、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）を、そのまま出力信号（Ｋ＿ＩＮ）として出力しているので、この時点では、出力信号（Ｋ＿ＩＮ）が「１」になっている。一方、ＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）は「０」なので、ＪＫ−Ｆ／Ｆ４７のＱ端子から出力されるＱ出力信号（ＳＫＩＰ１）は、クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で「１」から「０」に遷移する。シーケンサ制御回路４５から出力されているスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）が「０」なので、出力信号（ＳＫＩＰ１）が「１」から「０」に遷移しても、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）は「０」のままで変化しない。又、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６３になることにより、比較回路５５の出力信号が「０」になるので、出力信号（ＳＫＩＰ１）が「１」から「０」に遷移しても、ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）は「０」のままで変化しない。
【０１１７】
ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）は「０」のままで変化しないので、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）として出力され続け、ダミーデータは出力されない。尚、Ｄ＿Ｆ／Ｆ５７から出力される出力信号（Ｄ＿ＯＵＴ３）は、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）より１クロック分遅延しているため、この時点では、未だカウント値４６２に対応するユーザデータが出力信号（Ｄ＿ＯＵＴ３）として出力されている。従って、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）で、カウント値４６２に対応するユーザデータがフラッシュメモリ２に取り込まれる。
【０１１８】
ｔ５５の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６３から４６４にカウントアップされる。これに応答して、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６４に対応するユーザデータに切り替わる。ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）は「０」なので、セレクタ４２の出力信号（Ｄ＿ＯＵＴ１）が、そのままセレクタ４３の出力信号（Ｄ＿ＯＵＴ２）として出力される。尚、Ｄ＿Ｆ／Ｆ５７から出力される出力信号（Ｄ＿ＯＵＴ３）は、セレクタ４３の出力信号（Ｄ＿ＯＵＴ２）より１クロック分遅延しているため、この時点では、未だカウント値４６３に対応するユーザデータが出力信号（Ｄ＿ＯＵＴ３）として出力されている。従って、ライト・イネーブル信号（ＷＥ＿ＩＮ）の立ち上がり（「０」から「１」への遷移）で、カウント値４６３に対応するユーザデータがフラッシュメモリ２に取り込まれる。
【０１１９】
上述のように、シーケンサ制御回路４５から出力されているスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）が「０」の場合、第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６２に対応するユーザデータと第１バッファ２１−１又は第２バッファ２１−２に保持されているカウント値４６３に対応するユーザデータとの間にダミーデータ（ＦＦｈ）は挿入されない。従って、スキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）を「０」にすることにより、カラムアドレスが７〜５３２の領域、カラムアドレスが５３３〜１０５８の領域又はカラムアドレスが１０５９〜１５８４の領域に書き込むデータの出力を行うことができる。
【０１２０】
次に、第４セクタ領域２８とブロックステータス領域（ＢＳ）３５を含むカラムアドレスが１５８５〜２０９７の領域から読み出したデータを、第１バッファ２１−１又は第２バッファ２１−２に保持する動作について、図９及び図１０を参照して説明する。この動作では、第４セクタ領域２８から読み出されたデータだけが第１バッファ２１−１又は第２バッファ２１−２に保持され、ブロックステータス領域（ＢＳ）３５から読み出されたデータは、第１バッファ２１−１又は第２バッファ２１−２に保持されない。
【０１２１】
図９は、フラッシュメモリ２から読み出したデータを、バッファ９とＥＣＣブロック１１に転送するための回路だけを示している。この回路は、フラッシュメモリ・インターフェース・ブロック１０に含まれており、図６に示したフラッシュメモリ２にデータを転送するための回路と一部の回路を共用している。
【０１２２】
このフラッシュメモリ２から読み出したデータを、バッファ９とＥＣＣブロック１１に転送するための回路は、シーケンサ制御回路４５、アドレスカウンタ４６、ＪＫ−Ｆ／Ｆ（ＪＫフリップ・フロップ）４７、ＡＮＤ回路４９〜５３、５８、比較回路５４、５５、Ｄ−Ｆ／Ｆ５９から構成されている。尚、図９において図６と同じ符号のものは同じものを示している。又、図６の回路は、書き込みで動作の説明で必要な部分だけを示し、図９の回路は、読み出し動作で動作の説明で必要な部分だけを示している。
【０１２３】
以下、図６に示されていない回路、信号等について説明する。シーケンサ制御回路４５から出力されるリード・イネーブル信号（ＲＥ＿ＩＮ）は、フラッシュメモリ２のリード・イネーブル（ＲＥ）の端子に入力され、バッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ１）は、ＡＮＤ回路５８の正論理側の入力端子に入力されている。ＡＮＤ回路５８の負論理側の入力端子には、ＡＮＤ回路５３から出力される選択信号（ＳＥＬ１）が入力されている。ＡＮＤ回路５８から出力されるバッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）は、バッファ９に入力され、このバッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）はバッファ９のライト・イネーブル信号となる。
【０１２４】
Ｄ−Ｆ／Ｆ５９は、イネーブル端子（ＥＮ）を備えたＤフリップフロップであり、このイネーブル端子（ＥＮ）には、ＡＮＤ回路５２から出力される出力信号（ＣＮＴ＿ＥＮ）入力されている。Ｄ−Ｆ／Ｆ５９は、イネーブル端子（ＥＮ）に入力されている信号が「１」の期間に、クロック信号（ＣＬＫ）が立ち上がる（「０」から「１」に遷移する）と、出力信号（Ｄ＿ＩＮ２）が入力端子に入力されている信号（フラッシュメモリ２から出力されているデータ信号（Ｄ＿ＩＮ１））に切り替わる。つまり、シーケンサ制御回路４５から出力されるリード・イネーブル信号（ＲＥ＿ＩＮ）に基づいてフラッシュメモリ２から出力されたデータ信号（Ｄ＿ＩＮ１）は、Ｄ−Ｆ／Ｆ５９でタイミング調整され、出力信号（Ｄ＿ＩＮ２）としてバッファ９及びＥＣＣブロック１１に入力される。
【０１２５】
Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）に対応するデータは、バッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）の立ち上がり（「０」から「１」への遷移）で、バッファ９に取り込まれる。バッファ９に取り込まれたデータは、アドレスカウンタ４６が出力するアドレス信号（ＡＤＲ）が示すカウント値により特定される第１バッファ２１−１又は第２バッファ２１−２内の領域に保持される。
【０１２６】
次に図９と図１０を参照して、カラムアドレスが１５８５〜２０９７の領域から読み出したデータのうち、第４セクタ領域２８から読み出したデータだけを第１バッファ２１−１又は第２バッファ２１−２に保持する動作について説明する。
【０１２７】
以下の説明における読み出し動作は、図５のｔ２４〜ｔ２５の期間に実行される動作の一部である。尚、第４セクタ領域２８から読み出されたデータは、バッファ９とＥＣＣブロック１１に取り込まれ、ＥＣＣブロック１１には、更に、第４付加データ領域３４から読み出されたエラー・コレクション・コード（ＥＣＣ）が取り込まれる。ＥＣＣブロック１１は、第４セクタ領域２８から読み出されたデータ及び第４付加データ領域３４から読み出されたエラー・コレクション・コード（ＥＣＣ）に基づいて、第１バッファ２１−１又は第２バッファ２１−２に保持されているデータに含まれる誤りを訂正するが、以下の説明では、第４セクタ領域２８から読み出したデータを第１バッファ２１−１又は第２バッファ２１−２に保持する動作についてだけ説明する。
【０１２８】
図１０は、ブロックステータス領域（ＢＳ）３５から読み出されたデータに対応するデータ信号（Ｄ＿ＩＮ１）が出力されている期間の近傍における各信号を示している。尚、この動作では、シーケンサ制御回路４５から出力されるスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）が「１」になっている。
【０１２９】
図１０において、クロック信号（ＣＬＫ）、アドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）、アドレス信号（ＡＤＲ）、出力信号（Ｊ＿ＩＮ）、出力信号（Ｋ＿ＩＮ）、出力信号（ＳＫＩＰ１）、出力信号（ＳＫＩＰ２）、出力信号（ＣＮＴ＿ＥＮ）、選択信号（ＳＥＬ１）は、図７と同じ信号を示している。
【０１３０】
ＢＦ＿ＷＥ１は、シーケンサ制御回路４５から出力されるバッファ・ライト・イネーブル信号を表している。ＢＦ＿ＷＥ２は、ＡＮＤ回路５８から出力されるバッファ・ライト・イネーブル信号を表している。ＡＮＤ回路５８は、選択信号（ＳＥＬ１）が「０」の期間、シーケンサ制御回路４５から出力されるバッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ１）を、そのままバッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）として出力する。尚、選択信号（ＳＥＬ１）が「１」の期間は、バッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）が「０」になる。
【０１３１】
ＲＥ＿ＩＮは、シーケンサ制御回路４５から出力されるリード・イネーブル信号を表している。Ｄ＿ＩＮ１は、フラッシュメモリ２から出力されるデータ信号を表している。フラッシュメモリ２から出力されるデータ信号（Ｄ＿ＩＮ１）に対応するデータは、リード・イネーブル信号（ＲＥ＿ＩＮ）の立ち下がり（「１」から「０」への遷移）に応答して切り替わる。ここで、ｔｄは、リード・イネーブル信号（ＲＥ＿ＩＮ）の立ち下がり（「１」から「０」への遷移）から、データ信号（Ｄ＿ＩＮ１）として出力されるデータが切り替わるまでの遅延時間を表している）。Ｄ＿ＩＮ２は、Ｄ−Ｆ／Ｆ５９から出力される出力信号を表している。尚、アドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）とリード・イネーブル信号（ＲＥ＿ＩＮ）は、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が０のときに、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）が第４セクタ領域２８の先頭領域（カラムアドレスが１５８５の領域）から読み出されたデータに対応するように、シーケンサ制御回路４５によって制御されている。
【０１３２】
ｔ６１の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４５９から４６０にカウントアップされ、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）は、この時点でのデータ信号（Ｄ＿ＩＮ１）に対応するデータに切り替わる。つまり、アドレス信号（ＡＤＲ）が示すカウント値のカウントアップに同期して、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）は、次のデータに切り替わる。ここでは、カウント値４５９に対応するデータ（Ｄ＿４５９）からカウント値４６０に対応するデータ（Ｄ＿４６０）に切り替わる。
【０１３３】
ｔ６１〜ｔ６１’の期間：
リード・イネーブル信号（ＲＥ＿ＩＮ）の立ち下がり（「１」から「０」への遷移）に応答して、フラッシュメモリ２から出力されているデータ信号（Ｄ＿ＩＮ１）に対応するデータは次のデータに切り替わる。ここでは、カウント値４６０に対応するデータ（Ｄ＿４６０）からカウント値４６１に対応するデータ（Ｄ＿４６１）に切り替わる。
【０１３４】
ｔ６１’の時点：
バッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）の立ち上がり（「０」から「１」への遷移）で、Ｄ−Ｆ／Ｆ５９から出力されている出力信号（Ｄ＿ＩＮ２）に対応するデータ（Ｄ＿４６０）がバッファ９に取り込まれ、第１バッファ２１−１又は第２バッファ２１−２のカウント値４６０に対応する領域に保持される。
【０１３５】
ｔ６２の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６０から４６１にカウントアップされ、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）は、この時点でのデータ信号（Ｄ＿ＩＮ１）に対応するデータに切り替わる。ここでは、カウント値４６０に対応するデータ（Ｄ＿４６０）からカウント値４６１に対応するデータ（Ｄ＿４６１）に切り替わる。
【０１３６】
尚、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６１になることにより、比較回路５４の出力信号が「１」になる。この比較回路５４の出力信号が「０」に戻るまで、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）が、そのままＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）として出力されようになる。一方、比較回路５５の出力信号は「０」なので、ＡＮＤ回路５１の出力信号（Ｋ＿ＩＮ）は「０」のままになっている。
【０１３７】
ｔ６２〜ｔ６２’の期間：
リード・イネーブル信号（ＲＥ＿ＩＮ）の立ち下がり（「１」から「０」への遷移）に応答して、フラッシュメモリ２から出力されているデータ信号（Ｄ＿ＩＮ１）に対応するデータは次のデータに切り替わる。ここでは、カウント値４６１に対応するデータ（Ｄ＿４６１）からカウント値４６２に対応するデータ（Ｄ＿４６２）に切り替わる。
【０１３８】
ｔ６２’の時点：
バッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）の立ち上がり（「０」から「１」への遷移）で、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）に対応するデータ（Ｄ＿４６１）がバッファ９に取り込まれ、第１バッファ２１−１又は第２バッファ２１−２のカウント値４６１に対応する領域に保持される。
【０１３９】
ｔ６３の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６１から４６２にカウントアップされ、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）は、この時点でのデータ信号（Ｄ＿ＩＮ１）に対応するデータに切り替わる。ここでは、カウント値４６１に対応するデータ（Ｄ＿４６１）からカウント値４６２に対応するデータ（Ｄ＿４６２）に切り替わる。
【０１４０】
ＡＮＤ回路５０は、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）を、そのまま出力信号（Ｊ＿ＩＮ）として出力しているので、この時点では、出力信号（Ｊ＿ＩＮ）が「１」になっている。一方、ＡＮＤ回路５１の出力信号（Ｋ＿ＩＮ）は「０」なので、ＪＫ−Ｆ／Ｆ４７のＱ端子から出力されるＱ出力信号（ＳＫＩＰ１）は、クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で「０」から「１」に遷移する。また、シーケンサ制御回路４５から出力されているスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）が「１」なので、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）も「０」から「１」に遷移する。
【０１４１】
尚、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６２になることにより、比較回路５５の出力信号が「１」になる。この比較回路５５の出力信号が「０」に戻るまで、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）が、そのままＡＮＤ回路５１の出力信号（Ｋ＿ＩＮ）として出力されるようになる。一方、比較回路５４の出力信号は「０」に戻るで、ＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）は「０」になる。
【０１４２】
ｔ６３〜ｔ６３’の期間：
リード・イネーブル信号（ＲＥ＿ＩＮ）の立ち下がり（「１」から「０」への遷移）に応答して、フラッシュメモリ２から出力されるデータ信号（Ｄ＿ＩＮ１）に対応するデータは次のデータに切り替わる。ここでは、カウント値４６２に対応するデータ（Ｄ＿４６２）からブロックステータス領域（ＢＳ）３５から読み出されたデータに切り替わる。
【０１４３】
ｔ６３’の時点：
バッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）の立ち上がり（「０」から「１」への遷移）で、Ｄ−Ｆ／Ｆ５９から出力されている出力信号（Ｄ＿ＩＮ２）に対応するデータ（Ｄ＿４６２）がバッファ９に取り込まれ、第１バッファ２１−１又は第２バッファ２１−２のカウント値４６２に対応する領域に保持される。
【０１４４】
ｔ６４の時点：
ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）が「１」の期間は、ＡＮＤ回路５２の出力信号（ＣＮＴ＿ＥＮ）が「０」なので、クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値はカウントアップされない。従って、比較回路５５の出力信号も「１」のまま維持される。
【０１４５】
ＡＮＤ回路５１は、シーケンサ制御回路４５から出力されるアドレス・インクリメンタル信号（ＡＤ＿ＩＮＣ）を、そのまま出力信号（Ｋ＿ＩＮ）として出力しているので、この時点では、出力信号（Ｋ＿ＩＮ）が「１」になっている。一方、ＡＮＤ回路５０の出力信号（Ｊ＿ＩＮ）は「０」なので、ＪＫ−Ｆ／Ｆ４７のＱ端子から出力されるＱ出力信号（ＳＫＩＰ１）は、クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、「１」から「０」に遷移する。このＱ出力信号（ＳＫＩＰ１）が「１」から「０」に遷移することにより、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）も「１」から「０」に遷移する。又、比較回路５５の出力信号が「１」なので、ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）が「０」から「１」に遷移する。
【０１４６】
ＡＮＤ回路５２の出力信号（ＣＮＴ＿ＥＮ）が「０」なので、クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）は、この時点でのデータ信号（Ｄ＿ＩＮ１）に対応するデータに切り替わらない。つまり、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）は、カウント値４６２に対応するデータ（Ｄ＿４６２）からブロックステータス領域（ＢＳ）３５から読み出されたデータに切り替わらない。
【０１４７】
ｔ６４〜ｔ６４’の期間：
リード・イネーブル信号（ＲＥ＿ＩＮ）の立ち下がり（「１」から「０」への遷移）に応答して、フラッシュメモリ２から出力されるデータ信号（Ｄ＿ＩＮ１）に対応するデータは次のデータに切り替わる。ここでは、ブロックステータス領域（ＢＳ）３５から読み出されたデータから、カウント値４６３に対応するデータ（Ｄ＿４６３）に切り替わる。
【０１４８】
ｔ６４’の時点：
選択信号（ＳＥＬ１）が「１」の期間は、バッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）が「０」なので、Ｄ−Ｆ／Ｆ５９から出力されている出力信号（Ｄ＿ＩＮ２）に対応するデータ（Ｄ＿４６２）はバッファ９に取り込まれない。
【０１４９】
ｔ６５の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６２から４６３にカウントアップされ、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）は、この時点でのデータ信号（Ｄ＿ＩＮ１）に対応するデータに切り替わる。ここでは、カウント値４６２に対応するデータ（Ｄ＿４６２）からカウント値４６３に対応するデータ（Ｄ＿４６３）に切り替わる。
【０１５０】
アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６２から４６３になるので、比較回路５５の出力信号が「０」になり、ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）も「０」になる。又、ＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）が「０」になるので、シーケンサ制御回路４５から出力されるバッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ１）が、そのままバッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）として出力されるようになる。
【０１５１】
ｔ６５〜ｔ６５’の期間：
リード・イネーブル信号（ＲＥ＿ＩＮ）の立ち下がり（「１」から「０」への遷移）に応答して、フラッシュメモリ２から出力されるデータ信号（Ｄ＿ＩＮ１）に対応するデータは次のデータに切り替わる。ここでは、カウント値４６３に対応するデータ（Ｄ＿４６３）からカウント値４６４に対応するデータ（Ｄ＿４６４）に切り替わる。
【０１５２】
ｔ６５’の時点：
バッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）の立ち上がり（「０」から「１」への遷移）で、Ｄ−Ｆ／Ｆ５９から出力されている出力信号（Ｄ＿ＩＮ２）に対応するデータ（Ｄ＿４６３）がバッファ９に取り込まれ、第１バッファ２１−１又は第２バッファ２１−２のカウント値４６３に対応する領域に保持される。
【０１５３】
ｔ６６の時点：
クロック信号（ＣＬＫ）の立ち上がり（「０」から「１」への遷移）で、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値が４６３から４６４にカウントアップされ、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）は、この時点でのデータ信号（Ｄ＿ＩＮ１）に対応するデータに切り替わる。ここでは、カウント値４６３に対応するデータ（Ｄ＿４６３）からカウント値４６４に対応するデータ（Ｄ＿４６４）に切り替わる。
【０１５４】
ｔ６６〜ｔ６６’の期間：
リード・イネーブル信号（ＲＥ＿ＩＮ）の立ち下がり（「１」から「０」への遷移）に応答して、フラッシュメモリ２から出力されているデータ信号（Ｄ＿ＩＮ１）に対応するデータは次のデータに切り替わる。ここでは、カウント値４６４に対応するデータ（Ｄ＿４６４）からカウント値４６５に対応するデータ（Ｄ＿４６５）に切り替わる。
【０１５５】
ｔ６６’の時点：
バッファ・ライト・イネーブル信号（ＢＦ＿ＷＥ２）の立ち上がり（「０」から「１」への遷移）で、Ｄ−Ｆ／Ｆ５９から出力されている出力信号（Ｄ＿ＩＮ２）に対応するデータ（Ｄ＿４６０）がバッファ９に取り込まれ、第１バッファ２１−１又は第２バッファ２１−２のカウント値４６４に対応する領域に保持される。
【０１５６】
上述のように、第４セクタ領域２８とブロックステータス領域（ＢＳ）３５を含む領域からのデータの読み出しでは、シーケンサ制御回路４５からスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）として「１」が出力されているため、ＪＫ−Ｆ／Ｆ４７のＱ端子から出力されるＱ出力信号（ＳＫＩＰ１）が「１」の期間（ｔ６３〜ｔ６４の期間）は、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）が「１」になる。ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）が「０」の期間は、ＡＮＤ回路５２から出力される出力信号（ＣＮＴ＿ＥＮ）も「０」なので、Ｄ−Ｆ／Ｆ５９から出力される出力信号（Ｄ＿ＩＮ２）は、カウント値４６２に対応するデータ（Ｄ＿４６２）からブロックステータス領域（ＢＳ）３５から読み出されたデータに切り替わらない。又、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）が「０」の期間は、アドレスカウンタ４６から出力されるアドレス信号（ＡＤＲ）が示すカウント値もカウントアップされない。従って、第１バッファ２１−１又は第２バッファ２１−２のカウント値０〜５１１に対応する領域には、第４セクタ領域２８から読み出されたデータだけがカラムアドレスの順番で保持される。
【０１５７】
第１セクタ領域２５、第２セクタ領域２６及び第３セクタ領域２７からのデータの読み出しでは、シーケンサ制御回路４５からスキップ・セレクト信号（ＳＫＰ＿ＳＥＬ）として「０」が出力されているため、ＡＮＤ回路４９の出力信号（ＳＫＩＰ２）及びＡＮＤ回路５３が出力する選択信号（ＳＥＬ１）は「０」のままで変化しない。従って、第１セクタ領域２５、第２セクタ領域２６及び第３セクタ領域２７の各領域から読み出されたデータは、第１バッファ２１−１又は第２バッファ２１−２のカウント値０〜５１１に対応する領域にカラムアドレスの順番で保持される。
【０１５８】
以上の説明では、1個のページに４セクタのユーザデータが記憶される構成のフラッシュメモリ２を例として説明したが、1個のページに複数セクタのユーザデータが記憶される構成であれば、1個のページに記憶されるユーザデータのセクタ数が限定されることはない。例えば、個のページに記憶されるユーザデータのセクタ数は、８セクタであってもよい。
【０１５９】
又、ブロックステータス領域（ＢＳ）３５を挟んで２つの領域に分割されるセクタ領域（ユーザデータが記憶される領域）におけるブロックステータス領域（ＢＳ）３５の位置についても限定されることはない。つまり、本実施の形態では、カウント値４６２に対応するユーザデータを書き込む領域とカウント値４６３に対応するユーザデータを書き込む領域の間にブロックステータス領域（ＢＳ）３５があったが、このブロックステータス領域（ＢＳ）３５の位置が変わって同様に実施することができる。例えば、カウント値３９７に対応するユーザデータを書き込む領域とカウント値３９８に対応するユーザデータを書き込む領域の間にブロックステータス領域（ＢＳ）３５があった場合は、比較回路５４の出力信号が「１」になるカウント値を３９８に設定し、比較回路５５の出力信号が「１」になるカウント値を３９９に設定すればよい。
【０１６０】
又、本実施の形態では、カウントアップ動作をするアドレスカウンタ４６を用いたが、比較回路５４及び比較回路５５の出力信号が「１」になるカウント値、アドレスカウンタ４６のカウント値と第１バッファ２１−１及び第２バッファ２１−２内の領域との対応関係等を適宜設定すれば、アドレスカウンタ４６はカウントダウン動作するものであってもよい。
【図面の簡単な説明】
【０１６１】
【図１】本発明の実施の形態であるフラッシュメモリシステムの概略構成を示すブロック図である。
【図２】本発明の実施の形態で使用されるフラッシュメモリの、アドレス空間の構成について説明する図である。
【図３】本発明の実施の形態におけるページの構成（記憶領域の割当て）を概略的に示す図である。
【図４】フラッシュメモリの１ページ分の書き込み動作を説明する図である。
【図５】フラッシュメモリの１ページ分の読み出し動作を説明する図である。
【図６】本発明の実施の形態であるフラッシュメモリ・インターフェース・ブロック１０内のデータ書き込みに関わる構成を示す図である。
【図７】本発明の実施の形態におけるデータ書き込み動作で、ブロックステータス領域（ＢＳ）近傍における第４セクタ領域の書き込み動作を説明する図である。
【図８】本発明の実施の形態におけるデータ書き込み動作で、第１〜第３セクタ領域の書き込み動作を説明する図である。
【図９】本発明の実施の形態であるフラッシュメモリ・インターフェース・ブロック１０内のデータ読み出しに関わる構成を示す図である。
【図１０】本発明の実施の形態におけるデータ読み出し動作で、ブロックステータス部（ＢＳ）近傍における第４セクタ領域のデータ読み出し動作を説明する図である。
【図１１】従来技術におけるページの構成（記憶領域の割当て）を概略的に示す図である。
【符号の説明】
【０１６２】
１・・・フラッシュメモリシステム
２・・・フラッシュメモリ
３・・・メモリコントローラ
４・・・ホストシステム
６・・・マイクロプロセッサ（動作指示出力手段）
７・・・ホスト・インターフェース・ブロック
８・・・ワークエリア
９・・・バッファ（データ保持手段）
１０・・・フラッシュメモリ・インターフェース・ブロック（データ入出力手段）
１１・・・ＥＣＣ（エラー・コレクション・コード）ブロック
１２・・・ＲＯＭ
１３・・・外部バス
１４・・・内部バス
１５・・・チップセレクト信号線
１６−１〜１６−２・・・第１〜第２レジスタ
２１−１〜２１−２・・・第１〜第２バッファ、
２５・・・第１セクタ領域
２６・・・第２セクタ領域
２７・・・第３セクタ領域
２８・・・第４セクタ領域
３０・・・ヘッダ領域（ＨＤ）
３１・・・第１付加データ領域
３２・・・第２付加データ領域
３３・・・第３付加データ領域
３４・・・第４付加データ領域
３５・・・ブロックステータス領域（ＢＳ）
３８・・・「第４セクタ＋ＢＳ」（第４セクタとブロックステータス部（ＢＳ）を併せた領域）
４２、４３・・・セレクタ
４５・・・シーケンサ制御回路
４６・・・アドレスカウンタ
４７・・・ＪＫ−Ｆ／Ｆ（ＪＫフリップ・フロップ）
４９〜５３、５８・・・ＡＮＤ回路
５４、５５・・・比較回路
５７、５９・・・Ｄ−Ｆ／Ｆ（Ｄフリップ・フロップ）
【図１】
2008234514.tif 000003
【図２】
2008234514.tif 000004
【図３】
2008234514.tif 000005
【図４】
2008234514.tif 000006
【図５】
2008234514.tif 000007
【図６】
2008234514.tif 000008
【図７】
2008234514.tif 000009
【図８】
2008234514.tif 000010
【図９】
2008234514.tif 000011
【図１０】
2008234514.tif 000012
【図１１】
2008234514.tif 000013