(57)【特許請求の範囲】
【請求項１】
メモリセルのアレイ（１２０）を含むメモリ（２００）のためのプログラミング方法であって、メモリにおけるプログラム回路（１００）を、各々が前記メモリセルのアレイ（１２０）の同時書込みビット数の許容値よりも少ない数の１組のプログラミング回路を含む複数の切換えグループに細分し、かつ第１のモードにおいて４つの前記切換えグループで構成されかつ第２のモードにおいて２つの前記切換えグループで構成される検出グループに細分するステップを含み、前記方法は、前記第１のモードにおいて前記検出グループから検出されたゼロの数が同時書込みビット数の許容値を越えないときに４つの前記切換えグループを同時に活性化し、かつ前記第２のモードにおいて前記検出グループから検出されたゼロの数が同時書込みビット数の許容値を越えないときに前記２つの切換えグループを同時に活性化し、前記検出グループから検出されたゼロの数が同時書込みビット数の許容値を越えるときに前記２つの切換えグループを順次活性化するステップによって特徴付けられる、方法。
【請求項２】
前記第２のモードにおいて前記検出グループから検出されたゼロの数はセルアレイのためのプログラムバイト（２０、２１）において検出される、請求項１に記載の方法。
【請求項３】
プログラムバイトはセルアレイのハイバイトを含む、請求項２に記載の方法。
【請求項４】
プログラムバイトはセルアレイのローバイトを含む、請求項２に記載の方法。
【請求項５】
前記第１のモードにおいて前記検出グループから検出されたゼロの数はセルアレイのためのプログラムワードにおいて検出される、請求項１に記載の方法。
【請求項６】
メモリ（２００）は低電圧単一電源フラッシュメモリである、請求項１に記載の方法。
【請求項７】
プログラム回路（１００）とメモリセルアレイ（１２０）とを備えるメモリ（２００）であって、前記プログラム回路（１００）は、各々が前記メモリセルアレイ（１２０）の同時書込みビット数の許容値よりも少ない数の１組のプログラミング回路を含む複数の別個に制御可能な切換えグループに細分され、かつ第１のモードにおいて４つの前記切換えグループで構成されかつ第２のモードにおいて２つの前記切換えグループで構成される検出グループに細分され、前記メモリ（２００）は、最大の利用可能なプログラミング電流を用いながら、前記メモリセルアレイ（１２０）における同時にプログラミングされるセルの数が予め定められた数を超えないように前記切換えグループ間を切換えるスイッチング回路（１０）と、前記検出グループによって前記メモリセルアレイ（１２０）へとプログラミングされるべき論理ゼロの数を検出するための検出回路（２０、２１、２２）と、検出されたゼロの数に従ってスイッチングシーケンスを制御するための制御手段（１０）とを備え、前記制御手段（１０）は、前記第１のモードにおいて前記４つの切換えグループによって前記メモリセルアレイ（１２０）にプログラムされる論理ゼロの数が前記予め定められた数を越えないときには前記４つの切換えグループを同時に活性化し、かつ前記第２のモードにおいて前記２つの切換えグループによって前記メモリセルアレイ（１２０）にプログラムされる論理ゼロの数が予め定められた数を越えないときには前記２つの切換えグループを同時に活性化し、かつ前記２つの切換えグループによって前記メモリセルアレイ（１２０）にプログラムされる論理ゼロの数が前記予め定められた数を越えるときには前記２つの切換えグループを順次活性化し、前記予め定められた数は、前記メモリセルアレイ（１２０）の同時書込みビット数の許容値に対応することによって特徴付けられる、メモリ。
【請求項８】
制御手段（１０）はステートマシンを含む、請求項７に記載のメモリ。
【請求項９】
前記第２のモードにおいて検出回路（２０、２１）はセルアレイのためのプログラムバイトに含まれる論理ゼロの数を決定する、請求項８に記載のメモリ。
【請求項１０】
プログラムバイトはセルアレイのハイバイトを含む、請求項９に記載のメモリ。
【請求項１１】
プログラムバイトはセルアレイのローバイトを含む、前記９に記載のメモリ。
【請求項１２】
前記第１のモードにおいて検出回路（２２）はセルアレイのためのプログラムワードに含まれる論理ゼロの数を決定する、請求項７に記載のメモリ。
【請求項１３】
セルアレイ（１２０）は低電圧単一電源フラッシュメモリのためのフラッシュセルアレイを含む、請求項７に記載のメモリ。
【発明の詳細な説明】
発明の背景
発明の分野
この発明はフラッシュメモリの分野に関する。特に、この発明は低電圧単一電源フラッシュメモリのためのプログラムアルゴリズムに関する。
背景技術
フラッシュメモリは不揮発性の情報記憶を与えるためにさまざまなコンピュータシステムにおいて通常よく用いられている。これまでのメモリは典型的に、フラッシュメモリセルへと情報をプログラミングするためのプログラム回路とメモリセルを消去するための消去回路とを含む。しかしながら、このようなプログラムおよび消去回路によって必要とされる電圧源レベルは、コンピュータシステムの電源から通常利用可能である電圧源レベルとは異なる。
これまでのフラッシュメモリのいくつかはプログラムおよび消去回路に対処するために多数の電圧源を必要とする。たとえば、これまでのフラッシュメモリのあるものはプログラム回路のためにＶＣＣ電源電圧と別個のＶＰＰ電源電圧とを必要とする。残念ながら、このような二重電源電圧の必要性によって、このような二重電源フラッシュメモリを用いるコンピュータシステムの電力システム設計が複雑性を増し、このようなシステムの全体的なコストを増す。
他方、単一電源フラッシュメモリは、個々のフラッシュメモリセルをプログラミングし、かつ消去するために必要な適切な電圧レベルおよび電流レベルを発生する特殊回路を通常含む。たとえば、このようなフラッシュメモリは典型的に、プログラミング時にフラッシュメモリセルへの入力を駆動するために必要な適切な電圧レベルへと単一の電源電圧を変換するチャージポンプ回路を含む。
携帯式コンピュータのようなより最近のコンピュータシステムは、これまでのシステムに対して比較的低い電圧源（ＶＣＣ）レベルで機能する集積回路および他の装置を用いる。たとえば、５ｖのＶＣＣ源を用いたこれまでのノートブック型コンピュータシステムは現在では３ｖ以下のＶＣＣ源へと発展しつつある。
残念ながら、このような低レベルの電源電圧は、フラッシュメモリのチャージポンプ回路によって発生され得るプログラミング電流の量に実質上の制限を与える。利用可能なプログラミング電流へのこのような制限は、同時にプログラミングされ得るフラッシュセルの数を制限することによってこのようなフラッシュメモリの全体の速度を低減し得る。
理論上、チャージポンプ回路をより大きくより複雑に実現することによって、フラッシュメモリセルの全バイトまたはワードを同時にプログラミングするのに必要な電流が与えられるであろう。しかしながら、このようなより大きくより複雑なチャージポンプ回路は典型的に集積回路ダイの大きな面積を消費する。チャージポンプ専用の、このような多量の集積回路大空間は典型的に、フラッシュメモリセルと関連のアクセス回路とのために利用可能なダイ空間を低減し、それによって、このようなフラッシュメモリの全体の記憶容量を制限する。他方、このような多量のダイ空間は集積回路ダイの全体のサイズを著しく増加させることを必要とすることもあり、これによって製造コストが高くなる。
発明の概要および目的
この発明の１つの目的は、単一電源電圧フラッシュメモリのための新しいプログラムアルゴリズムを提供することである。
この発明の別の目的は、プログラミングを必要とするフラッシュメモリセルのみに利用可能なプログラミング電流を効率的に分配するプログラムアルゴリズムを提供することである。
この発明の別の目的は、利用可能なプログラミング電流に対する制限があるとすればもっとも速いプログラミング速度を可能にするプログラミングアルゴリズムを提供することである。
この発明の別の目的は、バイトモードおよびワードモードの両方で動作する低電圧単一電源フラッシュメモリのためのプログラムアルゴリズムを提供することである。
これらおよび他の目的はフラッシュメモリのためのプログラミングアルゴリズムによって与えられる。フラッシュメモリにおけるデータ入力バッファおよびプログラミング回路は一組の別個に制御可能なグループに細分される。アルゴリズムは、各グループによってフラッシュセルアレイへとプログラミングされるべき論理０の数を検出する。アルゴリズムは、最大電流容量が用いられ、かつ最大電流能力がプログラミングのために用いられるよう、フラッシュセルアレイにおける同時にプログラミングされるセルの数が予め定められた数を超えないように、グループ間を切換わる。予め定められた数は最高プログラミング速度を得ながら、フラッシュメモリにおけるチャージポンプ回路の過度の使用（overtaxing）を防ぐように選択される。
この発明の他の目的、特徴および利点は以下の詳細な説明から明らかとなるであろう。
【図面の簡単な説明】
この発明はその特定的な例示的実施例について説明され、図面が随時参照される。
図１は、プログラム回路およびフラッシュセルアレイを含む単一電源フラッシュメモリを示す。
図２は、ワード検出器がフラッシュセルアレイでプログラミングされるべき５つ以下のゼロを検出するときにプログラム制御ステートマシンがプログラミンググループ０−３を選択するシーケンスを示す。
図３は、ローバイト検出器およびハイバイト検出器が各々プログラミングのための５つ以下のゼロを検出し、ゼロとハイバイトおよびローバイトとの組合せが５よりも大きいときにプログラム制御ステートマシンがグループ０−３を選択するシーケンスを示す。
図４は、ローバイト検出器がプログラミングされるべき５つ以下のゼロを検出し、ハイバイト検出器がフラッシュセルアレイへとプログラミングされるべき５つよりも多いゼロを検出するときにプログラム制御ステートマシンがグループ０−３を選択するシーケンスを示す。
図５は、ローバイト検出器がプログラミングされるべき５つよりも多いゼロを検出し、一方、ハイバイト検出器がフラッシュセルアレイへとプログラミングされるべき５つ以下のゼロを検出するときにプログラム制御ステートマシンがグループ０−３を選択するシーケンスを示す。
図６は、ローバイト検出器がプログラミングされるべき５つよりも多いゼロを検出し、一方、ハイバイト検出器もフラッシュセルアレイへとプログラミングされるべき５つよりも多いゼロを検出するときにプログラム制御ステートマシンがグループ０−３を選択するシーケンスを示す。
図７は、フラッシュセルアレイでのバイトモードプログラミングおよびワードモードプログラミングの両方のためのプログラム制御ステートマシンの状態を示す。
図８は、１つの実施例におけるワード検出器の概略図である。
図９は、１つの実施例におけるローバイト検出器の概略図である。
図１０は、１つの実施例におけるハイバイト検出器の概略図である。
図１１は、１つの実施例におけるプログラム制御ステートマシンの概略図である。
詳細な説明
図１は、プログラム回路１００およびフラッシュセルアレイ１２０を含む単一電源フラッシュメモリ２００を示す。プログラム回路１００は、低いＶＣＣ源レベルでの動作を可能にする単一電源フラッシュメモリ２００のためのプログラムアルゴリズムを実現する。
プログラム回路１００はプログラム制御ステートマシン１０、ローバイト検出器２０、ハイバイト検出器２１およびワード検出器２２を含む。プログラム回路１００はまた、Ｄｉｎｂｕｆ０からＤｉｎｂｕｆ１５（Ｄｉｎｂｕｆ０−１５）と称されるデータ入力バッファ回路の組を含む。Ｄｉｎｂｕｆ０−１５回路は、ラインＩ／Ｏ０からラインＩ／Ｏ１５（Ｉ／Ｏ０−１５）と称される入力／出力ラインの組を介して入力／出力パッドの対応の組に結合される。Ｄｉｎｂｕｆ０−１５回路はフラッシュセルアレイ１２０のビット線を駆動する。
１つの実施例では、フラッシュセルアレイ１２０は１６ビットの幅であり、バイトモードおよびワードモードの両方でアクセス可能である。Ｄｉｎｂｕｆ０−１５回路に結合されたフラッシュセルアレイの各１６ビットワードは、グループ０からグループ３（グループ０−３）と称される４つのグループに細分される。グループ０はデータ入力バッファＤｉｎｂｕｆ０−３を含み、グループ１はＤｉｎｂｕｆ４−７を含み、グループ２はＤｉｎｂｕｆ８−１１を含み、グループ３はＤｉｎｂｕｆ１２−１５を含む。
グループ０およびグループ１のデータ入力バッファは、フラッシュセルアレイ１２０のためのバイトモードにおいてプログラミングワードのローバイトまたはプログラミングバイトに組合され、一方、グループ２およびグループ３の入力バッファはプログラミングワードのハイバイトに組合される。フラッシュセルアレイ１２０のためのバイトモードにおける全体のプログラミングワードまたはプログラミングバイトは全体で４つのデータ入力バッファグループ、グループ０−３を含む。
プログラム制御ステートマシン１０は、プログラミング動作時フラッシュセルアレイ１２０の対応のビット線を駆動するために１つ以上のデータ入力バッファグループ０−３を選択する。プログラム制御ステートマシン１０は１組の制御信号Ｓ０ＰＧＭからＳ３ＰＧＭによってグループ０−３間を切換える。プログラム制御ステートマシン１０は、フラッシュセルアレイ１２０のためのプログラミングデータの内容に従って、かつ、プログラム回路１００がバイトモードまたはワードモードのいずれで動作しているかに従って全体のバイトまたはワードをプログラミングするのに必要なだけ多くのデータ入力バッファグループ０−３を切換える。
Ｄｉｎｂｕｆ０−１５の各々は、フラッシュセルアレイ１２０におけるビットラインの対応の組を駆動するプログラム回路を含む。プログラム制御ステートマシン１０は、プログラミング時にフラッシュセルアレイ１２０を駆動するドレインポンプ回路（図示せず）の電流出力をＤｉｎｂｕｆ０−１５のプログラミング回路が過度に使用しないようにするシーケンスでグループ０−３を活性化する。
１つの実施例では、フラッシュメモリ２００のためのドレインポンプ回路が、２．７ｖから３．６ｖの間を変動する電圧源ＶＣＣから５ｖで約２．５ミリアンペアのプログラミング電流を供給可能である。２．５ミリアンペアはプログラム動作時に５つまでのフラッシュメモリセルのドレインを駆動するのに十分である。
フラッシュセルアレイ１２０のワード線およびＹパスゲートは、プログラム制御ステートマシン１０がグループ０−３間での必要な切換えを終えてプログラミング動作を完了するまで切換えられない。プログラミング時間を節約するため、グループ０−３の切換えの間ではフラッシュメモリ２００にプログラム検証動作が起こらない。プログラミング検証動作は全体のワードまたは全体のバイトのプログラム動作の完了後に行われる。
プログラム検証動作が失敗すれば、全体のワードまたはバイトが同じプログラムプロセスに従って再びプログラミングされる。このような再プログラミングの間、失敗したプログラムセルのみが後のプログラムサイクルにおいてプログラミングされる。これによって、初期プログラムサイクルの間に正しくプログラミングされたフラッシュセルの過度のプログラミングが防止される。
ローバイト検出器２０、ハイバイト検出器２１およびワード検出器２２は１組の制御信号Ｘ４ＢＬ、Ｘ４ＢＨおよびＸ４ＢＷをそれぞれ発生する。プログラム制御ステートマシン１０は制御信号Ｘ４ＢＬ、Ｘ４ＢＨおよびＸ４ＢＷをグループ０−３のための適切な切換シーケンスを決定するための他の情報と共に用いる。
ローバイト検出器２０は、フラッシュセルアレイ１２０のローバイトへとプログラミングされるべき実際の論理「０」状態を示す１組の信号Ｄｉｎ（０：７）を受取る。ローバイト検出器２０がＤｉｎ（０：７）データにおいて５つ以下のゼロを検出するならば、制御信号Ｘ４ＢＬはハイをアサートされる。ローバイト検出器２０がＤｉｎ（０：７）データにおいて５つよりも多いゼロを検出するならば、制御信号Ｘ４ＢＬはローをアサートされる。
同様に、ハイバイト検出器２１は、フラッシュセルアレイ１２０のハイバイトへとプログラミングされるべき実際の論理「０」状態を示す１組の信号Ｄｉｎ（８：１５）を受取る。ハイバイト検出器２１は、５つ以下のゼロがＤｉｎ（８：１５）において検出されるならば制御信号Ｘ４ＢＨのハイをアサートし、さもなければ制御信号Ｘ４ＰＨのローをアサートする。
ワード検出器２２は信号Ｄｉｎ（０：１５）を受取り、フラッシュセルアレイ１２０のワードへとプログラミングされるべき実際の論理「０」状態を検出する。ワード検出器２２は、５つ以下の０がＤｉｎ（０：１５）データにおいて検出されるならば制御信号Ｘ４ＢＷのハイをアサートし、さもなければ制御信号Ｘ４ＢＷのローをアサートする。
プログラム制御ステートマシン１０は、制御信号Ｘ４ＢＬ、Ｘ４ＢＨおよびＸ４ＢＷを、ＢＹＴＥ信号およびＨＢＹＴＥ信号と共に用いて、グループ０−３にフラッシュセルアレイ１２０をプログラミングさせるための適切なシーケンスを決定する。プログラム制御ステートマシン１０はプログラミングクロック（ＰＧＭＣＬＫ）によって計時される。ＢＹＴＥ信号は、フラッシュメモリ２００がバイトモードまたはワードモードのいずれでアクセスされているかを示す。ＨＢＹＴＥ信号は、バイトモードが示される場合にフラッシュセルアレイ１２０においてハイバイトまたはローバイトのいずれがプログラミングされているかを示す。
プログラム制御ステートマシン１０はグループ０−３のための１組のプログラミング制御信号を発生する。プログラミング制御信号は、グループ０を選択するＳ０ＰＧＭ信号と、グループ１を選択するＳ１ＰＧＭ信号と、グループ２を選択するＳ２ＰＧＭ信号と、グループ３を選択するＳ３ＢＧＭ制御信号とを含む。Ｓ０−Ｓ３ＰＧＭ制御信号はまた、フラッシュセルアレイ１２０でのプログラム動作の完了後プログラム制御ステートマシン１０がいつプログラムプロセスを終了するかを決定する。
図２は、ワード検出器２２がフラッシュセルアレイ１２０でプログラミングされるべき５つ以下のゼロを検出するときにプログラム制御ステートマシン１０がグループ０−３を選択するワードモードプログラミングのためのシーケンスを示す。このプログラミングシーケンスでは、Ｓ０ＰＧＭ−Ｓ３ＰＧＭ信号が時間ｔ１からｔ２の間で同時に活性化されて、グループ０−３によるフラッシュセルアレイ１２０の同時のプログラミングを可能にする。
図３は、ローバイト検出器２０がプログラミングのための５つ以下のゼロを検出し、ハイバイト検出器２１がプログラミングのための５つ以下のゼロを検出し、ゼロとハイバイトおよびローバイトとの組合せが５よりも大きいときにプログラム制御ステートマシン１０がグループ０−３を選択するワードモードプログラミングのためのシーケンスを示す。このプログラミングシーケンスでは、プログラム制御ステートマシンは時間ｔ３からｔ４の間でＳ０ＰＧＭおよびＳ１ＰＧＭ制御信号を活性化して、フラッシュセルアレイ１２０でのグループ０および１のプログラミングを可能にする。時間ｔ４からｔ５の間、プログラム制御ステートマシン１０はＳ２ＰＧＭおよびＳ３ＰＧＭ制御信号を活性化してグループ２および３によるプログラミングを活性化する。
図４は、ローバイト検出器２０がプログラミングされるべき５つ以下のゼロを検出し、ハイバイト検出器２１がフラッシュセルアレイ１２０へとプログラミングされるべき５つよりも多いゼロを検出するときにプログラム制御ステートマシン１０がグループ０−３を選択するワードモードプログラミングのためのシーケンスを示す。このシーケンスでは、プログラム制御ステートマシン１０は時間ｔ６からｔ７の間でグループ０およびグループ１を活性化し、次に時間ｔ７からｔ８の間でグループ２を活性化し、次に時間ｔ８からｔ９の間でグループ３を活性化する。
図５は、ローバイト検出器２０がプログラミングされるべき５つよりも多いゼロを検出し、一方、ハイバイト検出器２１がフラッシュセルアレイ１２０へとプログラミングされるべき５つ以下のゼロを検出するときにプログラム制御ステートマシン１０がグループ０−３を選択するワードモードプログラミングのためのシーケンスを示す。このシーケンスでは、プログラム制御ステートマシン１０は時間ｔ１０からｔ１１の間でグループ０を活性化し、次に時間ｔ１１からｔ１２の間でグループ１を活性化する。グループ０および１のプログラミングの完了後、プログラム制御ステートマシン１０は時間ｔ１２からｔ１３の間でグループ２およびグループ３を同時に活性化してプログラミングシーケンスを終える。
図６は、ローバイト検出器２０がプログラミングされるべき５つよりも多いゼロを検出し、一方、ハイバイト検出器２１もフラッシュセルアレイ１２０へとプログラミングされるべき５つよりも多いゼロを検出するときにプログラム制御ステートマシン１０がグループ０−３を選択するワードモードプログラミングのためのシーケンスを示す。この場合、プログラム制御ステートマシン１０はグループ０−３を別個の間隔で順次活性化する。プログラム制御ステートマシン１０は時間ｔ１４からｔ１５の間でグループ０を活性化し、ｔ１５からｔ１６の間でグループ１を活性化し、時間ｔ１６からｔ１７の間でグループ２を活性化し、時間ｔ１７からｔ１８の間でグループ３を活性化する。
図７は、フラッシュセルアレイ１２０でのバイトモードおよびワードモードのプログラミングのためのプログラム制御ステートマシン１０の状態を示す。ローバイト検出コラムはＸ４ＢＬ制御信号の状態を示し、ハイバイト検出コラムはＸ４ＢＨ制御信号の状態を示し、ワード検出コラムはＸ４ＢＷ制御信号の状態を示す。各プログラミングシーケンスは第１のＰＧＭサブパルスから第４のＰＧＭサブパルスと称される４つまでのプログラムサブパルスを含んでもよい。各サブパルスの間、プログラム制御ステートマシン１０の状態は制御信号Ｓ０ＰＧＭからＳ３ＰＧＭに対応する状態Ｓ０からＳ３によって示される。
図２−６について上述したように、プログラム制御ステートマシン１０のワードモードは５つの起こり得るプログラミングシーケンスを生じる。バイトモードでは、ハイバイトプログラミングおよびローバイトプログラミングの各々が図７に示すように２つの起こり得るプログラミングシーケンスを含む。
図８は、１つの実施例におけるワード検出器２２の概略図である。ワード検出器２２は、ＤＩＮ（１５：０）信号ラインに示されるゼロの数を決定するアナログ加算回路を含む。
図９および図１０は、それぞれローバイト検出器２０およびハイバイト検出器２１の概略図である。ローバイト検出器２０およびハイバイト検出器２１は各々、対応の入力データラインＤＩＮ（７：０）またはＤＩＮ（１５：８）におけるゼロの数を決定するアナログ加算回路を含む。
図１１は、１つの実施例におけるプログラム制御ステートマシン１０の概略図である。状態Ｓ０からＳ３はプログラム制御ステートマシンのための次の状態を示す。
この発明の上述の詳細な説明は例示の目的のために与えられ、網羅的であるかまたはこの発明を開示される厳密な実施例に限定するためのものではない。したがって、この発明の範囲は添付の請求の範囲によって規定される。
【図１】
0003947781.tif 000002
【図２】
0003947781.tif 000003
【図３】
0003947781.tif 000004
【図４】
0003947781.tif 000005
【図５】
0003947781.tif 000006
【図６】
0003947781.tif 000007
【図７】
0003947781.tif 000008
【図８】
0003947781.tif 000009
【図９】
0003947781.tif 000010
【図１０】
0003947781.tif 000011
【図１１】
0003947781.tif 000012