本発明の実施に適したメモリシステムの一例は、NANDフラッシュメモリ構造を用いる。そのNANDフラッシュメモリ構造は2つの選択ゲートの間に直列に接続された複数のトランジスタを含んでいる。直列に接続されたトランジスタと選択ゲートは、NANDストリングと呼ばれる。図1は1つのNANDストリングを示す平面図である。図2は、その等価回路である。図1と図2に示すNANDストリングは、第1選択ゲート120と第2選択ゲート122の間に挟まれているとともに直列に接続されている4つのトランジスタ100、102、104及び106を有する。選択ゲート120は、ビットライン126のNANDストリングの接続をゲート制御する。選択ゲート122は、ソースライン128へのNANDストリングの接続をゲート制御する。選択ゲート120は、制御ゲート120CGに適切な電圧を印加することで制御される。選択ゲート122は、制御ゲート122CGに適切な電圧を印加することで制御される。トランジスタ100、102、104、及び106のそれぞれは制御ゲートとフローティングゲートを有している。トランジスタ100は、制御ゲート100CGとフローティングゲート100FGを有している。トランジスタ102は、制御ゲート102CGとフローティングゲート102FGを有している。トランジスタ104は、制御ゲート104CGとフローティングゲート104FGを有している。トランジスタ106は、制御ゲート106CGとフローティングゲート106FGを有している。制御ゲート100CGは、ワードラインWL3に接続されており(またはワードラインWL3であり)、制御ゲート102CGはワードラインWL2に接続されており、制御ゲート104CGはワードラインWL1に接続されており、制御ゲート106CGはワードラインWL0に接続されている。一実施形態では、トランジスタ100、102、104及び106はそれぞれがメモリセルである。他の実施形態では、メモリセルは複数のトランジスタを有していてもよく、あるいは、図1または図2に示されているものと異なっていてもよい。選択ゲート120は選択ラインSGDに接続されている。選択ゲート122は選択ラインSGSに接続されている。
図3は、上記のNANDストリングの断面図を示す。図3に示すように、NANDストリングのトランジスタは、pウェル領域140内に形成される。各トランジスタは、制御ゲート(100CG、102CG、104CG、及び106CG)とフローティングゲート(100FG,102FG、104FG、及び106FG)からなる積層ゲート構造を有している。制御ゲートとフローティングゲートは、通常はポリシリコン層を堆積することにより形成される。フローティングゲートは、pウェルの表面上の酸化物または他の誘電体膜の上部に形成されている。制御ゲートはフローティングゲート上にあり、ポリシリコン間誘電体層が制御ゲートとフローティングゲートを分離している。メモリセル(100、102、104、及び106)の制御ゲートは、ワードラインを構成する。N+ドープ拡散領域130、132、134、136及び138は、隣接しているセルの間で共有されており、それを通してセルは相互に直列に接続されてNANDストリングを構成する。これらのN+ドープ領域はセルのソース及びドレインを構成する。たとえば、N+ドープ領域130は、トランジスタ122のドレインとトランジスタ106のソースとして機能し、N+ドープ領域132は、トランジスタ106のドレインとトランジスタ104のソースとして機能し、N+ドープ領域134は、トランジスタ104のドレインとトランジスタ102のソースとして機能し、N+ドープ領域136は、トランジスタ102のドレインとトランジスタ100のソースとして機能し、N+ドープ領域138は、トランジスタ100のドレインとトランジスタ120のソースとして機能する。N+ドープ領域126はNANDストリングのためのビットラインに接続されている。また、N+ドープ領域128は複数のNANDストリングのための共通のソースラインに接続されている。
図1から図3はNANDストリングの中の4個のメモリセルを示しているが、4つのトランジスタの使用は例としてのみ示されていることに注意する。本明細書に説明する技術とともに使用するNANDストリングは、4個未満のメモリセルまたは4個を超えるメモリセルを有し得る。例えば、いくつかのNANDストリングは8個のメモリセル、16個のメモリセル、32個のメモリセル、64個のメモリセル等を含む。本明細書の説明はNANDストリングの中の特定の数のメモリセルに制限されない。
各メモリセルは、アナログまたはデジタル形式で表されたデータを記憶することができる。1ビットのデジタルデータを記憶するときに、メモリセルの可能な閾値電圧の範囲は、論理データ「1」と「0」が割り当てられる2つの範囲に分割される。NAND型フラッシュメモリの一例では、電圧閾値は、メモリセルが消去された後には負になり、論理「1」と定義される。閾値電圧はプログラム動作後には正となり、論理「0」と定義される。閾値電圧が負であるときに、制御ゲートに0ボルトを印加することにより読み出しが試みられると、メモリセルがオンして論理1が記憶されていることを示す。閾値電圧が正のときに、制御ゲートに0ボルトを印加することにより読み出し動作が試みられると、メモリセルはオンにならずに論理0が記憶されていることを示す。1ビットのデジタルデータを記憶するメモリセルはバイナリメモリセルと呼ばれる。
メモリセルは、複数ビットのデジタルデータを記憶することもできる。このようなメモリセルは、マルチ状態メモリセルと呼ばれる。マルチ状態メモリセルの閾値電圧ウィンドウは多くの状態に分割される。例えば、4つの状態が使用される場合、データ値「11」、「10」、「01」、及び「00」に割り当てられる4つの閾値電圧範囲がある。NAND型メモリの一例では、消去動作後の閾値電圧は負であり「11」と定義される。正の閾値電圧は「10」、「01」及び「00」の状態に使用される。
NAND型フラッシュメモリ及びそれらの動作の関連する例は、以降の米国特許/特許出願内に提供されており、それら全てはその全体を参照することにより本明細書に組み込まれる。米国特許第5,570,315号、米国特許第5,774,397号、米国特許第6,046,935号、米国特許第5,386,422号、米国特許第6,456,528号、及び米国特許出願第09/893,277号(公開番号US2003/0002348号)。NANDフラッシュメモリに加えて、他の種類の不揮発性メモリも本発明とともに使用できる。
フラッシュEEPROMシステム内で役立つ別の種類のメモリセルは、導電性フローティングゲートの代わりに非導電性誘電体材料を利用して、不揮発的な方法で電荷を蓄積する。このようなセルは、Chanらによる論文、「ATrue Single-Transistor Oxide-Nitride-Oxide EEPROM Device」、IEEE Electron Device Letters, Vol.EDL-8,No.3、1987年3月、93〜95ページ内に記載されている。酸化シリコン、窒化シリコン及び酸化シリコン(「ONO」)からなる三層誘電体は、導電性制御ゲートと、メモリセルチャネル上の半導体基板の表面の間に挟持される。セルは、セルチャネルから窒化物内に電子を注入することによってプログラムされる。その電子は、制限領域内にトラップされて蓄積される。それから、この蓄積された電荷は、セルチャネルの一部の閾値電圧を検出可能なように変化させる。窒化物内にホットホールを注入することによって、セルが消去される。Nozakiらの「A 1-Mb EEPROM with MONOS MemoryCell for SemiconductorDisk Application」,IEEE Journal of Solid-State Circuits,Vol.26,No.4,1991年4月、497〜501ページを参照すると、分割ゲート構成内の同様のセルを説明しており、ここではドープされたポリシリコンゲートがメモリセルチャネルの一部上に延び、別個の選択トランジスタを構成している。以上の2つの論文は、それらの全体を参照することによって本明細書に組み込まれる。William D.Brown及びJoe E.Brewerによって編集された「NonvolatileSemiconductor Memory Technology」,IEEE Press,1998のセクション1.2で言及されているプログラミング技術(参照によって本明細書に組み込まれる)も、誘電体電荷捕捉装置に適用可能であることをそのセクションで説明している。本段落で説明したメモリセルは、本発明と使用することもできる。従って、本明細書に説明する技術は、異なるメモリセルの誘電領域間の結合にも適合する。
各セルに2ビットを記憶する別の手法が、Eitanら、「NROM: A Novel Localized Trapping, 2-Bit Nonvolatile Memory Cell」、IEEEElectron Device Letters、第21巻、第11号、2000年11月、543〜545ページに説明されている。ONO誘電体層は、ソース拡散とドレイン拡散の間のチャンネルに広がっている。一方のデータビットの電荷はドレインに隣接する誘電体層で局所化され、他方のデータビットの電荷はソースに隣接する誘電体層で局所化される。マルチ状態データ記憶装置は、誘電体中で空間的に分離された電荷蓄積領域のバイナリ状態を別々に読み出すことによって実現される。本段落に説明したメモリセルは、本発明とともに使用することもできる。
図4は、図1〜3に示したようなNANDセルのアレイの一例を示している。各列に沿って、ビットライン206はNANDストリング150のドレイン選択ゲートのドレイン端子126に接続している。NANDストリングの各行に沿って、ソースライン204はNANDストリングのソース選択ゲートのすべてのソース端子128に接続できる。メモリシステムの一部としてのNANDアーキテクチャアレイ及びその動作の一例は、米国特許第5,570,315号、第5,774,397号、及び第6,046,935号に記載されている。
メモリセルのアレイは、メモリセルの多数のブロックに分割される。フラッシュEEPROMシステムでは一般的なように、ブロックは消去のユニットである。つまり、各ブロックは、共に消去される最小数のメモリセルを有する。各ブロックは、一般に複数のページに分割される。ページはプログラミングの単位である。一実施形態では、個々のページはセグメントに分割され、セグメントは基本プログラミング動作として一度に書き込まれる最小数のセルを有することができる。一般に、メモリセルの1行に1ページ以上のデータを記憶する。1ページは1つ以上のセクタを記憶できる。1つのセクタは、ユーザデータとオーバヘッドデータを有する。オーバヘッドデータは一般に、そのセクタのユーザデータから計算された誤り訂正符号(ECC)を有する。制御部(後に説明)の一部は、データがアレイ内にプログラムされるときにECCを計算し、さらにデータがアレイから読み出されるときにそれをチェックする。また、ECC及び/又は他のオーバヘッドデータは、それらが関連するユーザデータ以外の異なるページもしくは異なるブロックにさえ記憶される。ユーザデータのセクタは一般に512バイトであり、磁気ディスクドライブ内のセクタのサイズに対応する。オーバヘッドデータは一般に、追加の16〜20バイトである。多数のページがブロックを構成し、それは8ページから、例えば最大32、64,128またはそれ以上のページのいずれであってもよい。
図5は、本発明の一実施形態による1ページのメモリセルを並列に読み出し及びプログラミングする読み出し/書き込み回路を備えたメモリ装置296を示している。メモリ装置296は、1つ以上のメモリダイ298を有する。メモリダイ298は、2次元のアレイのメモリセル300、制御回路310、及び読み出し/書き込み回路365を有する。いくつかの実施形態では、メモリセルのアレイは3次元であり得る。メモリセルは、ビットライン、ワードライン、ソースライン、及びメモリアレイを制御するために使用される他のライン等のさまざまな制御ラインによって制御、アクセスされる。例えば、メモリアレイ300は、行復号部330を介してワードラインによって、及び、列復号部360を介してビットラインによってアドレス指定できる。読み出し/書き込み回路365は複数の検出ブロック400を有しており、1ページのメモリセルを並列に読み出し又はプログラムすることができる。一般に、制御部350は、1つ以上のメモリダイ298のように同じメモリ装置296(例えば、取り外し可能なストレージカード)内に含まれる。コマンド及びデータは、ライン320を介してホストと制御部350の間、及び、ライン318を介して制御部と1つ以上のメモリダイ298の間で送られる。
制御回路310は、読み出し/書き込み回路365と協調して、メモリアレイ300上でメモリ動作を実行する。制御回路310は、状態マシン312、オンチップアドレス復号部314及び電力制御モジュール316を有している。状態マシン312は、メモリ動作のチップレベル制御を提供する。オンチップアドレス復号部314は、ホスト又はメモリ制御部によって用いられるとともに、復号部330及び360によって用いられるハードウェアアドレスの間のアドレスインタフェースを提供する。電力制御モジュール316は、メモリ動作中にワードライン及びビットラインに供給される電力及び電圧を制御する。
いくつかの実装形態では、図5の構成要素のいくつかを結合することができる。多様な設計では、メモリセルアレイ300以外の図5の構成要素の1つまたは複数を(単独でまたは組み合わせて)1つの管理回路と見なすことができる。例えば、管理回路は、制御回路310、状態マシン312、復号部314/360、電力制御316、検出ブロック400、読み出し/書き込み回路365、制御部350等の内の1つ、または組み合わせを有してよい。
図6は、図5に示したメモリ装置296の別の構成を示している。様々な周辺回路によるメモリアレイ300へのアクセスはアレイの両側で対称的に実装されており、各側のアクセスライン及び回路の密度が半分に低減されている。従って、行復号部は行復号部330Aと330Bに分割され、列復号部は列復号部360Aと360Bに分割されている。同様に、読み出し/書き込み回路は、アレイ300の底部からビットラインに接続する読み出し/書き込み回路365Aと、アレイ300の上部からビットラインに接続する読み出し/書き込み回路365Bに分割されている。この方法により、読み出し/書き込みモジュールの密度は本質的に2分の1に低減される。図6の装置は、図5の装置で上述したような制御部を有することもできる。
図7を参照し、メモリセルアレイ300の例示的な構造を説明する。一例として、1,024個のブロックに区切られるNANDフラッシュEEPROMを説明する。各ブロックに記憶されるデータは同時に消去できる。一実施形態では、ブロックは、同時に消去されるメモリセルの最小単位である。この例では、各ブロックにBL0、BL1、...、BL8511に相当する8,512の列がある。一実施形態では、ブロックの全てのビットラインは、読み出し動作及びプログラム動作の間に同時に選択できる。1つの共通したワードラインに沿った、任意のビットラインに接続されたメモリセルは、同時にプログラムできる。
別の実施形態では、ビットラインは偶数のビットラインと奇数のビットラインに分割される。奇数/偶数ビットラインアーキテクチャでは、共通ワードラインに沿った奇数ビットラインに接続されたメモリセルはあるときにプログラムされる。それに対し、共通ワードラインに沿った偶数ビットラインに接続されたメモリセルは別のときにプログラムされる。
図7は、直列に接続され、NANDストリングを形成する4個のメモリセルを示す。4個のセルはそれぞれのNANDストリング内に含まれるとして示されているが、4個より多い、または少ない数(例えば、16、32、または別の数)を使用できる。NANDストリングの1つの端子は(選択ゲートドレインSGDに接続されている)ドレイン選択ゲートを介して対応するビットラインに接続され、別の端子は(選択ゲートソースラインSGSに接続されている)ソース選択ゲートを介してc−ソースに接続される。
図8は、検出モジュール380、及び、共通部390と呼ばれるコア部内で分割された個々の検出ブロック400のブロック図である。一実施形態では、各ビットラインの別個の検出モジュール380と、複数の検出モジュール380の集合の1つの共通部390があってもよい。一例では、検出ブロックは、1つの共通部390と8つの検出モジュール380を有することができる。グループ内の各検出モジュールは、データバス372を介して関連する共通部と通信できる。さらなる詳細としては、米国特許出願第11/026,536号、「Non-Volatile Memory & Method withShared Processing for an Aggregate on Sense Amplifiers」、出願日04年12月29日を参照する。その全体は参照することにより本明細書に組み込まれる。
検出モジュール380は検出回路370を有しており、検出回路370は接続されたビットライン内の伝導電流が所定の閾値レベルより高いか低いかを判定する。検出モジュール380はさらにビットラインラッチ382を有しており、ビットラインラッチ382は接続されたビットライン上の電圧条件を設定するために用いられる。例えば、ビットラインラッチ382内にラッチされる所定の状態によって、接続されたビットラインはプログラム禁止を指定する状態(例えば、Vdd)とされる。
共通部390は、プロセッサ392、1セットのデータラッチ394、及び1セットのデータラッチ394とデータバス320の間を接続するI/Oインタフェース396を有する。プロセッサ392は計算を実行する。例えば、その機能の1つは、検出されたメモリセル内に記憶されているデータを判定し、判定したデータを1セットのデータラッチ内に記憶することである。1セットのデータラッチ394は、読み出し動作中に、プロセッサ392によって判定されたデータビットを記憶するために用いられる。それは、プログラム動作中に、データバス320から取り込まれたデータビットを記憶するためにも用いられる。取り込まれたデータビットは、メモリ内にプログラムする予定の書き込みデータを表す。I/Oインタフェース396は、データラッチ394とデータバス320の間のインタフェースを提供する。
読み出し又は検出中には、システムの動作は状態マシン312の制御下にあり、状態マシン312はアドレスされたセルへの異なる制御ゲート電圧の供給を制御する。メモリによってサポートされた様々なメモリ状態に対応する様々な既定制御ゲート電圧のステップを進む際に、検出モジュール380はこれらの電圧の1つに移動し、バス372を介して検出モジュール380からプロセッサ392に出力が提供される。その時点で、プロセッサ392は、検出モジュールの移動イベントと、状態マシンから入力ライン393を介して印加された制御ゲート電圧についての情報を考慮することによって得られたメモリ状態を決定する。それから、メモリ状態に対するバイナリ符号化を計算し、得られたデータビットをデータラッチ394に記憶する。コア部の別の実施形態では、ビットラインラッチ382は、検出モジュール380の出力をラッチするラッチ、及び、上記のようなビットラインラッチの両方としてダブルデューティを提供する。
当然のことながら、いくつかの実装形態では複数のプロセッサ392を有することができる。一実施形態では、各プロセッサ392は出力ライン(図9には示されていない)を有し、各出力ラインは共にワイヤードOR接続される。いくつかの実施形態では、出力ラインは、ワイヤードORラインに接続する前に反転される。ワイヤードORを受け取る状態マシンはプログラムされる全てのビットがいつ所望のレベルに到達するかを決定できる。したがって、この構成はプログラミング処理がいつ完了するかについてのプログラム検証処理中の素早い決定を可能にする。例えば、各ビットがその所望のレベルに到達すると、そのビット用の論理0がワイヤードORラインに送られる(又はデータ1を反転させる)。全てのビットがデータ0を出力する(又はデータ1を反転させる)と、状態マシンはプログラミング処理を終了することを認識する。各プロセッサは8つの検出モジュールと通信するため、状態マシンはワイヤードORラインを8回読み出す必要があるか、あるいは、関連するビットラインの結果を蓄積するために論理がプロセッサ392に追加され、状態マシンがワイヤードORラインを1回だけ読めばよいようにする。同様に、論理レベルを正しく選ぶことによって、グローバル状態マシンは、第1ビットがその状態をいつ変更するのか、及び、相応してアルゴリズムをいつ変更するのかを検出できる。
プログラム又は検証中に、プログラムされるデータはデータバス320から1セットのデータラッチ394内に記憶される。状態マシンの制御下のプログラム動作は、アドレスされるメモリセルの制御ゲートに印加される一連のプログラミング電圧パルスを有する。各プログラミングパルスに続いて検証が実行され、メモリセルが所望の状態にプログラムされたかどうかを特定する。プロセッサ392は、所望のメモリ状態に対する検証メモリ状態を監視する。その2つが一致する場合、プロセッサ392はビットラインラッチ382を設定し、プログラム禁止を指定する状態にビットラインを設定する。これにより、たとえプログラミングパルスがその制御ゲートに現れても、ビットラインに接続したセルがさらにプログラムされないようにする。他の実施形態では、プロセッサが最初にビットラインラッチ382をロードし、検出回路が検証処理中に禁止値にそれを設定する。
データラッチスタック394は、検出モジュールに対応するデータラッチのスタックを有する。一実施形態では、検出モジュール380毎に3つのデータラッチが存在する。いくつかの実装形態では、(必須ではないが)データラッチはシフトレジスタとして実装され、内部に記憶されたパラレルデータをデータバス320のシリアルデータに変換したり、その逆を行ったりする。好適な実施形態では、m個のメモリセルの読み出し/書き込みブロックに対応する全てのデータラッチを共にリンクさせてブロックシフトレジスタを構成し、シリアル転送によってデータのブロックを入力または出力できるようにする。特に、r個の読み出し/書き込みモジュールのバンクを調整し、そのセットのデータラッチが読み出し/書き込みブロックの全体のシフトレジスタの一部であっても、そのセットのデータラッチのそれぞれが順にデータバスの内外にデータをシフトできるようにする。
不揮発性記憶装置の多様な実施形態の構造及び/または動作についての追加情報は、(1)米国特許出願公開第2004/0057287号、「Non-Volatile Memory And Method WithReduced Source LineBias Errors」、公開日2004年3月25日、(2)米国特許出願公開第2004/0109357号、「Non-Volatile Memory And Method withImproved Sensing」、公開日2004年6月10日、(3)米国特許出願第11/015,199号、「ImprovedMemory Sensing CircuitAnd Method ForLow Voltage Operation」、発明者Raul−AdrianCernea、出願日04年12月16日、(4)米国特許出願第11/099,133号、「Compensating for Coupling DuringRead Operations of Non-Volatile Memory」、発明者Jian Chen、出願日2005年4月5日、及び(5)米国特許出願第11/321,953号、「Reference Sense Amplifier ForNon-Volatile Memory」、発明者Siu Lung Chan及びRaul−Adrian Cernea、出願日2005年12月28日に記載されている。直前に示した特許文書の5つの全ては、その全体を参照することにより本明細書に組み込まれる。
図9は検出モジュール380の一例を示しているが、他の実装形態を用いることもできる。検出モジュール380は、ビットライン分離トランジスタ512、ビットライン引き下げ回路(522及び550)、ビットライン電圧クランプ612、読み出しバス転送ゲート530、センス増幅器600、及び、ビットラインラッチ382を含んでいる。ビットライン分離トランジスタ512の一端は、ビットラインBL及びコンデンサ510に接続されている。ビットライン分離トランジスタ512の他端はビットライン電圧クランプトランジスタ612及びビットライン引き下げトランジスタ522に接続されている。ビットライン分離トランジスタ512のゲートは、BLSと呼ばれる信号を受信する。ビットライン電圧クランプトランジスタ612のゲートは、BLCと呼ばれる信号を受信する。ビットライン電圧クランプトランジスタ612は、ノードSEN2で読み出しバス転送ゲート530に接続される。読み出しバス転送ゲート530は、読み出しバス532に接続される。ビットライン電圧クランプトランジスタ612は、ノードSEN2でセンス増幅器600に接続される。図9の実施形態では、センス増幅器600は、コンデンサCsaだけではなく、トランジスタ613、634、641、642、643、654、654及び658も有している。ビットラインラッチ382は、トランジスタ661、662、663、664、666及び668を有している。
一般に、ワードラインに沿うメモリセルは並列に動作する。従って、対応する数の検出モジュールが並列に動作中になる。一実施形態では、ページ制御部は、並列に操作される検出モジュールに制御及びタイミング信号を提供する。いくつかの実施形態では、ワードラインに沿ったデータは複数のページに分けられ、データは一度に1ページずつ、あるいは、一度に複数のページずつ読み出され、あるいは、プログラムされる。
ビットライン分離トランジスタ512が信号BLSによって起動されると、検出モジュール380はメモリセルのビットライン(例えば、ビットラインBL)に接続可能になる。検出モジュール380はセンス増幅器600を介してメモリセルの伝導電流を検出し、その読み出し結果を検出ノードSEN2においてデジタル電圧レベルとしてラッチし、ゲート530を介して読み出しバス532にそれを出力する。
センス増幅器600は、第2電圧クランプ(トランジスタ612及び634)、事前充電回路(トランジスタ541、642、及び643)、識別又は比較回路(トランジスタ654,656、及び658;及びコンデンサCsa)を有する。一実施形態では、基準電圧が、読み出されるメモリセルの制御ゲートに印加される。基準電圧がメモリセルの閾値電圧より大きい場合は、メモリセルがオンしてそのソースとドレインの間で電流を導通させる。基準電圧がメモリセルの閾値電圧より大きくない場合は、メモリセルはオンにならずにそのソースとドレインの間で電流を導通させない。多くの実装形態では、オン/オフは連続的な遷移であってもよく、メモリセルは異なる制御ゲート電圧に応じて異なる電流を導通できる。メモリセルがオンであり電流を導通させている場合、導通させた電流によってノードSEN上の電圧は低下し、他方の端子がVddであるコンデンサCsaを効率的に充電し、そこにかかる電圧を増大させる。ノードSEN上の電圧が所定の検出期間中に所定のレベルまで放電すると、センス増幅器600はメモリセルが制御ゲート電圧に応じてオンになったことを報告する。
検出モジュール380の1つの特徴は、検出中にビットラインに定電圧の供給を含むことである。これは、ビットライン電圧クランプトランジスタ612によって実現される。ビットライン電圧クランプトランジスタ612は、ビットラインBLと直列のトランジスタ612を備えたダイオードクランプのように動作する。そのゲートは、その閾値電圧VTより高い所望のビットライン電圧VBLと等しい定電圧BLCにバイアスされる。このように、それは検出ノードSENからビットラインを分離し、プログラム検証又は読み出し中の所望のVBL=0.5〜0.7V等のビットラインに定電圧レベルを設定する。一般に、ビットライン電圧レベルは、長い事前充電時間を避けるのに十分な程度に低く、かつ、地動雑音や他の因子を避けるために十分な程度に高いレベルに設定される。
センス増幅器600は検出ノードSENを介して伝導電流を検出し、伝導電流が所定の値より高いか低いかを判定する。センス増幅器はその検出結果をデジタル形式で、信号SEN2として読み出しバス532に出力する。
デジタル制御信号INVは、本質的に読み出し後の信号SEN2の反転させた状態であるが、引き下げ回路を制御するためにも出力される。検出した伝導電流が所定の値より高い場合、INVはHIGHになりSEN2はLOWになる。この結果は、引き下げ回路によって増幅される。引き下げ回路は、制御信号INVによって制御されるnトランジスタ522と、制御信号GRSによって制御される別のnトランジスタ550を有する。GRS信号がLOWのとき、INV信号の状態にかかわらずビットラインBLを浮遊させることができる。プログラミング中、GRS信号はHIGHになってビットラインBLを接地し、INVによって制御される。ビットラインを浮遊させる必要がある場合、GRS信号はLOWになる。検出モジュール、センス増幅器、及びラッチの他の設計も使用できることに留意する。
読み出し/書き込み回路365は、1ページのメモリセルに対して同時に動作する。読み出し/書き込み回路365内の各検出モジュール380は、ビットラインを介して対応するセルに結合される。伝導電流は、検出モジュールからビットラインを通ってメモリセルのドレインに流入し、ソースから流出してソースラインを通ってグランドに流れる。集積回路チップでは、メモリアレイ内のセルのソースは全て、ソースラインの複数の分岐として、メモリチップの外部接地パッド(例えばVssパッド)に接続されている。たとえソースラインの抵抗を低減するためにメタルストラップが使用されていても、有限抵抗Rがメモリセルのソース電極と接地パッドの間に存在する。通常、接地ループ抵抗Rは約50オームである。
ページ全体のメモリが並列で検出されている場合、ソースラインを流れる総電流は全ての伝導電流の合計である。一般的には、各メモリセルは、その電荷蓄積素子にプログラムされた電荷量に依存する伝導電流を有する。メモリセルの既定の制御ゲート電圧の場合、小さい電荷が相対的に高い伝導電流を生じさせる。メモリセルのソース電極と接地パッドの間に有限抵抗が存在するとき、抵抗での電圧低下は、Vdrop=iTOT Rで示される。
例えば、4,256本のビットラインが同時に放電すると、それぞれが1μAの電流であったとすると、ソースライン電圧の低下は、4,000(ライン)×1(μA/ライン)×50(オーム)=0.2ボルトとなる。このソースラインバイアスが、メモリセルの閾値電圧検出時に0.2ボルトの検出誤差を生じさせる。
実施形態の1セットでは、ソースラインバイアスを低減するための方法は、マルチパス検出のための機能及び技法を備えた読み出し/書き込み回路によって達成される。それぞれのパスは、既定の限界電流値より伝導電流が高いメモリセルを特定し、シャットダウンするのに役立つ。従来の単独パス検出では、通常は、各パスでは、既定の限界電流値は漸次的にブレイクポイント電流値に収束する。このようにして、電流が高いセルがシャットダウンされて、その後のパスにおける検出がソースラインバイアスによって受ける影響はより少なくなる。
例えば、マルチパス検出は、2つのパス(j=0から1)で実現できる。第1のパスの後に、伝導電流がブレイクポイントよりも高いメモリセルが特定され、その伝導電流をオフにすることによってそれらのメモリセルが除去される。それらの伝導電流をオフする好ましい方法は、ビットライン上のドレイン電圧を接地することである。第2のパスでは、ソースラインバイアスからの誤差が削減される。3つ以上のパスも考慮される。ソースラインバイアスが誤差を生じさせない実施形態では、検出に1つのパスを使用できる。
図10(A)から図10(K)は読み出し/検証動作中の検出モジュール380の一実施形態を説明するタイミング図を示している。
段階(0):セットアップ
検出モジュール380(図9を参照)は、イネーブル信号BLS(図10(A))によって対応するビットラインに接続される。電圧クランプは、BLC(図10(B))によって起動される。事前充電トランジスタ642は、制御信号FLT(図10(C))を備えた制限電流源として起動される。
段階(1):制御された事前充電
センス増幅器600はリセット信号RST(図10(D))によって初期化され、これによって、トランジスタ658を介して信号INV(図10(H))が接地される。従って、リセット時に、INVはLOWに設定される。同時に、pトランジスタ663は相補信号LATをVdd、つまりHIGH(図10(H))に引き上げる。すなわち、LATはINVの補数である。分離トランジスタ634は信号LATによって制御される。従って、リセット後、分離トランジスタ634は、検出ノードSEN2をセンス増幅器の内部検出ノードSENに接続可能とされる。
事前充電トランジスタ642は、内部検出ノードSENと検出ノードSEN2を介して、ビットラインBLを所定の期間だけ事前充電する。これは、ビットラインを、内部の導通を検出するための最適な電圧にする。事前充電トランジスタ642は、制御信号FLT(「FLOAT」)で制御される。ビットラインは、ビットライン電圧クランプ612によって設定される所望のビットライン電圧に引き上げられる。引き上げの速度は、ビットライン内の伝導電流に依存する。伝導電流が小さいほど、引き上げは速くなる。
既に説明したように、伝導電流が所定の値より高いそれらのメモリセルがオフし、ソースラインバイアスに対する影響が排除されると、ソースラインバイアスに起因する検出誤差が最小限に抑えられる。従って、事前充電トランジスタ642は、2つの機能を果たす。1つは、ビットラインを最適検出電圧に事前充電することである。他方は、ソースラインバイアスへの影響を排除するために、D.C.(直流)検出用の所定値よりも高い伝導電流のメモリセルを特定するのに役立つことである。
D.C.検出は、ビットラインに所定の電流を供給するための電流源のように動作する事前充電回路を提供することにより達成される。pトランジスタ642を制御する信号FLTは、所定の電流が流れるように「プログラム」するものである。一例では、FLT信号は、基準電流が500nAに設定されたカレントミラーから生成される。pトランジスタ642は、カレントミラーのミラーレッグを形成する場合、それに流れる電流も同じく500nAである。
図10(I1)〜図10(I4)は、700nA、400nA、220nA及び40nAの伝導電流のメモリセルにそれぞれ接続されている4本の例示のビットラインに対する電圧を示す。例えば、事前充電回路(トランジスタ642を含む)が500nAを限度とする電流源である場合、500nAを超える伝導電流を有するメモリセルは、それが蓄積できるより速く、ビットライン上の電荷を排出させる。その結果、伝導電流700nAのビットラインの場合、内部検出ノードSENでの電圧または信号は(図10(I1)参照)、0.1ボルト等の0V近くとなる。他方、メモリセルの伝導電流が500nA未満の場合、事前充電回路(トランジスタ642を含む)は、ビットラインを充電し始め、その電圧はクランプビットライン電圧(例えば、電圧クランプ612によって設定される0.5V)に向かって上昇を開始する(図10(I2)から図10(I4)を参照)。それに応じて、内部検出ノードSENは0V近くに留まるか、または、Vdd(図10(G))まで引き上げられる。一般的には、ビットライン電圧は、伝導電流が小さいほど速くクランプビットライン電圧まで充電される。従って、制御された事前充電段階の後にビットライン上の電圧を調べることにより、接続されたメモリセルが所定レベルよりも高い伝導電流を有するか、または、低い伝導電流を有するかどうかを特定できる。
段階(2):D.C.ラッチ、及び、その後のストローブからの高電流セルの除去
制御された事前充電段階の後、初期のD.C.高電流検出段階が開始され、そこではノードSENが識別回路によって検出される。検出は、所定のレベルよりも高い伝導電流を備えたメモリセルを特定する。識別回路は、2つのpトランジスタ654と656を直列で有しており、それらは信号INVを登録するノード用の引き上げとして機能する。pトランジスタ654は、読み出しストローブ信号STBがLOWになることにより起動され、pトランジスタ656は内部検出ノードSENの信号がLOWになることによって起動される。高電流メモリセルは、信号SENを0Vに近くにするか、あるいは、少なくともpトランジスタ656をオフにするほど高くそのビットラインが事前充電されることを不可能とする。例えば、弱い引き上げが500nAの電流に制限される場合、700nAという伝導電流のセルを引き上げることができない(図10(G1))。STBがラッチするためにLOWにストローブする場合、INVがVddに引き上げられる。これにより、ラッチ回路660が、INVがHIGH及びLATがLOWとなるように設定される(図10(H1))。
INVがHIGHであり、LATがLOWであるとき、分離ゲート630は停止にされ、検出ノードSEN2は内部検出ノードSENから遮断される。同時に、ビットラインは引き下げトランジスタ522(図9及び図10(I1))によって接地される。これにより、ビットライン内の伝導電流は実質的にオフにされ、それがソースラインバイアスに寄与しないようにする。
従って、検出モジュール380の1つの好適実装形態において、制限電流源事前充電回路が利用される。これは、高電流が流れるビットラインを特定し、それらをオフにして以後の検出でのソースラインバイアス誤差を最小限に抑えるための追加の、あるいは代替の方法(D.C.検出)となる。
別の実施形態では、事前充電回路は高電流ビットラインを特定するのに役立つように特別に構成されるのではなく、メモリシステムが利用できる最大電流の許容範囲内で可能な限り迅速にビットラインを引き上げて事前充電するように最適化されている。
段階(3):回復/事前充電
前もって引き下げられていないビットライン内の伝導電流を検出する前に、事前充電回路は信号FLTがLOWになることによって起動され、内部検出ノードSEN2をVdd(図10(C)及び図10(I2)から図10(I4))に事前充電し、及び、隣接ビットラインにおける電圧の低下に起因して部分的に低下した可能性のあるビットラインを事前充電する。
段階(4):第1A.C.検出
一実施形態では、A.C.(交流または過渡)検出が、浮遊内部検出ノードSENでの電圧低下を決定することによって実行される。これは、識別回路が、内部検出ノードSENに結合されたコンデンサCsaを利用し、伝導電流がそれを充電している(ノードSENへの電圧を低減する)速度を考慮することによって実現される。集積回路環境においては、コンデンサCsaは、通常はトランジスタで実現されるが、他の実装形態であってもよい。コンデンサCsaは、例えば30fF等の所定の電気容量を有し、これは最適電流の決定のために選択される。通常は100から1000nAの範囲内にある限界電流値は、充電期間の適切な調整によって設定される。
識別回路は、内部検出ノードSEN内の信号SENを検出する。各検出の前に、内部検出ノードSENでの信号は、事前充電トランジスタ642によってVddに引き上げられる。これは、最初に、コンデンサCsa全体の電圧がゼロとなるように設定する。
センス増幅器600が検出する準備が整うと、FLGがHIGH(図10(C))になることによって事前充電回路が停止する。第1の検出期間T1は、ストローブ信号STBのアサーションによって終了される。検出期間中、伝導するメモリセルによって引き起こされる伝導電流がコンデンサを充電する。コンデンサCsaがビットライン内の伝導電流の排出作用により充電されるにつれて、SENの電圧がVddから減少する。図10(G)(曲線G2からG4を参照)は、400nA、220nA、及び40nAの伝導電流を備えたメモリセルにそれぞれ接続された残りの3つの例示のビットラインに対応するSENノードを示しており、減少は伝導電流が高いほど急速である。
段階(5):第1A.C.ラッチ、及び、以後の検出からの高電流セルの除去
第1の所定検出期間の最後に、SENノードはビットライン内の伝導電流(図10Gの曲線G2からG4参照)に応じた所定電圧まで減少する。一例として、この第1段階の限界電流は300nAとなるように設定される。コンデンサCsa、検出期間T1及びpトランジスタ656の閾値電圧は、限界電流(例えば、300nA)より高い伝導電流に対応するSENの信号がトランジスタ656をオンする程度に十分に低下するようにされる。ラッチ信号STBがLOWにストローブすると、出力信号INVがHIGHに引っ張られ、ラッチ382(図10(E)及び図10(H)(曲線H2))によってラッチされる。他方、限界電流より低い伝導電流に対応する信号SENは、トランジスタ656をオンにできない信号SENを生じる。この場合、ラッチ382は変更されないままとなり、その場合LATはHIGH(図10(H3)及び図10(H4))に留まる。従って、識別回路が、検出期間によって設定される基準電流を基準にして、ビットライン内の伝導電流の大きさを実質的に判定することが分かる。
センス増幅器600は第2の電圧クランプトランジスタ612を有しており、その目的は、トランジスタ612のドレインの電圧を十分に高く維持し、ビットライン電圧クランプ610が適切に機能できるようにすることである。前述したように、ビットライン電圧クランプ610は、ビットライン電圧を、例えば0.5V等の所定値VBLに固定する。これにより、トランジスタ612のゲート電圧をVBL+VT(ここで、VTはトランジスタ612の閾値電圧である)に設定し、検出ノード501に接続されるドレインをソースより高く、つまり信号SEN2>VBLとすることが必要になる。特に、電圧クランプの構成を考慮すると、SEN2はXX0−VTまたはBLX−VTの小さい方以下であり、SENはそれ以上である必要がある。検出中、分離ゲート630は通過モードである。しかしながら、検出中、内部検出ノードSENでの信号は、Vddから低下した電圧を有する。第2の電圧クランプは、SENが、XX0−VTまたはBLX−VTのどちらか低い方より低下しないようにする。これは、信号BLXによって制御されるnトランジスタ612によって達成され、この場合BLX?VBL+VTである。従って、電圧クランプの動作により、ビットライン電圧VBLは検出中に一定(例えば〜0.5V)に保たれる。
電流決定の出力は、ラッチ回路382によってラッチされる。ラッチ回路は、トランジスタ666と668と共にトランジスタ661、662、663、及び664による設定/リセットラッチとして構成される。pトランジスタ666は信号RST(リセット)によって制御され、nトランジスタ668は信号STBによって制御される。低電圧動作に適した上記のセンス増幅器の変形態様は、発明者Raul-Adrian Cerneaの米国特許出願第11/015,199号、発明の名称「ImprovedMemory Sensing CircuitAnd Method ForLow Voltage Operation」、出願日04年12月16日に見られ、全体として参照によって本明細書に組み込まれる。
一般に、多経路検出モジュール380の対応する数によって操作される1ページのメモリセルが存在する。第1限界電流レベルより高い伝導電流を備えたそれらのメモリセルに対して、LAT信号はLOWにラッチされる(INVはHIGHにラッチされる)。これはさらにビットライン引き下げ回路520を起動し、対応するビットラインを接地し、それによって電流をオフにする。
段階(6):回復/事前充電
予め引き下げられていないビットライン内の伝導電流の次の検出の前に、事前充電回路が信号FLTによって起動され、内部検出ノード631をVddまで事前充電する(図10C及び図10(I3)から10(I4))。
段階(7):第2検出
センス増幅器600が検出しようとすると、事前充電回路はFLTをHIGHにすることによって停止される(図10(C))。第2検出期間T2は、ストローブ信号STBのアサートによって設定される。検出期間中、伝導電流は(もしあれば)コンデンサを充電する。コンデンサCsaがビットライン36内の伝導電流の排出動作を介して充電しているときに、ノードSENの信号はVddから低下する。
前の例に従って、300nAより高い伝導電流を備えたメモリセルは、より早い段階で既に識別され遮断されている。図14(G)(曲線G3とG4)は、220nAと40nAの伝導電流を備えたメモリセルに各々接続した2つの例示のビットラインに対応するSEN信号を各々示している。
段階(8):読み出し用の第2ラッチ
第2の所定検出期間T2の最後で、SENはビットライン内の伝導電流に依存していくらかの電圧まで低下する(図10(G)(曲線G3とG4))。一例として、第2段階の限界電流は、100nAとなるように設定される。この場合、220nAの伝導電流を備えたメモリセルは、そのINVをHIGHにラッチし(図10(H))、次にビットラインを接地する(図10(I3))。一方、40nAの伝導電流を備えたメモリセルは、ラッチの(LATをHIGHに事前設定した)状態に影響を与えない。
段階(9):バスへの読み出し
最後に、読み出し段階において、転送ゲート530における制御信号NCOは、ラッチした信号SEN2を読み出しバス532に読み出し可能にする(図10(J)と10(K))。
図10(I1)〜10(I4)から分かるように、ビットライン電圧は各検出期間中においては一定に留まる。従って、これまでの議論からビットライン間の容量結合は除去される。
上記の検出モジュール380は3つの経路を用いて検出を実行する一実施形態であり、最初の2つの経路は高電流のメモリセルを識別し遮断するために実装されている。ソースラインバイアスへの高電流の寄与を除去することで、最後の経路はより低い範囲の伝導電流を備えたセルをより正確に検出できる。
他の実施形態では、検出動作はDC及びAC経路の異なる組み合わせを用いて実装され、一部は2つ以上のAC経路だけ、又は、1つの経路だけを用いる。異なる経路に対して用いられる限界電流値は毎回同じであってもよいし、最後の経路に用いられる限界電流値に向かって徐々に収束していてもよい。さらに、前述した検出実施形態は適切な検出モジュールの一例にすぎない。本明細書に説明する本発明を実装するために他の設計及び技術を使用することもできる。本明細書に説明する本発明には、1つの特定の検出モジュールが必要とされるわけではない。
図11は、不揮発性メモリをプログラムする方法の一実施形態を説明するフローチャートである。一実装形態では、メモリセルがプログラミングの前に(ブロック単位で、または他の単位で)消去される。一実施形態では、メモリセルは、十分な期間の間にpウェルを消去電圧(例えば20ボルト)に上昇させ、ソースラインとビットラインがフローティングしている間に選択したブロックのワードラインを接地することによって消去される。容量結合のため、非選択ワードライン、ビットライン、選択ライン、及び、cソースも消去電圧のかなりの部分まで上昇される。従って、選択したメモリセルのトンネル酸化物層には強力な電場が印加され、選択したメモリセルのデータは、通常は、フローティングゲートの電子がFowler−Nordheimトンネリングによって基板側に放出されるにつれて消去される。電子がフローティングゲートからpウェル領域へ移動するにつれて、選択されたセルの閾値は低くなる。消去は、メモリアレイ、分割ブロック、別のセルのユニット全体で実行され得る。
図11のステップ700では、「データロード」コマンドが制御部によって発行され、制御回路310で受け取られる。ステップ702では、ページアドレスを指定するアドレスデータを制御部又はホストから復号部314に入力する。ステップ704では、アドレスされたページのプログラムデータの1ページをプログラミングのためにデータバッファに入力する。そのデータは、適切なセットのラッチ内にラッチされる。ステップ706では、「プログラム」コマンドが、制御部によって状態マシン312に発行される。
「プログラム」コマンドによってトリガされ、ステップ704でラッチしたデータは、適切なワードラインに印加した図12のステップパルスを用いて、状態マシン312によって制御された選択メモリセル内にプログラムされる。ステップ708で、プログラム電圧Vpgmを開始パルス(例えば、12Vまたは他の値)に初期化し、状態マシン312によって維持されるプログラムカウンタPCは0に初期化される。ステップ710では、第1Vpgmパルスを選択ワードラインに印加する。対応するメモリセルをプログラムすべきことを示す論理「0」が特定のデータラッチ内に記憶された場合、対応するビットラインを接地する。一方、対応するメモリセルがその電流データ状態に留まるべきことを示す論理「1」が特定のラッチ内に記憶された場合、プログラミングを禁止するために対応するビットラインをVddに接続する。
ステップ712では、選択したメモリセルの状態が検証され、それらがその目標閾値電圧に到達したか否か判断が判断される。選択したセルの閾値電圧が目標レベルに到達していることが検出されると、対応するデータラッチに記憶されるデータは論理「1」に変更される。閾値電圧が適切なレベルに到達していないことが検出された場合、対応するデータラッチ内に記憶したデータは変更されない。このように、その対応するデータラッチ内に記憶した論理「1」を有するビットラインはプログラムする必要はない。全てのデータラッチが論理「1」を記憶しているときに、状態マシンは(上記のワイヤードOR型機構によって)全ての選択セルがプログラムされたことを認識する。ステップ714では、全てのデータラッチが論理「1」を記憶しているかどうかを確認する。そうであれば、全ての選択メモリセルがプログラムされて検証されたので、プログラミング処理を完了し成功とする。ステップ716では、「成功」の状態を報告する。
ステップ714において、全てのデータラッチが論理「1」を記憶しているとは限らないと判定された場合、プログラミング処理は継続する。ステップ718では、プログラム限界値PCMAXに対してプログラムカウンタPCを確認する。プログラム限界値の一例は20であるが、他の値を用いることもできる。プログラムカウンタPCが20以上であれば、プログラム処理は失敗し、ステップ720で「不合格」の状態を報告する。いくつかの実施形態では、ループの最大数に達した後、システムは、所定量未満のセルがプログラミングを終了していないかどうかをチェックする。その所定数未満がプログラムを終了していない場合、プログラミング処理は依然として合格と見なされる。プログラムカウンタPCが20未満である場合には、Vpgmレベルはステップサイズで増加し、ステップ722でプログラムカウンタPCが増分される。ステップ722の後、プロセスはステップ710に一巡して戻り、次のVpgmパルスを印加する。
図12はプログラミングのために選択されたワードラインに適用される一連のプログラムパルスを示す。プログラムパルスの間には検証パルス(不図示)のセットがある。いくつかの実施形態では、データがプログラミングされる状態ごとに検証パルスがある。他の実施形態では、さらに多くのまたはさらに少ない検証パルスがあり得る。
一実施形態では、データは共通ワードラインに沿ってメモリセルにプログラムされる。従って、図12のプログラムパルスを適用する前に、ワードラインの内の1つがプログラミングに選択される。このワードラインが選択ワードラインと呼ばれる。ブロックの残りのワードラインは非選択ワードラインと呼ばれる。
成功した(検証を行った)プログラム処理の最後では、メモリセルの閾値電圧はプログラムしたメモリセルの閾値電圧の1つ以上の分布内、又は、必要に応じて消去したメモリセルの閾値電圧分布内にあるべきである。図13は、各メモリセルが2ビットのデータを記憶している場合のメモリセルアレイの閾値電圧分布を示している。図13は、消去したメモリセル用の第1の閾値電圧分布Eを示している。プログラムしたメモリセルの3つの閾値電圧分布A、B及びCも示している。一実施形態では、分布E内の閾値電圧は負であり、分布A、B及びC内の閾値電圧は正である。
図13の異なる閾値電圧範囲の各々は、データビットのセットの所定の値に対応する。メモリセルにプログラムされたデータとセルの閾値電圧レベルの間の具体的な関係は、セルに対して採用されるデータ符号化方式に依存する。例えば、米国特許第6,222,762号及び米国特許出願公開公報第2004/0255090号、「Tracking Cells For A Memory System」、出願日2003年6月13日(両方とも全体として参照によって本明細書に組み込まれる)は、マルチ状態フラッシュメモリセルの様々なデータ符号化方式を説明している。一実施形態では、データ値はグレイ符号割り当てを用いて閾値電圧範囲に割り当てられ、フローティングゲートの閾値電圧がその隣接する物理状態に誤ってシフトしても、1ビットだけが影響を受けるようにする。一例では、「11」を閾値電圧範囲E(状態E)、「10」を閾値電圧範囲A(状態A)、「00」を閾値電圧範囲B(状態B)、「01」を閾値電圧範囲C(状態C)に割り当てる。しかし、他の実施形態ではグレイ符号は用いられない。図11は4つの状態を示しているが、本発明は4つの状態より多い、又は、少ない状態を含む他のマルチ状態構造と共に用いることもできる。例えば、いくつかの不揮発性記憶素子は、8個(7個のプログラムされた、及び1個の消去された)以上の状態を活用できる。
図13はさらに、メモリセルからデータを読み出すための3つの読み出し基準電圧Vra、Vrb及びVrcを示している。所定のメモリセルの閾値電圧がVra、Vrb及びVrcより高いか、低いかをテストすることによって、システムはメモリセルがどの状態にあるかを特定できる。
図13は、3つの検証基準電圧Vva、Vvb及びVvcも示している。メモリセルを状態Aにプログラムする場合、システムは、それらのメモリセルがVva以上の閾値電圧を有するかどうかをテストする。メモリセルを状態Bにプログラムする場合、システムは、メモリセルがVvb以上の閾値電圧を有するかどうかをテストする。メモリセルを状態Cにプログラムする場合、システムはメモリセルがVvc以上の閾値電圧を有するかどうかを判定する。
完全シーケンスプログラミングとして知られる一実施形態では、メモリセルは、消去状態Eから、プログラム状態A、BまたはCのどれかに直接的にプログラムできる。例えば、集団内の全てのメモリセルが消去状態Eになるように、プログラムされるメモリセルの集団が最初に消去されてよい。いくつかのメモリセルは状態Eから状態Aにプログラムされるが、他のメモリセルは状態Eから状態Bに、及び/または、状態Eから状態Cにプログラムされる。
図14は、2つの異なるページ(下側ページと上側ページ)に対してデータを記憶するマルチ状態メモリセルをプログラムする二経路技術の一例を示している。状態E(11)、状態A(10)、状態B(00)及び状態C(01)の4つの状態が示されている。状態Eの場合、両方のページが「1」を記憶する。状態Aの場合、下側ページが「0」を記憶し、上側ページが「1」を記憶する。状態Bの場合、両方のページが「0」を記憶する。状態Cの場合、下側ページが「1」を記憶し、上側ページが「0」を記憶する。なお、各状態に対して特定のビットパターンが割り当てられているが、異なるビットパターンを割り当てることも可能であることに注意する。
第1プログラミング経路では、セルの閾値電圧レベルは下側の論理ページにプログラムされるビットに従って設定される。そのビットが論理「1」であれば、以前に消去された結果として適切な状態にあるので閾値電圧は変更されない。しかし、プログラムされるビットが論理「0」であれば、矢印730で示したように、セルの閾レベルは状態Aになるように増大される。
第2プログラミング経路では、セルの閾値電圧レベルは上側論理ページ内にプログラムされるビットに従って設定される。上側論理ページビットが論理「1」を記憶する場合、セルは下側ページビットのプログラミングに依存する状態E又はAの一方であり、どちらも上側ページビットは「1」を保持するのでプログラミングは生じない。上側ページビットが論理「0」となる場合、閾値電圧はシフトされる。第1経路によってセルが消去状態Eに留まっていれば第2段階でセルをプログラムし、矢印734で示したように閾値電圧が状態C内になるように増大させる。第1プログラミング経路の結果としてセルが状態A内にプログラムされれば、メモリセルはさらに第2経路でプログラムされ、矢印732で示したように閾値電圧が状態B内になるように増大させる。第2経路の結果は、下側ページ用のデータを変更することなく、上側ページの論理「0」を記憶するように指定した状態にセルをプログラムすることである。
一実施形態では、ワードラインを充填するのに十分なデータを書き込まれた場合、システムは全シーケンス書き込みを実行するように設定される。十分ではないデータが書き込まれた場合、プログラミング処理は受け取ったデータを用いて下側ページプログラミングを実行できる。次のデータを受け取ったとき、システムは上側ページをプログラムする。さらに別の実施形態では、システムは下側ページをプログラムするモードで書き込みを開始し、ワードラインのメモリセルの全体(又は大部分)を充填するために次の十分なデータを受け取った場合、全シーケンスプログラミングモードに変換する。このような実施形態のさらなる詳細は、発明者Sergy Anatolievich Gorobets及びYan Liの米国特許出願第11/013,125号、発明の名称「PipelinedProgramming of Non-Volatile Memories Using Early Data」、出願日2004年12月14日で開示されている。その全体は参照することによって本明細書に組み込まれる。
図15は、不揮発性メモリセルからデータを読み出す一実施形態を説明するフローチャートである。検出モジュールに関する前述の説明は、どのようにしてデータが特定のビットラインから読み出されるのかを説明している。図15は、システムレベルでの読み出し処理を提供する。ステップ800では、データ読み出し要求がホスト、制御部、または別の構成要素から受信される。前述したように、不揮発性メモリセルのフローティングゲート(または他の電荷蓄積素子)に蓄積された見かけの電荷のシフトは、隣接するフローティングゲート(または他の隣接する電荷蓄積素子)に蓄積された電荷による電界の結合により生じる。この結合を補償するために、既定のメモリセルの読み出し処理は、隣接メモリセルのプログラム状態を考慮して行われる。ステップ802は、隣接するフローティングゲート間の結合にこのような補償をするか否かの判定を含んでいる。いくつかの実施形態では、ステップ802は、どの程度の補償を使用するのかについての判定も含んでいる。ステップ804では、データ読み出し要求に応じて、読み出し処理が特定のページ、または、他の単位のデータに対して実行される。ステップ804の読み出し処理は、ステップ802に基づいて隣接するフローティングゲートとの間の結合に対する適切な補償を行うことを含むことができる。一実施形態では、ステップ804で読み出されるメモリセルは、共通のワードラインに接続されている(ビットラインは異なる)。
一実施形態では、ページのデータがプログラムされると、システムは、エラー訂正符号(ECC)を作成し、それらのECCをデータのページとともに書き込む。ECC技術は、技術では周知である。使用されるECC処理は、既知の任意の適切なECC処理を含む場合がある。ページ(または他のデータ単位)からデータを読み出すときに、ECCはデータにエラーがあるかどうかを判定するために使用される(ステップ806)。ECC処理は制御部、状態マシン、あるいはシステム内の他の場所で実行できる。データにエラーがない場合、データはステップ808でユーザに報告される。ステップ806でエラーが検出されると、エラーが訂正可能であるかどうかが判定される(ステップ810)。種々のECC方法は、データのセット内の所定数のエラーを補正する能力を有している。ECC処理がデータを訂正できる場合には、ステップ812でECC処理によってデータが補正され、ステップ814で補正されたデータがユーザに報告される。データがECC処理(ステップ810)によって訂正可能ではない場合、エラーはステップ820でユーザに報告される。いくつかの実施形態では、ステップ820はデータの全てまたはサブセットを報告することを含むこともできる。データのサブセットがエラーを有さない場合、そのサブセットを報告することができる。
図16は、隣接するフローティングゲート間の結合の補償を潜在的に使用する不揮発性メモリセルからデータを読み出すための別の実施形態を説明するフローチャートである。図15の処理と図16の処理の1つの相違点は、図16の処理は読み出し処理中にエラーがある場合にだけ補償を使用するという点である。
図16のステップ840では、データ読み出し要求が、ホスト、制御部、または、別の構成要素から受信される。ステップ842では、データ読み出し要求に応じて、読み出し処理が特定ページ、または、他の単位のデータに対して実行される。ここでは、ステップ842の読み出し処理は、結合に対する補償を含んでいない。ステップ844は、データに任意のエラーがあるかどうかの判定を含んでいる。データにエラーがない場合、データはステップ846でユーザに報告される。エラーがステップ844で検出されると、ステップ850で、エラーが訂正可能であるかどうかが判定される。種々のECC方法は、データのセットの中の所定数のエラーを訂正する能力を有する。ECC処理がデータを訂正できる場合には、ステップ852でそのデータの訂正にECC処理が使用され、ステップ854で訂正されたデータがユーザに報告される。データがECC処理(ステップ850)によって訂正できない場合には、システムは、隣接するフローティングゲートの間の結合の補償とともに読み出し処理を実行することによって、データを回復しようと試みる。従って、ステップ860で、システムは、隣接するフローティングゲート間の結合に対処するために補償を使用するかどうか、及び/または、どの程度の補償を使用するかを決定する。ステップ862では、データ読み出し要求に応えて、読み出し処理が特定のページ、または、他の単位のデータに対して実行される。ステップ862の読み出し処理は、ステップ860に基づいて、隣接するフローティングゲート間の結合に対する適切な補償を使用することによってデータの回復を試みる。
対象のフローティングゲートに隣接するフローティングゲートは、同じビットライン上にあるが別のワードライン上にある隣接フローティングゲート、同じワードライン上にあるが別のビットライン上にある隣接フローティングゲート、あるいは、隣接するビットライン上かつ隣接するワードライン上にあるために対象フローティングゲートの対角方向にあるフローティングゲートを含んでいる。一実施形態では、説明した結合に対する補償は、これらの前述したセットの隣接フローティングゲートの何れにも適用できる。いくつかの実施形態では、説明した結合に対する補償は、同じワードライン上であるが、別のビットライン上の隣接フローティングゲートに適用する。例えば、メモリセル362は、その見かけ閾値電圧がメモリセル364と366(図7を参照すること)からの結合のために変更された可能性がある。同じビットライン上であるが別のワードライン上の隣接フローティングゲートに起因する結合に対する補償は、発明者Yan Li及びJian Chenの米国特許出願第11/099,049号、「ReadOperation For Non-Volatile Storage That Includes Compensationfor Coupling」、出願日2005年4月5日にさらに詳しく説明されている。その全体は参照により本明細書に組み込まれる。いくつかの実施形態は、同じワードライン上であるが別のビットライン上の隣接フローティングゲート間、及び同じビットライン上であるが別のワードライン上の隣接フローティングゲート間の結合に補償を提供する。
隣接するフローティングゲート間の結合の量は、隣接フローティングゲートがプログラムされるタイミングに依存する。通常は、同時にプログラムされる2つの隣接フローティングゲートはほとんど、あるいは、まったく結合を有さない。結合が最大量となるのは、一方のフローティングゲートがプログラムされておらず(例えば、消去状態Eに留まっており)、他方のフローティングゲートがその後に最大のプログラム状態(例えば状態Cにプログラムされる場合――図13を参照)にプログラムされる2つの隣接フローティングゲート間で発生する可能性が高い。但し、状態Eと状態Aの間には大きなマージンがあるため、結合が生じても、状態Eのデータの読み出しでエラーが生じる可能性は低い。結合が次に最大量となるのは、状態Aにプログラムされた第1のフローティングゲートと、その後に状態Cにプログラムされたフローティングゲートの間である。従って、一実施形態では、メモリセルが第1プログラム状態(例えば状態A)にあり、その隣が状態のセット(4つの状態、8つの状態、または別の数の状態)のうちの最大のプログラム状態(例えば状態C)にあるときにのみ、結合に対する補償が使用される。他の実施形態では、結合に対する補償は、隣接メモリセルが状態Bまたは別の状態等の異なる状態にあるときに使用することができる。4つより多いまたは4つ未満の状態を使用するいくつかの実施形態では、結合に対する補償は、隣接メモリセルが結合を生じさせることが判明している状態にあるときに使用できる。同様に、結合に対する補償は、特定の実装形態に応じて適宜に、対象のメモリセルが状態A以外の状態にあるときに使用することができる。
隣接メモリセルの状態が何らかの技術を使用して検出または取得できる場合、検討中のメモリセルに必要とされる訂正の量は、次の読み出し動作で決定し、調整することができる。特定のメモリセルの状態を知る1つの方法は、読み出し動作を通すことである。しかし、一実施形態では、隣接ビットラインについてセンス増幅器の通信はない。読み出し動作の後も、検討中のメモリセルはその隣接メモリセルの状態を知らない。
図17は、メモリセルが状態Aにあるのか、及び、その隣の1つまたは複数のセルが状態Cにあるのかどうかに基づいて、補償を使用する必要があるか否か、及び、どの程度の補償を使用する必要があるかを決定するための一実施形態を説明するフローチャートである。少なくとも2つのシナリオがある。1つのシナリオでは、読み出されている特定のメモリセルが状態Aにあり、その隣接セルの1つが状態Cにある。第2のシナリオでは、読み出されている特定のメモリセルが状態Aにあり、その隣接セルの内の2つ(異なるビットライン)が状態Cにある。図17の処理は、特定のメモリセル(または特定のビットライン)に対する全ての隣接セルが状態Cにあるのか(または7つまたは8つ以上の状態のセットのうちの最高プログラム状態にあるのか)を判定する。この処理は、図15のステップ802及び図16のステップ860を実現するために使用できる。
図17のステップ900では、選択されたワードラインに接続されているメモリセルの全て(またはサブセット)が読み出されて、メモリセルが状態Cにあるのか否かが判定される。これは、読み出し比較点Vrcを使用することにより実現される。Vrcより大きい閾値電圧を有するそれらのメモリセルは、状態Cにあると見なされる。Vrc未満の閾値電圧を有するそれらのメモリセルは状態Cにない。Vrcを使用する読み出し動作の最後に、各センス増幅器が、その対応するメモリセルが状態Cにあるかどうかをラッチする。克服しなければならない1つの障害は、いくつかの実装形態においては、センス増幅器が隣接するセンス増幅器と通信できないという点である。従って、図7を見ると、ビットラインBL2のセンス増幅器は、センス増幅器ビットラインBL1またはビットラインBL3と通信できない。従って、BL2のセンス増幅器は、BL1及びBL3上の隣接メモリセルが状態Cにあるかどうかを知らない。ステップ902から910は、隣接メモリセルが状態Cにあるかどうかを示すために実行される。ステップ902では、ステップ900で状態Cにあると検出されたメモリセルに接続されているビットラインの全てが、所定の電圧に充電される。1つの例では、状態Cのメモリセルのあるビットラインは0.5ボルトに充電される。図9を見ると、これはトランジスタ612のゲートに0.5ボルト+Vth(トランジスタ612のVth)を印加し、RST信号を低く切り換えることによってINV=0を生じさせることで達成できる。他のセンス増幅器はINV=1でセットアップされていたため、それらのビットラインは充電されない。GRS=0の場合、ビットライン上にアクティブな引き下げはない。Cデータのあるビットラインがチャージアップすると、隣接ビットラインは、ビットライン間結合によってそれらのビットラインに結合される。一実装形態では、この結合は総ビットライン電気容量の40%となる可能性がある。両方の隣接セルがCデータを有するビットラインの場合、容量結合は総ビットライン電気容量の最大80%となるであろう。例えば、1つの隣接セルがCデータであるビットラインの場合、結合により約0.15ボルト昇圧される。2つの隣接セルがCデータを有するビットラインの場合、結合により約0.3ボルト昇圧される。
ステップ904では、2つの隣接セルがCデータを有するビットラインが特定される。一実施形態では、ステップ904は、BLCを0.2+Vth(トランジスタ612のVth)まで引き下げることによって達成される。これにより、2つのCの隣接セルのあるビットラインが、そのトランジスタ612をオフさせる。これは、トランジスタ612のドレイン側がVddであり、ソース側が0.3ボルトであるためである。次に、SENノードは放電されず、センス増幅器はLAT=1をラッチする。1つのCの隣接セルのあるビットライン、あるいは、Cの隣接セルがない他のビットラインは、トランジスタ612を導通させる。ビットラインはコンデンサCsaよりもはるかに高い電気容量を有するため、SENノードは放電し、センス増幅器はLAT=0をラッチする。SENノードが充電されたのか、放電されたのかの結果は、適切なデータラッチ394に記憶される(ステップ906)。ステップ906の後で、センス増幅器及びビットラインはリセットされ、状態Cのメモリセルに接続されているそれらのビットラインは、ステップ902に同様に、再びステップ908で充電される。ステップ910では、1つまたは複数のCの隣接セルに結合されているビットラインが、BLC=0.15ボルト+Vth(トランジスタ612のVth)を印加することにより検出される。システムは、状態Cのメモリセルを有する1つまたは複数の隣接セルのあるそれらのビットラインを検出する。ステップ912では、結果がラッチ394の1つに記憶される。ステップ904で2つの隣接セルが状態Cにあるとの結果、及び、ステップ908で1つまたは複数の隣接セルが状態Cにあるとの結果が記憶されたそれらのビットラインの場合、それらのビットラインが状態Cにある2つまたは3つ以上の隣接セルを有すると考えられる。ステップ906で2つまたは3つ以上の隣接セルが状態Cにあるという結果を記憶せずに、ステップ910で1つまたは複数の隣接セルが状態Cにあるという結果を記憶したそれらのビットラインの場合、それらのビットラインが状態Cにある1つの隣接セルを有すると考えられる。
図18は、図17の処理で実行される動作のいくつかをグラフを使って描くタイミング図である。タイミング図は、ステップ902、904及び906に対応する3つの期間に分けられている。ステップ902の間は、信号BLCは、トランジスタ612の閾値電圧が加えられた0.5ボルトに上げられる。これは、選択されたワードラインに接続されているメモリセルに結合されており、かつ、状態Cにある全てのビットラインに対して行われる。これらのビットラインが0.5ボルトに引き上げられることが示されている。次に、2つのCの隣接セルがあるビットラインが、0.3ボルトにひき上げられて、2つの対応する隣接ビットラインに結合される。Cの隣接セルがないビットラインは0ボルトのままとなる。このタイムフレームでは、信号GRSは低い。次にBLCは0ボルトまで引き下げられ、次にトランジスタ612の閾値電圧が加えられた0.2ボルトに上げられ、その時点でビットラインが検出される(ステップ904)。2つの状態Cの隣接セルに隣接するそれらのビットラインはSENノードを放出しない(ライン914参照)。2つの状態Cの隣接セルを有さないビットラインはSENノードを放出する(ライン916参照)。適切なビットラインラッチ382でデータをラッチした後、データはデータラッチ394に転送される。
図19は、1つまたは複数のCの隣接セルを有するメモリセルへの補償を有する読み出し処理の一実施形態を説明する。図19の処理は、図15のステップ804、及び、図16のステップ862の一実施形態のさらなる詳細を提供する。さらに、ステップ940から950及び964から972は、図16のステップ842を実現するために使用できる。図19の処理は、1つのワードライン及び全ビットライン、あるいは、ビットラインのサブセットを有する1ページのデータに対して実行できる。図19のステップ940では、読み出し基準電圧Vraが、ページに関連する適切なワードラインに印加される。これにより、読み出し基準電圧Vraが、そのワードラインに接続されているメモリセルの制御ゲートに印加される。ステップ842では、ページに関連するビットラインが検出されて、それらの制御ゲートに対するVraの印加に基づいて、アドレス指定されたメモリセルが導通するか、あるいは導通しないかが判定される。導通するビットラインは、メモリセルがオンになったことを示す。従って、それらのメモリセルの閾値電圧はVra未満(例えば状態E)である。ステップ944では、ビットラインに対する検出の結果が、それらのビットラインに対する適切なラッチに記憶される。
ステップ946では、読み出し基準電圧Vrbが読み出し中のページに関連するワードラインに印加される。ステップ948では、ビットラインが前述したように検出される。ステップ950では、結果が、状態Cにある隣接メモリセルを有さないページ内のメモリセルに接続されているビットラインに対する適切なラッチに記憶される。
この実施形態は、状態Cにあるメモリセルに隣接する状態Aのデータの訂正を試みる。引き起こされる可能性のあるエラーは、メモリセルが、実際には状態Aにあるときに、増加されて、状態Bにあるかのように見える見かけの閾値電圧を有するという点である。ステップ952では、第1のオフセットが加えられたVrbが読み出し中のページに関連するワードラインに印加される。ステップ954では、ビットラインが前述したように検出される。ステップ956では、結果が、状態Cにある1つの隣接メモリセルを有するページ内のメモリセルに接続されているビットラインに対する適切なラッチに記憶される。ステップ958では、第2のオフセットが加えられたVrbが読み出し中のページに関連するワードラインに印加される。ステップ960では、ビットラインが前述したように検出される。ステップ962では、結果が、状態Cにある2つの隣接メモリセルを有するページ内のメモリセルに接続されているビットラインに対する適切なラッチに記憶される。
ステップ964では、読み出し基準電圧Vrcが、読み出し中のページと関連するワードラインに印加される。ステップ966では、ビットラインが前述したように検出される。ステップ968では、結果が全てのビットラインに対して適切なラッチに記憶される。ステップ970では、ページ(または他のデータの単位)内の各メモリセルのデータ値が判定される。例えば、メモリセルがVraで導通する場合には、メモリセルは状態Eにある。メモリセルが、Vrb(または第1のオフセットが加えられたVrbまたは第2のオフセットが加えられたVrbt)及びVrcで導通し、Vraで導通しない場合は、メモリセルは状態Aにある。メモリセルがVrcで導通するが、VraまたはVrb(あるいは何れかのオフセットが加えられたVrb)で導通しない場合には、メモリセルは状態Bにある。メモリセルがVra、Vrb(または何れかのオフセットが加えられたVrb)またはVrcで導通しない場合は、メモリセルは状態Cにある。一実施形態では、データ値がプロセッサ392によって判定される。ステップ972では、プロセッサ392は各ビットラインに対する適切なラッチに判定されたデータ値を記憶する。他の実施形態では、さまざまなレベル(Vra、Vrb及びVrc)の検出をさまざまな順序で実施しても良い。
第1オフセット及び第2オフセットの量は、特定の実装形態に依存している。ここで説明する発明は、第1オフセットまたは第2オフセットの特定の値に依存しない。一実施形態では、第1オフセットは0.1ボルトであり、第2オフセットは0.2ボルトである。しかしながら、他の値が適宜に使用されてもよい。
読み出し処理の間に異なるビットライン上の隣接メモリセルの間の容量結合を訂正する代わりに、プログラミング時に補償を実行することもできる。システムはプログラミング時にデータを知るため、メモリセルが状態Cにプログラムされるように割り当てられた1つまたは複数の隣接セル有する場合に、システムはわずかに低い閾値電圧となるように意図的にそのメモリセルを状態Aにプログラムすることができる。このようにして、その状態Aのメモリセルは、状態Cに割り当てられた隣接セルがプログラミングを終了した後に正しく読み出される。
プログラミング処理を不当に減速することなく緊密な閾値電圧分布を達成するための1つの解決策は、2段階のプログラミング処理を使用することである。第1の段階、つまり粗いプログラミング段階では、より高速に閾値電圧を上昇させ、緊密な閾値電圧分布を達成するために払う注意は相対的に少ない。第2の段階、つまり密なプログラミング段階は、より緊密な閾値電圧分布を達成するとともに目標閾値電圧に到達するためにより低速で閾値電圧を上昇させることを試みる。粗/密プログラミング方法論の一例は、米国特許第6,888,758号に記載されている。その全体は参照により本明細書に組み込まれる。
粗/密プログラミング方法の一例では、処理は2つの検証レベル、つまり目標検証レベル(密検証レベルとも呼ばれる)と粗検証レベルを使用する。処理は、プログラミング処理の粗段階を実行することによって開始する。メモリセルの閾値電圧が、目標検証レベル以下である粗検証レベルに到達すると、メモリセルは、0ボルトより大きく、禁止電圧未満の値にビットライン電圧を上昇させることによって密プログラミング段階に入る。粗段階の間は、ビットライン電圧は約0ボルトである。メモリセルがプログラムされるのを阻止するために、ビットライン電圧は禁止電圧(例えばVdd)まで上昇する。密プログラミング段階の間は、ビットライン電圧が0ボルトから中間値に上げられる影響のために、プログラミングは粗プログラミング段階と比較して遅くなる。従って、プログラムステップ毎の閾値電圧の変化は、粗プログラミング段階の間小さくなる傾向がある。メモリセルは、メモリセルの閾値電圧が目標閾値電圧に達するまで密プログラミング段階に維持される。メモリセルの閾値電圧が目標閾値電圧に達すると、ビットライン電圧はVdd(または他の禁止電圧)に上げられ、メモリセルの追加のプログラミングが阻止される。
異なるビットライン上で隣接するメモリセルの間の結合の訂正を含むプログラミングのために提案される方法は、前述した粗/密プログラミング処理を使用する。ただし、3つの検証レベルが2つの代わりに使用される。例えば、図20は、状態Aのための閾値電圧分布980を示す。検証のために使用される目標電圧はVvaである。前述した粗/密プログラミングのための従来技術による方法は、Vcaとラベルされる粗い検証レベルを有する。提案された方式は、後述されるように使用される第3の検証レベルViaを追加する。要約すると、粗プログラミング段階の間に、メモリセルは、閾値電圧がVcaに到達するまでプログラムされる。状態Aにプログラムされており、かつ、状態Cにプログラムされるメモリセルに隣接するために補償を必要とするメモリセルは、閾値電圧がViaに達するまで密段階でプログラムされる。他のメモリセルは、それらの閾値電圧がVvaに到達するまで密段階でプログラムされる。従って、状態Cにある隣接セルを有する状態Aにあるメモリセルは、目標閾値電圧分布980より低い閾値電圧を有する可能性がある。従って、結合によりそれらのメモリセルの閾値電圧は閾値電圧分布980に上昇する。
図21は、隣接セルの何れもが状態Cにないために補償を必要としないメモリセルに対する粗/密プログラミングの一例を示すために、閾値電圧と時間、及び、ビットライン電圧と時間の関係のグラフを示している。グラフは、時間t1、t2、t3、t4、及びt5では、プログラミングパルスがメモリセルに対する制御ゲートに印加されるとしている。t1、t2、及びt3と関連するパルスでは、メモリセルの閾値電圧が増加する。時間t3で、メモリセルの閾値電圧はVcaより高くなる。従って、粗プログラミング段階は終了し、密プログラミング段階が開始する。ビットライン電圧は、相応して0ボルトから中間電圧V1(例えば1ボルト)に上昇される。中間電圧V1の印加は、0ボルトと対照的に、そのビットラインのプログラミング処理を減速する。時間t5で、メモリセルの閾値電圧がVva以上となると、ビットライン電圧は抑制電圧(例えばVdd)に上げられる。
図22は、状態Aにプログラムされるとともに1または複数の隣接セルが状態Cにあるために、補償を必要とするメモリセルのグラフを示す。時間t3では、メモリセルの閾値電圧は増加してVcaに達する。従って、ビットライン電圧は、中間電圧V1に上昇する。時間t4では、メモリセルの閾値電圧が、Vcaより大きくVva未満であるViaに到達する。従って、メモリセルは、ビットライン電圧がVddに上昇することによって、追加のプログラミングからロックアウトされる。
他の実施形態では、V1に加えて複数の中間電圧を使用できることに留意する。例えば、補償を受けるメモリセルは、1つの中間ビットライン電圧を使用することができ、補償を受けないメモリセルは、別の中間ビットライン電圧を使用することができる。他の実施形態では、さまざまなビットラインが異なる中間電圧を使用することができる。
図23は、図21と図22のグラフに基づくプログラミングの処理の一実施形態を説明するフローチャートである。ステップ700では、「データロード」が制御部によって発行され、制御回路によって受信される。ステップ1002では、ページアドレスを指定するアドレスデータが、制御部またはホストから復号部314に入力される。ステップ1004では、アドレス指定されたページに対するプログラムデータのページ(または他のデータ単位)がプログラミングのためのデータバッファに入力される。そのデータは、ラッチの適切なセットにラッチされる。ステップ1006では、「プログラム」コマンドが制御部によって状態マシン312に発行される。ステップ1008では、結合を補償するか否かかに関する判定がされる。例えば、制御部350、制御回路網310、検出ブロック400、または、別の構成要素が、特定のメモリセルが状態Cにプログラムされており、その隣接セルの1つまたは複数(あるいは2つまたは3つ以上)が状態Cにプログラムされるために、その特定のメモリセルがプログラミング処理の間に補償を受ける必要があるかどうかを判断する。制御部350及び制御回路網310は全てのプログラムデータを認識しているため、一実施形態においては、システムは補償が必要かどうかを自動的に認識する。他の実施形態では、各ビットラインに対する各データラッチが、プログラムされるデータを知っている。従って、検出モジュール400は、いずれかのビットラインが状態Cにプログラムされるデータを有する隣接セルを有するかどうかを判断するために、図17のステップ908、910及び912を実行できる。有する場合には、隣接セルを有するそれらのビットラインは補償のためにマークされる。図23の一実施形態では、1つまたは複数の隣接セルが状態Cであるメモリセルに与えられる補償値は1つだけである。他の実施形態では、状態Cの隣接セルが1つであるか、状態Cの隣接セルが2つであるかに応じて値の異なる補償を提供できる。
図23のステップ1010では、初期パルスが初期値に設定され、プログラムカウンタが初期値に設定され、ビットライン電圧が初期値に設定される。プログラムされるメモリセルの場合、ビットライン電圧は0ボルトに設定される。プログラムされないメモリセルの場合、ビットラインはVddに設定される。初期電圧の指定は、ラッチにも記憶できる。いくつかの実施形態では、初期ビットライン値は、プログラムパルスステップ1012(後述される)において適用できる。
ステップ1012では、プログラムパルスが適切なワードラインに適用される。ステップ1014では、検証処理が実行される。メモリセルが粗プログラミング段階にある場合には、ステップ1014の検証処理が、メモリセルの閾値電圧が粗検証レベルに到達したか否かを判定するために使用される。メモリセルが密プログラミング段階にある場合には、メモリセルに対する閾値電圧は、補償を必要とするメモリセルについて、目標閾値電圧(例えばVra)または中間検証レベル(例えばVia)のどちらかと比較される。ステップ1014の詳細は後述される。ステップ1016では、プログラムされる全てのメモリセルのステータスが、それらが全て検証されたことを示しているか否かが判定される。それらがすべて検証された場合には、プログラミング処理の成功がステップ1018で報告される。それらが全て検証されていない場合には、ステップ1020で、プログラムカウンタPCが、プログラム限度値PCmaxに対してチェックされる。プログラムカウンタがPCmax以上である場合には、プログラム処理は失敗となり、失敗のステータスがステップ1022で報告される。プログラムカウンタがPCmax未満である場合には、ステップ1024で、プログラム電圧(Vpgm)の大きさがステップサイズ分増加され、プログラムカウンタPCが増分される。ステップ1024後に、処理はステップ1012にループバックし、次のVpgmパルスが印加される。
図24は、図23の検証ステップ1014の一実施形態を説明するフローチャートである。ステップ1060では、システムは、メモリセルが粗プログラミング段階にあるのか、密プログラミング段階にあるのかを判定する。図23の処理は、メモリセルのグループ(例えば、共通のワードラインに接続されているメモリセルのページ)に対して実行される高レベル処理を説明していることに留意する。図24の処理は、プログラムされている特定のメモリセルごとに個別に実行される。一実施形態では、検出ブロックが、特定のメモリセルが粗プログラミング段階にあるのか密プログラミング段階にあるのかの結果を記憶するラッチを備えている。メモリセルが粗プログラミング段階にある場合には、検証処理はステップ1062で粗検証レベル(例えば、Vca)で実行される。すなわち、センス増幅器が使用されて、メモリセルの閾値電圧が適切な粗検証レベルに達したかどうかが判定される。例えば、メモリセルが状態Aにプログラムされている場合、センス増幅器は、前述したように、メモリセルの閾値電圧がVcaに達したかどうかをテストする。閾値電圧が粗検証レベルに到達すると(ステップ1064)、メモリセルの粗プログラミング段階が完了する。従って、ステップ1066で、ビットライン電圧が中間電圧V1に引き上げられ、メモリセルは次のプログラミングパルスで密プログラミング段階に入る。ステップ1066の後に、処理はステップ1080(後述される)に続き、閾値電圧が密検証レベル(あるいは中間検証レベル)を超えるか否かが判定される。メモリセルの閾値電圧が粗検証レベルに到達していない場合には、ビットライン電圧はステップ1068で現在のレベルに留まり、メモリセルに粗プログラミング段階が続行される。
ステップ1060でメモリセルが密プログラミング段階にあると判断されると、ステップ1080で、メモリセルが状態Aにプログラムされており、結合の補償を必要とするかどうかが判定される。必要としない場合には、ステップ1082で、密検証レベル(例えば、目標検証レベルVva、VvbまたはVvc)を使用して検証処理が実行される。補償が必要とされる場合には、ステップ1090で検証処理が中間検証レベルViaを使用して実行される。メモリセルの閾値電圧が適切な検証レベルを上回ると(ステップ1084)、ビットライン電圧をVddに上げることによって、メモリセルはステップ1088で追加のプログラミングからロックアウトされる。メモリセルの閾値電圧が検証レベルを上回っていない場合は(ステップ1084)、ビットライン電圧はステップ1086で現在のレベルで維持され、密プログラミング段階が続行する。
セルフローティングゲート間検証の影響は、前述したようにプログラムシーケンス中に訂正できる。それは、読み出し動作の間にも訂正できる。以下の説明は、検出処理に修正率としてビットライン間結合の影響を組み込み、その結果、読み出しが隣接メモリセルの状態に応じて修正できる読み出しシーケンスを説明している。図25と図26は、隣接メモリセルからの結合を経験している特定のメモリセルに対して補償を提供することを可能にするデータの読み出し処理の実施形態を説明する。ステップ1100では、全ビットラインが読み出されて、それらのビットライン、及び、選択されたワードラインに接続されるメモリセルが状態Cであるか否かが判定される。これは、読み出し比較点としてVrcを使用して読み出し動作を実行することによって実行される。状態Cにあるメモリセルを有するそれらのビットラインは、メモリセルが状態Cにあるとの結果をラッチする。読み出し動作は図18に示されている。ステップ1102では、状態C以外の状態にあるメモリセルのあるそれらのビットラインが充電される。一実施形態では、それらのビットラインは0.5ボルトに充電される。ステップ1102でビットラインが充電された後に、状態Cのメモリセルに接続されるビットラインが、ステップ1104で、0.25ボルトと0.4ボルトの間に充電される。ステップ1104で状態Cのメモリに接続されているビットラインを充電すると、ステップ1102で充電されたビットラインが0.5ボルトより高い電圧にカップルドアップされる。例えば、図26は、状態Cにあるメモリセルを有さないそれらのビットラインを表すビットラインBLnを示す。グラフは、ステップ1102の間に0.5ボルトに充電されるビットラインを示す。ビットラインBLn+1は状態Cのメモリセルに接続され、BLn+1はBLnに隣接する。ステップ1104の間に、BLn+1は約0.4ボルトに充電される。次にビットラインBLnは、破線1120によって描かれているように、0.5より高い電圧に結合される。ステップ1104で充電された隣接セルに隣接していないビットラインは、ライン1122で描かれているように0.5ボルトのままとなる。図25のステップ1106では、全てのビットライン(またはビットラインのサブセット)が検出される。Cの隣接セルを有するビットラインは、より高いビットライン電圧を有すると検出される。高いビットライン電圧のために、ビットラインは、低い閾値電圧の出現を示すより高い電流を伝導する。これは、隣接するセルの間での結合を補償する。Cの隣接セルを有するセルは、隣接セルがプログラムされた後に、元のプログラムレベルよりも高い浮動電圧に結合される。フローティングゲート間結合補償を伴うこの読み出しは、セルの元のプログラムレベルを正しく読み戻す。この読み出し訂正は、複数の読み出し動作によるタイムペナルティを生じさせることなく行われる。1つの読み出し動作は、訂正を必要とするメモリセルと訂正を必要としないメモリセルの結果を取得する。
前述した一実施形態では、セルソースノイズが除去されているため複数の検出ストローブがある場合がある。図25と図26に関して前述した処理は、全ての送信ストローブの間、または、後の検出ストローブの間に適用できる。例えば、2つのストローブのある一実施形態では、第1のストローブが図25及び図26の処理を使用してよいが、第2のストローブは図25及び図26の処理を使用しなくてよい。
前記説明は、プログラム中、及び読み出し中にフローティングゲート結合を補償するための処理を説明する。いくつかの実施形態では、補償は、プログラミングと読み出しの両方の間に実行できる。しかしながら、大部分の実施形態では、補償はプログラミング中、または、読み出し中の何れかで実行され、両方では実行されない。読み出し中に補償を実行するのか、または、プログラミング中に補償を実行するのかの決定は、メモリシステムの使用に基づいてすることができる。例えば、メモリシステムが、データがあまりプログラムされないが何度も読み出されるホストで使用される場合には、プログラム中に補償する方がよい。反対に、ホストがプログラムを何度も実行し、読み出しをあまり実行しない場合には、読み出し処理の間に補償を実行する方がよい。
一実施形態では、メモリシステムは、読み出し処理の間及びプログラミング処理の間に補償を実行するための技術を含むように製造できる。製造工程の間、または、製造工程の後のなんらかの時点で、メモリシステムは、読み出し処理の間だけ、または、プログラミング処理の間だけのどちらかに補償を実行するように構成できる。
図27は、メモリシステムを、読み出し処理の間、または、プログラミング処理の間のどちらかで補償を実行するように構成するための処理を説明するフローチャートを示す。ステップ1200では、メモリシステムは、読み出し中に補償を実行するため、及び、プログラミング中に補償を実行するための機能を備えて製造される。これは、半導体ウェハを製造することを含んでよい。すなわち、ステップ1200は、既知の工程を使用してウェハをパッケージングすることも含むことができる。パッケージは、前述した構成を実行するためのスイッチを有してよい、あるいは、有さなくてよい。集積回路上の記憶素子に接続されているこのようなスイッチを追加するための技術は既知である。ステップ1202では、ステップ1200で製造されるメモリシステムの一部であるフラグ(補償フラグ)が、補償が読み出し中に実行される必要があるのかどうか、あるいは、補償がプログラム中に実行される必要があるのかどうかを示すために、使用目的に基づいて設定される。フラグは、製造工程の間、製造工程の後、試験処理の間、あるいは装置が使用されている間に設定できる。ステップ1204では、装置を使用する間に、システムが補償フラグをチェックする。読み出し中に補償を実行するように補償フラグが設定された場合は、ステップ1206でメモリシステムが読み出し処理中に結合に対する補償をする。補償フラグがプログラミングのために設定されると、メモリがプログラミング処理中に結合に対する補償をする(ステップ1208)。
フラグはステップ1202で多くの異なる方法で設定できる。製造工程またはテスト処理の間に、ROMヒューズを、補償が読み出し中に実行されるべきなのか、あるいはプログラミングの間に実行されるべきなのかを示すために設定できる。他の実施形態では、フラグの結果を記憶するための他の手段(例えば、不揮発性アレイでのメモリセル、フリップフロップ、または他の記憶装置)が、製造工程の間または後で実装及び/または設定できる。フラグはテスト処理の間、または使用中にも設定できる。さらに、集積回路のパッケージは、メモリカードをホストの中に挿入する前にユーザによって設定できる。
いくつかの実施形態では、補償フラグは、メモリシステムがホストの中に挿入された後にステップ1202で設定できる。図28から図31がこのような構成の例を示す。図28のステップ1300では、メモリシステムはホストにインストールされる。ホストの例は、デジタルカメラ、音楽プレーヤ、携帯電話、携帯用計算装置、または他の計算装置を含む場合がある。例示すると、音楽プレーヤは、プログラムよりはるかに頻繁に読み出しが行われると考えられる。従って、音楽プレーヤはプログラミング中に補償をしてよい。他方、デジタルカメラはより頻繁にプログラムする可能性があるため、読み出し処理中に補償処理を提供する方がより適切である場合がある。図28のステップ1302では、ホストは適性を制御部に通知する。すなわち、ホストは、いつ補償を実行するのがよいかを既知のプロトコルを使用して制御部に告げることができることを理解するように前もってプログラムされる。ステップ1304では、制御部は、ホストから適性を受信し、ホストから受信したその適性に基づいて、補償フラグを設定する(メモリセルまたは他の記憶装置に記憶される)。
図29は、メモリシステムを構成する別の実施形態のフローチャートを示す。ステップ1320では、メモリシステムがホストにインストールされる。ステップ1332では、ユーザが適性を選択できる。一実施形態では、ユーザは、機械スイッチを動かすことによって、あるいは、ホストのユーザインタフェースで適性を選択する。例えば、デジタルカメラのユーザは、読み出し中に補償を実行することを選択し、音楽プレイ装置のユーザはプログラミング中に補償を実行することを選ぶことができる。ステップ1334では、ホストはその適性を制御部に通知する。ステップ1336では、制御部は、ホストから受け取られた適性に基づいて補償フラグを設定する。
図30は、メモリシステムを構成するための処理の別の実施形態を説明するフローチャートを示す。ステップ1330では、メモリシステムがホストにインストールされる。ステップ1332では、制御部が、ホストがそれ自体を識別することを要求する。例えば、ホストが、それがデジタルカメラ、音楽プレーヤ、PDA、携帯電話等であることを示す。制御部はその情報を受信し、ステップ1334でホスト情報の表にアクセスする。表は装置の型または種別ごとに、補償フラグ設定方法を特定する。その表とホストから受信した情報に基づいて、制御部は構成を選ぶ(例えば、読み出し中に補償を実行するのか、あるいはプログラミング中に実行するのかを選ぶ)。ステップ1336では、制御部は、ステップ1334で決定された構成に基づいて、フラグを設定する。
図31は、メモリシステムを構成するための処理の別の実施形態を説明するフローチャートである。ステップ1360では、メモリシステムがホストにインストールされる。ステップ1362で、ホストは、複数のファイルをメモリシステムに記憶させる。所定時間後に所定量のファイルがメモリシステムに記憶された後に、あるいは、ホストまたはユーザからのコマンド受信時に、制御部はステップ1364でメモリシステムに記憶されている最も代表的なファイルタイプを特定する。例えば、10個のファイルが記憶され、その内の8個が音楽ファイルである場合、制御部は、最も代表的なファイルが音楽ファイルであることを決定する。ステップ1366では、制御部が代表的なファイルタイプに基づいて構成を決定する。例えば、表は、ファイルタイプを一覧表示するメモリシステムに記憶することができ、ファイルタイプごとに補償フラグのための値が記憶される。フラグの値は、プログラミング中に補償を実行するのか、あるいは読み出し中にプログラムを実行するのかを示すことができる。ステップ1368では、制御部はステップ1366で決定された構成に基づいて補償フラグを設定する。
本発明の前記の詳細な説明は、図解及び説明のために提示された。網羅的となること、あるいは本発明を開示されているまさにその形式に制限することは意図されていない。前記教示を鑑みて多くの変型及び変形が可能である。説明した実施形態は、本発明の原理及びその実際的な応用例を最もよく説明し、それにより当業者が多様な実施形態で、及び意図された特定の用途に適するような多様な変型で本発明を最もうまく活用できるようにするために選ばれた。本発明の範囲が本明細書に添付される請求項により定められることが意図される。