JP4640366B2 - メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 - Google Patents

メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Download PDF

Info

Publication number
JP4640366B2
JP4640366B2 JP2007075932A JP2007075932A JP4640366B2 JP 4640366 B2 JP4640366 B2 JP 4640366B2 JP 2007075932 A JP2007075932 A JP 2007075932A JP 2007075932 A JP2007075932 A JP 2007075932A JP 4640366 B2 JP4640366 B2 JP 4640366B2
Authority
JP
Japan
Prior art keywords
data
output
flash memory
signal
area
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2007075932A
Other languages
English (en)
Other versions
JP2008234514A (ja
Inventor
琢真 光永
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
TDK Corp
Original Assignee
TDK Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by TDK Corp filed Critical TDK Corp
Priority to JP2007075932A priority Critical patent/JP4640366B2/ja
Publication of JP2008234514A publication Critical patent/JP2008234514A/ja
Application granted granted Critical
Publication of JP4640366B2 publication Critical patent/JP4640366B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Description

本発明は、メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法に関する。
メモリカードやシリコンディスクなどの記憶媒体である半導体メモリとして、フラッシュメモリが多く用いられている。フラッシュメモリにはNOR型フラッシュメモリとNAND型フラッシュメモリがあり、特にNAND型フラッシュメモリは集積度に優れ、また書き込みに必要な動作電流が少ないなどの特長により大容量のメモリとして急成長をとげている。
NAND型フラッシュメモリでは、これらのメモリセルを消去状態から書き込み状態に変化させる場合には、メモリセル単位で行うことができるが、メモリセルを書き込み状態から消去状態に変化させる場合には、メモリセル単位で行うことができず、所定数のメモリセルからなるブロック単位で一括消去することが行われる(ブロック消去)。
また、所定数のメモリセルからなるブロック(物理ブロック)は、書き込み及び読み出しのアクセス処理単位である複数個のページで構成されている。例えば、1個の物理ブロックが32個のページで構成され、各ページが1セクタ(=512バイト)のユーザ領域と16バイトの冗長領域とによって構成されているフラッシュメモリや、1個の物理ブロックが64個のページで構成され、1個のページが4セクタ(=2048バイト)のユーザ領域と64バイトの冗長領域とによって構成されているフラッシュメモリがある。フラッシュメモリにデータを書き込むときは、フラッシュメモリ内のレジスタを介してメモリセルにデータが書き込まれ、フラッシュメモリからデータを読み出すときは、フラッシュメモリ内のレジスタを介してメモリセルからデータが読み出される。
従来、1個のページが複数セクタのユーザ領域で構成されているフラッシュメモリでは、例えば、図11に示したように各領域が割り当てられていた。図11において、25〜28はユーザ領域を512バイト毎に分割した第1〜第4セクタ領域を示し、これらの領域は512バイト単位のユーザデータを記憶するための領域として使用されていた。31〜34は第1〜第4セクタ領域に対応した第1〜第4付加データ領域(14バイトの領域)を示し、これらの領域はエラー・コレクション・コード(ECC)などの付加データを記憶するための領域として使用されていた。また、30は7バイトのヘッダ領域(HD)を示し、この領域は論理アドレス情報(論理ブロックと物理ブロックの対応関係を示す情報)などを記憶するための領域として使用されていた。また、35は1バイトのブロックステータス領域(BS)を示し、この領域は当該物理ブロックが不良ブロックであるか否かを示すブロックステータスを記憶するための領域として使用されていた。
512バイト単位のユーザデータの書き込みでは、ユーザデータの書き込みと、このユーザデータに対応するエラー・コレクション・コード(ECC)の書き込みが連続して行われ、読み出しでは、ユーザデータの読み出しと、このユーザデータに対応するエラー・コレクション・コード(ECC)の読み出しが連続して行われる。従って、図11に示したように各領域が割り当てられていた場合、第1セクタ領域25→第1付加データ領域31→第2セクタ領域26→第2付加データ領域32→第3セクタ領域27→第3付加データ領域33→第4セクタ領域28→第4付加データ領域34の順番で書き込み又は読み出しが行われる。この書き込み又は読み出しでは、書き込むデータ又は読み出すデータがユーザデータからエラー・コレクション・コード(ECC)に切り替わるとき又はエラー・コレクション・コード(ECC)からユーザデータに切り替わるときにカラムアドレスが不連続になるため、書き込み又は読み出しの処理が複雑になるという問題があった。
この問題を解決する技術が下記特許文献1に提案されている。特許文献1の技術では、1個のページが複数セクタのユーザ領域で構成されているフラッシュメモリにおいて、512バイト単位のユーザデータとその付加データをカラムアドレスが連続する領域に割り当て (特許文献1の図6参照)、上記問題を解決している。
特開2005−292925号公報
しかしながら、特許文献1に示した従来技術では、2048のカラムアドレスにブロックステータス領域(BS)35が割り当てられることが考慮されていなかった。一般的なフラッシュメモリでは、カラムアドレスが2048の領域は、初期不良ブロックを識別するためのブロックステータスが書き込まれる領域に割り当てられている。従って、カラムアドレスが2048の領域をブロックステータス領域(BS)35に割り当てれば、各物理ブロックのブロックステータス領域(BS)35からブロックステータスを読み出すことにより、その物理ブロックが初期不良ブロック、後発不良ブロック及び良品ブロックのいずれに該当するかを判断することができる。尚、初期不良ブロックのブロックステータスについては00h(16進数表示)が出荷前に書き込まれており、このブロックステータスは消去することができない。又、良品ブロックのブロックステータスは消去状態のFFh(16進数表示)であり、後発不良ブロックのブロックステータスについては、0Fh(16進数表示)やF0h(16進数表示)などが書き込まれる。特許文献1では、このようなことが考慮されていないため、良品ブロックのブロックステータス領域(BS)35にユーザデータなどが書き込まれてしまう。その結果、各物理ブロックのブロックステータス領域(BS)35から読み出したブロックステータスに基づいて、その物理ブロックが初期不良ブロック、後発不良ブロック及び良品ブロックのいずれに該当するかを判断することができなくなってしまう。
本発明の目的は、512バイト単位のユーザデータと、そのエラー・コレクション・コード(ECC)を含む付加データが書き込まれる領域をカラムアドレスが連続する領域に割り当てたときに、ブロックステータス領域にユーザデータや付加データが書き込まれてしまうことを回避することができるメモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法を提供することにある。
本発明のメモリコントローラは、ホストシステムからの要求に応じて、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、前記ホストシステム側から供給される1セクタ単位のユーザデータを保持するデータ保持手段と、前記データ保持手段に保持されている前記ユーザデータを先頭データから順番に前記フラッシュメモリに転送するユーザデータ転送手段と、前記ユーザデータ転送手段により前記フラッシュメモリに転送される前記ユーザデータに対応する誤り訂正符号を含む付加データを前記フラッシュメモリに転送する付加データ転送手段と、予め設定されたダミーデータを前記フラッシュメモリに転送するダミーデータ転送手段と、前記ユーザデータ転送手段、前記付加データ転送手段及び前記ダミーデータ転送手段を択一的に動作させる制御手段とを備え、前記制御手段は、前記フラッシュメモリに転送されるデータの書き込み先がブロックステータスの記憶領域に対応するときにだけ前記ダミーデータ転送手段を動作させ、前記ユーザデータと該ユーザデータに対応する前記付加データは、前記ページ内の連続した領域に書き込まれることを特徴とする。
本発明のメモリコントローラは、更に、一定の周期でカウントアップされるカウンタ手段を備えることが好ましく、前記カウンタ手段は、前記ダミーデータが前記フラッシュメモリに転送される期間に係わるときに1周期分のカウントアップを停止し、前記ユーザデータ転送手段は、前記カウンタ手段から出力されるカウント値に基づいて、前記ユーザデータの先頭データから末尾データまでのデータの中から前記フラッシュメモリに転送するデータを決定することが好ましい。尚、前記カウンタ手段については、一定の周期でカウントダウンされる構成であっても実質的に同様の効果を得ることができる。
又、前記ダミーデータの論理値が、前記フラッシュメモリの消去状態の論理値に一致することが好ましい。
本発明のフラッシュメモリシステムは、上記メモリコントローラと、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリを備えることを特徴とする。
本発明のフラッシュメモリの制御方法は、ホストシステムからの要求に応じて、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、前記ホストシステム側から供給される1セクタ単位のユーザデータを保持するデータ保持工程と、前記データ保持工程で保持される前記ユーザデータを先頭データから順番に前記フラッシュメモリに転送するユーザデータ転送工程と、前記ユーザデータ転送工程により前記フラッシュメモリに転送される前記ユーザデータに対応する誤り訂正符号を含む付加データを前記フラッシュメモリに転送する付加データ転送工程と、予め設定されたダミーデータを前記フラッシュメモリに転送するダミーデータ転送工程とを有し、前記ユーザデータ転送工程、前記付加データ転送工程及び前記ダミーデータ転送工程は択一的に実行され、前記ダミーデータ転送工程は、前記フラッシュメモリに転送されるデータの書き込み先がブロックステータスの記憶領域に対応するときにだけ実行され、前記ユーザデータと該ユーザデータに対応する前記付加データは、前記ページ内の連続した領域に書き込まれることを特徴とする。
前記ユーザデータ転送工程、前記付加データ転送工程及び前記ダミーデータ転送工程が、一定の周期でカウントアップ又はカウントダウンされるカウンタのカウント値に基づいて、択一的に実行されることが好ましい。
本発明によれば、初期不良ブロックのブロックステータスが書き込まれる領域に、ブロックステータス領域を割り当て、512バイト単位のユーザデータと、そのエラー・コレクション・コード(ECC)を含む付加データが書き込まれる領域をカラムアドレスが連続する領域に割り当てても、ブロックステータス領域にブロックステータス以外のデータが書き込まれてしまうことを回避することができる。
次に、本発明を実施するための最良の形態を、図面を参照して具体的に説明する。
図1は、本発明の実施の形態であるフラッシュメモリシステムの概略構成を示すブロック図である。図1に示すように、フラッシュメモリシステム1は、フラッシュメモリ2と、それを制御するメモリコントローラ3で構成され、フラッシュメモリ2とメモリコントローラ3は内部バス14を介して接続されている。また、フラッシュメモリシステム1は、外部バス13を介してホストシステム4と接続される。
ホストシステム4は、ホストシステム4の全体の動作を制御するためのCPU(Central Processing Unit)と、フラッシュメモリシステム1との情報の授受を担うコンパニオンチップ等とから構成される。ホストシステム4は、例えば文字、音声、あるいは画像情報等の種々の情報を処理するパーソナルコンピュータやデジタルスチルカメラをはじめとする各種情報処理装置であってもよい。
フラッシュメモリ2は、NAND型フラッシュメモリであり、データを書き込むときは、メモリコントローラ3から入力されたデータが、内部のレジスタに保持された後、レジスタからメモリセルアレイに書き込まれる。一方、フラッシュメモリ2からデータを読み出すときは、メモリセルアレイからレジスタにデータが読み出された後、レジスタに読み出されたデータがメモリコントローラ3に転送される。
メモリコントローラ3は、マイクロプロセッサ6と、ホスト・インターフェース・ブロック7と、ワークエリア8と、バッファ9と、フラッシュメモリ・インターフェース・ブロック10と、ECC(エラー・コレクション・コード)ブロック11と、ROM(Read Only Memory)12とから構成される。これらの機能ブロックによって構成されるメモリコントローラ3は、一つの半導体チップ上に集積されている。
マイクロプロセッサ6は、メモリコントローラ3を構成する各機能ブロック全体の動作を制御するための機能ブロックである。
ホスト・インターフェース・ブロック7は、ホストシステム4との間で、外部バス13を介して、データ、アドレス、ステータス、外部コマンド等の情報の授受を行う。ホストシステム4よりフラッシュメモリシステム1に供給されるデータ等は、ホスト・インターフェース・ブロック7を入口としてメモリコントローラ3の内部(例えば、バッファ9)に取り込まれる。フラッシュメモリシステム1からホストシステム4に供給されるデータ等は、ホスト・インターフェース・ブロック7を出口としてホストシステム4に供給される。
フラッシュメモリ・インターフェース・ブロック10は、内部バス14を介して、フラッシュメモリ2とデータ、アドレス、ステータス、内部コマンド等の情報の授受を行う。ここで、フラッシュメモリ2は、コマンド・ラッチ・イネーブル(CLE)、アドレス・ラッチ・イネーブル(ALE)、ライト・イネーブル(WE)、リード・イネーブル(RE)、チップ・イネーブル(CE)等の制御信号端子を備えている。これらの制御信号端子に入力される信号は、フラッシュメモリ2の入出力バス(I/O)に入出力される情報に応じて制御される。
尚、「内部コマンド」とは、メモリコントローラ3がフラッシュメモリ2を制御するためのコマンドであり、ホストシステム4からメモリコントローラ3に与えられるコマンドを「外部コマンド」と言う。
ホスト・インターフェース・ブロック7及びフラッシュメモリ・インターフェース・ブロック10には各種レジスタが備わる。ホスト・インターフェース・ブロック7のレジスタにはホストシステム4から与えられるアドレス、外部コマンド等の情報が書き込まれる。また、フラッシュメモリ・インターフェース・ブロック10のレジスタには、ホスト・インターフェース・ブロック7に書き込まれた情報に基づいて、フラッシュメモリ2内のアクセス対象領域を指示する情報が書き込まれる。
ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。メモリコントローラ3の内部では、複数個のセクタをまとめた論理ブロックが構成され、各論理ブロックに対応するデータは、その論理ブロックに割り当てられた1個又は複数個の物理ブロックに書き込まれる。従って、メモリコントローラ3は、論理ブロックと物理ブロックの対応関係を管理している。
ワークエリア8は、マイクロプロセッサ6によるフラッシュメモリ2の制御に必要なデータが一時的に保持される作業領域であり、複数のSRAM(Static Random Access Memory)セルによって構成される。例えば、物理ブロックと論理ブロックとの対応関係を管理するためのアドレス変換テーブルは、このワークエリア8上に作成される。
バッファ9は、フラッシュメモリ2から読み出されたデータ及びフラッシュメモリ2に書き込むべきデータを一時的に保持するバッファである。すなわち、フラッシュメモリ2から読み出されたデータは、ホストシステム4が受け取り可能な状態となるまでバッファ9に保持され、フラッシュメモリ2に書き込むべきデータは、フラッシュメモリ2が書き込み可能な状態となるまでバッファ9に保持される。
ECCブロック11は、フラッシュメモリ2に書き込むデータに対応するエラー・コレクション・コードを生成するとともに、読み出しデータに対応するエラー・コレクション・コードに基づいて、読み出しデータに含まれる誤りを検出・訂正する。
ROM12は、不揮発性の記憶素子であり、プログラム等を記憶している。マイクロプロセッサ6は、ROM12に記憶されているプログラムを読み込むことで、各種処理を実行している。また、ROM12は、各種処理等を定義したコマンドセットで構成さたシーケンスコマンドも記憶しており、フラッシュメモリ・インターフェース・ブロック10は、このシーケンスコマンドに従って、フラッシュメモリ2とデータ、アドレス、ステータス、内部コマンド等の情報の授受を行う。
次に、本実施の形態のフラッシュメモリ2におけるアドレス空間の構造を、図2を参照して説明する。
本実施の形態で用いたフラッシュメモリ2のアドレス空間は、ブロック0〜ブロック4095からなる4096個の物理ブロックで構成されている。各物理ブロックは、ページ0〜ページ63からなる64個のページで構成されている。更に、各ページは、2112バイトの領域で構成されている。
ここで、フラッシュメモリ2が有する4096個の物理ブロックに付けた通番が、物理ブロックを特定するための物理ブロックアドレス(PBA)である。フラッシュメモリ2が有する4096個の物理ブロックに含まれる全てのページ、つまり、262144個のページに付けた通番が、フラッシュメモリ2に与えるロウアドレス(0〜262143)に対応する。つまり、ロウアドレスにより、書き込み又は読み出しの対象のページが特定される。また、各ページ内の領域には、図2に示したように、ビットb0〜b7からなる8ビットを1バイトとした、0〜2111のカラムアドレスが割り当てられている。
更に、ページの構造について、図3を参照して説明する。
本実施の形態では、0〜2111のカラムアドレスが割り当てられている2112バイトの領域を、従来のようにユーザ領域と冗長領域に分離せずに使用している。カラムアドレスが0〜6の7バイトの領域には、ヘッダ領域(HD)30が割り当てられている。カラムアドレスが7〜518の512バイトの領域には、第1セクタ領域25が割り当てられている。カラムアドレスが519〜532の14バイトの領域には、第1付加データ領域31が割り当てられている。カラムアドレスが533〜1044の512バイトの領域には、第2セクタ領域26が割り当てられている。カラムアドレスが1045〜1058の14バイトの領域には、第2付加データ領域32が割り当てられている。カラムアドレスが1059〜1570の512バイトの領域には、第3セクタ領域27が割り当てられている。カラムアドレスが1571〜1584の14バイトの領域には、第3付加データ領域33が割り当てられている。カラムアドレスが2048のブロックステータス領域(BS)35を挟んだ、カラムアドレスが1585〜2047の領域と2049〜2097の領域には、第4セクタ領域28が割り当てられている。つまり、第4セクタ領域28に割り当てられた512バイトの領域は、ブロックステータス領域(BS)35を挟んで2つの領域28a、28bに分割されている。カラムアドレスが2098〜2111の14バイトの領域には、第4付加データ領域34が割り当てられている。
第1セクタ領域25、第2セクタ領域26、第3セクタ領域27及び第4セクタ領域28は、ホストシステム4から与えられる1セクタ(512バイト)単位のユーザデータが記憶される。第1付加データ領域31、第2付加データ領域32、第3付加データ領域33及び第4付加データ領域34はエラー・コレクション・コード(ECC)を含む付加データが記憶される。ここで、第1付加データ領域31には第1セクタ領域25に対応する付加データが記憶され、第2付加データ領域32には第2セクタ領域26に対応する付加データが記憶され、第3付加データ領域33には第3セクタ領域27に対応する付加データが記憶され、第4付加データ領域34には第4セクタ領域28に対応する付加データが記憶される。
ブロックステータス領域(BS)35に記憶されるブロックステータスと、ヘッダ領域(HD)30に記憶される論理アドレス情報等の管理情報は、物理ブロックに含まれる63個のページに共通な情報であり、このブロックステータスと管理情報は、通常は物理ブロックの先頭ページにだけ書き込まれる。
ブロックステータス領域(BS)35に記憶されるブロックステータスは、当該ページが属する物理ブロックが不良か否かを示す情報であり、初期不良ブロックのブロックステータス領域(BS)35には、出荷前に00h(16進数表示)が書き込まれており、このブロックステータスは消去することができない。又、良品ブロックのブロックステータスは消去状態のFFh(16進数表示)であり、後発不良ブロックのブロックステータスについては、0Fh(16進数表示)やF0h(16進数表示)などが書き込まれる。
上記エラー・コレクション・コード(ECC)は、ホストシステム4から与えられるユーザデータに基づいてECCブロック11で生成される情報であり、フラッシュメモリ2から読み出されるユーザデータに含まれる誤りの検出、訂正に用いられる。例えば、第1セクタ領域25に書き込まれるユーザデータに基づいて生成されるエラー・コレクション・コード(ECC)は、第1付加データ領域31に記憶され、第1セクタ領域25から読み出されるユーザデータに含まれる誤りは、第1付加データ領域31に記憶されているエラー・コレクション・コード(ECC)に基づいて検出、訂正される。尚、エラー・コレクション・コード(ECC)のデータ量は誤りの訂正能力に応じて適宜設定することがでできる。
論理アドレス情報は、ユーザデータが記憶されている物理ブロックと対応関係にある論理ブロックを特定するための情報である。ユーザデータが格納されていない物理ブロックについては、そのブロックの冗長領域に、論理アドレス情報は格納されていない。したがって、冗長領域に論理アドレス情報が格納されているか否かにより、その冗長領域が含まれている物理ブロックに有効なデータが格納されているか否かを判断することができる。つまり、冗長領域に論理アドレス情報が格納されていないとき、その物理ブロックには、有効なデータが格納されていないと判断する。
論理ブロックは、ホストシステム4側のアドレス空間における、複数セクタの領域をまとめたものであり、1個の論理ブロックに含まれる領域は、1個の物理ブロックに含まれる記憶領域となるように設定される。ここで、ホストシステム4側のアドレス空間は、セクタ(512バイト)単位で分割した領域に付けた通番であるLBA(Logical Block Address)で管理されている。又、複数セクタの領域をまとめた論理ブロックに付けた通番を論理ブロック番号(LBN)と呼んでいる。
尚、論理ブロックと物理ブロックとの対応関係は通常、アドレス変換テーブルによって管理され、このアドレス変換テーブルを用いて論理ブロック番号(LBN)が物理ブロックアドレス(PBA)に変換される。又、このアドレス変換テーブルは、ヘッダ領域(HD)30に記憶される論理アドレス情報に基づいて作成される。
次に、ホストシステム4からLBAで指定されるアクセス領域と、フラッシュメモリ2内のページ及び第1セクタ領域25〜第4セクタ領域28との対応関係について説明する。本実施の形態では、1個の論理ブロックに対して1個の物理ブロックを割り当てているため、1個の論理ブロックには256セクタの領域が含まれる。従って、ホストシステム4から指定されたLBAの下位8ビットを除いた上位ビットが論理ブロック番号(LBN)に対応する。この論理ブロック番号(LBN)は、アドレス変換テーブルに基づいて物理ブロックアドレス(PBA)に変換される。ホストシステム4から指定されたLBAの下位8ビットのうち、上位6ビット(0〜63)は物理ブロックに含まれるページ0〜ページ63を特定する番号になり、下位2ビットは各ページに含まれる第1セクタ領域25〜第4セクタ領域28を特定する番号になる。
上記のような対応関係により、フラッシュメモリ2にアクセスするときに与えるロウアドレスは、アドレス変換テーブルに基づいて求められた物理ブロックアドレス(PBA)の下位側に、LBAの下位側から数えて8ビット目から3ビット目までの6ビット(0〜63)を連結することにより求められる。又、フラッシュメモリ2にアクセスするときに与えるカラムアドレスは、LBAの下位2ビットに基づいて特定される。つまり、LBAの下位2ビットが0(2進数表示:00b)のときは、第1セクタ領域25の先頭のカラムアドレスである7が、LBAの下位2ビットが1(2進数表示:01b)のときは、第2セクタ領域26の先頭のカラムアドレスである533が、LBAの下位2ビットが2(2進数表示:10b)のときは、第3セクタ領域27の先頭のカラムアドレスである1059が、LBAの下位2ビットが3(2進数表示:11b)のときは、第4セクタ領域28の先頭のカラムアドレスである1585がフラッシュメモリ2にアクセスするときに与えられる。
次に、フラッシュメモリ2の1個のページに4セクタのユーザデータを書き込む動作を、図4を参照して説明する。
図4(a)はヘッダ領域(HD)30に管理情報を書き込む必要のあるページの場合の書き込み動作であり、t1〜t5の期間にフラッシュメモリ2の入出力バス(I/O)に入力されるコマンド、アドレス及びデータを示している。
t1〜t2の期間:
インプットコマンド(IC)が入出力バス(I/O)に入力される。
t2〜t3の期間:
アドレス(AD)が入出力バス(I/O)に入力される。ここでは、書き込み先のページに対応するロウアドレスとヘッダ領域(HD)30の先頭(図3に示した(1))のカラムアドレスである0が入力される。
t3〜t4の期間:
ロウアドレスで指定されたページに書き込まれるデータ(DT)が入出力バス(I/O)に入力され、ライト・イネーブル(WE)の端子に入力される信号レベルが遷移(ロー・レベルからハイ・レベルへの遷移)するタイミングでフラッシュメモリ2内のレジスタに保持される。入力されたデータ(DT)に対応するカラムアドレスは、ライト・イネーブル(WE)の端子に入力される信号レベルの遷移(ロー・レベルからハイ・レベルへの遷移)に合わせてカウントアップされる(次のカラムアドレスに切り替わる)。このデータ(DT)の入力では、管理情報、ユーザデータ又は付加データが、ライト・イネーブル(WE)の端子に入力される信号レベルの遷移(ロー・レベルからハイ・レベルへの遷移)に合わせて、カラムアドレスの順番で入力される。尚、カラムアドレスが2048に対応するときには、ダミーデータとしてFFh(16進数表示)が入力される。つまり、管理情報、ユーザデータ又は付加データに対応する2111バイトのデータと、カラムアドレスが2048のときに入力されるダミーデータがカラムアドレスの順番で入力される。
t4〜t5の期間:
プログラムコマンド(PC)が入出力バス(I/O)に入力される。このプログラムコマンド(PC)に応答して、入出力バス(I/O)に入力され、フラッシュメモリ2内のレジスタに保持されたデータ(DT)が、メモリセルアレイに書き込まれる。この書き込みでは、t2〜t3の期間に入力されたロウアドレスで指定されたページに、レジスタに保持されているデータ(DT)が書き込まれる。
また、図4(b)はヘッダ領域(HD)30に管理情報を書き込む必要がないページの場合の書き込み動作であり、t11〜t15の期間にフラッシュメモリ2の入出力バス(I/O)に入力されるコマンド、アドレス及びデータを示している。
t11〜t12の期間:
インプットコマンド(IC)が入出力バス(I/O)に入力される。
t12〜t13の期間:
アドレス(AD)が入出力バス(I/O)に入力される。ここでは、書き込み先のページに対応するロウアドレスと第1セクタ領域25の先頭(図3に示した(2))のカラムアドレスである7が入力される。
t13〜t14の期間:
ロウアドレスで指定されたページに書き込まれるデータ(DT)が入出力バス(I/O)に入力され、ライト・イネーブル(WE)の端子に入力される信号レベルが遷移(ロー・レベルからハイ・レベルへの遷移)するタイミングでフラッシュメモリ2内のレジスタに保持される。入力されたデータ(DT)に対応するカラムアドレスは、ライト・イネーブル(WE)の端子に入力される信号レベルの遷移(ロー・レベルからハイ・レベルへの遷移)に合わせてカウントアップされる(次のカラムアドレスに切り替わる)。このデータ(DT)の入力では、ユーザデータ又は付加データが、ライト・イネーブル(WE)の端子に入力される信号レベルの遷移(ロー・レベルからハイ・レベルへの遷移)に合わせて、カラムアドレスの順番で入力される。尚、カラムアドレスが2048に対応するときには、ダミーデータとしてFFh(16進数表示)が入力される。つまり、ユーザデータ又は付加データに対応する2104バイトのデータと、カラムアドレスが2048のときに入力されるダミーデータがカラムアドレスの順番で入力される。この期間に入力されたデータ(DT)はフラッシュメモリ2内のレジスタに保持されるが、データ(DT)が保持されないカラムアドレスが0〜6に対応する領域には、FFh(16進数表示)が保持される。
t14〜t15の期間:
プログラムコマンド(PC)が入出力バス(I/O)に入力される。このプログラムコマンド(PC)に応答して、入出力バス(I/O)に入力され、フラッシュメモリ2内のレジスタに保持されたデータ(DT)が、メモリセルアレイに書き込まれる。この書き込みでは、t12〜t13の期間に入力されたロウアドレスで指定されたページに、レジスタに保持されているデータ(DT)が書き込まれる。
尚、第2セクタ領域26、第3セクタ領域27又は第4セクタ領域28から書き込みを開始するときは、第2セクタ領域26、第3セクタ領域27又は第4セクタ領域28の先頭のカラムアドレスがアドレス(AD)として入力される。又、書き込むユーザデータが4セクタ未満(1〜3セクタ)の場合には、書き込むセクタ分のユーザデータと、そのユーザデータに対応する付加データがデータ(DT)として入力される。
また、インプットコマンド(IC)、及びプログラムコマンド(PC)が入出力バス(I/O)に入力されている期間は、コマンド・ラッチ・イネーブル(CLE)の端子にハイ・レベルの信号が入力され、アドレス・ラッチ・イネーブル(ALE)の端子にロー・レベルの信号が入力される。アドレス(AD)が入出力バス(I/O)に入力されている期間は、コマンド・ラッチ・イネーブル(CLE)の端子にロー・レベルの信号が入力され、アドレス・ラッチ・イネーブル(ALE)の端子にハイ・レベルの信号が入力される。データ(DT)が入出力バス(I/O)に入力されている期間は、コマンド・ラッチ・イネーブル(CLE)の端子にロー・レベルの信号が入力され、アドレス・ラッチ・イネーブル(ALE)の端子にロー・レベルの信号が入力される。インプットコマンド(IC)、プログラムコマンド(PC)及びアドレス(AD)が入出力バス(I/O)に入力されている期間に、ライト・イネーブル(WE)の端子に入力される信号をハイ・レベルからロー・レベルに遷移させることにより、インプットコマンド(IC)、プログラムコマンド(PC)及びアドレス(AD)がフラッシュメモリに取り込まれる。
次に、フラッシュメモリ2の1個のページから4セクタのユーザデータを読み出す動作を、図5を参照して説明する。尚、ユーザデータの読み出しでは、通常、ヘッダ領域(HD)30に記憶されている管理情報は読み出されない。
図5は、t21〜t25の期間にフラッシュメモリ2の入出力バス(I/O)に入力されるコマンド及びアドレスと入出力バス(I/O)から出力されるデータを示している。
t21〜t22の期間:
リードコマンド(RC)が入出力バス(I/O)に入力される。
t22〜t23の期間:
アドレス(AD)が入出力バス(I/O)に入力される。ここでは、読み出すページに対応するロウアドレスと第1セクタ領域25の先頭(図3に示した(2))のカラムアドレスである7が入力される。
t23〜t24の期間:
フラッシュメモリ2内のメモリセルアレイに記憶されているデータがレジスタに読み出される。この読み出しでは、t22〜t23の期間に入力されたロウアドレスで指定されたページに記憶されているデータがレジスタに読み出される。
t24〜t25の期間:
リード・イネーブル(RE)の端子に入力される信号レベルを、ハイ・レベルとロー・レベルに交互に遷移させることより、フラッシュメモリ2内のレジスタに保持されているデータが入出力バス(I/O)から出力される。入出力バス(I/O)から出力されるデータ(DT)のカラムアドレスは、t22〜t23の期間に入力されたカラムアドレスから始まり、リード・イネーブル(RE)の端子に入力される信号レベルの遷移に合わせてカウントアップされる(次のカラムアドレスに切り替わる)。
入出力バス(I/O)から出力されるユーザデータ(第1セクタ領域25、第2セクタ領域26、第3セクタ領域27又は第4セクタ領域28から読み出されたユーザデータ)は、バッファ9に保持される。尚、第4セクタ領域28aと第4セクタ領域28bに挟まれたブロックステータス領域(BS)35から読み出されたブロックステータスについては、バッファ9に保持されないように制御される。
尚、リードコマンド(RC)が入出力バス(I/O)に入力されている期間は、コマンド・ラッチ・イネーブル(CLE)の端子にハイ・レベルの信号が入力され、アドレス・ラッチ・イネーブル(ALE)の端子にロー・レベルの信号が入力される。アドレス(AD)が入出力バス(I/O)に入力されている期間は、コマンド・ラッチ・イネーブル(CLE)の端子にロー・レベルの信号が入力され、アドレス・ラッチ・イネーブル(ALE)の端子にハイ・レベルの信号が入力される。リードコマンド(RC)、及びアドレス(AD)が入出力バス(I/O)に入力されている期間に、ライト・イネーブル(WE)の端子に入力される信号をロー・レベルからハイ・レベルに遷移させることにより、リードコマンド(RC)、及びアドレス(AD)がフラッシュメモリに取り込まれる。
次に、第4セクタ領域28に対するユーザデータの書き込みで、第4セクタ領域28aに書き込むユーザデータと第4セクタ領域28bに書き込むユーザデータとの間にブロックステータス領域(BS)35に書き込むダミーデータを挿入する書き込み動作について図6、図7を参照して説明する。第1セクタ領域25〜第3セクタ領域27に対するユーザデータの書き込み動作についても図8を参照して説明する。
図6は、フラッシュメモリ2にユーザデータ及び付加データを転送するための回路だけを示している。この回路は、フラッシュメモリ・インターフェース・ブロック10に含まれている。
このフラッシュメモリ2にユーザデータ及び付加データを転送するための回路は、シーケンサ制御回路45、アドレスカウンタ46、JK−F/F(JKフリップ・フロップ)47、AND回路49〜53、比較回路54、55、セレクタ42、43、D−F/F(Dフリップ・フロップ)57から構成されている。
バッファ9は、第1セクタ領域25〜第4セクタ領域28に書き込むユーザデータ又は第1セクタ領域25〜第4セクタ領域28から読み出したユーザデータを保持する第1バッファ21−1、第2バッファ21−2と、第1付加データ領域31〜第4付加データ領域34に書き込む付加データを保持する第1レジスタ16−1、第2レジスタ16−2から構成されている。尚、第1付加データ領域31〜第4付加データ領域34に書き込む付加データに含まれるエラー・コレクション・コード(ECC)については、ECCブロック11からフラッシュメモリ2に供給される。
シーケンサ制御回路45、アドレスカウンタ46、JK−F/F47、D−F/F57には共通にクロック信号(CLK)が入力されている。
シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)はAND回路50、51のそれぞれ一方の入力端子に入力され、更にAND回路52の正論理側の入力端子に入力されている。また、シーケンサ制御回路45から出力されるスキップ・セレクト信号(SKP_SEL)はAND回路49の一方の入力端子に入力されている。
AND回路49の出力信号(SKIP2)はAND回路52の負論理側の入力端子に入力されている。また、AND回路52の出力信号(CNT_EN)はアドレスカウンタ46のイネーブル端子(EN)に入力されている。
アドレスカウンタ46の出力信号(10ビットのアドレス信号(ADR))は、比較回路54、55、及びバッファ9に入力されている。また、比較回路54の出力信号はAND回路50の他方の入力端子に入力されている。また、比較回路55の出力信号はAND回路51の他方の入力端子に入力され、更にAND回路53の正論理側の入力端子に入力されている。
AND回路50の出力信号(J_IN)はJK_F/F47のJ端子に入力されている。また、AND回路51の出力信号(K_IN)はJK_F/F47のK端子に入力されている。また、JK_F/F47のQ出力信号(SKIP1)はAND回路53の負論理側の入力端子、及びAND回路49の他方の入力端子に入力されている。
AND回路53が出力する信号(SEL1)は選択信号としてセレクタ43に入力されている。また、セレクタ42の出力信号(D_OUT1)はセレクタ43の一方の入力側に入力されている。また、セレクタ43の他方の入力側にはダミーデータとしてFFh(16進数表示)が入力されている。また、セレクタ43の出力信号(D_OUT2)はD_F/F57に入力されている。また、D_F/F57の出力信号(D_OUT3)はフラッシュメモリ2に入力されている。従って、AND回路53が出力する選択信号(SEL1)に基づいて、セレクタ42の出力信号(D_OUT1)又はダミーデータ(FFh)が、D_F/F57を介してフラッシュメモリ2に入力される。また、フラッシュメモリ2のライト・イネーブル(WE)の端子には、シーケンサ制御回路45から出力されるライト・イネーブル信号(WE_IN)が入力されている。
セレクタ42にはバッファ9の出力信号(D_OUT0)と、ECCブロック11の出力信号(D_OUT4)が入力されており、シーケンサ制御回路45から出力される選択信号(SEL2)に基づいて、バッファ9の出力信号(D_OUT0)又はECCブロック11の出力信号(D_OUT4)が、セレクタ42の出力信号(D_OUT1)としてセレクタ43に入力される。尚、バッファ9の出力信号(D_OUT0)はECCブロック11にも入力され、ECCブロック11は入力された信号(第1セクタ領域25〜第4セクタ領域28に書き込むユーザデータに対応する信号)に基づいて生成したエラー・コレクション・コード(ECC)を出力信号(D_OUT4)として出力する。
上記シーケンサ制御回路45は、クロック信号(CLK)に同期してアドレス・インクリメンタル信号(AD_INC)、スキップ・セレクト信号(SKP_SEL)、ライト・イネーブル信号(WE_IN)、選択信号(SEL2)を出力することにより、フラッシュメモリ・インターフェース・ブロック10全体の動作を制御する。
アドレスカウンタ46はクロック信号CLKに同期してカウントアップする10ビットのカウンタであり、0〜525のカウント値をアドレス信号(ADR)として出力する。カウント値が525になったときは、「0」にリセットされる。
カウント値が0〜511の期間:
バッファ9が、アドレス信号(ADR)が示すカウント値に基づいて特定される第1バッファ21−1又は第2バッファ21−2内のユーザデータを、出力信号(D_OUT0)として出力する。
カウント値が512〜521の期間:
ECCブロック11が、カウント値が0〜511の期間にバッファ9から出力された出力信号(D_OUT0)に基づいて生成されたエラー・コレクション・コード(ECC)を出力信号(D_OUT4)として出力する。
カウント値が522〜525の期間:
バッファ9が、アドレス信号(ADR)が示すカウント値に基づいて特定される第1レジスタ16−1又は第2レジスタ16−2内の付加データを、出力信号(D_OUT0)として出力する。
セレクタ42は、上記シーケンサ制御回路45から出力される選択信号(SEL2)に基づいて、カウント値が0〜511の期間及びカウント値が522〜525の期間については、バッファ9の出力信号(D_OUT0)を出力信号(D_OUT1)として出力し、カウント値が512〜521の期間については、ECCブロック11の出力信号(D_OUT4)を出力信号(D_OUT1)として出力する。ここで、セレクタ42は、ロー・レベル(以下「0」と表記する)の選択信号(SEL2)が与えられたときにECCブロック11の出力信号(D_OUT4)を出力信号(D_OUT1)として出力し、セレクタ42は、ハイ・レベル(以下「1」と表記する)の選択信号(SEL2)が与えられたときにバッファ9の出力信号(D_OUT0)を出力信号(D_OUT1)として出力する。
ホストシステム4から与えられたユーザデータは、フラッシュメモリ2側へのデータ出力が先に終了した側のバッファ(第1バッファ21−1又は第2バッファ21−2)に取り込まれ、先にユーザデータが取り込まれた側のバッファ(第1バッファ21−1又は第2バッファ21−2)に保持されているユーザデータが先にフラッシュメモリ2側に出力される。従って、通常の書き込み動作では、ホストシステム4から与えられるユーザデータの入力先は、第1バッファ21−1と第2バッファ21−2が交互に選択され、フラッシュメモリ2側に出力されるユーザデータの出力元も第1バッファ21−1と第2バッファ21−2が交互に選択される。
比較回路54はアドレスカウンタ46が出力するアドレス信号(ADR)が示すカウント値が461に一致したとき「1」を出力する。また、比較回路55はアドレスカウンタ46が出力するアドレス信号(ADR)が示すカウント値が462に一致したとき「1」を出力する。
JK_F/F47は、エッジトリガJKフリップフロップ回路であり、J入力が「1」、K入力が「0」の状態で、クロック信号(CLK)が立ち上がる(「0」から「1」に遷移する)と、Q出力が「1」となり、J入力が「0」、K入力が「1」の状態で、クロック信号(CLK)が立ち上がる(「0」から「1」に遷移する)と、Q出力が「0」となる。
セレクタ43は、選択信号(SEL1)が「0」のときセレクタ42から出力される出力信号(D_OUT1)を選択し、選択信号(SEL1)が「1」のときダミーデータ(FFh)の信号を選択する。
D_F/F57は、入力信号を1クロック分遅延させるためのDフリップフロップ回路であり、セレクタ43の出力信号(D_OUT2)を1クロック分だけ遅らせた出力信号(D_OUT3)を出力する。このD_F/F57は、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)における出力信号(D_OUT3)を安定させるために用いられている。
次に、第4セクタ領域28に対する書き込み動作と第1セクタ領域25〜第3セクタ領域27に対する書き込み動作の違いについて、図7、図8を参照して詳細に説明する。
以下の説明における書き込み動作は、図4(a)のt3〜t4の期間又は図4(b)のt13〜t14の期間に実行される動作であり、カラムアドレスが7〜2111の領域に書き込むデータをD_F/F57の出力信号(D_OUT3)としてフラッシュメモリ2に与える動作に対応する。この書き込み動作は、第1セクタ領域25と第1付加データ領域31に対応するカラムアドレスが7〜532の領域に書き込むデータを出力する動作と、第2セクタ領域26と第2付加データ領域32に対応するカラムアドレスが533〜1058の領域に書き込むデータを出力する動作と、第3セクタ領域27と第3付加データ領域33に対応するカラムアドレスが1059〜1584の領域に書き込むデータを出力する動作と、第4セクタ領域28と第4付加データ領域34に対応するカラムアドレスが1585〜2111の領域(ブロックステータス領域(BS)35が含まれている)に書き込むデータを出力する動作で構成されている。
図7は、カラムアドレスが1585〜2111の領域に書き込むデータを出力する動作において、ダミーデータ(FFh)がD_F/F57の出力信号(D_OUT3)として出力されるタイミングを示している。図8は、カラムアドレスが1585〜2111の領域に書き込むデータを出力する動作と比較するために、カラムアドレスが7〜532の領域、カラムアドレスが533〜1058の領域又はカラムアドレスが1059〜1584の領域に書き込むデータを出力する動作を示している。尚、カラムアドレスが1585〜2111の領域に書き込むデータを出力する動作を行っているときは、シーケンサ制御回路45からスキップ・セレクト信号(SKP_SEL)として「1」が出力され、カラムアドレスが7〜532の領域、カラムアドレスが533〜1058の領域又はカラムアドレスが1059〜1584の領域に書き込むデータを出力する動作を行っているときは、シーケンサ制御回路45からスキップ・セレクト信号(SKP_SEL)として「0」が出力される。
図7において、CLKは、シーケンサ制御回路45とアドレスカウンタ46とJK−F/F47とD−F/F57に入力されるクロック信号を表している。AD_INCは、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号を表している。このアドレス・インクリメンタル信号は、クロック信号を2分周した信号となっている。ADRは、アドレスカウンタ46から出力されるカウント値を示すアドレス信号である。J_INは、JK−F/F47のJ端子に入力されるAND回路50の出力信号を表している。K_INは、JK−F/F47のK端子に入力されるAND回路51の出力信号を表している。
SKIP1&2は、JK−F/F47のQ出力信号(SKIP1)及びAND回路49の出力信号(SKIP2)を示している。つまり、図7の場合、シーケンサ制御回路45からスキップ・セレクト信号(SKP_SEL)として「1」が出力されているので、JK−F/F47のQ出力信号(SKIP1)がそのままAND回路49の出力信号(SKIP2)となる。CNT_ENは、アドレスカウンタ46のイネーブル端子(EN)に入力されるAND回路52の出力信号を表している。
SEL1は、AND回路53の出力する選択信号を表している。このAND回路53の出力信号は選択信号としてセレクタ43に入力される。D_OUT1は、セレクタ42から出力される出力信号を表している。D_OUT2は、セレクタ43から出力される出力信号を表している。D_OUT3は、D_F/F57から出力される出力信号を表している。WE_INは、シーケンサ制御回路45から出力されるライト・イネーブル信号を表している。このライト・イネーブル信号は、フラッシュメモリ2のライト・イネーブル(WE)の端子に入力される。
次に図6と図7を参照して、第4セクタ領域28aに書き込むユーザデータと第4セクタ領域28bに書き込むユーザデータとの間に、ブロックステータス領域(BS)35に書き込むダミーデータ(FFh)を挿入する動作を説明する。尚、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値は、第4セクタ領域28の先頭に対応するカラムアドレスが1585の領域に書き込むユーザデータがバッファ9から出力されるときに0からカウントが開始される。
アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値は、イネーブル端子(EN)に入力される信号が「1」の期間に、クロック信号(CLK)が立ち上がる(「0」から「1」に遷移する)とカウントアップされる。AND回路49の出力信号(SKIP2)が「0」の期間、イネーブル端子(EN)には、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)がそのまま入力される。従って、AND回路49の出力信号(SKIP2)が「0」の期間、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値は、アドレス・インクリメンタル信号(AD_INC)の周期でカウントアップされる。
アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が0〜511の期間と522〜525の期間は、シーケンサ制御回路45から出力される選択信号(SEL2)が「1」になり、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が512〜521の期間は、シーケンサ制御回路45から出力される選択信号(SEL2)が「0」になる。従って、カウント値が0〜511の期間は、第1バッファ21−1又は第2バッファ21−2に保持されているユーザデータがバッファ9の出力信号(D_OUT0)として出力され、この出力信号(D_OUT0)がセレクタ42の出力信号(D_OUT1)としてそのまま出力される。
以下、t41〜t46の期間について詳細に説明する。
t41の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が459から460にカウントアップされる。これに応答して、セレクタ42の出力信号(D_OUT1)が、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値460に対応するユーザデータに切り替わる。AND回路53が出力する選択信号(SEL1)は「0」なので、セレクタ42の出力信号(D_OUT1)が、そのままセレクタ43の出力信号(D_OUT2)として出力される。尚、D_F/F57から出力される出力信号(D_OUT3)は、セレクタ43の出力信号(D_OUT2)より1クロック分遅延しているため、この時点では、未だカウント値459に対応するユーザデータが出力信号(D_OUT3)として出力されている。従って、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)で、カウント値459に対応するユーザデータがフラッシュメモリ2に取り込まれる。
t42の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が460から461にカウントアップされる。これに応答して、セレクタ42の出力信号(D_OUT1)が、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値461に対応するユーザデータに切り替わる。AND回路53が出力する選択信号(SEL1)は「0」なので、セレクタ42の出力信号(D_OUT1)が、そのままセレクタ43の出力信号(D_OUT2)として出力される。尚、D_F/F57から出力される出力信号(D_OUT3)は、セレクタ43の出力信号(D_OUT2)より1クロック分遅延しているため、この時点では、未だカウント値460に対応するユーザデータが出力信号(D_OUT3)として出力されている。従って、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)で、カウント値460に対応するユーザデータがフラッシュメモリ2に取り込まれる。
尚、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が461になることにより、比較回路54の出力信号が「1」になる。この比較回路54の出力信号が「0」に戻るまで、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)が、そのままAND回路50の出力信号(J_IN)として出力されようになる。一方、比較回路55の出力信号は「0」なので、AND回路51の出力信号(K_IN)は「0」のままになっている。
t43の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が461から462にカウントアップされる。これに応答して、セレクタ42の出力信号(D_OUT1)が、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値462に対応するユーザデータに切り替わる。AND回路53が出力する選択信号(SEL1)は「0」なので、セレクタ42の出力信号(D_OUT1)が、そのままセレクタ43の出力信号(D_OUT2)として出力される。尚、D_F/F57から出力される出力信号(D_OUT3)は、セレクタ43の出力信号(D_OUT2)より1クロック分遅延しているため、この時点では、未だカウント値461に対応するユーザデータが出力信号(D_OUT3)として出力されている。従って、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)で、カウント値461に対応するユーザデータがフラッシュメモリ2に取り込まれる。
AND回路50は、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)を、そのまま出力信号(J_IN)として出力しているので、この時点では、出力信号(J_IN)が「1」になっている。一方、AND回路51の出力信号(K_IN)は「0」なので、JK−F/F47のQ端子から出力されるQ出力信号(SKIP1)は、クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、「0」から「1」に遷移する。また、シーケンサ制御回路45から出力されているスキップ・セレクト信号(SKP_SEL)が「1」なので、AND回路49の出力信号(SKIP2)も「0」から「1」に遷移する。
尚、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が462になることにより、比較回路55の出力信号が「1」になる。この比較回路55の出力信号が「0」に戻るまで、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)が、そのままAND回路51の出力信号(K_IN)として出力されるようになる。一方、比較回路54の出力信号は「0」に戻るで、AND回路50の出力信号(J_IN)は「0」になる。
t44の時点:
AND回路49の出力信号(SKIP2)が「1」の期間は、AND回路52の出力信号(CNT_EN)が「0」なので、クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)でアドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値はカウントアップされない。従って、比較回路55の出力信号も「1」のまま維持される。又、セレクタ42の出力信号(D_OUT1)は、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値462に対応するユーザデータの出力が維持される。
AND回路51は、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)を、そのまま出力信号(K_IN)として出力しているので、この時点では、出力信号(K_IN)が「1」になっている。一方、AND回路50の出力信号(J_IN)は「0」なので、JK−F/F47のQ端子から出力されるQ出力信号(SKIP1)は、クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で「1」から「0」に遷移する。このQ出力信号(SKIP1)が「1」から「0」に遷移することにより、AND回路49の出力信号(SKIP2)も「1」から「0」に遷移する。又、比較回路55の出力信号が「1」なので、AND回路53が出力する選択信号(SEL1)が「0」から「1」に遷移する。
AND回路53が出力する選択信号(SEL1)が「1」になるので、セレクタ43の出力信号(D_OUT2)が、セレクタ42の出力信号(D_OUT1)からダミーデータ(FFh)に切り替わる。尚、D_F/F57から出力される出力信号(D_OUT3)は、この時点では、未だカウント値462に対応するユーザデータなので、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)で、カウント値462に対応するユーザデータがフラッシュメモリ2に取り込まれる。
AND回路49の出力信号(SKIP2)が「0」に戻るため、アドレスカウンタ46のイネーブル端子(EN)に、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)が、AND回路52の出力信号(CNT_EN)として、そのまま入力されるようになる。
t45の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が462から463にカウントアップされる。これに応答して、セレクタ42の出力信号(D_OUT1)が、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値463に対応するユーザデータに切り替わる。
アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が462から463になるので、比較回路55の出力信号が「0」になり、AND回路53が出力する選択信号(SEL1)も「0」になる。又、AND回路53が出力する選択信号(SEL1)が「0」になるので、セレクタ43の出力信号(D_OUT2)が、ダミーデータ(FFh)からセレクタ42の出力信号(D_OUT1)に切り替わる。尚、D_F/F57から出力される出力信号(D_OUT3)は、この時点では、未だダミーデータ(FFh)なので、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)で、ダミーデータ(FFh)がフラッシュメモリ2に取り込まれる。
t46の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が463から464にカウントアップされる。これに応答して、セレクタ42の出力信号(D_OUT1)が、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値464に対応するユーザデータに切り替わる。AND回路53が出力する選択信号(SEL1)は「0」なので、セレクタ42の出力信号(D_OUT1)が、そのままセレクタ43の出力信号(D_OUT2)として出力される。尚、D_F/F57から出力される出力信号(D_OUT3)は、セレクタ43の出力信号(D_OUT2)より1クロック分遅延しているため、この時点では、未だカウント値463に対応するユーザデータが出力信号(D_OUT3)として出力されている。従って、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)で、カウント値463に対応するユーザデータがフラッシュメモリ2に取り込まれる。
上述のように、第4セクタ領域28に対するユーザデータの書き込みでは、シーケンサ制御回路45からスキップ・セレクト信号(SKP_SEL)として「1」が出力されている。スキップ・セレクト信号(SKP_SEL)が「1」の場合、第4セクタ領域28aの末尾に書き込むユーザデータ(第1バッファ21−1又は第2バッファ21−2に保持されているカウント値462に対応するユーザデータ)と第4セクタ領域28bの先頭に書き込むユーザデータ(第1バッファ21−1又は第2バッファ21−2に保持されているカウント値463に対応するユーザデータ)との間にブロックステータス領域(BS)35に書き込むダミーデータ(FFh)が挿入される。尚、ブロックステータス領域(BS)35に書き込まれるダミーデータはFFh(16進数表示)なので、ブロックステータス領域(BS)35に記憶されているブロックステータスは変更されない。
次に、シーケンサ制御回路45からスキップ・セレクト信号(SKP_SEL)として「0」が出力されている場合の動作、つまり、カラムアドレスが7〜532の領域、カラムアドレスが533〜1058の領域又はカラムアドレスが1059〜1584の領域に書き込むデータを出力する場合の動作について図8を参照して説明する。
カラムアドレスが7〜532の領域、カラムアドレスが533〜1058の領域及びカラムアドレスが1059〜1584の領域に書き込むデータを出力する動作は、同様の動作である。ここで、カラムアドレスが7〜532の領域に書き込むデータを出力する場合は、第1セクタ領域25の先頭に対応するカラムアドレスが7の領域に書き込むユーザデータがバッファ9から出力されるときに、アドレスカウンタ46のカウントが0から開始され、カラムアドレスが533〜1058の領域に書き込むデータを出力する場合は、第2セクタ領域26の先頭に対応するカラムアドレスが533の領域に書き込むユーザデータがバッファ9から出力されるときに、アドレスカウンタ46のカウントが0から開始され、カラムアドレスが1059〜1584の領域に書き込むデータを出力する場合は、第3セクタ領域27の先頭に対応するカラムアドレスが1059の領域に書き込むユーザデータがバッファ9から出力されるときに、アドレスカウンタ46のカウントが0から開始される。
スキップ・セレクト信号(SKP_SEL)が「1」の場合と同様に、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値は、イネーブル端子(EN)に入力される信号が「1」の期間に、クロック信号(CLK)が立ち上がる(「0」から「1」に遷移する)とカウントアップされる。尚、スキップ・セレクト信号(SKP_SEL)として「0」が出力されている場合、AND回路49の出力信号(SKIP2)は常に「0」なので、イネーブル端子(EN)には、常にシーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)がそのまま入力される。従って、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値は、アドレス・インクリメンタル信号(AD_INC)の周期で常にカウントアップされる。
アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が0〜511の期間と522〜525の期間は、シーケンサ制御回路45から出力される選択信号(SEL2)が「1」になり、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が512〜521の期間は、シーケンサ制御回路45から出力される選択信号(SEL2)が「0」になる。従って、カウント値が0〜511の期間は、第1バッファ21−1又は第2バッファ21−2に保持されているユーザデータがバッファ9の出力信号(D_OUT0)として出力され、この出力信号(D_OUT0)がセレクタ42の出力信号(D_OUT1)としてそのまま出力される。
以下、シーケンサ制御回路45から出力されるスキップ・セレクト信号(SKP_SEL)が「1」の場合と異なるt53〜t55の期間についてだけ、詳細に説明する。
t53の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が461から462にカウントアップされる。これに応答して、セレクタ42の出力信号(D_OUT1)が、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値462に対応するユーザデータに切り替わる。AND回路53が出力する選択信号(SEL1)は「0」なので、セレクタ42の出力信号(D_OUT1)が、そのままセレクタ43の出力信号(D_OUT2)として出力される。尚、D_F/F57から出力される出力信号(D_OUT3)は、セレクタ43の出力信号(D_OUT2)より1クロック分遅延しているため、この時点では、未だカウント値461に対応するユーザデータが出力信号(D_OUT3)として出力されている。従って、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)で、カウント値461に対応するユーザデータがフラッシュメモリ2に取り込まれる。
この時点での比較回路54の出力信号は「1」なので、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)は、そのままAND回路50の出力信号(J_IN)として出力されている。従って、この時点でのAND回路50の出力信号(J_IN)は「1」になっている。一方、比較回路55の出力信号は「0」なので、AND回路51の出力信号(K_IN)は「0」になっている。
JK−F/F47のJ端子に入力されているAND回路50の出力信号(J_IN)が「1」で、K端子に入力されているAND回路51の出力信号(K_IN)が「0」なので、JK−F/F47のQ端子から出力されるQ出力信号(SKIP1)は、クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で「0」から「1」に遷移する。但し、シーケンサ制御回路45から出力されているスキップ・セレクト信号(SKP_SEL)が「0」なので、AND回路49の出力信号(SKIP2)は「0」のままで変化しない。
尚、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が462になるため、比較回路55の出力信号が「1」になる。この比較回路55の出力信号が「0」に戻るまで、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)が、そのままAND回路51の出力信号(J_IN)として出力されるようになる。一方、比較回路54の出力信号は「0」になるので、AND回路50の出力信号(K_IN)は「0」になる。
t54の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が462から463にカウントアップされる。これに応答して、セレクタ42の出力信号(D_OUT1)が、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値463に対応するユーザデータに切り替わる。
AND回路51は、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)を、そのまま出力信号(K_IN)として出力しているので、この時点では、出力信号(K_IN)が「1」になっている。一方、AND回路50の出力信号(J_IN)は「0」なので、JK−F/F47のQ端子から出力されるQ出力信号(SKIP1)は、クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で「1」から「0」に遷移する。シーケンサ制御回路45から出力されているスキップ・セレクト信号(SKP_SEL)が「0」なので、出力信号(SKIP1)が「1」から「0」に遷移しても、AND回路49の出力信号(SKIP2)は「0」のままで変化しない。又、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が463になることにより、比較回路55の出力信号が「0」になるので、出力信号(SKIP1)が「1」から「0」に遷移しても、AND回路53が出力する選択信号(SEL1)は「0」のままで変化しない。
AND回路53が出力する選択信号(SEL1)は「0」のままで変化しないので、セレクタ42の出力信号(D_OUT1)が、セレクタ43の出力信号(D_OUT2)として出力され続け、ダミーデータは出力されない。尚、D_F/F57から出力される出力信号(D_OUT3)は、セレクタ43の出力信号(D_OUT2)より1クロック分遅延しているため、この時点では、未だカウント値462に対応するユーザデータが出力信号(D_OUT3)として出力されている。従って、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)で、カウント値462に対応するユーザデータがフラッシュメモリ2に取り込まれる。
t55の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が463から464にカウントアップされる。これに応答して、セレクタ42の出力信号(D_OUT1)が、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値464に対応するユーザデータに切り替わる。AND回路53が出力する選択信号(SEL1)は「0」なので、セレクタ42の出力信号(D_OUT1)が、そのままセレクタ43の出力信号(D_OUT2)として出力される。尚、D_F/F57から出力される出力信号(D_OUT3)は、セレクタ43の出力信号(D_OUT2)より1クロック分遅延しているため、この時点では、未だカウント値463に対応するユーザデータが出力信号(D_OUT3)として出力されている。従って、ライト・イネーブル信号(WE_IN)の立ち上がり(「0」から「1」への遷移)で、カウント値463に対応するユーザデータがフラッシュメモリ2に取り込まれる。
上述のように、シーケンサ制御回路45から出力されているスキップ・セレクト信号(SKP_SEL)が「0」の場合、第1バッファ21−1又は第2バッファ21−2に保持されているカウント値462に対応するユーザデータと第1バッファ21−1又は第2バッファ21−2に保持されているカウント値463に対応するユーザデータとの間にダミーデータ(FFh)は挿入されない。従って、スキップ・セレクト信号(SKP_SEL)を「0」にすることにより、カラムアドレスが7〜532の領域、カラムアドレスが533〜1058の領域又はカラムアドレスが1059〜1584の領域に書き込むデータの出力を行うことができる。
次に、第4セクタ領域28とブロックステータス領域(BS)35を含むカラムアドレスが1585〜2097の領域から読み出したデータを、第1バッファ21−1又は第2バッファ21−2に保持する動作について、図9及び図10を参照して説明する。この動作では、第4セクタ領域28から読み出されたデータだけが第1バッファ21−1又は第2バッファ21−2に保持され、ブロックステータス領域(BS)35から読み出されたデータは、第1バッファ21−1又は第2バッファ21−2に保持されない。
図9は、フラッシュメモリ2から読み出したデータを、バッファ9とECCブロック11に転送するための回路だけを示している。この回路は、フラッシュメモリ・インターフェース・ブロック10に含まれており、図6に示したフラッシュメモリ2にデータを転送するための回路と一部の回路を共用している。
このフラッシュメモリ2から読み出したデータを、バッファ9とECCブロック11に転送するための回路は、シーケンサ制御回路45、アドレスカウンタ46、JK−F/F(JKフリップ・フロップ)47、AND回路49〜53、58、比較回路54、55、D−F/F59から構成されている。尚、図9において図6と同じ符号のものは同じものを示している。又、図6の回路は、書き込みで動作の説明で必要な部分だけを示し、図9の回路は、読み出し動作で動作の説明で必要な部分だけを示している。
以下、図6に示されていない回路、信号等について説明する。シーケンサ制御回路45から出力されるリード・イネーブル信号(RE_IN)は、フラッシュメモリ2のリード・イネーブル(RE)の端子に入力され、バッファ・ライト・イネーブル信号(BF_WE1)は、AND回路58の正論理側の入力端子に入力されている。AND回路58の負論理側の入力端子には、AND回路53から出力される選択信号(SEL1)が入力されている。AND回路58から出力されるバッファ・ライト・イネーブル信号(BF_WE2)は、バッファ9に入力され、このバッファ・ライト・イネーブル信号(BF_WE2)はバッファ9のライト・イネーブル信号となる。
D−F/F59は、イネーブル端子(EN)を備えたDフリップフロップであり、このイネーブル端子(EN)には、AND回路52から出力される出力信号(CNT_EN)入力されている。D−F/F59は、イネーブル端子(EN)に入力されている信号が「1」の期間に、クロック信号(CLK)が立ち上がる(「0」から「1」に遷移する)と、出力信号(D_IN2)が入力端子に入力されている信号(フラッシュメモリ2から出力されているデータ信号(D_IN1))に切り替わる。つまり、シーケンサ制御回路45から出力されるリード・イネーブル信号(RE_IN)に基づいてフラッシュメモリ2から出力されたデータ信号(D_IN1)は、D−F/F59でタイミング調整され、出力信号(D_IN2)としてバッファ9及びECCブロック11に入力される。
D−F/F59から出力される出力信号(D_IN2)に対応するデータは、バッファ・ライト・イネーブル信号(BF_WE2)の立ち上がり(「0」から「1」への遷移)で、バッファ9に取り込まれる。バッファ9に取り込まれたデータは、アドレスカウンタ46が出力するアドレス信号(ADR)が示すカウント値により特定される第1バッファ21−1又は第2バッファ21−2内の領域に保持される。
次に図9と図10を参照して、カラムアドレスが1585〜2097の領域から読み出したデータのうち、第4セクタ領域28から読み出したデータだけを第1バッファ21−1又は第2バッファ21−2に保持する動作について説明する。
以下の説明における読み出し動作は、図5のt24〜t25の期間に実行される動作の一部である。尚、第4セクタ領域28から読み出されたデータは、バッファ9とECCブロック11に取り込まれ、ECCブロック11には、更に、第4付加データ領域34から読み出されたエラー・コレクション・コード(ECC)が取り込まれる。ECCブロック11は、第4セクタ領域28から読み出されたデータ及び第4付加データ領域34から読み出されたエラー・コレクション・コード(ECC)に基づいて、第1バッファ21−1又は第2バッファ21−2に保持されているデータに含まれる誤りを訂正するが、以下の説明では、第4セクタ領域28から読み出したデータを第1バッファ21−1又は第2バッファ21−2に保持する動作についてだけ説明する。
図10は、ブロックステータス領域(BS)35から読み出されたデータに対応するデータ信号(D_IN1)が出力されている期間の近傍における各信号を示している。尚、この動作では、シーケンサ制御回路45から出力されるスキップ・セレクト信号(SKP_SEL)が「1」になっている。
図10において、クロック信号(CLK)、アドレス・インクリメンタル信号(AD_INC)、アドレス信号(ADR)、出力信号(J_IN)、出力信号(K_IN)、出力信号(SKIP1)、出力信号(SKIP2)、出力信号(CNT_EN)、選択信号(SEL1)は、図7と同じ信号を示している。
BF_WE1は、シーケンサ制御回路45から出力されるバッファ・ライト・イネーブル信号を表している。BF_WE2は、AND回路58から出力されるバッファ・ライト・イネーブル信号を表している。AND回路58は、選択信号(SEL1)が「0」の期間、シーケンサ制御回路45から出力されるバッファ・ライト・イネーブル信号(BF_WE1)を、そのままバッファ・ライト・イネーブル信号(BF_WE2)として出力する。尚、選択信号(SEL1)が「1」の期間は、バッファ・ライト・イネーブル信号(BF_WE2)が「0」になる。
RE_INは、シーケンサ制御回路45から出力されるリード・イネーブル信号を表している。D_IN1は、フラッシュメモリ2から出力されるデータ信号を表している。フラッシュメモリ2から出力されるデータ信号(D_IN1)に対応するデータは、リード・イネーブル信号(RE_IN)の立ち下がり(「1」から「0」への遷移)に応答して切り替わる。ここで、tdは、リード・イネーブル信号(RE_IN)の立ち下がり(「1」から「0」への遷移)から、データ信号(D_IN1)として出力されるデータが切り替わるまでの遅延時間を表している)。D_IN2は、D−F/F59から出力される出力信号を表している。尚、アドレス・インクリメンタル信号(AD_INC)とリード・イネーブル信号(RE_IN)は、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が0のときに、D−F/F59から出力される出力信号(D_IN2)が第4セクタ領域28の先頭領域(カラムアドレスが1585の領域)から読み出されたデータに対応するように、シーケンサ制御回路45によって制御されている。
t61の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が459から460にカウントアップされ、D−F/F59から出力される出力信号(D_IN2)は、この時点でのデータ信号(D_IN1)に対応するデータに切り替わる。つまり、アドレス信号(ADR)が示すカウント値のカウントアップに同期して、D−F/F59から出力される出力信号(D_IN2)は、次のデータに切り替わる。ここでは、カウント値459に対応するデータ(D_459)からカウント値460に対応するデータ(D_460)に切り替わる。
t61〜t61’の期間:
リード・イネーブル信号(RE_IN)の立ち下がり(「1」から「0」への遷移)に応答して、フラッシュメモリ2から出力されているデータ信号(D_IN1)に対応するデータは次のデータに切り替わる。ここでは、カウント値460に対応するデータ(D_460)からカウント値461に対応するデータ(D_461)に切り替わる。
t61’の時点:
バッファ・ライト・イネーブル信号(BF_WE2)の立ち上がり(「0」から「1」への遷移)で、D−F/F59から出力されている出力信号(D_IN2)に対応するデータ(D_460)がバッファ9に取り込まれ、第1バッファ21−1又は第2バッファ21−2のカウント値460に対応する領域に保持される。
t62の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が460から461にカウントアップされ、D−F/F59から出力される出力信号(D_IN2)は、この時点でのデータ信号(D_IN1)に対応するデータに切り替わる。ここでは、カウント値460に対応するデータ(D_460)からカウント値461に対応するデータ(D_461)に切り替わる。
尚、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が461になることにより、比較回路54の出力信号が「1」になる。この比較回路54の出力信号が「0」に戻るまで、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)が、そのままAND回路50の出力信号(J_IN)として出力されようになる。一方、比較回路55の出力信号は「0」なので、AND回路51の出力信号(K_IN)は「0」のままになっている。
t62〜t62’の期間:
リード・イネーブル信号(RE_IN)の立ち下がり(「1」から「0」への遷移)に応答して、フラッシュメモリ2から出力されているデータ信号(D_IN1)に対応するデータは次のデータに切り替わる。ここでは、カウント値461に対応するデータ(D_461)からカウント値462に対応するデータ(D_462)に切り替わる。
t62’の時点:
バッファ・ライト・イネーブル信号(BF_WE2)の立ち上がり(「0」から「1」への遷移)で、D−F/F59から出力される出力信号(D_IN2)に対応するデータ(D_461)がバッファ9に取り込まれ、第1バッファ21−1又は第2バッファ21−2のカウント値461に対応する領域に保持される。
t63の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が461から462にカウントアップされ、D−F/F59から出力される出力信号(D_IN2)は、この時点でのデータ信号(D_IN1)に対応するデータに切り替わる。ここでは、カウント値461に対応するデータ(D_461)からカウント値462に対応するデータ(D_462)に切り替わる。
AND回路50は、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)を、そのまま出力信号(J_IN)として出力しているので、この時点では、出力信号(J_IN)が「1」になっている。一方、AND回路51の出力信号(K_IN)は「0」なので、JK−F/F47のQ端子から出力されるQ出力信号(SKIP1)は、クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で「0」から「1」に遷移する。また、シーケンサ制御回路45から出力されているスキップ・セレクト信号(SKP_SEL)が「1」なので、AND回路49の出力信号(SKIP2)も「0」から「1」に遷移する。
尚、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が462になることにより、比較回路55の出力信号が「1」になる。この比較回路55の出力信号が「0」に戻るまで、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)が、そのままAND回路51の出力信号(K_IN)として出力されるようになる。一方、比較回路54の出力信号は「0」に戻るで、AND回路50の出力信号(J_IN)は「0」になる。
t63〜t63’の期間:
リード・イネーブル信号(RE_IN)の立ち下がり(「1」から「0」への遷移)に応答して、フラッシュメモリ2から出力されるデータ信号(D_IN1)に対応するデータは次のデータに切り替わる。ここでは、カウント値462に対応するデータ(D_462)からブロックステータス領域(BS)35から読み出されたデータに切り替わる。
t63’の時点:
バッファ・ライト・イネーブル信号(BF_WE2)の立ち上がり(「0」から「1」への遷移)で、D−F/F59から出力されている出力信号(D_IN2)に対応するデータ(D_462)がバッファ9に取り込まれ、第1バッファ21−1又は第2バッファ21−2のカウント値462に対応する領域に保持される。
t64の時点:
AND回路49の出力信号(SKIP2)が「1」の期間は、AND回路52の出力信号(CNT_EN)が「0」なので、クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値はカウントアップされない。従って、比較回路55の出力信号も「1」のまま維持される。
AND回路51は、シーケンサ制御回路45から出力されるアドレス・インクリメンタル信号(AD_INC)を、そのまま出力信号(K_IN)として出力しているので、この時点では、出力信号(K_IN)が「1」になっている。一方、AND回路50の出力信号(J_IN)は「0」なので、JK−F/F47のQ端子から出力されるQ出力信号(SKIP1)は、クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、「1」から「0」に遷移する。このQ出力信号(SKIP1)が「1」から「0」に遷移することにより、AND回路49の出力信号(SKIP2)も「1」から「0」に遷移する。又、比較回路55の出力信号が「1」なので、AND回路53が出力する選択信号(SEL1)が「0」から「1」に遷移する。
AND回路52の出力信号(CNT_EN)が「0」なので、クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、D−F/F59から出力される出力信号(D_IN2)は、この時点でのデータ信号(D_IN1)に対応するデータに切り替わらない。つまり、D−F/F59から出力される出力信号(D_IN2)は、カウント値462に対応するデータ(D_462)からブロックステータス領域(BS)35から読み出されたデータに切り替わらない。
t64〜t64’の期間:
リード・イネーブル信号(RE_IN)の立ち下がり(「1」から「0」への遷移)に応答して、フラッシュメモリ2から出力されるデータ信号(D_IN1)に対応するデータは次のデータに切り替わる。ここでは、ブロックステータス領域(BS)35から読み出されたデータから、カウント値463に対応するデータ(D_463)に切り替わる。
t64’の時点:
選択信号(SEL1)が「1」の期間は、バッファ・ライト・イネーブル信号(BF_WE2)が「0」なので、D−F/F59から出力されている出力信号(D_IN2)に対応するデータ(D_462)はバッファ9に取り込まれない。
t65の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が462から463にカウントアップされ、D−F/F59から出力される出力信号(D_IN2)は、この時点でのデータ信号(D_IN1)に対応するデータに切り替わる。ここでは、カウント値462に対応するデータ(D_462)からカウント値463に対応するデータ(D_463)に切り替わる。
アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が462から463になるので、比較回路55の出力信号が「0」になり、AND回路53が出力する選択信号(SEL1)も「0」になる。又、AND回路53が出力する選択信号(SEL1)が「0」になるので、シーケンサ制御回路45から出力されるバッファ・ライト・イネーブル信号(BF_WE1)が、そのままバッファ・ライト・イネーブル信号(BF_WE2)として出力されるようになる。
t65〜t65’の期間:
リード・イネーブル信号(RE_IN)の立ち下がり(「1」から「0」への遷移)に応答して、フラッシュメモリ2から出力されるデータ信号(D_IN1)に対応するデータは次のデータに切り替わる。ここでは、カウント値463に対応するデータ(D_463)からカウント値464に対応するデータ(D_464)に切り替わる。
t65’の時点:
バッファ・ライト・イネーブル信号(BF_WE2)の立ち上がり(「0」から「1」への遷移)で、D−F/F59から出力されている出力信号(D_IN2)に対応するデータ(D_463)がバッファ9に取り込まれ、第1バッファ21−1又は第2バッファ21−2のカウント値463に対応する領域に保持される。
t66の時点:
クロック信号(CLK)の立ち上がり(「0」から「1」への遷移)で、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値が463から464にカウントアップされ、D−F/F59から出力される出力信号(D_IN2)は、この時点でのデータ信号(D_IN1)に対応するデータに切り替わる。ここでは、カウント値463に対応するデータ(D_463)からカウント値464に対応するデータ(D_464)に切り替わる。
t66〜t66’の期間:
リード・イネーブル信号(RE_IN)の立ち下がり(「1」から「0」への遷移)に応答して、フラッシュメモリ2から出力されているデータ信号(D_IN1)に対応するデータは次のデータに切り替わる。ここでは、カウント値464に対応するデータ(D_464)からカウント値465に対応するデータ(D_465)に切り替わる。
t66’の時点:
バッファ・ライト・イネーブル信号(BF_WE2)の立ち上がり(「0」から「1」への遷移)で、D−F/F59から出力されている出力信号(D_IN2)に対応するデータ(D_460)がバッファ9に取り込まれ、第1バッファ21−1又は第2バッファ21−2のカウント値464に対応する領域に保持される。
上述のように、第4セクタ領域28とブロックステータス領域(BS)35を含む領域からのデータの読み出しでは、シーケンサ制御回路45からスキップ・セレクト信号(SKP_SEL)として「1」が出力されているため、JK−F/F47のQ端子から出力されるQ出力信号(SKIP1)が「1」の期間(t63〜t64の期間)は、AND回路49の出力信号(SKIP2)が「1」になる。AND回路49の出力信号(SKIP2)が「0」の期間は、AND回路52から出力される出力信号(CNT_EN)も「0」なので、D−F/F59から出力される出力信号(D_IN2)は、カウント値462に対応するデータ(D_462)からブロックステータス領域(BS)35から読み出されたデータに切り替わらない。又、AND回路49の出力信号(SKIP2)が「0」の期間は、アドレスカウンタ46から出力されるアドレス信号(ADR)が示すカウント値もカウントアップされない。従って、第1バッファ21−1又は第2バッファ21−2のカウント値0〜511に対応する領域には、第4セクタ領域28から読み出されたデータだけがカラムアドレスの順番で保持される。
第1セクタ領域25、第2セクタ領域26及び第3セクタ領域27からのデータの読み出しでは、シーケンサ制御回路45からスキップ・セレクト信号(SKP_SEL)として「0」が出力されているため、AND回路49の出力信号(SKIP2)及びAND回路53が出力する選択信号(SEL1)は「0」のままで変化しない。従って、第1セクタ領域25、第2セクタ領域26及び第3セクタ領域27の各領域から読み出されたデータは、第1バッファ21−1又は第2バッファ21−2のカウント値0〜511に対応する領域にカラムアドレスの順番で保持される。
以上の説明では、1個のページに4セクタのユーザデータが記憶される構成のフラッシュメモリ2を例として説明したが、1個のページに複数セクタのユーザデータが記憶される構成であれば、1個のページに記憶されるユーザデータのセクタ数が限定されることはない。例えば、個のページに記憶されるユーザデータのセクタ数は、8セクタであってもよい。
又、ブロックステータス領域(BS)35を挟んで2つの領域に分割されるセクタ領域(ユーザデータが記憶される領域)におけるブロックステータス領域(BS)35の位置についても限定されることはない。つまり、本実施の形態では、カウント値462に対応するユーザデータを書き込む領域とカウント値463に対応するユーザデータを書き込む領域の間にブロックステータス領域(BS)35があったが、このブロックステータス領域(BS)35の位置が変わって同様に実施することができる。例えば、カウント値397に対応するユーザデータを書き込む領域とカウント値398に対応するユーザデータを書き込む領域の間にブロックステータス領域(BS)35があった場合は、比較回路54の出力信号が「1」になるカウント値を398に設定し、比較回路55の出力信号が「1」になるカウント値を399に設定すればよい。
又、本実施の形態では、カウントアップ動作をするアドレスカウンタ46を用いたが、比較回路54及び比較回路55の出力信号が「1」になるカウント値、アドレスカウンタ46のカウント値と第1バッファ21−1及び第2バッファ21−2内の領域との対応関係等を適宜設定すれば、アドレスカウンタ46はカウントダウン動作するものであってもよい。
本発明の実施の形態であるフラッシュメモリシステムの概略構成を示すブロック図である。 本発明の実施の形態で使用されるフラッシュメモリの、アドレス空間の構成について説明する図である。 本発明の実施の形態におけるページの構成(記憶領域の割当て)を概略的に示す図である。 フラッシュメモリの1ページ分の書き込み動作を説明する図である。 フラッシュメモリの1ページ分の読み出し動作を説明する図である。 本発明の実施の形態であるフラッシュメモリ・インターフェース・ブロック10内のデータ書き込みに関わる構成を示す図である。 本発明の実施の形態におけるデータ書き込み動作で、ブロックステータス領域(BS)近傍における第4セクタ領域の書き込み動作を説明する図である。 本発明の実施の形態におけるデータ書き込み動作で、第1〜第3セクタ領域の書き込み動作を説明する図である。 本発明の実施の形態であるフラッシュメモリ・インターフェース・ブロック10内のデータ読み出しに関わる構成を示す図である。 本発明の実施の形態におけるデータ読み出し動作で、ブロックステータス部(BS)近傍における第4セクタ領域のデータ読み出し動作を説明する図である。 従来技術におけるページの構成(記憶領域の割当て)を概略的に示す図である。
符号の説明
1・・・フラッシュメモリシステム
2・・・フラッシュメモリ
3・・・メモリコントローラ
4・・・ホストシステム
6・・・マイクロプロセッサ(動作指示出力手段)
7・・・ホスト・インターフェース・ブロック
8・・・ワークエリア
9・・・バッファ(データ保持手段)
10・・・フラッシュメモリ・インターフェース・ブロック(データ入出力手段)
11・・・ECC(エラー・コレクション・コード)ブロック
12・・・ROM
13・・・外部バス
14・・・内部バス
15・・・チップセレクト信号線
16−1〜16−2・・・第1〜第2レジスタ
21−1〜21−2・・・第1〜第2バッファ、
25・・・第1セクタ領域
26・・・第2セクタ領域
27・・・第3セクタ領域
28・・・第4セクタ領域
30・・・ヘッダ領域(HD)
31・・・第1付加データ領域
32・・・第2付加データ領域
33・・・第3付加データ領域
34・・・第4付加データ領域
35・・・ブロックステータス領域(BS)
38・・・「第4セクタ+BS」(第4セクタとブロックステータス部(BS)を併せた領域)
42、43・・・セレクタ
45・・・シーケンサ制御回路
46・・・アドレスカウンタ
47・・・JK−F/F(JKフリップ・フロップ)
49〜53、58・・・AND回路
54、55・・・比較回路
57、59・・・D−F/F(Dフリップ・フロップ)

