DE69533429T2 - Automatischer progammier-algorithmus für flash-speicher im seitenmodus mit variabler programmierimpulshöhe und -breite - Google Patents

Automatischer progammier-algorithmus für flash-speicher im seitenmodus mit variabler programmierimpulshöhe und -breite Download PDF

Info

Publication number
DE69533429T2
DE69533429T2 DE69533429T DE69533429T DE69533429T2 DE 69533429 T2 DE69533429 T2 DE 69533429T2 DE 69533429 T DE69533429 T DE 69533429T DE 69533429 T DE69533429 T DE 69533429T DE 69533429 T2 DE69533429 T2 DE 69533429T2
Authority
DE
Germany
Prior art keywords
pulse
programming
cells
memory cells
cell
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69533429T
Other languages
English (en)
Other versions
DE69533429D1 (de
Inventor
Shing Chia CHEN
Chun-Hsiung Hsin-chu HUNG
Teruhiko Kamei
Ray-Lin Wan
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Macronix International Co Ltd
Original Assignee
Macronix International Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Macronix International Co Ltd filed Critical Macronix International Co Ltd
Publication of DE69533429D1 publication Critical patent/DE69533429D1/de
Application granted granted Critical
Publication of DE69533429T2 publication Critical patent/DE69533429T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits

Landscapes

  • Read Only Memory (AREA)

Description

  • Daten der Continuation-Anmeldung
  • Die vorliegende Anmeldung ist eine Continuation-In-Part Anmeldung der PCT-Patentanmeldung mit dem Titel "Forgeschrittene Programmierverifizierung für Flash-Speicher im Seitenbetrieb (Advanced Program Verify for Page Mode Flash Memory), Anmelde-Nummer: PCT/US95/00077, eingereicht am 05. Januar 1995, die eine Continuation-In-Part Anmeldung der PCT-Anmeldung US 94/10331, eingereicht am 13. September 1994, ist, nunmehr US-Patentanmeldung-Nr. 08/325,467, eingereicht am 26. Oktober 1994 mit dem Titel "FLASH EPROM INTEGRATED ARCHITECTURE" („Integrierte Flash-EPROM-Architektur" mit den Erfindern Yiu, et al).
  • HINTERGRUND DER ERFINDUNG
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf die Technologie der Flash EEPROM Speicher und genauer gesagt auf eine verbesserte Speicher-Architektur für Flash EEPROMs zum automatischen Programmieren mit geregelten Programmierspannungen für eine verbesserte Effizienz und Geschwindigkeit.
  • Beschreibung des verwandten Standes der Technik
  • Flash EEPROMS sind eine wachsende Klasse nicht flüchtiger integrierter Speicherschaltkreise. Die Speicherzellen in einem Flash EEPROM werden unter Verwendung sogenannter Floating Gate Transistoren (Transistoren mit potentialfreiem Gate) gebildet, in welchem die Daten in einer Zelle gespeichert werden, indem das potentialfreie Gate oder Floating Gate geladen oder entladen wird. Das Floating Gate besteht aus einem leitfähigem Material, typischerweise aus Polysilicium, welches gegenüber dem Kanal des Transistors durch eine dünne Oxidschicht oder ein durch ein anderes Isoliermaterial isoliert ist und auch gegenüber dem Steuer-Gate des Transistors durch eine zweite Schicht aus einem Isoliermaterial isoliert ist.
  • Das Floating Gate kann durch einen Fowler-Nordheim-Tunnel-Mechanismus geladen werden, indem eine große positive Spannung zwischen dem Gate und der Source oder der Drain bereitgestellt wird. Dies bewirkt, dass Elektronen durch den dünnen Isolator hindurch in das Floating Gate injiziert werden. Alternativ kann ein Lawinen-Injektions-Mechanismus, der auch als Injizierung heißer Elektronen bezeichnet wird, verwendet werden, indem Potentiale angelegt werden, um hochenergetische Elektronen in dem Kanal der Zelle zu induzieren, die durch den Isolator hindurch in das Floating Gate injiziert werden. Wenn das Floating Gate geladen ist, ist die Schwellwertspannung, die bewirkt, daß die Speicherzelle leitfähig wird, gegenüber der Spannung erhöht, die während eines Lesevorgangs an der Wortleitung angelegt wird. Demnach leitet die Zelle nicht, wenn die geladene Zelle während eines Lesevorgangs adressiert bzw. angesprochen wird. Der nicht leitende Zustand der Zelle kann je nach der Polarität des Abfrage- bzw. Erfassungsschaltkreises als binäre Eins oder Null interpretiert werden.
  • Das Floating Gate wird entladen, um den entgegengesetzten Speicherzustand bereitzustellen. Diese Funktion wird üblicherweise durch einen F-N-Tunnel-Mechanismus zwischen dem Floating Gate oder der Source oder der Drain des Transistors ausgeführt oder zwischen dem Floating Gate oder dem Substrat. Beispielsweise kann das Floating Gate durch die Drain entladen werden, indem eine große positive Spannung von der Drain zu dem Gate bereitgestellt wird, während man die Source potentialfrei (schwebend) läßt.
  • Die hohen Spannungen, die verwendet werden, um das Floating Gate zu laden und zu entladen, bringen beträchtliche Einschränkungen hinsichtlich des Designs für Flash-Speichereinrichtungen mit sich, insbesondere, wenn die Zellabmessungen und die Spezifikationen des Prozesses in ihren Maßen reduziert werden.
  • Weiterhin ist der Vorgang des Ladens und Entladens des potentialfreien bzw. schwebenden Gates (Floating Gate), insbesondere wenn man den F-N-Tunnel-Mechanismus verwendet, ein relativ langsamer Vorgang, der die Anwendung von Flash-Speichereinrichtungen in gewissen geschwindigkeitsempfindlichen Anwendungen einschränken kann.
  • Bei den Floating-Gate-Speicher-Architekturen nach dem Stand der Technik, welche eine Sub-Mikrometer-Technologie verwenden, wird die Variation der kritischen Maße in den Mustern bzw. Strukturen auf dem physikalischen Material üblicherweise innerhalb von 10% genau eingestellt bzw. geregelt. Für eine Flash-EEPROM-Zelle oder einen anderen Floating Gate-Speicher kann eine solche Variation der kritischen Maße bei Verwendung des Fowler-Nordheim-Tunnel-Verfahrens zu einer Variation der Programmiergeschwindigkeit zweiter Ordnung führen. Wenn weiterhin die Abweichung in den Vorspannungen in dem Array bzw. Speicher-Zellen-Feld berücksichtigt werden, kann die Variation der Programmiergeschwindigkeit sich bei Einrichtungen nach dem Stand der Technik in der vierten Ordnung bzw. vierten Potenz verändern.
  • Das konventionelle Verfahren zum Programmieren von Flash-Speichern verwendet eine feste Pulsbreite und eine feste Vorspannung, wobei nach jedem Programmierimpuls eine Programmierverifizierungsschleife ausgeführt wird. Wenn die Verifizierung fehlschlägt, so wird iterativ ein weiterer Impuls angelegt. Wenn die Programmierimpulse zu viel Energie haben, so können daraus überprogrammierte Zellen resultieren. Wenn Impulse zu wenig Energie haben, so wird eine zu geringe An zahl von Zellen im ersten Zyklus bzw. Takt programmiert. Eine überprogrammierte Zelle führt dazu, dass zuviel Ladung aus dem Floating Gate der Einrichtung heraus verschoben wird, so dass sie außerhalb der spezifizierten Arbeitsweise für das Array liegt. Dies kann zu Codierungsfehlern führen. Demnach müssen die Algorithmen eine Überprogrammierung sorgfältig vermeiden, während sichergestellt werden muß, daß es nicht zu lange dauert, um ein bestimmtes Byte in dem Speicher zu programmieren. Wenn der Bereich der Programmiergeschwindigkeit für Zellen in einem Speicher Array um zwei bis vier Größenordnungen variiert, so kann man sich vorstellen, dass das Problem der Überprogrammierung oder das Erfordernis, das zu viele Programmierimpulse notwendig sind, ziemlich beträchtlich sein kann. Dies hat die Arbeit von Flash-Speichereinrichtungen nach dem Stand der Technik verlangsamt.
  • Ein früherer Ansatz zur Erhöhung der Programmiergeschwindigkeit, während eine Überprogrammierung schnell programmierter Zellen vermieden wird, beinhaltet das schrittweise Erhöhen der Impulshöhe für jeden nachfolgenden Wiederholungsimpuls. Dieser Ansatz erzielt ein schnelles Programmieren, vorausgesetzt, daß die Schritte bzw. Abstufungen der Impulshöhe beträchtlich sind. Er erfordert jedoch auch eine komplexe Schaltung zum Implementieren. Weiterhin bewirken die gesteigerten Impulshöhen der späteren Impulse in der Sequenz eine zunehmende Störung von Zellen, die nicht programmiert werden. Eine weitere Alternative umfaßt statt Erhöhen der Impulshöhe einfach das Vergrößern der Impulsbreite bzw. Pulsbreite der nachfolgenden Impulse in dem Wiederholungspfad. Diese Technik verursacht zwar nicht das Problem der zunehmenden Störung durch den Algorithmus der Steigerung der Impulshöhe, führt jedoch zu einer nicht mehr hinnehmbaren Programmierdauer und zu einer relativ komplizierten Schaltung, um all die verschiedenen Impulsbreiten zu implementieren.
  • Der Artikel mit dem Titel "A 3.3 V 32 Mb NAND Flash Memory with Incremental Step Pulse Programming Scheme" (NAND-Flash-Speicher mit 32 Mb bei 3.3 V mit einem Programmierschema schrittweiser Impulsabstufung) von Kang-Deog Suh et al, IEEE Internationale Konferenz für Festkörperschaltkreise (Solid-State Circuits), Band 38, 1. Februar 1995, Seiten 128 und 129, beschreibt einen Flash-Speicher vom NAND-Typ, bei welchem nach einem anfänglichem Programmierimpuls jeder nachfolgende Impuls (falls erforderlich) in 0,5-Voltschritten bis auf 20 Volt heraufgesetzt wird.
  • Die US-A-4,357,685 beschreibt Techniken zum Programmieren eines elektrisch veränderbaren nur Lese-Speichers, dessen Zellen Feldeffekttransistoren mit isoliertem Gate (IGFETs) aufweist. Insbesondere werden Techniken der Injektion heißer Elektronen verwendet, um die Zellen während einer Folge von Lade-Schritten zu programmieren. In einer Ausführungsform nimmt die Periode bzw. Dauer für jeden Lade-Schritt zu, während die Spannung an der Drain und dem Gate konstant bleibt. In einer alternativen Ausführungsform bleibt die Zeitdauer für jeden Ladungsschritt konstant, während die Spannung an dem Gate in aufeinanderfolgenden Lade-Schritten zunimmt. Es wird auch angegeben, daß es möglich wäre, sowohl die Dauer der Lade-Schritte als auch die Größe des Gate-Vorspannungspotentials während nachfolgender Ladeschritte zu variieren.
  • Der Artikel "High-Speed Programming and Program-Verify Methods Suitable for Low-Voltage Flash Memories" (Hochgeschwindigkeitsprogrammierung und Programmierverifizierungsverfahren, die für Flash-Speicher mit niedriger Spannung geeignet sind), von Toshihiro, Tanaka et al, veröffentlicht im SYMPOSIUM ON VLSI CIRCUITS, DIGEST OF TECHNICAL PAPERS, PROCEEDINGS OF 1994 IEEE SYMPOSIUM ON VLSI CIRCUITS HONOLULU, HI, USA, 9. bis 11. JUNI 1994, beschreibt ein Flash-Speicher-Modell, bei welchem die Programmierimpulsbreite quasi Logarithmen gesteigert und die Wiederholung der Verifizierung abgesenkt wird, um die gesamte Verifizierungszeit zu reduzieren.
  • Die US-A-5,357,463 beschreibt eine Technik zum Durchführen einer umgekehrten Programmierung eines Flash EEPROM, bei welcher alle Zellen zunächst auf eine hohe Schwellwertspannung gelöscht werden und dann ausgewählte Zellen unter Verwendung von Fowler-Nordheim-Tunneln auf eine niedrige Schwellwertspannung programmiert werden.
  • Es ist deshalb wünschenswert, eine Flash EEPROM Zell-Architektur und ein Verfahren zum Programmieren der Zellen bereitzustellen, welche die Geschwindigkeitsnachteile und Überprogrammier-Fehler des Standes der Technik überwinden.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Spezielle und bevorzugte Aspekte der vorliegenden Erfindung sind in den beigefügten unabhängigen und abhängigen Ansprüchen dargelegt.
  • Ausführungsformen der vorliegenden Erfindung stellen ein Verfahren und eine Vorrichtung zum Programmieren eines Flash-Speicher-Arrays bereit, welches eine schnelle Programmierung im wesentlichen sämtlicher Zellen in dem Array ohne irgendeine Überprogrammierung sicherstellt. Die Erfindung beruht auf der Bereitstellung eines Musters von Programmierwiederholungsimpulsen, die entsprechende Pulsbreiten und Pulshöhen haben, die entsprechend einem Muster variieren. Die bevorzugten Muster umfassen eine erste Phase, die innerhalb eines angegebenen Zeitrahmens einschließlich einer vorbestimmten Anzahl von Wiederholungen abgeschlossen wird, so dass im wesentlichen sämtliche Zellen in dem Array innerhalb der ersten Phase programmiert werden. Eine zweite Phase des bevorzugten Musters beinhaltet eine Sequenz von Impulsen höherer Energie, die für die Programmierung an die langsamsten Zellen in dem Array adressiert werden. Das Muster weist eine Kombination zunehmender Pulsbreiten und zunehmender Pulshöhen auf. Bei der Benutzung in einem Seitenprogrammierarray, bei welchem einzelne Zellen, die einfach programmiert werden können, keine nachfolgenden Pulse erhalten, kann man ein sehr schnelles und zuverlässiges Programmierschema erreichen, das eine beträchtliche Verbesserung gegenüber Ansätzen nach dem Stand der Technik bringt.
  • Dementsprechend kann eine Ausführungsform der vorliegenden Erfindung als ein Verfahren zur Programmierung einer Floating Gate-Speicherzelle charakterisiert werden, welche das Anlegen eines ersten Programmierimpulses an der Zelle mit einer ersten Impulshöhe und einer ersten Impulsbreite umfasst, welche so ausgewählt sind, daß die Zelle sehr wahrscheinlich nicht überprogrammiert wird. Als nächstes bestimmt der Algorithmus, ob die Zelle in Reaktion auf den ersten Programmierimpuls programmiert worden ist, und wenn dies nicht der Fall ist, so legt er einen Programmierwiederholungsimpuls einer Zelle an. Nach dem Programmierwiederholungsimpuls bestimmt der Algorithmus, ob die Zelle in Reaktion auf diesen Impuls programmiert worden ist, und wenn dies nicht der Fall ist, so legt er wiederholt weitere Programmierwiederholungsimpulse an die Zelle an und bestimmt, ob die Zelle programmiert worden ist, bis festgestellt wurde, daß die Zelle programmiert worden ist oder bis eine maximale Anzahl von Wiederholungen durchgeführt worden ist. Die Programmierwiederholungsimpulse haben entsprechende Impulsbreiten und Impulshöhen, die entsprechend einem Muster variieren, dass zumindest einen Impuls enthält, der eine Impulsbreite hat, die breiter ist als die Impulsbreite des ersten Impulses und eine Impulshöhe hat, die höher als die Höhe des ersten Impulses ist. Das Muster wird derart ausgewählt, dass die Zelle wahrscheinlich innerhalb einer ersten Phase des Musters einschließlich einer vorbestimmten Anzahl von Wiederholungen programmiert worden ist, die geringer ist als die maximale Anzahl der Wiederholungen.
  • Gemäß einer Ausführungsform der Erfindung haben die Wiederholungsimpulse in dem Muster entsprechende Energien, die durch ihre jeweiligen Impulshöhen und Impulsbreiten bestimmt werden, die nacheinander konstant bleiben oder die während der ersten Phase des Musters zunehmen und die eine Energie während der zweiten Phase des Musters haben, die zumindest so groß ist, wie bei dem letzten Impuls der ersten Phase des Musters.
  • Gemäß einer weiteren Ausführungsform der Erfindung kann diese gekennzeichnet werden als ein Verfahren zum Speichern von Daten in einem Speicher-Array auf einem integrierten Schaltkreis, der eine Mehrzahl von Reihen und Spalten aus Speicherzellen mit potentialfreiem Gate bzw. Floating Gate hat. Das Verfahren umfaßt das Laden eines Seitenpuffers auf dem integrierten Schaltkreis mit einer Reihe von Eingabedaten (wobei Bits gesetzt werden, die Programmierimpulse für einen Programmierwert empfangen sollen) und Auswählen von einer Reihe von Speicherzellen zum Programmieren der Eingabedaten in die Reihe. Das Programmierwiederholungsmuster, welches oben beschrieben wurde, wird auf die Zellen in der Reihe von Speicherzellen angewendet, welche den Eingangs- bzw. Eingabedaten entsprechen, die einen Programmierwert in dem Seitenpuffer haben. Nach jeder Verifizierungssequenz werden die Eingangsdaten für jedes Bit, welches in dem Seitenpuffer verifiziert wird, auf einen Wert für das Nichtprogrammieren zurückgesetzt. Nachdem die Bits in dem Seitenpuffer zurückgesetzt worden sind, die die Verifizierung erfolgreich durchlaufen haben, wird der nächste Wiederholungsimpuls nur an denjenigen Zellen angelegt, die die Verifizierung nicht erfolgreich durchlaufen haben.
  • Auf diese Weise kann eine Seite von Daten in einer Reihe geladen werden, die mehr als 500 Zellen umfasst, und in einer Ausführungsform der Erfindung mehr als 1000 Zellen. Die erste Phase des Programmierwiederholungsmusters gemäß dieser Ausführungsform wird in weniger als einer Millisekunde abgeschlossen. Für eine Reihe mit 1000 Zellen entspricht dies einer Mikrosekunde pro Intervall der Zellprogrammierung. Gemäß einer Ausführungsform der vorliegenden Erfindung ist die erste Phase des oben erwähnten Musters dafür ausgelegt, in weniger als einer Millisekunde abgeschlossen zu werden und viele Seiten werden in beträchtlicher weniger als einer Millisekunde abgeschlossen. Demnach wird für diejenigen Seiten, die langsame Zellen haben, welche es erfordern, dass das Muster bis in die zweiten Phase hinein ausgedehnt wird, die gesamte durchschnittliche Programmiergeschwindigkeit der Einrichtung durch diese Ausführungsform der vorliegenden Erfindung beibehalten, welche sicherstellt, dass die meisten Reihen eine erfolgreiche Programmierung in weniger als einer Millisekunde abschließen.
  • Die vorliegende Erfindung ist besonders zweckmäßig bei der Architektur für seitenweise Programmierung mit automatischer bitweiser (Bit für Bit) Verifizierung. Sie stellteine effiziente, schnelle Programmierung von Flash-Speicher-Einrichtungen in einem vollständig automatischen Algorithmus bereit, der keine Intervention eines Host erfordert.
  • Andere Gesichtspunkte und Vorteile der vorliegenden Erfindung erkennt man bei Betrachtung der Figuren, der genauen Beschreibung und der folgenden Ansprüche.
  • KURZBESCHREIBUNG DER FIGUREN
  • 1 ist ein schematisches Diagramm eines integrierten Speicherschaltkreis mit Floating Gate gemäß der vorliegenden Erfindung, wobei eine automatische Programmierung variable Pulsbreiten und Pulshöhen verwendet.
  • 2 ist eine vereinfachte Darstellung einer Floating Gate-Speicherzelle für den Zweck der Beschreibung des Programmiervorgangs.
  • 3 veranschaulicht das Muster von Wiederholungsimpulsen, bei welchen im Verlaufe des Musters die Impulsformen in Breite und Höhe variieren.
  • 4 ist ein Blockdiagramm der für die Erzeugung des Musters der Wiederholungsimpulse gemäß der vorliegenden Erfindung verwendeten Logik.
  • 5 ist eine Kurve, welche den Ansatz der Verwendung einer erhöhten Pulsbreite allein mit dem Ansatz der vorliegenden Erfindung vergleicht, welche eine variable Pulshöhe und Pulsbreite verwendet.
  • 6 ist eine Kurve, welche die Leistungsfähigkeit durch die Steigerung der Pulshöhe allein im Vergleich zu dem Ansatz der vorliegenden Erfindung zeigt, in welcher die Pulshöhe und die Pulsbreite gesteigert werden.
  • 7 ist eine Kurve, welche die Leistungsfähigkeit eines bevorzugten Ansatzes der vorliegenden Erfindung und Verwendung der in den 8 bis 11 gezeigten Architektur darstellt.
  • 8 ist schematisches Diagramm eines Arrays aus Flash EEPROM Zellen, welche bei der vorliegenden Erfindung verwendet werden.
  • 9 ist ein schematisches Blockdiagramm eines Flash EEPROM-Arrays mit Seitenprogrammierung und einer automatischen Verifizier- und Wiederholungsschaltung gemäß der vorliegenden Erfindung.
  • 10 ist ein schematisches Diagramm, welches einen Abschnitt des Seitenprogrammier- und automatischen Verifizierungsschaltkreises für zwei Speicherzellen in dem Flash EEPROM-Array zeigt.
  • 11 zeigt ein Flußdiagramm eines Seitenprogrammier- und automatischen Verifizierungsvorgangs gemäß der vorliegenden Erfindung unter Verwendung eines Musters der Form von Wiederholungsimpulsen.
  • GENAUE BESCHREIBUNG
  • Eine genaue Beschreibung bevorzugter Ausführungsformen der vorliegenden Erfindung wird in Verbindung mit den Figuren gegeben, von denen 1 eine Übersicht des Konzeptes einer Speichereinrichtung mit Floating Gates unter Verwendung eines automatischen Programmieralgorithmus mit einer Steuerlogik für die Impulshöhe und -breite bereitstellt. Danach enthält der in 1 dargestellte integrierte Schaltkreis ein Speicher-Array 10 mit Floating Gates, wie zum Beispiel einen Flash-Speicher oder EEPROM. Mit dem Array 10 sind ein x-Decoder 11, ein y-Decoder 12 und Durchlaßgatter 13 für die y-Richtung verbunden, welche Zugriff auf die Bit-Leitungen des Arrays gewähren. Der y-Decoder wählt bestimmte Bit-Leitungen in dem Array aus, während der x-Decoder 11 bestimmte Wortleitungen auswählt. Adreßsignale werden auf den Eingangsstiften bzw. -anschlüssen, die allgemein mit 14 bezeichnet sind, an einen Adreß-Zwischenspeicher und -puffer 15 geliefert. Der Adreß-Zwischenspeicher und -puffer 15 treibt Leitungen 16, die mit dem x-Decoder 11 und dem y-Decoder 12 verbunden sind. Datensignale werden durch Eingangs-/Ausgangsanschlüs se 17 an die Dateneingangs-/-ausgangsschaltung 18 zugeführt. Die Dateneingangs-/-ausgangsschaltung 18 führt Eingangsdaten durch einen Programmierdatenpuffer 19 und die y-Durchlaßgatter 13 in das Array zu. Ausgangsdaten von dem Array werden durch die y-Durchlaßgatter 13 an Abfrage-Verstärker 20 zugeführt und von diesen Abfrage-Verstärkern durch die Dateneingangs-/-ausgangsschaltung 18. Andere Eingangsgrößen der Einrichtung umfassen Steuersignale, einschließlich einer Chipeinschaltung CE, einer Ausgangsfreigabe OE und einer Schreibfreigabe WE, die Anschlüssen bzw. Stiften 21 zugeführt werden. Diese Signale werden auf die Eingangslogik 22 geschaltet, welche mit der Betriebsartlogik und der Zustandsmaschine bzw. dem endlichen Automaten 23 kombiniert ist. Die Zustandsmaschine gemäß der vorliegenden Erfindung umfaßt einen automatischen Programmieralgorithmus, wie er nachstehend noch genauer erläutert wird.
  • Die Betriebsartlogik reagiert auf Befehle, die über die Adreß- und Datenleitungen 14 und 17 empfangen werden. Demnach ist der Ausgang der Daten I/O Schaltung auf Leitung 24 nicht nur mit dem Programmierdatenpuffer 19, sondern auch mit der Betriebsartlogik und der Zustandsmaschine 23 verbunden. Außerdem werden Adreßsignale von Leitung 16 auch auf die Betriebsartlogik und die Zustandsmaschine 23 geschaltet.
  • Gemäß einer Ausführungsform der Erfindung besteht das Speicher-Array 10 mit potentialfreien Gates aus Flash EEPROM-Zellen, die gelöscht und programmiert werden können. Um diesen Vorgang zu bewerkstelligen, sind Spannungsquellen 25 für die Programmierung und das Löschen vorgesehen, welche hohe positive oder negative Spannungen für das Array zum Zwecke der Programmierung und des Löschens der Floating Gate-Zellen bereitstellen. Gemäß der vorliegenden Erfindung ist eine Steuerlogik 26 für die Impulshöhe und -breite vorgesehen, welche während der automatischen Programmiersequenz des Chips verwendet wird, um eine effiziente, schnelle Programmierung von Zellen in dem Array ohne Überprogrammierung sicherzustellen. Die Quellen 25 für die Programmier- und Löschspannung sind unter der Steuerung der Steuerlogik für die Impulshöhe und -breite auf Leitung 27 durch den x-Decoder 11 auf die Wortleitungen in dem Speicher-Array 10 in dem Floating Gate, über Leitung 28 durch die y-Durchlaßgatter 13 weiter auf die Bit-Leitung des Arrays und über Leitung 29 auf die Source-Spannungsknoten des Arrays geschaltet.
  • Eine Pumpe für negative Ladung wird in den Programmierspannungsquellen 25 nach 1 verwendet, um die Wortleitungen der Arrays entsprechend dem oben Gesagten zu treiben.
  • Die Implementierung der Ladungspumpe und der beispielhaften Schaltung, die für den Spannungsteiler verwendet werden kann, wird in der gleichzeitig anhängigen Patentanmeldung mit dem Titel "SERIES CAPACITOR CHARGE PUMP", Anmelde-Nr. PCT/US/03069, eingereicht am 09. März 1995, beschrieben, die durch diese Bezugnahme hier aufgenommen ist, als ob dies hier im vollem Umfang dargestellt wäre.
  • Das Blockdiagramm nach 1 soll eine vollständige, integrierte Speicherschaltkreiseinrichtung wiedergeben, die gemäß der vorliegenden Erfindung mit dem automatischen Programmieralgorithmus verbessert ist, der die Steuerlogik 26 für die Impulshöhe und -breite verwendet. Demnach können bezüglich der Implementierung der Chip-Steuerstrukturen und der Speicher-Architekturen, mit welchen die vorliegende Erfindung verwendet werden kann, weitere Details unter Bezug auf kommerzielle integrierte Schaltkreise bestimmt bzw. festgestellt werden.
  • Gemäß der vorliegenden Erfindung ist der Programmieralgorithmus für das Speicher-Array 10 mit potentialfreien Gates durch Verwendung der Steuerlogik für Impulshöhe und -breite verbessert. In einem bevorzugten System beinhaltet der Programmiervorgang das Entladen der Floating Gates in den Floating Gates-Zellen, wie es unter Bezug auf 2 beschrieben wird.
  • 2 ist ein schematisches Diagramm einer Speicher-Zelle mit Floating Gate, welche ein Steuer-Gate 40, eine Source 41, eine Drain 42 und ein Floating Gate 43 enthält. Während der Programmierung wird das Steuergerät einer zu programmierenden Zelle gemäß der vorliegenden Erfindung mit einer Wortleitung verbunden, welche die Wortleitungsspannung von –8 V erhält. Der Source-Anschluß 41 wird bzw. ist mit der Array-Referenzspannung VSS verbunden, die während des Programmiervorgangs mit Masse verbunden oder schwebend (floating) gehalten wird. Die Drain 42 ist mit einer Bit-Leitung verbunden, die ein Impulsmuster gemäß der vorliegenden Erfindung für das automatische Programmieren der Zelle empfängt. Das Impulsmuster sieht in einer Ausführungsform der Erfindung einen positiven Impuls in dem Bereich von 5,5 V bis 6,5 V vor, was zu einem Vorgang führt, der als Fowler-Nordheim-Tunneln von Elektronen aus dem Floating Gate in die Drain bekannt ist, wie es durch den Pfeil 44 angezeigt wird. Wenn Elektronen aus dem Floating Gate 43 entfernt werden, wird der Einschaltschwellwert der Zelle mit dem Floating Gate reduziert. Demnach wird bei einem Speicher-Array 10 mit Floating Gates, welches ein Entladen des Floating Gate als den programmierten Zustand verwendet, eine ausgewählte Zelle in Reaktion auf eine Lesespannung leitfähig, welche die Bit-Leitung herabzieht, mit welcher die Zelle verbunden wird, wenn sie ausgewählt ist. In alternativen Systemen kann der umgekehrte Zustand als der programmierte Zustand verwendet werden, was das Laden des Floating Gates umfasst, so dass sein Schwellwert erhöht wird. Wenn der erhöhte Schwellwert als der programmierte Zustand für das Speicher-Array mit Floating Gate verwendet wird, ist die Zelle nicht leitfähig, wenn auf sie zugegriffen wird und zieht die entsprechende Bit-Leitung nicht herab.
  • Wie oben erwähnt, wird an der Drain 42 der Floating Gate-Zelle, die programmiert wird, ein Impulsmuster gemäß der vorliegenden Erfindung angelegt. Ein beispielhaftes Impulsmuster ist in 3 wiedergegeben. Demnach wird gemäß der Ausführungsform nach 3 das Steuer-Gate der Zelle, die programmiert wird, auf –8 V eingestellt, während die Drain eine Folge aus einem oder mehreren Programmierimpulsen empfängt, um die Zelle zu programmieren. Ein erster Programmierimpuls 60 wird an der Drain der Floating Gate-Zelle, die programmiert werden soll, angelegt. Der erste Pro grammierimpuls hat eine Impulsbreite von 100 Mikrosekunden und eine Impulshöhe von 5 V. Nach dem ersten Impuls 60 wird in dem Intervall 61 ein Programmier-Verifizierungsvorgang ausgeführt. Wenn die Zelle den Verifizierungstest besteht, der während des Intervalls 61 ausgeführt wird, so werden an der Zelle keine weiteren Impulse angelegt. Wenn sie die Verifizierung jedoch nicht besteht bzw. nicht positiv durchläuft, so wird erneut ein Programmierwiederholungsimpuls 62 an der Drain angelegt. In der in 3 dargestellten Ausführungsform ist die Impulsbreite des Wiederholungsimpulses 62 100 Mikrosekunden und die Impulshöhe beträgt 5,5 V. Demnach ist die Impulshöhe in dem zweiten Impuls in der Sequenz erhöht, jedoch nicht die Impulsbreite. Wie zuvor wird nach dem zweiten Impuls ein Verifizieralgorithmus ausgeführt. Wenn die Zelle diesen besteht, so werden keine weiteren Impulse angelegt. Wenn die Zelle ihn jedoch nicht besteht, so wird ein zweiter Wiederholungsimpuls 63 angelegt. Der zweite Wiederholungsimpuls hat in diesem Beispiel eine Impulsbreite von 200 Mikrosekunden und eine Impulshöhe von 5,5 V. Demnach ist die Impulsenergie durch Verdoppeln der Breite des Impulses im Vergleich zu dem ersten Wiederholungsimpuls 62 erhöht, jedoch nicht durch Vergrößern der Impulshöhe. Wenn nach dem zweiten Wiederholungsimpuls 63 der Verifizierungsalgorithmus nicht erfolgreich ist, so wird ein dritter Wiederholungsimpuls 64 angelegt. Der dritte Wiederholungsimpuls 64 hat eine Impulsbreite von 400 Mikrosekunden und eine Impulshöhe von 5,5 V. Demnach wird die Impulsenergie relativ zu dem zweiten Wiederholungsimpuls 63 durch Verdoppeln der Breite erneut verdoppelt. Die Impulshöhe wird jedoch in diesem Stadium nicht gesteigert. Nach dem dritten Wiederholungsimpuls 64 wird ein Verifizierungsalgorithmus ausgeführt. Wenn die Zelle die Verifizierung immer noch nicht positiv durchläuft, so wird an der Drain ein vierter Wiederholungsimpuls 65 angelegt. Der vierte Wiederholungsimpuls hat eine Höhe von 8 V und eine Impulsbreite von 800 Mikrosekunden. Demnach ist der vierte Impuls zweimal so breit wie der dritte Wiederholungsimpuls 64 und hat auch eine größere Impulshöhe. Erneut wird nach dem vierten Wiederholungsimpuls eine Verifizierungsschleife ausgeführt. Wenn die Zelle die Verifizierung nicht positiv durchläuft, so wird eine Folge zusätzlicher Wiederholungsimpulse, wie zum Beispiel des Impulses 66, ausgeführt, bis die Zelle verifiziert ist oder bis eine maximale Anzahl von Wiederholungen ausgeführt worden ist. Gemäß einer Ausführungsform sind die Wiederholungsimpulse nach dem Impuls 65 allesamt 800 Mikrosekunden breit und haben eine Höhe von 6 V. Eine Folge von acht dieser 800 Mikrosekunden-Impulse wird angelegt. Wenn die Zelle nach diesen acht Impulsen von 800 Mikrosekunden die Verifizierung nicht besteht, so wird ein Fehler angezeigt.
  • Wie in 3 dargestellt, umfasst das Impulswiederholungsmuster eine erste Phase, die weniger als 1000 Mikrosekunden breit ist, und eine zweite Phase. Das Muster wird so ausgewählt, daß man erwarten kann, daß im wesentlichen alle Zellen in dem Array innerhalb der ersten Phase programmiert werden, so daß die durchschnittliche Programmiergeschwindigkeit der Zellen in dem Array bestimmt wird durch Bereitstellen der Breite der ersten Phase (in diesem Beispiel 1000 Mikrosekunden) geteilt durch die Anzahl von Zellen, die während des Programmierzyklus parallel programmiert werden. Die Zelle, die zufälligerweise während der ersten Phase nicht programmiert worden ist, erfordert für diese spezielle Zelle einen längeren Programmierzyklus. Die durchschnittliche Program miergeschwindigkeit für das gesamte Array wird jedoch durch die Spezifizierung bestimmt, welche durch die Länge der ersten Phase des Programmierzyklus bestimmt wird.
  • Zusätzlich sind die Programmierzyklen während der ersten Phase so ausgelegt, dass sie ein Überprogrammieren von "schnellen" Zellen verhindern, während sie das Programmieren "langsamer" Zellen während dieser ersten Phase sicherstellen. Demnach ist der erste Programmierimpuls 60 dafür ausgelegt, daß es sehr unwahrscheinlich ist, daß irgendeine bestimmte Zelle, welche diesen Impuls empfängt, überprogrammiert ist. Dies führt bei vielen Zellen in den Arrays dazu, daß sie die Verifizierung während des ersten Verifizierungsalgorithmus 61 nicht positiv durchlaufen. In ähnlicher Weise hat der Wiederholungsimpuls 62 eine geringfügig erhöhte Energie relativ zu dem ersten Impuls 60 und wird so ausgewählt, dass Zellen, die nach dem ersten Impuls die Verifizierung nicht positiv durchlaufen bzw. bestanden haben, durch den zweiten Impuls wahrscheinlich nicht überprogrammiert werden. Wie man in 3 erkennen kann, sind die Wiederholungsimpulse während der ersten Phase allesamt in ihrer Energie gesteigert und zwar entweder durch Erhöhen der Höhe der Impulse oder durch Erhöhen der Breite der Impulse. Eine Kombination, die sowohl das Erhöhen der Impulshöhe als auch der Impulsbreite verwendet, kann verwendet werden je nach dem, wie es den Bedürfnissen einer bestimmten Zell-Architektur entspricht. Die vorliegende Erfindung beruht auf der Erkenntnis, dass eine Erhöhung der Impulshöhe einen größeren Einfluß auf die Programmiergeschwindigkeit hat als eine Steigerung der Impulsbreite, die hinsichtlich des Integrals der Impulshöhe über die Impulsbreite äquivalent ist. Beispielsweise nimmt in einer Ausführungsform der Architektur, die in 8 unten dargestellt ist, die Programmiergeschwindigkeit für jeweils 2 V Steigerung in der Größe der Wortleitungsspannung um etwa eine Größenordnung zu und sie nimmt für jede Steigerung um 1,5 V in der Größe der Bit-Leitungsvorspannung um etwa eine Größenordnung zu. Eine Erhöhung hinsichtlich des Zeitablaufs allein erfordert jedoch einen um eine Größenordnung breiteren Impuls bei einer um 2 V niedrigeren Vt bei einer gegebenen Impulshöhe. Wie unten noch genauer beschrieben wird, liefert die Impulshöhen- und -breitensteuerung gemäß der vorliegenden Erfindung eine beträchtlich gesteigerte Leistungsfähigkeit gegenüber Systemen nach dem Stand der Technik.
  • 4 zeigt die Steuerlogik für die Impulshöhe und -breite, die für die Programmier- und Lösch-Spannungsquellen 25 der vorliegenden Erfindung verwendet wird. Diese Steuerlogik weist einen Taktgenerator 70 auf, der ein Taktsignal CLK für einen Takt-Teiler 71 bereitstellt. Der Ausgang des Takt-Teilers 71 besteht aus einem Satz von Steuersignalen OSCMUX, die auf einen Zeitgeber 72 geschaltet werden, welcher das Zeitablaufsignal für die Programmierimpulse auf Leitung 73 zuführt. Ein Zähler 74 für die Programmierwiederholung ist in der Logik enthalten, welcher die Anzahl der Wiederholungen oder die Impulsanzahl an die Kombinationslogik 75 liefert. Die Kombinationslogik 75 führt Steuersignale an den Takt-Teiler 71 zu, der die Pulsbreite jedes Impulses spezifiziert. Die Kombinationslogik 75 treibt auch eine Ladungspumpe und einen Teiler 76, welcher die positive Spannung für die Drain zuführt. Dieser Teiler führt ein Spannungssteuersignal VTEN an einen Refe renzgenerator 77 zu. Der Referenzgenerator 77 führt eine Referenzspannung BLISOB an einen Steuertransistor 78 zu, der mit den Bit-Leitungen in dem Array auf Leitung 79 verbunden ist. Die andere Seite des Transistors 70 wird mit dem Strom- bzw. Leistungssignal 80 der Datenleitung verbunden. Das Niveau des Impulses wird durch das Signal BLISOB am Gate des Transistors 78 festgelegt. Dieses Signal wird so eingestellt, dass es eine Schwellwertspannung oberhalb der gewünschten Impulshöhe ist. Die Leistung der Datenleitung auf Leitung 80 wird oberhalb der maximalen Impulshöhe eingestellt und wird durch die Ladungspumpe in dem System konstant gehalten.
  • Die bevorzugte Implementierung des Eingangs-/Ausgangsschaltkreises, der die Programmierspannung für das Array gemäß der vorliegenden Erfindung treibt, ist unten in 10 dargestellt. Der Transistor 78 nach 4 entspricht den Transistoren 502 und 508 in 10. Die Bit-Leitung 79 des Arrays nach 4 entspricht den metallischen Bit-Leitungen 143 und 152 nach 10. Die Stromversorgung der Datenleitung auf Leitung 80 nach 4 entspricht den Leitungen 574 und 576 in 10, welche ihren Strom aus dem Signal DLPWR auf Leitung 586 über Transistoren 528 bzw. 530 bzw. 538 bzw. 540 erhalten. Das Steuersignal TPGMEND auf Leitung 73 wird verwendet, um den Zeitablauf der Steuersignale BLISOB, DLCTL und DMWL nach 10 zu steuern. Der Programmierimpuls wird beendet, indem DLCTL auf 0 V getrieben wird, was das Signal DLPWR auf Leitung 586 von der Leitung 574 trennt und gleichzeitig DMWL hochtreibt, was die Datenleitung 574 auf 0 V zieht, um den Programmierimpuls zu beenden. Gleichzeitig wird das BLISOB-Signal, welches durch den Referenzgenerator 77 nach 4 zugeführt wird, in Vorbereitung der Programmierverifizierungssequenz auf VCC geschaltet.
  • Die 5 bis 7 sind Kurven, welche die Verbesserung in der Leistungsfähigkeit veranschaulichen, welche durch den Autoprogrammierungsalgorithmus der kontrollierten Impulshöhe und Impulsbreite gemäß der vorliegenden Erfindung gewährleistet wird. Zunächst stellt 1 einen Vergleich zwischen einem Algorithmus nach dem Stand der Technik, bei welchem nur die Impulsbreite variiert wird, mit der vorliegenden Erfindung dar, bei welcher sowohl die Impulshöhe als auch die Impulsbreite variiert wird. Das Muster der Impulsbreite und Impulshöhe ist so ausgewählt worden, dass die Energien zwischen den aufeinanderfolgenden Impulsen im wesentlichen äquivalent sind.
  • Entlang der horizontalen Achse ist die Programmierdauer in Mikrosekunden auf einer logarithmischen Skala wiedergegeben. Entlang der vertikalen Achse ist die resultierende Schwellwertspannung für die Zelle wiedergegeben. Die Grafiken bzw. Diagramme zeigen eine Simulation eines kontinuierlichen Programmierimpulses. Dieser gibt die Folge von Impulsen ohne Verifizierungsintervalle dazwischen wieder. Auch die Zielprogrammierung VT wird mit etwa 3 V ausgewählt. Ein Überprogrammierungszustand wird dann als gegeben angesehen, wenn VT etwa 0,5 V erreicht.
  • Die Leistungsfähigkeit ist für fünf Zell-Zustände wiedergegeben. Der erste Zell-Zustand, der auf der Bahn bzw. Kurve 200 wieder für eine variierende Impulshöhe und -breite wiedergegeben ist, und auf Bahn 200' nur für eine variierende Breite wiedergegeben ist, entspricht einer Zelle, die schnell programmiert wird und hat einen "schnellen Schaltkreis". Mit "schnellem Schaltkreis" ist gemeint, dass die Vorspannung auf der Bit-Leitung, die auf diese Zelle geschaltet wird, höher ist (in diesem Beispiel um etwa ein halbes V) als die normale Vorspannung auf dem Array. Dies führt zu einer sehr schnell programmierten Zelle, was bei den modernen Architekturen hoher Dichte gelegentlich auftreten kann. Der zweite Zustand auf der Bahn 201, bei welcher der Algorithmus der vorliegenden Erfindung verwendet wird, und auf der Bahn 201, bei welcher nur die Pulsbreite variiert wird, betrifft eine Zelle, die mit normaler Vorspannung schnell in den programmierten Zustand geht. Der dritte Zustand auf der Bahn 202 und der Bahn 202' zeigt eine typische Zelle in dem Array. Der vierte Zustand auf den Bahnen 203 und 203' veranschaulicht die Programmiereigenschaften einer langsamen Zelle in dem Array. Der letzte Zustand auf den Bahnen 205 und 205' zeigt die Programmiereigenschaften einer Zelle in dem Array, die nur langsam programmierbar ist und die mit einem "langsamen Schaltkreis" verbunden ist. Mit "langsamen Schaltkreis" ist gemeint, dass die Bit-Leitung eine niedrigere Spannung erhält (in diesem Beispiel um etwa ein halbes V) als die normale Bit-Leitung in dem Array.
  • Die geänderten Zustände bzw. Bedingungen der Pulshöhe und Pulsbreite für die Grafik in 5 sind in der nachstehenden Tabelle 1 wiedergegeben.
  • Tabelle 1
    Figure 00130001
  • Die Leitungen für den Algorithmus mit variierender Pulsbreite nehmen eine konstante Drain-Spannung von 6 V bei einer Gate-Spannung von –8 V an. Demnach kann man erkennen, dass die Impulshöhe bei dem Pulshöhen-/Pulsbreitenalgorithmus, wie er für diesen Vergleich verwendet wird, niedriger beginnt (5 V/–8 V) als die Pulshöhe (6 V/–8 V) des Algorithmus mit variierender Pulsbreite. Er endet außerdem auch mit einer größeren Impulshöhe (6,5 V bis 7,5 V/–8 V) für die letzten vier Impulse in der Sequenz.
  • Man kann erkennen, daß für eine schnelle Zelle mit einem schnellen Schaltkreis der Algorithmus 200' mit variierender Pulsbreite zu einer viel schnelleren Programmierung führt (größere anfängliche Pulshöhe) und eine größere Gefahr der Überprogrammierung hat, als der Algorithmus 200 mit variierender Pulsbreite und Pulshöhe gemäß der vorliegenden Erfindung.
  • Die Leistungsfähigkeit bzw. Eigenschaften der typischen Zelle 202/202' ist ähnlich, wobei der Algorithmus der vorliegenden Erfindung etwas langsamer programmiert. Für die langsame Zelle in dem Array (203, 203') kann man erkennen, dass der Algorithmus mit variierender Pulshöhe und Pulsbreite viel schneller zu einer programmierten Zelle führt als bei einer langsamen Zelle, für die nur die variierende Pulsbreite verwendet wird. Für die Zelle, die sowohl langsame Programmiereigenschaften als auch einen langsamen Schaltkreis hat (204, 204') ist der Ansatz nach dem Stand der Technik mit lediglich variierender Pulsbreite unannehmbar langsam und führt dazu, daß viele Matrizen bzw. Rohchips als nicht bearbeitbar verworfen werden.
  • 6 ist eine Grafik, welche die Leistungsfähigkeit bei nur variierender Pulshöhe gegenüber der variierenden Pulsbreite und Pulshöhe gemäß der vorliegenden Erfindung vergleicht. Wie zuvor ist die horizontale Achse die Programmierzeit auf einer logarithmischen Skala. Die vertikale Achse ist die sich ergebende Schwellwertspannung.
  • Der Algorithmus für variierende Pulshöhe und Pulsbreite, der für diesen Vergleich verwendet wird, ist ebenfalls in Tabelle 1 wiedergegeben. Für den Algorithmus mit variierender Pulshöhe ist jeder Puls 100 Mikrosekunden breit, die Drain-Spannung wird von 0,3 V-Schritten von 5 V bis 7,4 V variiert und die Gate-Spannung wird in 0,4 V-Schritten von –8 V bis –11,2 V variiert. Der Algorithmus mit variierender Pulshöhe/Pulsbreite für die schnelle Zelle mit schnellem Schaltkreis ist auf Kurve 210 wiedergegeben, Kurve 211 zeigt die Leistungsfähigkeit für die schnelle Zelle, Kurve 212 zeigt die Leistungsfähigkeit der typischen Zelle, Kurve 213 die Leistungsfähigkeit der langsamen Zelle. Kurve 214 zeigt die Leistungsfähigkeit der langsamen Zelle mit dem langsamen Schaltkreis. Die entsprechenden Kurven für den Algorithmus mit nur variierender Pulshöhe weisen die Kurve 210' für die schnelle Zelle und den schnellen Schaltkreis, die Kurve 211' für den schnellen Schaltkreis, die Kurve 212' für die typische Zelle, die Kurve 213' für die langsame Zelle und die Kurve 214' für die langsame Zelle mit dem langsamen Schaltkreis auf.
  • Man kann erkennen, daß der Algorithmus mit nur variierender Pulshöhe in der Lage ist, selbst bei der langsamen Zelle und dem langsamen Schaltkreis (214') relativ schnell zu programmieren. Der Spannungsbereich, der verwendet wird, um dieses Ergebnis zu erzielen, erfordert sehr hohe Spannung auf der Wortleitung und/oder Drain. Diese sehr hohen Spannungen erhöhen das Risiko der Störung von Zellen, die nicht programmiert werden sollen. In Richtung des Endes des Zyklus erfordert die Wortleitung in diesem Beispiel etwa –11 V. Selbst wenn die Drain einer nicht-ausgewählten Zelle geerdet ist, erzeugt dies ein beträchtliches Feld auf der nicht-ausgewählten Zelle. Dies kann man erkennen, wenn man versteht, daß der erste Impuls bei diesem Algorithmus mit variierender Pulshöhe ein Feld von –13 V erzeugt, welches sehr nahe an der Spannung der Wortleitung für die späteren Pulse in dem Strom liegt. Weiterhin erfordert der Algorithmus der Impulshöhe für die Implementierung eine kompliziertere Schaltung als der Algorithmus mit variierender Pulshöhe und Pulsbreite gemäß der vorliegenden Erfindung. Die Leistungsfähigkeit hinsichtlich der Geschwindigkeit des Programmierzyklus des Algorithmus mit variierender Pulshöhe und Pulsbreite ist immer noch sehr gut, selbst im Vergleich mit dem Algorithmus mit variierender Impulshöhe, der sehr hohe Spannungen verwendet, wie es in 6 dargestellt ist.
  • 7 zeigt die Leistungsfähigkeit eines weiteren Beispiels eines Algorithmus mit variierender Pulsbreite und Pulshöhe gemäß der vorliegenden Erfindung. Das Muster gemäß dieser Ausführungsform ist in Tabelle 2 wiedergegeben.
  • Tabelle 2
    Figure 00150001
  • Die horizontale Achse in 7 gibt die Programmierzeit auf einer logarithmischen Skala in Mikrosekunden wieder. Die vertikale Achse zeigt die sich ergebende Schwellwertspannung mit einem angestrebten Schwellwert bei 3 V und einer Spezifizierung der Überprogrammierung bei 0,5 V. Unter Verwendung des in Tabelle 2 wiedergegeben Musters erreicht die schnelle Zelle auf einem schnellen Schaltkreis, die auf Kurve 220 gezeigt ist, den Schwellwert der Überprogrammierung nicht nach dem ersten Impuls. Die auf Bahn 221 dargestellte Zelle liegt beträchtlich oberhalb des Schwellwerts der Überprogrammierung. Die typische Zelle, die auf Bahn 222 wiedergegeben ist, wird durch den ersten Impuls von 100 Mikrosekunden nicht programmiert (VT nicht unter 3 V) jedoch ist die typische Zelle nach dem zweiten 100 Mikrosekunden Impuls unter den Zielwert VT von 3 V programmiert, jedoch nicht überprogrammiert. Die auf Bahn 223 gezeigte langsame Zelle schneidet den VT-Schwellwert von 3 V sehr nahe an dem Zielwert bei 1000 Mikrosekunden. Die langsame Zelle mit dem langsamen Schaltkreis, die auf der Kurve 224 gezeigt ist, erreicht den Zielwert des VT-Schwellwerts erst bei etwa 5000 Mikrosekunden.
  • Der Algorithmus mit variierender Pulshöhe und Pulsbreite kann eingestellt werden, wie es den Bedürfnissen einer bestimmten Implementierung entspricht, um die Leistungsfähigkeit für eine langsame Zelle zu verbessern und die Wahrscheinlichkeit der Überprogrammierung zu vermindern, während die durchschnittliche Gesamtprogrammierzeit auf einem optimalen Wert gehalten wird, der schneller ist, leichter zu implementieren ist und weniger leicht eine Störung von benachbarten Zellen hervorruft, als bei Systemen nach dem Stand der Technik.
  • 8 veranschaulicht eine Architektur des Flash EEPROM Arrays gemäß einer Ausführungsform der vorliegenden Erfindung, bei welchem zwei Spalten von Flash EEPROM-Zellen eine einzelne metallische Bit-Leitung gemeinsam verwenden. 8 zeigt vier Paare von Spalten in dem Array, wobei jedes Paar von Spalten Flash EEPROM-Zellen in einer Drain-Source-Drain-Konfiguration zeigt.
  • Demnach enthält das erste Paar 120 von Spalten eine erste Drain-Diffusion-Zuleitungsleitung 121, eine Source-Diffusionsleitung 122 und eine zweite Drain-Diffusionsleitung 123. Wortleitungen WL0 bis WL63 liegen jeweils über den Floating Gates einer Zelle in einem ersten der Paare von Spalten und einer Zelle in dem zweiten des Paares von Spalten. Wie in der Figur dargestellt, enthält ein erstes Paar 120 von Spalten eine Spalte mit den Zellen 124, 125, 126 und 127. Nicht dargestellt sind Zellen, die mit Wortleitungen WL2 bis WL61 verbunden sind. Die zweite aus dem Paar 120 von Spalten enthält die Zellen 128, 129, 130 und 131. Entlang derselben Spalte des Arrays ist ein zweites Paar 135 von Spalten dargestellt. Es hat eine ähnliche Architektur, wie das Paar 120 von Spalten mit Ausnahme der Tatsache, daß es spiegelbildlich ausgebildet ist.
  • Wie man sieht, enthält demnach der Transistor in dem ersten Paar von Spalten, wie zum Beispiel der Zelle 125, eine Drain in der Drain-Diffusionsleitung 121 und eine Source in der Source-Diffusionsleitung 122. Ein Floating Gate liegt über dem Kanalbereich zwischen der ersten Drain-Diffusionsleitung 121 und der Source-Diffusionsleitung 122. Die Wortleitung WL1 liegt über dem Floating Gate der Zelle 125, um eine Flash EEPROM-Zelle bereitzustellen.
  • Das Spaltenpaar 120 und das Spaltenpaar 135 verwenden eine virtuelle Massendiffusion 136 des Arrays (ARVSS) gemeinsam. Demnach ist die Source-Diffusionsleitung 122 des Spaltenpaares 120 mit der Massendiffusion (Massendiffusionsleitung) 136 verbunden. In ähnlicher Weise ist die Source-Diffusionsleitung 137 des Spaltenpaars 135 mit der Massendiffusion (durch Diffusion hergestellte Masseleitung) 136 verbunden.
  • Wie oben erwähnt, verwendet jedes Paar 120 von Spalten von Zellen eine einzelne Metalleitung gemeinsam. Demnach sind ein rechter Block Auswahl-Transistoren 138 und ein linker Block Auswahl-Transistoren 139 enthalten. Der Transistor 139 weist eine Drain in der Drain-Diffusionsleitung 121, eine Source, die mit einem Metallkontakt 140 verbunden ist, und ein Gate, das mit dem Steuersignal BLTR1 auf Leitung 141 verbunden ist, auf. In ähnlicher Weise weist der rechte Auswahl-Transistor 138 eine Source in der Drain-Diffusionsleitung 123, eine mit dem Metallkontakt 140 verbundene Drain und ein Gate auf, welches mit dem Steuersignal BLTR0 auf Leitung 142 verbunden ist. Demnach stellt der Auswahl-Schaltkreis, der die Transistoren 138 und 139 enthält, eine selektive Verbindung der ersten Drain-Diffusionsleitung 121 und der zweiten Drain-Diffusionsleitung 123 mit der metallischen Leitung 143 (MTBL0) durch den metallischen Kontakt 140 bereit. Wie man erken nen kann, enthält das Spaltenpaar 135 einen linken Auswahl-Transistor 144 und einen rechten Auswahl-Transistor 145, die in ähnlicher Weise mit einem Metallkontakt 146 verbunden sind. Der Kontakt 146 ist mit derselben metallischen Leitung 143 verbunden, wie der Kontakt 140, der mit dem Spaltenpaar 120 verbunden ist. Die Metalleitung kann mit einer zusätzlichen Auswahlschaltung durch mehr als zwei Spalten von Zellen gemeinsam verwendet werden.
  • Die in 3 dargestellte Architektur beruht auf einer Drain-Source-Drain-Einheit, die zwei Spalten von Zellen bildet, welche gegenüber benachbarten Drain-Source-Drain-Einheiten isoliert sind, um einen Leckstrom zwischen benachbarten Spalten von Zellen zu verhindern. Die Architektur kann erweitert werden auf Einheiten mit mehr als zwei Spalten, mit geeigneten Toleranzen für den Leckstrom in der Abfrage-Schaltung oder mit anderen Steuerungen bezüglich des Leckstromes von nicht-ausgewählten Zellen. Demnach könnten beispielsweise vierte und fünfte Diffusionsleitungen innerhalb eines gegebenen isolierten Bereichs hinzugefügt werden, um eine Drain-Source-Drain-Source-Drain-Struktur zu erzeugen, die vier Spalten von Zellen vorsieht.
  • Spaltenpaare sind horizontal und vertikal ausgelegt, um ein Array aus Flash EEPROM-Zellen bereitzustellen, welches M-Wortleitungen und 2N-Spalten aufweist. Das Array erfordert nur N-metallische Bit-Leitungen, von denen jede mit einem Paar von Spalten von Flash EEPROM-Zellen durch eine Auswahl-Schaltung verbunden ist, wie oben beschrieben.
  • Auch wenn die Figur nur vier Spaltenpaare 120, 135, 150 und 151 zeigt, die mit zwei metallischen Bit-Leitungen 143 und 152 (MTBL0–MTBL1) verbunden sind, kann das Array in horizontaler und vertikaler Richtung je nach Erfordernis wiederholt bzw. erweitert werden, um ein Flash EEPROM-Speicher-Array in großem Maßstab bereitzustellen. Demnach sind die Spaltenpaare 120 und 150, die eine Wortleitung gemeinsam verwenden, in horizontaler Richtung wiederholt, um ein Segment des Arrays bereitzustellen. Segmente werden in vertikaler Richtung wiederholt. Eine Gruppe von Segmenten (beispielsweise acht Segmente), die entsprechende Wortleitungen haben, welche mit einem gemeinsam verwendeten Wortleitungstreiber verbunden sind, können als ein Sektor des Arrays betrachtet werden.
  • Das Layout des Arrays ist kompakt wegen der Konfiguration mit virtueller Masse, des reduzierten Erfordernisses für den Metallabstand des Layouts und weiterhin durch die Fähigkeit, die Wortleitungstreiber für eine Mehrzahl von Reihen in verschiedenen Segmenten gemeinsam zu verwenden. Demnach kann die Wortleitung WL63' einen Wortleitungstreiber gemeinsam mit der Wortleitung WL63 verwenden. In einem bevorzugten System verwenden acht Wortleitungen gemeinsam einen einzelnen Wortleitungstreiber. Demnach wird nur der Wiederholabstand eines einzigen Wortleitungstreiberschaltkreises zum nächsten für jeweils einen Satz von acht Reihen von Zellen benötigt. Die zusätzliche Decodierung, die durch die linken und rechten Auswahl-Transistoren bereitgestellt wird (139, 138 für das Segment 120) ermöglicht die Konfiguration einer gemeinsam verwendeten Wortlei tung. Die Konfiguration der gemeinsam verwendeten Wortleitung hat den Nachteil, daß während eines Sektor-Löschvorgangs acht Reihen von Zellen allesamt dieselbe Wortleitungsspannung empfangen, was eine Wortleitungsstörung in Zellen hervorruft, die nicht gelöscht werden sollen. Wenn dies für ein gegebenes Array ein Problem darstellt, kann dieses Störungsproblem beseitigt werden, indem man sicherstellt, daß alle Sektor-Löschvorgänge für Segmente decodieren, die alle Reihen von Zellen einschließen, die mit den gemeinsam verwendeten Wortleitungstreibern verbunden sind. Für acht Wortleitungen, die einen einzelnen Treiber gemeinsam verwenden, kann ein minimales Sektor-Löschen von acht Segmenten erwünscht sein.
  • 9 ist ein schematisches Blockdiagramm eines Flash EEPROM Arrays, welches gewisse Merkmale der vorliegenden Erfindung veranschaulichen soll. Demnach enthält das Flash EEPROM-Speichermodul, das in 9 dargestellt ist, ein Haupt-Flash EEPROM Array mit Sektoren 170-1, 170-2, 170-3, 170-N, wobei jeder Sektor acht Segmente (beispielsweise SEG0–SEG7) enthält. Eine Mehrzahl von Sätzen gemeinsam verwendeter Wortleitungstreiber 171-1, 171-2, 171-3, 171-N wird verwendet, um die gemeinsam verwendeten Wortleitungen von acht Segmenten in den entsprechenden Sektoren anzusteuern. Wie es bezüglich der gemeinsam verwendeten Wortleitungstreiber 171-1 dargestellt ist, gibt es 64 gemeinsame Treiber für den Sektor 170-1. Jeder der 64 Treiber liefert eine Ausgangsgröße auf Leitung 172. Jede dieser Ausgangsgrößen wird verwendet, um acht Wortleitungen in entsprechenden Segmenten des Sektors 170-1 anzusteuern, wie es in der Figur schematisch durch die Aufteilung in acht Sätze von 64 Linien veranschaulicht wird.
  • Weiterhin ist mit dem Array eine Mehrzahl von Block-Auswahl-Treibern 173-1, 173-2, 173-3, 173-N verbunden. Die Block-Auswahl-Treiber treiben jeweils ein linkes und ein rechtes Auswahl-Signal für jedes Segment. Wo die Segmente, wie in 8 dargestellt, implementiert sind, wird ein BLTR1 und ein BLTR0-Block-Auswahl-Signalpaar für jeden Satz von 64 Wortleitungen zugeführt.
  • Zusätzlich gibt es N-globale Bit-Leitungen in dem Flash EEPROM Array. Die N-Bit-Leitungen werden verwendet, um einen Zugriff auf die 2N-Spalten von Flash EEPROM-Zellen in dem Array für den Dateneingangsschaltkreis und die Abfrage-Verstärker 191 zu ermöglichen. Der Spalten-Auswahl-Decoder 175 ist mit Bit-Zwischenspeichern 190 für die Seitenprogrammierung verbunden, welche zumindest einen Bit-Zwischenspeicher für jede der N-Bit-Leitungen umfassen. Auch der Spalten-Auswahl-Decoder 175 ist mit dem Dateneingangsschaltkreis und den Abfrage-Verstärkern 191 verbunden. Die Datenbusleitung 192 ist 16 Bit breit und stellt Eingangsdaten für den Dateneingangsschaltkreis und Abfrage-Verstärker 191 bereit. Die Datenbusleitung 192 stellt außerdem 16 Bits an Ausgangsdaten bereit. Gemeinsam stellen diese Schaltkreise die Dateneingabe- und -ausgabeschaltung für die Verwendung mit dem Flash EEPROM Array bereit.
  • Die N Bit-Leitungen 174 sind mit einem Spaltenauswahl-Decoder 175 verbunden. In einem bevorzugten System ist für insgesamt 1024 Bit-Leitungen N = 1024. Die Blockauswahl-Treiber 173-1 bis 173-N sind mit einem Block-Decoder 176 verbunden. Die gemeinsam verwendeten Wortleitungstreiber 171-1 bis 171-N sind mit einem Reihen-Decoder 177 verbunden. Der Spaltenauswahl-Decoder 175, der Block-Decoder 176 und der Reihen-Decoder 177 empfangen Adreßsignale auf der Adreßeingangsleitung 178.
  • Mit dem Spaltenauswahl-Decoder 175 ist der Block 190 der Bit-Zwischenspeicher/Verifizierung für die Seitenprogrammierung verbunden. Der Block 190 für die Bit-Zwischenspeicher/Verifizierung der Seitenprogrammierung enthält N Zwischenspeicher, jeweils einen für die N Bit-Leitungen. Demnach kann eine Seite von Daten als N Bit-breit angesehen werden, wobei jede Reihe von Zellen zwei Seiten, nämlich Seite 0 und Seite 1, breit ist. Seiten in einer gegebenen Reihe werden ausgewählt unter Verwendung der linken und rechten Decodierung, die oben beschrieben wurde. Der Block 190 der Bit-Zwischenspeicher/Verifizierung für die Seitenprogrammierung enthält eine Verifizierschaltung für Daten, die in den N Bit-Schaltern bzw. -Zwischenspeichern und der N Bits-breiten Seite von Daten gespeichert sind, die in eine ausgewählte Reihe von Zellen in dem Array programmiert sind. Ein Beispiel dieser Schaltung wird nachstehend beschrieben. Ausführbare Spannungsquellen 179 werden verwendet, um die Bezugspotentiale für den Lese-, Programmier- und Löschbetrieb für das Flash EEPROM Array zuzuführen, wie es in seiner Konzeption in der Figur dargestellt und oben beschrieben wurde, und zwar durch die Wortleitungstreiber 171-1 bis 171-N und durch die Bit-Leitungen.
  • Die virtuellen Masseleitungen in dem Array sind mit dem virtuellen Massetreiber 181 verbunden und stellen Potentiale für die verschiedenen Betriebsarten an den virtuellen Masseanschlüssen in dem Array bereit. Außerdem sind p-well und n-well Referenz-Spannungsquellen 199 mit den entsprechenden wells des Arrays verbunden.
  • Demnach werden, wie man in 9 sehen kann, die 64 Wortleitungstreiber, wie zum Beispiel der Wortleitungstreiber 171-1 mit 512 (64 × 8) Reihen in dem Array verwendet. Die zusätzliche Decodierung, der rechte Block-Auswahl-Treiber (beispielsweise 173-1) bereitgestellt wird, ermöglicht das Layout mit gemeinsam verwendeter Wortleitung.
  • Die Zellen in der bevorzugten Ausführungsform sind für einen Sektor-Lösch-Vorgang ausgestaltet, der ein Laden des Floating Gates bewirkt (Elektronen treten in das Floating Gate ein), so dass beim Abfragen einer gelöschten Zelle die Zelle nicht leitend ist und die Ausgangsgröße des Abfrage-Verstärkers "high" ist. Außerdem ist die Architektur für eine Seitenprogrammierung ausgestaltet, was das Entladen eines Floating Gates umfasst (Elektronen verlassen das Floating Gate), so dass beim Abfragen eine programmierte Zelle leitend ist.
  • Die Betriebsspannungen für den Programmierbetrieb liegen bei positiven 5,5 V bis 6,5 V an der Drain einer Zelle, die auf einen niedrigen (Daten = 0) Schwellwertzustand programmiert werden soll, nega tiven 8 V an dem Gate und 0 V oder Floating (schwebend) an dem Source-Anschluß. Das Substrat oder der p-well der Zelle werden geerdet. Dies führt zu einem Fowler-Nordheim-Tunnel-Mechanismus zum Entladen des Floating Gate.
  • Der Löschvorgang wird ausgeführt durch Anlegen von negativen 8 V an der Source und positiven 12 V an dem Gate, während die Drain schwebend (potentialfrei) ist. Der p-well wird mit negativen 8 V vorgespannt. Dies führt zu einem Fowler-Nordheim-Tunnel-Mechanismus, um das Floating Gate zu laden. Die Lesepotentiale betragen 1,2 V an der Drain, 5 V an dem Gate und 0 V an der Source.
  • Dieses verleiht die Fähigkeit, unter Verwendung der Wortleitungsdecodierung für das Auswählen von Zellen, die gelöscht werden sollen, einen Sektor-Löschvorgang auszuführen. Der Lösch-Störungszustand für nicht-ausgewählte Zellen innerhalb eines Segmentes führt zu –8 V an der Drain, 0 V an dem Gate und –8 V an der Source. Dies liegt deutlich innerhalb der Toleranzen der Zellen, um diesen Potentialen zu widerstehen, ohne dass eine nennenswerte Störung der Ladung in der Zelle verursacht wird.
  • In ähnlicher Weise sind die Programmierstörbedingungen für Zellen, welche dieselbe Bit-Leitung in demselben Segment gemeinsam verwenden, maximal 6,5 V an der Drain, 0 V an dem Gate (oder optional 1 V) und 0 V oder schwebend an der Source. Es gibt in diesem Zustand kein Treiben von Gate zu Drain und es stört die Zellen nicht nennenswert.
  • Für Zellen, welche dieselbe Wortleitung gemeinsam verwenden, jedoch nicht dieselbe Bit-Leitung oder für eine adressierte Zelle, die in einem hohen Zustand bleiben soll, sind die Störungsbedingungen 0 V an der Drain, –8 V an dem Gate und 0 V oder schwebend an der Source. Auch dieser Zustand führt nicht zu einer nennenswerten Verschlechterung der Ladung in den nicht ausgewählten Zellen.
  • Gemäß 9 enthält der Block 190 für den Bit-Zwischenspeicher/Verifizierung der Seitenprogrammierung eine Programmierverifizierungsschaltung, die das Bit-weise Zurücksetzen der Daten in dem Seitenpuffer, welche die Verifizierung erfolgreich durchlaufen haben, beinhaltet.
  • 10 ist ein schematisches Diagramm eines Abschnittes der Schaltung für die Seitenprogrammierung und automatische Verifizierung für zwei Bit-Leitungen MTBL0 143 und MTBL1 152. Die Metalleitung 143 (MTBL0) aus 10 entspricht der Metalleitung 143 (MTBL0) aus 8. Die Metalleitung 152 (MTBL1) entspricht der Metalleitung 152 (MTBL1) aus 8. Die virtuelle Masse 136 des Arrays (ARVSS) nach 10 entspricht der virtuellen Masse 136 des Arrays (ARVSS) nach 8. Das Signal PWI auf Leitung 501 wird auf den p-well der Transistoren 502, 504, 506 und 508 geschaltet. Mit jedem Paar von Bit-Leitungen in dem Array ist eine ähnliche Struktur verbunden.
  • Gemäß 10 sind die Drain des Transistors 502 und die Drain des Transistors 504 mit der Metalleitung 143 (MTBL0) verbunden. Die Drain des Transistors 506 und die Drain des Transistors 508 sind mit der Metalleitung 152 (MTBL1) verbunden. Die Source des Transistors 504 und die Source des Transistors 506 sind mit der virtuellen Masse 136 des Arrays (ARVSS) verbunden. Das Signal DMWLX auf Leitung 570 ist mit dem Gate des Transistors 504 und dem Gate des Transistors 506 verbunden. Wenn das Signal DMWLX auf Leitung 570 aktiv ist, ist die virtuelle Masseleitung 136 des Arrays (ARVSS) mit der Metalleitung 143 (MTBL0) und der Metalleitung 152 (MTBL1) über den Transistor 504 bzw. 506 verbunden.
  • Die Daten I/O-Leitung 574 (Eingangs-/Ausgangsleitung) ist mit der Source des Transistors 502 verbunden. Die Daten I/O-Leitung 576 ist mit der Source des Transistors 508 verbunden. Das Signal BLISOB auf Leitung 572 ist auf das Gate des Transistors 502 und das Gate des Transistors 508 geschaltet. Wenn das Signal BLISOB "high" ist, ist die metallische Leitung 143 über den Transistor 502 mit der Daten I/O-Leitung 574 verbunden und die Metalleitung 152 ist über den Transistor 508 mit der Daten I/O-Leitung 576 verbunden.
  • Die Daten I/O-Leitung 574 ist mit der Drain des Transistors 542 verbunden. Die Source des Transistors 542 ist mit Masse verbunden und das Gate des Transistors 542 ist mit den Signal DMWL auf Leitung 588 verbunden. Die Daten I/O-Leitung 574 wird herabgezogen, wenn das Signal DMWL "high" ist.
  • Die Daten I/O-Leitung 574 ist weiterhin mit der Drain des Spaltenauswahl-Transistors 544 verbunden. Die Source des Transistors 544 ist mit dem Knoten 551 verbunden. Das Gate des Transistors 544 ist mit dem Signal Y0 auf Leitung 590 verbunden.
  • Ein Dateneingangspuffer 550 ist mit der Source des Durchlaßgatters 552 verbunden. Die Drain des Durchlaßgatters 552 ist mit dem Knoten 551 verbunden. Das Durchlaßgatter 552 wird durch das Signal DINL auf Leitung 592 gesteuert.
  • Der Abfrage-Verstärker 554 ist ebenfalls mit dem Knoten 551 verbunden. Der Abfrage-Verstärker 554 wird durch das Signal SAEB auf Leitung 594 gesteuert. Der Ausgang des Abfrage-Verstärkers 554 wird mit der Drain des Durchlaßgatters 556 verbunden. Die Source des Durchlaßgatters 556 ist mit dem Verriegelungs- bzw. Zwischenspeicherschaltkreis 557 verbunden. Das Durchlaßgatter 556 wird durch das SARD-Signal auf Leitung 596 gesteuert.
  • Der Verriegelungs- bzw. Zwischenspeicherschaltkreis enthält Inverter 558 und 560. Die Eingangsgröße des Inverters 558 ist mit der Source des Durchlaßgatters 556 verbunden. Der Ausgangs des Inverters 558 ist mit dem Eingang des Inverters 560 verbunden. Und der Ausgang des Inverters 560 ist mit der Source des Durchlaßgatters 556 verbunden. Der Ausgang des Verriegelungsschaltkreises 557 ist außerdem mit einem ersten Eingang mit dem NOR Gatter 562 verbunden. Ein zweiter Eingang zu dem NOR Gatter 562 ist mit dem Signal RESLATB auf Leitung 598 verbunden. Der Ausgang des NOR Gatters 562 ist mit dem Gate des Transistors 564 verbunden. Die Drain des Transistors 564 ist mit dem Knoten 551 verbunden und die Source ist mit Masse verbunden.
  • Die Daten I/O-Leitung 576, die durch den Transistor 508 mit der Bit-Leitung 152 verbunden ist, ist in ähnlicher Weise geschaltet. Demnach ist die Leitung 576 mit der Drain des Transistors 548 verbunden. Die Source des Transistors 548 ist mit Masse verbunden und das Gate ist mit dem Signal DMWL auf Leitung 588 verbunden. Die Drain des Transistors 546 ist außerdem mit der Daten I/O-Leitung 576 verbunden. Das Signal Y0 ist auf das Gate des Transistors 546 geschaltet, die Source des Transistors 546 ist mit dem Knoten DATA1 591 verbunden, der dem Knoten 551 auf der anderen Seite entspricht. Der Einfachheit halber sind ein entsprechender Satz aus DIN Puffer 550, Abfrage-Verstärker 554, Zwischenspeicherschaltkreis 557 und zugehörige Schaltkreise, die mit dem Knoten DATA1 591 verbunden sind, nicht dargestellt. Im Betrieb sind Schaltkreise ähnlich dem Puffer 550, dem Durchlaßgatter 552, dem Abfrage-Verstärker 554, dem Durchlaßgatter 556, dem Zwischenspeicherschaltkreis 527, dem NOR Gatter 562 und dem Transistor 564 ausgestaltet und mit dem Knoten DATA1 591 verbunden.
  • Jede Daten I/O-Leitung 574, 576 hat einen Zwischenspeicher/Verifizierlogik-Schaltkreis, der damit verbunden ist, und der im wesentlichen aus dem NAND Gatter 524 und dem Inverter 526 für die Daten I/O-Leitung 574 und aus dem NAND Gatter 534 und dem Inverter 536 für die Daten-I/O-Leitung 576 besteht. Für die Daten I/O-Leitung 574 ist die Drain des Durchlaßgatters 522 mit der Daten I/O-Leitung 574 verbunden und die Source des Durchlaßgatters 522 ist mit einem ersten Eingang dessen NAND Gatters 524 verbunden. Ein zweiter Eingang des NAND Gatters 524 ist mit dem Signal BLATEN auf Leitung 582 verbunden. Der Ausgang das NAND Gatters 524 ist mit dem Eingang des Inverters 526 verbunden. Die Eingangsstromversorgung für das NAND Gatter 524 und dem Inverter 526 ist mit dem Signal LATCHPWR auf Leitung 580 verbunden. Das Signal LATCHB auf Leitung 578 ist mit dem Gate des Durchlaßgatters 522 verbunden. Der Ausgang des Invertierers 526 ist mit dem ersten Eingang des NAND Gatters 524, dem Gate des Transistors 510 und dem Gate des Transistors 530 verbunden. Die Drain des Transistors 510 ist mit dem Signal ABLRES1 auf Leitung 577 verbunden. Die Source des Transistors 510 ist mit Masse verbunden. Die Drain des Transistors 530 ist mit dem Signal DLPWR auf Leitung 586 verbunden. Die Source des Transistors 530 ist mit der Drain des Transistors 528 verbunden. Das Gate des Transistors 528 ist mit dem Signal DLCTL auf Leitung 584 verbunden und die Source des Transistors 528 ist mit der Daten I/O-Leitung 574 verbunden.
  • Der Zustand Daten = 1, der in dem Zwischenspeicherschaltkreis 524 und 526 zwischengespeichert ist, zieht das Signal ABLRES auf Leitung 577 herunter. Das logisch hohe Niveau schaltet den Transistor 510 ein, was ein logisch niedriges Niveau auf Leitung 577 verursacht. Wenn der Transistor 510 eingeschaltet ist, ist die Leitung 577 mit Masse verbunden, was bewirkt, da? das Signal ABLRES auf ein logisch niedriges Niveau geht. Die Transistoren 514 und 516 weisen einen Inverter auf, der gemeinsam mit den Transistoren 510 und 512 eine logische NOR Funktion bereitstellt. Der Transistor 514 ist ein P-Kanal Transistor, dessen Source mit VCC und dessen Drain mit der Drain des N-Kanal Transistors 516 verbunden sind. Die Leitung 577 ist mit den Drains der Transistoren 514 und 516 verbunden. Die Source des n-Kanal Transistors 516 ist mit Masse verbunden und die Gates der Transistoren 514 und 516 sind mit dem Signal PGPVB auf Leitung 599 verbunden. Die Inverter 518 und 520 sind in Reihe geschaltet. Leitung 577 stellt den Eingang für den Inverter 518 bereit. Der Ausgang des Inverters 518 stellt die Eingangsgröße des Inverters 520 dar, und der Ausgang bzw. die Ausgangsgröße des Inverters 520 liefert das Signal ABLRES auf Leitung 579.
  • Demnach ist, wann immer die Verriegelungs- bzw. Zwischenspeicherschaltung 524 und 526 ein logisch hohes Niveau speichert, das Signal ABLRES auf einem logisch niedrigen Niveau. Der Transistor 514 gewährleistet ein Heraufziehen der Leitung 572, die durch Einschalten entweder des Transistors 510 oder des Transistors 512 auf ein logisch niedriges Niveau getrieben werden kann.
  • Der Zweck des Transistors 516 ist derjenige, da? während des Standardzustands PGPVB auf Leitung 599 "high" ist und alle Gates der Transistoren 510, 512, ... niedrig sind bzw. "low" sind, so da?, falls kein Transistor 516 vorhanden ist ABLRES1 auf Leitung 577 Floating bzw. schwebend ist. Der Transistor 516 ist der Hilfsleitung 577 hinzugefügt, um in diesem Fall auf "low" herabzuziehen. Während des aktiven Betriebs, welcher eine Programmierverifizierungsperiode während des Seitenprogrammierbetriebs ist, ist PGPVB auf Leitung 599 aktiv "low", Transistor 516 ist abgeschaltet und Transistor 514 gewährleistet ein Heraufziehen für Leitung 572.
  • Eine spiegelbildliche Anordnung von Schaltkreisen, die ebenfalls durch Signale LATCHB, LATCHPWR, BLATEN und DLCTL gesteuert sind, sind mit der Daten I/O-Leitung 576 verbunden. Die Drain des Durchlaßgatters 532 ist mit der Daten I/O-Leitung 576 verbunden. Das Gate des Durchlaßgatters 532 ist mit dem Signal LATCHB auf Leitung 578 verbunden. Die Source des Durchlaßgatters 532 ist mit einem ersten Eingang des NAND Gatters 534 verbunden. Ein zweiter Eingang des NAND Gatters 534 ist mit dem Signal BLATEN auf Leitung 582 verbunden. Der Ausgang des NAND Gatters 534 ist mit dem Eingang des Inverters 536 verbunden. Das Signal LATCHPWR auf Leitung 580 liefert eine Stromeingangsversorgung für das NAND Gatter 534 und den Inverter 536. Der Ausgang des Inverters 536 ist mit dem ersten Eingang des NAND Gatters 534, dem Gate des Transistors 512 und dem Gate des Transistors 538 verbunden. Das Signal DLPWR auf Leitung 586 ist mit der Drain des Transistors 538 verbunden. Die Source des Transistors 538 ist mit der Drain des Transistors 540 verbunden. Das Gate des Transistors 540 ist mit dem Signal DLCTL auf Leitung 584 verbunden und die Source des Transistors 540 ist mit der Daten I/O-Leitung 576 verbunden. Die Source des Transistors 512 ist mit Masse verbunden und die Drain des Transistors 512 ist mit Leitung 577 verbunden.
  • Der Ausgang der Zwischenspeicherschaltung 524 und 526 ist mit dem Gate des Transistors 530 und der Source des Transistors 522 verbunden. Das Signal DLPWR auf Leitung 586 ist mit der Source des Transistors 530 verbunden. Die Drain des Transistors 530 ist mit der Source des Transistors 528 verbunden. Das Gate des Transistors 528 ist mit dem Signal DLCTL auf Leitung 584 verbunden. Die Drain des Transistors 528 ist mit der Daten-I/O-Leitung 574 verbunden. Der Transistor 530 und der Transistor 528 haben eine Breite von 6 Mikrometern und eine Länge von 1,2 Mikrometern.
  • Die Drain des Transistors 510 liefert ein Ausgangssignal ABLRES1 auf Leitung 577. Die Source des Transistors 510 ist mit Masse verbunden und das Gate des Transistors 510 ist mit Leitung 577 verbunden. Demnach gehört, in Abhängigkeit von dem Zustand des Bit-Zwischenspeichers, das Signal ABLRES1 entweder auf Masse kurzgezogen oder durch den Transistor 514 heraufgezogen. Die Breite des Transistors 510 beträgt 10 Mikrometer und die Länge beträgt 0,8 Mikrometer.
  • Die Drain des Transistors 544 ist mit der Daten-I/O-Leitung 574 verbunden und die Source ist mit der Datenleitung 650 verbunden. Das Signal Y0 auf Leitung 590 ist mit dem Gate des Transistors 544 auf Leitung 590 verbunden. Der Primärpuffer 550 ist mit der Datenleitung 650 verbunden. Der Abfrage-Verstärker 554 ist mit der Datenleitung 650 am Knoten 551 verbunden und stellt ein Steuersignal für das Gate des Transistors 564 bereit. Die Drain des Transistors 564 ist mit der Datenleitung 650 verbunden und die Source des Transistors 564 ist mit Masse verbunden. Demnach verbindet der Transistor 564 in Abhängigkeit von der Ausgangsgröße des Abfrage-Verstärkers 554, die Datenleitung 650 mit Masse.
  • Im Betrieb führt der Schaltkreis für Seitenprogrammierung und automatische Verifizierung des Flash EEPROM Arrays, wie es in 10 dargestellt ist, die Seitenprogrammierung und die Programmierverifizierung in einer Reihe von Stufen aus. Die Stufen können verallgemeinert werden als (1) Datenladestufe, (2) Datenprogrammierstufe, (3) Lesen der Array-Datenstufe, (4) Zurücksetzen der Bit-Zwischenspeicherstufe und (5) Stufe einer Wiederholung. Der Betrieb der Seitenprogrammierung und automatischen Verifizierung des Flash EEPROM Arrays wird unter Bezug auf die Daten I/O-Leitung 574 beschrieben. Seitenprogrammierung und automatische Verifizierung werden in ähnlicher Weise unter Verwendung der Daten-I/O-Leitung 576 ausgeführt, die mit einer weiteren Speicherzelle verbunden ist. Darüber hinaus enthält der Seitenprogrammier- und automatische Verifizierungs-Schaltkreis eine ähnliche Schaltung für alle Daten-I/O-Leitungen, die erforderlich sind, um eine Seite von Speicherzellen in dem Flash EEPROM Array zu programmieren.
  • In dem Datenladezustand werden das Signal LATCHPWR auf Leitung 580, das Signal LATCHB auf Leitung 578 und das Signal BLATEN auf Leitung 582 mit 5 V zugeführt, um die Datenzwischenspeicherschaltung 524 und 526 für den Betrieb zur aktivieren. Das Signal LATCHPWR auf Leitung 580 führt dem NAND Gatter 524 und dem Inverter 526 für ihren Betrieb eine Spannung zu. Das Signal BLATEN auf Leitung 582 gibt die Zwischenspeicherschaltung 524 und 526 frei, um Eingaben aufzunehmen. Das Signal LATCHB auf Leitung 578 gibt das Durchlaßgatter 522 frei, um die Daten-I/O-Leitung 574 mit dem ersten Eingang des NAND Gatters 524 zu verbinden. Das Signal BLISOB auf Leitung 572 ist ein logisch niedriges Niveau, welches den Transistor 502 abschaltet. Das Abschalten des Transistors 502 isoliert die Daten-I/O-Leitung 574 von der Metalleitung 143 (MTBL0). Das Signal DLCTL auf Leitung 584 ist auf einem logisch niedrigen Niveau, welches das Durchlaßgatter 528 abschaltet. Das Signal DLPWR befindet sich auf einem logisch hohen Niveau mit einer Spannung von VCC, die näherungsweise 5 V beträgt. Das Signal DMWL auf Leitung 588 befindet sich auf einem logisch niedrigen Niveau, welches verhindert, dass der Transistor 542 die Daten-I/O-Leitung 574 mit Masse verbindet. Das Signal Y0 auf Leitung 590 ist auf einem logisch hohen Niveau, was es dem Transistor 544 ermöglicht, zu leiten. Das Signal Y0 ist ein decodiertes Signal, welches es der Daten-I/O-Leitung 574 erlaubt, einen entsprechenden von 16 DIN Puffern (beispielsweise Puffer 550) während der Datenladestufe zuzugreifen. Das Signal DINL auf Leitung 592 ist auf einem logisch hohen Niveau, was das Durchlaßgatter 552 einschaltet. Die Eingangsdaten von den DIN Puffern 550 werden über das Durchlaßgatter 552 an die Daten-I/O-Leitung 574 übertragen.
  • Sobald die Eingangsdaten zu der Daten-I/O-Leitung 574 übertragen worden sind, werden die Daten von dem DIN Puffer 550 an den ersten Eingang des NAND Gatters 524 übertragen. Wenn Daten von dem DIN Puffer 550 auf einem logisch hohen Niveau liegen, bewirkt das logisch hohe Niveau, welches am ersten Eingang des NAND Gatters 524 empfangen wird, einen logisch niedrigen Ausgang. Der logisch niedrige Ausgang des NAND Gatters versorgt den Eingang des Inverters 526, der einen logisch hohen Ausgangswert erzeugt. Das NAND Gatter 524 und der Inverter 526 bilden die Bit-Zwischenspeicherschaltung 524 und 526, welche die an dem ersten Eingang des NAND Gatters 524 empfangenen Daten zwischenspeichert. Das logisch hohe Niveau am Ausgang des Inverters 526 schaltet das Durchlaßgatter 530 frei und überträgt ein Signal DLPWR auf Leitung 586 an das Durchlaßgatter 528. Während der Datenladestufe jedoch ist das Signal DLCTL auf Leitung 584 logisch niedrig, was das Durchlaßgatter 528 abschaltet bzw. blockiert gegenüber einer Leitung des Signals der DLPWR an die Daten-I/O-Leitung 574.
  • Im anderen Fall, wenn die Daten vom DIN Puffer 550 auf einem logisch niedrigen Niveau sind, bewirkt das logisch niedrige Niveau, welches am ersten Eingang des NAND Gatters 524 empfangen wird, einen logisch hohen Ausgangswert. Der logisch hohe Ausgangswert des NAND Gatters 524 versorgt den Eingang des Inverters 526, der einen logisch niedrigen Ausgangswert liefert, der in der Zwischenspeicherschaltung 524 und 526 gespeichert wird. Der logisch niedrige Wert am Ausgang des Inverters 526 schaltet das Durchlaßgatter 530 ab und die Übertragung des Signals DLPWR auf Leitung 586 über das Durchlaßgatter 528 an die Daten-I/O-Leitung 574. Demnach speichert der Bit-Zwischenspeicherschaltkreis des NAND Gatters 524 und des Inverters 526 entweder das logisch hohe Niveau oder das logisch niedrige Niveau der Eingangsdaten, welches den Daten entspricht, die vom DIN Puffer 550 übertragen werden.
  • Die Bit-Zwischenspeicher für die gesamte Seite von 1024 Bits werden jeweils zu 16 Bits geladen. Wenn die Eingangsdaten von den DIN Puffern 550 in die Bit-Zwischenspeicherschaltung 524 und 526 geladen werden nach der Ausführung der Datenladestufe für alle Bit-Leitungen, so wird eine Verifizierungssequenz ausgeführt, worauf die Schreibstufe der Daten folgt. Die Verifizierungsschleife vor dem Schreiben (gemäß der nachstehend beschriebenen Sequenz) verhindert ein Überprogrammieren von Zellen zu einer Verarmung, so als wenn kein Vorlöschen ausgeführt wurde und ein Benutzer die Seite mit denselben Daten zweimal programmiert. Ein Datenschreiben erfolgt, wenn ein logisches "high" in der Zwischenspeicherschaltung 524 und 526 gespeichert ist. Wenn ein Zustand Daten = 1 mit logisch hohem Niveau von dem DIN Puffer 550 empfangen wird, so wird das logisch hohe Niveau während der Datenschreibstufe in eine Zelle des Flash EEPROM Arrays programmiert. Wenn ein logisch niedriges Niveau (Daten = 0) von dem DIN Puffer 550 empfangen wird und in der Zwischenspeicherschaltung 524 und 526 gespeichert wird, programmiert die Schreibstufe die Speicherzelle des Flash EEPROM nicht.
  • In dem vorliegenden Beispiel wird ein logisch hohes Niveau (Daten = 1) von dem DIN Puffer 550 übertragen und in der Bit-Zwischenspeicherschaltung 524 und 526 gespeichert. Während der Ausführung der Datenschreibestufe wird das Signal LATCHB auf Leitung 578 abgeschaltet. Das Signal LATCHB auf Leitung 578 wird auf ein logisch niedriges Niveau eingestellt, um die Eingänge in die Zwischenspeicherschaltung 524 und 526 abzuschalten. Das Signal LATCHPWR wird auf eine hohe Spannung eingestellt, um Strom für die Zwischenspeicherschaltung 524 und 526 bereitzustellen. Das Signal BLATEN auf Leitung 582 wird auf ein hohes Spannungsniveau gesetzt, um den Ausgang der Zwischenspeicherschaltung 524 und 526 freizugeben. Das Signal BLISOB auf Leitung 572 wird auf ein logisch hohes Spannungsniveau gesetzt, um den Transistor 502 einzuschalten und wird auf den geeigneten Wert für die Steuerung der Impulswerte zum Programmieren eingestellt. Der Transistor 502 verbindet die Daten-I/O-Leitung 574 mit der Metalleitung 143. Das Signal DLCTL auf Leitung 584 wird auf ein hohes Spannungsniveau gesetzt, um das Durchlaßgatter 528 frei zuschalten. Das Signal DLPWR auf Leitung 586 wird auf eine hohe Spannung (etwa 9 V) eingestellt. Das Signal y0 auf Leitung 590 ist auf einem logisch niedrigen Niveau, um den Transistor 544 abzuschalten. Das Signal DINK ist auf einem logisch niedrigen Niveau, was die Eingangsdaten von dem DIN Puffer 550 von der Daten-I/O-Leitung 574 entkoppelt. Das Signal SAEB ist auf einem logisch niedrigen Niveau, um den Abfrage-Verstärker 554 abzuschalten.
  • Wenn die Steuersignale ordnungsgemäß initialisiert sind, um die Datenprogrammierstufe auszuführen, wird das Signal DLPWR auf Leitung 586 an die Daten-I/O-Leitung 574 übertragen. Das Signal DLPWR liefert Programmierleistung für die Programmierung einer Speicherzelle in dem Flash EEPROM Array. Demnach wird, wenn die Zwischenspeicherschaltung 524 und 526 mit einem Zustand Daten = 1 verriegelt ist, das Durchlaßgatter 530 freigeschaltet, um zu ermöglichen, dass das Signal DLPWR durch das Durchlaßgatter 528 hindurchtritt. Das Signal BLISOB auf Leitung 572 schaltet den Transistor 502 ein und verbindet das Signal DLPWR mit der Metalleitung 143 (MTBL0) mit der passenden Impulshöhe.
  • Gemäß 8 verbindet das Freigabesignal BLTR1 auf Leitung 141 oder BLTR0 auf Leitung 142 eine Spalte von Zellen mit der Metalleitung 143 und stellt die Programmierspannung von dem Signal DLPWR für die Programmierung einer bestimmten Speicherzelle 125 oder 129 auf der Wortleitung bereit, die auf –8 V geändert wird. Wenn beispielsweise BLTR1 auf Leitung 141 ausgewählt wird und die Wortleitung WL1 ausgewählt ist, wird die Programmierspannung von dem Signal DLPWR auf die Speicherzelle 125 gelenkt.
  • Nachdem die Daten von der Zwischenspeicherschaltung 524 und 526 in die Speicherzelle programmiert sind, ist die Schaltung bereit, automatisch zu verifizieren, daß die Daten der Datenschreibestufe ordnungsgemäß programmiert worden sind. Dies umfaßt eine Folge von fünf Schritten (A bis E), um zu entscheiden, ob der Bit-Zwischenspeicher zurückgesetzt wird, und zwar folgendermaßen:
  • Schritt A
  • Lesen (READ) der realen Daten aus dem nicht-flüchtigem Bit durch den zugehörigen Abfrage-Verstärker (alle 16 Abfrage-Verstärker werden gleichzeitig aktiviert, das heißt 16 Bits werden gleichzeitig gelesen). Das Abfrage-Ergebnis wird in dem Zwischenspeicher 557 nach 10 gespeichert. Beispielsweise muß in 10 für die Verifizierung einer ausgewählten Zelle aus einer spezifizierten Wortleitung BLISOB (572) "high" (ON) sein, das ausgewählte Y (544, 546 und 14 sowie mehrere derartige Einrichtungen) ist ein, der Abfrage-Verstärker (SA) 554 ist aktiviert (und 15 weitere SA), SARD (596) ist "high", um zu ermöglichen, daß das Abfrage-Ergebnis an den Zwischenspeicher (557) läuft und LATCHB (578), DLCTL (584) sind auf niedriger Spannung (OFF), so daß während dieses Leseschrittes die Bit-Zwischenspeicherung, welche aus 524 und 526 besteht, nicht gestört wird. Die Schwellwertspannung der ausgewählten Zelle wird durch SA (554) über die Datenleitung 574 erfaßt und dann in dem Zwischenspeicher 557 gespeichert, und zwar nach einer gewissen Zeitspanne, die für den SA (554) ausreichend ist, um die Abfrage vorzunehmen. Wenn nach der Programmierung die Schwellwertspannung (VT) der Zelle niedrig genug ist (bis zu dem Punkt, zu welchem der SA 554 feststellen kann, daß die Zelle sich in einem niedrigen VT-Zustand befindet), so gibt der Ausgangswert des Inverters (560 oder der Eingang von 558) ein niedriges Niveau wieder, SARD (596) ist abgeschaltet und SA (544) wird abgeschaltet. Das niedrige Niveau wird in dem Zwischenspeicher (557) gespeichert, unabhängig davon, welches Lesen während der nächsten Schritte in der Sequenz erfolgt, bis die neuen Positionen erneut gelesen werden müssen. Wenn die ausgewählte Zelle VT nach dem Programmieren beim Lesen immer noch "high" ist, so ist der Ausgangswert des Inverters 560 auf einem hohen Niveau, das heißt ein logisch hohes Niveau wird in dem Zwischenspeicher 557 verriegelt bzw. zwischengespeichert. Man beachte, dass RESLATB (598) in diesem Schritt "high" ist, so das unabhängig davon, ob der Zwischenspeicher 557 auf "high" oder "low" verriegelt ist, dieses die Einrichtungen (564) nicht beeinflußt, da die Einrichtung 564 ohnehin abgeschaltet (OFF) ist.
  • Schritt B
  • Entladen von Datenleitungen (alle einschließlich der ausgewählten und nicht-ausgewählten). Der Zweck dieses Schrittes wird in Schritt D erläutert). Die Art und Weise der Entladung der Datenleitung 574 geschieht durch Aktivieren von DMWL (588) auf "high", LATCHB auf "low", DLCTL auf "low", wobei alle Abfrage-Verstärker abgeschaltet sind, 564 und 652 sind abgeschaltet. Der Transistor 588 entlädt Ladung, die in der Datenleitung 574 gespeichert ist. BLISOB (572) befindet sich auf einem niedrigem Niveau, um die lange metallische Bit-Leitung (MTBL0) gegenüber der Datenleitung (574) zu isolieren, so dass die Entladesequenz schneller bewerkstelligt werden kann.
  • Schritt C
  • Vorladen von Datenleitungen (wahlweise entsprechend dem zugehörigen Bit-Zwischenspeicher). Der Zweck dieses Schrittes wird in Schritt D erläutert). Während dieses Schrittes befindet sich DMWL auf einem niedrigen Niveau, BLISOB ist immer noch auf einem niedrigem Niveau, unabhängig davon, ob die 16 ausgewählten Datenleitungen desselben Wortes und andere nicht-ausgewählte Datenleitungen auf ein hohes Spannungsniveau vorgeladen werden sollen oder nicht, wird entschieden durch die Daten, welche in dem Bit-Zwischenspeicher gespeichert werden.
  • Beispielsweise ist in 10 während dieses Schrittes LATCHB (578) immer noch abgeschaltet, DLCTL (584) ist von "low" auf "high" umgeschaltet und die Datenleitung 574 ist durch die Verbindung von DLPWR (in diesem Fall eine Stromquelle auf VCC-Niveau) mit der Datenleitung (574) über die Einrichtungen 530 und 528 auf ein hohes Niveau vorgeladen, wenn der Ausgang des Inverters 526 (welcher das Gate 530 ist) auf ein hohes Niveau verriegelt bzw. zwischengespeichert ist.
  • Ansonsten kann DLPWR die Datenleitung 574 nicht auf ein hohes Niveau vorladen und die Datenleitung 574 sollte während des Schrittes B noch immer auf einem niedrigen Spannungsniveau sein.
  • Schritt D
  • ZWISCHENSPEICHER ZURÜCKSETZEN ODER NICHT? Während dieses Schrittes wird LATCHB (578) von einem niedrigen auf ein hohes Niveau umgeschaltet und RESLATB (598) schaltet von "high" auf "low", um den Bit-Zwischenspeicher (welcher aus dem Inverter 524 und 526 besteht) zurückzusetzen, indem 564 eingeschaltet wird, wenn der Ausgang des Inverters 560 "low" (von Schritt A verriegelt) ist. Da die ausgewählte Zelle bereits auf niedrigem VT ist, muß der Inhalt des Bit-Zwischenspeichers zurückgesetzt werden, so daß für die nächste Programmierung eine Hochspan nungsimpulssequenz die Zelle, welche sich auf niedrigem VT befindet, nicht erneut auf niedriges VT programmiert wird. Es besteht die Möglichkeit, das der Bit-Zwischenspeicher aus einem vorherigen Schritt D der Verifizierungsschleife zurückgesetzt ist oder sogar vor der ersten Programmiersequenz in einem zurückgesetzten Zustand war. In diesen Fällen hat der nachfolgende Zurücksetzungsschritt des Bit-Zwischenspeichers keinen Einfluß auf den Bit-Zwischenspeicher für den früheren Fall, und für den letzten Fall hat die Frage, ob die ausgewählte Zelle auf einem hohen VT ist oder nicht, keinen Einfluß auf den Bit-Zwischenspeicher, weil dann, wenn die Zelle auf hohem VT liegt, der Bit-Zwischenspeicher nicht zurückgesetzt wird (564 ist OFF aus den Schritten A und D) und der Bit-Zwischenspeicher in einem zurückgesetzten Zustand war. Wenn die Zelle auf niedrigem VT war, so macht das Zurücksetzen des Bit-Zwischenspeichers wiederum keinen Unterschied hinsichtlich des Inhalts des Bit-Zwischenspeichers. In dieser Implementierung wird kein Vergleicher-Schaltkreis benötigt.
  • Man beachte, dass LATCHB ein globales Signal für alle Bit-Zwischenspeicher in dem Flash EEPROM-Model ist und dass das hohe Niveau an den Gates von 522, 532, ... dazu führt, daß alle Bit-Zwischenspeicher mit den zugehörigen Datenleitungen kommunizieren, was bedeutet, daß der Knoten des Ausgangs des Inverters 526 eine Ladungsteilung mit der zugehörigen Datenleitung (zum Beispiel 574) erfährt. Die Treiberfähigkeit des Inverters 526 ist als eine schwache Einrichtung ausgelegt, damit ordnungsgemäße Daten in den Bit-Zwischenspeicher eingesetzt werden (um gegen den Inverter 526 anzukommen). Wenn also LATCHB (528) "high" ist, erfährt der schwache Inverter (526) eine Ladungsteilung, was zu einer Unsicherheit hinsichtlich der Integrität des Bit-Zwischenspeichers führt.
  • Der Zweck der Schritte B) und C) besteht darin, das geeignete Spannungsniveau an den Datenleitungen bereitzustellen, bevor man in Schritt D) eintritt, das heißt bevor LATCH B 578 von "low" auf "high" umschaltet, um irgendwelche "Vorgänge der Ladungsteilung" zu vermeiden, auch wenn die Schaltung, wie oben erwähnt, so ausgelegt werden kann, dass sie eine ordnungsgemäße Funktion auch ohne diese sicherstellt. Während des Schrittes B) werden alle Datenleitungen auf ein niedriges Niveau entladen und dann werden in Schritt C) nur diejenigen Datenleitungen, deren zugehöriger Bit-Zwischenspeicher ein hohes Niveau "gespeichert" haben, auf ein hohes Niveau vorgeladen. Demnach sind die Schritte B) und C) optionale Schritte, die hier der Sicherheit wegen in das Modell eingefügt wurden.
  • Schritt E
  • ENTLADE ERNEUT ALLE DATENLEITUNGEN. Zu diesem Zeitpunkt, wenn die Verifizierungsaktivität im wesentlichen gelaufen ist und bevor man zu dem nächsten Wort für eine Programmierungs-Verifizierung übergeht (oder genauer gesagt, zum Ändern des neuen Wortes und zur Wiederholung der Schritte A) bis D)), entfernt die Logiksteuerung Restladungen von allen Datenleitungen und schaltet auf ein neues Wort um. Beispielsweise ist während dieses Schrittes LATCHB (578) auf einem LOW-Niveau, RESLATB (598) ist auf einem HIGH-Niveau, DMWAL (598) ist auf einem HIGH-Niveau und BLISOB (572) ist auf einem HIGH-Niveau.
  • Demnach stellt der Seitenprogrammier- und automatische Verifizierschaltkreis der vorliegenden Erfindung das einzigartige Merkmal der automatischen Verifizierung einer Speicherzelle bereit, welche programmiert ist. Die Zwischenspeicherschaltung 524 und 526 speichert die von dem DIN Puffer 550 empfangenen Eingangsdaten. Die in der Zwischenspeicherschaltung 524 und 526 gespeicherten Daten steuern ABLRES1, welches auf ein logisch niedriges Niveau gesetzt wird, wenn eine oder mehrere Zellen vorhanden sind, die nicht programmiert werden müssen. Das Signal ABLRES1 bleibt auf einem logisch niedrigen Niveau, bis die Speicherzelle während der Programmierverifizierungssequenz verifiziert worden ist, wodurch die Zwischenspeicherschaltung 524 und 526 auf ein logisch niedriges Niveau zurückgesetzt wird und das Signal ABLRES1 auf ein logisch hohes Niveau zurückgesetzt wird, was eine ordnungsgemäß programmierte Speicherzelle anzeigt. Die Programmierverifizierungssequenz läuft automatisch ab.
  • Das Signal PGPVB auf Leitung 599 befindet sich auf einem logisch niedrigen Niveau, um während der automatischen Verifizierungssequenz eine Ladung an die Leitung 577 zuzuführen. Wenn die Zwischenspeicherschaltung 526 und 524 zurückgesetzt ist, ist der Transistor 510 abgeschaltet und die Ladung auf Leitung 577 wird nicht mehr nach Masse entladen. Das Signal ABLRES1 auf Leitung 577 wird zu einem logisch hohen Niveau. Das logisch hohe Niveau liefert eine Eingangsgröße für den Inverter 518, der eine Ausgangsgröße erzeugt, die eine Eingangsgröße für den Inverter 520 ist, der den Ausgang auf einem logisch hohem Niveau des Signals ABLRES1 auf Leitung 579 bereitstellt. Das logisch hohe Niveau des Signals ABLRES auf Leitung 579 liefert ein Verifizierungssignal der Seitenprogrammierung, welches anzeigt, daß die Seite von Speicherzellen die Programmierverifizierung erfolgreich durchlaufen hat.
  • Jede Speicherzelle innerhalb einer Seite von Speicherzellen in dem Array ist in der Lage, einen Transistor 520 zu aktivieren, um zu bewirken, dass das Signal ABLRES1 auf Leitung 577 auf einem niedrigen Niveau ist. Demnach kann irgendeine Speicherzelle, welche die Programmierverifizierung innerhalb einer Seite von Speicherzellen in dem Array nicht erfolgreich durchläuft, bewirken, dass der Ausgang ABLRES auf einem logisch niedrigen Niveau liegt. Das logisch niedrige Niveau von ABLRES auf Leitung 579 signalisiert, dass zumindest eine Speicherzelle innerhalb der Seite von Speicherzellen in dem Array nicht ordnungsgemäß programmiert und verifiziert ist. Demnach kann jede Speicherzelle, die nicht ordnungsgemäß verifiziert ist, bewirken, dass das Signal ABLRES auf Leitung 579 auf einem logisch niedrigen Niveau liegt. Wenn alle Speicherzellen ordnungsgemäß programmiert und verifiziert worden sind, ist das Signal ABLRES auf Leitung 579 auf einem logisch hohen Niveau.
  • Im Betrieb werden nicht erfolgreich programmierte Speicherzellen erneut programmiert und erneut verifiziert, bis das Signal ABLRES einen logisch hohen Wert annimmt. Die Anzahl der erneuten Versuche ist begrenzt, um eine endlose Schleife der Programmiersequenz zu verhindern, falls eine Seite wiederholt die Programmierverifizierung nicht besteht.
  • 11 zeigt ein Flußdiagramm, welches den Programmfluß für den Flash EEPROM Schaltkreis nach 8 veranschaulicht. Der Prozeß beginnt durch Löschen des Sektors (beispielsweise des Sektors 170-1), in welchem Daten programmiert werden sollen (Block 700). Nach dem Löschen des Sektors wird ein Löschverifizierungsvorgang ausgeführt (Block 701). Als nächstes werden die Seitennummer entweder 0 oder 1 und die Segmentnummer, 1–8, durch den Hostprozessor in Reaktion auf die Eingabeadresse eingestellt bzw. festgesetzt (Block 702).
  • Nach dem Einstellen der Seitenzahl und der Segmentzahl wird der Seitenpuffer mit den Daten für die Seite geladen (Block 703). Dieser Seitenpuffer kann mit sämtlichen N-Daten-Bits oder mit einem einzelnen Daten-Byte geladen werden, je nach dem, wie es zu einem speziellem Programmiervorgang paßt. Als nächstes wird der Verifizierungsvorgang ausgeführt, für den Fall, daß der Benutzer keine vorherige Löschung vornimmt oder versucht, dieselben Daten wieder zu programmieren, um zu bestimmen, welche Zellen eine Programmierung benötigen (Block 704). Nach der anfänglichen Verifizierung im Block 704 geht der Algorithmus weiter, um das Programmwiederholungsmuster einzustellen, indem ein Index "i" auf Eins gesetzt wird (Block 705). Ein Programmierimpuls wird dann angewendet, wie es oben unter Bezug auf 10 beschrieben wurde, wobei der Impuls eine Form hat, die durch den Index "i" (Block 706) definiert wird. Wie oben erwähnt, wird die Form sowohl hinsichtlich der Pulshöhe als auch hinsichtlich der Pulsbreite entsprechend Mustern gesteuert, die für die spezielle Implementierung ausgewählt wurden, wie oben beschrieben. Nach dem Programmierimpuls mit der Form "i" verifiziert der Algorithmus und setzt die Seitenpuffer-Bits zurück, welche bestehen (die Verifizierung erfolgreich durchlaufen)(Block 707). Nach der Verifizierschleife bestimmt der Algorithmus, ob alle Seiten-Bits in dem Puffer (708) zurückgesetzt worden sind. Wenn dies nicht der Fall ist, so legt der Algorithmus fest, ob die maximale Anzahl von erneuten Versuchen ausgeführt worden ist, indem er den Index "i" überprüft (Block 709). Wenn dieser noch nicht den Maximalwert erreicht hat, so wird "i" um Eins heraufgesetzt (Block 710) und der Algorithmus geht in einer Schleife zurück zu Block 706, um den nächsten Programmierimpuls anzuwenden, der die nächste Form in dem Wiederholungsmuster hat. Der Algorithmus läuft auf diese Weise in einer Schleife, bis alle Seiten-Bits in dem Seitenpuffer abgeschaltet sind. An diesem Punkt verzweigt der Algorithmus in Block 708 zu dem Block 711, wo er bestimmt, ob der Sektor, welcher programmiert wurde, abgeschlossen ist. Wenn er abgeschlossen bzw. beendet worden ist, so ist der Algorithmus erledigt. Wenn er noch nicht beendet ist, so geht der Algorithmus in einer Schleife zurück zu Punkt A, wie es in der Figur angezeigt wird, wodurch er zurück auf Block 702 gebracht wird, um die Seitenzahl und Segmentzahl der nächsten zu programmierenden Seite einzustellen.
  • Wenn die Seite nicht erfolgreich programmiert worden ist, nachdem die maximale Anzahl von erneuten Versuchen durchgeführt wurde, so erfaßt der Test bzw. die Überprüfung in Block 9 diesen Zustand und zeigt einen Fehler an (Block 713). Der Algorithmus ist dann in Block 712 erledigt.
  • Dementsprechend ist eine neue Programmiertechnik und eine neue Flash EEPROM-Zelle und Array-Architektur bereitgestellt worden. Die Architektur liefert ein sehr dichtes Kern-Array, welches durch einzigartige Zellanordnungen erhalten wurde, wobei zwei benachbarte lokale Drain-Bit-Leitungen eine gemeinsame Source-Bit-Leitung gemeinsam verwenden. Außerdem ist die Anordnung so optimiert worden, dass sie die Verwendung einer einzelnen metallischen Leitung für je zwei Spalten von Zellen in dem Array ermöglicht.
  • Weiterhin ist das Layout noch weiter reduziert durch gemeinsam verwendete Wortleitungen, so dass der Wiederholabstand der Wortleitungstreiber die Größe des Hauptarrays nicht nachteilig beeinflußt. Das Sektorlöschen ist möglich unter Verwendung der segmentierbaren Architektur der vorliegenden Erfindung. Außerdem stellen die Schaltungen für Seitenprogrammierung und automatische Verifizierung eine effiziente und genaue Programmierung der Speicherzellen bereit. Demnach kann man ein hoch leistungsfähiges, zuverlässiges Flash Speicher Array unter Verwendung dieser Technologien erreichen.
  • Die Verwendung eines Puls- bzw. Impuls-Musters mit variablen Pulshöhen und Pulsbreiten für die erneuten Programmierversuche erhöht die Leistungsfähigkeit des Flash EEPROM Arrays beträchtlich. Insbesondere wird eine Überprogrammierung vermindert, der durchschnittliche Zeitablauf der Programmierung wird beschleunigt, eine Störung nicht ausgewählter Zellen wird begrenzt und es müssen weniger Matrizen wegen zu langsamer oder zu schneller Programmierung von Zellen in dem Array ausgesondert werden. Da der Stand der Technik in den kritischen Maßen die Merkmale integrierter Schaltkreise schrumpft bzw. verkleinert, führen Variationen in den kritischen Maßen zu immer größeren Variationen in der Programmiergeschwindigkeit von Zellen mit Floating Gate. Der Algorithmus der vorliegenden Erfindung stellt eine beträchtliche Verbesserung der Leistungsfähigkeit bereit, die insofern kritisch ist, als die Auslegungsregeln, die Merkmale und Eigenschaften von Transistoren in dem Array bis auf ein Drittel Mikrometer und darunter treiben.
  • Die vorstehende Beschreibung einer bevorzugten Ausführungsform der Erfindung ist für Zwecke der veranschaulichten Beschreibung präsentiert worden. Sie soll nicht erschöpfend sein oder die Erfindung auf die speziell offenbarten Formen beschränken. Offensichtlich liegen viele Modifikationen und Variationen für auf diesem Gebiet erfahrenen Praktika auf der Hand. Der Schutzumfang der Erfindung soll durch die folgenden Ansprüche und deren Äquivalente definiert sein.

