(57)【要約】【課題】加速化されたビットスキャニングプログラムを実行する不揮発性メモリ装置を提供する。【解決手段】ここに開示された不揮発性メモリ装置は、各々がプログラムデータを貯蔵する複数個のメモリセルを具備したメモリセルアレイ、第１値を有するプログラムデータを検出するデータスキャニング部、および前記データスキャニング部によって検出された結果に対応するメモリセルをプログラムするプログラム部を含む。【選択図】図１
2006085896.tif 000002
【特許請求の範囲】
【請求項１】
メモリセルにデータをプログラムする不揮発性メモリ装置において、
各々がプログラムデータを貯蔵する複数個のメモリセルを具備したメモリセルアレイと、
第１値を有するプログラムデータを検出するデータスキャニング部と、
前記データスキャニング部の前記検出結果に応答して前記複数個のメモリセルをプログラムするプログラム部とを含むことを特徴とする不揮発性メモリ装置。
【請求項２】
前記データスキャニング部は所定の倍数に該当する前記プログラムデータをスキャニングすることを特徴とする請求項１に記載の不揮発性メモリ装置。
【請求項３】
前記データスキャニング部は複数個のスキャンクロック信号を発生し、
前記データスキャニング部は前記スキャンクロック信号に応答して前記第１値を有するプログラムデータを検出することを特徴とする請求項１に記載の不揮発性メモリ装置。
【請求項４】
前記プログラム部はスキャンクロック信号に応答して前記メモリセルをプログラムすることを特徴とする請求項３に記載の不揮発性メモリ装置。
【請求項５】
前記データスキャニング部は前記第１値を有するプログラムデータに対する順方向スキャンと逆方向スキャンとを同時に実行することを特徴とする請求項３に記載の不揮発性メモリ装置。
【請求項６】
前記データスキャニング部は内部クロックの各周期ごとに少なくとも二つのスキャンクロック信号を発生することを特徴とする請求項３に記載の不揮発性メモリ装置。
【請求項７】
前記データスキャニング部は前記メモリセルのプログラミングに応答して前記スキャンクロック信号の発生を中止させることを特徴とする請求項４に記載の不揮発性メモリ装置。
【請求項８】
前記データスキャニング部は前記各々の検出結果に応答してビットライン活性化信号を発生し、
前記プログラム部は所定個数の検出結果に応答して前記ビットライン活性化信号に対応するメモリセルをプログラムすることを特徴とする請求項１に記載の不揮発性メモリ装置。
【請求項９】
前記データスキャニング部は前記各々の検出結果に同期した信号を発生し、
前記プログラム部は前記各々の同期信号に応答してカウンタ値を増加させるカウンタを含み、
前記プログラム部は前記カウンタ値に応答して前記検出されたプログラムデータに対応する前記メモリセルをプログラムすることを特徴とする請求項１に記載の不揮発性メモリ装置。
【請求項１０】
前記データスキャニング部は前記カウンタ値に応答して前記第１値を有するプログラムデータ部分の検出を中止させることを特徴とする請求項９に記載の不揮発性メモリ装置。
【請求項１１】
前記カウンタは前記メモリセルのプログラミングに応答して前記カウンタ値をリセットすることを特徴とする請求項９に記載の不揮発性メモリ装置。
【請求項１２】
前記プログラム部は前記メモリセルのプログラミングを検証する感知部を含むことを特徴とする請求項１に記載の不揮発性メモリ装置。
【請求項１３】
前記感知部は前記プログラムデータに対応する前記メモリセルに貯蔵されているデータを読み出し、前記読み出し結果を前記プログラムデータと比較することによって前記プログラミングを検証することを特徴とする請求項１２に記載の不揮発性メモリ装置。
【請求項１４】
複数個のメモリセルの各々に対応するプログラムデータを受け入れる段階と、
前記プログラムデータをスキャニングして第１値を有するプログラムデータを検出する段階と、
前記検出結果に応答して前記メモリセルをプログラムする段階とを含むことを特徴とする不揮発性メモリ装置のプログラム方法。
【請求項１５】
前記第１値を有するプログラムデータは所定の倍数個だけ検出されることを特徴とする請求項１４に記載の不揮発性メモリ装置のプログラム方法。
【請求項１６】
前記第１値を有するプログラムデータを検出する段階は、
複数個のスキャンクロック信号を発生する段階と、
前記スキャンクロック信号に応答して前記第１値を有するプログラムデータを検出する段階とを含むことを特徴とする請求項１４に記載の不揮発性メモリ装置のプログラム方法。
【請求項１７】
前記メモリセルのプログラミングは前記スキャンクロック信号に応答して実行されることを特徴とする請求項１６に記載の不揮発性メモリ装置のプログラム方法。
【請求項１８】
前記プログラムデータのスキャニングは順方向スキャンと逆方向スキャンが同時に実行されることを特徴とする請求項１６に記載の不揮発性メモリ装置のプログラム方法。
【請求項１９】
前記メモリセルのプログラミング時、前記スキャンクロック信号の発生は中止されることを特徴とする請求項１６に記載の不揮発性メモリ装置のプログラム方法。
【請求項２０】
前記メモリセルをプログラムする段階は、
前記各々の検出結果に応答してビットライン活性化信号を発生する段階と、
所定個数の検出結果に応答して前記ビットライン活性化信号に該当する前記メモリセルをプログラムする段階とを含むことを特徴とする請求項１６に記載の不揮発性メモリ装置のプログラム方法。
【請求項２１】
前記メモリセルをプログラムする段階は、
前記各々の検出結果に同期した信号を発生する段階と、
前記各々の同期信号に応答してカウンタ値を増加させる段階と、
前記カウンタ値に応答して前記検出されたプログラムデータに対応する前記メモリセルをプログラムする段階とを含むことを特徴とする請求項１６に記載の不揮発性メモリ装置のプログラム方法。
【請求項２２】
前記スキャニングは前記カウンタ値に応答して前記スキャニングが中止されることを特徴とする請求項２１に記載の不揮発性メモリ装置のプログラム方法。
【請求項２３】
前記カウンタ値は前記メモリセルのプログラミングに応答してリセットされることを特徴とする請求項２１に記載の不揮発性メモリ装置のプログラム方法。
【請求項２４】
プログラミングを検証する段階を含むことを特徴とする請求項１５に記載の不揮発性メモリ装置のプログラム方法。
【請求項２５】
前記プログラミングを検証する段階は、
前記プログラムデータに対応する前記メモリセルに貯蔵されているデータを読み出す段階と、
前記読み出し結果を前記プログラムデータと比較する段階とを含むことを特徴とする請求項２４に記載の不揮発性メモリ装置のプログラム方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は不揮発性メモリ装置に係り、さらに具体的にはプログラム時間を短縮することができる不揮発性メモリ装置に関する。
【背景技術】
【０００２】
不揮発性メモリ装置は、ドライブ電源が供給されなくてもセルに記録されたデータが消滅せず残っている。不揮発性メモリの中でもフラッシュメモリは電気的にセルのデータを一括的に消去する機能を持っているので、コンピュータ及びメモリカードなどに広く使われている。
【０００３】
フラッシュメモリはセルとビットラインの連結状態に応じてＮＯＲ型とＮＡＮＤ型に区分される。ＮＯＲ型フラッシュメモリは、一つのビットラインに二つ以上のセルトランジスタが並列に連結された形態として、チャンネルホットエレクトロン（ｃｈａｎｎｅｌ ｈｏｔ ｅｌｅｃｔｒｏｎ）方式を使用してデータを貯蔵し、Ｆ−Ｎトンネリング（Ｆｏｗｌｅｒ−Ｎｏｒｄｈｅｉｍ ｔｕｎｎｅｌｉｎｇ）方式を使用してデータを消去する。そして、ＮＡＮＤ型フラッシュメモリは一つのビットラインに二つ以上のセルトランジスタが直列に連結された形態として、Ｆ−Ｎトンネリング方式を使用してデータを貯蔵及び消去する。一般的に、ＮＯＲ型フラッシュメモリは、電流消耗が大きくて高集積化には不利であるが、高速化には容易に対処することができるという長所がある。ＮＡＮＤ型フラッシュメモリはＮＯＲ型フラッシュメモリに比較して少ないセル電流を使用するので、高集積化に有利な長所がある。
【０００４】
ＮＯＲフラッシュメモリのセルアレイは、大きく複数個のバンク（ｂａｎｋ）で構成され、各々のバンクは複数個のセクタ（ｓｅｃｔｏｒ）で構成され、各々のセクタは複数個のメモリセル（ｍｅｍｏｒｙ ｃｅｌｌ）で構成される。一般的に、ＮＯＲフラッシュメモリの消去（ｅｒａｓｅ）動作は前記セクタ単位に実行され、プログラム（ｐｒｏｇｒａｍ）はワード（ｗｏｒｄ）単位または、バイト（ｂｙｔｅ）単位に実行される。
【０００５】
ＮＯＲフラッシュメモリのセルアレイにデータをプログラムするためには、まずフラッシュメモリにプログラム命令語（ｐｒｏｇｒａｍ ｃｏｍｍａｎｄ）が入力された後、プログラムアドレスとプログラムデータがフラッシュメモリに入力される。入力されたプログラムアドレスとプログラムデータはチップ内部に一時貯蔵され、プログラムアドレスに対応するメモリセルが選択される。続いて、プログラムデータに対応するプログラム電圧がビットラインに印加されて、実質的なプログラム動作が実行される。その後、内部的にあらかじめ決められた所定のプログラム実行時間（ｐｒｏｇｒａｍ ｅｘｅｃｕｔｉｏｎ ｔｉｍｉｎｇ）が経過すると、選択されたメモリセルにデータがプログラムされたか否かを判別するベリファイ（ｖｅｒｉｆｙ）動作が実行される。このようなプログラム及びベリファイ動作は、選択されたメモリセルにデータが正常にプログラムされるまで繰り返して実行される。
【０００６】
一般的に、ＮＯＲフラッシュメモリはチャンネルホットエレクトロン方式によってプログラムされるので、同時にプログラムすることができるメモリの個数は通常２個から４個に制限される。例えば、同時にプログラムすることができるビットの数が４個であるとき、１６ビットのデータ（例えば、“１００１１０１１１１１１０１１１”）は４ビットずつ４個のグループ（すなわち、“１００１”、“１０１１”、“１１１１”、“０１１１”）に分割された後、合計４回にわたってメモリセルにプログラムされる。
【０００７】
フラッシュメモリのプログラム特性をよく見れば、フラッシュメモリでプログラムを実行するためには事前に該当のアドレス部分を必ず消去（ｅｒａｓｅ）（すなわち、データ値を“１”に作る）しなければならないので、プログラムデータが“１”というのは、プログラム時、どのようなプログラム動作を実行しなくても所望するデータをプログラムしたことと同様であると言える。このようなフラッシュメモリのプログラム特性にもかかわらず、大部分のフラッシュメモリはプログラムされるデータの値が“０”であるか、“１”であるかに構わずに各データグループに対して一定なプログラム時間を一律的に割り当てる。したがって、プログラムデータ値に構わずにデータをプログラムするのにかかる時間は常に一定に必要となる問題がある。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
本発明の目的は、上述の諸般の問題点を解決するために提案されたことであり、プログラム時間を短縮するさせることができる不揮発性メモリ装置を提供することにある。
【課題を解決するための手段】
【０００９】
上述の課題を達成するために、本発明による不揮発性メモリ装置は、各々がプログラムデータを貯蔵する複数個のメモリセルを具備したメモリセルアレイ、第１値を有するプログラムデータを検出するデータスキャニング部、および前記データスキャニング部によって検出された結果に対応するメモリセルをプログラムするプログラム部を含むことを特徴とする。
【発明の効果】
【００１０】
本発明によると、複数個のプログラムデータのうちの実際にプログラムされるデータ（すなわち、０の値を有するデータ）のみ選別して一回にプログラムを実行するので、データのプログラム時間が短縮される。
【発明を実施するための最良の形態】
【００１１】
（実施形態）
以下では、本発明による実施形態を添付の図面を参照して詳細に説明する。
【００１２】
本発明の新規の不揮発性メモリ装置は、複数個のプログラムデータのうちデータ値が“０”であることを並列に検索して所定のビット単位で同時プログラムを実行する。その結果、プログラム時間が効果的に短縮される。本発明では、このようなプログラム方式を “並列ビットスキャニングプログラム方式（Ｐａｒａｌｌｅｌ Ｂｉｔ Ｓｃａｎｎｉｎｇ Ｐｒｏｇｒａｍ Ｓｃｈｅｍｅ）と称する。
【００１３】
フラッシュメモリのような不揮発性メモリでプログラムを実行するためには、事前に該当のアドレス部分を必ず消去（データ“１”の状態に作る）するようになっている。不揮発性メモリで実行されるプログラム動作はデータ“１”をデータ“０”に変換させることを意味する。したがって、プログラムデータが“１”というのはプログラム時どんなプログラム動作を実行しなくても所望するデータをプログラムしたことと同様であると言える。したがって、本発明ではプログラム時間が効果的に短縮されることができるようにデータ値が“０”であることを並列に検索してプログラムを実行する。
【００１４】
図１は本発明の望ましい実施形態による揮発性半導体メモリ装置１００のブロック図である。図１を参照すると、本発明による揮発性半導体メモリ装置１００はデータスキャニング部（ｄａｔａ ｓｃａｎｎｉｎｇ ｕｎｉｔ）１０、プログラム部（ｐｒｏｇｒａｍ ｕｎｉｔ）８０、及びメモリセルアレイ領域（ｍｅｍｏｒｙ ｃｅｌｌ ａｒｒａｙ ｒｅｇｉｏｎ）９０で構成される。
【００１５】
メモリセルアレイ領域９０は、メモリセルアレイ９２、 Ｘデコーダ９４、Ｙデコーダ９６、及びＹゲート９８を含む。メモリセルアレイ９２は複数個のビットラインＢＬ１、・・・、ＢＬＮと複数個のワードラインＷＬ１、・・・、ＷＬｊに連結された複数個のメモリセルで構成される。Ｘデコーダ９４はメモリセルのロウ（ｒｏｗ）アドレスＸ＿Ａｄｄをデコーディングする。Ｙデコーダ９６はメモリセルのコラム（ｃｏｌｕｍｎ）アドレスＹ＿Ａｄｄをデコーディングする。そして、Ｙゲート９８はメモリセルアレイ９２とプログラム部８０との間のデータインターフェースを実行する。図１に示した半導体メモリ装置１００はＮＯＲタイプのフラッシュメモリを例としてあげたもので、本発明による並列ビットスキャニングプログラム方式はＮＯＲタイプのフラッシュメモリではなく、他の不揮発性メモリにも適用可能である。
【００１６】
データスキャニング部１０はスキャンクロック発生部（ｓｃａｎ ｃｌｏｃｋ ｇｅｎｅｒａｔｉｎｇ ｕｎｉｔ）２０、及びデータラッチ部（ｄａｔａ ｌａｔｃｈ ｕｎｉｔ）３０を含む。スキャンクロック発生部２０は内部クロック信号ＣＬＫに同期してＮ個のスキャンクロック信号
【００１７】
【数１】
2006085896.tif 000003
【００１８】
を並列に発生する。本発明ではＮビットのプログラムデータをＮ／２ビットずつ二つのグループで分割し、前記Ｎ個のスキャンクロック信号
【００１９】
【数２】
2006085896.tif 000004
【００２０】
に応答してＭＳＢ  Ｎ／２ビットに対する順方向スキャンと、ＬＳＢ Ｎ／２ビットに対する逆方向スキャンとを同時に実行する。このような順方向及び逆方向の並列スキャン方式は、並列スキャンの一例に過ぎず、より多個数のグループでデータを分割して、同時にスキャンすることもでき、スキャン方向も順方向及び逆方向の中で選択可能である。
【００２１】
スキャンクロック発生部２０は内部クロック信号ＣＬＫの各周期ごとに少なくともふたつ以上の活性化されたスキャンクロック信号を並列に発生する。前記並列に発生されたスキャンクロック信号
【００２２】
【数３】
2006085896.tif 000005
【００２３】
は“０”の値を有するプログラムデータを順方向または逆方向に捜し出すのに使用される。そして、前記内部クロック信号ＣＬＫは半導体メモリ装置１００の内部に具備されているクロック発生部（図示しない）から発生される。
【００２４】
データラッチ部３０は互いに同一の回路構成を有するＮ個のデータラッチ回路３０_１、・・・、３０＿Ｎで構成される。各々のデータラッチ回路３０_１、・・・、３０＿Ｎはスキャンクロック発生部２０から並列に発生されたＮ個のスキャンクロック信号
【００２５】
【数４】
2006085896.tif 000006
【００２６】
とバッファ２９から伝送されたＮ個のプログラムデータＤａｔａ＜Ｎ：１＞のうち、対応する一つのスキャンクロック信号及び一つのプログラムデータを各々受け入れて、プログラムデータが“１”の値を有するか、または“０”の値を有するかを判別する。この際、内部クロック信号ＣＬＫが活性化される各区間ごとに少なくともふたつ以上のスキャンクロック信号が活性化されるので、データラッチ部３０はプログラムデータが“０”の値を有するか否かに対する判別を少なくとも二つ以上同時に実行するようになる。
【００２７】
各々のデータラッチ回路３０_１、・・・、３０＿Ｎはデータ値に対する判別結果に応じて対応するプログラムデータを維持させて、活性化されたプログラムカウント信号ＰｇｍＣｏｕｎｔ＜ｉ＞とビットライン選択信号ＢＬｓｅｌｅｃｔ＜ｉ＞とを選択的に発生する。例えば、対応するプログラムデータが“０”の値を有する場合、該当のデータラッチ回路３０_１、・・・、３０＿Ｎは活性化されたプログラムカウント信号ＰｇｍＣｏｕｎｔ＜ｉ＞及びビットライン選択信号ＢＬｓｅｌｅｃｔ＜ｉ＞を発生する。Ｎ個のデータラッチ回路３０_１、・・・、３０＿Ｎから発生されたＮ個のプログラムカウント信号ＰｇｍＣｏｕｎｔ＜Ｎ:１＞はプログラムビットカウンタ４０に入力される。そして、Ｎ個のデータラッチ回路３０_１、・・・、３０＿Ｎから発生されたＮ個のビットライン選択信号ＢＬｓｅｌｅｃｔ＜Ｎ:１＞は、Ｎ個のプログラムドライブ回路６０＿１、・・・、６０＿Ｎのうち対応する該当のプログラムドライブ回路に各々入力される。
【００２８】
データラッチ回路３０_１、・・・、３０＿Ｎは初期プログラムだけではなく、再プログラム時（すなわち、ベリファイフェイル（Ｖｅｒｉｆｙ Ｆａｉｌ）が発生した時）にもデータをスキャニングして、“０”のデータを検索し出す。このために、各々のデータラッチ回路３０_１、・・・、３０＿Ｎは対応する各々の感知回路７０＿１、・・・、７０＿Ｎからベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜ｉ＞を受け入れて、“０”のデータをスキャニングするか否かを判別する。例えば、自己に入力されたベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜ｉ＞がベリファイフェイルを示す場合、該当のデータラッチ回路３０_１、・・・、３０＿Ｎは“０”のデータを捜し出す並列ビットスキャニングを実行する。
【００２９】
プログラム部８０はプログラムビットカウンタ（ｐｒｏｇｒａｍ ｂｉｔ ｃｏｕｎｔｅｒ）４０、プログラム制御部（ｐｒｏｇｒａｍ ｃｏｎｔｒｏｌ ｕｎｉｔ）５０、プログラムドライバ（ｐｒｏｇｒａｍ ｄｒｉｖｅｒ）６０、及び感知部（ｓｅｎｓｉｎｇ  ｕｎｉｔ）７０で構成される。プログラム部８０はデータスキャニング部１０で検索された “０”のデータを最大同時プログラムビット数だけずつグループ化し、検索された“０”のデータの個数が最大同時プログラムビット数になるごとに該当のグループに属する複数個のデータを同時にプログラムする。
【００３０】
このために、プログラムビットカウンタ４０は各々のデータラッチ回路３０_１、・・・、３０＿Ｎから発生されたＮ個のプログラムカウント信号ＰｇｍＣｏｕｎｔ＜Ｎ:１＞を受け入れ、活性化されたプログラムカウント信号ＰｇｍＣｏｕｎｔ＜ｉ＞の個数をカウントする（すなわち、“０”の値を有するデータの個数をカウントする）。プログラムビットカウンタ４０はカウントされた値が最大同時プログラム個数になるか、または最後のスキャンクロック信号（例えば、ＳｃａｎＣＬＫ＜５＞）が入力された場合、今まで捜し出した“０”のデータを同時にプログラムするように制御する同時プログラム活性化信号ＢｉｔＭａｘを発生する。プログラムビットカウンタ４０から発生された同時プログラム活性化信号ＢｉｔＭａｘはスキャンクロック発生部２０及びプログラム制御部５０に入力される。
【００３１】
スキャンクロック発生部２０はプログラムビットカウンタ４０から発生された同時プログラム活性化信号ＢｉｔＭａｘに応答して、プログラムが実行される間スキャンクロックの発生を停止させる。そして、プログラム制御部５０はプログラムビットカウンタ４０から発生された同時プログラム活性化信号ＢｉｔＭａｘと、半導体メモリ装置１００の内部に具備されているタイミング制御部（図示しない）から発生されたプログラム時間制御信号Ｔｉｍｅ Ｏｕｔに応答して、プログラム実行信号ＰｇｍＥｘｅｃｕｔｅを発生し、発生されたプログラム実行信号ＰｇｍＥｘｅｃｕｔｅをプログラムビットカウンタ４０とプログラムドライバ６０に出力する。
【００３２】
プログラムビットカウンタ４０は最大同時プログラム個数に該当する“０”のデータがプログラムされる間、プログラム制御部５０から発生されたプログラム実行信号ＰｇｍＥｘｅｃｕｔｅに応答してプログラムビットカウンタ４０のカウンティングされた値をリセットさせる。そして、各々のデータラッチ回路３０_１、・・・、３０＿Ｎをリセットさせるラッチリセット信号ＬａｔｃｈＲｅｓｅｔを発生する。
【００３３】
プログラムドライバ６０は互いに同一の回路構成を有するＮ個のプログラムドライブ回路６０_１、・・・、６０＿Ｎで構成される。各々のプログラムドライブ回路６０_１、・・・、６０＿Ｎはデータラッチ３０に具備されたＮ個のデータラッチ回路３０＿１、・・・、３０＿Ｎと一対一に対応し、対応するデータラッチ回路３０_１、・・・、３０＿Ｎから発生されたビットライン選択信号ＢＬｓｅｌｅｃｔ＜ｉ＞を受け入れる。そして、各々のプログラムドライブ回路６０_１、・・・、６０＿Ｎは半導体メモリ装置１００内部に具備されている高電圧発生部（図示しない）からプログラム電圧Ｖｂｌと、プログラム制御部５０から発生されたプログラム実行信号ＰｇｍＥｘｅｃｕｔｅとを受け入れ、該当のビットライン選択信号ＢＬｓｅｌｅｃｔ＜ｉ＞が活性化された場合、該当のビットラインにプログラム電圧を同時に印加する。
【００３４】
感知部７０は互いに同一の回路構成を有するＮ個の感知回路７０_１、・・・、７０＿Ｎで構成される。各々の感知回路７０_１、・・・、７０＿Ｎはプログラムが実行された後メモリセルアレイ９２の該当のビットラインからデータを読み出してプログラムが完了したか否かを確認するベリファイ動作を実行する。各々の感知回路７０_１、・・・、７０＿Ｎは、 ベリファイ結果、該当のメモリセルがプログラムされたと確認されれば、活性化されたベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜ｉ＞を対応するデータラッチ回路３０_１、・・・、３０＿Ｎに発生する。そして、ベリファイ結果、該当のメモリセルがプログラムされないと確認されれば、ベリファイフェイルを意味するローレベルのベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜ｉ＞を対応するデータラッチ回路３０_１、・・・、３０＿Ｎに発生する。
【００３５】
ここで、前記各々の感知回路の出力端にはプログラムが実行された後メモリセルアレイ９２の該当のビットラインから読み出したデータと、各々のプログラムドライブ回路６０_１、・・・、６０＿Ｎによってプログラムされたデータが互いに一致するか否かを比較する比較器（または比較ロジック）をさらに含むことができる。この場合、各々の感知回路７０_１、・・・、７０＿Ｎは比較器を通じてプログラムされたデータとプログラム後読み出したデータが互いに一致するか否かを確認し、確認結果、互いに一致すれば、活性化されたベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜ｉ＞を対応するデータラッチ回路３０_１、・・・、３０＿Ｎに発生する。そして、確認結果、互いに一致しなければ、各々の感知回路７０_１、・・・、７０＿Ｎはベリファイフェイルを意味するローレベルのベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜ｉ＞を対応するデータラッチ回路３０_１、・・・、３０＿Ｎに発生する。
【００３６】
上述のように、スキャンクロック発生部２０によってＮ個のスキャンクロック信号
【００３７】
【数５】
2006085896.tif 000007
【００３８】
が並列に発生されれば、ラッチ回路３０はスキャンクロック信号
【００３９】
【数６】
2006085896.tif 000008
【００４０】
と、バッファ２９から伝送されたＮ個のプログラムデータＤａｔａ＜Ｎ：１＞、及び感知部７０から発生されたベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜ｉ＞に応答して、“０”の値を有するデータを並列に捜し出して貯蔵する。プログラムビットカウンタ４０はラッチ回路３０が“０”の値を有するデータを捜し出すごとにその個数をカウントし、カウントされた値が最大同時プログラム個数になるか、または最後のスキャンクロック信号が入力されれば、同時プログラム活性化信号ＢｉｔＭａｘをスキャンクロック発生部２０及びプログラム制御部６０に発生して、スキャンクロック発生部２０にプログラム中にはスキャンクロック信号ＳｃａｎＣＬＫ＜ｉ＞を発生しないようにして、プログラム制御部６０にプログラム実行信号ＰｇｍＥｘｅｃｕｔｅを発生するようにする。プログラムドライバ６０は高電圧発生部（図示しない）からプログラム電圧Ｖｂｌと、プログラム制御部５０から発生されたプログラム実行信号ＰｇｍＥｘｅｃｕｔｅに応答して、“０”の値を有するデータを最大同時プログラム個数だけ同時にプログラムする。そして、感知部７０はプログラムが実行されたメモリセルに対するプログラム完了の可否を判別して、半導体メモリ装置１００の再プログラムの可否を決める。
【００４１】
例えば、プログラムするために入力されたデータが合計８ビットであり、同時にプログラムすることができる最大ビット数（すなわち、最大同時プログラムビット数）が４であると仮定するとき、本発明による半導体メモリ装置１００の動作タイミングは次のとおりである。
【００４２】
図２及び図３は図１に示した半導体メモリ装置１００で実行される並列ビットスキャニングプログラムに対する動作タイミングを示すタイミング図である。図２及び図３には８ ビットのプログラムデータのうちの上位の４ビットに対する順方向スキャンと、下位の４ビットに対する逆方向スキャンが同時に実行される時のタイミング図を示している。
【００４３】
図２を参照すると、プログラムデータＤａｔａ＜Ｎ:１＞が“００００００００”の場合、ラッチリセット信号ＬａｔｃｈＲｅｓｅｔがトグリングされてデータラッチ回路３０_１、・・・、３０＿Ｎが初期化されれば、順方向スキャンのための第１グループのスキャンクロック信号ＳｃａｎＣＬＫ＜４:１＞と逆方向スキャンのための第２グループのスキャンクロック信号ＳｃａｎＣＬＫ＜５:８＞が各々順次にトグリングされる。ここで、第１グループのスキャンクロック信号ＳｃａｎＣＬＫ＜４:１＞は内部クロック信号ＣＬＫの上昇エッジごとにトグリングされ、第２グループのスキャンクロック信号ＳｃａｎＣＬＫ＜５:８＞は内部クロック信号ＣＬＫの下降エッジごとにトグリングされる。
【００４４】
ラッチリセット信号ＬａｔｃｈＲｅｓｅｔはプログラムビットカウンタ４０からプログラムが実行されるごとに毎度周期的に発生される。ラッチリセット信号ＬａｔｃｈＲｅｓｅｔは最初のプログラム時には半導体メモリ装置１００の内部に具備されたインターフェース装置１００から発生されてデータラッチ回路３０_１、・・・、３０＿Ｎを初期化させる。そして、ベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜ｉ＞はプログラムが実行された後感知部７０から発生される。ベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜ｉ＞は最初のプログラム時にはその値が全部ローレベルに初期化されて、プログラム動作が実行されるようにする。
【００４５】
ラッチリセット信号ＬａｔｃｈＲｅｓｅｔがトグリングされた後、各々のデータラッチ回路３０_１、・・・、３０＿Ｎは各プログラムデータＤａｔａ＜ｉ＞が“１”の値を有するか、または“０”の値を有するかに従ってハイまたはローレベルのビットライン選択信号ＢＬｓｅｌｅｃｔ＜ｉ＞とプログラムカウント信号ＰｇｍＣｏｕｎｔ＜ｉ＞のレベルを決める。例えば、各々のデータラッチ回路３０_１、・・・、３０＿Ｎは該当のプログラムデータが“０”の値を有する時には活性化されたビットライン選択信号ＢＬｓｅｌｅｃｔ＜ｉ＞及び活性化されたプログラムカウント信号ＰｇｍＣｏｕｎｔ＜ｉ＞を発生し、該当のプログラムデータが“１”の値を有する時には非活性化されたビットライン選択信号ＢＬｓｅｌｅｃｔ＜ｉ＞及び非活性化されたプログラムカウント信号ＰｇｍＣｏｕｎｔ＜ｉ＞を各々発生する。このようなデータラッチ部３０のデータ判別動作は、内部クロック信号ＣＬＫの各周期で活性化された二つのスキャンクロック信号によって並列に実行される。
【００４６】
例えば、内部クロック信号ＣＬＫの一番目の周期の間第１及び第８スキャンクロック信号ＳｃａｎＣＬＫ＜１＞、ＳｃａｎＣＬＫ＜８＞がトグリングされれば、トグリングされた第１及び第８スキャンクロック信号ＳｃａｎＣＬＫ＜１＞、ＳｃａｎＣＬＫ＜８＞に応答して“０”のデータ１ｓｔ Ｄａｔａ ０、２ｎｄ Ｄａｔａ ０が検出される。そして、“０”のデータ１ｓｔ Ｄａｔａ ０、２ｎｄ Ｄａｔａ ０の検出結果によって活性化された第１及び第８ビットライン選択信号ＢＬｓｅｌｅｃｔ＜１＞、ＢＬｓｅｌｅｃｔ＜８＞と、活性化された第１及び第８プログラムカウント信号ＰｇｍＣｏｕｎｔ＜１＞、ＰｇｍＣｏｕｎｔ＜８＞が発生され、該当のデータ１ｓｔ Ｄａｔａ ０、２ｎｄ Ｄａｔａ ０がラッチされる。プログラムビットカウンタ２０は第１及び第８データラッチ回路から発生された第１及び第８プログラムカウント信号ＰｇｍＣｏｕｎｔ＜１＞、ＰｇｍＣｏｕｎｔ＜８＞に応答して２回のカウントアップ動作を実行する。
【００４７】
続いて、内部クロック信号ＣＬＫの二番目の周期の間第２及び第７スキャンクロック信号ＳｃａｎＣＬＫ＜２＞、ＳｃａｎＣＬＫ＜７＞がトグリングされれば、トグリングされた第２及び第７スキャンクロック信号ＳｃａｎＣＬＫ＜２＞、ＳｃａｎＣＬＫ＜７＞に応答して“０”のデータ３ｒｄ Ｄａｔａ ０、４ｔｈ Ｄａｔａ ０が検出される。そして、“０”のデータ３ｒｄ Ｄａｔａ ０、４ｔｈ Ｄａｔａ ０の検出結果によって活性化された第２及び第７ビットライン選択信号ＢＬｓｅｌｅｃｔ＜２＞、ＢＬｓｅｌｅｃｔ＜７＞と、活性化された第２及び第７プログラムカウント信号ＰｇｍＣｏｕｎｔ＜２＞、ＰｇｍＣｏｕｎｔ＜７＞が発生され、該当のデータ３ｒｄ Ｄａｔａ ０、４ｔｈ Ｄａｔａ ０がラッチされる。プログラムビットカウンタ２０は第２及び第７データラッチ回路から発生された第２及び第７プログラムカウント信号ＰｇｍＣｏｕｎｔ＜２＞、ＰｇｍＣｏｕｎｔ＜７＞に応答して２回のカウントアップ動作をさらに実行する。
【００４８】
そして、カウントされた値が最大同時プログラムビット数である４になれば、同時にプログラムされる４個のデータを全部捜したことを知らせる同時プログラム活性化信号ＢｉｔＭａｘを活性化させる。同時プログラム活性化信号ＢｉｔＭａｘが活性化されれば、プログラム制御部５０はプログラムの開始を知らせるプログラム実行信号ＰｇｍＥｘｅｃｕｔｅを活性化させる。
【００４９】
その結果、“０”の値を有する４個のデータＤａｔａ＜１＞、Ｄａｔａ＜２＞、Ｄａｔａ＜７＞、Ｄａｔａ＜８>に対するプログラム動作が同時に実行される。同時プログラム活性化信号ＢｉｔＭａｘが活性化されている間スキャンクロック発生部２０はスキャンクロック信号を発生せず、プログラム実行信号ＰｇｍＥｘｅｃｕｔｅの活性化区間が終わるまでスキャンクロック信号の発生をホールディングさせる。プログラム実行信号ＰｇｍＥｘｅｃｕｔｅの活性化区間がプログラム時間制御信号Ｔｉｍｅ Ｏｕｔによって終われば、 ラッチリセット信号ＬａｔｃｈＲｅｓｅｔが一回トグリングしてプログラムビットカウンタ２０とデータラッチ３０とを初期化し、残りのデータＤａｔａ＜３＞、Ｄａｔａ＜４＞、Ｄａｔａ＜５＞、Ｄａｔａ＜６＞に対するプログラムが上述の内容と等しい過程で実行される。
【００５０】
図３を参照すると、プログラムデータＤａｔａ＜Ｎ:１＞が“１０１０１０１０”の場合、第２、第４、第６、及び第８データＤａｔａ＜２＞、Ｄａｔａ＜４＞、Ｄａｔａ＜６＞、Ｄａｔａ＜８＞のみが“０”の値を有するので、“０”のデータを捜し出すデータスキャニング動作は最後に発生されるスキャンクロック信号である第５スキャンクロック信号ＳｃａｎＣＬＫ＜５＞が活性化されるまで続く。そして、４個の“０”のデータを全部捜すようになれば、そのときに１回のプログラムを実行するようになる。この場合、プログラムデータの値に構わずにＮビット（例えば、８ビット）のプログラムデータを同時にプログラムすることができるビット（例えば、４ビット）ずつ無条件に分けてプログラムを実行する従来技術と比較するとき、本発明は“０”のデータの個数に応じてただ１回でプログラムが完了するので、プログラムにかかる時間が半分に短縮される効果がある。それだけでなく、“０”のデータを検索するスキャニング過程を並列に処理するので、プログラムにかかる時間をさらに減らすことができる。
【００５１】
このようなプログラム時間の短縮効果は、プログラムしなければならないビット数が増加するほどさらに増大する。例えば、プログラムデータがワードで入力され、同時にプログラムできるビット数が４ビットであるとき、従来のプログラム方法では必ず４ビットずつ４回にわたってプログラムを実行しなければならないが、本発明では“０”の値を有するデータの個数が４個以下であれば、１回、５から８個であれば、２回、９から１２個であれば、３回、そして１３から１６個であれば、４回にわたってプログラムを完了することができる。すなわち、“０”の値を有するデータの個数に応じてプログラム時間を１／４のレベルまで短縮することができるようになる。だけでなく、本発明では“０”データを検索するスキャニング過程を並列に処理するので、プログラムにかかる時間をさらに減らすことができる。このようなプログラム方式はデータ構成において、どんな制約も受けない特徴を有する。一般的に、“０”の値を有するデータと“１”の値を有するデータの確率的分布は平均的に同一であると言えるので、プログラム時間の短縮効果は約５０％であると言える。このような本発明の各構成要素に対する詳細構成は次のとおりである。
【００５２】
図４は図１に示したスキャンクロック発生部２０の回路図である。図４を参照すると、スキャンクロック発生部２０は第１スキャンクロック発生部２２と第２スキャンクロック発生部２４とを含む。第１スキャンクロック発生部２２は順方向スキャンに使用されるＮ／２個のスキャンクロック信号
【００５３】
【数７】
2006085896.tif 000009
【００５４】
を発生し、第２スキャンクロック発生部２４は逆方向スキャンに使用されるＮ／２個のスキャンクロック信号
【００５５】
【数８】
2006085896.tif 000010
【００５６】
を発生する。
【００５７】
第１スキャンクロック発生部２２は信号入力部２２１、カウント部２２５、及びデコーディング部２２７を含む。
【００５８】
信号入力部２２１はインバータとＮＯＲゲートで構成され、一定周期に入力される内部クロック信号ＣＬＫの反転された値と、同時プログラム活性化信号ＢｉｔＭａｘに対する論理ＮＯＲ演算を実行し、同時プログラム活性化信号ＢｉｔＭａｘが入力される前までに入力された内部クロック信号ＣＬＫのみをカウント部２２５に伝達する機能を実行する。カウント部２２５は３ビットカウンタで構成されて、信号入力部２２１から入力されたクロック信号ＣＬＫの個数をカウントする。デコーディング部２２７はカウント部２２５の出力をデコーディングして、内部クロック信号ＣＬＫの各周期ごとに１回ずつ順次にトグリングされる複数個のスキャンクロック信号ＳｃａｎＣＬＫ＜１＞、・・・、ＳｃａｎＣＬＫ＜４＞を順次に発生する。
【００５９】
信号入力部２２１は活性化された同時プログラム活性化信号ＢｉｔＭａｘが入力されれば、ローレベルの信号を出力してカウント部２２５にカウント動作を実行しないようにする。その結果、同時プログラム活性化信号ＢｉｔＭａｘが活性化されるプログラム区間の間第１スキャンクロック発生部２２はスキャンクロック信号ＳｃａｎＣＬＫ＜１＞、・・・、 ＳｃａｎＣＬＫ＜４＞の発生を中断するようになり、プログラムが終わって同時プログラム活性化信号ＢｉｔＭａｘが非活性化されれば、再びクロック信号ＣＬＫに対するカウンティングを実行して次の順番のスキャンクロック信号を生成するようになる。
【００６０】
第２スキャンクロック発生部２４は信号入力部２４１、カウント部２４５、及びデコーディング部２４７を含む。第２スキャンクロック発生部２４の回路構成は、カウント部２４５が反転された入力信号を受け入れることを除けば、第１スキャンクロック発生部２２と実質的に同一である。したがって、重複される説明は以下略する。
【００６１】
このようなカウンタ部２２５、２４５の構成によって、第１スキャンクロック発生部２２は内部クロック信号ＣＬＫの上昇エッジにトグリングされたスキャンクロック信号ＳｃａｎＣＬＫ＜１＞、・・・、ＳｃａｎＣＬＫ＜４＞を発生する一方、第２スキャンクロック発生部２４は内部クロック信号ＣＬＫの下降エッジにトグリングされたクロック信号ＳｃａｎＣＬＫ＜８＞、・・・、ＳｃａｎＣＬＫ＜５＞を発生するようになる。
【００６２】
図５は図１に示したデータラッチ回路３０＿１の回路図である。図５を参照すると、データラッチ回路３０＿１はデータ検出部３１及びデータ貯蔵部３５を含む。
【００６３】
データ検出部３１はＮＯＲ ゲート、ＮＡＮＤゲート、及びインバータで構成され、ベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜１＞とプログラムデータＤａｔａ＜１＞に対する論理ＮＯＲ演算を実行し、前記論理ＮＯＲ演算結果とスキャンクロック信号ＳｃａｎＣＬＫ＜１＞に対する論理ＮＡＮＤ演算を実行する。その後、前記論理ＮＡＮＤ演算結果を反転してプログラムカウント信号ＰｇｍＣｏｕｎｔ＜１＞として出力する。例えば、プログラムが正しく実行されて、これ以上のプログラムが必要ない場合にはデータ検出部３１に活性化されたベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜１＞が入力されて、非活性化されたプログラムカウント信号ＰｇｍＣｏｕｎｔ＜１＞が出力される。そして、プログラムが正しく実行されなくて再プログラムが実行されなければならない場合にはデータ検出部３１に非活性化されたベリファイパス信号ＶｅｒｉｆｙＰａｓｓ＜１＞が入力される。 この際、プログラムデータＤａｔａ＜１＞の値が“０”の値を有すれば、データ検出部３１の該当のデータのスキャンクロック信号ＳｃａｎＣＬＫ＜１＞に同期して活性化されたプログラムカウント信号ＰｇｍＣｏｕｎｔ＜１＞を出力するようになる。
【００６４】
データ貯蔵部３５はＴフリップフロップで構成され、データ検出部３１で“０”のデータとして検出されたデータを貯蔵する機能を実行する。データ検出部３１によって“０”の値を有するデータＤａｔａ＜１＞が検出されて、活性化されたプログラムカウント信号ＰｇｍＣｏｕｎｔ＜１＞が発生されれば、データ貯蔵部３５は前記プログラムカウント信号ＰｇｍＣｏｕｎｔ＜１＞をクロック入力に受け入れて、活性化されたビットライン選択信号ＢＬｓｅｌｅｃｔ＜１＞を発生する。本発明ではこのビットライン選択信号ＢＬｓｅｌｅｃｔ＜１＞によって選択された該当のビットラインのみが実質的にプログラムされる。データ貯蔵部３５はプログラムビットカウンタ４０から発生されたラッチリセット信号ＬａｔｃｈＲｅｓｅｔに応答して初期化されるのに、このような構成は該当のビットが次の回のプログラム時、これ以上プログラムされないようにする。また、前記のようなリセット過程によれば、プログラムモード初期とプログラム実行直後のビットライン選択信号ＢＬｓｅｌｅｃｔ＜１＞の生成を担当するフリップフロップがリセットされて、１回プログラムされたビットが次の回のプログラム実行区間で、これ以上プログラムされないようにする。
【００６５】
図６は図１に示したプログラムビットカウンタ４０の回路図である。図６を参照すると、プログラムビットカウンタ４０は信号入力部４１、リセット制御部４２、カウント部４５、 及びデータ出力部４６を含む。
【００６６】
信号入力部４１はデータラッチ３０から発生された複数個のプログラムカウント信号ＰｇｍＣｏｕｎｔ＜１＞からＰｇｍＣｏｕｎｔ＜８＞を受け入れ、これらのうちの一つでも活性化された信号があれば、活性化された出力信号をカウント部４５に出力する。カウント部４５は３ビットカウンタで構成され、信号入力部４１から活性化された信号が入力されるごとに（すなわち、データラッチ３０が“０”のデータを検索し出すごとに）カウントアップされて、同時にプログラムされるデータの個数を決めるようになる。
【００６７】
データ出力部４６はカウント部４５でカウントされた値が最大同時プログラム個数と同一であるか、または最後のスキャンクロック信号（例えば、ＳｃａｎＣＬＫ＜５＞）が入力されたか否かを判別する。判別の結果、カウントされた値が最大同時プログラム個数と同一であるか、最後のスキャンクロック信号ＳｃａｎＣＬＫ＜５＞が入力されれば、活性化された同時プログラム活性化信号ＢｉｔＭａｘを出力する。このために、データ出力部４６はカウント部４５の出力と最後のスキャンクロック信号ＳｃａｎＣＬＫ＜５＞に対する論理ＮＯＲ演算を実行するＮＯＲゲート４７と、ＮＯＲゲート４７の出力信号をラッチさせるラッチ部４８、及びラッチ部４８の出力を反転して出力する第１インバータ４９を含む。
【００６８】
リセット制御部４２はプログラム制御部５０から発生されたプログラム実行信号ＰｇｍＥｘｅｃｕｔｅを利用してカウント部４５をリセットさせ、プログラム実行信号ＰｇｍＥｘｅｃｕｔｅの反転された値をラッチリセット信号ＬａｔｃｈＲｅｓｅｔとして出力する。このために、リセット制御部４２はプログラム実行信号ＰｇｍＥｘｅｃｕｔｅを反転された値を利用して上昇エッジで活性化されるパルスを発生するパルス発生部４３と、パルス発生部４３の出力信号を反転してラッチリセット信号ＬａｔｃｈＲｅｓｅｔとして出力するインバータ４４を含む。
【００６９】
このような構成によって、プログラムビットカウンタ４０は８個のデータラッチ回路３０_１、・・・、３０＿Ｎから各々入力されるプログラムカウント信号ＰｇｍＣｏｕｎｔ＜８:１＞のうちの一つでもハイレベルを有すれば、これをカウントすることができるようになる。そして、カウントされた値が決められた個数（すなわち、最大同時プログラム個数）になれば、活性化された同時プログラム活性化信号ＢｉｔＭａｘを発生する。この外にも、プログラムビットカウンタ４０は最後のスキャンクロック信号ＳｃａｎＣＬＫ＜５＞がトグルされたか否かをモニタリングし、最後のスキャンクロック信号ＳｃａｎＣＬＫ＜５＞がトグルされれば、たとえカウントされた値が最大同時プログラム個数である４ビットにならなくても、今まで捜し出したビットが同時にプログラムされることができるように活性化された同時プログラム活性化信号ＢｉｔＭａｘを発生する。
【００７０】
図７は図１に示したプログラム制御部５０の回路図である。図７を参照すれば、プログラム制御部５０はトグリング部５５と信号出力部５７とを含む。
【００７１】
トグリング部５５はＴフリップフロップ部で構成され、クロック入力端子に同時プログラム活性化信号ＢｉｔＭａｘを受け入れ、トグリングされた結果を出力する。トグリング部５５は活性化された同時プログラム活性化信号ＢｉｔＭａｘが入力されれば、それの上昇エッジ（ｒｉｓｉｎｇ ｅｄｇｅ）からトグリングされて、活性化されたプログラム実行信号ＰｇｍＥｘｅｃｕｔｅを発生する。そして、信号出力部５７はトグリング部５５から発生されたプログラム実行信号ＰｇｍＥｘｅｃｕｔｅを所定時間遅延して出力する。
【００７２】
一方、トグリング部５５はプログラム実行信号ＰｇｍＥｘｅｃｕｔｅを発生した後一定時間が経過した後にリセット端子に入力されたプログラム時間制御信号Ｔｉｍｅ  Ｏｕｔに応答してリセットされる。その結果、活性化されたプログラム実行信号ＰｇｍＥｘｅｃｕｔｅが非活性化されて、“０”のデータを捜し出すスキャン動作が再び実行されることができるようにする。
【００７３】
図８は図１に示したプログラムドライブ回路６０_１の回路図である。
【００７４】
プログラムドライブ回路６０＿１はプログラムするためのビットライン電圧を選択的に印加するための回路として、ビットライン選択信号ＢＬｓｅｌｅｃｔ＜ｉ＞によって該当のビットラインＢＬ＜ｉ＞が選択されれば、プログラム区間の間該当のビットラインＢＬ＜ｉ＞にプログラムのための高電圧Ｖｂｌを印加するレベルシフト（ｌｅｖｅｌ ｓｈｉｆｔｅｒ）としての機能を実行する。
【００７５】
図８を参照すると、プログラムドライブ回路６０_１はＮＡＮＤゲートとインバータで構成されたデータ入力部６１を通じて、プログラム実行信号ＰｇｍＥｘｅｃｕｔｅとビットライン選択信号ＢＬｓｅｌｅｃｔ＜１＞が全部活性化されたか否かを検出する。検出の結果、二つの信号が全部活性化されれば、第１ノードＮ１にハイレベルの信号を出力する。第１ノードＮ１に入力されたハイレベルの信号は第１ＮＭＯＳトランジスタ６５の制御ゲートに印加される。そして、前記第１ノードＮ１に印加された信号はインバータ６３を通じてローレベルに反転されて第２ＮＭＯＳトランジスタ６６の制御ゲートに印加される。
【００７６】
第１ＮＭＯＳトランジスター６５は制御端子に印加されたハイレベルの信号によってターンオンされ、第２ＮＭＯＳトランジスタ６６は制御端子に印加されたローレベルの信号によって各々ターンオフされる。第２ノードＮ２の電圧レベルはターンオンされた第１ＮＭＯＳトランジスタ６５の放電動作によって接地レベルに低くなるようになる。第２ノードＮ２の電圧が接地レベルに低くなることによって第１ＰＭＯＳトランジスタ６７の制御端子にローレベルの信号が印加され、その結果、第１ＰＭＯＳトランジスタ６７がターンオンされる。
【００７７】
第３ノードＮ３の電圧レベルはターンオンされた第１ＰＭＯＳトランジスタ６７のチャージング動作によってプログラム電圧レベルＶｂｌに上昇するようになり、上昇された第３ノードＮ３の電圧によって第２ＰＭＯＳトランジスタ６８はターンオフ状態を維持するようになる。その結果、第３ノードＮ３に充電されたハイレベルのプログラム電圧Ｖｂｌは該当のビットラインＢＬ＜１＞に提供され、該当のメモリセルをプログラムするようになる。
【００７８】
上述のように、本発明による不揮発性メモリ装置１００は、“０”または“１”の値を有する複数個のプログラムデータのうちの実質的にプログラムされる“０”のデータだけ選別した後、これを所定ビット単位に同時にプログラムするので、プログラムされるデータの値に構わずに一定個数たけずつ一律的にプログラムする従来のプログラム方式に比較して、プログラムするのにかかる時間を顕著に減らすことができる。
【００７９】
以上では、本発明による回路の構成及び動作を上述の説明及び図面によって示したが、これは例をあげて説明したことに過ぎず、本発明の技術的思想を逸脱しない範囲内で多様な変化及び変更が可能であることは勿論である。
【図面の簡単な説明】
【００８０】
【図１】本発明の望ましい実施形態による不揮発性半導体メモリ装置のブロック図である。
【図２】図１に示した半導体メモリ装置で実行される並列ビットスキャニングプログラムに対する動作タイミングを示すタイミング図である。
【図３】図１に示した半導体メモリ装置で実行される並列ビットスキャニングプログラムに対する動作タイミングを示すタイミング図である。
【図４】図１に示したスキャンクロック発生部の回路図である。
【図５】図１に示したデータラッチ回路の回路図である。
【図６】図１に示したプログラムビットカウンタの回路図である。
【図７】図１に示したプログラム制御部の回路図である。
【図８】図１に示したプログラムドライブ回路の回路図である。
【符号の説明】
【００８１】
１０  データスキャニング部             
２０  スキャンクロック発生部
３０  データラッチ部             
４０  プログラムビットカウンタ
５０  プログラム制御部           
６０  プログラムドライバ
７０  感知部                         
８０  プログラム部
９０  メモリセルアレイ領域       
１００  不揮発性半導体メモリ装置
【図１】
2006085896.tif 000011
【図２】
2006085896.tif 000012
【図３】
2006085896.tif 000013
【図４】
2006085896.tif 000014
【図５】
2006085896.tif 000015
【図６】
2006085896.tif 000016
【図７】
2006085896.tif 000017
【図８】
2006085896.tif 000018