Claims (6)

  1. ホストシステムからの要求に応じて、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するメモリコントローラであって、
    前記ホストシステム側から供給される1セクタ単位のユーザデータを保持するデータ保持手段と、
    前記データ保持手段に保持されている前記ユーザデータを先頭データから順番に前記フラッシュメモリに転送するユーザデータ転送手段と、
    前記ユーザデータ転送手段により前記フラッシュメモリに転送される前記ユーザデータに対応する誤り訂正符号を含む付加データを前記フラッシュメモリに転送する付加データ転送手段と、
    予め設定されたダミーデータを前記フラッシュメモリに転送するダミーデータ転送手段と、
    前記ユーザデータ転送手段、前記付加データ転送手段及び前記ダミーデータ転送手段を択一的に動作させる制御手段とを備え、
    前記制御手段は、前記フラッシュメモリに転送されるデータの書き込み先がブロックステータスの記憶領域に対応するときにだけ前記ダミーデータ転送手段を動作させ、
    前記ユーザデータと該ユーザデータに対応する前記付加データは、前記ページ内の連続した領域に書き込まれることを特徴とするメモリコントローラ。
  2. 一定の周期でカウントアップされるカウンタ手段を備え、
    前記カウンタ手段は、前記ダミーデータが前記フラッシュメモリに転送される期間に係わるときに1周期分のカウントアップを停止し、
    前記ユーザデータ転送手段は、前記カウンタ手段から出力されるカウント値に基づいて、前記ユーザデータの先頭データから末尾データまでのデータの中から前記フラッシュメモリに転送するデータを決定することを特徴とする請求項1に記載のメモリコントローラ。
  3. 前記ダミーデータの論理値が、前記フラッシュメモリの消去状態の論理値に一致することを特徴とする請求項1又は2に記載のメモリコントローラ。
  4. 複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリと、請求項1乃至3のいずれか1項に記載のメモリコントローラを備えることを特徴とするフラッシュメモリシステム。
  5. ホストシステムからの要求に応じて、複数セクタのデータが記憶されるページを複数個含む物理ブロック単位で消去が行われるフラッシュメモリに対するアクセスを制御するフラッシュメモリの制御方法であって、
    前記ホストシステム側から供給される1セクタ単位のユーザデータを保持するデータ保持工程と、
    前記データ保持工程で保持される前記ユーザデータを先頭データから順番に前記フラッシュメモリに転送するユーザデータ転送工程と、
    前記ユーザデータ転送工程により前記フラッシュメモリに転送される前記ユーザデータに対応する誤り訂正符号を含む付加データを前記フラッシュメモリに転送する付加データ転送工程と、
    予め設定されたダミーデータを前記フラッシュメモリに転送するダミーデータ転送工程とを有し、
    前記ユーザデータ転送工程、前記付加データ転送工程及び前記ダミーデータ転送工程は択一的に実行され、
    前記ダミーデータ転送工程は、前記フラッシュメモリに転送されるデータの書き込み先がブロックステータスの記憶領域に対応するときにだけ実行され、
    前記ユーザデータと該ユーザデータに対応する前記付加データは、前記ページ内の連続した領域に書き込まれることを特徴とするフラッシュメモリの制御方法。
  6. 前記ユーザデータ転送工程、前記付加データ転送工程及び前記ダミーデータ転送工程が、一定の周期でカウントアップされるカウンタのカウント値に基づいて、択一的に実行されることを特徴とする請求項5に記載のフラッシュメモリの制御方法。