Claims (22)

  1. Verfahren zum Programmieren eines Speicherarrays (10) mit einer Mehrzahl von Flash-Speicherzellen, wobei jede Zelle ein Steuergate und Source- und Drain-Anschlüsse hat, und wobei die Programmierung die Anwendung von einem oder mehreren Programmierimpulsen beinhaltet, die durch Anlegen einer negativen Spannung an dem Steuergate und eines positiven Spannungsimpulses an einem der Source- und Drain-Anschlüsse jeder Zelle erzeugt werden, um ein Fowler-Nordheim-Tunneln zu induzieren, wobei das Verfahren die Schritte aufweist: (a) Puffern von Daten, die in der Mehrzahl von Speicherzellen gespeichert werden sollen, (b) Anlegen (706) eines ersten Programmierimpulses (60) an den Zellen mit einer ersten Impulshöhe und einer ersten Impulsbreite, die so ausgewählt sind, daß es für jede Zelle unwahrscheinlich ist, daß sie überprogrammiert wird, (c) Bestimmen (707), ob jede Zelle in Reaktion auf den ersten Programmierimpuls (60) programmiert worden ist, und, falls nicht, (d) Anlegen (706) eines Programmierwiederholungsimpulses an denjenigen Zellen, die noch nicht programmiert worden sind, (e) Bestimmen (707), ob in Reaktion auf den Programmierwiederholungsimpuls alle Zellen programmiert worden sind, und, falls nicht, (f) wiederholtes Anlegen (706, 707, 708, 709, 710) eines weiteren Programmierwiederholungsimpulses an denjenigen Zellen, die noch nicht programmiert sind, und Bestimmen, ob jede Zelle programmiert ist, bis für jede Zelle festgestellt worden ist, daß sie programmiert worden ist oder bis eine maximale Anzahl von wiederholten Versuchen durchgeführt worden ist, wobei die Programmierwiederholungsimpulse entsprechende Pulsbreiten und Pulshöhen haben, die entsprechend einem Muster (3) variieren, welches umfaßt, daß zumindest ein Impuls eine Pulsbreite hat, die breiter ist als die erste Impulsbreite und eine Pulshöhe hat, die höher ist als die erste Impulshöhe, wobei das Muster in der Weise ausgewählt wird, daß die Zellen wahrscheinlich innerhalb einer ersten Phase des Musters programmiert werden, welches eine vorbestimmte Anzahl von wiederholten Versuchen enthält, die geringer ist als die maximale Anzahl wiederholter Versuche.
  2. Verfahren nach Anspruch 1, wobei das Speicherarray auf einem integrierten Schaltkreis vorgesehen ist und M Reihen und N Spalten von Flash-Speicherzellen hat, wobei das Verfahren die Schritte aufweist: in Schritt (a) Laden (703) eines Seitenpuffers auf dem integrierten Schaltkreis mit einer Reihe von Eingangsdaten, Auswählen einer Reihe von Speicherzellen zum Programmieren der Eingangsdaten in die Reihe aus Speicherzellen, in Schritt (b) Anlegen (706) des ersten Programmierimpulses an Zellen in der Reihe von Speicherzellen, entsprechend den Eingangsdaten, die einen Programmierwert in dem Seitenpuffer haben, in Schritt (c) Lesen der Reihe von Speicherzellen, um das Programmieren (707) der Eingangsdaten in der Reihe von Speicherzellen zu verifizieren, Zurücksetzen der Eingangsdaten in dem Seitenpuffer (707) von erfolgreich verifizierten Speicherzellen in der Reihe von Speicherzellen, und, falls Daten mit einem Programmierwert in dem Seitenpuffer verbleiben, dann in Schritt (d) Anlegen (706) des Programmierwiederholungsimpulses an den Zellen in der Reihe von Speicherzellen, entsprechend den Eingangsdaten, die einen Programmierwert in dem Seitenpuffer haben, in Schritt (e) Lesen der Reihe von Speicherzellen, um die Programmierung (707) der Eingangsdaten in der Reihe von Speicherzellen zu verifizieren, und Zurücksetzen der Eingangsdaten in dem Seitenpuffer (707) von erfolgreich verifizierten Speicherzellen in der Reihe von Speicherzellen, und, falls Daten mit einem Programmierwert in dem Seitenpuffer verbleiben, dann in Schritt (f) abwechselndes Anlegen (706, 707, 708, 709, 710) eines weiteren Programmierwiederholungsimpulses an der Zelle und Lesen und Zurücksetzen der Eingangsdaten für Programmierzellen, bis festgestellt wurde, daß die Reihe programmiert worden ist oder bis ein maximale Anzahl erneuter Versuche durchgeführt worden ist.
  3. Verfahren nach Anspruch 1 oder 2, wobei Wiederholungsimpulse in dem Muster entsprechende Energien haben, die durch die jeweiligen Pulshöhen und -breiten bestimmt werden, und wobei die jeweiligen Energien der Impulse während der ersten Phase des Musters (62, 63, 64) nacheinander konstant bleiben oder ansteigen.
  4. Verfahren nach Anspruch 3, wobei die Impulshöhe während der ersten Phase konstant und größer als die erste Impulshöhe ist und wobei die Pulsbreite während der ersten Phase (62, 63, 64) in der Folge ansteigt.
  5. Verfahren nach Anspruch 3 oder 4, wobei die Impulse (65, 66) nach der ersten Phase Energien haben, die größer sind als der letzte Impuls der ersten Phase.
  6. Verfahren nach Anspruch 1 oder 2, wobei der erste Programmierimpuls und die Programmierwiederholungsimpulse erzeugt werden durch Anlegen einer negativen Spannung an dem Steuergate und einer variablen Spannung an der Drain, so daß ein Fowler-Nordheim-Tunneln induziert wird, um die Flash-Speicherzelle zu entladen.
  7. Verfahren nach Anspruch 2, welches weiterhin den Schritt aufweist, daß ein Teilsatz von N Spalten in der Reihe von Speicherzellen für das Programmieren der Eingangsdaten ausgewählt wird.
  8. Verfahren nach Anspruch 2, wobei der Schritt des Programmierens der Reihe von Speicherzellen den Schritt beinhaltet, daß Ladezustände, welche in den Speicherzellen gespeichert sind, verändert werden, wenn ein Datenprogrammierungszustand in dem Seitenpuffer gespeichert wird.
  9. Verfahren nach Anspruch 2, wobei das Speicherarray (10) zumindest M Wortleitungen und zumindest N Bitleitungen umfaßt, die mit einer Mehrzahl von Flash-Speicherzellen verbunden sind, und der Seitenpuffer einen Bitschalter für jede der N Bitleitungen enthält, wobei N größer als 32 ist.
  10. Verfahren nach Anspruch 9, wobei das Muster so ausgewählt wird, daß die Zellen wahrscheinlich innerhalb einer ersten Phase des Musters einschließlich einer vorbestimmten Anzahl von Wiederholungen programmiert werden, die geringer ist als die maximale Anzahl von erneuten Versuchen, und wobei N größer als 500 ist, und wobei die erste Phase des Musters in weniger als einer Millisekunde abgeschlossen wird.
  11. Verfahren nach Anspruch 10, wobei N größer als 1000 ist.
  12. Verfahren nach einem der vorstehenden Ansprüche, wobei die Flash-Speicherzellen Speicherzellen mit potentialfreiem Gate sind.
  13. Vorrichtung zum Speichern von Daten, mit: einem Speicherarray (10), welches eine Mehrzahl von Flash-Speicherzellen hat, wobei jede Zelle ein Steuergate, Source- und Drain-Anschlüsse hat, Versorgungsschaltkreise (179), die mit dem Speicherarray verbunden sind und welche Spannungen an der Mehrzahl von Flash-Speicherzellen anlegen, um die Mehrzahl von Flash-Speicherzellen in dem Speicherarray zu programmieren, indem ein oder mehrere Programmierimpulse angelegt werden, die erzeugt werden durch Anlegen einer negativen Spannung an dem Steuergate und eines positiven Spannungsimpulses an einem der Source- und Drain-Anschlüsse jeder Zelle, um ein Fowler-Nordheim-Tunneln zu induzieren, einer Mehrzahl von Bitschaltern (190), die mit Bitleitungen in dem Speicherarray verbunden sind, welche einen Puffer für die Speicherung von Daten in einem Satz bereitstellen, der zumindest einen Teil einer Reihe von Flash-Speicherzellen in dem Speicherarray enthält, und automatischen Programmierschaltkreisen, die mit dem Speicherarray (10), den Versorgungsschaltkreisen (179) und der Mehrzahl von Bitschaltern (190) verbunden sind, welche Zellen auf einer ausgewählten Wortleitung und auf Bitleitungen, die mit einem Bitschalter verbunden sind, der einen Programmierwert speichert, programmieren, einschließlich einer Schaltung zum Anlegen (706) eines ersten Programmierimpulses (60) an Zellen, mit einer ersten Impulshöhe und einer ersten Impulsbreite, so daß es unwahrscheinlich ist, daß die Zellen übermäßig programmiert werden, zu bestimmen (707), ob jede Zelle in Reaktion auf den ersten Programmierimpuls programmiert worden ist, und, falls dies der Fall ist, den entsprechenden Bitschalter zurückzusetzen, und, falls dies nicht der Fall ist, zum Anlegen (706) eines Programmierwiederholungsimpulses an denjenigen Zellen, die noch nicht programmiert worden sind, zum Bestimmen (707), ob in Reaktion auf den Programmierwiederholungsimpuls jede Zelle programmiert worden ist, und, falls dies der Fall ist, Zurücksetzen des entsprechenden Bitschalters, und, falls dies nicht der Fall ist, zum wiederholten Anlegen (706, 707, 708, 709, 710) eines weiteren Programmierwiederholungsimpulses an denjenigen Zellen, die noch nicht programmiert sind, zum Bestimmen, ob jede Zelle programmiert ist und zum Zurücksetzen von Bitschaltern der programmierten Zellen, bis alle Bitschalter in der Mehrzahl von Bitschaltern zurückgesetzt worden sind oder bis eine maximale Anzahl von wiederholten Versuchen durchgeführt worden ist, wobei die Programmierwiederholungsimpulse entsprechende Pulsbreiten und Pulshöhen haben, die entsprechend einem Muster variieren, welches zumindest einen Impuls umfaßt, der eine Pulsbreite hat, die breiter als die erste Pulsbreite ist, und eine Pulshöhe hat, die höher als die erste Pulshöhe ist, wobei das Muster so ausgewählt ist, daß die Zellen wahrscheinlich innerhalb einer ersten Phase des Musters programmiert werden, welche eine vorbestimmte Anzahl von wiederholten Versuchen umfaßt, die geringer ist als die maximale Anzahl von Versuchen.
  14. Vorrichtung nach Anspruch 13, wobei jede Reihe der Mehrzahl von Flash-Speicherzellen eine erste Seite und eine zweite Seite (8) umfaßt, und wobei der Satz eine Seite von Flash-Speicherzellen umfaßt.
  15. Vorrichtung nach Anspruch 13, wobei das Speicherarray (10) zumindest M Wortleitungen und zumindest N Bitleitungen umfaßt, welche mit der Mehrzahl von Flash-Speicherzellen verbunden sind, und wobei die Mehrzahl von Bitschaltern für jede der N Bitleitungen einen Bitschalter aufweist, wobei N größer als 32 ist.
  16. Vorrichtung nach Anspruch 15, wobei das Muster so ausgewählt ist, daß die Zellen wahrscheinlich innerhalb einer ersten Phase des Musters programmiert werden, welches eine vorbestimmte Anzahl erneuter Versuche umfaßt, die geringer ist als die maximale Anzahl erneuter Versuche, und wobei N größer als 500 ist und wobei die erste Phase des Musters in weniger als einer Millisekunde abgeschlossen ist.
  17. Vorrichtung nach Anspruch 16, wobei N größer als 1000 ist.
  18. Vorrichtung nach Anspruch 13, wobei Wiederholungsimpulse in dem Muster entsprechende Energien haben, die durch ihre jeweiligen Impulshöhen und -breiten bestimmt werden, und wobei die entsprechenden Energien der Impulse in der Abfolge während der ersten Phase des Musters (62, 63, 64) konstant bleiben oder ansteigen.
  19. Vorrichtung nach Anspruch 18, wobei die Impulshöhe während der ersten Phase konstant ist und größer ist als die erste Impulshöhe, und wobei die Impulsbreite während der ersten Phase (62, 63, 64) sukzessive ansteigt.
  20. Vorrichtung nach Anspruch 18, wobei die Impulse (65, 66) nach der ersten Phase Energien haben, die größer sind als die eines letzten Impulses der ersten Phase.
  21. Vorrichtung nach Anspruch 13, wobei der erste Programmierimpuls und die Programmierwiederholungsimpulse erzeugt werden durch Zuführen einer negativen Spannung an der ausgewählten Wortleitung und einer variablen Spannung an der Bitleitung, so daß ein Fowler-Nordheim-Tunneln induziert wird, um die Flash-Speicherzellen zu entladen.
  22. Vorrichtung nach einem der Ansprüche 13 bis 21, wobei die Flash-Speicherzellen Speicherzellen mit potentialfreiem Gate sind.
