先ず、本実施形態の概要について説明する。NAND型フラッシュメモリは、2〜4kBのセルを同時に書き込み、同時に読み出す。書き込み動作時において、ビット線を、1本ずつ交互に、VDDとVssに充電することとなる書き込みデータパターンの場合、ビット線の容量が大きくなり、大きなピーク電流が発生し易くなる。このため、書き込みデータパターンをランダム化し、ビット線を、1本ずつ交互に、VDDとVssに充電するようなデータパターンとならないようにする。ランダム化としては、例えばN系列を用いたランダム化方式を用いる。このランダム化の種には、ページアドレス及びブロックアドレスを用いる。このようにすることで、NANDセル内のデータもランダム化されるため、誤書き込みが発生するデータパターンを回避することが可能である。
また、例えば8値の場合、7つの閾値レベルに書き込むが、この8値のレベルに書き込むデータをランダム化することにより各閾値レベルを均一にする。
書き込みシーケンスの初期において、高いレベルは、書き込み電圧が低いため、書き込み完了とはならない。このため、ビット線のレベルを全ビット線の容量が少なくなるように設定する。例えば、ロウ方向に並んだ半数のセルを同時に書き込む場合、非書き込みビット線はVDDであるため、高いレベルへの書き込みセルのビット線もVDDとすることで容量は小さくなる。また、書き込みが進むと書き込み完了のセルが増加する。このため、ビット線を書き込み非選択、すなわち、VDDにするため、ビット線の容量は低減する。
また、書き込みベリファイも、ベリファイ対象のビット線の充電をする必要がないため、ベリファイ対象のビット線のみ充電するようにすることで、ビット線を充電するセルの数が少なくすみ、ベリファイ時の消費電流を削減することが可能である。
以下、本発明の実施の形態について、図面を参照して説明する。
(第1の実施形態)
図2は、例えば3ビット、8値のデータを記憶するNAND型フラッシュメモリの概略構成を示している。
メモリセルアレイ1は、複数のビット線と複数のワード線と共通ソース線を含み、例えばEEPROMセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ1には、ビット線を制御するためのビット制御回路2とワード線制御回路6が接続されている。
ビット線制御回路2は、ビット線を介してメモリセルアレイ1中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ1中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ1中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路2には、カラムデコーダ3、データ入出力バッファ4が接続されている。ビット線制御回路2内のデータ記憶回路はカラムデコーダ3によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ4を介してデータ入出力端子5から外部へ出力される。データ入出力端子5は、メモリチップ外部のコントローラ11に接続される。このコントローラ11は、前記データ入出力端子5から出力されたデータを受ける。さらに、コントローラ11は、例えば図示せぬホストから供給されるコマンドやアドレスデータ、及びデータを受け、NAND型フラッシュメモリの動作を制御する各種制御信号や、アドレス信号ADD、及びデータDTを出力する。コントローラ11からデータ入出力端子5に入力された書き込みデータは、データ入出力バッファ4を介して、カラムデコーダ3によって選択されたデータ記憶回路に供給され、コマンド及びアドレスは制御信号及び制御電圧発生回路7に供給される。
ワード線制御回路6は、メモリセルアレイ1に接続されている。このワード線制御回路6は、メモリセルアレイ1中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
メモリセルアレイ1、ビット線制御回路2、カラムデコーダ3、データ入出力バッファ4、及びワード線制御回路6は、制御信号及び制御電圧発生回路7に接続され、この制御信号及び制御電圧発生回路7によって制御される。制御信号及び制御電圧発生回路7は、制御信号入力端子8に接続され、コントローラ11から制御信号入力端子8を介して入力される制御信号ALE(アドレス・ラッチ・イネーブル)、CLE(コマンド・ラッチ・イネーブル)、WE(ライト・イネーブル)によって制御される。
前記ビット線制御回路2、カラムデコーダ3、ワード線制御回路6、制御信号及び制御電圧発生回路7は書き込み回路、及び読み出し回路を構成している。
また、制御信号及び制御電圧発生回路7は、ダイナミックデータキャッシュ(DDC)制御回路7−1を有している。このDDC制御回路7−1は、後述するデータ記憶回路に含まれるダイナミックラッチ回路としての複数のDRAMのリフレッシュ動作を制御する制御信号を発生する。
図3は、図2に示すメモリセルアレイ1及びビット線制御回路2の構成の一例を示している。メモリセルアレイ1には複数のNANDセルが配置されている。1つのNANDセルは、直列接続された例えば32個のEEPROMからなるメモリセルMCと、選択ゲートS1、S2とにより構成されている。選択ゲートS2はビット線BL0eに接続され、選択ゲートS1はソース線SRCに接続されている。各ロウに配置されたメモリセルMCの制御ゲートはワード線WL0〜WL29、WL30、WL31に共通接続されている。また、選択ゲートS2はセレクト線SGDに共通接続され、選択ゲートS1はセレクト線SGSに共通接続されている。
ビット線制御回路2は複数のデータ記憶回路10を有している。各データ記憶回路10には、一対のビット線(BL0e、BL0o)、(BL1e、BL1o)…(BLie、BLio)、(BL8ke、BL8ko)が接続されている。
メモリセルアレイ1は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のNANDセルにより構成され、例えばこのブロック単位でデータが消去される。また、消去動作は、データ記憶回路10に接続されている2本のビット線について同時に行なわれる。
また、ビット線の1つおきに配置され、1つのワード線に接続された複数のメモリセル(破線で囲まれた範囲のメモリセル)は、1セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。すなわち、ロウ方向に配置された複数のメモリセルのうち半数のメモリセルが対応するビット線に接続される。このため、ロウ方向に配置された複数のメモリセルの半数ずつに対して書き込み又は読み出し動作が実行される。
リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路10に接続されている2本のビット線(BLie、BLio)のうち外部より供給されるアドレス信号(YA0、YA1…YAi…YA8k)に応じて1本のビット線が選択される。さらに、外部アドレスに応じて、1本のワード線が選択され、破線で示す、3ページが選択される。この3ページの切り替えはアドレスによって行われる。
図4は、図2に示すメモリセルアレイ1及びビット線制御回路2の構成の他の例を示している。図3に示す構成の場合、データ記憶回路10に2本のビット線(BLie、BLio)が接続されていた。これに対して、図4に示す構成の場合、各ビット線にデータ記憶回路10が接続され、ロウ方向に配置された複数のメモリセルは、全て対応するビット線に接続される。このため、ロウ方向に配置された全てのメモリセルに対して書き込み又は読み出し動作を行うことができる。
尚、以下の説明は、図3に示す構成、及び図4に示す構成のいずれも適用することが可能であるが、図3を使用する場合について説明する。
図5(a)(b)はメモリセル及び選択トランジスタの断面図を示している。図5(a)はメモリセルを示している。基板51(後述するP型ウェル領域55)にはメモリセルのソース、ドレインとしてのn型拡散層42が形成されている。P型ウェル領域55の上にはゲート絶縁膜43を介して浮遊ゲート(FG)44が形成され、この浮遊ゲート44の上には絶縁膜45を介して制御ゲート(CG)46が形成されている。図5(b)は選択ゲートを示している。P型ウェル領域55にはソース、ドレインとしてのn型拡散層47が形成されている。P型ウェル領域55の上にはゲート絶縁膜48を介して制御ゲート49が形成されている。
図6は、NAND型フラッシュメモリの断面図を示している。例えばP型半導体基板51内には、N型ウェル領域52、53、54、P型ウェル領域56が形成されている。N型ウェル領域52内にはP型ウェル領域55が形成され、このP型ウェル領域55内にメモリセルアレイ1を構成する低電圧NチャネルトランジスタLVNTrが形成されている。さらに、前記N型ウェル領域53、P型ウェル領域56内に、データ記憶回路10を構成する低電圧PチャネルトランジスタLVPTr、低電圧NチャネルトランジスタLVNTrが形成されている。前記基板51内には、ビット線とデータ記憶回路10を接続する高電圧NチャネルトランジスタHVNTrが形成されている。また、前記N型ウェル領域54内には例えばワード線駆動回路等を構成する高電圧PチャネルトランジスタHVPTrが形成されている。図5に示すように、高電圧トランジスタHVNTr、HVPTrは、低電圧トランジスタLVNTr、LVPTrに比べて例えば厚いゲート絶縁膜を有している。
図7は、図6に示す各領域に供給される電圧の例を示している。消去、プログラム、リードにおいて、各領域に図7に示すような電圧が供給される。ここで、Veraは、データの消去時に基板に印加される電圧、Vssは接地電圧、Vddは電源電圧、Vpgmはデータの書き込み時にワード線に供給される電圧、VpgmhはVpgmを転送するための電圧であり、Vpgmh=Vpgm+Vth。データの読み出し時にメモリセルが形成されたウェルにはVssが供給される。Vreadは、データの読み出し時にワード線に供給される電圧。VreadhはVreadを転送するための電圧であり、Vreadh=Vread+Vthである。
図8は、図3に示すデータ記憶回路10の一例を示す回路図である。
このデータ記憶回路10は、例えば3ビット、8値のデータを書き込み、読み出す場合を示しており、プライマリデータキャッシュ(PDC)、セコンダリデータキャッシュ(SDC)、ダイナミックデータキャッシュ(DDCA、DDCB、DDCQ)、テンポラリデータキャッシュ(TDC)を有している。SDC、PDC、DDCA、DDCB、DDCQは、書き込み時に入力データを保持し、読み出し時に読み出しデータを保持し、ベリファイ時に一時的にデータを保持し、多値データを記憶する際に内部データの操作に使用される。TDCは、データの読み出し時にビット線のデータを増幅し、一時的に保持するとともに、多値データを記憶する際に内部データの操作に使用される。
SDCは、スタティックラッチ回路を構成するクロックドインバータ回路61a、61b、及びトランジスタ61c、61dにより構成されている。トランジスタ61cはクロックドインバータ回路61aの入力端と、クロックドインバータ回路61bの入力端の間に接続されている。このトランジスタ61cのゲートには信号EQ2が供給されている。トランジスタ61dはクロックドインバータ回路61bの出力端と接地間に接続されている。このトランジスタ61dのゲートには信号PRSTが供給されている。SDCのノードN2aは、カラム選択トランジスタ61eを介して入出力データ線IOnに接続され、ノードN2bは、カラム選択トランジスタ61fを介して入出力データ線IOに接続される。これらトランジスタ61e、61fのゲートにはカラム選択信号CSLiが供給されている。SDCのノードN2aは、トランジスタ61g、61hを介してPDCのノードN1aに接続されている。トランジスタ61gのゲートには信号BLC2が供給され、トランジスタ61hのゲートには信号BLC1が供給されている。
PDCは、スタティックラッチ回路を構成するクロックドインバータ回路61i、61j及びトランジスタ61kにより構成されている。トランジスタ61kは、クロックドインバータ回路61iの入力端とクロックドインバータ回路61jの入力端の相互間に接続されている。このトランジスタ61kのゲートには信号EQ1が供給されている。PDCのノードN1bはトランジスタ61lのゲートに接続されている。このトランジスタ61lの電流通路の一端はトランジスタ61mを介して接地されている。このトランジスタ61mのゲートには信号CHK1が供給されている。また、トランジスタ61lの電流通路の他端はトランスファーゲートを構成するトランジスタ61n、61oの電流通路の一端に接続されている。このトランジスタ61nのゲートには信号CHK2nが供給されている。また、トランジスタ61oのゲートはノードN2aに接続されている。トランジスタ61n、61oの電流通路の他端は、信号線COMiに接続されている。この信号線COMiは全データ記憶回路10に共通に接続され、この信号線COMiのレベルにより、全データ記憶回路10のベリファイが完了したかどうかを判定できる。すなわち、後述するように、ベリファイが完了すると、PDCのノードN1bがローレベル(ノードN1aがハイレベル)となる。この状態において、信号CHK1、CHK2nをハイレベルとすると、ベリファイが完了している場合、信号COMiがハイレベルとなる。
さらに、前記TDCは、例えばMOSキャパシタ61pにより構成されている。このキャパシタ61pは、一端が前記トランジスタ61g、61hの接続ノードN3に接続され、他端に後述する信号BOOSTが供給されている。また、接続ノードN3には、トランジスタ61qA〜61qCを介してDDCA、DDCB、DDCQが接続される。前記トランジスタ61qA〜61qCのゲートには、信号REGA〜REGQが供給されている。
ダイナミックラッチ回路を構成するDDCA、DDCB、DDCQは、トランジスタ61rA〜61rCにより構成されている。トランジスタ61rA〜61rCの電流通路の一端には信号VPREが供給され、他端は前記トランジスタ61qA〜61qCの電流通路にそれぞれ接続されている。このトランジスタ61rA〜61rCのゲートはトランジスタ61sA〜61sCを介して前記PDCのノードN1aにそれぞれ接続されている。このトランジスタ61sA〜61sCのゲートには信号DTGA、DTGB、DTGQがそれぞれ供給されている。
さらに、前記接続ノードN3にはトランジスタ61t、61uの電流通路の一端が接続されている。トランジスタ61uの電流通路の他端には信号VPREが供給され、ゲートにはBLPREが供給されている。前記トランジスタ61tのゲートには信号BLCLAMPが供給されている。このトランジスタ61tの電流通路の他端はトランジスタ61vを介してビット線BLoの一端に接続され、トランジスタ61wを介してビット線BLeの一端に接続されている。ビット線BLoの一端はトランジスタ61xの電流通路の一端に接続されている。このトランジスタ61xのゲートには信号BIASoが供給されている。ビット線BLeの一端はトランジスタ61yの電流通路の一端に接続されている。このトランジスタ61yのゲートには信号BIASeが供給されている。これらトランジスタ61x、61yの電流通路の他端には、信号BLCRLが供給されている。トランジスタ61x、61yは、信号BIASo、BIASeに応じてトランジスタ61v、61wと相補的にオンとされ、非選択のビット線に信号BLCRLの電位を供給する。
尚、前記ノードN3と電位VPREとの間にはトランジスタ62a、62bが直列接続されている。トランジスタ62aのゲートには信号REGSが供給され、トランジスタ62bのゲートはSDCのノードN2aに接続されている。以後、PDCのデータはノードN1aの電位、SDCのデータはノードN2aの電位、TDCのデータはノードN3の電位とする。DDCA、DDCB、DDCQのデータは、トランジスタ61rA〜61rCのゲートの電位とする。
上記各信号及び電圧は、図2に示す制御信号及び制御電圧発生回路7により生成され、この制御信号及び制御電圧発生回路7の制御に基づき、データの書き込み、ベリファイ、読み出し動作が制御される。さらに、DDCA、DDCB、DDCQは、DDC制御回路7−1により、発生された制御信号によりリフレッシュされる。このリフレッシュ動作は、本実施形態の要旨ではないため、説明は省略する。
本メモリは、多値メモリであるため、1セルに2ビット以上のデータを記憶することができる、ビットの切り替えはアドレスによって行なう。1セルに2ビットを記憶する場合、2ビットは、アドレス(第1ページ、第2ページ)によって切り替え、1セルに3ビットを記憶する場合、3ビットは、アドレス(第1ページ、第2ページ、第3ページ)によって切替える。1セルに4ビット記憶する場合、4ビットは、アドレス(第1ページ、第2ページ、第3ページ、第4ページ)によって切替える。
(消去動作)
消去動作は、図3、図4に点線で示すブロック単位で行う。消去後、セルの閾値電圧は、メモリセルのデータ“0”となる。
図9は、メモリセルのデータとメモリセルの閾値電圧との関係、及びメモリセルのデータと各ページのデータとのを示している。以下、1つのセルに3ビットを記憶する8値の場合について説明する。上記のように、消去動作を行なうと、メモリセルのデータは“0”となる。書き込み動作により、メモリセルのデータはデータ“0”〜“7”のいずれかになる。
(読み出し動作)
図9に示すように、メモリセルのデータは、メモリセルのデータ“0”〜“7”のいずれかにあるため“a”〜“g”のレベルでの読み出し動作をすればよい。
(リード)
図10は、リード、ベリファイリード動作波形を示している。先ず、選択されているセルのウェル、ソース線、非選択ビット線を、Vss(0V)とする。
選択ワード線にリードの時の電位“a”(例えば“a”=0V)供給する。これと同時に、選択ブロックの非選択ワード線にVread、選択ブロックのセレクト線SGDにVsg(Vdd+Vth)、セレクト線SGSにVssを供給する。図8に示すデータ記憶回路の信号VPREをVdd(例えば2.5V)、信号BLPREをVsg(PDCにVdd+Vth)、BLCLAMPを例えば(0.6V+Vth)に一旦設定し、ビット線を例えば0.6Vにプリチャージする。
このときに、選択ビット線は0.6V、非選択ビット線はVssであるため、ある1本の選択ビット線と非選択ビット線及びウェル、ソース等の容量が例えば4pFであるとすると、Q(BL1本)=C(4pF)×V(0.6V)となる。ここで、例えば8kBを同時に書き込む場合、Q(8kB)=8×1024×8×C(4pF)×V(0.6V)となり、巨大なピーク電流が発生する。
次に、セルのソース側のセレクト線SGSをVsg(Vdd+vth)に設定する。閾値電圧が“a”(例えば“a”=0V)より高い時、セルがオフするため、ビット線はハイレベル(以下、“H”と記す)(例えば0.6V)のままである。また、閾値電圧が“a”より低いとセルはオンするため、ビット線は放電され、ソースと同電位、つまりVssとなる。
図8に示すデータ記憶回路の信号BLPREを一旦Vsg(Vdd+Vth)として、TDCのノードをVddにプリチャージした後、信号BLCLAMPを例えば(0.45V+vth)に設定する。TDCのノードはビット線が0.45Vより低い場合、ローレベル(以下、“L”と記す)となり、ビット線の電位が0.45Vより高い場合、“H”のままとなる。ここで、信号BLC1=Vsg(Vdd+Vth)として、TDCの電位をPDCに読み込む。セルの閾値電圧が、“a”レベルより低い場合、PDCは“L”、高い場合、PDCは“H”となり、読み出しが行なわれる。
次に、選択ワード線にリードの時の電位“b”を供給する。閾値電圧が“b”レベルより高い時、セルがオフするため、ビット線は“H”(例えば0.6V)のままであり、閾値電圧“b”より低いとセルがオンするため、ビット線は放電され、ソースと同電位つまりVssとなる。このようにして、ワード線の電圧を次々に変化させて読み出したデータを、PDC及びSDCに記憶する。
図4に示すように、ロウ方向に並んだ全数のセルを一括して読み出す場合、選択ブロックのセレクト線SGSは、選択ブロックのセレクト線SGDと同時に“H”とし、ビット線を充電すると同時に、セルがオン状態である場合、ビット線を放電させ、セルがオフ状態である場合、ビット線が充電状態となる。ビット線のレベルを図8に示すTDCに読み出し、このTDCのレベルをPDCに転送する。オン状態のセルが多い場合、信号VPREが供給されるノードから、ソースに大電流が流れる。このため、ソースの電位が浮いてしまう問題がある。これを抑えるため、複数回の読み出し動作を行い、先ず、オンするセル、つまり、ソースが浮いても電流が流れるセルの読み出し結果は“L”とする。このセルが接続されるビット線は、次回から充電せず、1回目の読み出しで読み出結果が“H”のセルに対して、再度読み出しを行う。したがって、2回目の読み出しにおいて、セル電流が大きなセルは、読み出さないため、ソースが浮かなくなり、正確に読み出すことが可能である。
(プログラム及びプログラムベリファイ)
(プログラム)
図11は、プログラム動作のフローチャートを示している。プログラム動作は、先ず、アドレスを指定し、図3に示す3ページが選択される。
プログラムは、例えば2〜4kBのセルからなる第1ページ、第2ページ、第3ページのデータを順に入力し、3ページ同時に書き込む。第1ページ、第2ページ、第3ページのデータは、外部からコントローラ11、データ入出力端子5、データ入出力バッファ4、を介してビット線制御回路2内に転送される。このデータうち、データの全てが“1”又は“0”となる場合がある。このようなデータの場合、ビット線の容量が大きくなり、大きな電流ピークが発生する場合がある。また、ブロック内の全てのデータパターンが同じであると、例えばNANDセル内のデータが全て“1”となることがある。この場合、書き込み時に、セルのブーストが強くなり、GIDL(Gate Induced Drain Leakage)などにより、誤書き込みの問題が発生する。このため、このようなデータパターンとならないように、書き込みデータを次のように操作する。
第1の方法は、データをランダム化する。
第2の方法は、データに冗長セルデータ付加し、2〜4kBのデータの内、データが全て“1”又は“0”とならないようにする。
これらのデータ操作は、NAND型フラッシュメモリのチップ内、又はコントローラ11のいずれにも搭載可能である。本実施形態では、図2に示す例えばデータ入出力バッファ4に、変換回路4−1が設けられている。この変換回路4−1は、上記第1の方法を実行する回路であり、データをランダム化する。
(データランダム化)
図1(a)は、変換回路4−1の一例を示している。この変換回路4−1は、例えば排他的論理和回路(以下、EXORと記す)4a、4bと、直列接続されたレジスタ4c、4d、4e、4fにより構成されている。これらレジスタ4c〜4fはシフトレジスタSFRを構成している。EXOR4aは、入力データとEXOR4bの出力データの排他的論理和を出力する。シフトレジスタSFRは、EXOR4bの出力データをレジスタ4c〜4fに順次シフトする。EXOR4bは、レジスタ4cの出力データとレジスタ4fの出力データの排他的論理和を出力する。
図1(b)は、レジスタ4c〜4fに保持されるデータの変化を示している。図1(b)を参照して図1(a)の動作について説明する。
変換回路4−1において、EXOR4aの出力データS(x)は、次式で示される循環符号に使用される原始多項式である。
S(x)=x4+x+1
初期状態において、レジスタ4f〜4cのデータは、後述するように、所定の値に設定されるが、ここでは、x4=x3=x2=0、x1=1として説明する。この状態において、レジスタ4cにEXOR4aの出力データ“1”が供給されると、レジスタ4f〜4cのデータは、x4=x3=0、x1=x2=1となる。この後、EXOR4aの出力データがレジスタ4cに入力される毎に、レジスタ4cから4f側に順次データがシフトされる。このようにして4回シフトした状態において、レジスタ4c〜4fは、全てデータ“1”を保持する。同様にして、データが15回シフトされると、最初と同じ値となる。EXOR4aの出力データと、入力データを、EXOR4bで排他的論理和をとり、これを出力とする。このため、例えば、入力データが全て“1”の場合、出力データは、全て“1”以外のデータとなる。また、例えば入力データが全て“0”の場合、出力データは、111101011001000…”となる。
上記変換回路4−1の初期値は、例えば、ワード線のアドレスの下位ビット、又は、ワード線のアドレスとブロックのアドレスを加えた値の下位ビットとする。このように設定した場合、例えばブロックアドレス“1”、ワード線のアドレス“1”の場合、レジスタ4f〜4cに設定される初期値は“1”+“1”=“2”、つまり、x4=0、x3=0、x2=1、x1=0となる。この状態において、EXOR4aの入力データとして入力データが全て“0”の場合、出力されるデータは、“000111101011001…”となる。入力データが全て“0”であるが、初期値がことなることにより、先ほどと異なったデータが出力される。
たまたま、外部からの入力データがランダムの場合、この変換回路4−1の出力が、“00000000000・・・”となる可能性がある。しかし、入力データ長が2〜4kBと長いため、このようになる確率は非常に少ない。
(冗長セルデータ付加)
同一データが連続することを回避するため、データ長を拡張する。例えば2〜4kBのデータの内、データが全て“1”又は“0”、あるいは、“1”又は“0”が規定数以上ある場合、拡張したビットにデータを加えることにより、データが全て“1”又は“0”、あるいは、“1”又は“0”が規定数以上とないようにする。
図12(a)(b)は、冗長セルデータを付加する場合の例を示している。図12(a)に示す例1は、説明を簡単化するため、実際にはデータ長が2〜4kBであるが、データが4ビットで2ビット付加した場合を示している。この4ビットの内、3ビット以上が“0”の場合、“11”の2ビットを付加し、この4ビットの内、3ビット以上が“1”の場合、“00”の2ビットを付加し、これ以外の場合、“01”の2ビットを付加している。
図12(b)に示す例2は、データ長が8ビットの場合を示している。この8ビットの内、5ビット以上が“0”の場合、“11”の2ビットを付加し、この8ビットの内、5ビット以上が“1”の場合、“00”の2ビットを付加し、これ以外の場合、“01”の2ビットを付加している。
上記のように、入力データの“0”又は“1”の数に応じて、2ビットのデータを付加する回路は、例えば入力データの“0”又は“1”の数を計数するカウンタと、カウンタの出力データに応じて付加ビットを選択するセレクタとにより構成することができる。
(データロード)
上記のようにして、第1ページのデータが、全て“0”又は“1”とならないようにした後、全ての書き込みデータが、図3(図4)、図8に示すデータ記憶回路10内のSDCに記憶される。この後、データ転送コマンドが入力されると、全てのデータ記憶回路内のSDCのデータがPDC、DDCAに転送される。
この後、第2ページのデータも第1ページのデータと同様に、全てのデータが同一データとならないように操作した後、全ての書き込みデータがデータ記憶回路内のSDCに記憶される。この後、データ転送コマンドが入力されると、全てのデータ記憶回路内のSDCのデータがPDC、DDCBに転送される。
この後、第3ページのデータも第1、第2ページのデータと同様に、全てのデータが同一データとならないように操作した後、全ての書き込みデータがデータ記憶回路内のSDCに記憶される。この後、各書き込みレベルに応じて、PDC、SDC、DDCA、DDCBがデータセットされる。
図14(a)(b)(c)は、PDC、SDC、DDCA、DDCBに設定されるデータを示すものであり、図14(a)は、データセット前におけるSDC、DDCA、DDCBのデータを示し、図14(b)は、従来のデータセット後におけるPDC、SDC、DDCA、DDCBのデータを示し、図14(c)は、本発明のデータセット後におけるPDC、SDC、DDCA、DDCBのデータを示している。
非書き込みの場合、図8に示すデータ記憶回路10において、PDCのノードN1aは、“H”になり、書き込みを行なう場合、“L”となる。以後、PDCのデータはデータ記憶回路のノードN1aの電位、SDCのデータはデータ記憶回路のノードN2aの電位とする。
(プログラム動作)
図16は、プログラム時における各部の波形を示している。
図8に示す信号BLC1をVdd+Vthとすると、PDCにデータ“1”(書き込みを行なわない)が記憶されている時、ビット線の電位はVddとなる。また、PDCにデータ“0”(書き込みを行なう)が記憶されている時、ビット線の電位はVssとなる。また、選択されたワード線に接続され、非選択ページの(ビット線が非選択である)セルは書き込みが行なわれてはならない。このため、これらのセルに接続されているビット線にもデータ“1”と同じようにVddを供給する。
このときに、選択ビット線は書き込みである場合、Vssに設定され、非選択ビット線は非書き込みであるためVddに設定されている。このため、ある1本の選択ビット線と非選択ビット線、及びウェル、ソース等の容量が例えば4pFとすると、Q(BL1本)=C(4pF)×V(2.5V)となる。ここで、例えば8kB同時に書き込む場合、Q(8kB)=8×1024×8×C(4pF)×V(2.5V)となり、巨大なピーク電流が発生する。
ここで、選択されているブロックのセレクト線SGSにVdd、選択ワード線にVPGM(20V)、非選択ワード線にVPASS(10V)を供給する。すると、ビット線がVssになっている場合、セルのチャネルがVss、ワード線がVPGMとなるため書き込みが行なわれる。一方、ビット線がVddになっている場合、セルのチャネルがVssではなく、VPGMをブーストすることとなる。このため、カップリングにより、VPGM/2となるためプログラムが行われない。
図4に示すように、ロウ方向に並んだ全数のセルを一括して書き込む場合、全ビット線が選択状態となる。ここで、書き込みデータが交互にデータ“1”とデータ“0”となる場合、全ビット線間の容量が最大となり、巨大なピーク電流が発生する。しかし、本実施形態の場合、書き込みデータ(例えば1ページ=2〜4kB、3ページ分)が、8値のレベルに均一に存在するように操作している。このため、1つのレベルへの書き込みデータは、書き込みデータの8分の1となる。
図13は、書き込みシーケンスにおいて、プログラムとベリファイが交互に行われていることを示している。この例は、1つのレベルの書き込みは10回のループで完了としている。このため、1回のループ毎に10分の1ずつ書込まれると仮定する。
図15(a)(b)は、書き込み時に電流ピークが発生する場合、即ち、ビット線が“0”となる率を示している。
以下、図3に示すように、ロウ方向に並んだ半数のセルを一括して書き込む場合で説明する。図15(a)に示す従来の場合、いずれかのレベルに書き込む際、図14(b)に示すように、PDCを“0”にセットし、非書き込みの場合、PDCを“1”にセットしている。したがって、1回目のループでは、8レベルの内、レベル1〜7の7レベルを書き込む。この場合、書き込み完了のセルが存在しないため、8分の7のセルを書き込み、つまりビット線をVssとする。このため、ビット線が交互にデータ“1”とデータ“0”となり、最大のピーク電流が発生する。
また、2回目のループでは、書き込みデータの内、レベル“1”に書き込むセル(1/8)の内、1/10は、書き込みが完了するため、9/10のセルが書き込みとなる。また、2〜7レベルに書き込むデータは書き込み完了とならないため、全てのセル(10/10)が書き込みとなる。したがって、書き込みセルの内(1/8)×(9/10)+(6/8)×(10/10)が書き込みとなる。
3回目のループでは、書き込みセルの内、レベル“1”に書き込むセル(1/8)の内、2/10は書き込みが完了するため、8/10のセルが書き込みとなる。レベル“2”に書き込むセル(1/8)の内1/10は書き込みが完了するため、9/10のセルが書き込みとなる。3〜7レベルに書き込むデータは書き込み完了とならないため、全て(10/10)のセルが書き込みとなる。したがって、書き込みセルの内(1/8)×(8/10)+(1/8)×9/10+(5/8)×(10/10)のセルが書き込みとなる。以下順に、書き込むセル(PDC=“0”)が少なくなるに従い、電流は小さくなる。
これに対して、図15(b)に示す本実施形態の場合、図14(c)に示すように、最初はレベル“1”に書き込むセルのみ、PDCを“0”にセットし、他のレベルに書き込むセルは、非書き込みと同じく、PDCを“1”にセットする。したがって、図15(b)に示す1回目のループでは、書き込みデータの内、8分の1のセルのみ書き込みとなる。2回目のループでは、書き込みデータの内、レベル“1”に書き込むセル(1/8)の内1/10は書き込みが完了するため、9/10が書き込みとなり、レベル“2”に書き込むセルのPDCも“0”とする。レベル“2”に書き込むセルは書き込み完了とならないため、全て書き込み(10/10)となり、レベル“3”〜“7”に書き込むセルは非書き込みと同じ、PDCは“1”のままとなる。したがって、書き込みセルの内(1/8)×(9/10)+(1/8)×(10/10)が書き込みとなる。
3回目のループでは、書き込みデータの内、レベル“1”に書き込むセル(1/8)の内、2/10は書き込みが完了するため、8/10が書き込みとなる。レベル“2”に書き込むセル(1/8)の内1/10は書き込みが完了するため、9/10のセルが書き込みとなる。レベル“3”に書き込むセルのPDCも“0”とする。レベル“3”に書き込むセルは書き込み完了とならないため、全て書き込み(10/10)となり、レベル“4”〜“7”に書き込むセルは、非書き込みと同じ、PDCは“1”のままとなる。したがって、書き込みセルの内(1/8)×(8/10)+(1/8)×(9/10)+(1/8)×(10/10)が書き込みとなる。以下、図15(b)に示すようになる。
従来は、ピーク電流が最大となるのは1回目のループであり、全書き込みデータの0.875であり、平均は0.4648である。一方、本実施形態の場合、ピーク電流が最大となるのは7回目のループであり、全書き込みデータの0.6125である。平均は0.3であり、本実施形態によれば、ピーク電流及び消費電流を抑えることが可能である。
本実施形態の場合、図14(c)に示すように、データ記憶回路の各部にデータをセットする。このデータセットは、図11に示すステップS6のデータセットにおいて行う。先ず、従来のデータセットと同様にして、図14(b)に示すように、データ記憶回路の各部にデータをセットする、この後、図8に示す信号BLC1=Vsg(Vdd+Vth)として、TDCにPDCのデータをコピーする。次いで、信号VPRE=Vdd、信号REGB=Vsg、信号REGS=Vsgとする。すると、DDCB=“H”又はSDC=“H”となっている場合、即ち、書き込みレベルが“2”〜“7”の場合、TDCが強制的に“H”となる。この後、信号EQ1=“H”としてPDCを1/2×Vddとする。続いて、信号BLC1=VsgとしてTDCのデータをPDCに読み出す。PDCが“L”となるのは、書き込みレベルが“1”の場合のみであり、PDCが“H”となるのは、非書き込みと書き込みレベルが“2”〜“7”の場合である。この操作により、先ず、書き込みレベルが“1”の書き込みのみを行う。
図11のステップS7〜S15に示すように、プログラムとベリファイ動作を繰り返し、書き込みレベル“2”への書き込みを開始する。この場合、この直前のベリファイ動作において、ワード線等のリカバリー動作中に以下の動作を行う。
信号BLC1=Vsg(Vdd+Vth)として、TDCにPDCのデータをコピーし、信号VPRE=Vss、信号REGB=Vddとする。すると、DDCB=“H”となっている場合、即ち、書き込みレベルが“2”と“3”の場合、TDCが強制的に“L”となる。この後、信号VPRE=Vdd、信号REGA=Vsgとする。すると、DDCA=“H”となっている場合、即ち、書き込みレベルが“3”の場合、TDCが強制的に“H”となる。この後、信号EQ1=“H”としてPDCを1/2×Vddとする。次に、信号BLC1=VsgとしてTDCのデータをPDCに読み出す。PDCが“L”となるのは、書き込みレベルが“1”と“2”の場合のみであり、PDCが“H”となるのは、非書き込みと、書き込みレベルが“3”〜“7”の場合である。
また、図11のステップS7〜S15に示すプログラムとベリファイ動作を繰り返し、書き込みレベルが“3”〜“7”への書き込みを開始する。この場合、この直前のベリファイ動作のワード線等のリカバリー動作中に上記と同様の操作を夫々行う。
本実施例では、図13、図15(b)に示すように、ベリファイを開始するループ回数と、プログラムでPDCを“0”とセットするループ回数を同じとしていた。即ち、ベリファイを行う前のプログラムからPDCを“0”にセットしていた。しかし、必ずしも同じループ回数に合わせる必要はなく、ベリファイを開始するループ回数よりも前から、PDCを“0”にセットしてプログラムを行っていても良い。
(プログラムベリファイリード)
先ず、プログラム動作により、閾値電圧の低いレベルより書き込まれる。このため、図13に示すように、プログラムシーケンスの初めにおいて、レベル“1”のみベリファイし、次のループはレベル“1”とレベル“2”のみベリファイする。このようにして、ループ回数が増加する毎にベリファイレベルを増加する。プログラムシーケンスの途中では、全レベルをベリファイする。プログラムの終盤において、書き込みレベルの低いセルは、書込みが終了しているため、ベリファイを省略することができる。このため、12番目のループ以降、ベリファイ回数が削減され、最後のループでは、レベル“F”のベリファイのみが行われる。プログラムベリファイ動作は、リード動作と殆ど同じである。
先ず、選択されているセルのウェル、ソース線、非選択ビット線がVssにされる。選択ワード線にリードの時の電位“a”より少し高い電位“a’”が印加される。以後“’”はベリファイ電位を示し、リードの電位より若干高い値とする。
次に、図8に示すデータ記憶回路10の信号VPREをVdd(例えば2.5V)に設定し、信号BLPREをVsg(vdd+vth)に設定する。さらに、信号BLCLAMPに、例えば(0.6V+Vth)を一旦供給し、ビット線を例えば0.6Vにプリチャージする。
このとき、選択ビット線は0.6V、非選択ビット線は非書き込みであるためVssである。このため、ある1本の選択ビット線と非選択ビット線及びウェル、ソース等の容量が例えば4pFとすると、Q(BL1本)=C(4pF)×V(0.6V)となる。ここで、例えば8kB同時に書き込む場合、Q(8kB)=8×1024×8×C(4pF)×V(0.6V)となり、巨大なピーク電流が発生する。
従来は、選択ビット線全てをプリチャージしていた。しかし、本実施形態は、実際にベリファイ動作をするビット線のみプリチャージする。最初は、図13に示すように、1回目のループでは、レベル“1”のベリファイしか行わない。このため、レベル“1”のベリファイを行うビット線のみプリチャージする。即ち、書き込みセルの(1/8)のみプリチャージする。2回目のループでは、レベル“1”とレベル“2”のベリファイしか行わない。このため、レベル“1”とレベル“2”のベリファイを行うビット線のみプリチャージする。レベル“1”への書き込みのうち、(1/10)は書き込みが完了しているとする。すると、書き込みデータの(1/8)×(9/10)+(1/8)のみプリチャージする。3回目のループは、レベル“1”とレベル“2”とレベル“3”のベリファイしか行わない。このため、レベル“1”とレベル“2”とレベル“3”のベリファイを行うビット線のみプリチャージする。レベル“1”への書き込みのうち、(2/10)は書き込みが完了し、レベル“2”への書き込みのうち、(1/10)は書き込みが完了しているとする。すると、書き込みデータの(1/8)×(8/10)+(1/8)×(9/10)+(1/8)のみプリチャージする。
このようにすることで、プリチャージに要する電流は、最大でも全選択ビット線を全てプリチャージするために必要な電流の0.6125倍となる。このため、電流ピークを抑えることが可能である。しかし、プリチャージの負荷が変わると、プリチャージレベルが変わる可能性がある。したがって、この値より小さい場合、最大のプリチャージ電流の0.6125倍となるように、ダミーの負荷を加える。
図18は、書き込み時にダミーの負荷を加える例を示している。例えば、ループ1において、レベル“1”のベリファイ時、レベル“2”〜“5”を書き込むビット線もダミーの負荷としてプリチャージする。また、ループ16において、レベル“7”のベリファイ時、レベル“4”〜“7”を書き込むビット線もダミーの負荷としてプリチャージする。
さらに、ループ2において、レベル“1”、“2”のベリファイ時、レベル“3”〜“5”を書き込むビット線もダミーの負荷としてプリチャージする。ループ3において、レベル“1”、“2”、“3”のベリファイ時、レベル“4”、“5”を書き込むビット線もダミーの負荷としてプリチャージする。ループ4において、レベル“1”〜“4”のベリファイ時、レベル“5”を書き込むビット線もダミーの負荷としてプリチャージする。
また、ループ8において、レベル“1”〜“7”のベリファイ時、レベル“6”、“7”を書き込むビット線をダミーの負荷としてプリチャージする。ループ9において、レベル“1”〜“7”のベリファイ時、レベル“5”、“6”、“7”を書き込むビット線をダミーの負荷としてプリチャージする。ループ10において、レベル“1”〜“7”のベリファイ時、レベル“5”、“6”、“7”を書き込むビット線をダミーの負荷としてプリチャージする。ループ11において、レベル“2”〜“7”のベリファイ時、レベル“5”、“6”、“7”を書き込むビット線をダミーの負荷としてプリチャージする。ループ12において、レベル“3”〜“7”のベリファイ時、レベル“4”〜“7”を書き込むビット線をダミーの負荷としてプリチャージする。ループ13において、レベル“4”〜“7”のベリファイ時、レベル“4”〜“7”を書き込むビット線をダミーの負荷としてプリチャージする。ループ14において、レベル“5”〜“7”のベリファイ時、レベル“4”〜“7”を書き込むビット線をダミーの負荷としてプリチャージする。ループ15において、レベル“6”、“7”のベリファイ時、レベル“4”〜“7”を書き込むビット線をダミーの負荷としてプリチャージする。したがって、ループ5〜7は、ベリファイ対象のビット線のみプリチャージされ、ループ1〜4、8〜12は、ベリファイ対象のビット線とダミー負荷が接続されたビット線がプリチャージされる。さらに、ループ13〜16はダミー負荷が接続されたビット線がプリチャージされる。
このように、ビット線のプリチャージを、ベリファイ対象のみ、若しくは、ベリファイ対象とダミーの負荷としてのビット線をプリチャージする。したがって、図11に示すプログラムとベリファイのループ(S7〜S15)において、ベリファイi(iは1〜7)のベリファイでは、レベル“i”へ書き込んでいるセルのビット線のみ、又はこのビット線とダミー負荷としてのビット線が充電される。このため、ベリファイiのベリファイ動作の直前、つまり、プログラムのリカバリー中、又は、前のレベルのベリファイのリカバリー中に、以下の操作を行う。
例えばベリファイ1の直前において、データキャッシュのデータは、図14(c)に示すように設定されている。このため、信号BLPRE=Vdd、信号VPRE=Vssとして、TDCをVssとし、信号VPRE=Vdd、信号REGQ=Vsgとすると、DDCQ=“H”となっている場合、信号TDCのデータが“H”となる。この後、信号DTGQ=“H”として、PDCのデータをDDCQに転送する。この後、信号EQ1=“H”としてPDCを1/2×Vddとした後、信号BLC1=VsgとしてTDCのデータをPDCに読み出す。
次に、信号BLPRE=Vsg、信号VPRE=Vddとして、TDCを“H”とし、信号VPRE=Vss、信号REGQ=VDDとすると、DDCQ=“H”となっている場合、TDCのデータが“L”となる。この後、信号DTGQ=“H”として、PDCをDDCQに転送する。この後、信号EQ1=“H”としてPDCを1/2×Vddとした後、信号BLC1=VsgとしてTDCのデータをPDCに読み出す。この結果、PDCに記憶されているデータが反転される。すなわち、レベル“1”へ書き込んでいる場合、PDCのデータは“H”、これ以外の場合は“L”となる。
この後、信号BLPRE=Vdd、信号VPRE=Vssとして、TDCを“L”とし、信号VPRE=Vdd、信号REGQ=Vsgとする。すると、DDCQ=“H”となっている場合、TDCが“H”となる。この後、信号DTGQ=“H”として、PDCをDDCQに転送する。この後、信号EQ1=“H”としてPDCを1/2×Vddとした後、信号BLC1=VsgとしてTDCのデータをPDCに読み出す。この結果、PDCのデータはDDCQに転送され、DDCQのデータはPDCに転送される。また、DDCQは、レベル“1”へ書き込んでいる場合のみ“H”となる。
通常、図8に示すデータ記憶回路10において、信号VPREをVdd(例えば2.5V)、信号BLPREをVsg(vdd+vth)、信号BLCLAMPを例えば(0.6V+Vth)として、ビット線を例えば0.6Vにプリチャージしていた。しかし、信号VPREをVdd、信号REGQをVsg、信号BLCLAMPを例えば(0.6V+Vth)として、レベル“1”に書き込んでいる場合のみビット線をプリチャージする。同様な操作により、書き込みを行っているセルのみ(書き込み中、PDC=“L”)、ベリファイ動作でビット線を充電し(ベリファイ中、DDCQ=“H”)、書き込みを行っていないセルは(書き込み中、PDC=“H”)、ベリファイ動作でビット線は充電せず(ベリファイ中、DDCQ=“L”)とし、書き込みベリファイ対象のビット線だけビット線を充電する。このようにして、書き込み時のデータを保持しているPDCのデータを、ベリファイ中のビット線充電時に反転させることにより、書き込んでいるセル、つまりベリファイ対象のセルのビット線のみを充電することが可能である。
ビット線放電中に、同様な操作により、DDCQのデータを反転させTDC移動させた後、PDCのデータをDDCQに移動させ、TDCのデータをPDCに移動させる。したがって、DDCQは元のデータを保持し、PDCも書き込み又は非書き込みかを示す元のデータを保持する。この後、DDCQのデータをTDCに移動させた後、PDCのデータをDDCQに移し、TDCのデータをPDCに移す。ここで、図8に示すデータ記憶回路の信号BLPREをVsg(Vdd+Vth)として、TDCのノードをVddにプリチャージした後、信号BLCLAMPを例えば(0.45V+Vth)とする。TDCのノードはビット線が0.45Vより低い場合、“L”となり、ビット線が0.45Vより高い場合、“H”のままとなる。ここで、信号VPRE=Vssとした後、信号REGA、REGB,REGSを、図17に示すテーブルに従って“H”“L”とする。例えばレベル1のベリファイの場合、信号REGB=REGS=“H”とすると、ベリファイレベルより上のレベルに書いているデータ記憶回路のTDCは強制的に“L”となり、このベリファ
イではベリファイパスとはなら無い。この後、信号VPRE=“H”、REGQ=“H”として、DDCQが“H”(非書込み)の場合、TDCを強制的に“H”とする。しかし、DDCQが“L”(書込み)の場合、TDCの値は変わらない。ここで、PDCのデータをDDCQに移した後、信号BLC1=Vsg(Vdd+Vth)として、TDCの電位をPDCに読み込む。したがって、元々PDC=“L”(書き込み)の場合で、セルの閾値が、a’レベルをより低いと、PDCは再び“L”(書き込み)となり、高いとPDCは“H”となる。このため、次回のプログラムループより非書込みとなる。また、元々PDC=“H”(非書込み)の場合、PDC=“H”となり、次回のプログラムループより非書込みとなる。
次に、選択ワード線のレベルを“b’”、“c’”、“d’”、“e’”、“f’”、“g’”として同様にデータ記憶回路10の各データキャッシュを操作する。
PDCが“L”の場合、再び書き込み動作を行ない、全てのデータ記憶回路10のデータが“H”となるまで、プログラム動作とベリファイ動作を繰り返される。
図13に示すように、レベル“1”の書き込みが全て完了すると、次回のループにおいて、レベル“1”のベリファイは行わないようにしている。しかし、レベル“2”のベリファイから行う場合、ダミーとしてレベル“1”のベリファイを行う。レベル“1”とレベル“2”の書き込みが全て完了すると、次回のループからはレベル“1”とレベル“2”のベリファイは行わないようにする。しかし、レベル“3”のベリファイから行う場合、ダミーとしてレベル“2”のベリファイを行う。このようにして、書き込みが完了したベリファイレベルはベリファイ動作を行わないが、1つ前のベリファイのみはダミーとして行う。これは、各ベリファイレベルの最初において、ソース線の電位が浮くため、ソースの電位が浮かない場合のベリファイ動作と同じ動作とするためである。しかし、これが問題にならない場合は省略することも可能である。
尚、本実施形態は、プログラム時のビット線の充電と、ベリファイ時のビット線の動作を選択的に対象のレベルのみ行った。しかし、これらは必ずしも両方をセットで行う必要は無く、片方だけ行うことも可能である。
その他、本発明は上記実施形態に限定されるものではなく、発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。