(57)【要約】【課題】フラッシュ・マルチレベルメモリセル（ＭＬＣ）メモリをプログラミングする方法および装置を提供する。【解決手段】この方法は、データをＳＲＡＭ内にロードするステップと、前記ＳＲＡＭ内の前記データから複数のマルチビットワードを読み出すステップと、ワードを少なくとも１個のラッチバッファにロードするステップと、少なくとも１個のラッチバッファ内のワードの１つからの１つまたは複数のビットを、少なくとも１個のラッチバッファ内の別のワードからの１つまたは複数のビットと対にするステップと、前記ビット対のどれにプログラミングが必要であるかを決定するステップと、前記メモリセルを前記決定されたビット対と共に並列プログラミングするステップとを備える。【選択図】図２
2008108408.tif 000002
【特許請求の範囲】
【請求項１】
フラッシュ・マルチレベルメモリセル（ＭＬＣ）メモリを並列プログラミングする方法であって、
データをＳＲＡＭ内にロードするステップと、
前記ＳＲＡＭ内の前記データから複数のマルチビットワードを読み出すステップと、
ワードを少なくとも１個のラッチバッファにロードするステップと、
少なくとも１個のラッチバッファ内のワードの１つからの１つまたは複数のビットを、少なくとも１個のラッチバッファ内の別のワードからの１つまたは複数のビットと対にするステップと、
前記ビット対のどれにプログラミングが必要であるかを決定するステップと、
前記メモリセルを前記決定されたビット対と共に並列プログラミングするステップとを備える方法。
【請求項２】
複数の電圧から１つを選択するステップと、
選択した電圧を、複数のＮＭＯＳソースホロワの１つを介して、前記決定されたビット対に関連したメモリセルのトランジスタのドレイン側に印加するステップをさらに備える、請求項１に記載の方法。
【請求項３】
前記選択された電圧を印加するステップは、前記選択された電圧を、前記複数のＮＭＯＳソースホロワの１つとドライバ回路とを介して印加するステップを備える、請求項２に記載の方法。
【請求項４】
前記ワードをＶＳＲＡＭ内にロードするステップをさらに備える、請求項１に記載の方法。
【請求項５】
前記プログラムされたビット対を、前記ＶＳＲＡＭ内の関連するワードのビット対と比較するステップをさらに備える、請求項４に記載の方法。
【請求項６】
ビット対のプログラミングが成功したと決定するステップと、
ＶＳＲＡＭ内のプログラミングが成功した全てのビット対を、ビット対のプログラミングが成功したことを表すインジケータ値に変更するステップをさらに備える、請求項５に記載の方法。
【請求項７】
プログラミングが成功しなかったビット対があるかどうかを決定するステップと、
メモリセルを、プログラミングが成功しなかったビット対と共に再度並列プログラミングするステップをさらに備える、請求項５に記載の方法。
【請求項８】
前記プログラムされたビット対を、前記ＳＲＡＭのデータと関連するビット対と比較するステップをさらに備える、請求項１に記載の方法。
【請求項９】
前記ビット対のプログラミングが成功したかどうかを決定するステップと、
プログラミングが成功した、前記ＳＲＡＭ内のデータの全てのビット対を、前記ビット対のプログラミングが成功したことを表すインジゲータ値に変更するステップをさらに備える、請求項８に記載の方法。
【請求項１０】
プログラミングが成功しなかったビット対があるかどうかを決定するステップと、
前記メモリセルを、プログラミングが成功しなかったビット対と共に再度並列プログラミングするステップをさらに備える、請求項１に記載の方法。
【請求項１１】
フラッシュ・マルチレベルメモリセル（ＭＬＣ）メモリを並列プログラミングする装置であって、
データを受信するＳＲＡＭと、
前記ＳＲＡＭから読み出された複数のマルチビットワードを受信するための、少なくとも１個のラッチバッファと、
ビット対を受信するための複数のマルチレベルメモリセルを備え、前記ビット対は、前記少なくとも１個のラッチバッファ内にある前記ワードの１つからの１つまたは複数のビットを、少なくとも１個のラッチバッファ内にある別のワードの１つからの１つまたは複数のビットと対にすることで形成されており、
前記メモリセルは、プログラミングが必要なビット対と共に並列プログラミングする装置。
【請求項１２】
メモリセルは、前記決定したビット対に関連したトランジスタのドレイン側で、複数のＮＭＯＳソースホロワとドライバ回路のうちの一方により電圧を受信するトランジスタを備える、請求項１１に記載の装置。
【請求項１３】
前記ワードを受信するＶＳＲＡＭをさらに備える、請求項１１に記載の装置。
【請求項１４】
前記プログラムされたビット対を、これと関連する、前記ＶＳＲＡＭ内にあるワードのビット対と比較する検証手段をさらに備える、請求項１１に記載の装置。
【請求項１５】
前記検証手段は、前記ビット対のプログラミングが成功したかどうかを決定し、前記ＶＳＲＡＭ内の、プログラミングが成功した全てのビット対を、前記ビット対のプログラミングが成功したことを表すインジケータ値に変更するステップを備える、請求項１４に記載の装置。
【請求項１６】
前記メモリセルは、プログラミングに成功しなかった前記ビット対と共に再度並列プログラミングされる、請求項１５に記載の装置。
【請求項１７】
前記プログラムされたビット対を、前記ＳＲＡＭ内のこれに関連したビット対と比較する検証する手段をさらに備える、請求項１１に記載の装置。
【請求項１８】
前記検証手段は、前記ビット対のプログラミングが成功したかどうかを決定し、前記ＳＲＡＭ内にあるワードの、プログラミングが成功した全てのビット対を、ビット対のプログラミングが成功したことを表すインジケータ値に変更するステップを備える、請求項１７に記載の装置。
【請求項１９】
前記メモリセルは、プログラミングに失敗した前記ビット対と共に再度並列プログラミングされる、請求項１８に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、概して、半導体フラッシュメモリに関し、より詳細には、本発明は、フラッシュ・マルチレベルセル（ＭＬＣ）メモリのプログラミング（ＭＬＣメモリを並列プログラミングする方法及びその装置）に関する。
【背景技術】
【０００２】
フラッシュメモリは電子製品に一般使用されている。フラッシュメモリアレイ内のメモリセルは、一般に制御ゲート、ドレイン拡散領域、ソース拡散領域を実装している。これらは基板上に配置され、トランジスタを形成している。トランジスタは、電子記憶装置を形成するフローティングゲートを制御ゲートの下に備えている。フローティングゲートの下にはチャネル領域が配置されている。このチャネル領域は、チャネルとフローティングゲートの間のトンネル酸化膜層の形状をした絶縁層と共に配置されている。トンネル酸化膜のエネルギーバリアは、トンネル酸化膜にかけて十分に高い電場を付加することで克服できる。これにより、電子がトンネル酸化膜を通過できるようになることで、フローティングゲートに記憶できる電子の個数が変わる。フローティングゲートに記憶される電子の個数により、セルの記憶されたデータを表すセルの閾電圧（Ｖｔ）が決定される。フローティングゲート内に記憶される電子の個数が増えるほど、セルのＶｔが高くなる。このＶｔは、記憶されたセルのデータを表す。
【０００３】
セルのＶｔをより高いまたはより低い値に変更するには、制御ゲート、ドレイン領域、ソース領域、チャネル領域を含むノードに適切な電圧を印加して、フローティングゲートに記憶された電子の数を増減する。これにより、電子が、１つまたは複数のノード間で移動し、またトンネル酸化膜層を介してフローティングゲートに到達できるようになる。チャネル領域とフローティングゲートの間での電子の移動は「チャネルオペレーション」と呼ばれる。ドレインまたはソース領域とフローティングゲートの間での電子の移動はフローティングゲートの縁とドレインまたはソース領域とが重なり合う重なり領域上に生じるため、「エッジオペレーション」と呼ばれる。
【０００４】
ＭＬＣによって各セルにマルチデータビットを記憶できることから、これは、５１２Ｍｂ以上といった高密度を典型的に必要とする大量記憶アプリケーションの最大候補の１つとなった。典型的な４レベルＭＬＣでは、セルのＶｔが、データ「００」、「０１」、「１０」、「１１」を示す４レベルに分割されている。４レベルのそれぞれは直列プログラミングが可能である（即ち、各レベルは、１つ前のレベルが終了した後にフラッシュメモリに書き込まれる）。そのため、４レベルを有するセルの場合、メモリは３回プログラムされる。プログラミングの前にフラッシュメモリを消去することで、アレイ中の各セルがデフォルト状態（例えば「１１」）にリセットされる。即ち、データが３つのステップ「００」、「０１」、「１０」でフラッシュメモリに書き込まれる。「１１」はメモリ消去後のデフォルト状態であるので書き込まれない。
【０００５】
図１は、４レベル型メモリセルの直列プログラミングを示す。まず、書き込むデータが、スタティック・ランダム・アクセス・メモリ（「ＳＲＡＭ」）１０１内に（例えばページ毎に）ロードされる。各ページは多数のマルチビットワードを備える。ＳＲＡＭ１０１は複数の行を含み、各行には２個のマルチビットワード１０２、１０３が含まれている。データが一度ロードされると、各行から２個のマルチビットワード１０２、１０３が読み出される。
【０００６】
２個のマルチビットワード１０２、１０３が読み出されると、プログラムが、書き込むレベル（例えば「０１」）を識別する。まず、ワード１０２、１０３の関連するビットが対を形成する。ビットを対にする際に、ワード１０３からのビット（「１０．．０１１０」）は最上位ビット（ＭＳＢ）を表し、ワード１０２からのビット（「１０．．１００１」）は最下位ビット（ＬＳＢ）を表す。ビット対が形成されると、プログラムは、どのビット対が値「０１」を有するかを決定する。さらに、プログラム可能なビット対を表すインジケータ値を出力ベクトル１０４に出力できる。また、プログラムは値「０１」を持った、即ちプログラムが必要であることを示すそれぞれのビット対について、出力ベクトル１０４に「０」を出力する。これに対し、プログラムは、値「０１」を持たない、即ちこの時点ではプログラミングが不要であることを示すそれぞれのビット対に（例えば「００」、「１０」、「１１」）について、出力ベクトル１０４に「１」を出力できる。出力ベクトル１０４は、各ビット対のインジケータ値を記憶できる。例えば、出力ベクトル１０４は「１１．．０１１０」を記憶する。これは、「０」で示す２個のビットのプログラミングが可能なことを表す。
【０００７】
出力ベクトル１０４が作成されたら、これをデータバス１０５上へ移動し、ラッチ１０６に記憶することができ、また、ラッチ１０６に従ってフラッシュメモリアレイ１０７をプログラムする際に使用することができる。さらに、ページプログラムの開始時に、出力ベクトル１０４をＶＳＲＡＭ１０８に書き込むこともできる。出力ベクトル１０４がラッチ１０６に記憶されると、「０１」に関連したビット対を、フラッシュメモリアレイ１０７の関連するＭＬＣ内に書き込むことができる。このステップは「ショット」と呼ばれる。ＳＲＡＭ１０１はプログラムベクトルと第１ショットプログラムを作成でき、ＶＳＲＡＭ１０８は後続のプログラムショットを制御できる。ＭＬＣのプログラミングが成功すると、ＶＳＲＡＭ１０８中のインジケータ値が「０」から、データの書き込み成功を表す「１」に変更される。
【０００８】
プログラムは、全てのページデータの書き込みが終了すると、データが正確に書き込まれたことを検証する。プログラムはまず、フラッシュメモリ１０７からページデータを読み出す。次に、このデータを、書き込まれるべきデータ（例えば、ＳＲＡＭ１０１からの「０１」）と比較する。これは、プログラミングされたデータを、ＶＳＲＡＭ１０８内にラッチされたデータと比較することで達成される。ＶＳＲＡＭ１０８中の全てのビットが「１」であればページデータの書き込みは成功であり、この場合には、プログラムがこのループから出て、別のレベル（例えば「００、「１０」）にてループを継続する。ＶＳＲＡＭ１０８中のインジケータが「１」でなければ、インジケータに関連したビットを、フラッシュメモリアレイ１０７の関連するＭＬＣ内に再度書き込むことができる。ビット対をＭＬＣに再度書き込むこのステップは「別のショット」と呼ばれる。これらのビットが書き込まれると、プログラムが、読み出したデータを、書き込まれるべきデータと再び比較する。この工程は、全てのビットの書き込みが終了し、ＶＳＲＡＭ１０８中の全てのインジケータが「１」になるまで継続する。
【発明の開示】
【発明が解決しようとする課題】
【０００９】
データを書き込み／検証するこの工程によりプログラミング速度が低下する。したがって、プログラミング速度を増加させる必要がある。
【課題を解決するための手段】
【００１０】
本発明に関連したこの方法および装置は、ＭＬＣの並列プログラミングを提供する。ＭＬＣを並列プログラミングする場合、セルの全４レベルを同時にプログラムできる。
１つの例証的な実施形態では、フラッシュ・マルチレベルメモリセル（ＭＬＣ）メモリの並列プログラミング方法を提供する。この方法はＳＲＡＭ内にデータをロードすることを備える。さらに、ＳＲＡＭ内のデータから複数のマルチビットワードを読み出し、このワードを電力制御回路の少なくとも１個のラッチバッファ内にロードすることを備える。この方法はさらに、ラッチバッファ内の複数のワードの１つからの１または複数のビットを、ラッチバッファ内の別のワードからの１または複数のビットとで対を形成し、どのビット対にプログラミングが必要であるかを決定することを備える。この方法はまた、各メモリセルの決定されたビット対の並列プログラミングを備える。さらに、決定されたビット対に関連したメモリセルのトランジスタのドレイン側に電圧を印加することで、各マルチレベルメモリセルをプログラミングすることを備える。
【００１１】
前述の一般的な説明と以下の詳細な説明の両方は、単に例証的かつ説明的なものでしかなく、本発明を記述のとおりに制限するものではない。ここで説明されたものの他に、さらなる特徴および／または変化が提供される。例えば本発明は、開示される特徴および／または組み合わせの様々な組み合わせおよび副組み合わせに関し、また、以下の詳細な説明で開示される、さらなる特徴のいくつかの副組み合わせにも関する。
【発明の効果】
【００１２】
本発明に関連したこの方法および装置は、ＭＬＣの並列プログラミングを提供する。ＭＬＣを並列プログラミングする場合、セルの全４レベルを同時にプログラムできる。
【発明を実施するための最良の形態】
【００１３】
この明細書に組み込まれこれを構成する添付の図面は、本発明の特定の態様を示し、説明と共に、本発明の原理のいくつかの説明を促す。
【実施例】
【００１４】
次に、添付の図面によって例証された本発明を詳細に参照する。以下で説明する実現は、請求された本発明に関連する全ての実現を表してはいない。これらの実現は、単に、本発明に関連した特定の態様の例でしかない。全図面を通して、可能な場合には同様の部分を同一の参照符号で表している。
【００１５】
図２は、４つのレベルのメモリセルの並列プログラミングを実現するシステム２００を示す。プログラミングの前にＭＬＣを消去することで、全てのセルがデフォルト状態（たとえば「１１」）にリセットされるようにすることが可能である。ＭＬＣを消去すると、書き込むデータをＳＲＡＭ２０１の（例えばページ毎の）ロードが可能になる。各ページは多数のマルチビットワードを備えていてよい。ＳＲＡＭ２０１は複数の行を含み、また、各行は２個のマルチビットワード２０２、２０３を含む。データがロードされると、ワード２０２、２０３からのビットが読み出され、これに関連するビットが２個１組の対にされる。ワード２０３からのビット（「１０．．０１００」）は２ビットのＭＳＢに関連し、ワード２０２からのビット（「１０．．１００１」）は２ビットのＬＳＢに関連する。
【００１６】
マルチビットワード２０２からのビットを、読み出し時にデータバス２０４上に移動し、フラッシュメモリ２１０のラッチバッファ２１１に書き込む。このビットはまた、第１行右側２２１のＶＳＲＡＭ２２０に書き込んでもよい。同様に、マルチビットワード２０３からビットを読み出す際に、このビットをデータバス２０４上に移動し、フラッシュメモリ２１０のラッチバッファ２１２に書き込んでもよい。さらに、第１行左側２２２のＶＳＲＡＭ２２０に書き込むこともできる。
【００１７】
マルチビットワード２０２、２０３からのビットがバッファ２１１、２１２にそれぞれ書き込まれると、メモリアレイ２１５内のＭＬＣがプログラムされる。メモリアレイ２１５内の各ＭＬＣは、ワードライン２１６とビットライン２１７に結合される。ラッチバッファ２１１、２１２内のビットで対が形成され、全ての対「００」「０１」、「１０」がメモリアレイ２１５内のＭＬＣに書き込まれる。「１１」は、メモリ消去後のデフォルト状態であるため、書き込まれない。
【００１８】
ラッチバッファ２１１、２１２内の各マルチビットワード２０２、２０３のビットに関連したビット対「００」「１０」「０１」を、メモリセルアレイ２１５内の対応するＭＬＣに同時に書き込むことができる。プログラムが必要な各ビット対は、ｐｓ＿ｖｐｐｄ回路２１３〜２１３ｎへ送られる。ｐｓ＿ｖｐｐｄ回路２１３〜２１３ｎは、対応するビット対を受信し、この受信したビット対に基づいて電圧を出力する。この電圧がマルチプレクサ２１４〜２１４ｎを介して供給され、メモリセルアレイ２１５中の関連するＭＬＣ内に出力されることでこのセルがプログラムされる。この電圧は、各ＭＬＣのトランジスタのドレイン側に印加される。ＭＬＣは、プログラミング完了後、メモリセルに印加された電圧に関連するビット対（例えば「００」「０１」「１０」）を記憶する。
【００１９】
図３は、電圧を生成し、これをメモリセルアレイ２１５内にある各ＭＬＣのトランジスタのドレイン側に印加するｐｓ＿ｖｐｐｄ回路３００を示す。データバス３０２は、フリップフロップ３０４、３０５に直列入力されたラッチバッファ２１１、２１２から２個のビットを供給できる。例えば、プログラミングが必要な２個のビットが「０１」である場合には、ビット「１」をデータバス３０２からフリップフロップ３０４、３０５に送信できる。ラッチ３０１はトリガ信号を送信、ビットをフリップフロップ３０５内にラッチすることができる。フリップフロップ３０５はビット「１」を出力し、このビット「１」はフリップフロップ３０４に入力され、ラッチ３０１によってラッチされる。フリップフロップ３０５からビット「１」が出力されると、データバス３０２からフリップフロップ３０５にビット「０」が入力され、ラッチ３０１によってラッチされる。両ビットはフリップフロップ３０４、３０５に記憶された後に、デコーダ３０６内へ並列出力される。両ビットはクロック信号３０３とともに、デコーダ３０６に入力される。
【００２０】
デコーダ３０６は、フリップフロップ３０４、３０５から入力された２個のビットに関連する信号を４個の変換器３０７、３０８、３０９、３１０のうち１つに出力できる。変換器３０７、３０８、３０９、３１０が、パワー電圧Ｐｏｗｅｒ＿１、Ｐｏｗｅｒ＿２、Ｐｏｗｅｒ＿３、Ｐｏｗｅｒ＿４により駆動される。一つの態様では、パワー電圧Ｐｏｗｅｒ＿１、Ｐｏｗｅｒ＿２、Ｐｏｗｅｒ＿３はそれぞれ異なっているため、デコーダ３０６から関連する出力が選択されると、変換器３０７、３０８、３０９が、パワー電圧Ｐｏｗｅｒ＿１、Ｐｏｗｅｒ＿２、Ｐｏｗｅｒ＿３に関連した異なる電圧を出力する。
【００２１】
ＮＭＯＳトランジスタ３１１、３１２、３１３、３１５は変換器３０７、３０８、３０９、３１０にそれぞれ接続していてよく、また、高電圧レベルにまでポンピングされるＤＰＵＭＰ３１４に接続していてもよい。トランジスタ３１１、３１２、３１３は、変換器３０７、３０８、３０９の関連する１つからＤＬ３１８へ電圧出力を送るソースホロワを形成する。このソースホロワはメモリセル２１５内のフラッシュセルのドレイン側に接続している。トランジスタ３１６、３１７はドライバ回路として機能し、適切なトランジスタ３１１、３１２、３１３からの電圧をＤＬ３１８に印加させることができる。デコーダ３０６の出力が「１１」である場合には、変換器３１０がＰｏｗｅｒ＿４に関連したパワー電圧を出力し、トランジスタ３１５をターンオンする。その結果、ドライバ回路が無効となり、ＤＬ３１８への電圧印加が停止する。
【００２２】
例えば、２個のビットが「０１」である場合、デコーダ３０６がインバータ３０９に、「０１」に関連した信号「０」を出力する。デコーダ３０６が、信号「１」をインバータ３０７、３０８、または３１０に出力する。インバータ３０９からの電圧がトランジスタ３１３に供給され、トランジスタ３１３が、インバータ３０９からの電圧に関連する、ＤＰＵＭＰ３１４からの電圧をＤＬ３１８へ送る。この時点でトランジスタ３１１、３１２、３１５が接地される。ＤＬ３１８はこの電圧を、メモリセルアレイ２１５内にある適切なＭＬＣのトランジスタのドレイン側に印加する。このＭＬＣフラッシュメモリセルは、プログラミング完了後にビット対「０１」を記憶できるようになる。
【００２３】
再び図２を参照すると、データの書き込み後に、プログラムが、そのデータが正確に書き込まれているかどうかを検証する。ＳＥＮＡＭＰ（感知増幅器）２１８〜２１８ｎが、メモリセルアレイ２１５内の各ＭＬＣから２個のビットを読み出し、これを２つの周期内のデータバス２０４へ出力する。この２個のビットは、ＶＳＲＡＭ２２０内の関連する２個のビットに対して比較される。プログラミングが成功すると、ＭＬＣ毎に、プログラムがＶＳＲＡＭ２２０内の関連する２個のビットを「１１」に変更する。２つおきのビットが「１１」に変更されたらプログラムが完了する。
【００２４】
ＶＳＲＡＭ２２０内の２つおきのビットが「１１」でない場合は、再びこれらのビットをＭＬＣ内に書き込むことができる。ビットが書き込まれると、ＳＥＮＡＭＰ２１８〜２１８ｎが、再び２個のビットをＶＳＲＡＭ２２０内の関連する２個のビットと比較する。全てのビットが書き込まれ、ＶＳＲＡＭ内の２つおきのビットが全て「１１」になるまでこの工程が継続する。
【００２５】
このプログラム検証を、ＭＬＣの行全体のプログラミングが完了するまでループできる。ＭＬＣの第１行目のプログラミングが完了すると、ＭＬＣの第２行目のプログラミングが実行される。第２行目のプログラミングと検証も同じ方法で実行される。あるいは、ページ全体が読み出されて、書き込まれる各ワードに１ショットが実行されるまでこのプログラミングをループすることができる。これが完了すると、全ての行に検証工程をループすることが可能である。
【００２６】
従来技術と異なり、ＶＳＲＡＭ２２０は、インジケータ値ではなく実ビットをＳＲＡＭ２０１から受信する。実ビットはＶＳＲＡＭ２２０に記憶されているため、第１ショット以降の各ショットについてＳＲＡＭ２０１にアクセスする必要がない。むしろ、第１ショット以降のショットでは、データはＶＳＲＡＭ２２０から直接送信される。
【００２７】
ユーザまたはアプリケーションがデータをＳＲＡＭ２０１内に保持したい場合にも、ＶＳＲＡＭ２２０を使用できる。ユーザまたはアプリケーションがデータをＳＲＡＭ２０１に保持する必要が無い場合には、ＶＳＲＡＭ２２０を使用する必要はない。この場合、プログラムが、データが正確に書き込まれたことを検証すると、ＳＥＮＡＭＰ２１８〜２１８ｎがメモリセルアレイ２１５内の各ＭＬＣから２個のビットを読み出し、この２個のビットを２個の周期においてデータバス２０４上へ出力できる。２個のビットは、ＳＲＡＭ２０１内の関連する２個のビットと比較される。各ＭＡＣについて、プログラミングが成功であれば、プログラムがＳＲＡＭ２０１内の関連する２個のビットを「１１」に変更することができる。全ての２つおきのビットが「１１」に変更されるとプログラムが完了する。
【００２８】
ＳＲＡＭ２０１内の２つおきのビットが「１１」でない場合には、これらのビットを再びＭＬＣに書き込むことができる。このビットの書き込みが完了すると、ＳＥＮＡＭＰ２１８〜２８１ｎが、ＳＲＡＭ２０１内の関連する２個のビットに対して再び比較される。この工程が、全てのビットが書き込まれ、ＳＲＡＭ２０１内の２つおきのビットが「１１」になるまで継続する。
【００２９】
ＳＲＡＭ２０１を使用したこのプログラム検証は、ＭＬＣのページ全体のプログラミングが完了するまでループすることができる。このプログラミングは、ページ全体が読み出され、書き込まれる各ワードについて１ショットが実行されるまでループできる。これが完了したら、全ての行に検証工程をループすることができる。
【００３０】
図４は、第１プログラムショットにおいて、ＳＲＡＭ２０１からメモリアレイ２１５のＭＬＣ内へデータを書き込むための例証的なタイムチャートである。Ｓｒａｍ＿ａｄｄはＳＲＡＭ２０１のアドレスのことを指す。ｓｒａｍ＿ｒｄは、ＳＲＡＭ２０１から２個のマルチビットワード２０２、２０３を読み出すようプログラムをトリガすることができる。
Ｓｒａｍ＿ｎｅｅｄ＿ｐｇｍは、ＳＲＡＭ２０１からの２個のマルチビットワードを書き込む必要があるかどうかを決定する。ＳＲＡＭ２０１からの２個のマルチビットワード２０２、２０３のプログラムが必要な場合には、ｓｒａｍ＿ｏｅ１、ｓｒａｍ＿ｏｅ２がＳＲＡＭ２０１内のマルチビットワード２０２、２０３からビットを読み出すことができる。Ｐｓ＿ｖｐｐｄ＿ｌａｔはフリップフロップ３０４、３０５をトリガして、データバス２０４からデータをラッチすることができる。Ａｒｒａｙ＿ａｄｄｒｅｓｓは、ＭＬＣのメモリアレイ２１５内における場所を意味する。Ｐｒｏｇｒａｍ＿ｐｕｌｓｅは、メモリアレイ２１５内の選択されたＭＬＣを関連するデータによってプログラムするための信号を生成できるプログラム制御パルスである。ｐｒｏｇｒａｍ＿ｐｕｌｓｅが「１」である場合にはプログラムは有効である。Ｖｓｒａｍ＿ａｄｄはアドレスＶＳＲＡＭ２２０を意味する。ｖｓｒａｍ＿ｗｒは、プログラムを、マルチビットワード２０２、２０３をＶＳＲＡＭ２２０内に書き込むようにトリガする。
【００３１】
図５は、書き込まれたデータを検証するための例証的なタイミングチャートである。Ａｒｒａｙ＿ａｄｄｒｅｓｓは、メモリアレイ２１５内のＭＬＣ内におけるデータの場所を意味する。Ａｒｒａｙ＿ｒｄは、プログラムを、メモリアレイ２１５内のＭＬＣからのデータを読み出すようにトリガする。ａｒｒａｙ＿ｏｅ１は第１ビットを読み出し、ａｒｒａｙ＿ｏｅ２は第２ビットを読み出す。Ｄｐ＿ｄｂｕｓは、ビットをデータバス２０４上にラッチすることができる。Ｖｓｒａｍ＿ａｄｄはＶＳＲＡＭ２２０のアドレスを意味し、ｖｓｒａｍ＿ｒｄは、ＶＳＲＡＭ２２０から２個のマルチビットワード２２１、２２２を読み出すことができる。Ｖｓｒａｍ＿ｄｉｎ＿ｅｎ１、ｖｓｒａｍ＿ｄｉｎ＿ｅｎ２は、ＶＳＲＡＭ２２０内のマルチビットワード２２１、２２２から第１、第２ビットを読み出す。これらのビットのプログラムが成功すると、ｖｓｒａｍ＿ｃｍｐｌｘが検証を完了する。さらに、ＶＳＲＡＭ２２０内のビットを、これらを「１１」に変更することで更新する。
【００３２】
図６は、第１ショット後にプログラムショットにデータを書き込む場合の例証的なタイミングチャートである。ＶＳＲＡＭ２２０内のビット対全てが「１１」でない場合には、このビットを、別のショットにおいて再びメモリアレイ２１５内のＭＬＣに書き込むことができる。ｖｓｒａｍ＿ａｄｄは、ＶＳＲＡＭ２２０のアドレスを意味する。Ｖｓｒａｍ＿ｒｄは、ＶＳＲＡＭ２２０内のビットを読み出すことができ、また、信号Ｖｓｒａｍ＿ｎｅｅｄ＿ｐｇｍは、ＶＳＲＡＭ２２０内のビットを再度プログラムする必要があるかどうかを決定する。これらのビットの再プログラムが必要な場合は、ｖｓｒａｍ＿ｏｅ１、ｖｓｒａｍ＿ｏｅ２がＶＳＲＡＭ２２０からこれらのビットを読み出すことができ、また、Ｐｓ＿ｖｐｐｄ＿ｌａｔがこれらのビットをデータバス２０４上にラッチすることができる。再度プログラムが必要なビットはバッファ２１１、２１２に記憶される。Ａｒｒａｙ＿ａｄｄｒｅｓｓは、ビットをプログラムできる、メモリアレイ２１５内におけるＭＬＣの場所を意味する。ｐｒｏｇｒａｍ＿ｐｕｌｓｅは、これらのビットをメモリアレイ２１５内のＭＬＣ内にプログラムするための信号を生成する。この工程は、全てのビットが書き込まれ、ＶＳＲＡＭ２２０内のビット対全てが「１１」になるまで継続する。
【００３３】
前述の説明は、付属の請求項の範囲に構成要件を記載された本発明の範囲を例証するものであって、本発明の範囲を限定するものではない。これ以外の実施形態は以下の請求項の範囲内に入る。
【図面の簡単な説明】
【００３４】
【図１】従来技術におけるＭＬＣをプログラミングする工程を示す図。
【図２】本発明によりＭＬＣをプログラミングする例証的な工程を示す図。
【図３】本発明によりＭＬＣをプログラミングする回路を示す図。
【図４】本発明により第１プログラムショット内にデータを書き込む例証的なタイミングチャート。
【図５】本発明により、書き込んだデータを検証する例証的なタイミングチャート。
【図６】第１ショットの後に、本発明によりプログラムショットにデータを書き込むための例証的なタイミングチャート。
【図１】
2008108408.tif 000003
【図２】
2008108408.tif 000004
【図３】
2008108408.tif 000005
【図４】
2008108408.tif 000006
【図５】
2008108408.tif 000007
【図６】
2008108408.tif 000008