DE69533429T 1995-06-07 1995-06-07 Automatischer progammier-algorithmus für flash-speicher im seitenmodus mit variabler programmierimpulshöhe und -breite Expired - Lifetime DE69533429T2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US1995/007376 WO1996041346A1 (en) 1995-06-07 1995-06-07 Automatic programming algorithm for page mode flash memory with variable programming pulse height and pulse width

Publications (2)

Publication Number Publication Date
DE69533429D1 DE69533429D1 (de) 2004-09-30
DE69533429T2 true DE69533429T2 (de) 2005-08-18

Family

ID=22249292

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69533429T Expired - Lifetime DE69533429T2 (de) 1995-06-07 1995-06-07 Automatischer progammier-algorithmus für flash-speicher im seitenmodus mit variabler programmierimpulshöhe und -breite

Country Status (5)

Country Link
US (1) US5751637A (de)
EP (1) EP0830684B1 (de)
JP (1) JP3807744B2 (de)
DE (1) DE69533429T2 (de)
WO (1) WO1996041346A1 (de)

Families Citing this family (145)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6091666A (en) * 1996-10-04 2000-07-18 Sony Corporation Nonvolatile flash memory with fast data programming operation
JP3481817B2 (ja) * 1997-04-07 2003-12-22 株式会社東芝 半導体記憶装置
US5956272A (en) * 1997-12-01 1999-09-21 Micron Technology, Inc. Programming pulse with varying amplitude
US5991201A (en) * 1998-04-27 1999-11-23 Motorola Inc. Non-volatile memory with over-program protection and method therefor
US5999451A (en) * 1998-07-13 1999-12-07 Macronix International Co., Ltd. Byte-wide write scheme for a page flash device
JP3779480B2 (ja) 1999-02-10 2006-05-31 Necエレクトロニクス株式会社 半導体記憶装置
FR2798767B1 (fr) 1999-09-16 2001-12-14 St Microelectronics Sa Procede d'ecriture en mode page d'une memoire non volatile electriquement programmable/effacable et architecture correspondante
US6327183B1 (en) * 2000-01-10 2001-12-04 Advanced Micro Devices, Inc. Nonlinear stepped programming voltage
US6381175B2 (en) * 2000-01-10 2002-04-30 Texas Instruments Incorporated Method and system for validating flash memory
US6269025B1 (en) 2000-02-09 2001-07-31 Advanced Micro Devices, Inc. Memory system having a program and erase voltage modifier
US6343033B1 (en) * 2000-02-25 2002-01-29 Advanced Micro Devices, Inc. Variable pulse width memory programming
US6304487B1 (en) 2000-02-28 2001-10-16 Advanced Micro Devices, Inc. Register driven means to control programming voltages
US6928001B2 (en) * 2000-12-07 2005-08-09 Saifun Semiconductors Ltd. Programming and erasing methods for a non-volatile memory cell
US6396741B1 (en) * 2000-05-04 2002-05-28 Saifun Semiconductors Ltd. Programming of nonvolatile memory cells
KR100391154B1 (ko) * 2001-05-14 2003-07-12 삼성전자주식회사 불휘발성 반도체 메모리 장치의 프로그램 방법 및 장치
US6621741B2 (en) * 2002-01-30 2003-09-16 Fujitsu Limited System for programming verification
US6700818B2 (en) * 2002-01-31 2004-03-02 Saifun Semiconductors Ltd. Method for operating a memory device
US7190620B2 (en) * 2002-01-31 2007-03-13 Saifun Semiconductors Ltd. Method for operating a memory device
US6975536B2 (en) * 2002-01-31 2005-12-13 Saifun Semiconductors Ltd. Mass storage array and methods for operation thereof
US20040007733A1 (en) * 2002-06-26 2004-01-15 Macronix International Co., Ltd. Floating gate memory cell and forming method
US6917544B2 (en) 2002-07-10 2005-07-12 Saifun Semiconductors Ltd. Multiple use memory chip
US6891752B1 (en) * 2002-07-31 2005-05-10 Advanced Micro Devices System and method for erase voltage control during multiple sector erase of a flash memory device
US7136304B2 (en) 2002-10-29 2006-11-14 Saifun Semiconductor Ltd Method, system and circuit for programming a non-volatile memory array
US6967896B2 (en) * 2003-01-30 2005-11-22 Saifun Semiconductors Ltd Address scramble
US7178004B2 (en) 2003-01-31 2007-02-13 Yan Polansky Memory array programming circuit and a method for using the circuit
US6872972B2 (en) * 2003-07-16 2005-03-29 Macronix International Co., Ltd. Method for forming silicon film with changing grain size by thermal process
KR100528482B1 (ko) * 2003-12-31 2005-11-15 삼성전자주식회사 데이타를 섹터 단위로 랜덤하게 입출력할 수 있는 플래시메모리 시스템
JP2005235287A (ja) * 2004-02-19 2005-09-02 Nec Electronics Corp 不揮発性半導体記憶装置のプログラミング方法、プログラミング装置、及び、不揮発性半導体記憶装置
US7652930B2 (en) * 2004-04-01 2010-01-26 Saifun Semiconductors Ltd. Method, circuit and system for erasing one or more non-volatile memory cells
US7366025B2 (en) * 2004-06-10 2008-04-29 Saifun Semiconductors Ltd. Reduced power programming of non-volatile cells
US7540167B2 (en) 2004-07-08 2009-06-02 Dean Murphy Condensed water production system
US7110298B2 (en) * 2004-07-20 2006-09-19 Sandisk Corporation Non-volatile system with program time control
EP1782426B1 (de) * 2004-08-17 2015-10-28 Atmel Corporation Selbstadaptive programmverzögerungs-schaltkreise für programmierbare speicher
FR2874449B1 (fr) * 2004-08-17 2008-04-04 Atmel Corp Circuit de retard de programme auto-adaptatif pour memoires programmables
JPWO2006025083A1 (ja) * 2004-08-30 2008-07-31 スパンション エルエルシー 半導体装置、半導体装置の試験方法およびデータ書き込み方法
US7638850B2 (en) 2004-10-14 2009-12-29 Saifun Semiconductors Ltd. Non-volatile memory structure and method of fabrication
US8053812B2 (en) 2005-03-17 2011-11-08 Spansion Israel Ltd Contact in planar NROM technology
US7339834B2 (en) 2005-06-03 2008-03-04 Sandisk Corporation Starting program voltage shift with cycling of non-volatile memory
US8400841B2 (en) * 2005-06-15 2013-03-19 Spansion Israel Ltd. Device to program adjacent storage cells of different NROM cells
US7184313B2 (en) * 2005-06-17 2007-02-27 Saifun Semiconductors Ltd. Method circuit and system for compensating for temperature induced margin loss in non-volatile memory cells
US7804126B2 (en) 2005-07-18 2010-09-28 Saifun Semiconductors Ltd. Dense non-volatile memory array and method of fabrication
US20070025167A1 (en) * 2005-07-27 2007-02-01 Marco Ziegelmayer Method for testing a memory device, test unit for testing a memory device and memory device
US20070036007A1 (en) * 2005-08-09 2007-02-15 Saifun Semiconductors, Ltd. Sticky bit buffer
US7668017B2 (en) 2005-08-17 2010-02-23 Saifun Semiconductors Ltd. Method of erasing non-volatile memory cells
US7307878B1 (en) * 2005-08-29 2007-12-11 Spansion Llc Flash memory device having improved program rate
US7957204B1 (en) 2005-09-20 2011-06-07 Spansion Llc Flash memory programming power reduction
US8358543B1 (en) 2005-09-20 2013-01-22 Spansion Llc Flash memory programming with data dependent control of source lines
US7130222B1 (en) 2005-09-26 2006-10-31 Macronix International Co., Ltd. Nonvolatile memory with program while program verify
US7808818B2 (en) 2006-01-12 2010-10-05 Saifun Semiconductors Ltd. Secondary injection for NROM
US8253452B2 (en) 2006-02-21 2012-08-28 Spansion Israel Ltd Circuit and method for powering up an integrated circuit and an integrated circuit utilizing same
US7692961B2 (en) 2006-02-21 2010-04-06 Saifun Semiconductors Ltd. Method, circuit and device for disturb-control of programming nonvolatile memory cells by hot-hole injection (HHI) and by channel hot-electron (CHE) injection
US7760554B2 (en) 2006-02-21 2010-07-20 Saifun Semiconductors Ltd. NROM non-volatile memory and mode of operation
US20070255889A1 (en) * 2006-03-22 2007-11-01 Yoav Yogev Non-volatile memory device and method of operating the device
KR101312503B1 (ko) 2006-03-28 2013-10-16 샌디스크 테크놀로지스, 인코포레이티드 개선된 프로그래밍 속도를 위해 프로그램 전압의 함수로서 프로그램 시간 조절
US7330373B2 (en) 2006-03-28 2008-02-12 Sandisk Corporation Program time adjustment as function of program voltage for improved programming speed in memory system
US7327608B2 (en) 2006-03-28 2008-02-05 Sandisk Corporation Program time adjustment as function of program voltage for improved programming speed in programming method
US7701779B2 (en) 2006-04-27 2010-04-20 Sajfun Semiconductors Ltd. Method for programming a reference cell
CN103280239B (zh) 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
US7697326B2 (en) * 2006-05-12 2010-04-13 Anobit Technologies Ltd. Reducing programming error in memory devices
US8239735B2 (en) 2006-05-12 2012-08-07 Apple Inc. Memory Device with adaptive capacity
WO2007132457A2 (en) 2006-05-12 2007-11-22 Anobit Technologies Ltd. Combined distortion estimation and error correction coding for memory devices
US7663925B2 (en) * 2006-05-15 2010-02-16 Micron Technology Inc. Method and apparatus for programming flash memory
US7567461B2 (en) * 2006-08-18 2009-07-28 Micron Technology, Inc. Method and system for minimizing number of programming pulses used to program rows of non-volatile memory cells
WO2008026203A2 (en) 2006-08-27 2008-03-06 Anobit Technologies Estimation of non-linear distortion in memory devices
US7821826B2 (en) 2006-10-30 2010-10-26 Anobit Technologies, Ltd. Memory cell readout using successive approximation
JP2010508615A (ja) 2006-10-30 2010-03-18 サンディスク コーポレイション 不揮発性メモリに用いられる最高マルチレベル状態の高速プログラミング
WO2008053472A2 (en) 2006-10-30 2008-05-08 Anobit Technologies Ltd. Reading memory cells using multiple thresholds
US7924648B2 (en) 2006-11-28 2011-04-12 Anobit Technologies Ltd. Memory power and performance management
US8151163B2 (en) 2006-12-03 2012-04-03 Anobit Technologies Ltd. Automatic defect management in memory devices
US7900102B2 (en) 2006-12-17 2011-03-01 Anobit Technologies Ltd. High-speed programming of memory devices
US7593263B2 (en) 2006-12-17 2009-09-22 Anobit Technologies Ltd. Memory device with reduced reading latency
US7551482B2 (en) 2006-12-27 2009-06-23 Sandisk Corporation Method for programming with initial programming voltage based on trial
US7570520B2 (en) 2006-12-27 2009-08-04 Sandisk Corporation Non-volatile storage system with initial programming voltage based on trial
US8151166B2 (en) 2007-01-24 2012-04-03 Anobit Technologies Ltd. Reduction of back pattern dependency effects in memory devices
US7751240B2 (en) * 2007-01-24 2010-07-06 Anobit Technologies Ltd. Memory device with negative thresholds
WO2008111058A2 (en) 2007-03-12 2008-09-18 Anobit Technologies Ltd. Adaptive estimation of memory cell read thresholds
US8001320B2 (en) 2007-04-22 2011-08-16 Anobit Technologies Ltd. Command interface for memory devices
US7606111B2 (en) * 2007-04-26 2009-10-20 Super Talent Electronics, Inc. Synchronous page-mode phase-change memory with ECC and RAM cache
US8234545B2 (en) 2007-05-12 2012-07-31 Apple Inc. Data storage with incremental redundancy
WO2008139441A2 (en) 2007-05-12 2008-11-20 Anobit Technologies Ltd. Memory device with internal signal processing unit
US7630249B2 (en) 2007-06-21 2009-12-08 Sandisk Corporation Intelligent control of program pulse duration
US7580290B2 (en) 2007-06-21 2009-08-25 Sandisk Corporation Non-volatile storage system with intelligent control of program pulse duration
WO2008157606A1 (en) 2007-06-21 2008-12-24 Sandisk Corporation Intelligent control of program pulse duration
US7925936B1 (en) 2007-07-13 2011-04-12 Anobit Technologies Ltd. Memory device with non-uniform programming levels
US8259497B2 (en) 2007-08-06 2012-09-04 Apple Inc. Programming schemes for multi-level analog memory cells
KR101373186B1 (ko) * 2007-08-22 2014-03-13 삼성전자주식회사 플래시 메모리 장치 및 그것의 프로그램 방법들, 그리고그것을 포함하는 메모리 시스템 및 컴퓨터 시스템
US8174905B2 (en) 2007-09-19 2012-05-08 Anobit Technologies Ltd. Programming orders for reducing distortion in arrays of multi-level analog memory cells
US7978520B2 (en) 2007-09-27 2011-07-12 Sandisk Corporation Compensation of non-volatile memory chip non-idealities by program pulse adjustment
US7773413B2 (en) 2007-10-08 2010-08-10 Anobit Technologies Ltd. Reliable data storage in analog memory cells in the presence of temperature variations
US8000141B1 (en) 2007-10-19 2011-08-16 Anobit Technologies Ltd. Compensation for voltage drifts in analog memory cells
WO2009050703A2 (en) 2007-10-19 2009-04-23 Anobit Technologies Data storage in analog memory cell arrays having erase failures
US8068360B2 (en) 2007-10-19 2011-11-29 Anobit Technologies Ltd. Reading analog memory cells using built-in multi-threshold commands
KR101509836B1 (ko) 2007-11-13 2015-04-06 애플 인크. 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택
US8225181B2 (en) 2007-11-30 2012-07-17 Apple Inc. Efficient re-read operations from memory devices
US8209588B2 (en) 2007-12-12 2012-06-26 Anobit Technologies Ltd. Efficient interference cancellation in analog memory cell arrays
US8456905B2 (en) 2007-12-16 2013-06-04 Apple Inc. Efficient data storage in multi-plane memory devices
US8085586B2 (en) 2007-12-27 2011-12-27 Anobit Technologies Ltd. Wear level estimation in analog memory cells
US8156398B2 (en) 2008-02-05 2012-04-10 Anobit Technologies Ltd. Parameter estimation based on error correction code parity check equations
US7924587B2 (en) 2008-02-21 2011-04-12 Anobit Technologies Ltd. Programming of analog memory cells using a single programming pulse per state transition
US7864573B2 (en) 2008-02-24 2011-01-04 Anobit Technologies Ltd. Programming analog memory cells for reduced variance after retention
US8230300B2 (en) 2008-03-07 2012-07-24 Apple Inc. Efficient readout from analog memory cells using data compression
US8059457B2 (en) 2008-03-18 2011-11-15 Anobit Technologies Ltd. Memory device with multiple-accuracy read commands
US8400858B2 (en) 2008-03-18 2013-03-19 Apple Inc. Memory device with reduced sense time readout
US7800956B2 (en) * 2008-06-27 2010-09-21 Sandisk Corporation Programming algorithm to reduce disturb with minimal extra time penalty
US8498151B1 (en) 2008-08-05 2013-07-30 Apple Inc. Data storage in analog memory cells using modified pass voltages
US7924613B1 (en) * 2008-08-05 2011-04-12 Anobit Technologies Ltd. Data storage in analog memory cells with protection against programming interruption
US8949684B1 (en) 2008-09-02 2015-02-03 Apple Inc. Segmented data storage
US8169825B1 (en) 2008-09-02 2012-05-01 Anobit Technologies Ltd. Reliable data storage in analog memory cells subjected to long retention periods
US8000135B1 (en) 2008-09-14 2011-08-16 Anobit Technologies Ltd. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8482978B1 (en) 2008-09-14 2013-07-09 Apple Inc. Estimation of memory cell read thresholds by sampling inside programming level distribution intervals
US8239734B1 (en) 2008-10-15 2012-08-07 Apple Inc. Efficient data storage in storage device arrays
US8713330B1 (en) 2008-10-30 2014-04-29 Apple Inc. Data scrambling in memory devices
US8208304B2 (en) 2008-11-16 2012-06-26 Anobit Technologies Ltd. Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N
ITRM20080693A1 (it) 2008-12-24 2010-06-25 Micron Technology Inc Programmazione in un dispositivo di memoria.
US8248831B2 (en) 2008-12-31 2012-08-21 Apple Inc. Rejuvenation of analog memory cells
US8397131B1 (en) 2008-12-31 2013-03-12 Apple Inc. Efficient readout schemes for analog memory cell devices
US8924661B1 (en) 2009-01-18 2014-12-30 Apple Inc. Memory system including a controller and processors associated with memory devices
US8228701B2 (en) 2009-03-01 2012-07-24 Apple Inc. Selective activation of programming schemes in analog memory cell arrays
US8259506B1 (en) 2009-03-25 2012-09-04 Apple Inc. Database of memory read thresholds
US8832354B2 (en) 2009-03-25 2014-09-09 Apple Inc. Use of host system resources by memory controller
US8238157B1 (en) 2009-04-12 2012-08-07 Apple Inc. Selective re-programming of analog memory cells
US8874825B2 (en) 2009-06-30 2014-10-28 Sandisk Technologies Inc. Storage device and method using parameters based on physical memory block location
US8479080B1 (en) 2009-07-12 2013-07-02 Apple Inc. Adaptive over-provisioning in memory systems
US8495465B1 (en) 2009-10-15 2013-07-23 Apple Inc. Error correction coding over multiple memory pages
US8174895B2 (en) * 2009-12-15 2012-05-08 Sandisk Technologies Inc. Programming non-volatile storage with fast bit detection and verify skip
US8677054B1 (en) 2009-12-16 2014-03-18 Apple Inc. Memory management schemes for non-volatile memory devices
US8694814B1 (en) 2010-01-10 2014-04-08 Apple Inc. Reuse of host hibernation storage space by memory controller
US8572311B1 (en) 2010-01-11 2013-10-29 Apple Inc. Redundant data storage in multi-die memory systems
US8374038B2 (en) 2010-05-04 2013-02-12 Macronix International Co., Ltd. Erase process for use in semiconductor memory device
US8694853B1 (en) 2010-05-04 2014-04-08 Apple Inc. Read commands for reading interfering memory cells
US8572423B1 (en) 2010-06-22 2013-10-29 Apple Inc. Reducing peak current in memory systems
US8595591B1 (en) 2010-07-11 2013-11-26 Apple Inc. Interference-aware assignment of programming levels in analog memory cells
US9104580B1 (en) 2010-07-27 2015-08-11 Apple Inc. Cache memory for hybrid disk drives
US8767459B1 (en) 2010-07-31 2014-07-01 Apple Inc. Data storage in analog memory cells across word lines using a non-integer number of bits per cell
US8856475B1 (en) 2010-08-01 2014-10-07 Apple Inc. Efficient selection of memory blocks for compaction
US8694854B1 (en) 2010-08-17 2014-04-08 Apple Inc. Read threshold setting based on soft readout statistics
US9021181B1 (en) 2010-09-27 2015-04-28 Apple Inc. Memory management for unifying memory cell conditions by using maximum time intervals
US9218876B2 (en) 2012-05-08 2015-12-22 Micron Technology, Inc. Methods, articles and devices for pulse adjustments to program a memory cell
US9183929B2 (en) 2012-08-29 2015-11-10 Micron Technology, Inc. Systems, methods and devices for programming a multilevel resistive memory cell
US9117519B2 (en) 2012-08-29 2015-08-25 Micron Technology, Inc. Methods, devices and systems using over-reset state in a memory cell
TWI695385B (zh) * 2019-05-31 2020-06-01 旺宏電子股份有限公司 非揮發性記憶體與其操作方法
US11556416B2 (en) 2021-05-05 2023-01-17 Apple Inc. Controlling memory readout reliability and throughput by adjusting distance between read thresholds
US11847342B2 (en) 2021-07-28 2023-12-19 Apple Inc. Efficient transfer of hard data and confidence levels in reading a nonvolatile memory
KR102636380B1 (ko) * 2021-09-10 2024-02-15 에스케이키파운드리 주식회사 임베디드 플래시 메모리 및 그의 동작 방법
US11967383B2 (en) 2022-01-20 2024-04-23 Western Digital Technologies, Inc. Non-volatile memory with enhanced program operation for last state on slow plane

