(57)【要約】【課題】  不揮発性メモリ装置及びそれのプログラム方法を提供する。【解決手段】  ここに開示された不揮発性メモリ装置及びプログラム方法は、外部から入力された複数個のデータビットを複数個のグループに組み合わせる。そして、組合結果によって実際プログラムされるデータビットを検出するデータスキャニングと、検出されたビットに対するアドレス計算を選別的に実行する。本発明では、すべてのデータビットをスキャニングする代わりに、データビットの組合によってデータスキャニングを選別的に実行するので、データスキャニングに必要となる時間及びプログラム時間を減らせる。【選択図】  図２
2006114042.tif 000002
【特許請求の範囲】
【請求項１】
入力データビットを選択的にスキャンして実際プログラムされるデータビットを検出する段階と、
前記検出されたデータビットをプログラムする段階とを含むことを特徴とする不揮発性メモリ装置のプログラム方法。
【請求項２】
前記検出されたデータビットは所定のビット単位にプログラムされることを特徴とする請求項１に記載の不揮発性メモリ装置のプログラム方法。
【請求項３】
前記入力データビットを選択的にスキャンする段階は、
前記入力データビットを複数個のグループに組み合わせて組合情報を発生する段階と、
前記組合情報に応答してアドレス情報を発生する段階とを含むことを特徴とする請求項１に記載の不揮発性メモリ装置のプログラム方法。
【請求項４】
前記アドレス情報を発生する段階では、前記組合情報に応答してカウンタを動作させることを特徴とする請求項３に記載の不揮発性メモリ装置のプログラム方法。
【請求項５】
前記入力データビットを複数個のグループに組み合わせる段階では、前記複数個の入力データビットを組み合わせることを特徴とする請求項３に記載の不揮発性メモリ装置のプログラム方法。
【請求項６】
前記入力データビットを複数個のグループに組み合わせる段階では、前記入力データビットをスキャンアドレスと組み合わせることを特徴とする請求項３に記載の不揮発性メモリ装置のプログラム方法。
【請求項７】
前記入力データビットを複数個のグループに組み合わせる段階では、前記入力データビットを複数個のスキャンアドレスと組み合わせることを特徴とする請求項３に記載の不揮発性メモリ装置のプログラム方法。
【請求項８】
前記入力データビットを複数個のグループに組み合わせる段階では、前記入力データビットを一つまたはそれ以上のスキャンセル選択信号と組み合わせることを特徴とする請求項３に記載の不揮発性メモリ装置のプログラム方法。
【請求項９】
前記データビットは２Ｎビットずつ組合されて、Ｍ個のグループ（Ｍ、Ｎは自然数）を形成することを特徴とする請求項３に記載の不揮発性メモリ装置のプログラム方法。
【請求項１０】
前記Ｍ個のグループの全部が第１値を有する場合、前記プログラムされるデータビットの個数がカウントされることを特徴とする請求項９に記載の不揮発性メモリ装置のプログラム方法。
【請求項１１】
前記Ｍ個のグループのうちの少なくとも一つのグループが第２値を有する場合、前記第２値を有する該当のグループに対するデータスキャニングを省略することを特徴とする請求項９に記載の不揮発性メモリ装置のプログラム方法。
【請求項１２】
前記検出されたデータビットをプログラムする段階では、前記アドレス情報に応答して前記検出されたデータビットを選択的にプログラムすることを特徴とする請求項３に記載の不揮発性メモリ装置のプログラム方法。
【請求項１３】
前記所定のビット単位はプログラム可能な最大ビット数に該当することを特徴とする請求項２に記載の不揮発性メモリ装置のプログラム方法。
【請求項１４】
入力データビットを選択的にスキャンして実際プログラムされるデータビットを検出するデータスキャニング部と、
前記検出されたデータビットをプログラムする書き込みドライバとを含むことを特徴とする不揮発性メモリ装置。
【請求項１５】
前記データスキャニング部は、
前記入力データビットを複数個のグループに組み合わせて組合信号を発生する組合ロジックと、
前記組合信号に応答してアドレスを発生するアドレス発生器とを含むことを特徴とする請求項１４に記載の不揮発性メモリ装置。
【請求項１６】
前記データスキャニング部は検出されたデータビットをカウントするロジックをさらに含むことを特徴とする請求項１５に記載の不揮発性メモリ装置。
【請求項１７】
前記組合ロジックは前記入力データビット、スキャンアドレス、及び／またはスキャンセル選択信号に応答して前記組合信号を発生することを特徴とする請求項１５に記載の不揮発性メモリ装置。
【請求項１８】
前記アドレス発生器は前記組合信号及び前記スキャンクロック信号に応答して前記アドレスを発生するフリップフロップを含むことを特徴とする請求項１５に記載の不揮発性メモリ装置。
【請求項１９】
前記検出されたデータビットをカウントするロジックは、前記検出されたデータビットをプログラム可能な最大ビット数だけカウントすることを特徴とする請求項１６に記載の不揮発性メモリ装置。
【請求項２０】
入力データビットを選択的にスキャンして実際プログラムされるデータビットを検出する手段と、
前記検出されたデータビットをプログラムする手段とを含むことを特徴とする不揮発性メモリ装置。
【請求項２１】
前記入力データビットを選択的にスキャンする手段は、
前記入力データビットを組み合わせる手段と、
前記入力データビットを選択的にスキャニングするためのアドレスを発生する手段とを含むことを特徴とする請求項２０に記載の不揮発性メモリ装置。
【請求項２２】
前記入力データビットを選択的にスキャンする手段は、前記プログラムされるデータビットをプログラム可能な最大ビット数だけカウントする手段をさらに含むことを特徴とする請求項２０に記載の不揮発性メモリ装置。
【請求項２３】
前記アドレスを発生する手段は、データビットのグループがプログラムされるデータを含む場合、アドレスを計算して、データビットのグループがプログラムされるデータを含まない場合、アドレス計算を省略することを特徴とする請求項２１に記載の不揮発性メモリ装置。
【請求項２４】
前記入力データビットを組み合わせる手段は、入力データビットと一つまたはそれ以上のスキャンアドレスを組み合わせる手段を含むことを特徴とする請求項２１に記載の不揮発性メモリ装置。
【請求項２５】
前記入力データビットを組み合わせる手段は、入力データビットと一つまたはそれ以上のスキャンアドレス及び／またはスキャンセル信号を組み合わせる手段を含むことを特徴とする請求項２１に記載の不揮発性メモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不揮発性メモリ装置に係り、さらに具体的にはプログラム時間を縮めることができる不揮発性メモリ装置に関する。
【背景技術】
【０００２】
不揮発性メモリ装置はドライブ電源が供給されなくてもセルに記録されたデータが消滅しないで残っている。不揮発性メモリの中でもフラッシュメモリは電気的にセルのデータを一括的に消去する機能を持っているので、コンピュータ及びメモリカードなどに広く使われている。
【０００３】
フラッシュメモリはセルとビットラインの連結状態によってＮＯＲ型とＮＡＮＤ型に区分される。ＮＯＲ型フラッシュメモリは一つのビットラインに２個以上のセルトランジスタが並列に連結された形態として、チャンネルホットエレクトロン（ｃｈａｎｎｅｌ ｈｏｔ ｅｌｅｃｔｒｏｎ）方式を使用してデータを貯蔵して、Ｆ−Ｎトンネリング（Ｆｏｗｌｅｒ−Ｎｏｒｄｈｅｉｍ ｔｕｎｎｅｌｉｎｇ）方式を使用してデータを消去する。 そして、ＮＡＮＤ型フラッシュメモリは一つのビットラインに２個以上のセルトランジスタが直列に連結された形態として、Ｆ−Ｎトンネリング方式を使用してデータを貯蔵及び消去する。一般的に、ＮＯＲ型フラッシュメモリは電流消耗が大きくて高集積化には不利であるが、高速化に容易に対処することができる長所があり、ＮＡＮＤ型フラッシュメモリはＮＯＲ型フラッシュメモリに比べて少ないセル電流を使うので、高集積化に有利な長所がある。
【０００４】
ＮＯＲ型フラッシュメモリのセルアレイは、大きく複数個のバンクで構成され、各々のバンクは複数個のセクタで構成され、各々のセクタは複数個のメモリセルで構成される。一般的に、ＮＯＲ型フラッシュメモリの消去動作はセクタ単位で実行され、プログラムはワード単位（または、バイト単位）で実行される。
【０００５】
ＮＯＲ型フラッシュメモリのセルアレイにデータをプログラムするためには、まずフラッシュメモリにプログラム命令語が入力された後、プログラムアドレスとプログラムデータがフラッシュメモリに入力される。入力されたプログラムアドレスとプログラムデータはチップ内部に一時貯蔵され、プログラムアドレスに対応されるメモリセルが選択される。続いて、プログラムデータに対応されるプログラム電圧がビットラインに印加されて、実質的なプログラムが実行される。その後、内部的にあらかじめ決められた所定のプログラム実行時間が経過するようになれば、選択されたメモリセルにデータがプログラムされたか否かを判別する検証動作が実行される。このようなプログラム及び検証動作は、選択されたメモリセルにデータが正常にプログラムされるまで繰り返して実行される。
【０００６】
一般的に、ＮＯＲ型フラッシュメモリをプログラムするのに使われるチャンネルホットエレクトロン方式では、メモリセルのドレインに４Ｖ乃至６Ｖ程度の高電圧が印加されるので、一定レベル以上のプログラム電流を要する。そして、ドレインに印加される高電圧はチップ内部に具備されたチャージポンプを通じて生成されるので、同時にプログラムすることができるメモリの個数は通常２個乃至４個に制限される。例えば、同時にプログラムすることができるビットの数が４個であるとき、１６ビットのデータは４ビットずつ分割された後、総４回にわたってメモリセルにプログラムされる。
【０００７】
フラッシュメモリのプログラム特性をよく見れば、フラッシュメモリでプログラムを実行するためには事前に該当のアドレス部分を必ず消去（すなわち、データ値を“１”に作る）しなければならないので、プログラムデータが“１”というのは、プログラム時何らのプログラム動作を実行しなくても所望するデータをプログラムしたことと同一であると言える。このようなフラッシュメモリのプログラム特性にもかかわらず、大部分のフラッシュメモリはプログラムされるデータの値が“０”であるか、“１”であるかに関わらずに各データグループに対して一定のプログラム時間を一律的に割り当てる。したがって、プログラムデータ値に関わらずにデータをプログラムするのにかかる時間は常に一定に必要となる問題がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は上述の問題点を解決するために提案されたことで、プログラム時間を縮めさせることができる不揮発性メモリ装置及び方法を提供することにある。
【課題を解決するための手段】
【０００９】
上述の課題を達成するために本発明による不揮発性メモリ装置のプログラム方法は、入力データビットを選択的にスキャンして実際プログラムされるデータビットを検出する段階と、前記検出されたデータビットをプログラムする段階とを含むことを特徴とする。
【００１０】
この実施形態において、前記検出されたデータビットは所定のビット単位にプログラムされることを特徴とする。
【００１１】
この実施形態において、前記入力データビットを選択的にスキャンする段階は、前記入力データビットを複数個のグループに組み合わせて組合情報を発生する段階と、前記組合情報に応答してアドレス情報を発生する段階とを含むことを特徴とする。
【００１２】
この実施形態において、前記アドレス情報を発生する段階では、前記組合情報に応答してカウンタを動作させることを特徴とする。
【００１３】
この実施形態において、前記入力データビットを複数個のグループに組み合わせる段階では、前記複数個の入力データビットを組み合わせることを特徴とする。
【００１４】
この実施形態において、前記入力データビットを複数個のグループに組み合わせる段階では、前記入力データビットをスキャンアドレスと組み合わせることを特徴とする。
【００１５】
この実施形態において、前記入力データビットを複数個のグループに組み合わせる段階では、前記入力データビットを複数個のスキャンアドレスと組み合わせることを特徴とする。
【００１６】
この実施形態において、前記入力データビットを複数個のグループに組み合わせる段階では、前記入力データビットを一つまたはそれ以上のスキャンセル選択信号と組み合わせることを特徴とする。
【００１７】
この実施形態において、前記データビットは２Ｎビットずつ組合されて、Ｍ個のグループ（Ｍ、Ｎは自然数）を形成することを特徴とする。
【００１８】
この実施形態において、前記Ｍ個のグループの全部が第１値を有する場合、前記プログラムされるデータビットの個数がカウントされることを特徴とする。
【００１９】
この実施形態において、前記Ｍ個のグループのうちの少なくとも一つのグループが第２値を有する場合、前記第２値を有する該当のグループに対するデータスキャニングを省略することを特徴とする。
【００２０】
この実施形態において、前記検出されたデータビットをプログラムする段階では、前記アドレス情報に応答して前記検出されたデータビットを選択的にプログラムすることを特徴とする。
【００２１】
この実施形態において、前記所定のビット単位はプログラム可能な最大ビット数に該当することを特徴とする。
【００２２】
上述の課題を達成するために本発明による不揮発性メモリ装置は、入力データビットを選択的にスキャンして実際プログラムされるデータビットを検出するデータスキャニング部と、前記検出されたデータビットをプログラムする書き込みドライバとを含むことを特徴とする。
【００２３】
この実施形態において、前記データスキャニング部は、前記入力データビットを複数個のグループで組み合わせて組合信号を発生する組合ロジックと、前記組合信号に応答してアドレスを発生するアドレス発生器とを含むことを特徴とする。
【００２４】
この実施形態において、前記データスキャニング部は検出されたデータビットをカウントするロジックをさらに含むことを特徴とする。
【００２５】
この実施形態において、前記組合ロジックは前記入力データビット、スキャンアドレス、 及び／またはスキャンセル選択信号に応答して前記組合信号を発生することを特徴とする。
【００２６】
この実施形態において、前記アドレス発生器は前記組合信号及び前記スキャンクロック信号に応答して前記アドレスを発生するフリップフロップを含むことを特徴とする。
【００２７】
この実施形態において、前記検出されたデータビットをカウントするロジックは、前記検出されたデータビットをプログラム可能な最大ビット数だけカウントすることを特徴とする。
【００２８】
上述の課題を達成するために本発明による不揮発性メモリ装置は、入力データビットを選択的にスキャンして実際プログラムされるデータビットを検出する手段と、前記検出されたデータビットをプログラムする手段とを含むことを特徴とする。
【００２９】
この実施形態において、前記入力データビットを選択的にスキャンする手段は、前記入力データビットを組み合わせる手段と、前記入力データビットを選択的にスキャニングするためのアドレスを発生する手段とを含むことを特徴とする。
【００３０】
この実施形態において、前記入力データビットを選択的にスキャンする手段は、前記プログラムされるデータビットをプログラム可能な最大ビット数だけカウントする手段をさらに含むことを特徴とする。
【００３１】
この実施形態において、前記アドレスを発生する手段は、データビットのグループがプログラムされるデータを含む場合、アドレスを計算して、データビットのグループがプログラムされるデータを含まない場合、アドレス計算を省略することを特徴とする。
【００３２】
この実施形態において、前記入力データビットを組み合わせる手段は、入力データビットと、一つまたはそれ以上のスキャンアドレスを組み合わせる手段を含むことを特徴とする。
【００３３】
この実施形態において、前記入力データビットを組み合わせる手段は、入力データビットと、一つまたはそれ以上のスキャンアドレス及び／またはスキャンセル信号を組み合わせる手段を含むことを特徴とする。
【発明の効果】
【００３４】
本発明によると、不揮発性半導体メモリ装置でデータをプログラムするのにかかる平均時間が効果的に短縮される。
【発明を実施するための最良の形態】
【００３５】
以下、本発明による実施形態を添付の図を参照して詳細に説明する。
【００３６】
本発明の新規な不揮発性メモリ装置及びそれのプログラム方法は、外部から入力された複数個のデータビットを複数個のグループに組み合わせる。そして、組合結果によって、実際プログラムされるデータビットを検出するデータスキャニングと、検出されたビットに対するアドレス計算を選別的に実行する。
【００３７】
本発明では複数個のデータビットのうちの実際プログラムされるデータビットだけ選び出して所定ビット単位にプログラムする。このようなプログラム方式を“ビットスキャニングプログラム方式（Ｂｉｔ Ｓｃａｎｎｉｎｇ Ｐｒｏｇｒａｍ Ｓｃｈｅｍｅ）と称する。特に、本発明ではすべてのデータビットをスキャニングする代わりに、データビットの組合によってデータスキャニングを選別的に実行するので、データスキャニングにかかる時間が最小化され、データをプログラムするのにかかる平均時間が効果的に短縮される。
【００３８】
フラッシュメモリのような不揮発性メモリでプログラムを実行するためには事前に該当のアドレス部分を必ず消去（データ値を“１”の状態に作る）するようになっている。不揮発性メモリで実行されるプログラム動作はデータ“１”をデータ“０”に変換させることを意味する。したがって、プログラムデータが“１”というのはプログラム時何らのプログラム動作を実行しなくても所望するデータをプログラムしたことと同一であると言える。したがって、本発明ではプログラム時間が効果的に短縮されるようにデータ値が“０”であること（すなわち、実際プログラムされるデータビット）だけ選び出してプログラムを実行する。特に、本発明ではプログラムに必要となる時間をさらに縮めさせるように、データの組合によって前記スキャニング過程を選別的に実行する。
【００３９】
図１は本発明の望ましい実施形態による半導体メモリ装置１００の構成を示すブロック図である。
【００４０】
一般的に、半導体メモリ装置はメモリセルで構成されたアレイ領域と、前記アレイ領域の行及び列を選択するための周辺回路を具備する。もし、前記アレイ領域が複数個のアレイブロックに分離される場合、それによって該当する周辺回路もそれに各々対応されるように分離される。このようなアレイ領域の構成はこの分野の通常の知識を持つ者などに自明である。以下説明されるアレイ領域は複数個のアレイブロックのうちの一つのアレイブロック及びここに係わる周辺回路（特に、プログラムと係わる周辺回路）のみを図示した。特に、図１に示した半導体メモリ装置１００はＮＯＲ型フラッシュメモリを例として挙げられたものであり、本発明による並列ビットスキャニングプログラム方式はＮＯＲ型フラッシュメモリではなく、他の不揮発性メモリにも適用可能である。
【００４１】
図１を参照すると、本発明による半導体メモリ装置１００はメモリセルアレイ１０、入出力バッファ２０、データスキャニング部３０、書き込みドライバ４０、列選択部５０、感知増幅部６０、及び制御ロジック９０を含む。
【００４２】
メモリセルアレイ１０は複数個のＮＯＲ型フラッシュメモリセルで構成される。入出力バッファ２０はメモリセルアレイ１０に書き込まれるデータと、メモリセルアレイ１０から感知されたデータを貯蔵する。データスキャニング部３０は入出力バッファ２０から入力されたデータを組み合わせる。データスキャニング部３０は前記組合結果によってデータスキャニングを選別的に実行する。データスキャニング部３０はスキャニング過程を通じて“０”の値を有するビットを捜し出して、それのアドレスを計算する。データスキャニング部３０は捜し出した“０”のビットの個数をカウントする。データスキャニング部３０はカウントされた“０”のビットの個数が所定の同時プログラムビット数ＢｉｔＭａｘに至るようになれば、制御ロジック９０の制御に応答して検索された該当のデータビットとアドレス情報を書き込みドライバ４０に伝送する。ここで、同時プログラムビット数ＢｉｔＭａｘは書き込みドライバ４０が同時にプログラムすることができる最大ビット数を示す。前記同時プログラムビット数ＢｉｔＭａｘは回路の構成によって多様に構成されることができるが、本発明では４ビットで構成される場合を例をあげて説明する。
【００４３】
データスキャニング部３０は、スキャンデータ発生部３１、ビットカウンタ３３、及びアドレスカウンタ３５で構成される。スキャンデータ発生部３１はデータスキャニング部３０の選別的なスキャニング動作を制御する。このためにスキャンデータ発生部３１は入出力バッファ２０から入力されたデータビットを組み合わせて、複数個のグループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８を発生する複数個の信号組合回路３１１、 ３１２、 ３１４、 ３１８を含む。スキャンデータ発生部３１から発生された複数個のグループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８は各々ビットカウンタ３３とアドレスカウンタ３５に入力される。
【００４４】
ビットカウンタ３３はスキャンデータ発生部３１から発生された複数個のグループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８に応答して、実際プログラムされるデータビット（すなわち、“０”のデータビット）を捜し出して、それの個数をカウントする。アドレスカウンタ３５はスキャンデータ発生部３１から発生された複数個のグループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８に応答して、実際プログラムされるデータビット（すなわち、“０”のデータビット）のアドレスを計算する。このようなビットカウンタ３３及びアドレスカウンタ３５のカウント動作は制御ロジック９０の制御によって実行される。
【００４５】
ビットカウンタ３３で実際プログラムされるデータビット（すなわち、“０”のデータビット）を捜し出す動作は、実質的には入出力バッファ２０から入力されたデータビットをスキャニングすることを基礎にする。しかし、本発明ではすべてのデータビットに対して順なスキャニングを実行する代わりに、スキャンデータ発生部３１から発生された複数個のグループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８の値によって選択的にスキャニングを実行する。そして、スキャニングが必要ないと判断される場合にはスキャニング動作を省略する。その結果、データスキャンに必要となる時間が減るようになり、それによってプログラム時間がさらに減るようになる。
【００４６】
書き込みドライバ４０はデータスキャニング部３０から入力されたスキャン結果（すなわち、 所定個数の“０”のデータビットとアドレス情報）を利用してセルアレイ１０をプログラムする。この際、実際にプログラムされるデータビットの個数は同時プログラムビット数ＢｉｔＭａｘと同様である。書き込みドライバ４０の内部には入出力バッファ２０から受け入れたデータを貯蔵するラッチ（図示しない）が具備されている。書き込みドライバ４０はプログラムの時、すべてのデータをプログラムせず、実際プログラムされるデータビット（すなわち、“０”の値を有するデータビット）のみを選別的にプログラムする。そして、消去状態のデータビット（すなわち、“１”の値を有するデータビット）はプログラムしない。列選択部５０は書き込みドライバ４０によって実際プログラムされるセルアレイ１０のビットライン（すなわち、データスキャニング部３０から発生されたアドレス情報に対応されるビットライン）を選択する。
【００４７】
メモリセルアレイ１０にデータが書き込まれた後、メモリセルアレイ１０に書き込まれたデータは感知増幅部６０を通じて感知及び増幅される。感知増幅部６０によって感知及び増幅されたデータは入出力バッファ２０の該当のアドレスに貯蔵された後、外部に出力される。感知増幅部６０を通じて感知及び増幅されたデータは、この分野に対する通常の知識を持つ者によく知られたように、プログラム検証部（図示しない）を通じてプログラムが正常に実行されたか（パスであるか、フェイルであるか）を検証（ｖｅｒｉｆｙ）するのに使われる。そして、検証結果、プログラムが正常に実行されないと判明されれば（すなわち、フェイルであれば）、該当のデータは再プログラムされる。本発明によるビットスキャニングプログラム方法は初期プログラムだけでなく、再プログラムの時にも適用可能である。
【００４８】
上述のように、本発明による半導体メモリ装置１００では、実際プログラムされるデータビットを捜し出すデータスキャニング過程をすべてのデータビットに対して実行せず、入力されたデータビットの組合によって選別的に実行する。その結果、データスキャンに必要となる時間が減るようになり、プログラムに必要となる時間がさらに減るようになる。
【００４９】
図２は本発明の望ましい実施形態による不揮発性メモリ装置のプログラム方法を示すフローチャートであり、図３は本発明による不揮発性メモリ装置のプログラムの時の動作タイミングを示す図である。
【００５０】
図２及び図３を参照すると、本発明によるプログラム方法は入力されたデータビットを組み合わせて複数個のスキャンデータグループを形成する（１１００段階）。このためにスキャンデータ発生部３１は、入出力バッファ２０から入力された複数個のデータビットを組み合わせる。そして、スキャンデータ発生部３１は組合結果としてＭ個クループ（Ｍは自然数）のスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８を発生する。各グループ別スキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８は、入力されたデータビットが２Ｎビットずつ組合されて発生される（Ｎは自然数）。各スキャンデータグループＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８の発生過程に対しては下の図４Ａ乃至図４Ｄで詳細に説明される。
【００５１】
１１００段階でデータビットが組合されてＭ個グループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８が発生された後、前記スキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８によってデータビットに対するスキャニングが選択的に実行される（１２００段階）。
【００５２】
以下、図３に示したように４個グループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８が発生された場合について説明する。例えば、現在スキャニングされる４個グループのスキャンデータのうちの少なくとも一つのデータが“１”の値を有すれば、“１”の値を有するグループに対応されるデータビットのスキャニングは省略される。そして、現在スキャニングされる位置で４個グループのスキャンデータの全部が“０”の値を有すれば、該当の位置に実際プログラムされるデータビットが存在すると判断して、ビットカウント値ＢｉｔＣｏｕｎｔを１だけ増加させる。ビットカウンタ３３で実行されるビットカウント動作は下の図５を参照して詳細に説明される。
【００５３】
１２００段階で実際プログラムされるデータビットが検出されれば、アドレスカウンタ３５はＭ個グループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８に応答して、検出されたデータビットのアドレスを計算する（１３００段階）。アドレスカウンタ３５の動作及び構成は下の図６及び図７を参照して詳細に説明される。
【００５４】
１２００段階及び１３００段階で実際プログラムされるデータビットとアドレスが計算された後、前記データビットは所定の同時プログラムビット数ＢｉｔＭａｘ単位でプログラムされる（１４００段階）。このためにビットカウンタ３３は、図３に示したように、カウントされた結果ＢｉｔＣｏｕｎｔが同時プログラムビット数ＢｉｔＭａｘになるまでカウンティング動作を実行した後、“０”でリセットされる。ビットカウンタ３３は、前記同時プログラムビット数ＢｉｔＭａｘ単位のプログラムが実行される間リセットされた値をそのまま維持する。そして、ビットカウンタ３３はスキャン開始信号ＳｃａｎＳｔａｒｔに応答して残りのデータビットに対するスキャン及びカウント動作を実行する。このような選択的にデータスキャニングを実行するプログラム方法は、プログラムされるデータビット数が増加するほど、プログラム時間の短縮効果はさらに大きくなるようになる。
【００５５】
図４Ａ乃至図４Ｄは図１に示したスキャンデータ発生部に含まれた信号組合回路の回路図である。図４Ａには第１グループのスキャンデータＳｃａｎＤａｔａ１を発生する第１信号組合回路３１１の構成が図示されており、図４Ｂには第２グループのスキャンデータＳｃａｎＤａｔａ２を発生する第２信号組合回路３１２の構成が図示されている。そして、図４Ｃには第３グループのスキャンデータＳｃａｎＤａｔａ４を発生する第３信号組合回路３１４の構成が図示されており、図４Ｄには第４グループのスキャンデータＳｃａｎＤａｔａ８を発生する第４信号組合回路３１８の構成が各々図示されている。
【００５６】
図４Ａを参照すると、第１信号組合回路３１１は外部から入力されたスキャンセル選択信号ＳｃａｎＣｅｌｌＳｅｌｅｃｔ＜ｉ＞に応答して、入出力バッファ２０から入力された各々のデータビットＳｃａｎＤａｔａ＜ｉ＞を選択的に出力する。第１信号組合回路３１１から発生されたデータは第１グループのスキャンデータＳｃａｎＤａｔａ１と呼ばれる。第１信号組合回路３１１から発生された第１グループのスキャンデータＳｃａｎＤａｔａ１は、入出力バッファ２０から入力された各々のデータビットＳｃａｎＤａｔａ＜ｉ＞と実質的に同一のデータ値を有する。
【００５７】
図４Ｂを参照すると、第２信号組合回路３１２は入出力バッファ２０から入力されたデータビットＳｃａｎＤａｔａ＜ｉ＞の連続された２個のビット（すなわち、２１ビット）を組み合わせて第２グループのスキャンデータＳｃａｎＤａｔａ２を発生する。第２グループのスキャンデータＳｃａｎＤａｔａ２は、現在のスキャンアドレスが含まれた２ビットのデータのうちに“０”がなければ“１”の値を有する第２グループのスキャンデータＳｃａｎＤａｔａ２を出力して、“０”が一つでも存在すれば“０”の値を有する第２グループのスキャンデータＳｃａｎＤａｔａ２を出力する。このために第２信号組合回路３１２はスキャンアドレスＳｃａｎＡｄｄｒｅｓｓ＜４＞、ＳｃａｎＡｄｄｒｅｓｓ＜５＞を参照して、連続された２個のビット（すなわち、２１ビット）を組み合わせる。このような第２グループのスキャンデータＳｃａｎＤａｔａ２の値は入力されたデータビットＳｃａｎＤａｔａ＜ｉ＞ のうち連続された２個のビットに対する論理積結果と同様である。
【００５８】
図４Ｃを参照すると、第３信号組合回路３１４は入出力バッファ２０から入力されたデータビットＳｃａｎＤａｔａ＜ｉ＞の連続された４個のビット（すなわち、２２ビット）を組み合わせて第３グループのスキャンデータＳｃａｎＤａｔａ４を発生する。第３グループのスキャンデータＳｃａｎＤａｔａ４は、現在のスキャンアドレスが含まれた４ビットのデータのうち“０”がなければ“１”の値を有する第３グループのスキャンデータＳｃａｎＤａｔａ４を出力して、“０”が一つでも存在すれば“０”の値を有する第３グループのスキャンデータＳｃａｎＤａｔａ４を出力する。このために第３信号組合回路３１４はスキャンアドレスＳｃａｎＡｄｄｒｅｓｓ＜５＞を参照して、連続された４個のビット（すなわち、２２ビット）を組み合わせる。このような第３グループのスキャンデータＳｃａｎＤａｔａ４の値は入力されたデータビットＳｃａｎＤａｔａ＜ｉ＞のうち連続された４個のビットに対する論理積結果と同様である。
【００５９】
図４Ｄを参照すると、第４信号組合回路３１８は入出力バッファ２０から入力されたデータビットＳｃａｎＤａｔａ＜ｉ＞の連続された８個のビット（すなわち、２３ビット）を組み合わせて第４グループのスキャンデータＳｃａｎＤａｔａ８を発生する。第４グループのスキャンデータＳｃａｎＤａｔａ８は、現在のスキャンアドレスが含まれた８ビットのデータのうちの“０”がなければ“１”の値を有する第３グループのスキャンデータＳｃａｎＤａｔａ８を出力して、“０”が一つでも存在すれば“０”の値を有する第４グループのスキャンデータＳｃａｎＤａｔａ８を出力する。このような第４グループのスキャンデータＳｃａｎＤａｔａ８の値は入力されたデータビットＳｃａｎＤａｔａ＜ｉ＞のうち連続された８個のビットに対する論理積結果と同様である。
【００６０】
以下で詳細に説明するが、第１乃至第４信号組合回路３１１、３１２、３１４、３１８から発生された第１乃至第４グループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８は、実際にプログラムされるデータの個数及びアドレスをカウントするのに使われる。特に、本発明では前記スキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８の値によって選別的なスキャン動作を実行して、実際プログラムされるビットを捜し出して、実際プログラムされるビットのアドレスを計算する。このためにビットカウンタ３３及びアドレスカウンタ３５の動作をよく見ると、次のようになる。
【００６１】
図５は図１に示したビットカウンタ３３の動作を示すフローチャートである。
【００６２】
図５を参照すると、ビットカウンタ３３はまずカウントされた結果ＢｉｔＣｏｕｎｔ（すなわち、カウントされた実際プログラムされるビット数）が所定の同時プログラムビット数ＢｉｔＭａｘと同様であるか、または最後のデータに対するスキャンが実行されたか否かを判別する（３３１段階）。３３１段階での判別結果、カウントされた結果ＢｉｔＣｏｕｎｔが同時プログラムビット数ＢｉｔＭａｘと同様であるか、最後のデータに対するスキャンが実行されたら、カウント動作を終了する。そして、３３１段階での判別結果、カウントされた結果ＢｉｔＣｏｕｎｔが同時プログラムビット数ＢｉｔＭａｘと同一ではないか、最後のデータに対するスキャンが実行されなかったら、ビットカウンタ３３は現在スキャン位置に該当するスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８のうちのいずれか一つに“１”の値が存在するか否かを判別する（３３３段階）。
【００６３】
３３３段階での判別結果、現在スキャン位置に該当するスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８のうちのいずれか一つに“１”の値が存在しなければ、すなわち該当の位置のすべてのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８が“０”の値を有すれば、スキャニングされている現在のビットを実際プログラムされるデータとして判定する。その後、カウント値ＢｉｔＣｏｕｎｔを１だけ増加させる（３３７段階）。
【００６４】
そして、３３３段階での判別結果、現在スキャン位置に該当するスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８のうちのいずれか一つに“１”の値が存在すれば、“１”の値を有する該当のビットに対するスキャニングを省略する（３３５段階）。この場合、現在スキャニングされている位置の第４ グループのスキャンデータＳｃａｎＤａｔａ８値が“１”であれば、ここに該当する８ビットのデータが全部プログラムされないと判定して、８ビットのデータビットに対するスキャニングを省略する。そして、現在スキャニングされている位置の第３グループのスキャンデータＳｃａｎＤａｔａ４値が“１”であれば、ここに該当する４ビットのデータに対するスキャニングを省略する。同様に、現在スキャニングされている位置の第２グループのスキャンデータＳｃａｎＤａｔａ２値が“１”であれば、２ビットのデータに対するスキャニングを省略する。そして、現在スキャニングされている位置の第１グループのスキャンデータＳｃａｎＤａｔａ１値が“１”であれば、該当のビットはプログラムされないビットと判定して、すぐ次のビットに対するスキャニングを実行する。
【００６５】
このようなビットカウンタ３３のカウンティング動作はカウントされた結果ＢｉｔＣｏｕｎｔが所定の同時プログラムビット数ＢｉｔＭａｘに到逹するか、または最後のデータビットがスキャンされるまで繰り返される。
【００６６】
図６は図１に示したアドレスカウンタ３５の動作を示すフローチャートであり、図７は図１及び図６に示したアドレスカウンタ３５の構成例を示す回路図である。図７に示したアドレスカウンタ３５は６ビットのアドレスＳｃａｎＡｄｄｒｅｓｓ＜５:０＞を計算するため、６個のフリップフロップＤＦＦ＿０、ＤＦＦ＿１、…、ＤＦＦ＿５と、６個のデータ入力部とを含む。各々のデータ入力部は、現在のページが最後のページであるか否かを示す信号ＰａｇｅＦｉｎａｌ、ＰａｇｅＦｉｎａ２、…、ＰａｇｅＦｉｎａ８と、同時プログラムビット数だけビットが検索されたか否かを示す情報ＢｉｔＭａｘに応答して、複数個のグループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８に対する論理演算を実行する。データ入力部で実行された論理演算結果によって、対応されるフリップフロップのデータ入出力動作が制御される。各々のフリップフロップは外部から入力されたリセット信号ＣｏｕｎｔｅｒＲｅｓｅｔ信号によってリセットされる。そして、各々のフリップフロップはスキャンクロック信号ＳｃａｎＣｌｏｃｋに応答してアドレスカウンティングを実行する。スキャンクロック信号ＳｃａｎＣｌｏｃｋは図３に示したように、スキャン動作が開始された後ＳｃａｎＳｔａｒｔ発生されるクロック信号として、スキャン動作が実行される間にだけ活性化され、プログラム動作が実行される間には非活性化される。スキャンデータＳｃａｎＤａｔａ１、 ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８の値によるアドレスカウンタ３５のアドレスカウント動作は次のようになる。
【００６７】
図６及び図７を参照すると、アドレスカウンタ３５はまずビットカウンタ３３でカウントされた結果ＢｉｔＣｏｕｎｔが所定の同時プログラムビット数ＢｉｔＭａｘと同一であるか、または最後のデータに対するスキャンが実行されたか否かを判別する（３５１段階）。３５１段階での判別結果、カウントされた結果ＢｉｔＣｏｕｎｔが同時プログラムビット数ＢｉｔＭａｘと同様であるか、最後のデータに対するスキャンが実行されたら、アドレスカウント動作を終了する。
【００６８】
そして、３５１段階での判別結果、カウントされた結果ＢｉｔＣｏｕｎｔが同時プログラムビット数ＢｉｔＭａｘと同一ではないか、最後のデータに対するスキャンが実行されなかったら、アドレスカウンタ３５は現在スキャニングされている位置の第４グループのスキャンデータＳｃａｎＤａｔａ８が“０”であるか否かを判別する（３５３段階）。
【００６９】
３５３段階での判別結果、現在スキャニングされている位置の第４グループのスキャンデータＳｃａｎＤａｔａ８が“０”ではなければ（すなわち、“１”の値を有すれば）、連続された８ビットのデータが全部プログラムされないと判定する。したがって、アドレスカウンタ３５はプログラムされない８ビットのデータビットに対するアドレスをスキップ(ｓｋｉｐ)するように、アドレスカウント値ＡｄｄＣｏｕｎｔを８だけ増加させる（３５４段階）。そして、３５３段階での判別結果、現在スキャニングされている位置の第４グループのスキャンデータＳｃａｎＤａｔａ８が“０”であれば、アドレスカウンタ３５は現在スキャニングされている位置の第３グループのスキャンデータＳｃａｎＤａｔａ４が“０”であるか否かを判別する（３５５段階）。
【００７０】
３５５段階での判別結果、現在スキャニングされている位置の第３グループのスキャンデータＳｃａｎＤａｔａ４が“０”ではなければ、連続された４ビットのデータが全部プログラムされないと判定する。したがって、アドレスカウンタ３５はプログラムされない ４ビットのデータビットに対するアドレスをスキップするように、アドレスカウント値ＡｄｄＣｏｕｎｔを４だけ増加させる（３５６段階）。そして、３５５段階での判別結果、現在スキャニングされている位置の第３グループのスキャンデータＳｃａｎＤａｔａ４が“０”であれば、アドレスカウンタ３５は現在スキャニングされている位置の第２グループのスキャンデータＳｃａｎＤａｔａ２が“０”であるか否かを判別する（３５７段階）。
【００７１】
続いて、３５７段階での判別結果、現在スキャニングされている位置の第２グループのスキャンデータＳｃａｎＤａｔａ２が“０”ではなければ、連続された２ビットのデータが全部プログラムされないと判定する。したがって、アドレスカウンタ３５はプログラムされない２ビットのデータビットに対するアドレスをスキップするように、アドレスカウント値ＡｄｄＣｏｕｎｔを２だけ増加させる（３５８段階）。そして、３５７段階での判別結果、現在スキャニングされている位置の第２グループのスキャンデータＳｃａｎＤａｔａ２が “０”であれば、アドレスカウンタ３５は現在スキャニングされている位置の第１グループのスキャンデータＳｃａｎＤａｔａ１が“０”であるか否かを判別する。その後、現在スキャニングされている位置の第１グループのスキャンデータＳｃａｎＤａｔａ１が“０”であれば、アドレスカウント値ＡｄｄＣｏｕｎｔを１だけ増加させる（３５９段階）。
【００７２】
このようなアドレスカウンティング方法によると、複数個のグループのスキャンデータＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８の値によって、実際プログラムされるデータビットのアドレスが直接計算される。このようなアドレス計算方式は、順なアドレスカウンティング動作を通じてアドレスを決めず、実際プログラムされるビットに対するアドレス計算のみを選別的に実行するので、アドレス計算に必要となる時間を効果的に減らすことができる。
【００７３】
図８乃至図１０を参照して、本発明によるプログラム方法、及びこれにより得られる効果をよく見れば、次のようである。
【００７４】
図８及び図９は従来技術によるプログラム例を示す図である。図８にはプログラムされるデータの値に構わずに所定のビット単位にプログラムする例が図示されている。そして、図９にはプログラムされるデータが“０”の値を有するか、“１”の値を有するかによって選別的にプログラムする例が図示されている。
【００７５】
図８に示したプログラム方法では、プログラムされるデータの値が“０”であるか、“１”であるかに構わずに各データグループに対して一定のプログラム時間を一律的に割り当てる。この場合、同時プログラムビット数ＢｉｔＭａｘが４ビットの場合、４ワードのプログラムを実行するのに総１６回のプログラム時間が必要となる。
【００７６】
これとは異なり、図９に示したプログラム方法では、プログラムされるデータの値が“０”であるか、“１”であるかによって実際プログラムされるデータを選び出して選別的にプログラムを実行する。この場合、同時プログラムビット数ＢｉｔＭａｘが４ビットの場合、４ワードのプログラムを実行するのに総４回のプログラム時間が必要となる。しかし、図９に示したプログラム方法ではすべてのデータビットに対して順なデータスキャンを実行（図９の矢印参照）した後、スキャン結果によってプログラムを実行する。したがって、データスキャンに多くの時間が必要となるという短所がある。
【００７７】
図１０は本発明によるプログラム例を示す図である。
【００７８】
図１０を参照すると、本発明によるプログラム方法は、複数個のデータビットに対するデータ組合結果ＳｃａｎＤａｔａ１、ＳｃａｎＤａｔａ２、ＳｃａｎＤａｔａ４、ＳｃａｎＤａｔａ８によってデータスキャニングを選択的に実行して（図１０の矢印参照）、プログラムされるデータビットに対するアドレス計算を選別的に実行する。
【００７９】
例えば、現在スキャニングされているビットの位置に該当する第４グループのスキャンデータＳｃａｎＤａｔａ８の値が“１”であれば、８ビットに対するデータスキャニングを省略して、アドレス値を８だけ増加させる。そして、現在スキャニングされているビットの位置に該当する第３グループのスキャンデータＳｃａｎＤａｔａ４の値が“１”であれば、４ビットに対するデータスキャニングを省略して、アドレス値を４だけ増加させる。そして、現在スキャニングされているビットの位置に該当する第２グループのスキャンデータＳｃａｎＤａｔａ２の値が“１”であれば、２ビットに対するデータスキャニングを省略して、アドレス値を２だけ増加させる。このような選別的なデータスキャニング及びアドレス計算によると、一部のデータに対するスキャニングだけが選別的に実行されるので（図１０の矢印参照）、データスキャニングに必要となる時間が顕著に減るようになる。
【００８０】
上述のように、本発明による不揮発性メモリ装置及びそれのプログラム方法は、外部から入力された複数個のデータビットを複数個のグループで組み合わせ、組合結果によってデータビットを選択的にスキャンする。その結果、実際プログラムされるデータを捜し出すデータスキャニング動作が最小化される。そして、本発明では検出されたビットに対するアドレス計算のみを選別的に実行するので、アドレス計算に必要となる時間も効果的に減らすことができる。その結果、プログラムに必要となる時間を効果的に減らすことができるようになる。
【００８１】
以上のように図面と明細書で最適な実施形態が開示されてきた。ここで特定の用語が使われたが、これはただ本発明を説明するための目的として使われたことであり、意味限定や特許請求の範囲に記載した本発明の範囲を制限するために使われたことではない。したがって、本技術分野の通常の知識を持った者であれば、今後多様な変形及び均等な他の実施形態が可能であるという点を理解するであろう。したがって、本発明の真正な技術的保護範囲は特許請求範囲の技術的思想によって決められなければならないであろう。
【図面の簡単な説明】
【００８２】
【図１】本発明の望ましい実施形態による不揮発性半導体メモリ装置のブロック図である。
【図２】本発明の望ましい実施形態による不揮発性メモリ装置のプログラム方法を示すフローチャートである。
【図３】本発明による不揮発性メモリ装置のプログラム時の動作タイミングを示す図である。
【図４Ａ】図１に示したスキャンデータ発生部に含まれた信号組合回路の回路図である。
【図４Ｂ】図１に示したスキャンデータ発生部に含まれた信号組合回路の回路図である。
【図４Ｃ】図１に示したスキャンデータ発生部に含まれた信号組合回路の回路図である。
【図４Ｄ】図１に示したスキャンデータ発生部に含まれた信号組合回路の回路図である。
【図５】図１に示したビットカウンタの動作を示すフローチャート図である。
【図６】図１に示したアドレスカウンタの動作を示すフローチャート図である。
【図７】図１及び図６に示したアドレスカウンタの構成例を示す回路図である。
【図８】従来技術によるプログラム例を示す図である。
【図９】従来技術によるプログラム例を示す図である。
【図１０】本発明によるプログラム例を示す図である。
【符号の説明】
【００８３】
１０    メモリセルアレイ
２０    入出力バッファ
３０    データスキャニング部
３１    スキャンデータ発生部
３３    ビットカウンタ
３５    アドレスカウンタ
４０    書き込みドライバ
５０    列選択部
６０    感知増幅部
９０    制御ロジック
【図１】
2006114042.tif 000003
【図２】
2006114042.tif 000004
【図３】
2006114042.tif 000005
【図４Ａ】
2006114042.tif 000006
【図４Ｂ】
2006114042.tif 000007
【図４Ｃ】
2006114042.tif 000008
【図４Ｄ】
2006114042.tif 000009
【図５】
2006114042.tif 000010
【図６】
2006114042.tif 000011
【図７】
2006114042.tif 000012
【図８】
2006114042.tif 000013
【図９】
2006114042.tif 000014
【図１０】
2006114042.tif 000015