JP2010160871A - 不揮発性半導体記憶装置 - Google Patents

不揮発性半導体記憶装置 Download PDF

Info

Publication number
JP2010160871A
JP2010160871A JP2009159979A JP2009159979A JP2010160871A JP 2010160871 A JP2010160871 A JP 2010160871A JP 2009159979 A JP2009159979 A JP 2009159979A JP 2009159979 A JP2009159979 A JP 2009159979A JP 2010160871 A JP2010160871 A JP 2010160871A
Authority
JP
Japan
Prior art keywords
potential
memory cell
control circuit
data
register
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.)
Abandoned
Application number
JP2009159979A
Other languages
English (en)
Inventor
Hiroaki Tanaka
博明 田中
Hitoshi Shiga
仁 志賀
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP2009159979A priority Critical patent/JP2010160871A/ja
Priority to US12/552,671 priority patent/US20100149867A1/en
Publication of JP2010160871A publication Critical patent/JP2010160871A/ja
Abandoned legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/04Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
    • G11C16/0483Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3418Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • G11C16/3427Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written

Landscapes

  • Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Read Only Memory (AREA)

Abstract

【課題】各メモリセルへの書き込みを一回の書き込み動作で完了させることで、書き込み動作を高速化する。
【解決手段】不揮発性半導体記憶装置1は、複数のメモリセル群を有するブロックを含み、前記複数のメモリセル群の各々は複数のビット線にそれぞれ電気的に接続されかつ共通のワード線に電気的に接続され、各メモリセルは複数ビットを記録する、不揮発性メモリ22と、第1のワード線に書き込むべき第1のデータを補正した情報を格納するレジスタ16〜18と、書き込み対象の第1のメモリセルに最終的に設定すべき目標電位から、第1のメモリセルに隣接しかつ未書き込みの第2のメモリセルに電位を設定することによって発生する電位上昇分を差し引いた設定電位をレジスタ16〜18に設定し、かつレジスタ16〜18の情報を用いて第1のメモリセルに複数ビットを一回で書き込む制御回路12とを含む。
【選択図】 図2

Description