Family Cites Families (42)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4258378A (en) * 1978-05-26 1981-03-24 Texas Instruments Incorporated Electrically alterable floating gate memory with self-aligned low-threshold series enhancement transistor
IT1224062B (it) * 1979-09-28 1990-09-26 Ates Componenti Elettron Metodo di programmazione per una memoria a semiconduttore non volatile elettricamente alterabile
JPS56108259A (en) * 1980-02-01 1981-08-27 Hitachi Ltd Semiconductor memory device
US4639893A (en) * 1984-05-15 1987-01-27 Wafer Scale Integration, Inc. Self-aligned split gate EPROM
IT1213241B (it) * 1984-11-07 1989-12-14 Ates Componenti Elettron Matrice di memoria eprom con celle elementari simmetriche mos e suo metodo di scrittura.
US4698787A (en) * 1984-11-21 1987-10-06 Exel Microelectronics, Inc. Single transistor electrically programmable memory device and method
US5127739A (en) * 1987-04-27 1992-07-07 Texas Instruments Incorporated CMOS sense amplifier with bit line isolation
JPH0668917B2 (ja) * 1987-05-15 1994-08-31 日本電気株式会社 メモリ素子入換制御回路
KR890003030A (ko) * 1987-07-08 1989-04-12 미다 가쓰시게 플로팅 게이트를 갖는 반도체장치
US4812885A (en) * 1987-08-04 1989-03-14 Texas Instruments Incorporated Capacitive coupling
US4780424A (en) * 1987-09-28 1988-10-25 Intel Corporation Process for fabricating electrically alterable floating gate memory devices
US5053990A (en) * 1988-02-17 1991-10-01 Intel Corporation Program/erase selection for flash memory
US4949309A (en) * 1988-05-11 1990-08-14 Catalyst Semiconductor, Inc. EEPROM utilizing single transistor per cell capable of both byte erase and flash erase
JPH0770235B2 (ja) * 1988-06-24 1995-07-31 株式会社東芝 不揮発性メモリ回路装置
US5168335A (en) * 1988-07-15 1992-12-01 Texas Instruments Incorporated Electrically programmable, electrically erasable memory array cell with field plate
FR2635409B1 (fr) * 1988-08-11 1991-08-02 Sgs Thomson Microelectronics Memoire de type eprom a haute densite d'integration possedant un facteur de couplage eleve, et son procede de fabrication
US5023681A (en) * 1988-10-08 1991-06-11 Hyundai Electronics Industries Co., Ltd. Method for arranging EEPROM cells and a semiconductor device manufactured by the method
US5110753A (en) * 1988-11-10 1992-05-05 Texas Instruments Incorporated Cross-point contact-free floating-gate memory array with silicided buried bitlines
US5095461A (en) * 1988-12-28 1992-03-10 Kabushiki Kaisha Toshiba Erase circuitry for a non-volatile semiconductor memory device
IT1229131B (it) * 1989-03-09 1991-07-22 Sgs Thomson Microelectronics Matrice di memoria eprom con struttura a tovaglia e procedimento per la sua fabbricazione.
IT1228720B (it) * 1989-03-15 1991-07-03 Sgs Thomson Microelectronics Matrice a tovaglia di celle di memoria eprom con giunzioni sepolte, accessibili singolarmente mediante decodifica tradizionale.
US5045489A (en) * 1989-06-30 1991-09-03 Texas Instruments Incorporated Method of making a high-speed 2-transistor cell for programmable/EEPROM devices with separate read and write transistors
US5121353A (en) * 1989-07-06 1992-06-09 Kabushiki Kaisha Toshiba Ferroelectric capacitor memory circuit MOS setting and transmission transistor
US5023837A (en) * 1989-09-05 1991-06-11 Texas Instruments Incorporated Bitline segmentation in logic arrays
US5126808A (en) * 1989-10-23 1992-06-30 Advanced Micro Devices, Inc. Flash EEPROM array with paged erase architecture
JP2573380B2 (ja) * 1989-12-22 1997-01-22 株式会社東芝 不揮発性半導体メモリ
KR920010347B1 (ko) * 1989-12-30 1992-11-27 삼성전자주식회사 분할된 워드라인을 가지는 메모리장치의 리던던시 구조
US5060195A (en) * 1989-12-29 1991-10-22 Texas Instruments Incorporated Hot electron programmable, tunnel electron erasable contactless EEPROM
US5111270A (en) * 1990-02-22 1992-05-05 Intel Corporation Three-dimensional contactless non-volatile memory cell
US5204835A (en) * 1990-06-13 1993-04-20 Waferscale Integration Inc. Eprom virtual ground array
US5111428A (en) * 1990-07-10 1992-05-05 Silicon Integrated Systems Corp. High density NOR type read only memory data cell and reference cell network
US5222040A (en) * 1990-12-11 1993-06-22 Nexcom Technology, Inc. Single transistor eeprom memory cell
US5243559A (en) * 1990-12-12 1993-09-07 Nippon Steel Corporation Semiconductor memory device
US5245570A (en) * 1990-12-21 1993-09-14 Intel Corporation Floating gate non-volatile memory blocks and select transistors
US5220531A (en) * 1991-01-02 1993-06-15 Information Storage Devices, Inc. Source follower storage cell and improved method and apparatus for iterative write for integrated circuit analog signal recording and playback
US5218569A (en) * 1991-02-08 1993-06-08 Banks Gerald J Electrically alterable non-volatile memory with n-bits per memory cell
DE4205061C2 (de) * 1991-02-19 2000-04-06 Toshiba Kawasaki Kk Nichtflüchtige Halbleiter-Speicheranordnung
JP3104319B2 (ja) * 1991-08-29 2000-10-30 ソニー株式会社 不揮発性記憶装置
JPH0589687A (ja) * 1991-09-27 1993-04-09 Nec Corp 不揮発性半導体記憶装置
EP1032034A1 (de) * 1992-01-22 2000-08-30 Macronix International Co., Ltd. Verfahren zur Speicherbauelementherstellung
US5315541A (en) * 1992-07-24 1994-05-24 Sundisk Corporation Segmented column memory array
US5357463A (en) * 1992-11-17 1994-10-18 Micron Semiconductor, Inc. Method for reverse programming of a flash EEPROM