JP2007075932A 2007-03-23 2007-03-23 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法 Expired - Fee Related JP4640366B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2007075932A JP4640366B2 (ja) 2007-03-23 2007-03-23 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2007075932A JP4640366B2 (ja) 2007-03-23 2007-03-23 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Publications (2)

Publication Number Publication Date
JP2008234514A JP2008234514A (ja) 2008-10-02
JP4640366B2 true JP4640366B2 (ja) 2011-03-02

Family

ID=39907182

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2007075932A Expired - Fee Related JP4640366B2 (ja) 2007-03-23 2007-03-23 メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Country Status (1)

Country Link
JP (1) JP4640366B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4643729B2 (ja) 2009-07-09 2011-03-02 株式会社東芝 インタリーブ制御装置、インタリーブ制御方法及びメモリシステム
JP5677336B2 (ja) 2011-08-01 2015-02-25 株式会社東芝 メモリ・デバイス

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003216483A (ja) * 2002-01-21 2003-07-31 Fujitsu Ltd メモリコントローラおよびメモリシステム装置
JP2004342126A (ja) * 1998-02-25 2004-12-02 Lexar Media Inc 複数のデバイスへ同時書き込み操作を行うことにより高まるフラッシュメモリデバイスにおけるメモリ性能
JP2005251219A (ja) * 1997-03-31 2005-09-15 Lexar Media Inc フラッシュメモリ内のブロックにおける移動セクタ
JP2006004367A (ja) * 2004-06-21 2006-01-05 Toshiba Corp メモリカード及び半導体装置
JP2006079434A (ja) * 2004-09-10 2006-03-23 Tokyo Electron Device Ltd 記憶装置、メモリ管理方法及びプログラム

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005251219A (ja) * 1997-03-31 2005-09-15 Lexar Media Inc フラッシュメモリ内のブロックにおける移動セクタ
JP2004342126A (ja) * 1998-02-25 2004-12-02 Lexar Media Inc 複数のデバイスへ同時書き込み操作を行うことにより高まるフラッシュメモリデバイスにおけるメモリ性能
JP2003216483A (ja) * 2002-01-21 2003-07-31 Fujitsu Ltd メモリコントローラおよびメモリシステム装置
JP2006004367A (ja) * 2004-06-21 2006-01-05 Toshiba Corp メモリカード及び半導体装置
JP2006079434A (ja) * 2004-09-10 2006-03-23 Tokyo Electron Device Ltd 記憶装置、メモリ管理方法及びプログラム

