以下、本発明をフラッシュメモリに適用した場合についてその実施例を図面を用いて説明する。図1は、外部から入力される記憶すべきデータとメモリセルに記憶される多値データとの変換方式を、また図2は多値データから元のデータを復元する逆変換方式を示すものである。
図1には、特に限定されないが、1メモリセル(1記憶素子)に2ビットすなわち"00"、"01"、"10"、"11"の何れかを記憶させる場合の変換方式の例が示されている。図1(1)における第1のバイナリデータである"a"と第2のバイナリデータである"b"との組み合わせは4種類有り、各組合せは図1(2)に示す3種類の論理演算(aNANDb),(NOTb),(aNORb)を実施することにより、4つのビットのうち"1"の個数が0個、1個、2個、3個という4種類の4値データに変換される。
ここで、上記の演算結果による"1"の個数だけ記憶素子に対して書込み動作すなわち書込みパルスの印加をすれば、各記憶素子のしきい値が書込み回数に応じて、図1(3)に示すように4通りになり、2ビットデータを1メモリセルに書き込むことができる。メモリアレイ内の複数の記憶素子に対して、"00"、"01"、"10"、"11"のデータをそれぞれ同数ずつ記憶させる場合の各記憶素子のしきい値分布の変化の様子が図3に示されている。
図2はデータ読み出し原理を示すものである。ワード線の読み出し電圧を、3段階(図3の各しきい値分布の中間の値)に変化させることにより、同一メモリセルから3種のデータ、"c","d","f"を順次読み出すことができる。そこで、読み出されたデータに対して論理演算(d* NAND f)NAND c* を実施することで書き込まれた2ビットのデータのうち一方(a)を復元することができる。また、読み出されたデータのうちdは、そのままで書き込みデータbと一致する。なお、d*,c*はd,cの反転信号を表わす。
図4には、図1および図2に示した多値データへの変換および逆変換の具体的回路構成の一例が示されている。データ書込みに際して、外部から多値フラッシュメモリへ供給された2nビット長のデータは、スイッチSW1を介してデータ幅がnビットである2つのバイナリデータレジスタREG1,REG2にシリアルに格納される。このとき、特に制限されないが、外部から供給されるクロックCLK1により動作されるフリップフロップFF1の出力により上記スイッチSW1が切り換えられるとともに、分周回路DVDでクロックCLK1を分周して得られたCLK1の2倍の周期のクロックCLK1’が切換え回路CHGを介して供給されこのクロックCLK1’に同期してバイナリデータレジスタREG1,REG2がシフトされることにより、入力データは1ビットずつ交互にバイナリデータレジスタREG1,REG2に格納される。
第1のバイナリデータレジスタREG1に格納されたデータ"a"と第2のバイナリデータレジスタREG2に格納されたデータ"b"は、内部のクロック生成回路30から切換え回路CHGを介して供給されるクロックCLK2に同期してシフトされ、図1(2)の演算を行うデータ変換論理回路11に1ビットずつ供給され、所定の論理演算後にスイッチSW2を経てメモリアレイ12の一側に設けられているnビット長のセンスラッチ回路13に順次転送され、メモリアレイ12内のメモリセルへの書き込みが実行される。この書き込み動作については後に詳しく説明する。
上記切換え回路CHGは、メモリ内部の制御を司るシーケンサ18からの制御信号によってデータ入力時にはクロックCLK1’をバイナリデータレジスタREG1,REG2に供給し、センスラッチ13との間のデータ転送の際にはクロック生成回路30からのクロックCLK2をバイナリデータレジスタREG1,REG2に供給するように切り換え制御される。
上記データ変換論理回路(データ書込み用演算回路)11は、上記バイナリデータレジスタREG1,REG2内のデータa,bをそれぞれ入力端子に受け(aNANDb)の演算を行なうようにされたNANDゲートG1および(aNORb)の演算を行なうNORゲートG2と、上記バイナリデータレジスタREG2のデータbを入力端子に受け(NOTb)の演算を行なうインバータG3とから構成され、スイッチSW2はこれらの論理ゲートG1,G2,G3のいずれかの出力信号を選択して上記センスラッチ回路13へ供給するように構成されている。
一方、データ読出しに際して、メモリアレイ12内の1本のワード線が読み出し電圧レベルにされることに応じてビット線上に出現した読み出しデータ"c"は、上記センスラッチ回路13により増幅されてラッチされ、内部のクロックCLK2に同期してスイッチSW3を介して前記バイナリデータレジスタREG1にシリアル転送される。次に、読み出し電圧レベルを変更してセンスラッチ回路13に読み出されたデータ"d"はスイッチSW3を介して前記バイナリデータレジスタREG2にシリアル転送される。さらに、読み出し電圧レベルを変更してセンスラッチ回路13に読み出されたデータ"f"はスイッチSW3を介して逆変換論理回路14にシリアル転送される。このとき、バイナリデータレジスタREG1,REG2は、クロックCLK2に同期してシフトされる。ただし、データ読出し時のクロックCLK2の周期はデータ書込み時のクロックCLK2の周期よりも短くて良い。クロックCLK2の周期は、シーケンサ18からの制御信号によってクロック生成回路30が決定して生成することができる。ワード線読み出しレベルの変更もシーケンサ18からの制御信号に従って行われる。
上記逆変換論理回路(データ読出し用演算回路)14は、上記バイナリデータレジスタREG2から出力されるデータを入力とするインバータG11と、該インバータG11との出力と上記センスラッチ回路13からの転送データを直接入力端子に受けるようにされたNANDゲートG12と、上記バイナリデータレジスタREG1から出力されたデータを遅延させて所定のタイミングで出力する遅延回路DLYと、該遅延回路DLYの出力を反転するインバータG13と、該インバータG13の出力と上記NANDゲートG12の出力とを入力とするNANDゲートG14とにより構成され、上記バイナリデータレジスタREG1,REG2に保持された読み出しデータc,dおよびセンスラッチ回路13から直接転送された読み出しデータfに対して図2に示した論理演算(d* NAND f)NAND c*を実施する。この 演算結果は、スイッチSW1を介してデータ入出力端子I/Oへ出力される。
このようにして1ビットのデータが出力されると同時に、上記バイナリデータレジスタREG2がシフトされて保持されていたデータ"d"(=b)の1ビットが出力される。このとき、バイナリデータレジスタREG1,REG2のシフト動作はクロックCLK2に同期して行われる。次に、再び上記バイナリデータレジスタREG1,REG2からデータ"c","d"の次のビットが読み出され、センスラッチ回路13から直接転送された読み出しデータ"f"の次の1ビットに対して論理演算(d* NAND f)NAND c*を実施する。以下、上記 と同様の動作を繰り返すことで、逆変換されて元の2ビットに復元されたデータ"a","b"がデータ入出力端子I/Oより外部へ出力される。
なお、上記のように、逆変換論理回路14で逆変換されたデータ"a"を直ちに入出力端子I/Oへ出力させる代わりに、逆変換されたデータ"a"を一旦バイナリデータレジスタREG1に格納し、全てのビットについて逆変換が終了した後にバイナリデータレジスタREG2内のデータと交互に入出力端子I/Oへ出力させるように構成しても良い。その場合、上記遅延回路DLYの代わりに、1ビットのラッチ回路を設けるようにするのが、望ましい。これによって、バイナリデータレジスタREG1内のデータ"c"を1ビット読み出してデータ"d","f"との論理演算を行ない、その結果をバイナリデータレジスタREG1内の元のビット位置に書き込むといった操作が簡単に行なえるようになる。逆変換後のデータを一旦バイナリデータレジスタREG1,REG2に格納してから外部へ出力する場合のバイナリデータレジスタREG1,REG2のシフト動作は、外部からのクロックCLK1に同期して行うように構成することができる。
この実施例のフラッシュメモリは、特に制限されないが、外部のCPU等から与えられるコマンドを保持するコマンドレジスタ16と、該コマンドレジスタ16に格納されたコマンドをデコードするコマンドデコーダ17と、該コマンドデコーダ17のデコード結果に基づいて当該コマンドに対応した処理を実行すべく上記スイッチSW2,SW3等各回路に対する制御信号を順次形成して出力するシーケンサ18とを備えており、コマンドが与えられるとそれを解読して自動的に対応する処理を実行するように構成されている。上記シーケンサ18は、例えばマイクロプログラム方式のCPUの制御部と同様に、コマンド(命令)を実行するのに必要な一連のマイクロ命令群が格納されたROM(リードオンリメモリ)からなり、コマンドデコーダ17がコマンドに対応したマイクロ命令群の先頭アドレスを生成してシーケンサ18に与えることにより、マイクロプログラムが起動されるように構成されている。
詳細な書込み手順は図5の書込みフローに従い、次のように説明される。
先ず、書込みに先立ち、すべてのメモリセルに対して一括消去が行なわれる。これによって、すべてのメモリセルは、最も高いしきい値(約5V)有するようにされ、書き込みデータとして"11"を記憶した状態となる(図3(1))。一括消去は、図13に示すように、ワード線を立ち上げてメモリセルのコントロールゲートCGに10V、ビット線を介してドレインに0V、基板(半導体領域pwell)に−5Vの電圧を印加して、フローティングゲートFGに電子を注入することにより行なう。上記一括消去は、外部CPUから消去を指令する消去コマンドがコマンドレジスタ16に書き込まれることにより実行される。
なお、図13(図12,図14)において、psubはp型半導体基板、pwellはメモリセルの基体となるp型半導体ウェル領域、nisoはデータ消去時(負電圧印加時)に基板psubとの絶縁をとるためのn型半導体アイソレーション領域、p型ウェル領域pwellの表面のn+はメモリセルのソース、ドレイン領域、p型ウェル領域pwellの表面のp+、アイソレーション領域niso表面のn+および基板psubの表面のp+は、各半導体領域に電位を与える電極との接触抵抗を低減するためのコンタクト領域である。特に制限されないが、1つのp型ウェル領域には、128本のようなワード線に接続されたメモリセルが形成され、このような一つのウェル上に形成された全てのメモリセルの一括消去が可能にされている。また、1つのp型ウェル領域上のメモリセルに対して、ワード線電位を選択(10V)/非選択(0V)とすることで、ワード線単位の消去も可能である。
一括消去が終了すると、外部のCPUから書込みコマンドが図4のコマンドレジスタ16に書き込まれることによりフラッシュメモリは書き込みモードとなる。この書き込みモードにおいて、所定のタイミングで書き込みデータが入力される。すると、フラッシュメモリは、上記書き込みデータをバイナリデータレジスタREG1,REG2に取り込んで、2ビットずつ変換論理回路11に転送して4値のデータに変換する(ステップS1)。変換は、aNANDb,NOTb(bの反転),aNORbの順に行なわれる。変換されたデータ(1回目はaNANDb)は、センスラッチ回路13に転送される(ステップS2)。
次のステップS3でバイナリデータレジスタREG1,REG2内のすべてのデータが転送されたか否か判定し、転送が終了したと判定すると、外部のCPUから供給されたX(ロウ)系アドレスと図10に示す内蔵Yアドレスカウンタ33から出力されるY(カラム)系アドレスの"1"に対応したビットのメモリセルに所定のパルス幅の書き込みパルスが印加され、書き込みが実行される(ステップS4)。書き込みは、図12に示すように、ワード線を介してコントロールゲートCGに−10V、ビット線を介してセンス回路からドレインに5V、基板に0Vの電圧を印加することで行なわれる。なお、このとき非選択のワード線にはVcc(例えば3.3V)が印加される。これによって、ディスターブによるしきい値の変動が抑制される。
次に、書込みレベルに応じたベリファイ電圧(1回目は約3.5V)が書き込み時に選択状態にされたまのワード線に供給され、書き込みパルスが印加されたメモリセルの読み出しが行なわれる。充分に書き込みがなされたメモリセルからは読み出しデータとして"0"が読み出されるが、書き込み不足のメモリセルからは読み出しデータとして"1"が読み出される。従って、読み出されたデータに応じて書き込み終了か書き込み不足かが判る。ここで書き込みが終了したビットのセンスラッチ回路13のデータは"0"に反転される(ステップS6)。そして、すべてのセンスラッチ回路13のラッチデータが"0"になったか否か判定し、オール"0"になればその回の書き込みは終了するが、1つでもラッチデータが"1"である書き込み不足のメモリセルがあれば、ステップS7からS4に戻って"1"に対応する書き込み不足のメモリセルに対して再び書き込みパルスが印加される。上記ステップS4〜S7を繰り返すことで全てのメモリセルのしきい値が書込みベリファイ電圧以下に下がるよう書込みパルスが繰り返し印加される。これによって、書き込みのなされたメモリセルは平均で3.2V程度のしきい値を有するようにされる。
上記書込みベリファイ動作により全てのメモリセルへの所望のデータの書込みが完了すると、センスラッチ回路13のすべてのデータは"0"になるので、ステップS8へ移行し、すべての書き込みレベルによる書き込み、すなわちデータ"10","01","00"に対する書き込みが終了したか判定する。そして、終了していなければステップS1に戻り、次の演算結果(NOTb)に基づく4値データがメモリセルに書き込まれ、ワード線のベリファイ電圧を変更(2回目は2.5V)してベリファイが行なわれ、書き込みのなされたメモリセルは平均で2.2V程度のしきい値を有するようにされる。その後、第3の演算結果(aNORb)の書込みおよびベリファイ(ベリファイ電圧1.5V)が実行され、書き込みのなされたメモリセルは平均で1.2V程度のしきい値を有するようにされて書込みが終了する。
図6は、上記書込み及び書込みベリファイ動作時の制御クロックCLK2とセンスラッチ回路13への書き込みデータおよび選択ワード線電位の波形を示す。一回目の書き込みでは、第1の演算結果(aNANDb)をセンスラッチ回路13に転送後、書込みパルスによりラッチの値が"1"である選択されたメモリセルに書き込みがなされる。次に、書込みベリファイ電圧としてワード線に例えば3.5V程度の電圧を供給し、読み出されたデータが"0"になっているか否かを判定する。しきい値が3.5Vより高い場合は、読み出されたデータは"1"となり書込み不足であることが分かるので、読み出しデータが"0"になるまで書込み動作が繰り返される。次に、第2の演算結果(NOTb)がセンスラッチ回路13に転送され、書込みパルスにより、所望のメモリセルに書込み動作が開始される。書込みベリファイ電圧は、2.5V程度に設定されており、書き込み不足になっていないか判定し、不足のときには再書き込みがなされる。最後に、第3の演算結果(aNORb)が、センスラッチ回路13に転送され、上記と同様の手順が行われる。この場合の書込みベリファイ電圧は1.5V程度である。
上述したように、上記実施例においては、3段階の書込みベリファイのワード線電圧の設定は、消去レベル(約5ボルト)に最も近く設定されたレベル(3.5V)を起点として、以後消去レベルから遠ざかる方向に電圧値が順次変わる(3.5V→2.5V→1.5V)ように制御される。また、上記実施例では、図7(B)に示すように、目標とするしきい値が中間もしくは最も低いもの(2.2V,1.2V)に対しても、最も高いしきい値(3.2V)を目標とするメモリセルへの書き込みを行なう際に同時に書き込みを行なうようにしている。これは本発明の特徴の一つである。これにより多値データの書込み処理時間の増大を最少に抑えることができる。
すなわち、上記した方法以外に書き込み及び書込みベリファイのワード線電圧の設定方法としては、一回目で3種類のしきい値電圧のうち中間のもの(2.2V)を目標として書き込みを行ない、次に一回目の電圧よりも高いレベル(3.2V)、または低いレベル(1.2V)を目標とするように設定を変更する方法が考えられる。あるいは、図7(A)に示すように、目標とするしきい値が同一のメモリセルに対してそれぞれ一括して書き込みを行なう方法が考えられる。しかし、これらの方法は、書込み処理が複雑で時間を要すること、またワード線電圧を変更するためのチャージ/ディチャージのための時間も増加するため、書込み/ベリファイ時間が本実施例よりも大きくなってしまう。
次に、図8および図9を用いてメモリセルの読み出し動作について説明する。データの読み出しは、図14に示すように、ワード線を立ち上げてメモリセルのコントロールゲートCGに3.7V,2.7Vまたは1.7Vのような選択レベルの電圧を、またビット線を介してドレインに1.5Vの電圧を印加することにより行なう。読み出し動作は、読み出しを指令するコマンドがコマンドレジスタ16に書き込まれることにより実行される。
読み出し動作が開始されると、まず読み出しレベルを最も高い3.7Vに設定してワード線を立ち上げる(ステップS11)。すると、選択されたメモリセルにおいて、ワード線読み出し電圧レベルに応じてビット線上にデータが出現するので、ビット線レベルをセンスラッチ回路13により増幅することでデータの読み出しを行なう(ステップS12)。次に、読み出し動作が一回目、二回目かまたは三回目であるかによって以後の処理が分かれる(ステップS13)。すなわち、読み出し動作が一回目のときは、上記センスラッチ回路13内の読み出しデータをバイナリデータレジスタREG1へ転送する(ステップS14)。
そして、センスラッチ回路13内のすべての読み出しデータの転送が終了するとステップS15からS11へ戻って、読み出しレベルを2.7Vに設定して二回目のデータ読出しを行ない、それをバイナリデータレジスタREG2へ転送する。二回目のデータ読み出しおよび転送が終了すると、読み出しレベルを1.7Vに設定して三回目のデータ読み出しを行ない、ステップS13からS16へ移行して読み出しデータを直接逆変換論理回路14に転送する。また、上記バイナリデータレジスタREG1,REG2に保持されているデータをそれぞれ1ビットずつ逆変換論理回路14へ転送し、ここで4値データを2ビットに変換する論理演算を行なう(ステップS17)。そして、センスラッチ回路13内のすべてのデータの転送、変換が終了するまで、上記手順(S16〜S18)を繰り返し、読み出し動作が終了する。上記データ変換は図2の演算を実行することにより得られる。
図9には、上記手順に従った読み出し動作中における制御クロックCLK2とセンスラッチ回路13から転送されるデータおよびワード線の読み出しレベルのタイミングが示されている。外部から読み出しコマンドおよびアドレスが与えられると、読み出し動作が開始され、まず第1の読み出しレベル(3.7V)が設定されてワード線が立ち上げられることにより、ビット線上にデータが出現する。第1のワード線レベルである3.7Vにより出現したデータ"c"はセンスラッチ回路13により読み出され、センスラッチのデータ長であるnビットと同一のデータ幅を有する第1のバイナリデータレジスタREG1にデータが転送される。次に、ワード線電圧レベルを所定の値だけ下げて第2の読み出しレベル2.7Vに設定して得られたデータ"d"は、第2のバイナリデータレジスタREG2に転送される。ワード線を第3の読み出しレベル1.7Vに下げて得られたデータ"f"は逆変換論理回路14に転送され、上記"c"、"d"、"f"の4値データが2ビットデータに復元されて外部の例えばCPUに出力される。
図10には、上記データ変換・逆変換機能回路を同一半導体チップ上に備えた多値フラッシュメモリMDFMの全体の構成例と、これに接続されるコントローラCONTとの関係が示されている。コントローラCONTは、この実施例の多値フラッシュメモリに対しては、アドレス生成機能とコマンド生成機能を備えるだけでよいので汎用マイクロコンピュータを用いることができる。
図10において、図4と同一符号が付されている回路部分は同一の機能を有する回路である。すなわち、REG1,REG2はコントローラからの2ビットの書き込みデータを取り込むバイナリデータレジスタ、11は取り込まれた2ビットデータを4値データに変換するデータ変換論理回路、12はFAMOSのようにフローティングゲートを有する不揮発性記憶素子がマトリックス状に配設されたメモリアレイ、13は読み出しデータおよび書き込みデータを保持するセンスラッチ回路、14はメモリアレイから読み出された4値データを元の2ビットデータに変換する逆変換論理回路、16はコントローラCONTから与えられるコマンドを保持するコマンドレジスタ、17はコマンドレジスタ16に取り込まれたコマンドコードをデコードするコマンドデコーダ、18は当該コマンドに対応した処理を実行すべくメモリ内の各回路に対する制御信号を順次形成して出力するシーケンサである。
特に限定されないが、この実施例の多値フラッシュメモリには2つのメモリアレイが設けられ、それぞれに対応してセンスラッチ回路13が設けられている。各センスラッチ回路13はそれぞれのメモリアレイ内のワード線を共通にする1行分のメモリセルのデータを同時に増幅して保持するように構成されており、2つのセンスラッチ回路13,13に保持された読出しデータは共通のYデコーダ回路15によって選択されて出力レジスタ19へ1ビットずつあるいはバイト等の単位で転送される。出力レジスタ19は保持された読出しデータは、バッファ回路22を介して外部のCPU等へ出力される。図4の実施例のセンスラッチ回路13はデータを転送する際にシフト動作を行なうので、シフトレジスタと同様な機能が必要とされるが、図10のようにYデコーダ回路15でデータを選択する方式としかつこのYデコーダ回路15がクロックにより選択ビットをシフトして行くような構成とすることで、センスラッチ回路13にはシフト機能が不要とすることができる。
この実施例の多値フラッシュメモリには、上記各回路の他、メモリアレイ12からセンスラッチ13へ読み出されたデータがオール"0"またはオール"1"かを判定するオール判定回路20、コントローラCONTから供給されるリセット信号RESやチップ選択信号CE、書き込み制御信号WE、出力制御信号OE、システムクロックSC、コマンド入力かアドレス入力かを示すためのコマンドイネーブル信号CDE等の外部制御信号を取り込むバッファ回路21と、アドレス信号やコマンド信号、データ信号を取り込むバッファ回路22や上記外部制御信号に基づいて内部回路に対する制御信号を形成する内部信号発生回路23、バッファ回路22に取り込まれたアドレスを保持するアドレスレジスタ24、入力データを保持するデータレジスタ25、取り込まれたアドレスをデコードしてメモリアレイ12内のワード線を選択する信号を形成するXアドレスデコーダ26a,26bおよびワードドライバ27、基板電位や書き込み電圧、読み出し電圧、ベリファイ電圧等チップ内部で必要とされる電圧を発生する内部電源発生回路28、メモリの動作状態に応じてこれらの電圧の中から所望の電圧を選択してワードドライバ27等に供給するスイッチング回路29、内部のクロック(CLK2等)を発生するクロック生成回路30、クロックを計数して書き込みパルス幅等の時間を与えるタイマ回路31、シーケンサ16によるメモリの制御状態を示すステータスレジスタ32、Yアドレスを自動的に更新するYアドレスカウンタ33、不良ビットの位置(アドレス)を保持する不良アドレスレジスタ34、Yアドレスと不良アドレスとを比較する冗長比較回路35、アドレスが一致したときに選択メモリ列を切り換える救済先アドレスを記憶する救済先アドレスレジスタ36等を備えている。また、この実施例の多値フラッシュメモリは、外部からアクセスが可能か否かメモリの状態を示すレディ/ビジィ信号R/B*を出力するよう に構成されている。
さらに、この実施例の多値フラッシュメモリはディスターブやリテンションによりしきい値のばらつき分布の山(図3参照)がなまったときにこれを急峻にさせる機能(以下、リフレッシュ機能と称する)を備えている。このリフレッシュ機能は、書き込みや消去と同様に外部からコマンドが与えられることにより働くようにされており、リフレッシュコマンドがコマンドレジスタ16に取り込まれると、マイクロプログラム制御方式のシーケンサ18が起動され、リフレッシュを行なう構成にされている。このリフレッシュ動作については後で詳細に説明する。上記オール判定回路20の判定結果を示す信号は、シーケンサ18へ供給されるように構成されており、リフレッシュモード時にオール判定回路20が読出しデータのオール"0"を判定し、判定結果を示す信号がシーケンサ18に供給されると、シーケンサ18はリフレッシュ動作を停止する。また、データ消去時に、上記オール判定回路20が読出しデータのオール"1"を判定すると、シーケンサ18は消去動作を停止するように構成されている。
また、この実施例においては、Xアドレス系のデコーダがアドレス信号をプリデコーダ26aとメインデコーダ26bで2段階にデコードするプリデコード方式を採用しており、例えばプリデコーダ26aでXアドレスの上位3ビットを先ずデコードして、そのプリデコード信号でワードドライバ27を制御して所望のワード線を選択するようにしている。このようなプリデコード方式を採用することにより、メインデコーダ26bを構成する単位デコーダをメモリアレイのワード線ピッチに合わせて配置して集積度を高め、チップサイズを低減できるようになる。
なお、上記実施例の多値フラッシュメモリは、図4や図10に示されているように2ビットデータから4値データへの変換とその逆変換を実行する機能回路11,14を同一シリコン基板に備えているが、これらの機能を有する専用のコントローラユニットとして構成する事も可能である。このようにした場合には、多値固有の機能をフラッシュメモリチップに搭載することがないので、チップ面積の増大はなく、また図11に示すように、複数のフラッシュメモリMDFMを一つのコントローラユニットCONTにバスBUSで接続して制御するように構成できるという利点も有している。このコントローラユニットは、上記データ変換・逆変換機能の他にアドレス生成機能やコマンド生成機能を備えるように構成される。
図15はワード線電圧や基板電位Vsubを発生する内部電源発生回路28と、それらを選択してワードドライブ回路27等に供給するスイッチング回路29を示したもの、図16はワードドライブ回路27の構成例を示したものである。内部電源発生回路28はシーケンサ18から発生された各種動作モードに対応した内部制御信号を受けて必要なワード線電圧を発生する。ワード線電圧を含む内部電源発生回路28の構成及び発生した電圧を受けるスイッチング回路(ワード線電圧切替回路)29の構成は従来のものと同様であり、ワード線の電圧値の種類が多値用に増加しただけである。
すなわち、従来の2値のフラッシュメモリで必要なワード線電圧は、読み出し電圧(2.7V/0V)、書込み電圧(−10V,0V)、書込みベリファイ電圧(1.5V)、消去電圧(+10V,0V)及び消去ベリファイ電圧(4.3V,0V)の4種類であるのに対し、本実施例の多値フラッシュメモリで必要とされるワード線電圧は、読み出し電圧(3.7V,2.7V,1.7V,0V)、書込み電圧(−10V,0V)、書込みベリファイ電圧(3.5V,2.5V,1.5V)、消去および消去ベリファイ電圧(10V,4.3V,0V)及びリフレッシュ電圧(−10V,10V,3.7V,3.5V,2.7V,2.5V,1.7V,1.5V,0V)となる。
上記スイッチング回路29は、シーケンサ18から発生された各種動作モードに対応した内部制御信号を受けて、上記内部電源発生回路28で発生された電圧を動作モードに応じて図16のように構成されたワードドライブ回路27の電源端子P1,P2に供給する。
図16のワードドライバWDRVは、ワード線プリデコード方式を採用した場合のもので、論理選択回路LOGS1の出力ノードN1に8個の電圧選択回路VOLS1〜VOLS8の入力を共通接続し、また論理選択回路LOGS2の出力ノードN2に8個の電圧選択回路VOLS9〜VOLS16の入力を共通接続し、プリデコード信号Xp1,Xp1*〜Xp8,Xp8*によって個々の電圧選択回路を選択するようになっている。信号XM,XNおよびプリデコード信号Xp1,Xp1*〜Xp8,Xp8*はアドレスデコーダXDCR(26b)から供給される。このとき電圧選択回路VOLS1〜VOLS16は、それに対応する論理選択回路LOGS1または2が選択レベルの選択信号を出力しても、プリデコード信号にて動作が選択されなければ、その他の論理選択回路にて非選択とされるものと同一の電圧を選択してワード線に供給しなければならない。
そのために、分離用MOSFETQ56,Q57をプリデコード信号にてスイッチ制御するようにする。さらに、当該分離用MOSFETQ56,Q57がカットオフ状態にされたとき、ワード線に対して非選択状態の電圧を出力させるために、上記分離用MOSFETQ56,Q57と相補的にスイッチ制御されて出力回路INV2のそれぞれの入力に所定の電圧を供給可能にするプルアップMOSFETQ58とプルダウンMOSFETQ59とが設けられている。
図16において、上記信号XMは、8本のワード線を一組とする8個のワード線群の中からいずれの群のワード線を選択するか指示する3ビットの信号とみなされる。プリデコード信号Xp1,Xp1*〜Xp8,Xp8*は各ワード線群に含まれるいずれのワード線を選択するか指示する相補信号とみなされる。本実施例に従えば、選択信号SELはハイレベルが選択レベルとされ、プリデコード信号Xp1,Xp1*〜Xp8,Xp8*のそれぞれは、ハイレベル,ロウレベルが選択レベルとされる。
上記ワードドライバWDRVの端子P1に供給される電圧は消去、書き込み、ベリファイ、読み出しに使用される5V,4.3V,3.7V,3.5V,2.7V,2.5V,1.7V,1.5V,0Vのような電圧Vppであり、端子P2に供給される電圧は書き込み、リフレッシュに使用される−10Vのような電圧Vee、回路の接地電位もしくは基準電位としての0Vのような電圧Vssである。
上記各論理選択回路LOGS1,LOGS2は、各々XデコーダXDCRの信号を反転するインバータINV1とその出力を伝達もしくは遮断するトランスファゲートTG1と、XデコーダXDCRの信号を伝達もしくは遮断するトランスファゲートTG2とにより構成されている。
上記電圧選択回路VOLS1〜VOLS16はそれぞれ同一構成にされ、その詳細が代表的に示された電圧選択回路VOLS1のように、端子P3とMOSFETQ52のゲートとの間に設けられたプリデコード信号Xp1*によりスイッチ制御されるNチャンネル型プルアップMOSFETQ58と、端子P4とMOSFETQ53のゲートとの間に設けられたプリデコード信号Xp1によりスイッチ制御されるPチャンネル型プルアップMOSFETQ59とを備え、さらに分離用MOSFETQ56をプリデコード信号Xp1によりスイッチ制御し、他方の分離用MOSFETQ57をプリデコード信号Xp1*によりスイッチ制御するように構成されている。上記端子P3およびP4には、電圧VccまたはVssが供給される。
次に、図16のワードドライバWDRVの作用を説明する。表1には各動作モードにおける端子P1〜P4の電圧とワード線電圧が示されている。書き込みモード、消去モード、読み出しモードの各々の設定の仕方については説明を省略する。
コマンドにより消去モードが指示されると、端子P1には電圧Vppが、また端子P2にはVss、端子P3およびP4には電圧Vccがそれぞれスイッチング回路29から供給されるとともに、制御信号DEがロウレベルにされる。また、信号XMが全ビットロウレベルにされることにより、ワード線W1〜W8のいずれかを選択することが可能となる。これにより、選択レベル(ハイレベル)の選択信号SELが供給されると、インバータINV1およびトランスファゲートTG1を介してノードN1がロウレベルになり、これがそれぞれの電圧選択回路VOLS1〜VOLS8の入力に与えられる。消去がされるメモリセルがワード線W1に結合されているメモリセルである場合、プリデコード信号Xp1,Xp1*〜Xp8,Xp8*は、そのうちXp1,Xp1*だけがハイレベル,ロウレベルにされる。従って、分離用MOSFETQ56,Q57は電圧選択回路VOLS1だけがオン状態とされ、ノードN1の信号は電圧選択回路VOLS1にだけ取り込まれる。このとき、電圧選択回路VOLS1のプルアップMOSFETQ58およびプルダウンMOSFETQ59は、共にカットオフ状態にされる。
その結果、当該電圧選択回路VOLS1のMOSFETQ52,Q53のゲートには上記ノードN1の信号が供給される。これによって、出力回路INV2のMOSFETQ52がオン状態にされて、ワード線W1は端子P1の電圧Vppによって充電され始める。このとき、他方のMOSFETQ53のゲートに供給されるロウレベルは、MOSFETQ57の作用によって当初電圧Vssよりも高いロウレベルにされて、MOSFETQ53は完全にはカットオフされないが、ワード線W1のレベルの上昇に従ってフィードバックMOSFETQ55のコンダクタンスが大きくされることにより、当該MOSFETQ53のゲートが電圧Vssに強制されてMOSFETQ53は完全にカットオフの状態になる。従って、消去モードにおいて、選択メモリセルが結合されているワード線W1はVppまで充電される。
選択信号SELが上記のようにハイレベルにされている場合に、ワード線W1のメモリセルQ1が消去非選択のメモリセルであるときには、プリデコード信号Xp1,Xp1*はそれぞれロウレベル,ハイレベルにされる。従って、電圧選択回路VOLS1の分離用MOSFETQ56,Q57は共にオフ状態とされ、ノードN1の信号は電圧選択回路VOLS1に取り込まれない。このとき、電圧選択回路VOLS1のプルアップMOSFETQ58およびプルダウンMOSFETQ59は、共にオン状態にされる。
その結果、当該電圧選択回路VOLS1のMOSFETQ52,Q53のゲートには端子P3,P4からMOSFETQ58,Q59を介してVcc電圧が供給され、これによって、出力回路INV2のMOSFETQ53がオン状態にされて、ワード線W1は端子P2を介して電圧Vssに向かって放電され始める。このとき、他方のMOSFETQ52のゲートに供給されるハイレベルは、MOSFETQ58のしきい値電圧分だけ電圧Vccよりも低いため、MOSFETQ52は完全にはカットオフされないが、オン状態のMOSFETQ53によってワード線W1のレベルが下がるに従ってフィードバックMOSFETQ54のコンダクタンスが大きくされ、MOSFETQ52のゲートがVppに強制されてMOSFETQ52は完全にカットオフの状態になる。従って、消去モードにおいて、非選択のワード線W1はVssまで放電される。
書き込みモードが指示された場合や読み出しモードが指示された場合におけるワードドライバ回路WDRVの動作は、上記書き込みモード時の動作に準じているので詳しい説明は省略するが、スイッチング回路29から端子P1,P2に供給される電圧によって、選択メモリセルにそれぞれ図13や図14に示すような電圧が印加されるようにワード線を駆動する。
次に、本発明の多値フラッシュメモリの第2の特徴であるリフレッシュ動作を図17を用いて説明する。一旦データが書き込まれた多値フラッシュメモリは、図17(1)に示されているように、それぞれしきい値のばらつき分布の山がはっきり分かれているが、その後の書込み、読み出し、スタンバイ状態等の動作を繰返し実行していると、図17(2)のように各しきい値のばらつきが増大する。その原因としては、たとえばあるメモリセルに隣接したメモリセルが書き込まれると当該メモリセルも弱い書込みが生じるいわゆるディスターブや、スタンバイ時における自然リークによるリテンションなどがある。この現象は1ビットのみを記憶する通常のフラッシュメモリでも生じ得ることであるが、前記実施例のように、各しきい値の間隔が狭い多値フラッシュメモリにおいては誤動作の原因となるおそれがある。
そこで、本実施例においては、しきい値のばらつき分布の山(図3参照)がなまったときにこれを急峻にさせるリフレッシュ動作を実行するようにしている。以下、リフレッシュ動作の手順を説明する。
図18にリフレッシュ動作の手順をフローチャートで示す。外部のCPU等からリフレッシュコマンドが入力されると、シーケンサ18が起動されて、図18のフローチャートに従ったリフレッシュ動作が開始される。リフレッシュ動作が開始されると、先ず、選択されたワード線に接続されたすべてのメモリセルに対して、ワード線より弱い消去パルスを印加する(ステップS21)。この弱い消去パルスの印加により、すべてのメモリセルのしきい値は、図17(3)に示すように、高い側に少しシフトする。特に限定されないが、シフト量は0.2V程度である。ここで、弱い消去パルスとは、加えた結果、例えば"10"にあるメモリセルのしきい値が、すぐ上の読み出しレベル3.7Vを上回らないような充分に短いパルスを意味する。パルス幅は、シフトさせたい量に応じて実験的に決定する。
第2段階では、ワード線電圧を、記憶データ"10"に対応した読み出しレベル(3.7V)に設定して読み出しを行なう(ステップS22)。これにより、各メモリセルのしきい値に応じてデータが読み出され、センスラッチ回路13により増幅、保持される(ステップS23)。このときに、ワード線電圧よりも高いしきい値を有するメモリセルに対応するセンスラッチのデータは"1"になり、ワード線電圧よりも低いしきい値を有するメモリセルに対応するセンスラッチのデータは"0"になる。次に、センスラッチのデータを反転させる(ステップS24)。このデータ反転は、図20に示すような構成のセンスラッチ回路により容易に行なえる(後述)。
次に、上記読み出し(ステップS22)よりも低いベリファイ電圧(最初は3.5V)がワード線に設定され、しきい値の判定が実行される(ステップS25)。これにより、ベリファイ電圧より低いしきい値を有するメモリセル(図17(4)符号A)に対応するセンスラッチのデータは、"1"から"0"に変わる。これに対して、ベリファイ電圧よりも高いしきい値を有するメモリセル(図17(4)符号B)に対応したセンスラッチのデータは"1"のままである。本実施例ではこれを再書込み対象と判定する。これにより、ステップS21での弱い消去でしきい値が高い側にシフトされたときに読み出しレベル(3.7V)に近づき過ぎたメモリセルが特定されたことになる。なお、このとき最も高いしきい値を有する記憶データ"11"に相当するメモリセル(図17(4)符号C)に対応したセンスラッチのデータは、上記反転動作により設定された"0"のままにされる。このような作用も図20に示すような構成のセンスラッチ回路により自動的に行なえる(後述)。
そこで、次に、書き込み電圧を設定してセンスラッチのデータが"1"であるメモリセル(図17(4)符号B)に対して再書込みを行う(ステップS27)。その後、書込みレベルに対応したベリファイ電圧を設定してベリファイを行なう(ステップS28,S29)。しきい値がベリファイ電圧よりも低くなった時点でラッチデータは"1"から"0"に変わる。すべてのラッチデータが"0"に変わるまで、書き込みとベリファイを繰り返して"10"データのメモリセルのリフレッシュ処理は完了する(ステップS30)。これによって、"10"データのメモリセルのしきい値のばらつき分布(半値幅)が、図17(5)のように小さくなる。以後、"01"、"00"のデータを記憶するメモリセルに対しても同様のリフレッシュ処理が実行される(ステップS31)。さらに、しきい値の分布形状の幅をより狭くするために、ステップS21〜S31を繰り返し、所定回数終了した時点でリフレッシュが完了する(ステップS32)。
表2には、上記手順に従ってリフレッシュを行なった場合に、図17(4)の符号A,B,Cで示されるようなしきい値を有するメモリセルの読み出しを行なったときのセンスラッチ回路の保持データの変化が順に示されている。
図19はリフレッシュ動作を実行するタイミングを示す図である。前述したように、メモリセルのしきい値のばらつきが拡大する原因としては、隣接メモリセルに書込み/読み出し動作が実行されると隣のメモリセルに弱い書込み/消去、読み出し動作が実行されることによるディスターブと、自然リークによるリテンションとがある。
ディスターブによるしきい値の変動に対するリフレッシュ動作の実行タイミングとして、
(1)当該フラッシュメモリがスタンバイ状態(/RESがハイレベル)にあり一定回数の書込み/消去、読み出し動作が完了後にリフレッシュ動作を実行する。(2)リセット時にリセット信号(/RES)が活性化されると直後にリフレッシュを実行する。
(3)スタンバイ状態から/RESをロウレベルにすることによりリセット状態になった直後にリフレッシュを実行する。
(4)電源をオフする直前に予め/RESをロウレベルにし、それを感知してリフレッシュを実行する。
(3)電源をオンし、/RESをハイレベルにした後、リフレッシュを実行する。などが考えられる。
一方、リテンションによるしきい値の低下に対する対策としては、電源投入時にダミーサイクルの途中、またはスタンバイ状態で一定周期毎にリフレッシュを実行することが考えられる。これらのリフレッシュタイミングはすべて実行するようにしても良いが、いずれかひとつあるいは幾つかを実行するようにしても良い。
なお、上記に説明したリフレッシュ動作は多値フラッシュメモリに限定されるものではなく、フラッシュメモリの電源電圧が今後低電圧化に移行すると、通常のフラッシュメモリでも、しきい値のばらつきの拡大は無視し得なくなるのであって、フラッシュメモリの低電源電圧化対策に有効な機能である。
図20には、上記メモリアレイ12およびセンスラッチ回路13の構成例が示されている。メモリアレイ12は、ワード線と直交する方向に配設され選択メモリセルの読出し信号が出力されるビット線BLと平行に配設された共通ドレイン線DLと、共通ソース線SLとの間に、複数(例えば一括消去可能な128本のワード線に対応して128個)のメモリセルMCが並列に接続されたAND型とされている。共通ドレイン線DLはスイッチMOSFET Q1を介して対応するビット線BLに接続可能にされ、また共通ソース線SLはスイッチMOSFET Q2を介して接地点に接続可能にされている。これらのスイッチMOSFET Q1,Q2のゲート制御信号は、Xアドレス信号とリード/ライト制御信号に基づいて形成され、データ読出し時(ベリファイ時を含む)に、Vcc(3.3V)のような電位にされることで、スイッチMOSFET Q1,Q2はオン状態とされ、オン状態のメモリセルを通してビット線を放電する。一方、データ書込み時には、ビット線の書き込み電圧(5V)をメモリセルのドレインに伝えるため、スイッチMOSFET Q1のゲート制御信号は7Vのような電位にされ、Q1がオンされる。このとき共通ソース線SL側のスイッチMOSFET Q2はオフ状態にされる。
センスラッチ回路13は、各メモリ列に対応して設けられ左右のメモリアレイのビット線間の電位差を増幅するCMOS差動型センスアンプSAにより構成されている。読み出しに先立って選択側のメモリアレイ(図では左側)のビット線はプリチャージMOS(SW21)により1Vのような電位にプリチャージされ、反対側のメモリアレイ内のビット線はプリチャージMOS(SW22)によって0.5Vのような電位にプリチャージされる。
かかるプリチャージ状態でワード線WLが読み出しレベルにされたとき、選択されたメモリセルが高いしきい値を有しているとビット線は1.0Vを維持するが、選択メモリセルが低いしきい値を有していると電流が流れてビット線の電荷が引き抜かれてビット線は0.2Vのような電位になる。この1.0Vまたは0.2Vと反対側のビット線の電位0.5Vとの電位差をセンスアンプSAが検出して増幅することで、読み出しデータがセンスアンプSAに保持される。
上記実施例においては、前述したように、書き込みを行なうメモリセルが接続されたビット線に対応したセンスラッチ(センスアンプ)に"1"をセットしておいてワード線に書き込みパルス(−10V)を印加し、その後書き込みレベルに応じたベリファイ電圧(1回目は約3.5V)をワード線に設定して、書き込みパルスが印加されたメモリセルの読み出しを行なう。そして、書き込み不足のメモリセルからはビット線に読み出しデータとして"1"が読み出されるので、読み出されたデータを見て書き込み終了か書き込み不足か判定し、書き込みが終了したビットのセンスラッチ(センスアンプ)のデータを"0"に反転させるようにしている。つまり書き込み不足のメモリセルに対応したセンスラッチ(センスアンプ)にはデータとして"1"を残しておき、"1"の立っているビットに対応する書き込み不足のメモリセルに対して再び書き込みパルスを印加するようにしている。
また、リフレッシュ動作においてもセンスラッチに読み出されたデータを反転し、ベリファイを行なって、"1"の立っているビットに対応するメモリセルに対して書き込みパルスを印加するようにしている。
図20のセンスラッチ回路においては、上記のような書き込みの際における書き込み終了のメモリセルに対応したセンスアンプのラッチデータの反転および書き込みパルスを印加すべきメモリセルの絞り込みを容易に行なえるようにするため、センスアンプとメモリアレイとの間に4個のスイッチSW11,SW12,SW13,SW14からなる反転制御回路30が設ける等の工夫がなされている。以下、このセンスラッチ回路の作用について説明する。なお、各ビット線BL上に設けられているスイッチSW21,SW22はビット線プリチャージ用のスイッチであり、これらは上記スイッチSW11〜SW14と共にMOSFETにより構成される。
データ読み出しに際しては、先ずスイッチSW13をオフさせて図20に示すように、ビット線BLとセンスアンプSAとを切り離した状態で、スイッチSW21,SW22をオンさせて選択側のビット線BLを1.0Vのようなプリチャージレベルに充電する。このとき非選択側のビット線は0.5Vのようなレベルに充電する。また、センスアンプSAはスイッチSW14をオンさせてリセット状態にすると共に、0.5Vのような電位を与えておく。さらに、このときスイッチMOSFET Q1,Q2のゲートにVccのような電圧を与えて、Q1,Q2をオン状態にさせる。
それから、メモリアレイ12内のいずれか一つのワード線WLを3.7Vのような選択レベルに設定する。すると、しきい値がワード線選択レベルよりも低いメモリセル(例えば図17のセルA,B)はオン状態にされ、当該セルが接続されているビット線BLは、オン状態のメモリセルを通して共通ソース線SLに向かって電流が流れることによって0.2Vのようなレベルにディスチャージされる。一方、しきい値がワード線選択レベルよりも高いメモリセル(例えば図17のセルC)はオフ状態にされ、当該セルが接続されているビット線BLは1.0Vのプリチャージレベルを維持する。
次に、スイッチSW14をオフさせてセンスアンプSAのリセット状態を解除して活性化させると共に、ビット線BL上のスイッチSW13をオンさせてビット線BLとセンスアンプSAとを接続する。そして、センスアンプSAのP−MOS側に電源電圧Vccを、またN−MOS側に接地電位(0V)を供給する。それからセンスアンプSAがビット線BL,BL*の電位差を充分増幅した後、ビット線BL上のスイッチSW13をオフする。これによって、センスアンプSAは選択側と非選択側のビット線のレベル差を増幅してデータを保持した状態となる。
センスアンプSAのラッチデータを反転させる場合には、スイッチSW13をオフさせて、図21に示すように、ビット線BLとセンスアンプSAとを切り離した状態で、スイッチSW21,SW22をオンさせて選択側および非選択側のビット線BLをVcc−Vtn(例えば3.3V−0.6V=2.7V)のようなレベルにプリチャージする。それから、上記スイッチSW21,SW22をオフしかつスイッチSW11をオンさせる。すると、センスアンプSAに保持されているデータに応じて、データが"1"ならスイッチSW12がオンされて、当該ビット線BLはビット線反転レベル(0V)にディスチャージされる。一方、センスアンプSAに保持されているデータが"0"ならスイッチSW12がオフ状態されるため、当該ビット線BLはVccレベルを維持する。つまり、センスアンプSAの保持データの反転レベルが対応するビット線BLにそれぞれ出現する。
ここで、スイッチSW14を一旦オンさせてセンスアンプSAをリセットさせた後、スイッチSW14をオフさせビット線BL上のスイッチSW13をオンさせてビット線BLとセンスアンプSAとを接続する。この間、センスアンプSAのP−MOS側およびN−MOS側の電源電圧は0.5Vに設定しておく。それから、センスアンプSAのP−MOS側に電源電圧Vccを、またN−MOS側に接地電位(0V)を供給するとともに、ビット線BL上のスイッチSW13をオフする。これによって、センスアンプSAは、図22に示すように、前記反転データ保持状態のビット線のレベルに応じたデータを保持した状態となる。すなわち、図17のセルAおよびBに対応したセンスアンプはハイレベル"1"を保持した状態に、またセルCに対応したセンスアンプはロウレベル"0"を保持した状態となる。いわゆる書き込みベリファイと同じ動作である。従って、ビット線プリチャージは、センスラッチが"H"の所のみ行なわなければならない。そこで、スイッチSW11をオンし、ビット線プリチャージ電圧(1)を1Vにすることで、ビット線BL0,BL1のみ1Vとなる(BL2は前もって0Vにリセットしておく)。
次に、ビット線BL上のスイッチSW13をオフしたままスイッチSW21,SW22をオンさせて、選択側のビット線BLを1.0Vのようなプリチャージレベルに、また非選択側のビット線は0.5Vのようなレベルに充電する。その後、選択ワード線に先の読み出しレベル(3.7V)よりも若干低い3.5Vのようなベリファイ電圧を印加する。すると、しきい値がワード線選択レベルよりも低いメモリセル(例えば図17のセルA)はオン状態にされ、当該セルが接続されているビット線BLは0.2Vのようなレベルにディスチャージされる。一方、しきい値がワード線選択レベルよりも高いメモリセル(例えば図17のセルB)はオフ状態にされ、当該セルが接続されているビット線BLはプリチャージレベル1Vを維持する。また、このとき最も高いしきい値を有するデータ"11"に相当するメモリセル(図17のセルC)が接続されたビット線はもともとロウレベルすなわち"0"を保持した状態にあるため、ワード線が選択レベルにされたときにオフ状態であってもロウレベルである(図23)。
従って、この状態でセンスラッチをリセットした後、ビット線BL上のスイッチSW13をオンさせると、データ"11"に相当するメモリセル(図17のセルC)が接続されたビット線に対応するセンスアンプおよびワード線選択レベルよりも低いしきい値のメモリセル(図17のセルA)が接続されたビット線に対応するセンスアンプはロウレベル"0"を保持し、ワード線選択レベルよりも高いしきい値のメモリセル(図17のセルB)が接続されたビット線に対応するセンスアンプはハイレベル"1"を保持することとなる。本実施例ではこのセンスアンプの保持データを使用して、書き込み動作に移行して選択ワード線に書き込みパルス(−10V)を印加することでセンスアンプの保持データが"1"に対応するメモリセルのしきい値を下げるようにしている。
書き込みパルス印加後、再びワード線を選択レベルに設定して読み出しを行なうと、しきい値がワード線ベリファイレベルよりも低くなったメモリセルのビット線のレベルはロウレベルすなわち"0"に変わり、書き込み不足のメモリセルが接続されたビット線はハイレベル"1"を維持する。従って、これをセンスアンプでラッチして再び書き込みを行なうことでセンスラッチの保持データが"1"に対応するメモリセルのみしきい値を下げ、しきい値の分布形状を急峻にすることができる。センスアンプSAの保持データは、Yデコーダ15の出力信号によってオン、オフされるいわゆるカラムスイッチおよび共通I/O線を経て前述のオール判定回路20に供給され、オール"0"になった否か判定される。そして、オール"0"になるとデータ"10"のメモリセルに対するリフレッシュを"終了し、データ"01","00"のメモリセルに対するリフレッシュを行う。
なお、前述した書き込みモードにおける書き込み不足のメモリセルに対する再書き込み動作は、リフレッシュ動作の際のセンスラッチ回路13による上記書き込み動作と同一である。
以上説明したように、上記実施例においては、データ書き込み時には複数ビットのデータをデータ変換論理回路によりそのビットの組合せに応じたデータ(多値データ)に変換して、変換されたデータをメモリアレイのビット線に接続されたラッチ回路に順次転送し、該ラッチ回路に保持されたデータに応じて書き込みパルスを生成して選択状態の記憶素子に印加することで、多値データに対応したしきい値を有する状態にさせるとともに、データ読み出し時には読み出し電圧をそれぞれのしきい値の中間に変化させて記憶素子の状態を読み出して多値データを記憶するレジスタに転送させて保持させ、該レジスタに記憶された多値データに基づいて逆データ変換論理回路により元のデータを復元させるようにしたので、メモリアレイの周辺回路の規模を比較的小さく押さえることができるとともに、書込み動作においては、ワード線のベリファイ電圧値を消去のためのワード線電圧に近い側から遠ざかる方向に所定の値だけ順次変更することにより、書込みパルス総数すなわち書込み時間を、ベリファイ電圧をランダムに設定する多値フラッシュメモリの方式と比べて小さくすることができ、短時間での書込み動作が実現できるという効果がある。
また、メモリアレイ内の記憶素子に対して弱い消去動作を実行した後、ワード線を読み出しレベルよりも低くかつベリファイレベルよりも高いしきい値を有する記憶素子を検出して該記憶素子のしきい値がベリファイ電圧よりも低い値になるように書込みを実行することで、各入力データに対応して書き込まれた記憶素子のしきい値電圧のばらつき分布形状の広がりを狭くするようにしたので、ディスターブやリテンション等により広がった記憶素子のしきい値電圧のばらつき分布形状を書込み完了直後とほぼ同等の急峻な形状に戻すことができるという効果がある。
以上本発明者によってなされた発明を実施例に基づき具体的に説明したが、本発明は上記実施例に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。例えば、上記実施例では、一つのメモリセルのしきい値を4段階に設定して4値のデータを記憶させるようにしているが、しきい値は3段階あるいは5段階以上に設定することも可能である。
また、実施例では、リフレッシュ時の読み出しデータの反転、書き込み対象のメモリセルの絞り込み等をセンスラッチ回路のみを用いて行なえるように構成したが、読み出しデータを保持するレジスタやその内容を反転する等の論理演算を行なって書き込み対象のメモリセルの絞り込みを行なう論理回路を設けるようにしても良い。
さらに、実施例では2ビットデータを4値データに変換する方式およびその逆変換として図1(2)に示すような3種類の演算を行なっているが、論理演算は図1に示すものに限定されず、結果として"1"の立っているビットの個数の異なるデータが得られるものであればよい。また、データ逆変換のための演算も図2のものに限定されず、元の2ビットデータを復元できるものであればどのような演算であっても良いし演算の種類も1つでなく2以上であっても良い。
各メモリセルに対する書き込み方式も実施例のように、一旦消去を行なってしきい値を高くした後に書き込みパルスでしきい値を下げる方式に限定されず、書き込みパルスでしきい値を高くする方式等であっても良い。また、実施例では、データ"1"を保持するセンスラッチに対応するメモリセルに書き込みを行なってしきい値を変化させているが、データ"0"を保持するセンスラッチに対応するメモリセルに書き込みを行なってしきい値を変化させるようにしても良い。