Also Published As

Publication number Publication date
EP0830684B1 (de) 2004-08-25
DE69533429D1 (de) 2004-09-30
EP0830684A4 (de) 1999-09-29
US5751637A (en) 1998-05-12
JPH11506244A (ja) 1999-06-02
JP3807744B2 (ja) 2006-08-09
WO1996041346A1 (en) 1996-12-19
EP0830684A1 (de) 1998-03-25

Similar Documents

Publication Publication Date Title
DE69533429T2 (de) Automatischer progammier-algorithmus für flash-speicher im seitenmodus mit variabler programmierimpulshöhe und -breite
DE69936028T2 (de) Nichtflüchtiger Halbleiterspeicher
DE3900798C2 (de) Verfahren zum Programmieren eines elektrisch löschbaren und programmierbaren Nur-Lese-Speichers
DE4205061C2 (de) Nichtflüchtige Halbleiter-Speicheranordnung
DE60121865T2 (de) Nichtflüchtige Halbleiterspeicheranordnung
DE4232025C2 (de) Elektrisch löschbarer und programmierbarer nichtflüchtiger Halbleiterspeicher mit automatischem Schreibprüfungs-Controller
DE4233248C2 (de) Nicht-flüchtige Halbleiterspeichereinrichtung und Verfahren zum blockweisen Löschen von Daten in einer nicht-flüchtigen Halbleiterspeichereinrichtung
DE4207934C2 (de) Nichtflüchtige Halbleiterspeichervorrichtung und Programmierverfahren für eine nichtflüchtige Halbleiterspeichervorrichtung
DE60220590T2 (de) Verfahren zur Reduzierung von Kopplungseffekten zwischen multi-level Speicherelementen eines nicht flüchtigen Speichers
DE60017838T2 (de) Nichtflüchtiger Speicher Typ NAND
DE60127651T2 (de) Bitleitungs-Vorladungs- und -Entladungsschaltung zum Programmieren eines nichtflüchtigen Speichers
DE69030959T2 (de) EEPROM mit Referenzzelle
DE69109495T2 (de) Einzeltransistor-eeprom-speicherzelle.
DE4110371C2 (de) Nichtflüchtige Halbleiterspeichervorrichtung
DE10225398B4 (de) Halbleiterspeichervorrichtung mit Speicherzellenarrays, die zum Durchführen eines wahlfreien Zugriffs in der Lage ist
DE102004033443B4 (de) Flashspeicherbauelement mit Mehrpegelzelle
DE10158849A1 (de) Nichtflüchtiges Speicherbauelement und zugehöriges Datenabtastverfahren
DE102007002248A1 (de) Nichtflüchtiges Halbleiter-Speicherbauelement und Verfahren zum Löschen eines Flash-Speicherbauelements
DE4213731A1 (de) Nichtfluechtiges halbleiterspeicherbauelement und programmierverfahren hierfuer
DE3929816A1 (de) Elektrisch loeschbare und programmierbare halbleiterspeichereinrichtung und verfahren zum loeschen und programmieren dieser halbleiterspeichereinrichtung
DE10026993A1 (de) Flash-Speicherbauelement mit einer neuen Redundanzansteuerschaltung
DE4040492A1 (de) Automatische loeschoptimierschaltung fuer einen elektrisch loesch- und programmierbaren halbleiterspeicher und automatisches loeschoptimierungsverfahren
DE69731255T2 (de) Verfahren zum Löschen eines nichtflüchtigen Speichers
DE102005015806A1 (de) Verfahren zum Lesen einer Flash-Speichervorrichtung
DE69821039T2 (de) Halbleiterspeicheranordnung mit der Fähigkeit, genaue und gemeinsame Löschprüfung von allen Speicherzellen auszuführen

Legal Events

Date Code Title Description
8364 No opposition during term of opposition