Also Published As

Publication number Publication date
JP2008234514A (ja) 2008-10-02

Similar Documents

Publication Publication Date Title
US10049005B2 (en) Flash memory control apparatus utilizing buffer to temporarily storing valid data stored in storage plane, and control system and control method thereof
KR101425957B1 (ko) 이씨씨 제어 회로 및 그것을 포함하는 멀티채널 메모리시스템
US9009399B2 (en) Flash memory storage system and controller and data writing method thereof
US8510502B2 (en) Data writing method, and memory controller and memory storage apparatus using the same
JP4171749B2 (ja) メモリコントローラおよびフラッシュメモリシステム
US9176865B2 (en) Data writing method, memory controller, and memory storage device
JP2011018372A (ja) データをセクタ単位にランダムに入出力することができるフラッシュメモリシステム
US9177656B2 (en) Data writing method, memory storage device and memory controlling circuit unit
US9213631B2 (en) Data processing method, and memory controller and memory storage device using the same
US20150161042A1 (en) Memory management method, memory controlling circuit unit, and memory storage device
US20140173173A1 (en) Method, device, and system including configurable bit-per-cell capability
US20130332653A1 (en) Memory management method, and memory controller and memory storage device using the same
JP4254932B2 (ja) メモリコントローラ及びフラッシュメモリシステム
EP3057100B1 (en) Memory device and operating method of same
JP4640366B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
US9146861B2 (en) Memory address management method, memory controller and memory storage device
US20180335942A1 (en) Data reading method, memory control circuit unit and memory storage device
US8423819B2 (en) Data storage device, controller, and data access method for a downgrade memory
JP4849637B2 (ja) メモリカード及びメモリコントローラ
US9710374B2 (en) Data writing method, memory controller and memory storage device
JP4641338B2 (ja) 不揮発性半導体記憶装置及びシステム
JP4655034B2 (ja) メモリコントローラ及びフラッシュメモリシステム並びにフラッシュメモリの制御方法
JP4697146B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
JP4273106B2 (ja) メモリコントローラ、フラッシュメモリシステム及びフラッシュメモリの制御方法
JP4626595B2 (ja) メモリコントローラ及びメモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20101025

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20101102

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101115

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 4640366

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131210

Year of fee payment: 3

LAPS Cancellation because of no payment of annual fees