本発明は、不揮発性半導体記憶装置に係り、例えば電気的に書き換えが可能なメモリセルを備えた不揮発性半導体記憶装置に関する。
電気的に書き換えが可能な不揮発性半導体メモリの一つとして、NAND型フラッシュメモリが知られている。NAND型フラッシュメモリにデータを記録する場合、典型的には、ブロック内をワード線の順に一方の端から他方の端に向かって記録する。このとき1ワード線に対して偶数ビット線及び奇数ビット線と2つのステップに分けて記録することで、ビット線間の干渉を抑えることができる。
NAND型フラッシュメモリ内のあるメモリセルをチャージすると、それ以前に記録された隣接セルもまたそのメモリセルからのカップリング効果によって浮遊ゲート電極の電位が変動し、その結果、隣接セルに元々記録されていた情報が変わってしまうという問題がある(カップリング効果)。この問題は、記録する情報に対して有効な電位幅が狭いMLC(Multi Level Cell)型フラッシュメモリにおいてより深刻である。
このカップリング効果の影響を抑えるために、MLC型フラッシュメモリではメモリセルに記録する複数の情報のそれぞれに対する目標電位を粗い間隔から順次細かい間隔になるように割り当てておき、まず粗い設定のビットを書き込み、隣接する全てのビットに粗い設定を終えた後、順次細かい設定のビットを上塗りする方式が用いられている(特許文献1)。この方式によれば、あるビットに対応する電位を設定する時、それ以前に設定した粗い電位設定の結果発生するカップリング効果を補正しながら電位の上塗りを行うため、記録の終了した時点で残る電位の変動は最後のビットを書き込む際発生した電位変動に伴うカップリング効果分に抑制することができる。
しかしながら、メモリセル間の電位がより密に連動している場合、粗い設定を行った結果発生するカップリング効果をそれ以降のより細かい電位設定時に吸収し切ることができず、正しい電位設定が出来なくなったり、最終ビットを書き込んだ結果発生する隣接セルの電位変動が電位認識の閾値を超えてしまったりして、その結果、書き込んだデータと読み出せるデータとが異なってしまう恐れがある。さらに、何度かに分けて当該メモリセルへの書き込みを行うため、書き込み速度が遅くなるという問題がある。
特開2004−192789号公報
本発明は、各メモリセルへの書き込みを一回の書き込み動作で完了させることで、書き込み動作を高速化することが可能な不揮発性半導体記憶装置を提供する。
本発明の一態様に係る不揮発性半導体記憶装置は、複数のメモリセル群を有するブロックを含み、前記複数のメモリセル群の各々は複数のビット線にそれぞれ電気的に接続されかつ共通のワード線に電気的に接続され、各メモリセルは複数ビットを記録する、不揮発性メモリと、第1のワード線に書き込むべき第1のデータを補正した情報を格納する第1のレジスタと、書き込み対象の第1のメモリセルに最終的に設定すべき目標電位から、前記第1のメモリセルに隣接しかつ未書き込みの第2のメモリセルに電位を設定することによって発生する電位上昇分を差し引いた設定電位を前記第1のレジスタに設定し、かつ前記第1のレジスタの情報を用いて前記第1のメモリセルに複数ビットを一回で書き込む制御回路とを具備する。
本発明によれば、各メモリセルへの書き込みを一回の書き込み動作で完了させることで、書き込み動作を高速化することが可能な不揮発性半導体記憶装置を提供することができる。
メモリセルアレイの概略図。 第1の実施形態に係る不揮発性半導体記憶装置1の構成を示すブロック図。 図2に示すメモリセルアレイ22の一例を示す図。 1個のNANDストリングの構成を示す断面図。 ワークレジスタの構成を示す概略図。 不揮発性半導体記憶装置1の全体動作を示すフローチャート。 図6Aに続く不揮発性半導体記憶装置1の全体動作を示すフローチャート。 データフラッシュ動作を示すフローチャート。 受信データをデータレジスタに格納する処理を示すフローチャート。 ワード線への書き込み処理を示すフローチャート。 図9Aに続くワード線への書き込み処理を示すフローチャート。 記録データの応じた目標電位の一例を示す図。 ビット線への電位設定処理を示すフローチャート。 書き込み検査処理を示すフローチャート。 図12Aに続く書き込み検査処理を示すフローチャート。 ビット線への電位設定、及び書き込み検査の具体例を説明する図。 第3の実施形態に係るワード線への書き込み処理を示すフローチャート。 図14Aに続くワード線への書き込み処理を示すフローチャート。 メモリセルの設定電位を計算する処理を示すフローチャート。 第4の実施形態に係るワード線への書き込み処理を示すフローチャート。 第5の実施形態に係るワード線への書き込み処理を示すフローチャート。 図17Aに続くワード線への書き込み処理を示すフローチャート。 書き込み検査処理を示すフローチャート。 図18Aに続く書き込み検査処理を示すフローチャート。 設定電位の変換テーブルを示す図。
以下、本発明の実施形態について図面を参照して説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
NAND型フラッシュメモリへの情報の記録(書き込み)は、電荷蓄積層(浮遊ゲート電極)の電位を変化させることによって行うが、この電位を外部から直接知ることはできず、代わりに浮遊ゲート電極の電位を相殺してチャネルを遮断状態から導通状態に変化させるのに必要な制御ゲート電極への印加電圧の大きさによってそれを知る。従って、以下の説明でセル電位とは、メモリセルのチャネルを導通状態に変化させるのに必要な制御ゲート電極の電位を指す。一般に、浮遊ゲート電極の電位とセル電位との間には、消去状態の両電位を基点とするならば比例の関係がある。
本発明では、各メモリセルへの書き込みを一回の書き込み処理によって完了させる。この時、隣接セルのカップリング効果を予測し、その分を差し引いたセル電位の設定を行うことでカップリング効果を相殺する。
図1に示すように、注目しているメモリセルCに対して同一ワード線WLx上でビット線が隣り合う両隣接セルをそれぞれCn-1、Cn+1、同一ビット線BLy上でワード線が隣り合う両隣接セルをそれぞれCn−B、Cn+Bとする。“B”は、ビット線数を表している。
メモリセルCに対して同一ビット線かつ隣接ワード線上にある未書き込み隣接セルが書き込まれたとき、その電位変化がメモリセルCの電位に与える影響の比を“Yw”とする。メモリセルCに対して同一ワード線かつ隣接ビット線上にある未書き込み隣接セルが書き込まれたとき、その電位変化がメモリセルCの電位に与える影響の比を“Yb”とする。メモリセルCに対してワード線及びビット線とも隣り合う斜め方向の未書き込み隣接セルが書き込まれたとき、その電位変化がメモリセルCの電位に与える影響の比を“Yc”とする。メモリセルCに最終的に設定したい電位(目標電位)を“E”、実際にメモリセルCにチャージする電位(設定電位)をVnで表す。ただし、目標電位及び設定電位はそれぞれ、消去状態のメモリセルの電位を基準とした値である。
同一ワード線に接続されたメモリセルへの情報の書き込みは、最初に偶数番目のビット線に接続されたメモリセル、続いて奇数番目のビット線に接続されたメモリセルの順で行われる。最初に書き込まれる側である偶数番目のビット線上のメモリセルの設定電位は、隣接セルからのカップリング効果は未書き込みのメモリセルからのみ受けるため、以下の式(1)で表すことができる。
=E−(En−1+En+1)Yb−En+BYw−(En+B−1+En+B+1)Yc
−(1)
後から書き込まれる側である奇数番目のセルへの設定電位は、以下の式(2)で表すことができる。
=E−En+BYw−(En+B−1+En+B+1)Yc −(2)
上記式に基づく電位を正しく設定するなら、各メモリセルに一回ずつ情報を記録するだけで最終的な各メモリセルの電位は期待値に近い値にすることができる。
[第1の実施形態]
[1.不揮発性半導体記憶装置1の構成]
図2は、本発明の第1の実施形態に係る不揮発性半導体記憶装置1の構成を示すブロック図である。不揮発性半導体記憶装置1は、データの書き込み及び読み出しの両方の機能を持つが、以下の説明は書き込みに関するものである。読み出しに関しては、従来から用いられている技術をそのまま用いて実現することができる。
不揮発性半導体記憶装置1は、入出力制御回路10を介して外部(ホスト装置など)と接続される。入出力制御回路10は、データ線を介して外部からアドレス及びデータを受け、また、制御線を介して外部から制御信号を受ける。入出力制御回路10は、所定のプロトコルに従って、外部回路とのインターフェース処理を行う。
アドレスレジスタ11は、入出力制御回路10から送られるアドレスをラッチする。このアドレスは、メモリセルアレイ22の行を選択するためのロウアドレスを含んでいる。アドレスレジスタ11は、このラッチしたアドレスのうちロウアドレスをロウデコーダ15に送る。ロウデコーダ15は、ロウアドレスに基づいてワード線のいずれかを選択する。
制御回路12は、外部からの制御信号(コマンドなど)を受けて内部の各モジュールを制御する。図2では、図面が乱雑になるのを防ぐために制御回路12から全てのモジュールへの信号線の記載を省略しているが、実際には、制御回路12は、不揮発性半導体記憶装置1内部の全てのモジュールを制御している。制御回路12は、作業エリアとしてのRAM(random access memory)や、制御プログラムなどを格納するROM(read only memory)を備えており、これらを用いて制御動作を実行する。
電圧発生回路13は、不揮発性半導体記憶装置1が必要とする様々な電圧を発生させる。このために、電圧発生回路13は、例えば、各種電圧を発生させるD/Aコンバータを備えている。電圧発生回路13が発生させる書き込み電圧Vp、読み出し電圧Vr等はロウデコーダ15のデコード情報に従って各ワード線に印加される。
センスアンプ回路21は、制御回路12から送られるカラム選択信号によって選択されたビット線のデータを読み出す。このために、センスアンプ回路21は、データの書き込み、書き込み検査の各ステップにおいて各レジスタが要求する動作に応じて何通りかの固定電圧を発生させてビット線に印加する。例えば、センスアンプ回路21は、データ読み出し時、予めビット線を所定電圧にプリチャージしておく。この時、読み出し対象のメモリセルに接続されたワード線には情報に応じた読み出し電圧が印加され、読み出し対象以外のメモリセルに接続されたワード線には記憶情報に関係なくセルがオンする読み出しパス電圧が印加される。そして、センスアンプ回路21は、ビット線の電位が放電されるか否かによって、読み出し対象のメモリセルに記録された情報を読み出す。
メモリセルアレイ22は、NAND型フラッシュメモリから構成されており、このNAND型フラッシュメモリに含まれる各メモリセルは、2ビットの情報を記録可能である。このように、本実施形態では、各メモリセルが2ビットの情報を記録する場合のシステム例を説明するが、これに限定されるものではなく、各メモリセルが3ビット以上の情報を記録するシステムにも適用可能である。
メモリセルアレイ22とは、それぞれがカラム方向に延在する4096本のビット線BL、それぞれがロウ方向に延在する64本のワード線WLを配置し、その交点の各々に一個のメモリセルを配置したものを単位とし、さらにこの単位を例えば4096個カラム方向に並べたものである。各ビット線にはセンスアンプ回路21の各制御ユニットが接続され、各ワード線にはロウデコーダ15の各ユニットが接続される。1本のワード線に接続されるメモリセルの個数は4096個で各2ビットの情報を記録するため、1ワード線ごとに8192ビットの記録容量を持つ。この1ワード線ごとに記録される情報の単位をページと称し、このページ単位でデータの書き込み及び読み出しが行われる。64本のワード線ごとに記録される情報の単位をブロックと称し、このブロック単位でデータの消去が行われる。
また、本実施形態では、ビット線間干渉を抑えるために、1本のワード線WLに接続されるメモリセルMCへの書き込みは、偶数番目のビット線BLと、奇数番目のビット線BLとの2ステップに分けて行われる。すなわち、1本のワード線WLに繋がる4096個のメモリセルMCのうち、偶数番目のビット線BLに接続される2048個のメモリセルに対して第1ステップの書き込み処理が行われ、奇数番目のビット線BLに接続される2048個のメモリセルに対して第2ステップの書き込み処理が行われる。
図3は、図2に示すメモリセルアレイ22の一例を示す図である。図3に示すように、メモリセルアレイ22は複数個のブロック、例えば4096個のブロックBLK0〜BLK4095を備えている。各ブロックBLKは、複数個のNANDストリング、例えば4096個のNANDストリングを備えている。複数個のNANDストリングにそれぞれ含まれる選択トランジスタSTDは、そのドレインがビット線BLに接続され、そのゲートが選択ゲート線SGDに共通接続されている。また、複数個のNANDストリングにそれぞれ含まれる選択トランジスタSTSは、そのソースがソース線SRCに共通接続され、そのゲートが選択ゲート線SGSに共通接続されている。
各NANDストリングにおいて、複数個のメモリセルMC、例えば64個のメモリセルMCは、選択トランジスタSTDのソースと選択トランジスタSTSのドレインとの間に、それぞれの電流経路が直列接続されるように配置されている。すなわち、複数個のメモリセルMCは、隣接するもの同士で拡散領域(ソース領域若しくはドレイン領域)を共有するような形でカラム方向に直列接続される。
そして、最もドレイン側に位置するメモリセルMCから順に、制御ゲート電極がワード線WL0〜WL63にそれぞれ接続されている。従って、ワード線WL0に接続されたメモリセルMCのドレインは選択トランジスタSTDのソースに接続され、ワード線WL63に接続されたメモリセルMCのソースは選択トランジスタSTSのドレインに接続されている。
また、ビット線BLは、ブロック間で、選択トランジスタSTDのドレインを共通接続している。つまり、複数個のブロック内において同一列にあるNANDストリングは、同一のビット線BLに接続される。
図4は、1個のNANDストリングの構成を示す断面図である。半導体基板30内には、P型ウェル(P−well)31が形成されている。各メモリセルMCは、P型ウェル31上に形成された積層ゲート構造を備えたMOSFET(metal oxide semiconductor field effect transistor)から構成される。積層ゲート構造は、P型ウェル31上に、トンネル絶縁膜33、電荷蓄積層(浮遊ゲート電極)34、ゲート間絶縁膜35、制御ゲート電極36が順に積層されて構成されている。隣接する積層ゲート構造間のP型ウェル31内には、拡散領域(ソース領域或いはドレイン領域)32が設けられている。
メモリセルMCは、浮遊ゲート電極34に蓄えられる電子の数に応じて閾値電圧が変化し、この閾値電圧の違いに応じてデータを記録する。なお、メモリセルMCの種類としては、電荷蓄積層が多結晶シリコンなどの導電体からなる浮遊ゲート電極であるフローティングゲート型メモリセルであってもよいし、電荷蓄積層がシリコン窒化物などの絶縁体であるMONOS(metal-oxide-nitride-oxide-semiconductor)型メモリセルであってもよい。MONOS型メモリセルの場合、ゲート間絶縁膜35は、ブロック絶縁膜と呼ばれる。
選択トランジスタSTDは、P型ウェル31内に互いに離間して設けられたソース領域37S及びドレイン領域37D、ソース領域37S及びドレイン領域37D間のチャネル領域上に設けられたゲート絶縁膜38、及びゲート絶縁膜38上に設けられたゲート電極39から構成されている。選択トランジスタSTSも同様の構成である。
図2に戻り、データレジスタ0(16)、データレジスタ1(17)、補正値レジスタ(18)、記録用ワークレジスタ0(19)、及び記録用ワークレジスタ1(20)の各々は、メモリセルアレイ22のビット線の各々に対して1ビット又は2ビットの情報を保持するレジスタである。データレジスタ0及び1の各々はビット線当たり2ビットの容量、補正値レジスタアは同じくビット線当たり2ビットの容量、記録用ワークレジスタ0及び1の各々はビット線当たり1ビットの容量を有する。図5は、これらワークレジスタの構成を示す概略図である。
図5において、四角形一つが1ビットのメモリを表す。データレジスタ0及びデータレジスタ1をそれぞれNo0、No1、補正値レジスタをA、記録用ワークレジスタ0及び記録用ワークレジスタ1をそれぞれwork0、work1と略記する。また、例えばビット線BL0のメモリセルに対応する補正値をプログラミング言語Cにおける配列表記法を借りてA[0]のように表記する。A[0]は2ビットの値である。さらにNo0とAとを合わせたメモリセル当たり4ビットのデータをNo0Aと表記する。No0Aの中ではNo0の2ビットが上位、Aの2ビットが下位の桁である。
[2.不揮発性半導体記憶装置1の動作]
次に、不揮発性半導体記憶装置1の全体動作について説明する。図6A及び6Bは、不揮発性半導体記憶装置1の全体動作を示すフローチャートである。
不揮発性半導体記憶装置1の電源がオンされると、制御回路12は、内部変数_FROM状態をデータ未受信状態に設定し、同時に、内部変数work_addressをバックアップされたデータから復旧する(ステップ301)。内部変数work_addressは、NOR型フラッシュメモリなどの不揮発性メモリ(図示せず)に随時バックアップされるデータであり、工場出荷時の値はゼロである。「内部変数」とは、制御回路12が保持するデータであり、制御回路12の処理に使用されるものである。
続いて、不揮発性半導体記憶装置1は、ホスト装置からのコマンドを受信し、この受信したコマンドを内部変数commandに設定する。(ステップ302)。このコマンドには、ライトコマンド、リードコマンド、消去コマンド、及びデータ送信終了コマンドが含まれる。
内部変数commandがライトであった場合、不揮発性半導体記憶装置1は、続いてホスト装置からアドレスを受信する(ステップ303)。受信したアドレスは、アドレスレジスタ11に格納され、また、内部変数addressに設定される。このアドレスは、ワード線を指定する数値で、0以上「64×4096−1」以下の値が有効値である。
続いて、制御回路12は、受信したアドレス(すなわち、内部変数address)と、内部変数work_addressとを比較する(ステップ306)。もし異なっているならば、コマンドエラーとし(ステップ307)、ステップ302に戻って次のコマンド受信を待つ。一方、内部変数addressと内部変数work_addressとが等しい場合、続いて、制御回路12は、ホスト装置からデータを受信し、この受信したデータをデータレジスタNo1に格納する(ステップ308)。このステップ308における、受信データをデータレジスタNo1に格納する処理については後述する。
続いて、制御回路12は、内部変数_FROM状態がデータ受信済状態である場合は、データレジスタNo0のデータを、「work_address −1」の指すワード線に書き込む(ステップ309)。このステップ309における書き込み処理については後述する。
続いて、制御回路12は、データレジスタNo1のデータをデータレジスタNo0にコピーする(ステップ310)。その後、制御回路12は、内部変数_FROM状態をデータ受信済状態に変更し(ステップ311)、内部変数work_addressを1だけ増やす(ステップ312)。
通常はここで処理を終えて次のコマンド待ちに戻るが、ブロックの最後のページにまで到達した場合は最後のページに対応するワード線にも書き込みを行う。すなわち、内部変数work_addressが64の倍数になったとき(ステップ313)、制御回路12は、データフラッシュ処理を行う(ステップ314)。なお、図6Aのステップ313にある“%”は、左辺の数値を右辺の数値で割って剰余を求める演算子である。
図7は、制御回路12によるデータフラッシュ動作を示すフローチャートである。制御回路12は、データレジスタNo1の各レジスタ値を全て“11(b)”に設定する(ステップ330)。(b)は2進数を意味する記号である。続いて、制御回路12は、データレジスタNo0のデータを「work_address −1」の指すワード線に書き込む(ステップ331)。続いて、制御回路12は、内部変数_FROM状態をデータ未受信状態に設定する(ステップ332)。データフラッシュ処理の終了後、次のコマンド待ちに戻る。
続いて、内部変数commandがデータ送信終了である場合(ステップ315)で、内部変数_FROM状態がデータ受信済状態ならば(ステップ316)、制御回路12は、図7で説明したデータフラッシュ処理を行う。
続いて、制御回路12は、内部変数work_addressを1だけ増やす(ステップ318)。これは、一旦連続した書き込みが終了したなら、続いて受け取ることのできるライトコマンドのアドレスは、記録済みの最後のワード線から一つ分あけてその次になることを意味する。もしステップ316において電源オンまたは前回のデータ送信終了から一度もライトコマンドを受信していない、つまり内部変数_FROM状態がデータ未受信状態ならば、制御回路12は、コマンドエラーとして扱い(ステップ319)、次のコマンド待ちに戻る。
その他のコマンドを受けた場合、例えば内部変数commandがリードである場合(ステップ320)、制御回路12は、これを適切にリード処理(ステップ321)して次のコマンド待ちに戻るが、そのリード処理は従来広く行われてきた技術を用いることができる。また、内部変数commandが消去である場合(ステップ322)、よく知られた消去処理動作を行った後、内部変数work_addressをゼロに戻す(ステップ323)。
[2−1.受信データをデータレジスタNo1に格納する処理]
次に、図6Aのステップ308における受信データをデータレジスタNo1に格納する処理の詳細について説明する。図8は、制御回路12によるステップ308の処理を示すフローチャートである。
動作開始時、制御回路12は、カウンタ変数bxをゼロに設定(初期化)する(ステップ401)。bxは、ビット線の番号を表している。コマンド、アドレスに続くデータの受信では、16本のデータ線を用いて一回のデータ受信を行い、すなわち16ビットのデータを受信する(ステップ402)。受信したデータは、内部変数receive_wordに設定される。
続いて、制御回路12は、16ビットの受信データを2ビットずつ区切って8つの値を作り、これらをデータレジスタNo1のカウンタ変数bxが指す位置から連続8つの位置に格納する(ステップ403)。例えば、16ビットの受信データのうち最初の2ビット、すなわち内部変数receive_word<0,1>に設定された2ビットデータは、データレジスタNo1[bx+0]に格納される。図8のステップ403は、実際には8つの格納処理からなるが、途中の図示を省略している。なお、ステップ403の処理は、回路によって16ビットの内部変数から2ビットずつ連続する8つのデータレジスタNo1の要素に値を転送することによっても実現することができる。
続いて、制御回路12は、カウンタ変数bxを8だけ増やす(ステップ404)。以後、制御回路12は、この処理を、カウンタ変数bxが4096に到達するまで、すなわち512回連続で行う。
[2−2.ワード線への書き込み処理]
次に、図6Aのステップ309におけるデータレジスタNo0のデータを「work_address −1」の指すワード線に書き込む処理の詳細について説明する。図9A及び9Bは、制御回路12によるステップ309の処理を示すフローチャートである。
データレジスタNo0のデータを「work_address −1」の指すワード線に書き込む処理は、補正値を考慮した設定電位の決定と、ワード線への電位設定とに分かれる。図9A及び9Bで主に取り上げるのは、そのうち補正値を考慮した設定電位の決定である。
最初に行うことは、各メモリセルへの設定電位の最高値、及び最低値を求めることである。これらの値を偶数番目のメモリセルと奇数番目のメモリセルとに対して独立して求めることによって、電位設定の精度を上げることができる。以後、全ての実施形態で特に断らない限り、設定電位、目標電位、セル電位等、電位に関する数値は消去時電位を原点とする相対電位であり、単位はボルト(V)である。
先ず、制御回路12は、内部変数_最高値(e)、最低値(e)、最高値(o)、最低値(o)をそれぞれ0、Vread、0、Vreadに設定する(ステップ501)。これらの値は、偶数番目、奇数番目の各メモリセルの設定電位の最高値、最低値を求めるための一時的なものである。最高値(e)、最低値(e)はそれぞれ、偶数番目のメモリセルの最高値、最低値を表し、最高値(o)、最低値(o)はそれぞれ、奇数番目のメモリセルの最高値、最低値を表している。読み出しパス電圧Vreadは、如何なる正常なメモリセルも導通状態にすることができる制御ゲート電極の電位、即ちメモリセルを記録する時の如何なる目標電位よりも高い電位であり、典型的には、8V程度である。
続いて、制御回路12は、カウンタ変数bxをゼロに初期化する(ステップ502)。続いて、内部変数Ve、VoにそれぞれEVEN(bx)、ODD(bx+1)を計算して代入する(ステップ503、504)。ここで、計算式EVENは、着目しているビット線を引数xとして取り、
EVEN(x)=Exp[No0[x]]−Yb*(Exp[No0[x−1]]+Exp[No0[x+1]])−Yw*Exp[No1[x]]−Yc*(Exp[No1[x−1]]+Exp[No1[x+1]])
となる。「*」は乗算記号である。
但し、Exp[data]は、記録すべきデータ(2進数、2ビット)と、それより一つ電位の低いデータとの間の判別閾値に電位変動マージン(典型的には0.5V程度)を加算した値で、意味的には当該記録データとして望ましい設定電位範囲の下限に当たる値(目標電位)である。その目標電位を図10に示す。
No0[x]、No1[x]などは、既に説明の通り、配列型のデータレジスタNo0、No1のx番目の値を参照することを意味する。xの値によっては、x、x−1、x+1の計算結果がデータレジスタNo0、No1の配列範囲を超える場合があるが、それらについてはあたかも“11(b)”が書かれていたかのように扱う。また、Yb、Yw、Ycは、実施形態の最初に説明した意味を持つ定数で、不揮発性半導体記憶装置1の製造時に実際に幾つかのメモリセルにある電位を与え、隣接セルがどれだけカップリング効果によって電位が上昇したかを測定し、そこからYb、Yw、Ycを計算して平均をとったもので、これらYb、Yw、Ycは制御回路12内のROMに記録してある。典型的にはYb、Ywがそれぞれ0.1程度、Ycが0.01程度の値を取る。
同様に、計算式ODDは引数をxとして、
ODD(x)=Exp[No0[x]]−Yw*Exp[No1[x]]−Yc*(Exp[No1[x−1]]+Exp[No1[x+1]])
となる。
続いて、制御回路12は、最高値、最低値の決定処理を行う。制御回路12は、Ve<最低値(e)の時、最低値(e)にVeを設定する(ステップ505)。制御回路12は、Ve>最高値(e)の時、最高値(e)にVeを設定する(ステップ506)。制御回路12は、Vo<最低値(o)の時、最低値(o)にVoを設定する(ステップ507)。制御回路12は、Vo>最高値(o)の時、最高値(o)にVoを設定する(ステップ508)。
続いて、制御回路12は、カウンタ変数bxを2だけ増やす(ステップ509)。そして、ループの先頭に戻り、カウンタ変数bxが4096に到達するまで同様の処理を行う。
続いて、制御回路12は、偶数/奇数ビット線用の電位表(電位表Te、電位表To)を作成する。電位表は、偶数用、奇数用それぞれ15個の要素を持つ表で、1番目から15番目までが有効な値を持つ。電位表の値は、書き込み時にワード線に印加する設定電圧である。電位表Teのrx番目の値は、以下の計算式によって得られる(ステップ513)。
Te[rx]=最低値(e)+((最高値(e)−最低値(e))/15)*rx
換言すると、制御回路12は、“(最高値(e)−最低値(e))/15”を計算し、この値を内部変数_間隔(e)に設定する(ステップ511)。そして、rxが16に到達するまで、以下の計算式を繰り返すことによって電位表Teを作成する。
Te[rx]=最低値(e)+間隔(e)*rx
電位表Te[15]は最高値(e)に等しい。
同様に電位表Toのrx番目の値は、以下の計算式によって得られる(ステップ514)。
To[rx]=最低値(o)+((最高値(o)−最低値(o))/15)*rx
換言すると、制御回路12は、“(最高値(o)−最低値(o))/15”を計算し、この値を内部変数_間隔(o)に設定する(ステップ512)。そして、rxが16に到達するまで、以下の計算式を繰り返すことによって電位表Toを作成する。
To[rx]=最低値(o)+間隔(o)*rx
電位表To[15]は最高値(o)に等しい。
続いて、制御回路12は、各メモリセルに設定すべき設定電位No0Aを求める。まず、カウンタ変数bxをゼロに初期化する(ステップ516)。続いて、内部変数Ve0にビット線BL0用の設定電位を求めて設定する(ステップ517)。計算式は既に説明したEVEN(0)を用いる。
続いて、制御回路12は、ビット線BL(bx+1)用の設定電位を計算して内部変数Voに代入する(ステップ518)。計算式は既に説明したODD(bx+1)を用いる。また、制御回路12は、ビット線BL(bx+2)用の設定電位を計算して内部変数Ve1に代入する(ステップ519)。計算式は既に説明したEVEN(bx+2)を用いる。
続いて、制御回路12は、Ve0が属する電位表Te上の位置を検索する。まず、制御回路12は、内部変数rxを1に初期化する(ステップ520)。続いて、Ve0≦電位表Te[rx]を最初に満たすrxを探す。rxが15に満たない間に限り、Ve0≦電位表Te[rx]を満たすか調べ、満たしたらループを抜ける(ステップ521)。満たしてない場合は、rxを1だけ増やしてループを続ける(ステップ522)。rxが15に達したらループを必ず終了する。そして、No0A[bx]にその時のrxを設定する(ステップ523)。No0A[bx]にゼロを設定することはなく、それは必ず1以上15以下の値である。なお本実施例ではrxの決定にシーケンシャルサーチの手法を用いているがサーチを高速化するための良く知られた他の手法、例えば二分探索法を用いることも出来る。
同様に、制御回路12は、Voが属する電位表To上の位置を検索する。検索の手順は、ステップ520〜523と同様で、Ve0をVoに、電位表Teを電位表Toに、No0A[bx]をNo0A[bx+1]にそれぞれ読み替えたものである。
続いて、次のビット線の組を評価するための準備を行う。まず、制御回路12は、内部変数Ve0にVe1の値を設定する(ステップ528)。続いて、カウンタ変数bxを2だけ増やし(ステップ529)、ループの最初に戻る。このループはbxが4096になった時に抜ける。
Ve0とVe1とを使い分けている理由は、次の通りである。ステップ527でNo0A[bx+1]に新しい値を設定すると、それは次のループではNo0[bx−1]、A[bx−1]とすることで参照できる。もしステップ519でEVEN(bx)を計算するならばNo0[bx−1]を参照してしまい、ホスト装置から入力した値とは異なる(補正済みの)値を参照してしまうためである。
以上の処理によって、偶数、奇数の電位表並びに各ビット線への設定電位が決定する。続いて、制御回路12は、偶数ビット線BLへの電位設定を行う(ステップ530)。続いて、制御回路12は、奇数ビット線BLへの電位設定を行う(ステップ531)。
[2−3.ビット線への電位設定処理]
次に、図9Bのステップ530における偶数ビット線への電位設定処理の詳細について説明する。図11は、制御回路12によるステップ530の処理を示すフローチャートである。
まず、制御回路12は、内部変数work_addressから1を引いた値に対応するロウデコーダの位置(ユニット)に1を、その他の位置にゼロを書き込む(ステップ601)。work_addressはホスト装置によって最後にページデータが書き込まれたワード線を示しているが、図11で電位設定する対象は一回前にホスト装置から受信したページデータであるので、「work_address −1」が指すワード線を選択する。
続いて、制御回路12は、内部変数VpにVpstartを設定する(ステップ602)。Vpstartはライトパルス列として出力される予定の最初のパルス高(単位V)で、典型的には18V程度である。続いて、設定すべきビットが残っているか否かを調べる(ステップ603)。設定すべきビットとは、No0A[bx](但しbxは偶数)がゼロではないビットのことである。一つでも設定すべきビットが存在する場合は書き込み電圧VpがVpmaxに到達したか否かを調べる(ステップ604)。Vpmaxはライトパルス列として出力可能な最も高いパルス高(単位V)で、典型的には27.5V程度である。書き込み電圧VpがVpmaxを超えた場合は記録失敗となる。
続いて、制御回路12は、当該ワード線を書き込み電圧Vpで書き込む(ステップ605)。具体的には、bxが奇数のビット線全て並びにbxが偶数のビット線のうちNo0A[bx]がゼロ、即ち書き込み対象外のビット線の電位を一旦電源電位Vdd(対グランドで4.5V程度)に上昇させた後フローティング状態にし、一方、bxが偶数かつNo0A[bx]が非ゼロ、即ち書き込み対象のビット線の電位を接地する。そして、ロウデコーダの値がゼロである全てのワード線に電圧発生回路13から書き込みパス電圧Vpass(対グランドで10V程度)を印加し、ロウデコーダの値が1であるワード線に電圧発生回路13から書き込み電圧Vpを印加し、一定時間経過するのを待つ動作である。この動作はビット線の選択方法を除けば従来のNAND型フラッシュメモリで行われている記録方式と同じである。
続いて、制御回路12は、対象ワード線をリセットする(ステップ606)。これはステップ605の最後に全ワード線の電圧を対グランド電位0Vに減少させた結果、全てのメモリセルの制御ゲート電位が対グランド電位0Vになるのを待つことを意味する。これは一定時間待つことで達成する。続いて、制御回路12は、書き込み検査を行う(ステップ607)。この書き込み検査処理については後述する。
続いて、制御回路12は、書き込み電圧Vpを電圧Vdiffだけ増やす(ステップ608)。電圧Vdiffは、VpstartとVpmaxとの間を等間隔に分けたうちの一つに対応し、典型的には、0.1V程度である。そして、ステップ603に戻って、書き込み電圧Vpを順次Vdiffだけ上げながら、書き込むべき全てのメモリセルへの書き込みが終了するまでループを繰り返す。
[2−4.書き込み検査処理]
次に、図11のステップ607における書き込み検査処理の詳細について説明する。図12A及び12Bは、制御回路12によるステップ607の処理を示すフローチャートである。
書き込み検査処理では、まず、制御回路12は、カウンタ変数vxを1に初期化する(ステップ701)。カウンタ変数vxは、設定済み電位を調査するための検査電位を順次切り替えるためのカウンタである。続いて、vxが16未満であるか否かを調べる(ステップ702)。もしvxが16に到達していた場合、書き込み検査を終了する。
vxが16未満である場合、続いて、制御回路12は、偶数であるbx全てについてNo0A[bx]がゼロであるか否かを調べる(ステップ703)。もし偶数であるbxすべてについてNo0A[bx]がゼロであるなら、電位設定の必要なメモリセルはなくなったことを意味するので、書き込み検査を終了する。
No0A[bx]が非ゼロであるようなbxが一つ以上あるなら、続いて、今回選択したvxを設定電位とするNo0A[bx]が存在するか否かを調べる。まず、カウンタ変数bx、cをそれぞれゼロに初期化する(ステップ704)。
bxが4096に到達していないならば(ステップ705)、制御回路12は、No0A[bx]がvxに等しいか否かを調べる(ステップ706)。もし等しいならばワークレジスタwork0[bx]に1を設定し、カウンタ変数cを1だけ増やす(ステップ707)。等しくないならばワークレジスタwork0[bx]にゼロを設定する(ステップ708)。続いて、制御回路12は、いずれの場合もカウンタ変数bxを2だけ増やし(ステップ709)、ステップ705に戻って、bxが4096に到達したか否かを調べる。
bxが4096に到達したら、続いて、制御回路12は、c=0であるか否かを調べる(ステップ710)。c=0であるとは、vxに対応する設定電位になることを期待しているメモリセルが一つもないことを意味する。よって、この設定電位に対する書き込み検査は無駄なので、ステップ726に進み、次のvxを計算する。
cがゼロでない場合、制御回路12は、内部変数Vrに電位表Te[vx]を検索して得た値を設定する(ステップ711)。このVrはメモリセルの電位が読み出し電圧Vrに到達したか否かを判定するためのものである。続いて、ロウデコーダがゼロのワード線には読み出しパス電圧Vreadを、ロウデコーダが1のワード線には読み出し電圧Vrを印加する(ステップ712)。読み出しパス電圧Vreadはステップ501で説明したものと同じ値である。
続いて、制御回路12は、偶数ビット線をリードする(ステップ713)。ビット線をリードするとは、最初に、偶数番目のビット線に接続されるメモリセルのソース側を遮断してドレイン側をリード判定用の電圧、例えば対グランド0.5Vに昇圧する。その後、ドレイン側を遮断、ソース側を接地して一定時間待ち、ドレイン側に蓄積された電荷が放電されるか否かを調べる動作を言う。当該メモリセルが導通状態なら電荷はソース側から流れ出し、ドレイン側の電圧が下がるが、当該メモリセルが遮断状態ならこの電圧は一定時間後もその多くを残している。この時のビット線電圧をセンスアンプ回路21にて読み出す。
読み出しの手順として、制御回路12は、まずカウンタ変数bx、cをそれぞれゼロに初期化し(ステップ714)、bxが4096未満か否かを調べ(ステップ715)、満たないならbx番目のビット線の電位が低下しているか否かを調べる(ステップ716)。低下しているならワークレジスタwork1[bx]にゼロを設定する(ステップ718)。メモリセルは、消去状態では対消去レベルでゼロ以上の任意の読み出し電圧Vrに対して導通状態で、多く書き込まれる、すなわち浮遊ゲート電極に電子が多く注入されるに従い高い読み出し電圧Vrを印加しないと導通状態にならなくなる性質がある。従って、設定電位を印加した状態で導通状態とは、必要な書き込み量に満たないことを意味している。逆に、電位の低下を観測しなかったなら、電位表Te[vx]に対応する設定電圧までの書き込みが終了したことを意味する。この場合はワークレジスタwork1[bx]に1を書き込み、またcを1だけ増やす(ステップ717)。いずれの場合もbxを2だけ増やし(ステップ719)、ステップ715に戻って、全偶数ビット線の調査を終えたか否かを調べる。
全偶数ビット線の調査を終えたなら、制御回路12は、cがゼロか否かを調べる(ステップ720)。cがゼロであるとは、その時の電位表Te[vx]に対応する設定電位に到達したメモリセルが一つもないことを意味しているので、今回の読み出し電圧Vrより高い電位を設定して調査することは無駄である。よって、今回の書き込み検査を終了させる。
cが非ゼロなら、続いて、制御回路12は、設定電位に到達したメモリセルがあるか否か調べる。制御回路12は、まずカウンタ変数bxをゼロに初期化する(ステップ721)。続いて、bxが4096未満であるか否かを調べ(ステップ722)、4096に満たない場合は、続いて、制御回路12は、ワークレジスタwork0[bx]、work1[bx]が共に1であるか否かを調べる(ステップ723)。ワークレジスタwork0[bx]、work1[bx]が共に1であるとは、そのメモリセルは読み出し電圧Vrまで書き込みをする予定であり、今回でその書き込みを達成したことを意味するので、その場合はNo0A[bx]にゼロを設定する(ステップ724)。このビット線は、次周以降の書き込みや書き込み検査の対象にならない。続いて、どちらの場合もbxを2だけ増やし(ステップ725)、ステップ722に戻ってbxが4096に到達したか否かを調べる。
bxが4096に到達したら、この読み出し電圧Vrでの書き込み検査は終了である。次の周に向けてvxを1だけ増やし(ステップ726)、ステップ702に戻ってvxが16に到達したか否かを調べる。
なお、ステップ704からステップ709、ステップ714からステップ719、並びにステップ721からステップ725に至る処理は実施形態によっては複数の回路を用いて同時に実行することも出来る。
図9Bのステップ531における奇数ビット線への電位設定の手順は、偶数ビット線への電位設定とほぼ同様である。参照するフローチャートも図11及び図12と同様である。但し、電位表Teに代えて電位表Toを用い、偶数と書いてある箇所を奇数、奇数と書いてある箇所を偶数と読み替え、またカウンタ変数bxによるループ制御は初期値を1に変更する。
[3.ビット線への電位設定、及び書き込み検査の具体例]
次に、図11及び図12で説明した偶数ビット線への電位設定、及び書き込み検査の動作の具体例について説明する。図13は、偶数ビット線への電位設定、及び書き込み検査における書き込み対象ワード線に印加される電位の推移を示す図である。本例は書き込み動作の途中部分であり、この前後に電位設定動作は続いている。図13の縦軸はワード線に印加される電位(消去レベルが原点)、横軸は時刻(記録開始の時刻が原点)である。書き込み開始時には、例えば、No0Aに1、2、3、4、7、8を取る要素が含まれており、0、5、6は含まれていないものとする。
図13の第1のVp書き込みの後、書き込み検査に移る。書き込み検査では、カウンタ変数vxを1からより大きい方向に向かって順番に上げていく。ステップ710でNo0A=1のメモリセルが存在することを知ってこの周を書き込み検査することを決め、ステップ712で電位表Te[1]に対応する設定電圧をロウデコーダが1であるワード線に印加して、この設定電位以上のセル電位を持つメモリセルを調べる(図13の(1)−1)。その結果、幾つかのメモリセルの電位は電位表Te[1]に到達していたものの、No0A=1のメモリセルの一部にはまだステップ723でNO側に分岐する、すなわち電位表Te[1]の設定電位に到達しないメモリセルが存在する。
続いて、ステップ726でvxを2にし、No0A=2のメモリセルが存在するため電位表Te[2]の設定電位をワード線に印加して、この設定電位以上のセル電位を持つメモリセルを調べる(図13の(1)−2)。その結果、No0A=2であるメモリセルの全てはステップ723でYES側へ分岐、つまり電位表Te[2]の設定電位に到達する。この時、ステップ724でNo0A[bx]にゼロが書き込まれるため、この時点でNo0A=2である項は全てゼロに書き換えられる。
続いて、ステップ726でvxを3にし、No0A=3のメモリセルが存在するため電位表Te[3]の設定電位をワード線に印加して、この設定電位以上のセル電位を持つメモリセルを調べる(図13の(1)−3)。その結果、より高い電位を目標とするメモリセルを含めてすべてのメモリセルがこの設定電位に到達していないことを検出する。このため、ステップ720でこれ以上高いワード線電圧を印加するステップを中止して書き込み検査を終了し、第2のVp書き込みを行う。
第2のVp書き込みの後の書き込み検査で、No0A=1であるようなメモリセルが存在するので電位表Te[1]の設定電位をワード線に印加して各メモリセルの電位を調べる。その結果、No0A=1であるようなメモリセルの全ては電位表Te[1]の設定電位に到達したことを確認し、その全ての位置のNo0Aをゼロに設定する(ステップ724)。続いて、vx=2にしてNo0A=vxとなるようなメモリセルを調べるが、第1の書き込みとこれに続く書き込み検査にてNo0A=2となる項の全てにゼロを書き込んだため、ステップ710でc=0となり、vx=2の書き込み検査をすることなく次の電位に移る。
続いて、vx=3にしてメモリセルの電位が電位表Te[3]の設定電位に到達したメモリセルを調べ(図13の(2)−3)、幾つかはこの設定電位に到達したことを知ってNo0Aをゼロにし、他のものは設定電位に到達することが出来ず、No0Aを3のまま残す。続いて、vx=4を調べ(図13の(2)−4)、電位表Te[4]の設定電位に到達したメモリセルは一つも無いことを知り、ステップ720の判断によって2度目の書き込み検査を終了し、第3のVp書き込みを行う。
第3のVp書き込み後の書き込み検査も第1、第2のそれと同様に行われるが、No0A=5、6となるような要素は最初から存在しないため、これらに当たるvxはステップ710の判断によってスキップされる。
このように、ステップ710で今回検査対象となるvxに一致するNo0Aがない場合はその回をスキップする機能、ステップ720で全てのメモリセルの電位が電位表Te[vx]の設定電位に満たないことが分かったらそれ以降の書き込み検査をしない機能によって、無駄な時間を費やすことなく書き込み検査を進めることができる。
[4.発明の効果]
従来方式によるデータ書き込みは、偶数ビット線、奇数ビット線のそれぞれに対して、(1)下位ビット書き込み+下位ビット書き込み検査、(2)上位ビット(01b)書き込み+書き込み検査、(3)上位ビット(00b)書き込み+書き込み検査、(4)上位ビット(10b)書き込み+書き込み検査、の4ステップを必要としていた。
これに対して、本実施形態の書き込み方式では、「全ビット書き込み+書き込み検査」の1ステップのみで書き込みを終了することができる。このため、より少ない時間で書き込みを終了させることができる。
また、本実施形態の書き込み検査処理を行うことによって、図13に示したように本当に必要な読み出し電圧Vrのみに絞って書き込み検査を行うことができ、これにより、書き込み検査に要する時間も最小限に抑えることができる。
また、図6に示したように、一旦データ送信終了コマンドを受けたら、データフラッシュ処理を行い、その時に書き込んだワード線から一つあけて次のワード線から次のライトコマンドを受け付けできるようにしている。これにより、新たに書き始めるワード線のメモリセルの電位によって、既に書き終えた最後のワード線のメモリセルの電位が影響を受ける大きさを低減させることができる。
なお、隣接する2つのメモリセルの一方に第1の、もう一方に第2の設定電位を書き込むに当たり、従来方式による書き込みでは、下位ビットの書き込みに伴う電位差分が上位ビット書き込みの際補正されるため、上位ビットの書き込みを終了した時点で第1のメモリセルが受ける電位変動は概略で最大「0.5*V*Y」となる。但し、Vは消去状態の電位から対応するデータを割り当てられているメモリセルの電位のうちで最大のものまでの電位差であり、“Y”は隣接する2つのメモリセルの間にあるカップリング効果の割合である。隣接する2つのメモリセルの間でこの関係が成り立ち、かつ第1のメモリセルの隣接3セルが同程度の影響を持つため、最大で「1.5*V*Y」程度の電位変動を受ける。
これに対して本実施形態による書き込み方法では、ステップ503、504で説明したEVEN、ODDの計算式がYの2乗以上の高次の項を省略することによる誤差を含んでおり、このため概略で最大「7*V*Y」の電位変動を受ける。また、電位表Te、Toを作成する時に計算式に対して丸め誤差を生じるが、この大きさはVの範囲を15等分したとして「0.067*V」程度である。しかしながら、項の省略による誤差は電位を下げる方向であるのに対して、電位表Te、To作成の丸め誤差は電位を上げる方向であるため一般に両者は相殺する。従って本方式による誤差は最大で「max(0.067*V,7*V*Y)」程度となる。もしY=0.1、V=6.0と仮定するなら0.067*V、7*V*Yは0.4〜0.42(V)程度であり、この値は従来の方式の変動幅0.9(V)よりも小さい。言い換えれば、本実施形態はより精密な電位設定を可能とする。
[第2の実施形態]
第2の実施形態は、データ送信終了コマンドを受けて一旦連続した書き込みが終了した場合に、続いて受信したライトコマンドに対する書き込みは、記録済みの最後のワード線から2つ分あけてその次のワード線から行うようにする。具体的には、図6Bのステップ318において、「work_address ← work_address +1」に代えて、「work_address ← work_address +2」に変更する。それ以外の動作は、第1の実施形態と同じである。
このような処理に変更することで、連続した記録を一旦中断した後再開するとき、新たに書き込んだワード線の電位変動がそれ以前に書き込まれた最後のワード線に与える影響を、第1の実施形態よりも低減することができる。具体的には、ワード線間のカップリング定数をYwとすれば、第1の実施形態ではYwの影響がまだ残っていたものを、第2の実施形態ではYw程度に抑えることができる。
なお、記録を新たに再開するときにアドレスに追加する加算値、すなわち記録済みの最後のワード線からあけるワード線の本数を3以上に設定するようにしてもよいことは勿論である。
[第3の実施形態]
第3の実施形態は、書き込み時にワード線に印加する設定電位を示す電位表の構成が第1の実施形態と異なり、第1の実施形態の図9Aで示した2つの電位表Te、Toを統合して一つの電位表にまとめるようにしている。図14A及び図14Bは、第3の実施形態に係るワード線への書き込み処理を示すフローチャートである。
書き込み開始時、制御回路12は、内部変数_最高値をゼロ、最低値をVreadに設定する(ステップ801)。ここで、最高値は、図9Aにおける最高値(e)及び最高値(o)を一つにしたものであり、最低値は、図9Aにおける最低値(e)及び最低値(o)を一つにしたものである。
続いて、制御回路12は、カウンタ変数bxをゼロに初期化し(ステップ802)、bx<4096の間、最高値、最低値の決定処理を行う。即ち、制御回路12は、ビット線BL(bx)に対する設定電位を計算して内部変数Vに代入し(ステップ803)、Vが最低値を下回っているなら最低値にVを代入し(ステップ804)、一方、Vが最高値を上回っているなら最高値にVを代入する(ステップ805)。その後、カウンタ変数bxを1だけ増やす(ステップ806)。そして、ループの先頭に戻り、カウンタ変数bxが4096に到達するまで同様の処理を行う。
続いて、制御回路12は、電位表を作成する。まず、rxに1を代入し(ステップ807)、“(最高値−最低値)/15”を計算して内部変数_間隔に設定する(ステップ808)。そして、rxが16に到達するまで、以下の計算式を繰り返すことによって電位表を作成する。
電位表[rx]=最低値+間隔*rx
続いて、制御回路12は、各メモリセルに設定すべき設定電位No0A[bx]を求める。まず、カウンタ変数bxをゼロに初期化し(ステップ811)、内部変数Vにビット線BL0用の設定電位を計算して代入する(ステップ812)。
続いて、制御回路12は、bxが4096に到達するまで以下の処理を繰り返す。即ち、内部変数Vnにビット線BL(bx+1)用の設定電位を計算して代入し(ステップ813)、rxを1から15まで1ずつ上げながら電位表[rx]の値がV以上になるrxを探す(ステップ815)。そして、見つかったらそのrxを、見つからなかったら15をNo0A[bx]に設定する(ステップ817)。その後、内部変数VにVnを代入し、bxを1だけ増やす(ステップ819)。
この処理が終わったら、偶数ビット線への電位設定(ステップ820)、奇数ビット線への電位設定(ステップ820)をそれぞれ行って処理を終了する。
なお本実施例ではrxの決定にシーケンシャルサーチの手法を用いているがサーチを高速化するための良く知られた他の手法、例えば二分探索法を用いることも出来る。
図15は、ステップ803におけるビット線BL(bx)用の設定電位を計算する処理を説明するフローチャートである。まず、制御回路12は、bxが偶数か奇数かを判断する(ステップ830)。偶数ならばEVEN(bx)を計算して内部変数Vに代入し(ステップ831)、奇数ならばODD(bx)を計算して内部変数Vに代入する(ステップ832)。ここで、EVENやODDの定義、並びにbx、bx−1、またはbx+1がデータレジスタNo0、No1の配列範囲を超える場合の処理方法は第1の実施形態と全く同じである。
また、偶数ビット線への電位設定、奇数ビット線への電位設定での書き込み検査において、第1の実施形態では電位表Te、Toをそれぞれ参照したが、第3の実施形態では偶数ビット線及び奇数ビット線への電位設定のどちらも一つの統合された電位表を参照する。
以上詳述したように第3の実施形態では、偶数ビット線、奇数ビット線に設定すべき電位の分布は一般に若干ずれているが、これを考慮した電位設定を行わないことによって、電位表の数を2つから一つに減らすことができる。これにより、第3の実施形態では、第1の実施形態に比べて、処理が簡略化できるため、実装上のコストが低減できる。
[第4の実施形態]
第4の実施形態は、書き込み時にワード線に印加する設定電位を示す電位表の構成が第1の実施形態と異なり、第1の実施形態の図9Aで示した2つの電位表Te、Toの代わりに予め用意した固定の電位表を用いるようにしている。図16は、第4の実施形態に係るワード線への書き込み処理を示すフローチャートである。
図16のフローチャートは、第3の実施形態で示した図14のフローチャートのうち、電位表を作成するためのステップ801から810までを取り去った手順になっている。また、第4の実施形態の電位表は制御回路12内のROMに記録され、制御回路12は、書き込み可能なレジスタとしての電位表を持たない。
ROMに予め準備する電位表は、15個の要素から成り、電位表[1]〜電位表[15]が有効な値である。それらの値は、図10のデータ“10(b)”に相当する目標電位、いわゆるExp[10(b)]をVmとして、以下の式で与えられる値である。
電位表[rx]=(Vm*rx)/15
図16のステップ902におけるビット線BL(bx)用の設定電位を計算する処理は、第3の実施形態で説明した図15と同じである。
以上詳述したように第4の実施形態によれば、電位表をROMに格納することにより、第1の実施形態の図9A、及び第3の実施形態の図14Aに示した電位表作成処理を省くことができる。これにより、第1の実施形態及び第3の実施形態に比べて、書き込み処理を大幅に簡略化できる。また、電位表をレジスタに保持する必要がないので、実装上のコストが低減できる。
また、第4の実施形態では、ワード線に幾つかの予め決まった電位を設定すれば十分であるため、図2に示した電圧発生回路13はA/D変換を行う必要がなくなり、より安価な回路構成で実現できるようになる。
[第5の実施形態]
第5の実施形態は、データレジスタNo0に格納された、各メモリセルへ書き込むデータ毎に電位表を4種類作成し、書き込み処理時には、それぞれに対する補正値のみを補正値レジスタAに書き込むようにしている。
図6Aのステップ309におけるデータレジスタNo0のデータを「work_address −1」の指すワード線に書き込む処理の詳細について説明する。図17A及び17Bは、制御回路12によるステップ309の処理を示すフローチャートである。
各メモリセルへ書き込むデータを内部変数exで表す。本実施形態では、各メモリセルが2ビットを記録するため、exは、0〜3(00(b)、01(b)、10(b)、11(b))からなる変数である。先ず、制御回路12は、内部変数exをゼロに初期化する(ステップ1001)。続いて、すべての内部変数_最高値[ex]、最低値[ex]をそれぞれ0、Vreadに設定する(ステップ1002〜1004)。
続いて、制御回路12は、カウンタ変数bxをゼロに初期化し(ステップ1005)、bx<4096の間、最高値、最低値の決定処理を行う。即ち、制御回路12は、ビット線BL(bx)に対する設定電位を計算して内部変数Vに代入する(ステップ1007)。この処理は、図15と同じである。続いて、データレジスタNo0[bx]の値を内部変数exに設定する(ステップ1007)。そして、Vが最低値[ex]を下回っているなら最低値[ex]にVを代入し(ステップ1008)、またVが最高値[ex]を上回っているなら最高値[ex]にVを代入する(ステップ1009)。その後、カウンタ変数bxを1だけ増やす(ステップ1010)。そして、ループの先頭に戻り、カウンタ変数bxが4096に到達するまで同様の処理を行う。
続いて、制御回路12は、電位表を作成する。電位表は、15個の要素を持つ表で、[0]〜[14]が有効な値を持つ。まず、制御回路12は、内部変数exをゼロに初期化する(ステップ1011)。続いて、exが3に満たない場合、内部変数Nに4を設定し(ステップ1012)、exが3に到達した場合、内部変数Nに3を設定する(ステップ1013)。続いて、“(最高値[ex]−最低値[ex])/N”を計算して内部変数_間隔に設定する(ステップ1014)。
続いて、制御回路12は、内部変数rxをゼロに初期化する(ステップ1015)。rxは、補正値レジスタAに格納される補正値である。続いて、制御回路12は、rxがNに到達するまで、以下の計算式を繰り返すことによって当該exに対応する電位表[ex*4+rx]を作成する。(ステップ1016、1017)
電位表[ex*4+rx]=最低値[ex]+間隔*rx
そして、ループの先頭に戻り、内部変数exが4に到達するまで同様の処理を行う。これにより、exの各々についての設定電位を含む電位表が作成される。
なお、ステップ1013に示すように、exが3(11(b))の時に限り補正値は0〜2の範囲であり、このため、“ex*4+rx”が15となる電位表[15]は作成されない。この値15(1111(b))は、書き込み検査時に書き込み不要を意味する特別な値として使用される。
続いて、制御回路12は、各メモリセルの設定電位に相応しい補正値を電位表から検索して補正値レジスタAに書き込む。まず、制御回路12は、カウンタ変数bxをゼロに初期化する(ステップ1018)。続いて、内部変数Vにビット線BL(bx)用の設定電位を計算して代入する(ステップ1019)。続いて、データレジスタNo0[bx]のデータを内部変数exに設定する(ステップ1020)。
続いて、制御回路12は、exが3に満たない場合、内部変数Nに4を設定し(ステップ1021)、exが3に到達した場合、内部変数Nに3を設定する(ステップ1022)。続いて、内部変数rxをゼロに初期化する(ステップ1023)。続いて、rxを1から“N−1”まで1ずつ上げながら電位表[ex*4+rx]の値がV以上になるrxを探す(ステップ1024)。そして、見つかったらそのrxを、見つからなかったら“N−1”を補正値レジスタA[bx]に設定する(ステップ1026)。その後、bxを1だけ増やし(ステップ1027)、ループの先頭に戻り、カウンタ変数bxが4096に到達するまで同様の処理を行う。
以上の処理によって、電位表並びに各メモリセルの補正値が決定する。続いて、制御回路12は、偶数ビット線BLへの電位設定を行う(ステップ1028)。続いて、制御回路12は、奇数ビット線BLへの電位設定を行う(ステップ1029)。
ビット線BLへの電位設定処理は、基本的には、第1の実施形態で説明した図11と同じである。だだし、上記電位表並びにNo0Aの値の変更に伴い、本実施形態では、図11のステップ603は、「No0A[bx]は、全て1111(b)?」に変更される。
次に、書き込み検査処理の詳細について説明する。図18A及び18Bは、制御回路12による書き込み検査処理を示すフローチャートである。この書き込み検査処理は、基本的には、図12A及び12Bと同じである。以下の説明では、図12A及び12Bと異なるステップを中心に説明する。
書き込み検査処理では、まず、制御回路12は、カウンタ変数vxをゼロに初期化する(ステップ701)。カウンタ変数vxは、メモリセルの設定電位をその低い側から順番にたどるための変数である。これに対して、データレジスタNo0に格納されている書き込みデータは設定電位の順に並んでいない。このため、図19に示した変換テーブルを参照することで、設定電位の順を書き込みデータ並びにその補正値の順に変換する。図19の左側の「インデックス」はカウンタ変数vxによって示される値(設定電位)、右側の「値」はNo0Aの値、すなわち、上位2ビットがデータレジスタNo0に格納された書き込みデータ、下位2ビットが補正値レジスタAに格納された補正値である。図19においては、インデックスが大きくなるにつれて、設定電位も大きくなる。
続いて、制御回路12は、vxが15未満であるか否かを調べる(ステップ702)。もしvxが15に到達していた場合、書き込み検査を終了する。vxが15未満である場合、続いて、偶数であるbx全てについてNo0A[bx]が全て1111(b)であるか否かを調べる(ステップ703)。もし偶数であるbx全てについてNo0A[bx]が1111(b)であるなら、設定の必要なメモリセルはなくなったことを意味するので、書き込み検査を終了する。
No0A[bx]が1111(b)でないようなbxが一つ以上あるなら、続いて、今回選択したvxを設定電位としているNo0A[bx]が存在するか否かを調べる。まず、カウンタ変数bx、cをそれぞれゼロに初期化する(ステップ704)。
bxが4096に到達していないならば(ステップ705)、制御回路12は、No0A[bx]が“ltod[vx]”に等しいか否かを調べる(ステップ706)。“ltod[vx]”とは、図19に示す変換テーブルのうちvxをインデックスとした時の対応する「値」を指す。もし等しいならばワークレジスタwork0[bx]に1を設定し、カウンタ変数cを1だけ増やす(ステップ707)。等しくないならばワークレジスタwork0[bx]にゼロを設定する(ステップ708)。続いて、制御回路12は、いずれの場合もカウンタ変数bxを2だけ増やし(ステップ709)、ステップ705に戻って、4096に到達したか否かを調べる。
ステップ710においてcがゼロでない場合、制御回路12は、内部変数Vrに電位表[ltod[vx]]を検索して得た値を設定する(ステップ711)。このVrはメモリセルの電位が読み出し電圧Vrに到達したか否かを判定するためのものである。
また、電位表並びにNo0Aの変更に伴い、ステップ724においてNo0A[bx]に設定する値を“1111(b)”に変更する。
以上詳述したように第5の実施形態では、メモリセルの電位が書き込み目標電位に到達するまでデータレジスタNo0に格納されたホスト装置からの書き込みデータをそのまま保存している。このため、図17Bのステップ1019に示したように、補正値を計算するに当たって毎回その時々のデータレジスタNo0の値を参照すればよく、アルゴリズムが簡単になる。
第5の実施形態に第4の実施形態を適用することも可能である。即ち、その不揮発性半導体記憶装置1の特性を製造時に調べておき、図10に示した各目標電位に対する設定電位低下分の最大値を求めてこの区間を3等分、または4等分しうるように電位表を作成してROMに格納しておく方法である。この方法によって、第5の実施形態に基づく構成であっても第4の実施形態と同様の効果を得ることができる。
本発明は、上述した実施形態に限定されるものではなく、その要旨を逸脱しない範囲内で、構成要素を変形して具体化できる。また、実施形態に開示されている複数の構成要素の適宜な組み合わせにより種々の発明を構成することができる。例えば、実施形態に開示される全構成要素から幾つかの構成要素を削除してもよいし、異なる実施形態の構成要素を適宜組み合わせてもよい。
MC…メモリセル、STD,STS…選択トランジスタ、BL…ビット線、WL…ワード線、SGD,SGS…選択ゲート線、SRC…ソース線、1…不揮発性半導体記憶装置、10…入出力制御回路、11…アドレスレジスタ、12…制御回路、13…電圧発生回路、15…ロウデコーダ、16…データレジスタ0、17…データレジスタ1、18…補正値レジスタ、19…ワークレジスタ0、20…ワークレジスタ1、21…センスアンプ回路、22…メモリセルアレイ、30…半導体基板、31…P型ウェル、32…拡散領域、33…トンネル絶縁膜、34…電荷蓄積層、35…ゲート間絶縁膜、36…制御ゲート電極、37S…ソース領域、37D…ドレイン領域、38…ゲート絶縁膜、39…ゲート電極。

