(57)【特許請求の範囲】
【請求項１】
レベル“０”、レベル“１”〜レベル“（ｉ−１）”のｉ個のレベル（ｉは１以上の自然数）により複数のデータを記憶する複数のメモリセルと、
複数の前記メモリセルのうちｎ個（ｎは１以上の自然数）のセルに同時にデータを書き込む制御部とを具備し、
前記制御部は、前記ｎ個のメモリセルに書き込む時、書き込み動作と書き込みベリファイ動作を行い、前記書き込みベリファイ動作において、同時に書き込むｍ個（ｍ＜＝ｎ）のセルに書き込まれていない場合、再度書き込み動作と書き込みベリファイ動作を繰り返し、前記繰り返し動作の最初において、低いレベルの書き込みセルのみ書き込み、
前記書き込みのとき、複数の前記メモリセルに接続されるビット線のうち、書き込み対象のセルに接続されたビット線を書き込み電圧、書き込み対象でないセルに接続されたビット線を非書き込み電圧とすることを特徴とする半導体記憶装置。
【請求項２】
レベル“０”、レベル“１”〜レベル“（ｉ−１）”のｉ個のレベル（ｉは１以上の自然数）により複数のデータを記憶する複数のメモリセルと、
複数の前記メモリセルのうちｎ個（ｎは１以上の自然数）のセルに同時にデータを書き込む制御部とを具備し、
前記制御部は、前記ｎ個のメモリセルに書き込む時、書き込み動作と書き込みベリファイ動作を行い、前記書き込みベリファイ動作において、同時に書き込むｍ個（ｍ＜＝ｎ）のセルに書込まれていない場合、再度書き込み動作と書き込みベリファイ動作を繰り返し、前記繰り返し動作の最初において、低いレベルの書き込みベリファイのみ行い、前記繰り返し動作の終盤において、高いレベルの書き込みベリファイのみ行い、前記書き込みベリファイのとき、複数の前記メモリセルに接続されるビット線のうち、書き込みベリファイ対象のセルに接続されたビット線のみを充電することを特徴とする半導体記憶装置。
【請求項３】
前記ビット線に接続され、前記ｉ個のレベルに含まれる第１論理レベル及び第２論理レベルを保持するデータ記憶回路をさらに有し、
前記制御部は前記ビット線及び前記データ記憶回路を制御し、
前記制御部は、書き込み動作において、前記データ記憶回路のデータが第１論理レベルの場合、書き込み動作を行い、前記データ記憶回路のデータが第２論理レベルの場合、非書き込みとし、
書き込みベリファイ動作において、前記データ記憶回路のデータが第１論理レベルの場合、前記ビット線を充電し、前記データ記憶回路のデータが第２論理レベルの場合、前記ビット線を充電せず、
前記書き込みベリファイ動作において、前記メモリセルの閾値レベルが所定の閾値レベルに達した場合、前記データ記憶回路の論理レベルを第１論理レベルから、第２論理レベルへ変更することを特徴とする請求項２に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えばＮＡＮＤ型フラッシュメモリに係り、特に、１つのメモリセルに多値データを記憶することが可能な半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリは、カラム方向に配置された複数のセルが直列接続されてＮＡＮＤセルを構成し、このＮＡＮＤセルのドレイン側が選択ゲートを介してそれぞれビット線に接続されている。各ビット線は書き込み、及び読み出し用のラッチ回路に接続されている。データの書き込み、又は読み出し動作は、ロウ方向に配置された全てのセル又は半数のセル（例えば２〜４ｋＢのセル）に対して一括して行なわれる。
【０００３】
また、消去動作は、メモリセルの閾値電圧を負に設定し、書き込み動作により、メモリセル内に電子を注入することにより閾値電圧を正に設定する。しかし、ＮＡＮＤセルは、複数のメモリセルが直列に接続されている。このため、読み出し動作時において、非選択セルをオン状態にする必要がある。したがって、メモリセルのゲートに閾値電圧より高い読み出し電圧（Ｖｒｅａｄ）が印加される。一方、書き込み動作において、メモリセルに書き込まれる閾値電圧は、Ｖｒｅａｄを超えてはならない。このため、書き込み動作は、ビット毎にプログラム、プログラムベリファイリードを繰り返し実行し、Ｖｒｅａｄを超えないように閾値電圧が制御される。
【０００４】
また、近時、メモリの大容量化が急速に進み、１セルに２ビット以上のデータを記憶する多値メモリが開発されている。例えば１セルに２ビットを記憶する場合、４つの閾値電圧を設定しなければならず、１セルに１ビットを記憶するメモリに比べて、閾値電圧の１つ当たりの分布を狭くする必要がある。この書き込み動作は、高精度に行われるため、書き込みスピードが遅くなるという問題がある。
【０００５】
一方、Ｖｒｅａｄの電圧レベルを上げると、読み出し時に高いＶｒｅａｄがセルに印加される。このため、誤書き込みが発生するという問題が発生する。また、メモリセルに高いレベルを書き込もうとすると、高い書き込み電圧が必要であり、ロウ方向に配置された全てのセル、又は半数のセルを一括して書き込む場合、データによっては非書き込み状態としているセルのゲートに高い電圧が加わる。このため、誤書き込みが発生するという問題がある。従って、限られた閾値電圧の範囲、例えば−２Ｖ〜５Ｖの間に、４値の場合は４つの閾値電圧を設定し、８値の場合は８つの閾値電圧設定し、１６値の場合は１６個の閾値電圧を設定しなければならない。このような閾値電圧を設定するには、前述したように、多くのプログラム動作と、ベリファイ動作を繰り返す必要があり、書き込み時間が増大する。
【０００６】
そこで、書き込みパフォーマンスを上げるため、同時に書き込むセル数が増加されている。しかし、プログラム動作の初めにおいて、全ビット線を充電する必要がある。また、ベリファイリード動作の初めも、全ビット線を充電したり、電流の大きいセルを判定したりする必要がある。書き込みセル数を増加した場合、同時に充電されるビット線の数も増加する。このため、プログラム動作や、ベリファイリード動作の初期において、非常に大きな電流が必要となり、ピーク電流が発生する。特に、書き込みデータのパターンによっては、大きなピーク電流が発生する。
【０００７】
従来、書き込み時や、ベリファイ時にピーク電流を低減する技術が開発されている（例えば特許文献１又は２参照）。しかし、書き込みデータのパターンに依存せず、確実にピーク電流を抑制することが要望されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２０００−１６３９７６号公報
【特許文献２】特開２０００−２７６８８７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
本発明は、書き込みデータのパターンに依存せず、確実にピーク電流を抑制することが可能な半導体記憶装置を提供しようとするものである。
【課題を解決するための手段】
【００１０】
本発明の半導体記憶装置の態様は、レベル“０”、レベル“１”〜レベル“（ｉ−１）”のｉ個のレベル（ｉは１以上の自然数）により複数のデータを記憶する複数のメモリセルと、複数の前記メモリセルのうちｎ個（ｎは１以上の自然数）のセルに同時にデータを書き込む制御部とを具備し、前記制御部は、前記ｎ個のメモリセルに書き込む時、書き込み動作と書き込みベリファイ動作を行い、前記書き込みベリファイ動作において、同時に書き込むｍ個（ｍ＜＝ｎ）のセルに書き込まれていない場合、再度書き込み動作と書き込みベリファイ動作を繰り返し、前記繰り返し動作の最初において、低いレベルの書き込みセルのみ書き込み、前記書き込みのとき、複数の前記メモリセルに接続されるビット線のうち、書き込み対象のセルに接続されたビット線を書き込み電圧、書き込み対象でないセルに接続されたビット線を非書き込み電圧とすることを特徴とする
【図面の簡単な説明】
【００１１】
【図１】図１（ａ）は実施形態に係り、データをランダム化する変換回路の一例を示す回路図、図１（ｂ）は図１（ａ）の動作を示す図。
【図２】ＮＡＮＤ型フラッシュメモリの概略構成を示す図。
【図３】図２に示すメモリセルアレイ及びビット線制御回路の構成の一例を示す回路図。
【図４】図２に示すメモリセルアレイ及びビット線制御回路の構成の他の例を示す回路図。
【図５】図５（ａ）（ｂ）はメモリセル及び選択トランジスタを示す断面図。
【図６】ＮＡＮＤ型フラッシュメモリを示す断面図。
【図７】図６に示す各領域に供給される電圧の例を示す図。
【図８】図３に示すデータ記憶回路の一例を示す回路図。
【図９】書き込みデータとメモリセルのデータの関係を示す図。
【図１０】読み出し、及びベリファイ読み出しの動作を示す図。
【図１１】プログラム動作を示すフローチャート。
【図１２】図１２（ａ）（ｂ）は、冗長セルデータを付加する場合の例を示す図。
【図１３】書き込みシーケンスを示すものであり、プログラムとベリファイ図。
【図１４】図１４（ａ）（ｂ）（ｃ）は、データキャッシュの操作を示す図。
【図１５】図１５（ａ）（ｂ）は、書き込み時にビット線が“０”となる率を示す図。
【図１６】プログラム時における各部の波形を示す図。
【図１７】データ記憶回路に供給される信号のレベルを示す図。
【図１８】書き込み時にダミーの負荷を加える例を示す図。
【発明を実施するための形態】
【００１２】
先ず、本実施形態の概要について説明する。ＮＡＮＤ型フラッシュメモリは、２〜４ｋＢのセルを同時に書き込み、同時に読み出す。書き込み動作時において、ビット線を、１本ずつ交互に、ＶＤＤとＶｓｓに充電することとなる書き込みデータパターンの場合、ビット線の容量が大きくなり、大きなピーク電流が発生し易くなる。このため、書き込みデータパターンをランダム化し、ビット線を、１本ずつ交互に、ＶＤＤとＶｓｓに充電するようなデータパターンとならないようにする。ランダム化としては、例えばＮ系列を用いたランダム化方式を用いる。このランダム化の種には、ページアドレス及びブロックアドレスを用いる。このようにすることで、ＮＡＮＤセル内のデータもランダム化されるため、誤書き込みが発生するデータパターンを回避することが可能である。
【００１３】
また、例えば８値の場合、７つの閾値レベルに書き込むが、この８値のレベルに書き込むデータをランダム化することにより各閾値レベルを均一にする。
【００１４】
書き込みシーケンスの初期において、高いレベルは、書き込み電圧が低いため、書き込み完了とはならない。このため、ビット線のレベルを全ビット線の容量が少なくなるように設定する。例えば、ロウ方向に並んだ半数のセルを同時に書き込む場合、非書き込みビット線はＶＤＤであるため、高いレベルへの書き込みセルのビット線もＶＤＤとすることで容量は小さくなる。また、書き込みが進むと書き込み完了のセルが増加する。このため、ビット線を書き込み非選択、すなわち、ＶＤＤにするため、ビット線の容量は低減する。
【００１５】
また、書き込みベリファイも、ベリファイ対象のビット線の充電をする必要がないため、ベリファイ対象のビット線のみ充電するようにすることで、ビット線を充電するセルの数が少なくすみ、ベリファイ時の消費電流を削減することが可能である。
【００１６】
以下、本発明の実施の形態について、図面を参照して説明する。
【００１７】
（第１の実施形態）
図２は、例えば３ビット、８値のデータを記憶するＮＡＮＤ型フラッシュメモリの概略構成を示している。
【００１８】
メモリセルアレイ１は、複数のビット線と複数のワード線と共通ソース線を含み、例えばＥＥＰＲＯＭセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ１には、ビット線を制御するためのビット制御回路２とワード線制御回路６が接続されている。
【００１９】
ビット線制御回路２は、ビット線を介してメモリセルアレイ１中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ１中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ１中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路２には、カラムデコーダ３、データ入出力バッファ４が接続されている。ビット線制御回路２内のデータ記憶回路はカラムデコーダ３によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ４を介してデータ入出力端子５から外部へ出力される。データ入出力端子５は、メモリチップ外部のコントローラ１１に接続される。このコントローラ１１は、前記データ入出力端子５から出力されたデータを受ける。さらに、コントローラ１１は、例えば図示せぬホストから供給されるコマンドやアドレスデータ、及びデータを受け、ＮＡＮＤ型フラッシュメモリの動作を制御する各種制御信号や、アドレス信号ＡＤＤ、及びデータＤＴを出力する。コントローラ１１からデータ入出力端子５に入力された書き込みデータは、データ入出力バッファ４を介して、カラムデコーダ３によって選択されたデータ記憶回路に供給され、コマンド及びアドレスは制御信号及び制御電圧発生回路７に供給される。
【００２０】
ワード線制御回路６は、メモリセルアレイ１に接続されている。このワード線制御回路６は、メモリセルアレイ１中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
【００２１】
メモリセルアレイ１、ビット線制御回路２、カラムデコーダ３、データ入出力バッファ４、及びワード線制御回路６は、制御信号及び制御電圧発生回路７に接続され、この制御信号及び制御電圧発生回路７によって制御される。制御信号及び制御電圧発生回路７は、制御信号入力端子８に接続され、コントローラ１１から制御信号入力端子８を介して入力される制御信号ＡＬＥ（アドレス・ラッチ・イネーブル）、ＣＬＥ（コマンド・ラッチ・イネーブル）、ＷＥ（ライト・イネーブル）によって制御される。
【００２２】
前記ビット線制御回路２、カラムデコーダ３、ワード線制御回路６、制御信号及び制御電圧発生回路７は書き込み回路、及び読み出し回路を構成している。
【００２３】
また、制御信号及び制御電圧発生回路７は、ダイナミックデータキャッシュ（ＤＤＣ）制御回路７−１を有している。このＤＤＣ制御回路７−１は、後述するデータ記憶回路に含まれるダイナミックラッチ回路としての複数のＤＲＡＭのリフレッシュ動作を制御する制御信号を発生する。
【００２４】
図３は、図２に示すメモリセルアレイ１及びビット線制御回路２の構成の一例を示している。メモリセルアレイ１には複数のＮＡＮＤセルが配置されている。１つのＮＡＮＤセルは、直列接続された例えば３２個のＥＥＰＲＯＭからなるメモリセルＭＣと、選択ゲートＳ１、Ｓ２とにより構成されている。選択ゲートＳ２はビット線ＢＬ０ｅに接続され、選択ゲートＳ１はソース線ＳＲＣに接続されている。各ロウに配置されたメモリセルＭＣの制御ゲートはワード線ＷＬ０〜ＷＬ２９、ＷＬ３０、ＷＬ３１に共通接続されている。また、選択ゲートＳ２はセレクト線ＳＧＤに共通接続され、選択ゲートＳ１はセレクト線ＳＧＳに共通接続されている。
【００２５】
ビット線制御回路２は複数のデータ記憶回路１０を有している。各データ記憶回路１０には、一対のビット線（ＢＬ０ｅ、ＢＬ０ｏ）、（ＢＬ１ｅ、ＢＬ１ｏ）…（ＢＬｉｅ、ＢＬｉｏ）、（ＢＬ８ｋｅ、ＢＬ８ｋｏ）が接続されている。
【００２６】
メモリセルアレイ１は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のＮＡＮＤセルにより構成され、例えばこのブロック単位でデータが消去される。また、消去動作は、データ記憶回路１０に接続されている２本のビット線について同時に行なわれる。
【００２７】
また、ビット線の１つおきに配置され、１つのワード線に接続された複数のメモリセル（破線で囲まれた範囲のメモリセル）は、１セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。すなわち、ロウ方向に配置された複数のメモリセルのうち半数のメモリセルが対応するビット線に接続される。このため、ロウ方向に配置された複数のメモリセルの半数ずつに対して書き込み又は読み出し動作が実行される。
【００２８】
リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路１０に接続されている２本のビット線（ＢＬｉｅ、ＢＬｉｏ）のうち外部より供給されるアドレス信号（ＹＡ０、ＹＡ１…ＹＡｉ…ＹＡ８ｋ）に応じて１本のビット線が選択される。さらに、外部アドレスに応じて、１本のワード線が選択され、破線で示す、３ページが選択される。この３ページの切り替えはアドレスによって行われる。
【００２９】
図４は、図２に示すメモリセルアレイ１及びビット線制御回路２の構成の他の例を示している。図３に示す構成の場合、データ記憶回路１０に２本のビット線（ＢＬｉｅ、ＢＬｉｏ）が接続されていた。これに対して、図４に示す構成の場合、各ビット線にデータ記憶回路１０が接続され、ロウ方向に配置された複数のメモリセルは、全て対応するビット線に接続される。このため、ロウ方向に配置された全てのメモリセルに対して書き込み又は読み出し動作を行うことができる。
【００３０】
尚、以下の説明は、図３に示す構成、及び図４に示す構成のいずれも適用することが可能であるが、図３を使用する場合について説明する。
【００３１】
図５（ａ）（ｂ）はメモリセル及び選択トランジスタの断面図を示している。図５（ａ）はメモリセルを示している。基板５１（後述するＰ型ウェル領域５５）にはメモリセルのソース、ドレインとしてのｎ型拡散層４２が形成されている。Ｐ型ウェル領域５５の上にはゲート絶縁膜４３を介して浮遊ゲート（ＦＧ）４４が形成され、この浮遊ゲート４４の上には絶縁膜４５を介して制御ゲート（ＣＧ）４６が形成されている。図５（ｂ）は選択ゲートを示している。Ｐ型ウェル領域５５にはソース、ドレインとしてのｎ型拡散層４７が形成されている。Ｐ型ウェル領域５５の上にはゲート絶縁膜４８を介して制御ゲート４９が形成されている。
【００３２】
図６は、ＮＡＮＤ型フラッシュメモリの断面図を示している。例えばＰ型半導体基板５１内には、Ｎ型ウェル領域５２、５３、５４、Ｐ型ウェル領域５６が形成されている。Ｎ型ウェル領域５２内にはＰ型ウェル領域５５が形成され、このＰ型ウェル領域５５内にメモリセルアレイ１を構成する低電圧ＮチャネルトランジスタＬＶＮＴｒが形成されている。さらに、前記Ｎ型ウェル領域５３、Ｐ型ウェル領域５６内に、データ記憶回路１０を構成する低電圧ＰチャネルトランジスタＬＶＰＴｒ、低電圧ＮチャネルトランジスタＬＶＮＴｒが形成されている。前記基板５１内には、ビット線とデータ記憶回路１０を接続する高電圧ＮチャネルトランジスタＨＶＮＴｒが形成されている。また、前記Ｎ型ウェル領域５４内には例えばワード線駆動回路等を構成する高電圧ＰチャネルトランジスタＨＶＰＴｒが形成されている。図５に示すように、高電圧トランジスタＨＶＮＴｒ、ＨＶＰＴｒは、低電圧トランジスタＬＶＮＴｒ、ＬＶＰＴｒに比べて例えば厚いゲート絶縁膜を有している。
【００３３】
図７は、図６に示す各領域に供給される電圧の例を示している。消去、プログラム、リードにおいて、各領域に図７に示すような電圧が供給される。ここで、Ｖｅｒａは、データの消去時に基板に印加される電圧、Ｖｓｓは接地電圧、Ｖｄｄは電源電圧、Ｖｐｇｍはデータの書き込み時にワード線に供給される電圧、ＶｐｇｍｈはＶｐｇｍを転送するための電圧であり、Ｖｐｇｍｈ＝Ｖｐｇｍ＋Ｖｔｈ。データの読み出し時にメモリセルが形成されたウェルにはＶｓｓが供給される。Ｖｒｅａｄは、データの読み出し時にワード線に供給される電圧。ＶｒｅａｄｈはＶｒｅａｄを転送するための電圧であり、Ｖｒｅａｄｈ＝Ｖｒｅａｄ＋Ｖｔｈである。
【００３４】
図８は、図３に示すデータ記憶回路１０の一例を示す回路図である。
【００３５】
このデータ記憶回路１０は、例えば３ビット、８値のデータを書き込み、読み出す場合を示しており、プライマリデータキャッシュ（ＰＤＣ）、セコンダリデータキャッシュ（ＳＤＣ）、ダイナミックデータキャッシュ（ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＱ）、テンポラリデータキャッシュ（ＴＤＣ）を有している。ＳＤＣ、ＰＤＣ、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＱは、書き込み時に入力データを保持し、読み出し時に読み出しデータを保持し、ベリファイ時に一時的にデータを保持し、多値データを記憶する際に内部データの操作に使用される。ＴＤＣは、データの読み出し時にビット線のデータを増幅し、一時的に保持するとともに、多値データを記憶する際に内部データの操作に使用される。
【００３６】
ＳＤＣは、スタティックラッチ回路を構成するクロックドインバータ回路６１ａ、６１ｂ、及びトランジスタ６１ｃ、６１ｄにより構成されている。トランジスタ６１ｃはクロックドインバータ回路６１ａの入力端と、クロックドインバータ回路６１ｂの入力端の間に接続されている。このトランジスタ６１ｃのゲートには信号ＥＱ２が供給されている。トランジスタ６１ｄはクロックドインバータ回路６１ｂの出力端と接地間に接続されている。このトランジスタ６１ｄのゲートには信号ＰＲＳＴが供給されている。ＳＤＣのノードＮ２ａは、カラム選択トランジスタ６１ｅを介して入出力データ線ＩＯｎに接続され、ノードＮ２ｂは、カラム選択トランジスタ６１ｆを介して入出力データ線ＩＯに接続される。これらトランジスタ６１ｅ、６１ｆのゲートにはカラム選択信号ＣＳＬｉが供給されている。ＳＤＣのノードＮ２ａは、トランジスタ６１ｇ、６１ｈを介してＰＤＣのノードＮ１ａに接続されている。トランジスタ６１ｇのゲートには信号ＢＬＣ２が供給され、トランジスタ６１ｈのゲートには信号ＢＬＣ１が供給されている。
【００３７】
ＰＤＣは、スタティックラッチ回路を構成するクロックドインバータ回路６１ｉ、６１ｊ及びトランジスタ６１ｋにより構成されている。トランジスタ６１ｋは、クロックドインバータ回路６１ｉの入力端とクロックドインバータ回路６１ｊの入力端の相互間に接続されている。このトランジスタ６１ｋのゲートには信号ＥＱ１が供給されている。ＰＤＣのノードＮ１ｂはトランジスタ６１ｌのゲートに接続されている。このトランジスタ６１ｌの電流通路の一端はトランジスタ６１ｍを介して接地されている。このトランジスタ６１ｍのゲートには信号ＣＨＫ１が供給されている。また、トランジスタ６１ｌの電流通路の他端はトランスファーゲートを構成するトランジスタ６１ｎ、６１ｏの電流通路の一端に接続されている。このトランジスタ６１ｎのゲートには信号ＣＨＫ２ｎが供給されている。また、トランジスタ６１ｏのゲートはノードＮ２ａに接続されている。トランジスタ６１ｎ、６１ｏの電流通路の他端は、信号線ＣＯＭｉに接続されている。この信号線ＣＯＭｉは全データ記憶回路１０に共通に接続され、この信号線ＣＯＭｉのレベルにより、全データ記憶回路１０のベリファイが完了したかどうかを判定できる。すなわち、後述するように、ベリファイが完了すると、ＰＤＣのノードＮ１ｂがローレベル（ノードＮ１ａがハイレベル）となる。この状態において、信号ＣＨＫ１、ＣＨＫ２ｎをハイレベルとすると、ベリファイが完了している場合、信号ＣＯＭｉがハイレベルとなる。
【００３８】
さらに、前記ＴＤＣは、例えばＭＯＳキャパシタ６１ｐにより構成されている。このキャパシタ６１ｐは、一端が前記トランジスタ６１ｇ、６１ｈの接続ノードＮ３に接続され、他端に後述する信号ＢＯＯＳＴが供給されている。また、接続ノードＮ３には、トランジスタ６１ｑＡ〜６１ｑＣを介してＤＤＣＡ、ＤＤＣＢ、ＤＤＣＱが接続される。前記トランジスタ６１ｑＡ〜６１ｑＣのゲートには、信号ＲＥＧＡ〜ＲＥＧＱが供給されている。
【００３９】
ダイナミックラッチ回路を構成するＤＤＣＡ、ＤＤＣＢ、ＤＤＣＱは、トランジスタ６１ｒＡ〜６１ｒＣにより構成されている。トランジスタ６１ｒＡ〜６１ｒＣの電流通路の一端には信号ＶＰＲＥが供給され、他端は前記トランジスタ６１ｑＡ〜６１ｑＣの電流通路にそれぞれ接続されている。このトランジスタ６１ｒＡ〜６１ｒＣのゲートはトランジスタ６１ｓＡ〜６１ｓＣを介して前記ＰＤＣのノードＮ１ａにそれぞれ接続されている。このトランジスタ６１ｓＡ〜６１ｓＣのゲートには信号ＤＴＧＡ、ＤＴＧＢ、ＤＴＧＱがそれぞれ供給されている。
【００４０】
さらに、前記接続ノードＮ３にはトランジスタ６１ｔ、６１ｕの電流通路の一端が接続されている。トランジスタ６１ｕの電流通路の他端には信号ＶＰＲＥが供給され、ゲートにはＢＬＰＲＥが供給されている。前記トランジスタ６１ｔのゲートには信号ＢＬＣＬＡＭＰが供給されている。このトランジスタ６１ｔの電流通路の他端はトランジスタ６１ｖを介してビット線ＢＬｏの一端に接続され、トランジスタ６１ｗを介してビット線ＢＬｅの一端に接続されている。ビット線ＢＬｏの一端はトランジスタ６１ｘの電流通路の一端に接続されている。このトランジスタ６１ｘのゲートには信号ＢＩＡＳｏが供給されている。ビット線ＢＬｅの一端はトランジスタ６１ｙの電流通路の一端に接続されている。このトランジスタ６１ｙのゲートには信号ＢＩＡＳｅが供給されている。これらトランジスタ６１ｘ、６１ｙの電流通路の他端には、信号ＢＬＣＲＬが供給されている。トランジスタ６１ｘ、６１ｙは、信号ＢＩＡＳｏ、ＢＩＡＳｅに応じてトランジスタ６１ｖ、６１ｗと相補的にオンとされ、非選択のビット線に信号ＢＬＣＲＬの電位を供給する。
【００４１】
尚、前記ノードＮ３と電位ＶＰＲＥとの間にはトランジスタ６２ａ、６２ｂが直列接続されている。トランジスタ６２ａのゲートには信号ＲＥＧＳが供給され、トランジスタ６２ｂのゲートはＳＤＣのノードＮ２ａに接続されている。以後、ＰＤＣのデータはノードＮ１ａの電位、ＳＤＣのデータはノードＮ２ａの電位、ＴＤＣのデータはノードＮ３の電位とする。ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＱのデータは、トランジスタ６１ｒＡ〜６１ｒＣのゲートの電位とする。
【００４２】
上記各信号及び電圧は、図２に示す制御信号及び制御電圧発生回路７により生成され、この制御信号及び制御電圧発生回路７の制御に基づき、データの書き込み、ベリファイ、読み出し動作が制御される。さらに、ＤＤＣＡ、ＤＤＣＢ、ＤＤＣＱは、ＤＤＣ制御回路７−１により、発生された制御信号によりリフレッシュされる。このリフレッシュ動作は、本実施形態の要旨ではないため、説明は省略する。
【００４３】
本メモリは、多値メモリであるため、１セルに２ビット以上のデータを記憶することができる、ビットの切り替えはアドレスによって行なう。１セルに２ビットを記憶する場合、２ビットは、アドレス（第１ページ、第２ページ）によって切り替え、１セルに３ビットを記憶する場合、３ビットは、アドレス（第１ページ、第２ページ、第３ページ）によって切替える。１セルに４ビット記憶する場合、４ビットは、アドレス（第１ページ、第２ページ、第３ページ、第４ページ）によって切替える。
【００４４】
（消去動作）
消去動作は、図３、図４に点線で示すブロック単位で行う。消去後、セルの閾値電圧は、メモリセルのデータ“０”となる。
【００４５】
図９は、メモリセルのデータとメモリセルの閾値電圧との関係、及びメモリセルのデータと各ページのデータとのを示している。以下、１つのセルに３ビットを記憶する８値の場合について説明する。上記のように、消去動作を行なうと、メモリセルのデータは“０”となる。書き込み動作により、メモリセルのデータはデータ“０”〜“７”のいずれかになる。
【００４６】
（読み出し動作）
図９に示すように、メモリセルのデータは、メモリセルのデータ“０”〜“７”のいずれかにあるため“ａ”〜“ｇ”のレベルでの読み出し動作をすればよい。
【００４７】
（リード）
図１０は、リード、ベリファイリード動作波形を示している。先ず、選択されているセルのウェル、ソース線、非選択ビット線を、Ｖｓｓ（０Ｖ）とする。
【００４８】
選択ワード線にリードの時の電位“ａ”（例えば“ａ”＝０Ｖ）供給する。これと同時に、選択ブロックの非選択ワード線にＶｒｅａｄ、選択ブロックのセレクト線ＳＧＤにＶｓｇ（Ｖｄｄ＋Ｖｔｈ）、セレクト線ＳＧＳにＶｓｓを供給する。図８に示すデータ記憶回路の信号ＶＰＲＥをＶｄｄ（例えば２．５Ｖ）、信号ＢＬＰＲＥをＶｓｇ（ＰＤＣにＶｄｄ＋Ｖｔｈ）、ＢＬＣＬＡＭＰを例えば（０．６Ｖ＋Ｖｔｈ）に一旦設定し、ビット線を例えば０．６Ｖにプリチャージする。
【００４９】
このときに、選択ビット線は０．６Ｖ、非選択ビット線はＶｓｓであるため、ある１本の選択ビット線と非選択ビット線及びウェル、ソース等の容量が例えば４ｐＦであるとすると、Ｑ（ＢＬ１本）＝Ｃ（４ｐＦ）×Ｖ（０．６Ｖ）となる。ここで、例えば８ｋＢを同時に書き込む場合、Ｑ（８ｋＢ）＝８×１０２４×８×Ｃ（４ｐＦ）×Ｖ（０．６Ｖ）となり、巨大なピーク電流が発生する。
【００５０】
次に、セルのソース側のセレクト線ＳＧＳをＶｓｇ（Ｖｄｄ＋ｖｔｈ）に設定する。閾値電圧が“ａ”（例えば“ａ”＝０Ｖ）より高い時、セルがオフするため、ビット線はハイレベル（以下、“Ｈ”と記す）（例えば０．６Ｖ）のままである。また、閾値電圧が“ａ”より低いとセルはオンするため、ビット線は放電され、ソースと同電位、つまりＶｓｓとなる。
【００５１】
図８に示すデータ記憶回路の信号ＢＬＰＲＥを一旦Ｖｓｇ（Ｖｄｄ＋Ｖｔｈ）として、ＴＤＣのノードをＶｄｄにプリチャージした後、信号ＢＬＣＬＡＭＰを例えば（０．４５Ｖ＋ｖｔｈ）に設定する。ＴＤＣのノードはビット線が０．４５Ｖより低い場合、ローレベル（以下、“Ｌ”と記す）となり、ビット線の電位が０．４５Ｖより高い場合、“Ｈ”のままとなる。ここで、信号ＢＬＣ１＝Ｖｓｇ（Ｖｄｄ＋Ｖｔｈ）として、ＴＤＣの電位をＰＤＣに読み込む。セルの閾値電圧が、“ａ”レベルより低い場合、ＰＤＣは“Ｌ”、高い場合、ＰＤＣは“Ｈ”となり、読み出しが行なわれる。
【００５２】
次に、選択ワード線にリードの時の電位“ｂ”を供給する。閾値電圧が“ｂ”レベルより高い時、セルがオフするため、ビット線は“Ｈ”（例えば０．６Ｖ）のままであり、閾値電圧“ｂ”より低いとセルがオンするため、ビット線は放電され、ソースと同電位つまりＶｓｓとなる。このようにして、ワード線の電圧を次々に変化させて読み出したデータを、ＰＤＣ及びＳＤＣに記憶する。
【００５３】
図４に示すように、ロウ方向に並んだ全数のセルを一括して読み出す場合、選択ブロックのセレクト線ＳＧＳは、選択ブロックのセレクト線ＳＧＤと同時に“Ｈ”とし、ビット線を充電すると同時に、セルがオン状態である場合、ビット線を放電させ、セルがオフ状態である場合、ビット線が充電状態となる。ビット線のレベルを図８に示すＴＤＣに読み出し、このＴＤＣのレベルをＰＤＣに転送する。オン状態のセルが多い場合、信号ＶＰＲＥが供給されるノードから、ソースに大電流が流れる。このため、ソースの電位が浮いてしまう問題がある。これを抑えるため、複数回の読み出し動作を行い、先ず、オンするセル、つまり、ソースが浮いても電流が流れるセルの読み出し結果は“Ｌ”とする。このセルが接続されるビット線は、次回から充電せず、１回目の読み出しで読み出結果が“Ｈ”のセルに対して、再度読み出しを行う。したがって、２回目の読み出しにおいて、セル電流が大きなセルは、読み出さないため、ソースが浮かなくなり、正確に読み出すことが可能である。
【００５４】
（プログラム及びプログラムベリファイ）
（プログラム）
図１１は、プログラム動作のフローチャートを示している。プログラム動作は、先ず、アドレスを指定し、図３に示す３ページが選択される。
【００５５】
プログラムは、例えば２〜４ｋＢのセルからなる第１ページ、第２ページ、第３ページのデータを順に入力し、３ページ同時に書き込む。第１ページ、第２ページ、第３ページのデータは、外部からコントローラ１１、データ入出力端子５、データ入出力バッファ４、を介してビット線制御回路２内に転送される。このデータうち、データの全てが“１”又は“０”となる場合がある。このようなデータの場合、ビット線の容量が大きくなり、大きな電流ピークが発生する場合がある。また、ブロック内の全てのデータパターンが同じであると、例えばＮＡＮＤセル内のデータが全て“１”となることがある。この場合、書き込み時に、セルのブーストが強くなり、ＧＩＤＬ（Gate Induced Drain Leakage）などにより、誤書き込みの問題が発生する。このため、このようなデータパターンとならないように、書き込みデータを次のように操作する。
【００５６】
第１の方法は、データをランダム化する。
【００５７】
第２の方法は、データに冗長セルデータ付加し、２〜４ｋＢのデータの内、データが全て“１”又は“０”とならないようにする。
【００５８】
これらのデータ操作は、ＮＡＮＤ型フラッシュメモリのチップ内、又はコントローラ１１のいずれにも搭載可能である。本実施形態では、図２に示す例えばデータ入出力バッファ４に、変換回路４−１が設けられている。この変換回路４−１は、上記第１の方法を実行する回路であり、データをランダム化する。
【００５９】
（データランダム化）
図１（ａ）は、変換回路４−１の一例を示している。この変換回路４−１は、例えば排他的論理和回路（以下、ＥＸＯＲと記す）４ａ、４ｂと、直列接続されたレジスタ４ｃ、４ｄ、４ｅ、４ｆにより構成されている。これらレジスタ４ｃ〜４ｆはシフトレジスタＳＦＲを構成している。ＥＸＯＲ４ａは、入力データとＥＸＯＲ４ｂの出力データの排他的論理和を出力する。シフトレジスタＳＦＲは、ＥＸＯＲ４ｂの出力データをレジスタ４ｃ〜４ｆに順次シフトする。ＥＸＯＲ４ｂは、レジスタ４ｃの出力データとレジスタ４ｆの出力データの排他的論理和を出力する。
【００６０】
図１（ｂ）は、レジスタ４ｃ〜４ｆに保持されるデータの変化を示している。図１（ｂ）を参照して図１（ａ）の動作について説明する。
【００６１】
変換回路４−１において、ＥＸＯＲ４ａの出力データＳ（ｘ）は、次式で示される循環符号に使用される原始多項式である。
【００６２】
Ｓ（ｘ）＝ｘ４＋ｘ＋１
初期状態において、レジスタ４ｆ〜４ｃのデータは、後述するように、所定の値に設定されるが、ここでは、ｘ４＝ｘ３＝ｘ２＝０、ｘ１＝１として説明する。この状態において、レジスタ４ｃにＥＸＯＲ４ａの出力データ“１”が供給されると、レジスタ４ｆ〜４ｃのデータは、ｘ４＝ｘ３＝０、ｘ１＝ｘ２＝１となる。この後、ＥＸＯＲ４ａの出力データがレジスタ４ｃに入力される毎に、レジスタ４ｃから４ｆ側に順次データがシフトされる。このようにして４回シフトした状態において、レジスタ４ｃ〜４ｆは、全てデータ“１”を保持する。同様にして、データが１５回シフトされると、最初と同じ値となる。ＥＸＯＲ４ａの出力データと、入力データを、ＥＸＯＲ４ｂで排他的論理和をとり、これを出力とする。このため、例えば、入力データが全て“１”の場合、出力データは、全て“１”以外のデータとなる。また、例えば入力データが全て“０”の場合、出力データは、１１１１０１０１１００１０００…”となる。
【００６３】
上記変換回路４−１の初期値は、例えば、ワード線のアドレスの下位ビット、又は、ワード線のアドレスとブロックのアドレスを加えた値の下位ビットとする。このように設定した場合、例えばブロックアドレス“１”、ワード線のアドレス“１”の場合、レジスタ４ｆ〜４ｃに設定される初期値は“１”＋“１”＝“２”、つまり、ｘ４＝０、ｘ３＝０、ｘ２＝１、ｘ１＝０となる。この状態において、ＥＸＯＲ４ａの入力データとして入力データが全て“０”の場合、出力されるデータは、“０００１１１１０１０１１００１…”となる。入力データが全て“０”であるが、初期値がことなることにより、先ほどと異なったデータが出力される。
【００６４】
たまたま、外部からの入力データがランダムの場合、この変換回路４−１の出力が、“０００００００００００・・・”となる可能性がある。しかし、入力データ長が２〜４ｋＢと長いため、このようになる確率は非常に少ない。
【００６５】
（冗長セルデータ付加）
同一データが連続することを回避するため、データ長を拡張する。例えば２〜４ｋＢのデータの内、データが全て“１”又は“０”、あるいは、“１”又は“０”が規定数以上ある場合、拡張したビットにデータを加えることにより、データが全て“１”又は“０”、あるいは、“１”又は“０”が規定数以上とないようにする。
【００６６】
図１２（ａ）（ｂ）は、冗長セルデータを付加する場合の例を示している。図１２（ａ）に示す例１は、説明を簡単化するため、実際にはデータ長が２〜４ｋＢであるが、データが４ビットで２ビット付加した場合を示している。この４ビットの内、３ビット以上が“０”の場合、“１１”の２ビットを付加し、この４ビットの内、３ビット以上が“１”の場合、“００”の２ビットを付加し、これ以外の場合、“０１”の２ビットを付加している。
【００６７】
図１２（ｂ）に示す例２は、データ長が８ビットの場合を示している。この８ビットの内、５ビット以上が“０”の場合、“１１”の２ビットを付加し、この８ビットの内、５ビット以上が“１”の場合、“００”の２ビットを付加し、これ以外の場合、“０１”の２ビットを付加している。
【００６８】
上記のように、入力データの“０”又は“１”の数に応じて、２ビットのデータを付加する回路は、例えば入力データの“０”又は“１”の数を計数するカウンタと、カウンタの出力データに応じて付加ビットを選択するセレクタとにより構成することができる。
【００６９】
（データロード）
上記のようにして、第１ページのデータが、全て“０”又は“１”とならないようにした後、全ての書き込みデータが、図３（図４）、図８に示すデータ記憶回路１０内のＳＤＣに記憶される。この後、データ転送コマンドが入力されると、全てのデータ記憶回路内のＳＤＣのデータがＰＤＣ、ＤＤＣＡに転送される。
【００７０】
この後、第２ページのデータも第１ページのデータと同様に、全てのデータが同一データとならないように操作した後、全ての書き込みデータがデータ記憶回路内のＳＤＣに記憶される。この後、データ転送コマンドが入力されると、全てのデータ記憶回路内のＳＤＣのデータがＰＤＣ、ＤＤＣＢに転送される。
【００７１】
この後、第３ページのデータも第１、第２ページのデータと同様に、全てのデータが同一データとならないように操作した後、全ての書き込みデータがデータ記憶回路内のＳＤＣに記憶される。この後、各書き込みレベルに応じて、ＰＤＣ、ＳＤＣ、ＤＤＣＡ、ＤＤＣＢがデータセットされる。
【００７２】
図１４（ａ）（ｂ）（ｃ）は、ＰＤＣ、ＳＤＣ、ＤＤＣＡ、ＤＤＣＢに設定されるデータを示すものであり、図１４（ａ）は、データセット前におけるＳＤＣ、ＤＤＣＡ、ＤＤＣＢのデータを示し、図１４（ｂ）は、従来のデータセット後におけるＰＤＣ、ＳＤＣ、ＤＤＣＡ、ＤＤＣＢのデータを示し、図１４（ｃ）は、本発明のデータセット後におけるＰＤＣ、ＳＤＣ、ＤＤＣＡ、ＤＤＣＢのデータを示している。
【００７３】
非書き込みの場合、図８に示すデータ記憶回路１０において、ＰＤＣのノードＮ１ａは、“Ｈ”になり、書き込みを行なう場合、“Ｌ”となる。以後、ＰＤＣのデータはデータ記憶回路のノードＮ１ａの電位、ＳＤＣのデータはデータ記憶回路のノードＮ２ａの電位とする。
【００７４】
（プログラム動作）
図１６は、プログラム時における各部の波形を示している。
【００７５】
図８に示す信号ＢＬＣ１をＶｄｄ＋Ｖｔｈとすると、ＰＤＣにデータ“１”（書き込みを行なわない）が記憶されている時、ビット線の電位はＶｄｄとなる。また、ＰＤＣにデータ“０”（書き込みを行なう）が記憶されている時、ビット線の電位はＶｓｓとなる。また、選択されたワード線に接続され、非選択ページの（ビット線が非選択である）セルは書き込みが行なわれてはならない。このため、これらのセルに接続されているビット線にもデータ“１”と同じようにＶｄｄを供給する。
【００７６】
このときに、選択ビット線は書き込みである場合、Ｖｓｓに設定され、非選択ビット線は非書き込みであるためＶｄｄに設定されている。このため、ある１本の選択ビット線と非選択ビット線、及びウェル、ソース等の容量が例えば４ｐＦとすると、Ｑ（ＢＬ１本）＝Ｃ（４ｐＦ）×Ｖ（２．５Ｖ）となる。ここで、例えば８ｋＢ同時に書き込む場合、Ｑ（８ｋＢ）＝８×１０２４×８×Ｃ（４ｐＦ）×Ｖ（２．５Ｖ）となり、巨大なピーク電流が発生する。
【００７７】
ここで、選択されているブロックのセレクト線ＳＧＳにＶｄｄ、選択ワード線にＶＰＧＭ（２０Ｖ）、非選択ワード線にＶＰＡＳＳ（１０Ｖ）を供給する。すると、ビット線がＶｓｓになっている場合、セルのチャネルがＶｓｓ、ワード線がＶＰＧＭとなるため書き込みが行なわれる。一方、ビット線がＶｄｄになっている場合、セルのチャネルがＶｓｓではなく、ＶＰＧＭをブーストすることとなる。このため、カップリングにより、ＶＰＧＭ／２となるためプログラムが行われない。
【００７８】
図４に示すように、ロウ方向に並んだ全数のセルを一括して書き込む場合、全ビット線が選択状態となる。ここで、書き込みデータが交互にデータ“１”とデータ“０”となる場合、全ビット線間の容量が最大となり、巨大なピーク電流が発生する。しかし、本実施形態の場合、書き込みデータ（例えば１ページ＝２〜４ｋＢ、３ページ分）が、８値のレベルに均一に存在するように操作している。このため、１つのレベルへの書き込みデータは、書き込みデータの８分の１となる。
【００７９】
図１３は、書き込みシーケンスにおいて、プログラムとベリファイが交互に行われていることを示している。この例は、１つのレベルの書き込みは１０回のループで完了としている。このため、１回のループ毎に１０分の１ずつ書込まれると仮定する。
【００８０】
図１５（ａ）（ｂ）は、書き込み時に電流ピークが発生する場合、即ち、ビット線が“０”となる率を示している。
【００８１】
以下、図３に示すように、ロウ方向に並んだ半数のセルを一括して書き込む場合で説明する。図１５（ａ）に示す従来の場合、いずれかのレベルに書き込む際、図１４（ｂ）に示すように、ＰＤＣを“０”にセットし、非書き込みの場合、ＰＤＣを“１”にセットしている。したがって、１回目のループでは、８レベルの内、レベル１〜７の７レベルを書き込む。この場合、書き込み完了のセルが存在しないため、８分の７のセルを書き込み、つまりビット線をＶｓｓとする。このため、ビット線が交互にデータ“１”とデータ“０”となり、最大のピーク電流が発生する。
【００８２】
また、２回目のループでは、書き込みデータの内、レベル“１”に書き込むセル（１／８）の内、１／１０は、書き込みが完了するため、９／１０のセルが書き込みとなる。また、２〜７レベルに書き込むデータは書き込み完了とならないため、全てのセル（１０／１０）が書き込みとなる。したがって、書き込みセルの内（１／８）×（９／１０）＋（６／８）×（１０／１０）が書き込みとなる。
【００８３】
３回目のループでは、書き込みセルの内、レベル“１”に書き込むセル（１／８）の内、２／１０は書き込みが完了するため、８／１０のセルが書き込みとなる。レベル“２”に書き込むセル（１／８）の内１／１０は書き込みが完了するため、９／１０のセルが書き込みとなる。３〜７レベルに書き込むデータは書き込み完了とならないため、全て（１０／１０）のセルが書き込みとなる。したがって、書き込みセルの内（１／８）×（８／１０）＋（１／８）×９／１０＋（５／８）×（１０／１０）のセルが書き込みとなる。以下順に、書き込むセル（ＰＤＣ＝“０”）が少なくなるに従い、電流は小さくなる。
【００８４】
これに対して、図１５（ｂ）に示す本実施形態の場合、図１４（ｃ）に示すように、最初はレベル“１”に書き込むセルのみ、ＰＤＣを“０”にセットし、他のレベルに書き込むセルは、非書き込みと同じく、ＰＤＣを“１”にセットする。したがって、図１５（ｂ）に示す１回目のループでは、書き込みデータの内、８分の１のセルのみ書き込みとなる。２回目のループでは、書き込みデータの内、レベル“１”に書き込むセル（１／８）の内１／１０は書き込みが完了するため、９／１０が書き込みとなり、レベル“２”に書き込むセルのＰＤＣも“０”とする。レベル“２”に書き込むセルは書き込み完了とならないため、全て書き込み（１０／１０）となり、レベル“３”〜“７”に書き込むセルは非書き込みと同じ、ＰＤＣは“１”のままとなる。したがって、書き込みセルの内（１／８）×（９／１０）＋（１／８）×（１０／１０）が書き込みとなる。
【００８５】
３回目のループでは、書き込みデータの内、レベル“１”に書き込むセル（１／８）の内、２／１０は書き込みが完了するため、８／１０が書き込みとなる。レベル“２”に書き込むセル（１／８）の内１／１０は書き込みが完了するため、９／１０のセルが書き込みとなる。レベル“３”に書き込むセルのＰＤＣも“０”とする。レベル“３”に書き込むセルは書き込み完了とならないため、全て書き込み（１０／１０）となり、レベル“４”〜“７”に書き込むセルは、非書き込みと同じ、ＰＤＣは“１”のままとなる。したがって、書き込みセルの内（１／８）×（８／１０）＋（１／８）×（９／１０）＋（１／８）×（１０／１０）が書き込みとなる。以下、図１５（ｂ）に示すようになる。
【００８６】
従来は、ピーク電流が最大となるのは１回目のループであり、全書き込みデータの０．８７５であり、平均は０．４６４８である。一方、本実施形態の場合、ピーク電流が最大となるのは７回目のループであり、全書き込みデータの０．６１２５である。平均は０．３であり、本実施形態によれば、ピーク電流及び消費電流を抑えることが可能である。
【００８７】
本実施形態の場合、図１４（ｃ）に示すように、データ記憶回路の各部にデータをセットする。このデータセットは、図１１に示すステップＳ６のデータセットにおいて行う。先ず、従来のデータセットと同様にして、図１４（ｂ）に示すように、データ記憶回路の各部にデータをセットする、この後、図８に示す信号ＢＬＣ１＝Ｖｓｇ（Ｖｄｄ＋Ｖｔｈ）として、ＴＤＣにＰＤＣのデータをコピーする。次いで、信号ＶＰＲＥ＝Ｖｄｄ、信号ＲＥＧＢ＝Ｖｓｇ、信号ＲＥＧＳ＝Ｖｓｇとする。すると、ＤＤＣＢ＝“Ｈ”又はＳＤＣ＝“Ｈ”となっている場合、即ち、書き込みレベルが“２”〜“７”の場合、ＴＤＣが強制的に“Ｈ”となる。この後、信号ＥＱ１＝“Ｈ”としてＰＤＣを１／２×Ｖｄｄとする。続いて、信号ＢＬＣ１＝ＶｓｇとしてＴＤＣのデータをＰＤＣに読み出す。ＰＤＣが“Ｌ”となるのは、書き込みレベルが“１”の場合のみであり、ＰＤＣが“Ｈ”となるのは、非書き込みと書き込みレベルが“２”〜“７”の場合である。この操作により、先ず、書き込みレベルが“１”の書き込みのみを行う。
【００８８】
図１１のステップＳ７〜Ｓ１５に示すように、プログラムとベリファイ動作を繰り返し、書き込みレベル“２”への書き込みを開始する。この場合、この直前のベリファイ動作において、ワード線等のリカバリー動作中に以下の動作を行う。
【００８９】
信号ＢＬＣ１＝Ｖｓｇ（Ｖｄｄ＋Ｖｔｈ）として、ＴＤＣにＰＤＣのデータをコピーし、信号ＶＰＲＥ＝Ｖｓｓ、信号ＲＥＧＢ＝Ｖｄｄとする。すると、ＤＤＣＢ＝“Ｈ”となっている場合、即ち、書き込みレベルが“２”と“３”の場合、ＴＤＣが強制的に“Ｌ”となる。この後、信号ＶＰＲＥ＝Ｖｄｄ、信号ＲＥＧＡ＝Ｖｓｇとする。すると、ＤＤＣＡ＝“Ｈ”となっている場合、即ち、書き込みレベルが“３”の場合、ＴＤＣが強制的に“Ｈ”となる。この後、信号ＥＱ１＝“Ｈ”としてＰＤＣを１／２×Ｖｄｄとする。次に、信号ＢＬＣ１＝ＶｓｇとしてＴＤＣのデータをＰＤＣに読み出す。ＰＤＣが“Ｌ”となるのは、書き込みレベルが“１”と“２”の場合のみであり、ＰＤＣが“Ｈ”となるのは、非書き込みと、書き込みレベルが“３”〜“７”の場合である。
【００９０】
また、図１１のステップＳ７〜Ｓ１５に示すプログラムとベリファイ動作を繰り返し、書き込みレベルが“３”〜“７”への書き込みを開始する。この場合、この直前のベリファイ動作のワード線等のリカバリー動作中に上記と同様の操作を夫々行う。
【００９１】
本実施例では、図１３、図１５（ｂ）に示すように、ベリファイを開始するループ回数と、プログラムでＰＤＣを“０”とセットするループ回数を同じとしていた。即ち、ベリファイを行う前のプログラムからＰＤＣを“０”にセットしていた。しかし、必ずしも同じループ回数に合わせる必要はなく、ベリファイを開始するループ回数よりも前から、ＰＤＣを“０”にセットしてプログラムを行っていても良い。
【００９２】
（プログラムベリファイリード）
先ず、プログラム動作により、閾値電圧の低いレベルより書き込まれる。このため、図１３に示すように、プログラムシーケンスの初めにおいて、レベル“１”のみベリファイし、次のループはレベル“１”とレベル“２”のみベリファイする。このようにして、ループ回数が増加する毎にベリファイレベルを増加する。プログラムシーケンスの途中では、全レベルをベリファイする。プログラムの終盤において、書き込みレベルの低いセルは、書込みが終了しているため、ベリファイを省略することができる。このため、１２番目のループ以降、ベリファイ回数が削減され、最後のループでは、レベル“Ｆ”のベリファイのみが行われる。プログラムベリファイ動作は、リード動作と殆ど同じである。
【００９３】
先ず、選択されているセルのウェル、ソース線、非選択ビット線がＶｓｓにされる。選択ワード線にリードの時の電位“ａ”より少し高い電位“ａ’”が印加される。以後“’”はベリファイ電位を示し、リードの電位より若干高い値とする。
【００９４】
次に、図８に示すデータ記憶回路１０の信号ＶＰＲＥをＶｄｄ（例えば２．５Ｖ）に設定し、信号ＢＬＰＲＥをＶｓｇ（ｖｄｄ＋ｖｔｈ）に設定する。さらに、信号ＢＬＣＬＡＭＰに、例えば（０．６Ｖ＋Ｖｔｈ）を一旦供給し、ビット線を例えば０．６Ｖにプリチャージする。
【００９５】
このとき、選択ビット線は０．６Ｖ、非選択ビット線は非書き込みであるためＶｓｓである。このため、ある１本の選択ビット線と非選択ビット線及びウェル、ソース等の容量が例えば４ｐＦとすると、Ｑ（ＢＬ１本）＝Ｃ（４ｐＦ）×Ｖ（０．６Ｖ）となる。ここで、例えば８ｋＢ同時に書き込む場合、Ｑ（８ｋＢ）＝８×１０２４×８×Ｃ（４ｐＦ）×Ｖ（０．６Ｖ）となり、巨大なピーク電流が発生する。
【００９６】
従来は、選択ビット線全てをプリチャージしていた。しかし、本実施形態は、実際にベリファイ動作をするビット線のみプリチャージする。最初は、図１３に示すように、１回目のループでは、レベル“１”のベリファイしか行わない。このため、レベル“１”のベリファイを行うビット線のみプリチャージする。即ち、書き込みセルの（１／８）のみプリチャージする。２回目のループでは、レベル“１”とレベル“２”のベリファイしか行わない。このため、レベル“１”とレベル“２”のベリファイを行うビット線のみプリチャージする。レベル“１”への書き込みのうち、（１／１０）は書き込みが完了しているとする。すると、書き込みデータの（１／８）×（９／１０）＋（１／８）のみプリチャージする。３回目のループは、レベル“１”とレベル“２”とレベル“３”のベリファイしか行わない。このため、レベル“１”とレベル“２”とレベル“３”のベリファイを行うビット線のみプリチャージする。レベル“１”への書き込みのうち、（２／１０）は書き込みが完了し、レベル“２”への書き込みのうち、（１／１０）は書き込みが完了しているとする。すると、書き込みデータの（１／８）×（８／１０）＋（１／８）×（９／１０）＋（１／８）のみプリチャージする。
【００９７】
このようにすることで、プリチャージに要する電流は、最大でも全選択ビット線を全てプリチャージするために必要な電流の０．６１２５倍となる。このため、電流ピークを抑えることが可能である。しかし、プリチャージの負荷が変わると、プリチャージレベルが変わる可能性がある。したがって、この値より小さい場合、最大のプリチャージ電流の０．６１２５倍となるように、ダミーの負荷を加える。
【００９８】
図１８は、書き込み時にダミーの負荷を加える例を示している。例えば、ループ１において、レベル“１”のベリファイ時、レベル“２”〜“５”を書き込むビット線もダミーの負荷としてプリチャージする。また、ループ１６において、レベル“７”のベリファイ時、レベル“４”〜“７”を書き込むビット線もダミーの負荷としてプリチャージする。
【００９９】
さらに、ループ２において、レベル“１”、“２”のベリファイ時、レベル“３”〜“５”を書き込むビット線もダミーの負荷としてプリチャージする。ループ３において、レベル“１”、“２”、“３”のベリファイ時、レベル“４”、“５”を書き込むビット線もダミーの負荷としてプリチャージする。ループ４において、レベル“１”〜“４”のベリファイ時、レベル“５”を書き込むビット線もダミーの負荷としてプリチャージする。
【０１００】
また、ループ８において、レベル“１”〜“７”のベリファイ時、レベル“６”、“７”を書き込むビット線をダミーの負荷としてプリチャージする。ループ９において、レベル“１”〜“７”のベリファイ時、レベル“５”、“６”、“７”を書き込むビット線をダミーの負荷としてプリチャージする。ループ１０において、レベル“１”〜“７”のベリファイ時、レベル“５”、“６”、“７”を書き込むビット線をダミーの負荷としてプリチャージする。ループ１１において、レベル“２”〜“７”のベリファイ時、レベル“５”、“６”、“７”を書き込むビット線をダミーの負荷としてプリチャージする。ループ１２において、レベル“３”〜“７”のベリファイ時、レベル“４”〜“７”を書き込むビット線をダミーの負荷としてプリチャージする。ループ１３において、レベル“４”〜“７”のベリファイ時、レベル“４”〜“７”を書き込むビット線をダミーの負荷としてプリチャージする。ループ１４において、レベル“５”〜“７”のベリファイ時、レベル“４”〜“７”を書き込むビット線をダミーの負荷としてプリチャージする。ループ１５において、レベル“６”、“７”のベリファイ時、レベル“４”〜“７”を書き込むビット線をダミーの負荷としてプリチャージする。したがって、ループ５〜７は、ベリファイ対象のビット線のみプリチャージされ、ループ１〜４、８〜１２は、ベリファイ対象のビット線とダミー負荷が接続されたビット線がプリチャージされる。さらに、ループ１３〜１６はダミー負荷が接続されたビット線がプリチャージされる。
【０１０１】
このように、ビット線のプリチャージを、ベリファイ対象のみ、若しくは、ベリファイ対象とダミーの負荷としてのビット線をプリチャージする。したがって、図１１に示すプログラムとベリファイのループ（Ｓ７〜Ｓ１５）において、ベリファイｉ（ｉは１〜７）のベリファイでは、レベル“ｉ”へ書き込んでいるセルのビット線のみ、又はこのビット線とダミー負荷としてのビット線が充電される。このため、ベリファイｉのベリファイ動作の直前、つまり、プログラムのリカバリー中、又は、前のレベルのベリファイのリカバリー中に、以下の操作を行う。
【０１０２】
例えばベリファイ１の直前において、データキャッシュのデータは、図１４（ｃ）に示すように設定されている。このため、信号ＢＬＰＲＥ＝Ｖｄｄ、信号ＶＰＲＥ＝Ｖｓｓとして、ＴＤＣをＶｓｓとし、信号ＶＰＲＥ＝Ｖｄｄ、信号ＲＥＧＱ＝Ｖｓｇとすると、ＤＤＣＱ＝“Ｈ”となっている場合、信号ＴＤＣのデータが“Ｈ”となる。この後、信号ＤＴＧＱ＝“Ｈ”として、ＰＤＣのデータをＤＤＣＱに転送する。この後、信号ＥＱ１＝“Ｈ”としてＰＤＣを１／２×Ｖｄｄとした後、信号ＢＬＣ１＝ＶｓｇとしてＴＤＣのデータをＰＤＣに読み出す。
【０１０３】
次に、信号ＢＬＰＲＥ＝Ｖｓｇ、信号ＶＰＲＥ＝Ｖｄｄとして、ＴＤＣを“Ｈ”とし、信号ＶＰＲＥ＝Ｖｓｓ、信号ＲＥＧＱ＝ＶＤＤとすると、ＤＤＣＱ＝“Ｈ”となっている場合、ＴＤＣのデータが“Ｌ”となる。この後、信号ＤＴＧＱ＝“Ｈ”として、ＰＤＣをＤＤＣＱに転送する。この後、信号ＥＱ１＝“Ｈ”としてＰＤＣを１／２×Ｖｄｄとした後、信号ＢＬＣ１＝ＶｓｇとしてＴＤＣのデータをＰＤＣに読み出す。この結果、ＰＤＣに記憶されているデータが反転される。すなわち、レベル“１”へ書き込んでいる場合、ＰＤＣのデータは“Ｈ”、これ以外の場合は“Ｌ”となる。
【０１０４】
この後、信号ＢＬＰＲＥ＝Ｖｄｄ、信号ＶＰＲＥ＝Ｖｓｓとして、ＴＤＣを“Ｌ”とし、信号ＶＰＲＥ＝Ｖｄｄ、信号ＲＥＧＱ＝Ｖｓｇとする。すると、ＤＤＣＱ＝“Ｈ”となっている場合、ＴＤＣが“Ｈ”となる。この後、信号ＤＴＧＱ＝“Ｈ”として、ＰＤＣをＤＤＣＱに転送する。この後、信号ＥＱ１＝“Ｈ”としてＰＤＣを１／２×Ｖｄｄとした後、信号ＢＬＣ１＝ＶｓｇとしてＴＤＣのデータをＰＤＣに読み出す。この結果、ＰＤＣのデータはＤＤＣＱに転送され、ＤＤＣＱのデータはＰＤＣに転送される。また、ＤＤＣＱは、レベル“１”へ書き込んでいる場合のみ“Ｈ”となる。
【０１０５】
通常、図８に示すデータ記憶回路１０において、信号ＶＰＲＥをＶｄｄ（例えば２．５Ｖ）、信号ＢＬＰＲＥをＶｓｇ（ｖｄｄ＋ｖｔｈ）、信号ＢＬＣＬＡＭＰを例えば（０．６Ｖ＋Ｖｔｈ）として、ビット線を例えば０．６Ｖにプリチャージしていた。しかし、信号ＶＰＲＥをＶｄｄ、信号ＲＥＧＱをＶｓｇ、信号ＢＬＣＬＡＭＰを例えば（０．６Ｖ＋Ｖｔｈ）として、レベル“１”に書き込んでいる場合のみビット線をプリチャージする。同様な操作により、書き込みを行っているセルのみ（書き込み中、ＰＤＣ＝“Ｌ”）、ベリファイ動作でビット線を充電し（ベリファイ中、ＤＤＣＱ＝“Ｈ”）、書き込みを行っていないセルは（書き込み中、ＰＤＣ＝“Ｈ”）、ベリファイ動作でビット線は充電せず（ベリファイ中、ＤＤＣＱ＝“Ｌ”）とし、書き込みベリファイ対象のビット線だけビット線を充電する。このようにして、書き込み時のデータを保持しているＰＤＣのデータを、ベリファイ中のビット線充電時に反転させることにより、書き込んでいるセル、つまりベリファイ対象のセルのビット線のみを充電することが可能である。
【０１０６】
ビット線放電中に、同様な操作により、ＤＤＣＱのデータを反転させＴＤＣ移動させた後、ＰＤＣのデータをＤＤＣＱに移動させ、ＴＤＣのデータをＰＤＣに移動させる。したがって、ＤＤＣＱは元のデータを保持し、ＰＤＣも書き込み又は非書き込みかを示す元のデータを保持する。この後、ＤＤＣＱのデータをＴＤＣに移動させた後、ＰＤＣのデータをＤＤＣＱに移し、ＴＤＣのデータをＰＤＣに移す。ここで、図８に示すデータ記憶回路の信号ＢＬＰＲＥをＶｓｇ（Ｖｄｄ＋Ｖｔｈ）として、ＴＤＣのノードをＶｄｄにプリチャージした後、信号ＢＬＣＬＡＭＰを例えば（０．４５Ｖ＋Ｖｔｈ）とする。ＴＤＣのノードはビット線が０．４５Ｖより低い場合、“Ｌ”となり、ビット線が０．４５Ｖより高い場合、“Ｈ”のままとなる。ここで、信号ＶＰＲＥ＝Ｖｓｓとした後、信号ＲＥＧＡ、ＲＥＧＢ，ＲＥＧＳを、図１７に示すテーブルに従って“Ｈ”“Ｌ”とする。例えばレベル１のベリファイの場合、信号ＲＥＧＢ＝ＲＥＧＳ＝“Ｈ”とすると、ベリファイレベルより上のレベルに書いているデータ記憶回路のＴＤＣは強制的に“Ｌ”となり、このベリファ
イではベリファイパスとはなら無い。この後、信号ＶＰＲＥ＝“Ｈ”、ＲＥＧＱ＝“Ｈ”として、ＤＤＣＱが“Ｈ”（非書込み）の場合、ＴＤＣを強制的に“Ｈ”とする。しかし、ＤＤＣＱが“Ｌ”（書込み）の場合、ＴＤＣの値は変わらない。ここで、ＰＤＣのデータをＤＤＣＱに移した後、信号ＢＬＣ１＝Ｖｓｇ（Ｖｄｄ＋Ｖｔｈ）として、ＴＤＣの電位をＰＤＣに読み込む。したがって、元々ＰＤＣ＝“Ｌ”（書き込み）の場合で、セルの閾値が、ａ’レベルをより低いと、ＰＤＣは再び“Ｌ”（書き込み）となり、高いとＰＤＣは“Ｈ”となる。このため、次回のプログラムループより非書込みとなる。また、元々ＰＤＣ＝“Ｈ”（非書込み）の場合、ＰＤＣ＝“Ｈ”となり、次回のプログラムループより非書込みとなる。
【０１０７】
次に、選択ワード線のレベルを“ｂ’”、“ｃ’”、“ｄ’”、“ｅ’”、“ｆ’”、“ｇ’”として同様にデータ記憶回路１０の各データキャッシュを操作する。
【０１０８】
ＰＤＣが“Ｌ”の場合、再び書き込み動作を行ない、全てのデータ記憶回路１０のデータが“Ｈ”となるまで、プログラム動作とベリファイ動作を繰り返される。
【０１０９】
図１３に示すように、レベル“１”の書き込みが全て完了すると、次回のループにおいて、レベル“１”のベリファイは行わないようにしている。しかし、レベル“２”のベリファイから行う場合、ダミーとしてレベル“１”のベリファイを行う。レベル“１”とレベル“２”の書き込みが全て完了すると、次回のループからはレベル“１”とレベル“２”のベリファイは行わないようにする。しかし、レベル“３”のベリファイから行う場合、ダミーとしてレベル“２”のベリファイを行う。このようにして、書き込みが完了したベリファイレベルはベリファイ動作を行わないが、１つ前のベリファイのみはダミーとして行う。これは、各ベリファイレベルの最初において、ソース線の電位が浮くため、ソースの電位が浮かない場合のベリファイ動作と同じ動作とするためである。しかし、これが問題にならない場合は省略することも可能である。
【０１１０】
尚、本実施形態は、プログラム時のビット線の充電と、ベリファイ時のビット線の動作を選択的に対象のレベルのみ行った。しかし、これらは必ずしも両方をセットで行う必要は無く、片方だけ行うことも可能である。
【０１１１】
その他、本発明は上記実施形態に限定されるものではなく、発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
【符号の説明】
【０１１２】
１…メモリセルアレイ、２…ビット線制御回路、４−１…変換回路、７…制御信号及び制御電圧発生回路、１１…コントローラ。
【図１】
0005398872.tif 000002
【図２】
0005398872.tif 000003
【図３】
0005398872.tif 000004
【図４】
0005398872.tif 000005
【図５】
0005398872.tif 000006
【図６】
0005398872.tif 000007
【図７】
0005398872.tif 000008
【図８】
0005398872.tif 000009
【図９】
0005398872.tif 000010
【図１０】
0005398872.tif 000011
【図１１】
0005398872.tif 000012
【図１２】
0005398872.tif 000013
【図１３】
0005398872.tif 000014
【図１４】
0005398872.tif 000015
【図１５】
0005398872.tif 000016
【図１６】
0005398872.tif 000017
【図１７】
0005398872.tif 000018
【図１８】
0005398872.tif 000019