Claims (5)

  1. 複数のメモリセル群を有するブロックを含み、前記複数のメモリセル群の各々は複数のビット線にそれぞれ電気的に接続されかつ共通のワード線に電気的に接続され、各メモリセルは複数ビットを記録する、不揮発性メモリと、
    第1のワード線に書き込むべき第1のデータを補正した情報を格納する第1のレジスタと、
    書き込み対象の第1のメモリセルに最終的に設定すべき目標電位から、前記第1のメモリセルに隣接しかつ未書き込みの第2のメモリセルに電位を設定することによって発生する電位上昇分を差し引いた設定電位を前記第1のレジスタに設定し、かつ前記第1のレジスタの情報を用いて前記第1のメモリセルに複数ビットを一回で書き込む制御回路と、
    を具備することを特徴とする不揮発性半導体記憶装置。
  2. 前記第1のワード線の次の第2のワード線に書き込むべき第2のデータを格納する第2のレジスタをさらに具備し、
    前記制御回路は、前記第2のレジスタの情報を参照して前記設定電位を求めることを特徴とする請求項1に記載の不揮発性半導体記憶装置。
  3. 前記電位上昇分は、前記第2のメモリセルの目標電位と、前記第1のメモリセル及び前記第2のメモリセル間のカップリング効果に基づく定数とを乗じた値に基づいて求められることを特徴とする請求項1又は2に記載の不揮発性半導体記憶装置。
  4. 前記制御回路は、前記第1のメモリセルの設定電位の最大値及び最小値を算出してそれらの間を等分割した電位表を作成し、この電位表を用いて前記設定電位を求めることを特徴とする請求項1乃至3のいずれかに記載の不揮発性半導体記憶装置。
  5. 前記制御回路は、書き込みデータごとに前記電位上昇分による補正量の大きさに応じて補正値を求め、かつ前記書き込みデータ及び前記補正値を用いて電位表を作成し、この電位表を用いて前記設定電位を求め、
    前記第1のレジスタは、前記第1のデータを格納する第1のレジスタ部と、前記補正値を格納する第2のレジスタ部とを含むことを特徴とする請求項1乃至3のいずれかに記載の不揮発性半導体記憶装置。
JP2009159979A 2008-12-12 2009-07-06 不揮発性半導体記憶装置 Abandoned JP2010160871A (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2009159979A JP2010160871A (ja) 2008-12-12 2009-07-06 不揮発性半導体記憶装置
US12/552,671 US20100149867A1 (en) 2008-12-12 2009-09-02 Nonvolatile semiconductor memory device

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2008317001 2008-12-12
JP2009159979A JP2010160871A (ja) 2008-12-12 2009-07-06 不揮発性半導体記憶装置

Publications (1)

Publication Number Publication Date
JP2010160871A true JP2010160871A (ja) 2010-07-22

Family

ID=42240320

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009159979A Abandoned JP2010160871A (ja) 2008-12-12 2009-07-06 不揮発性半導体記憶装置

Country Status (2)

Country Link
US (1) US20100149867A1 (ja)
JP (1) JP2010160871A (ja)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2013069392A (ja) * 2011-09-26 2013-04-18 Toshiba Corp 不揮発性半導体記憶装置及び不揮発性半導体記憶装置のデータ書き込み方法
US9430735B1 (en) * 2012-02-23 2016-08-30 Micron Technology, Inc. Neural network in a memory device
US9311996B2 (en) * 2014-09-10 2016-04-12 Kabushiki Kaisha Toshiba Semiconductor storage device having resistance-change storage elements
US10777286B2 (en) 2018-12-28 2020-09-15 Micron Technology, Inc. Apparatus and methods for determining data states of memory cells

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6657891B1 (en) * 2002-11-29 2003-12-02 Kabushiki Kaisha Toshiba Semiconductor memory device for storing multivalued data
US7495953B2 (en) * 2006-07-20 2009-02-24 Sandisk Corporation System for configuring compensation
US7660166B2 (en) * 2007-01-31 2010-02-09 Sandisk Il Ltd. Method of improving programming precision in flash memory

Also Published As

Publication number Publication date
US20100149867A1 (en) 2010-06-17

Similar Documents

Publication Publication Date Title
US20240021250A1 (en) Memory system
KR102376505B1 (ko) 불휘발성 메모리 장치 내 소거 불량 워드라인 검출 방법
US9672926B2 (en) Apparatus and method of programming and verification for a nonvolatile semiconductor memory device
JP5444468B2 (ja) パス電圧の外乱及びフローティングゲートから制御ゲートへのリークを低減するメモリプログラム
CN110660437B (zh) 半导体存储装置
US7916548B2 (en) Non-volatile semiconductor storage device and memory system
US8743615B2 (en) Read compensation for partially programmed blocks of non-volatile storage
TWI541808B (zh) Semiconductor memory device
JP5396481B2 (ja) ワードライン結合を用いたメモリのマルチパスプログラミング
JP5238741B2 (ja) 不揮発性半導体記憶装置
US20080158950A1 (en) Apparatus, method, and system for flash memory
KR101771635B1 (ko) 반도체 메모리 장치, 배드 컬럼의 리페어 방법 및 이에 관한 리던던트 정보를 설정하는 설정 방법
US8194465B2 (en) Non-volatile semiconductor storage device
US20120170378A1 (en) Read methods of semiconductor memory device
KR20110037986A (ko) 비휘발성 저장 소자를 위한 소거-검증 프로세스
US11309030B2 (en) Word line discharge skip for faster read time
TW201438016A (zh) 半導體記憶裝置、控制器及記憶體系統
KR101668340B1 (ko) Nand형 플래시 메모리 및 그의 프로그래밍 방법
JP2013186932A (ja) 不揮発性半導体記憶装置
JP6154879B2 (ja) Nand型フラッシュメモリとそのプログラム方法
JP2008262623A (ja) 不揮発性半導体記憶装置
EP3262686B1 (en) Non-volatile storage systems and methods
JP2012155798A (ja) 不揮発性半導体記憶装置
JP2010160871A (ja) 不揮発性半導体記憶装置
JP2012123856A (ja) 不揮発性半導体記憶装置

Legal Events

Date Code Title Description
A762 Written abandonment of application

Free format text: JAPANESE INTERMEDIATE CODE: A762

Effective date: 20110214