DE69814948T2 - Schwachstromprogrammieren von schwebenden Gatterspeichern - Google Patents

Schwachstromprogrammieren von schwebenden Gatterspeichern Download PDF

Info

Publication number
DE69814948T2
DE69814948T2 DE69814948T DE69814948T DE69814948T2 DE 69814948 T2 DE69814948 T2 DE 69814948T2 DE 69814948 T DE69814948 T DE 69814948T DE 69814948 T DE69814948 T DE 69814948T DE 69814948 T2 DE69814948 T2 DE 69814948T2
Authority
DE
Germany
Prior art keywords
programming
memory
word
byte
channel transistor
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
DE69814948T
Other languages
English (en)
Other versions
DE69814948D1 (de
Inventor
Han-Sung Chen
Tzeng-Huei Shiau
Yu-Shen Lin
Chung-Cheng Houli Tsai
Jin-Lien Dah-Shi Town Lin
Ray-Lin Wan
Yuan-Chang Liu
Chun Hsiung Hung
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
Application granted granted Critical
Publication of DE69814948D1 publication Critical patent/DE69814948D1/de
Publication of DE69814948T2 publication Critical patent/DE69814948T2/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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
    • G11C16/3486Circuits or methods to prevent overprogramming of nonvolatile memory cells, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
    • 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
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3454Arrangements for verifying correct programming or for detecting overprogrammed cells
    • G11C16/3459Circuits or methods to verify correct programming of nonvolatile memory cells
    • 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/34Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
    • G11C16/3436Arrangements for verifying correct programming or erasure
    • G11C16/3468Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing

Landscapes

  • Read Only Memory (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)

Description

  • HINTERGRUND
  • Gebiet der Erfindung
  • Die vorliegende Erfindung bezieht sich auf integrierte Schaltkreis-Speichereinrichtungen, die auf der Technologie von Transistoren mit erdfreiem Gate beruhen, und insbesondere auf das Reduzieren der Anforderungen sowohl an den Programmierstrom als auch an die Bitleitungs- und Wortleitungs-Beanspruchung während des Programmierens von Speicherarrays mit erdfreiem Gate.
  • Verwandter Stand der Technik
  • Flash-Speicher sind eine wachsende Klasse von nicht-flüchtigen integrierten Speicherschaltkreisen, die auf Transistoren mit erdfreien Gates basieren. Die Speicherzellen in einer Flash-Einrichtung werden gebildet, indem sogenannte Transistoren mit erdfreiem Gate verwendet werden, in denen die Daten in einer Zelle gespeichert werden durch Laden oder Entladen des erdfreien Gates. Das erdfreie Gate ist ein leitfähiges Material, typischerweise Polysilicium, das von dem Kanal des Transistors durch eine dünne Schicht von Oxid oder einem anderen isolierenden Material isoliert ist und das von dem Steuergate des Transistors durch eine zweite Schicht des isolierenden Materials isoliert ist.
  • Um Daten in einer Speicherzelle mit erdfreiem Gate zu speichern, wird das erdfreie Gate geladen oder entladen, wobei ein Fowler-Nordheim-Tunnelmechanismus verwendet wird, oder ein Injektionsmechanismus für heiße Elektronen. Der Fowler-Nordheim-Tunnelmechanismus wird ausgeführt durch das Aufbauen einer großen positiven (oder negativen) Spannung zwischen dem Gate und der Source oder der Drain der Einrichtung. Dies veranlaßt Elektronen, in (oder aus) dem erdfreien Gate durch den dünnen Isolator injiziert zu werden. Der Injektionsmechanismus für heiße Elektronen basiert auf einem Lawinenprozeß. Eine Injektion von heißen Elektronen wird induziert durch Anlegen von Potentialen, um in dem Kanal der Zelle hochenergetische Elektronen zu induzieren, die über den dünnen Isolator in das erdfreie Gate injiziert werden. Um eine Injektion von heißen Elektronen zu induzieren, wird ein Potential über die Source und die Drain der Einrichtung angelegt zusammen mit einem positiven Potential auf dem Steuergate. Das positive Potential auf dem Steuergate führt zu der Tendenz, daß Elektronen von dem Strom in dem Kanal der Einrichtung in das erdfreie Gate gezogen werden. Die Vorgänge des Aufladens und Entladens des erdfreien Gates sind über ein großes Array von Zellen schwer zu steuern. Daher werden einige der Zellen schneller programmiert als andere in der gleichen Einrichtung. In einem gegebenen Programmiervorgang werden nicht alle die Zellen, die Gegenstand des Vorgangs sind, mit dem gleichen Betrag an in dem erdfreien Gate gespeicherter Ladung zur Ruhe kommen. Da Chiphersteller anfangen, Arrays von Speicherzellen mit erdfreiem Gate zu konstruieren, die mit Nicht-Programmier-Versorgungsspannungen von 3 V oder weniger operieren, wird es kritisch, daß alle Zellen mit erdfreiem Gate in etwa den gleichen Betrag von Ladung speichern, so daß die Arrays in einem schmaleren Band von Lesestrom-Schwellen operieren können.
  • Programmierverifikationssequenzen wurden entwickelt, um effizient sicherzustellen, daß der Speicher richtig programmiert ist. Die Programmierverifikationsoperation basiert auf dem Vergleichen der in dem Speicherarray mit erdfreiem Gate gespeicherten Daten mit den beabsichtigten Daten. Dies wird typischerweise auf einer Wort-für-Wort-Basis durchgeführt. Wenn ein Fehler in der Verifikationssequenz erfaßt wird, dann wird die Programmieroperation erneut versucht. In Einrichtungen aus dem Stand der Technik werden erneute Programmversuche typischerweise Wort für Wort ausgeführt. Demnach sind erfolgreich programmierte Bits in einem Wort mit nur einem fehlerhaften Bit wiederholt Gegenstand des Programmierzyklus. Dies kann zu Überprogrammierung und zu einem Versagen der Zelle führen.
  • Eine Lösung dieses Problems ist die Verwendung sogenannter Seitenmoduseinrichtungen. In Seitenmoduseinrichtungen ist ein Seitenpuffer mit dem Speicherarray verbunden. Dieser Puffer weist einen Ein-Bit-Signalspeicher für jede Bitleitung in dem Speicherarray auf. Um das Array zu programmieren, wird der Speicherpuffer zuerst mit den zu programmierenden Daten durch Transferieren der Daten mit je einem Byte gleichzeitig (oder einem Wort gleichzeitig) in den Seitenpuffer geladen. Die gesamte Seite wird dann parallel in das Array programmiert, wobei der Inhalt der Bit-Signalspeicher verwendet wird. Die Verifikationsprozedur löscht automatisch alle die Bits in dem Seitenspeicher, die erfolgreich in das Array programmiert wurden. Der Seitenpuffer wird dann mit jeweils einem Byte (oder jeweils einem Wort) gelesen, um zu bestätigen, daß alle Bits gelöscht wurden, wodurch eine erfolgreiche Programmieroperation angezeigt wird. Zum Beispiel siehe Tanaka et al., "High-Speed Programming and Program-Verify Methods Suitable for Low-Voltage Flash Memories", Symposium on VLSI Circuits, Digest of Technical Papers, 1994, S. 64–62.
  • Ein anderes Problem beim Programmieren von Arrays mit erdfreiem Gate ist, eine ausreichende Quelle von Programmierstrom bereitzustellen. Wenn eine große Anzahl von Zellen mit erdfreiem Gate gleichzeitig programmiert wird, wird eine große Menge an Strom benötigt. Zum Beispiel, wenn alle Speicherzellen mit erdfreiem Gate in einem 16-Bit-Wort gleichzeitig programmiert werden, und jede Zelle 250 μA Strom während des Programmierens benötigt, benötigt das 16-Bit-Wort 4 Milliampère an Programmierstrom. Dies ist kein Problem, wenn eine externe Stromversorgung verwendet wird, um einen Programmierstrom zu liefern. Wenn jedoch ein On-Chip-Pumpschaltkreis verwendet wird, um den Programmierstrom zu liefern, muß der On-Chip-Pumpschaltkreis groß genug sein, um diese Anforderung zu erfüllen, und er wird folglich einen großen Betrag der Siliciumfläche in Anspruch nehmen.
  • Eine frühere Erfindung erlaubt es, daß individuelle Bytes eines Wortes eines Speichers mit erdfreiem Gate individuell programmiert werden. Siehe US-Patent Nr. 5,317,535 mit dem Titel GATE/SOURCE DISTURB PROTECTION FOR 16-BIT EEPROM MEMORY ARRAYS von Talreja et al. Jedoch erreicht diese Erfindung nicht das Ziel der Reduzierung des Programmierstroms. Wenn auch diese Erfindung es Bytes erlaubt, individuell programmiert zu werden, erlaubt es die Erfindung auch einem ganzen Wort, gleichzeitig programmiert zu werden, wobei ein großer Betrag an Pro grammierstrom benötigt wird und folglich eine große On-Chip-Ladungspumpe benötigt wird. Darüber hinaus bricht jene Erfindung ein Wort nicht automatisch in Bytes zum Programmieren auf; explizite Byteprogrammierbefehle müssen verwendet werden, um jeweils ein Byte zu programmieren. Letztlich verwendet jene Erfindung mehrere Wortleitungsdecoder (einen für jedes Byte), die einen großen Betrag an On-Chip-Fläche verbrauchen.
  • WO-A-96/21227 bezieht sich auf eine Programmierverifikationsprozedur für Flash-Speicher mit Seitenmodus. Ein Seitenspeicher, der mit der Mehrzahl von Bitleitungen des Speichers verbunden ist, liefert Eingangsdaten an eine Mehrzahl von Spalten von Flash-EEPROM-Zellen. Schreibsteuerschaltkreise liefern Programmierspannungen zum Programmieren von Eingabedaten an die Flash-EEPROM-Zellen als Antwort auf die Eingabedaten, die in dem Dateneingangspuffer gespeichert sind. Verifikationsschaltkreise verifizieren automatisch ein Programmieren der Seite durch Zurücksetzen von Bits in dem Seitenpuffer für jede Zelle, die (die Überprüfung) besteht.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Die vorliegende Erfindung liefert ein Verfahren entsprechend Anspruch 13 und die Vorrichtung entsprechend Anspruch 1 zum Programmieren von Arrays von Zellen mit erdfreiem Gate, die die Anforderungen an den Programmierstrom reduzieren und zusätzlich die Wortleitungs- und Bitleitungsspannung während der Neuprogrammieroperationen reduziert. Die Erfindung arbeitet durch automatisches Aufteilen eines zu programmierenden Wortes in eine Mehrzahl von kleineren Teilworten und Programmieren jeweils eines dieser Teilworte.
  • Besondere und bevorzugte Aspekte der vorliegenden Erfindung sind in den begleitenden abhängigen Ansprüchen dargelegt.
  • Insbesondere arbeiten bevorzugte Ausführungsformen der Erfindung durch: (1) Auswählen eines adressierten Wortes des Speichers mit einem Adressiermechanismus; (2) automatisches Programmieren des adressierten Wortes des Speichers mit jeweils einem Teilwort; (3) Verifizieren des Programmierens eines jeden Teilwortes in dem adressierten Wort des Speichers, wobei die Verifizierungsoperation ein Verifizieren der Programmierung eines jeden individuellen Bits in jedem Teilwort umfaßt; und (4) automatisches Neuprogrammieren nur solcher Teilworte, bei denen das Programmieren innerhalb des adressierten Wortes fehlgeschlagen ist, wobei dieses Neuprogrammieren mit jeweils einem Teilwort gleichzeitig stattfindet und wobei nur solche Bits, bei denen die Programmierung fehlgeschlagen ist, neu programmiert werden.
  • Die Technik der bevorzugten Ausführungsformen der Erfindung hat eine Anzahl von Vorteilen. Zuerst wird der Programmierstrom reduziert, da nur ein Teilwort des Speichers gleichzeitig programmiert wird. Zweitens erzeugt die Erfindung weniger Wortleitungsspannung, da Teilworte, die erfolgreich programmiert wurden, nicht neu programmiert werden. Letztlich wird die Bitleitungsspannung reduziert, da nur solche Bits, bei denen ein Programmieren fehlschlägt, neu programmiert werden, und die Bits, die erfolgreich programmiert wurden, nicht neu programmiert werden.
  • Selektives Neuprogrammieren von individuellen Bits wird vorzugsweise erreicht durch Bereitstellen von speziellen Spaltentreibern für jede Bitleitung auf dem Datenbus. Diese speziellen Spaltentreiber können sowohl durch Teilwort- als auch Bit-Einschaltsignale eingeschaltet werden, wobei sie es individuellen Teilworten und Bits erlauben, innerhalb individueller Teilworte zum Programmieren und Neuprogrammieren ausgewählt zu werden. Eine Ausführungsform der vorliegenden Erfindung umfaßt auch Bitprogrammieranzeigen, je eine für jedes Bit in dem Datenbus, die anzeigen, ob ein bestimmtes Bit erfolgreich programmiert wurde.
  • In bevorzugten Ausführungsformen der Erfindung wird eine separate Zweistufen-Spannungsquelle verwendet für jedes Teilwort, um Wortleitungstreiber innerhalb jedes Teilwortes mit Leistung zu versorgen. Diese Zweistufen-Spannungsquellen liefern Programmierspannungen an ausgewählte Teilworte und Nicht-Programmierspannungen an andere Teilworte.
  • Zusätzlich wird in bevorzugten Ausführungsformen ein Betriebszustand mit externem Programmierleistungsnebenschluß bereitgestellt, der das Programmieren von jeweils einem Teilwort ausschaltet, wenn eine Quelle für Programmierleistung außerhalb des Chips verfügbar ist. Auf diese Weise können schnellere Programmieroperationen für jeweils ein Wort ausgeführt werden, wenn eine Quelle für Programmierstrom außerhalb des Chips verfügbar ist. Wenn nicht, kann eine Programmierung von jeweils einem Teilwort verwendet werden, um den Programmierstrom zu reduzieren.
  • Die bevorzugte Ausführungsform der vorliegenden Erfindung zeigt eine Anzahl von Vorteilen. (1) Sie erlaubt eine Reduzierung der Menge an Siliciumfläche, die von einem Array von Speicherzellen mit erdfreiem Gate in Anspruch genommen wird, weil ein kleinerer On-Chip-Pumpschaltkreis verwendet werden kann, um den Programmierstrom zu erzeugen. (2) Anders als Systeme aus dem Stand der Technik, die Programmierung von jeweils einem Byte liefern, durch Verwenden einer Mehrzahl von Reihendecodern, verwendet die bevorzugte Ausführungsform der vorliegenden Erfindung einen einzelnen Reihendecoder, der mit einer Mehrzahl von zweistufigen Spannungsquellen verbunden ist, um die Wortleitungstreiber anzutreiben. (3) Bitleitungsstörbedingungen sind reduziert durch Neuprogrammieren nur solcher Bits, bei denen eine Programmierung fehlschlägt. (4) Wortleitungsstörbedingungen werden reduziert durch Neuprogrammieren nur solcher Teilworte, bei denen eine Programmierung fehlschlägt. (5) Zuletzt sind, anders als in Systemen mit Seitenmodusprogrammierung, eine große Seitenpufferstruktur und ein enorme Menge an Programmierstrom nicht erforderlich.
  • Zusammenfassend liefert die vorliegende Erfindung ein Programmiersystem für Arrays von Speicherzellen mit erdfreiem Gate, das nur solche Bits neu programmiert, die bei einer Programmierverifikation durchfallen und es belastet nicht die Gates oder die Drains der Zellen, die die Programmierverifikation bestehen. Zusätzlich erlaubt das System der vorliegenden Erfindung zum Programmieren von Arrays mit erdfreiem Gate, die Anforderungen an den Programmierstrom zu reduzieren, wobei es ermöglicht wird, einen kleineren On-Chip-Pumpschaltkreis zu verwenden, um den Programmierstrom zu erzeugen.
  • BESCHREIBUNG DER ZEICHNUNGEN
  • 1 ist ein Blockdiagramm der funktionellen Hauptkomponenten eines Systems zum Programmieren eines Arrays von erdfreien Speicherzellen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 2 ist ein Schaltkreisdiagramm, das gemäß einer Ausführungsform der vorliegenden Erfindung ein Array von Speicherzellen mit erdfreiem Gate zeigt.
  • 3 ist ein Diagramm, das zeigt, wie gemäß einer Ausführungsform der vorliegenden Erfindung Programmeingabestrukturen und Meßverstärker mit den Spaltenleitungen eines Arrays von Speicherzellen mit erdfreiem Gate verbunden sind.
  • 4 ist ein Schaltkreisdiagramm einer Dateneingabestruktur, die gemäß einer Ausführungsform der vorliegenden Erfindung einem einzelnen Bit des Datenbusses entspricht.
  • 5 ist ein Schaltkreisdiagramm für die Low-Byte-Zweistufen-Spannungsquelle 110 aus 1.
  • 6 ist ein Schaltkreisdiagramm der High-Byte-Zweistufen-Spannungsquelle 112 aus 1.
  • 7 ist ein Schaltkreisdiagramm für einen einzelnen Low-Byte-Wortleitungstreiber gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 8 ist ein Schaltkreisdiagramm für einen einzelnen High-Byte-Wortleitungstreiber gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 9 ist ein Flußdiagramm, das die Schritte zeigt, die verwendet werden, um gemäß einer Ausführungsform der vorliegenden Erfindung ein Wort in einem Array von Speicherzellen mit erdfreiem Gate zu programmieren.
  • BESCHREIBUNG EINER BEVORZUGTEN AUSFÜHRUNGSFORM
  • Die folgende Beschreibung wird präsentiert, um einen Fachmann in die Lage zu versetzen, die Erfindung herzustellen und zu verwenden, und sie wird geliefert in dem Zusammenhang einer bestimmten Anwendung und ihren Erfordernissen. Verschiedene Modifikationen an der bevorzugten Ausführungsform sind leicht ersichtlich für solche Fachleute und die generellen Prinzipien, die hierin definiert werden, können auf andere Ausführungsformen und Anwendungen angewandt werden, ohne von dem Geist und Schutzbereich der Erfindung abzuweichen. Daher ist nicht beabsichtigt, daß die vorliegende Erfindung auf die gezeigte Ausführungsform begrenzt ist, sondern sie soll mit dem weitesten Schutzbereich übereinstimmen, der konsistent mit den hierin offenbarten Prinzipien und Eigenschaften ist.
  • 1 ist ein Blockdiagramm der funktionalen Hauptkomponenten eines Systems zum Programmieren eines Arrays von Speicherzellen mit erdfreiem Gate gemäß einer Ausführungsform der vorliegenden Erfindung. In 1 ist das Array von Speicherzellen mit erdfreiem Gate in zwei Teile aufgeteilt: ein Low-Byte-Speicherarray 100 und ein High-Byte-Speicherarray 102, die zusammen ein Zwei-Byte-(oder 16-Bit-)Speicherarray aufweisen bzw. bilden.
  • Das Low-Byte-Speicherarray 100 hat sowohl Reihen- als auch Spalteneingänge. Es akzeptiert Reiheneingaben von den Low-Byte-Wortleitungstreibern 120, die von der Zweistufen-Spannungsquelle 110 angetrieben werden. Es akzeptiert Spalteneingaben von dem Low-Byte-Spaltendecoder 140, der Spalteneingaben von Low-Byte-Programmdateneingabestrukturen 150 auswählt, die selbst wiederum Daten von dem Low-Byte des Dateneingangspuffers 182 akzeptieren.
  • Das High-Byte-Speicherarray 102 hat ebenfalls sowohl Reihen- als auch Spalteneingänge. Das High-Byte-Speicherarray 102 akzeptiert Reiheneingaben von den High-Byte-Wortleitungstreibern 122, die von der High-Byte-Zweistufen-Spannungsquelle 112 angetrieben werden. Das High-Byte-Speicherarray 102 akzeptiert Spalteneingabe von dem High-Byte-Spaltendecoder 142, der Daten von den High-Byte-Programmdateneingabestrukturen 152 akzeptiert, die selbst wiederum Daten von dem High-Byte des Dateneingabepuffers 182 akzeptieren.
  • Das Speicherarray, das in 1 dargestellt ist, akzeptiert eine Anzahl von Programmiereingängen. Der Adreßbus 160 ist ein Eingang, der sich aufspaltet in eine Spaltenadresse und eine Reihenadresse. Die Spaltenadresse gibt sowohl in den Low-Byte-Spaltendecoder 140 als auch in den High-Byte-Spaltendecoder 142 ein. Der Low-Byte-Spaltendecoder 140 verwendet diese Spaltenadresse, um Programmierdaten von den Low-Byte-Programmdateneingangsstrukturen 150 in ausgewählte Bitleitungen des Low-Byte-Speicherarrays 100 zu leiten. Der High-Byte-Spaltendecoder 142 verwendet diese Spaltenadresse, um Daten von den High-Byte-Programmdateneingangsstrukturen 152 in ausgewählte Bitleitungen des High-Byte Speicherarrays 102 zu leiten. Die Reihenadresse gibt in den Reihendecoder 130 ein, der diese Reihenadresse in einen Satz von Einschaltsignalen decodiert, die verwendet werden, um ausgewählte Wortleitungstreiber von sowohl dem Low-Byte-Wortleitungstreiber 120 als auch dem High-Byte-Wortleitungstreiber 122 einzuschalten.
  • Der Datenbus 180 ist auch ein Eingang in das Speicherarray, das in 1 dargestellt ist. Der Datenbus 180 gibt in den Dateneingangspuffer 182 ein, der den Inhalt des Datenbusses 180 zur Eingabe in sowohl das Low-Byte-Speicherarray 100 als auch das High-Byte-Speicherarray 102 speichert. Der Ausgang des Dateneingangsspeichers 182 spaltet in ein Low-Byte und ein High-Byte auf. Das Low-Byte wird in die Low-Byte-Programmdateneingangsstrukturen 152 eingegeben, die in das Low-Byte-Speicherarray 100 eingegeben werden. Das High-Byte wird in die High-Byte-Programmdateneingangsstrukturen 152 eingegeben, die in das High-Byte-Speicherarray 102 eingegeben werden.
  • Zuletzt sind zwei Eingaben in das Speicherarray Einschaltsignale: Low-Byte-Einschaltsignal 170 und High-Byte-Einschaltsignal 172. Diese Einschaltsignale stammen von einer Steuerstruktur für das Speicherarray mit erdfreien Gates, das nicht dargestellt ist. Das Low-Byte-Einschaltsignal 170 wird in die Low-Byte-Zweistufen-Spannungsquelle 110 eingegeben, wo es selektiv die Energie (bzw. den Strom), die von der Low-Byte-Zweistufen-Spannungsquelle 110 herstammt, zwischen einer 12 V-Wortleitungsprogrammierspannung und einer 5 V-Nicht-Programmierspannung schaltet. Das Low-Byte-Einschaltsignal 170 wird auch in die Low-Byte-Programmdateneingabestrukturen 150 eingegeben, wo es Drain-Programmierspannungen einschaltet, die in Spalten des Low-Byte-Speicherarrays 100 durch den Low-Byte-Spaltendecoder 140 eingegeben werden.
  • Das High-Byte-Einschaltsignal 172 wird in die High-Byte-Zweistufen-Spannungsquelle 112 eingegeben und in die High-Byte-Programmdateneingangsstrukturen 152. Das High-Byte-Einschaltsignal 172 schaltet die High-Byte-Zweistufen-Spannungsquelle 112 zwischen einer Wortleitungsprogrammierspannung von 12 V und einer Nicht-Programmierspannung von 5 V. Das High-Byte-Einschaltsignal 172 wird auch in die High-Byte-Programmdateneingangsstrukturen 152 eingegeben, wo es Drain-Programmierspannungen schaltet, die durch den High-Byte-Spaltendecoder 142 in Spalten des High-Byte-Speicherarrays 102 eingegeben werden.
  • 2 stellt eine segmentierbare Arrayarchitektur dar, die eine Drain-Source-Drain-Konfiguration des Flash-EPROM-Schaltkreises verwendet, wie in US-Patent Nr. 5,414,664 mit dem Titel FLASH EPROM WITH BLOCK ARRAY FLAGS FOR OVER-ERASE PROTECTION beschrieben, das nun und zum Zeitpunkt dieser Erfindung dem gleichen Anmelder gehört wie die vorliegende Erfindung.
  • Der Schaltkreis umfaßt eine erste lokale Bitleitung 10 und eine zweite lokale Bitleitung 11. Die ersten und zweiten lokalen Bitleitungen 10 und 11 sind unter Verwendung vergrabener Diffusionsleiter implementiert. Auch ist eine lokale virtuelle Masseleitung 12 implementiert durch vergrabene Diffusion. Eine Mehrzahl von Transistoren mit erdfreiem Gate, die Gates, Drains und Sources aufweisen, sind mit den lokalen Bitleitungen 10 und 11 und mit der virtuellen Masseleitung 12 verbunden. Die Sourcen der Mehrzahl von Transistoren sind mit der lokalen virtuellen Masseleitung 12 verbunden. Die Drains einer ersten Spalte von Transistoren, im allgemeinen mit 13 bezeichnet, sind mit der ersten lokalen Bitleitung 10 verbunden und die Drains einer zweiten Spalte von Transistoren, im allgemeinen 14 bezeichnet, sind mit der zweiten lokalen Bitleitung 11 verbunden. Die Gates der Transistoren mit erdfreiem Gate sind mit den Wortleitungen WLO bis WLN verbunden, wobei jede Wortleitung (z. B. WL1) mit dem Gate eines Transistors (z. B. Transistor 15) in der ersten lokalen Bitleitung 10 und einem Transistor (z. B. Transistor 16) in der zweiten lokalen Bitleitung 11 verbunden ist. Daher können die Transistoren 15 und 16 betrachtet werden als zwei Transistorzellen mit einer gemeinsamen Sourcediffusion.
  • Der Akt des Ladens des erdfreien Gates wird als "Programmierschritt" für die Flash-EPROM-Zellen bezeichnet. Dies wird byteweise erreicht durch Injektion von heißen Elektronen durch Aufbauen einer großen positiven Spannung zwischen dem Gate und der Source, wie z. B. 12 V, und einer positiven Spannung zwischen der Drain und der Source, wie z. B. 6 V.
  • Eine erste globale Bitleitung 17 und eine zweite globale Bitleitung 18 sind mit jedem Drain-Source-Drain-Block verbunden. Die erste globale Bitleitung 17 ist mit der Source des obersten Blockauswahltransistors 19 durch einen Metall-zu-Diffusion-Kontakt 55 verbunden. Gleichfalls ist die zweite globale Bitleitung 18 an die Source des obersten Blockauswahltransistors 21 durch einen Metall-zu-Diffusion-Kontakt 56 verbunden. Die Drains der obersten Blockauswahltransistoren 19, 21 sind mit den ersten und zweiten lokalen Bitleitungen 10 bzw. 11 verbunden. Die Gates der obersten Blockauswahltransistoren 19 und 21 werden von einem obersten Blockauswahlsignal TBSELA auf Leitung 23 gesteuert.
  • Die lokale virtuelle Masseleitung 12 ist mit einem virtuellen Masseanschluß über den Leiter 54A durch den untersten Blockauswahltransistor 65A verbunden. Die Drain des untersten Blockauswahltransistors 65A ist mit der lokalen virtuellen Masseleitung 12 verbunden. Die Source des untersten Blockauswahltransistors 65A ist mit dem Leiter 54A verbunden. Das Gate des untersten Blockauswahltransistors 65A wird von einem unteren Blockauswahlsignal BBSELA über Leitung 26 gesteuert. In dem bevorzugten System ist der Leiter 54A ein vergrabener Diffusionsleiter, der sich zu einem Metall-zu-Diffusion-Kontakt 60A an einer Position, die horizontal verschoben ist, durch das Array erstreckt, und der einen Kontakt zu einem vertikalen metallischen virtuellen Massebus 25 liefert.
  • Die globalen Bitleitungen erstrecken sich vertikal durch das Array zu den entsprechenden Spaltenauswahltransistoren 70 und 71, durch die eine ausgewählte globale Bitleitung mit einem Meßverstärker und einem Programmdatenschaltkreis (nicht gezeigt) verbunden ist. Daher ist die Source des Spaltenauswahltransistors 70 mit der globalen Bitleitung 17 verbunden, das Gate des Spaltenauswahltransistors 70 ist mit dem Spaltendecodiersignal Yn0 verbunden und die Drain des Spaltenauswahltransistors 70 ist mit den Leitern 29 verbunden.
  • Die Blöcke der Flash-EPROM-Zellen, die in 1 gezeigt sind, sind in einer Mehrzahl von Teilarrays konfiguriert, wie in 2 dargestellt. 2 stellt zwei Teilarrays innerhalb eines größeren integrierten Schaltkreises dar. Die Teilarrays sind allgemein entlang der gestrichelten Linie 50 geteilt und umfassen ein Teilarray 51A, das generell über der Linie 50 liegt, und ein Teilarray 51B, das generell unter der Linie 50 liegt. Eine erste Gruppe 52 von Zellen ist spiegelbildlich zu einer zweiten Gruppe 53 von Zellen entlang eines gegebenen Bitleitungspaares (z. B. Bitleitungen 17 und 18) angeordnet. Wenn man das Bitleitungspaar hinaufverfolgt, so sind die Speicherteilarrays umgedreht, so daß sie die virtuellen Masseleiter 54A und 54B (vergrabene Diffusion) und die Metall-zu-Diffusion-Kontakte 55, 56, 57 und 58 gemeinsam verwenden. Die virtuellen Masseleiter 54A und 54B erstrecken sich horizontal über das Array zu einer vertikalen virtuellen Massemetalleitung 25 durch Metall-zu-Diffusion-Kontakte 60A und 60B. Die Teilarrays wiederholen sich auf den gegenüberliegenden Seiten der metallischen virtuellen Masseleitung 25, so daß benachbarte Teilarrays eine metallische virtuelle Masseleitung 25 gemeinsam verwenden. Die metallische virtuelle Masseleitung 25 ist mit Array Masseschaltkreisen und Schaltkreisen zum Löschen der High-Spannungen verbunden. Daher erfordert der Schaltplan des Teilarrays zwei metallische Kontaktanschlüsse pro Spalte von zwei Transistorzellen für die globalen Bitleitungen und einen metallischen Kontaktanschluß pro Teilarray für die metallische virtuelle Masseleitung 25.
  • Darüber hinaus können, wie in 2 gezeigt, zwei oder mehr Teilarrays Wortleitungssignale, wie sie dargestellt sind, aufgrund der zusätzlichen Decodierung, die von den oberen und unteren Blockauswahlsignalen TBSELA, TBSELB, BBSELA und BBSELB geliefert werden, gemeinsam verwenden. In dem bevorzugten System ist jeder Block so konfiguriert, daß er vier Teilarrays in einer Spalte umfaßt, mit einer Zeile in jedem Teilarray, die einen gemeinsamen Wortleitungstreiber mit Reihen in den anderen drei Teilarrays gemeinsam verwenden. Decodieren unter den vier Teilarrays wird ausgeführt, wobei die obersten Blockauswahltransistoren als Antwort auf TBSELA und TBSELB verwendet werden. Jedes Teilarray umfaßt 32 Wortleitungen und 1 K (1.024) Bitleitungen. Daher wird mit vier Teilarrays, 32 Wortleitungen tief und 1 K Bitleitungen breit, ein Block von 128 K Zellen bereitgestellt. Zweiunddreißig Blöcke bilden einen 4-Megabit-Speicher.
  • 3 stellt dar, wie Programmdaten in Strukturen und Meßverstärkern mit Spaltenleitungen eines Arrays von Speicherzellen mit erdfreiem Gate verbunden sind gemäß einer Ausführungsform der vorliegenden Erfindung. Insbesondere stellt 3 die Verbindungen "mit Meßverstärkern und Programmdateneingangsstrukturen" dar, die in der unteren rechten Ecke von 2 spezifiziert sind. Programmdaten0 Eingangsstruktur 300 nimmt das Daten0-Eingangssignal 320 und das Low-Byte-Einschaltsignal 170 auf und erzeugt einen Ausgang, der in Spaltenleitungen des Speicherarrays mit erdfreiem Gate eingegeben wird, die dem Bit 0 des Datenbusses entsprechen. Wenn die Speicherzelle mit erdfreiem Gate, die Bit 0 entspricht, programmiert wird, wird der Ausgang der Speicherzelle mit erdfreiem Gate durch Spaltenleitungen in den Daten0-Meßverstärker 330 geleitet, der das Signal auf seine richtigen hohen oder niedrigen Spannungen verstärkt. Dieses verstärkte Signal wird in einen Daten0-Komparator 340 geleitet, der auch das Daten0-Eingangssignal 320 als eine Eingabe akzeptiert und ein Übereinstimmungs-Daten0-Signal 350 ausgibt. Das Übereinstimmungs-Daten0-Signal 350 zeigt an, daß der Inhalt des erdfreien Gates mit dem DatenO-Eingangssignal 320 übereinstimmt.
  • 3 stellt auch die Programmdateneingangsstruktur und den Meßverstärker für das Daten0-Eingangssignal 321 dar. Die Programmdaten15-Eingangsstruktur 310 nimmt das Daten15-Eingangssignal 321 und das High-Byte-Einschaltsignal 172 auf. Es erzeugt eine Ausgabe, die in die Spaltenleitungen des Speicherarrays mit erdfreiem Gate eingegeben wird, entsprechend dem Bit 15 des Datenbusses 182. Sobald die richtige Zelle mit erdfreiem Gate programmiert ist, wird die Programmierung verifiziert durch Ausgeben des Zelleninhalts in den Daten15-Meßverstärker 332. Dieser verstärkt das Signal auf seine richtige hohe oder niedrige Spannung. Dieses verstärkte Signal wird in den Daten15-Komparator 342 geleitet, der auch das Daten15-Eingangssignal 321 als eine Eingabe aufnimmt und das Übereinstimmungsdaten15-Signal 352 ausgibt, das anzeigt, ob der Inhalt der Zelle mit erdfreiem Gate mit dem Wert des Bit 15 des Datenbusses 182 übereinstimmt.
  • Die gleiche Struktur wird wiederholt für alle Bits zwischen Bit 0 und Bit 15 des Datenbusses 182. Die Programmdateneingangsstrukturen für die ersten acht Bits, Bit 0 bis Bit 7, nehmen das Einschaltsignal 170 auf. Wohingegen die Programmdateneingangsstrukturen für die letzten acht Bits, Bit 8 bis Bit 15, das High-Byte-Einschaltsignal 172 aufnehmen. Diese Byte-Einschaltsignale 170 und 172 erlauben es, eine Drain-Programmierspannung an nur eines der zwei Bytes gleichzeitig anzulegen, wodurch der Stromverbrauch der Speicherzellen der nicht ausgewählten Bytes reduziert wird.
  • 4 stellt die interne Struktur für die Programmdateneingangsstrukturen dar, die in 3 auftauchen. Jede Programmdateneingangsstruktur hat eine Anzahl von Eingaben. Übereinstimmungsdaten/400 zeigen an, daß das Daten/-Bit innerhalb des Speicherarrays mit erdfreiem Gate richtig programmiert ist. Das Daten/-Zurücksetz-Bitanzeigesignal 402 setzt die Anzeige zurück, die anzeigt, daß die Daten/neu programmiert werden müssen. Das High/Low-Byte-Einschaltsignal 404 ist entweder mit dem Low-Byte-Einschaltsignal 170 oder dem High-Byte-Einschaltsignal 172 verbunden, in Abhängigkeit davon, ob Daten/ in dem High- oder Low-Byte sind oder nicht. Das Daten/-Eingangssignal 406 ist mit dem Dateni-Bit des Datenpuffers 182 verbunden. Zuletzt stammt das Programmierendesignal 408 aus dem Steuerschaltkreis des Arrays (nicht gezeigt) und zeigt an, daß der Programmierprozeß beendet ist.
  • Die NOR-Gatter 420 und 422 sind Eingang-an-Ausgang miteinander verbunden in einer bistabilen Konfiguration, um einen Daten/-Anzeigenspeicher 450 zu bilden, der ein Bit speichert, das anzeigt, ob Daten/ richtig programmiert wurden. Insbesondere verwendet das NOR-Gatter 420 das Übereinstimmungsdaten/-Signal 400 und den Ausgang des NOR-Gatters 422, um eine Ausgabe zu erzeugen, die in eine Eingabe des NOR-Gatters 422 zusammen mit der Zurücksetzdaten/-Marke 402 eingegeben wird. Normalerweise sind sowohl das Übereinstimmungsdaten/-Signal 400 als auch die Zurücksetzdaten/-Marke 402 bei einem niedrigen Wert. Wenn dies der Fall ist, bleibt der Inhalt des Daten/-Markenspeichers 450 unverändert gegenüber seinem vorhergehenden Wert. Wenn das Übereinstimmungsdaten/-Signal 400 einen hohen Wert hervorbringt, gibt das NOR-Gatter 420 einen niedrigen Wert aus, der in einen Eingang des NOR-Gatters 422 eingegeben wird. Nimmt man an, daß das Zurücksetzdaten/-Anzeigensignal 402 bei einem niedrigen Wert verbleibt, so ist die Ausgabe des NOR-Gatters 422 hoch. Wenn das Übereinstimmungdaten/-Signal 400 nachfolgend wieder niedrig wird, verbleibt die hohe Ausgabe des NOR-Gatters 422 hoch, bis die Zurücksetzdaten/-Anzeige 402 bestätigt wird, um den Datenmarkenspeicher 450 zurückzusetzen.
  • Das Zurücksetzdaten/-Anzeigensignal 402 wird verwendet, um den Daten/-Anzeigenspeicher 450 zurückzusetzen. Wenn die Zurücksetzdaten/-Anzeige 402 einen hohen Wert hervorbringt, zwingt sie das NOR-Gatter 422, einen niedrigen Wert auszugeben. Wenn das Übereinstimmungsdaten/-Signal 400 niedrig ist, wird die Ausgabe des NOR-Gatters 420 hoch. Dies koppelt in einen Eingang des NOR-Gatters 422 zurück, aber es ändert nicht die Ausgabe des NOR-Gatters 422 von ihrem neu hervorgebrachten niedrigen Wert. Der Datenmarkenspeicher 450 wird dadurch zurückgesetzt.
  • Das NOR-Gatter 424 nimmt Eingaben von: der Ausgabe des NOR-Gatters 422, dem High/Low-Byte-Einschaltsignal 404 und dem Daten/-Eingangssignal 406. Wenn jede dieser Eingaben hoch ist, wird die Ausgabe des NOR-Gatters 424 niedrig. Die Ausgabe des NOR-Gatters 424 gibt über den Inverter 426 ein in: die Gateeingabe des n-Kanal-Transistors 440, die Eingabe des Inverters 428, und die Gateeingabe in den n-Kanal-Transistor 444. Die Ausgabe des Inverters 428 gibt in die Gateeingabe des n-Kanal-Transistors 442 ein. Die Drain des n-Kanal-Transistors 440 ist mit Erde bzw. Masse verbunden und die Source des n-Kanal-Transistors 440 ist sowohl mit der Drain des p-Kanal-Transistors 430 verbunden als auch mit dem Gate des p-Kanal-Transistors 432. Die Drain des n-Kanal-Transistors 442 ist mit Masse (Erde) verbunden und die Source des n-Kanal-Transistors 442 ist mit: dem Gate des p-Kanal-Transistors 430, der Drain des p-Kanal-Transistors 432 und dem Gate des p-Kanal-Transistors 430 verbunden. Sowohl die Source des p-Kanal-Transistors 430 als auch das Substrat des p-Kanal-Transistors 430 sind mit VPP verbunden, der ein High-Programmierspannungsniveau ist. Gleichfalls sind sowohl die Source des p-Kanal-Transistors 432 als auch das Substrat des p-Kanal-Transistors 432 mit VPP verbunden. Die Source des p-Kanal-Transistors 434 ist mit der Programmreferenzspannung 410 verbunden und das Substrat des p-Kanal-Transistors 434 ist mit VPP verbunden. Die Drain des p-Kanal-Transistors 434 ist mit der Source des n-Kanal-Transistors 444 und dem Gate des n-Kanal-Transistors 448 verbunden. Die Drain des n-Kanal-Transistors 444 ist mit Masse verbunden. Die Source des n-Kanal-Transistors 448 ist mit VPP verbunden und die Drain des n-Kanal-Transistors 448 ist sowohl mit der Source des n-Kanal-Transistors 446 als auch mit der Ausgabe an Bit/Spalten 412 verbunden. Zuletzt ist das Gate des n-Kanal-Transistors 446 mit dem Programmendesignal 408 verbunden und die Drain des n-Kanal-Transistors 446 ist mit Masse verbunden.
  • Der oben beschriebene Schaltkreis arbeitet wie folgt. Wenn die Eingabe des Dateni-Anzeigenspeichers 450 einem hohen Wert zugeordnet ist oder das High/Low-Byte-Einschaltsignal 404 einem hohen Wert zugeordnet ist, wird die Ausgabe des NOR-Gatters 424 niedrig, was den Ausgang des Inverters 426 veranlaßt, auf High zu gehen. Dieser High-Wert wird in das Gate des n-Kanal-Transistors 440 eingegeben, wobei er die Source des n-Kanal-Transistors 440 veranlaßt, sich mit Masse zu verbinden. Der High-Spannungsausgang des Inverters 426 wird durch den Inverter 428 eingegeben, um eine Low-Eingabe in das Gate des n-Kanal-Transistors 442 zu treiben, wodurch die Source des n-Kanal-Transistors 442 von der Massespannung an der Drain des n-Kanal-Transistors 442 entkoppelt wird. Die Low-Spannung bei der Source des n-Kanal-Transistors 440 wird in den Gateeingang des p-Kanal-Transistors 432 eingegeben, wodurch ein leitender Pfad zwischen VPP und der Drain des p-Kanal-Transistors 432 gebildet wird, der mit dem Gate des p-Kanal-Transistors 434 verbindet. Dies treibt die High-Spannung in das Gate des p-Kanal-Transistors 434, wobei die Drain des p-Kanal-Transistors 434 veranlaßt wird, sich von der Programmreferenzspannung 410 zu entkoppeln, die mit der Source des p-Kanal-Transistors 434 verbunden ist.
  • Der High-Spannungsausgang des Inverters 426 wird auch in den Gateeingang des n-Kanal-Transistors 444 eingegeben, wobei ein leitfähiger Pfad zwischen der Source des n-Kanal-Transistors 444 und der Drain des n-Kanal-Transistors 444 verursacht wird, der auf Masse gezogen wird. Dieser Massewert wird in den Gateeingang des n-Kanal-Transistors 448 eingegeben, wobei die Drain des n-Kanal-Transistors 448 veranlaßt wird, sich von VPP zu entkoppeln. Nimmt man an, daß das Programmierendesignal 408 auf einen Low-Wert gesetzt ist, so ist das Gate des n-Kanal-Transistors 446 auch ein Low-Wert. Dies entkoppelt die Source des n-Kanal-Transistors 446 von der Drain des n-Kanal-Transistors 446, der auf Masse gezogen ist. Da die Gateeingänge zu beiden n-Kanal-Transistoren 446 und 448 auf eine Low-Spannung gesetzt sind, ist der Ausgang zu Bit/Spalten 412 entkoppelt von sowohl VPP als auch von Masse. In der Konsequenz nehmen die Ausgangzu-Bit/Spalten 412 eine erdfreie Spannung an.
  • Das Daten/-Eingangssignal 406 beeinflußt den Schaltkreis wie folgt. Wenn der Ausgang des Dateni-Anzeigenspeichers 450 und das High/Low-Byte-Einschaltsignal 404 beide einen Low-Wert präsentieren, steuert das Daten/-Eingangssignal 406 die Ausgang-zu-Bit/Spalten 412. Wenn das Dateni-Eingangssignal 406 eine High-Spannung ist, nimmt der Ausgang des Inverters 424 eine Low-Spannung an, die verursacht, daß die Ausgang-zu-Bit/Spalten 412 erdfrei sind auf die gleiche Wei se wie die bestätigenden High/Low-Byte-Einschaltsignale 404 oder der bestätigende Eingang von dem Daten/-Anzeigenspeicher 450 die Ausgang-zu-Bit/Spalten 412 verursacht, erdfrei zu werden.
  • Wenn das Daten/-Eingangssignal 406 einen Low-Wert annimmt, so nimmt der Ausgang des NOR-Gatters 424 einen High-Wert an, wobei der Ausgang des Inverters 426 veranlaßt wird, auf Low zu gehen. Dieser Low-Wert wird in den Gateeingang des n-Kanal-Transistors 442 eingegeben und durch den Inverter 428, um eine High-Spannung in den Gateeingang des n-Kanal-Transistors 442 zu treiben. Dies erzeugt einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 442 und der Drain des n-Kanal-Transistors 442, der auf Masse gezogen ist. Dieser Massewert wird in den Gateeingang des p-Kanal-Transistors 434 eingegeben, wobei die Drain des p-Kanal-Transistors 434 veranlaßt wird, sich mit der Programmreferenzspannung 410 an der Source des p-Kanal-Transistors 434 zu verbinden. Der Low-Ausgang des Inverters 426 wird auch in den Gateeingang des n-Kanal-Transistors 444 eingegeben, wobei die Source des n-Kanal-Transistors 444 veranlaßt wird, sich von der Drain des n-Kanal-Transistors 444 zu entkoppeln, die mit Masse verbunden ist. Die High-Spannung von der Drain des p-Kanal-Transistors 434 ist mit dem Gateeingang des n-Kanal-Transistors 448 verbunden, wobei die Ausgang-zu-Bit/Spalten 412 veranlaßt werden, sich mit der Programm-Drainspannung zu verbinden. Eine Programmierspannung wird dann durch die Ausgangzu-Bit/Spalten 412 in eine ausgewählte Bitleitung des Arrays mit erdfreien Gates fließen.
  • Zuletzt nimmt, wann immer das Programmende-Signal 408 einen High-Wert vorbringt, der Gateeingang des n-Kanal-Transistors 446 einen High-Wert an, wobei die Source des n-Kanal-Transistors 446 veranlaßt wird, sich mit der Drain des n-Kanal-Transistors 446 zu verbinden, die mit Masse verbunden ist. Dies veranlaßt die Ausgang-zu-Bit/Spalten 412, einen Massewert anzunehmen, wobei effektiv die Programmierspannung auf den Bitleitungen des Arrays mit erdfreien Gates abgeschaltet wird.
  • 5 ist ein Schaltkreisdiagramm, das die interne Struktur der Low-Byte-Zweistufen-Spannungsquelle 110 darstellt. Dieser Schaltkreis nimmt einen einzelnen Eingang auf, das Low-Byte-Einschaltsignal 170, und erzeugt einen Low-Byte-Zweistufen-Spannungsausgang 500. Das Low-Byte-Einschaltsignal 170 wird in den Gateeingang des n-Kanal-Transistors 530 eingegeben und durch den Inverter 510 in den Gateeingang des n-Kanal-Transistors 532. Der Ausgang des Inverters 510 wird auch durch den Inverter 512 in den Gateeingang des n-Kanal-Transistors 534 und den Gateeingang des p-Kanal-Transistors 526 eingegeben. Die Drain des n-Kanal-Transistors 530 ist mit Masse verbunden und die Source des n-Kanal-Transistors 530 ist sowohl mit dem Gateeingang des p-Kanal-Transistors 522 als auch mit der Drain des p-Kanal-Transistors 520 verbunden. Die Drain des n-Kanal-Transistors 532 ist mit Masse verbunden und die Source des n-Kanal-Transistors 532 ist sowohl mit dem Gate des p-Kanal-Transistors 520 als auch mit der Drain des p-Kanal-Transistors 522 verbunden. Die Source des n-Kanal-Transistors 532 ist auch mit dem Gateeingang des p-Kanal-Transistors 524 verbunden. Sowohl die Source des p-Kanal-Transistors 520 als auch das Substrat des p-Kanal-Transistors 520 sind mit VPP verbunden. Sowohl die Source des p-Kanal-Transistors 522 als auch das Substrat des p-Kanal-Transistors 522 sind auch mit VPP verbunden. Sowohl die Source des p-Kanal-Transistors 524 als auch das Substrat des p-Kanal-Transistors 524 sind mit VPP verbunden. Die Drain des p-Kanal-Transistors 524 ist verbunden mit: der Source des n-Kanal-Transistors 534, der Source des p-Kanal-Transistors 526 und dem Gateeingang des p-Kanal-Transistors 528. Die Drain des n-Kanal-Transistors 534 ist mit Masse verbunden. Die Drain und das Substrat des p-Kanal-Transistors 526 sind beide mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden. Der Low-Byte-Zweistufen-Spannungsausgang 500 ist auch mit dem Substrat des p-Kanal-Transistors 528 und der Source des p-Kanal-Transistors 528 verbunden. Zuletzt ist die Drain des p-Kanal-Transistors 528 mit VDD (welche typischerweise 5 V ist) verbunden.
  • Die Low-Byte-Zweistufen-Spannungsquelle 110 arbeitet wie folgt. Wenn das Low-Byte-Einschaltsignal 170 einen Low-Wert vorbringt, veranlaßt es den Gateeingang zu dem n-Kanal-Transistor 530, einen Low-Wert anzunehmen. Dieser Low-Wert wird auch durch den Inverter 510 zum Treiben einer High-Spannung in den Eingang des n-Kanal-Transistors 532 eingegeben. Dies erzeugt einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 532 und der Drain des n-Kanal-Transistors 532, die mit Masse verbunden ist. Die Source des n-Kanal-Transistors 532 nimmt dabei eine Low-Spannung an, die in den Gateeingang des p-Kanal-Transistors 542 eingegeben wird, wobei ein leitender Pfad zwischen der Source des p-Kanal-Transistors 520, die mit VPP verbunden ist, und der Drain des p-Kanal-Transistors 524 verursacht wird. Die High-Spannung auf der Drain des p-Kanal-Transistors 524 ist mit dem Gateeingang des p-Kanal-Transistors 528 verbunden, wobei die Source des p-Kanal-Transistors 528, die mit dem Low-Byte-Zweistufen-Spannungsausgang 512 verbunden ist, von VDD an der Drain des p-Kanal-Transistors 528 isoliert wird. Der High-Spannungsausgang des Inverters 510 wird dann durch den Inverter 512 eingegeben, um eine Low-Spannung an dem Eingang zu dem n-Kanal-Transistor 534 und dem Gateeingang zu dem p-Kanal-Transistor 526 zu erzeugen. Dies isoliert die Source von der Drain des n-Kanal-Transistors 534 und erzeugt einen leitenden Pfad zwischen der Source des p-Kanal-Transistors 526, die mit VPP verbunden ist, und der Drain des p-Kanal-Transistors 526, die mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden ist. Daher ist der Low-Byte-Zweistufen-Spannungsausgang 510 mit VPP verbunden, wobei die Low-Byte-Wortleitungstreiber 120 veranlaßt werden, Programmierspannungen in das Low-Byte-Speicherarray 100 durchzusetzen.
  • Wenn das Low-Byte-Einschaltsignal 170 einem High-Wert zugeordnet ist, nimmt der Gateeingang zu dem n-Kanal-Transistor 530 einen High-Wert an. Dieser High-Wert wird auch durch den Inverter 510 eingegeben, um einen Low-Wert in dem Gateeingang zu n-Kanal-Transistor 532 zu treiben. Der High-Wert auf dem Gateeingang zu n-Kanal-Transistor 530 erzeugt einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 530 und der Drain des n-Kanal-Transistors 530, die mit Masse verbunden ist. Die Source des n-Kanal-Transistors 530 ist auch mit dem Gateeingang zu p-Kanal-Transistor 522 verbunden, wobei der Gateeingang zu p-Kanal-Transistor 522 veranlaßt wird, einen Low-Wert anzunehmen. Dieser Low-Wert erzeugt einen leitfähigen Pfad zwischen der Source des p-Kanal-Transistors 522, der mit VPP verbunden ist, und der Drain des p-Kanal-Transistors 522, die mit dem Gateeingang des p-Kanal-Transistors 524 verbunden ist. Dies veranlaßt den Gateeingang zu p-Kanal-Transistor 524, einen High-Wert anzunehmen, wobei die Drain des p-Kanal-Transistors 524 von VPP isoliert wird. Der Low-Ausgang des Inverters 510 wird auch durch den Inverter 512 eingegeben, um eine High-Spannung in die Gateeingänge des n-Kanal-Transistors 534 und des p-Kanal-Transistors 526 zu treiben. Dies verursacht einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 534 und der Drain des n-Kanal-Transistors 534, die mit Masse verbunden ist. Diese Massespannung wird in den Gateeingang des p-Kanal-Transistors 528 eingegeben, wobei ein leitender Pfad zwischen VDD bei der Drain des p-Kanal-Transistors 528 und dem Low-Byte-Zweistufen-Spannungsausgang 500 bei der Source des p-Kanal-Transistors 528 erzeugt wird. VDD vom Low-Byte-Zweistufen-Spannungsausgang 500 wird daher in die Low-Byte-Wortleitungstreiber 520 eingegeben, was bewirkt, daß eine Nicht-Programmierspannung an die Wortleitungen des Low-Byte-Speicherarrays 100 angelegt wird.
  • 6 ist ein Schaltkreisdiagramm, das die interne Struktur der High-Byte-Zweistufen-Spannungsquelle darstellt. Dieser Schaltkreis ist identisch mit dem Schaltkreis aus 5 außer der Tatsache, daß er einen Eingangswert von dem High-Byte-Einschaltsignal 172 nimmt anstelle des Low-Byte-Einschaltsignals 170. Der in 6 dargestellte Schaltkreis arbeitet in exakt der gleichen Weise wie der Schaltkreis in 5. Wenn das High-Byte-Einschaltsignal 172 einen Low-Wert anzeigt, treibt der High-Byte-Zweistufen-Spannungsausgang 600 eine Spannung des VPP durch die High-Byte-Wortleitungstreiber 122 in die Wortleitungen des High-Byte-Speicherarrays 102. Dies verursacht, daß eine Programmierspannung an die Wortleitungen des High-Byte-Speicherarrays 102 angelegt wird. Wenn das High-Byte-Einschaltsignal 172 einen High-Wert erklärt, verursacht dies, daß eine Spannung des VDD durch den High-Byte-Zweistufen-Spannungsausgang 600 getrieben wird. Dies veranlaßt die High-Byte-Wortleitungstreiber 122, Nicht-Programmier-VDD-Spannungen in den Wortleitungen des High-Byte-Speicherarrays 102 vorzubringen bzw. anzulegen.
  • 7 ist ein Schaltkreisdiagramm der internen Struktur einer der Low-Byte-Wortleitungstreiber 120. Der Low-Byte-Wortleitungstreiber, der in 7 abgebildet ist, nimmt die Adreßdecodereingabe 700 auf und gibt die Low-Byte-Wortleitung 710 aus. Einer dieser Wortleitungsschaltkreise ist mit jeder Wortleitung in dem Low-Byte-Speicherarray 100 verbunden. Das Adreßdecodiereingangssignal 700 läuft durch den Inverter 720 in den Gateeingang des n-Kanal-Transistors 740. Der Ausgang des Inverters 720 läuft auch durch den Inverter 722 in den Gateeingang des n-Kanal-Transistors 742. Die Drains von beiden, dem n-Kanal-Transistor 740 und dem n-Kanal-Transistor 742, sind mit Masse verbunden. Die Source des n-Kanal-Transistors 740 ist mit der Drain des p-Kanal-Transistors 730 und dem Gateeingang des p-Kanal-Transistors 732 verbunden. Die Source des n-Kanal-Transistors 742 ist mit der Drain des p-Kanal-Transistors 732 und dem Gateeingang des p-Kanal-Transistors 730 verbunden. Sie ist auch mit dem Ausgang des Schaltkreises verbunden, der die Low-Byte-Wortleitung 710 ist. Die Source und das Substrat des p-Kanal-Transistors 730 sind mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden. Gleichfalls sind auch die Source und das Substrat des p-Kanal-Transistors 732 mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden.
  • Der in 7 dargestellte Schaltkreis arbeitet wie folgt. Wenn die Adressendecodereingabe auf 700 Low vorgebracht wird, so wird die Low-Spannung durch Inverter 720 eingegeben, um eine High-Spannung an dem Gateeingang des n-Kanal-Transistors 740 zu erzeugen. Dies erzeugt einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 740 und der Drain des n-Kanal-Transistors 740, die mit Masse verbunden ist. Die Source des n-Kanal-Transistors 740 ist mit dem Gateeingang des p-Kanal-Transistors 732 verbunden, was bewirkt, daß der Gateeingang des p-Kanal-Transistors 732 auf Low getrieben wird. Dies verursacht einen leitenden Pfad zwischen der Source des p-Kanal-Transistors 732, die mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden ist, und der Drain des p-Kanal-Transistors 732, die mit der Low-Byte-Wortleitung 710 verbunden ist. Der High-Spannungsausgang des Inverters 720 läuft durch den Inverter 722, um einen Low-Spannungseingang an dem Gate des n-Kanal-Transistors 742 zu erzeugen. Dies veranlaßt die Source des n-Kanal-Transistors 742, die mit der Low-Byte-Wortleitung 710 verbunden ist, von der Drain des n-Kanal-Transistors 742 entkoppelt zu werden, die mit Masse verbunden ist. Der Ausgang der Low-Byte-Wortleitung 710 nimmt in der Konsequenz die Spannung des Low-Byte-Zweistufen-Spannungsausgangs 510 an.
  • Wenn der Adressendecodereingang 700 zurückgenommen wird auf eine hohe Spannung, so läuft diese hohe Spannung durch den Inverter 720, um einen niedrigen Wert an dem Gateeingang des n-Kanal-Transistors 740 zu erzeugen. Der niedrige Wert wird auch durch den Inverter 722 eingegeben, um einen hohen Wert an den Gateeingang des n-Kanal-Transistors 742 zu erzeugen. Dies erzeugt einen leitenden Pfad zwischen der Source des n-Kanal-Transistors 742 und der Drain des n-Kanal-Transistors 742, die mit Masse verbunden ist. Die Source des n-Kanal-Transistors 742 ist auch mit der Low-Byte-Wortleitung 710 verbunden, was bewirkt, daß die Low-Byte-Wortleitung 710 auf eine niedrige Spannung getrieben wird. Der niedrige Wert auf dem Gateeingang des n-Kanal-Transistors 740 entkoppelt die Source des n-Kanal-Transistors 740 von der Drain des n-Kanal-Transistors 740, die mit Masse verbunden ist. Die Source des n-Kanal-Transistors 742, die nun einen niedrigen Wert hat, ist mit dem Gateeingang des p-Kanal-Transistors 730 verbunden, wodurch ein leitender Pfad zwischen dem Low-Byte-Zweistufen-Spannungsausgang 500 und der Drain des p-Kanal-Transistors 730 erzeugt wird. Die Drain des p-Kanal-Transistors 730 ist mit dem Gateeingang des p-Kanal-Transistors 732 verbunden, der dadurch auf eine hohe Spannung getrieben wird. Diese hohe Spannung isoliert die Source des p-Kanal-Transistors 732, die mit dem Low-Byte-Zweistufen-Spannungsausgang 500 verbunden ist, von der Drain des p-Kanal-Transistors 732, die mit der Low-Byte-Wortleitung 710 verbunden ist. Die Low-Byte-Wortleitung 710 nimmt folglich eine Massespannung an.
  • Zusammenfassend erzeugt die Sammlung von Low-Byte-Wortleitungstreibern 120, die in jede der Wortleitungen in dem Low-Byte-Speicherarray 100 eingeben, ein System, das eine Massespannung in zwei Wortleitungen treibt, die nicht ausgewählt werden, und eine zweistufige Spannung in eine einzelne Wortleitung, die ausgewählt wird.
  • 8 ist ein Schaltkreisdiagramm, das die interne Struktur eines der High-Byte-Wortleitungstreiber 122 darstellt. Diese Struktur ist identisch mit der Struktur für den Low-Byte-Wortleitungstreiber, der in 7 abgebildet ist, außer der Tatsache, daß die Source-Spannung an den p-Kanal-Transistoren 830 und 832 von dem High-Byte-Zweistufen-Spannungsausgang 600 geliefert wird statt von dem Low-Byte-Zweistufen-Spannungsausgang 500. Die Ansammlung von High-Byte-Wortleitungstreibern 122 erzeugt ein System, das ein Massespannungsniveau in nicht ausgewählte Wortleitungen treibt und eine zweistufige Spannung in eine einzelne ausgewählte Wortleitung.
  • 9 ist ein Flußdiagramm, das den Prozeß des Ausführens einer Byte-für-Byte-Programmierung eines 16-Bit-Wortes in einem Array von Speicherzellen mit erdfreiem Gate gemäß einer Ausführungsform der vorliegenden Erfindung darstellt.
  • Bei Schritt 900 beginnt die Wortprogrammieroperation. Eine Adresse wird über den Adreßbus 160 übermittelt. Diese Adresse spaltet sich auf in eine Reihenadresse, die in den Reihendecoder 130 eingegeben wird, und eine Spaltenadresse, die in sowohl den Low-Byte-Spaltendecoder 140 als auch den High-Byte-Spaltendecoder 142 eingegeben wird. Der Reihendecoder 130 wählt einen Wortleitungstreiber aus den Low-Byte-Wortleitungstreibern 120 aus und einen Wortleitungstreiber aus den High-Byte-Wortleitungstreibern 122. Der Low-Byte-Spaltendecoder 140 wählt einen Satz von Bitleitungen aus dem Array von Speicherzellen mit erdfreiem Gate aus gemäß dem Low-Byte des adressierten Wortes. Der High-Byte-Spaltendecoder 142 wählt einen Satz von Bitleitungen gemäß dem High-Byte des adressierten Wortes aus. Letztlich werden die in das adressierte Wort in dem Array von Zellen mit erdfreiem Gate zu programmierenden Daten von dem Datenbus 180 in den Dateneingangspuffer 182 geladen.
  • Bei Schritt 902 beginnt die Low-Byte-Programmierung. Die Steuerung für das Array von Speicherzellen mit erdfreiem Gate (nicht gezeigt) erklärt ein Low-Byte-Einschaltsignal 170 und löscht ein High-Byte-Einschaltsignal 172. Das gesetzte Low-Byte-Einschaltsignal 170 veranlaßt die Low-Byte-Zweistufen-Spannungsquelle 110, eine Programmierspannung zu produzieren für den ausgewählten Wortleitungstreiber aus den Low-Byte-Wortleitungstreibern 120. Das nicht gesetzte High-Byte-Einschaltsignal 172 veranlaßt die High-Byte-Zweistufen-Spannungsquelle 112, eine Nicht-Programmierspannung für die ausgewählten Wortleitungstreiber von den High-Byte-Wortleitungstreibern 122 zu produzieren. Nimmt man an, daß alle Dateni-Anzeigenspeicher 450 zurückgesetzt wurden, so veranlaßt das Low-Byte-Einschaltsignal 170, daß die Programmdaten in den Strukturen für das Low-Byte freigegeben werden, was bewirkt, daß die Programmierspannungen an die Spalten des Low-Byte-Speicherarrays 100 angelegt werden, die von dem Low-Byte-Spaltendecoder 140 ausgewählt werden. Das High-Byte-Einschaltsignal 172 wird in die High-Byte-Programmdateneingangsstrukturen 152 eingegeben, was bewirkt, daß diese Programmdaten in den Strukturen abgeschaltet werden. Folglich werden die von dem High-Byte-Spaltendecoder 142 ausgewählten Bitleitungen mit erdfreien Ausgängen der High-Byte-Programmdateneingangsstrukturen 152 verbunden und es findet kein Programmieren des High-Bytes statt.
  • Bei Schritt 904 werden die Programmierspannungen über eine Programmerholungsperiode aufrechterhalten bis ein Zeitschalter anzeigt, daß die Programmerholungsperiode abgeschlossen ist. Dies gewährt Zeit zum Einstellen der Programmierspannungen und zum angemessenen Laden oder Entladen der erdfreien Gates.
  • Bei Schritt 906 findet eine Bit-für-Bit-Verifikation statt. Die Wortleitungen, die dem adressierten Wort in beiden, dem Low-Byte-Speicherarray 100 und dem High-Byte-Speicherarray 102 ent sprechen, bleiben ausgewählt. Jedoch wird eine Nicht-Programmier-Lesespannung an diese beiden Wortleitungen angelegt. Die Ausgänge der ausgewählten Speicherzellen mit erdfreiem Gate in dem Low-Byte werden von dem Low-Byte-Speicherarray 100 in die Datenmeßverstärker geleitet und dann durch die Komparatoren, um zu bestimmen, ob alle Zellen in dem ausgewählten Byte richtig programmiert sind. Wenn die Dateneingangseingaben mit den Ausgängen der Meßverstärker übereinstimmen, dann wird das Übereinstimmungs-Daten/-Signal 400 generiert, was bewirkt, daß die Daten/-Anzeigenspeicher 450 entsprechend dem Low-Byte gesetzt werden. Dies schaltet das nachfolgende Neuprogrammieren der erfolgreich programmierten Bits des Low-Bytes aus.
  • Bei Schritt 908 findet eine Programmverifikationserholung statt. Programmverifikationsspannungen werden aufrechterhalten über das Memory Array, bis ein Zeitschalter abschließt. Dies stellt sicher, daß ausreichend Zeit für die Ausbreitung der Verifikationssignale durch das Memoryarray gewährt wird.
  • Bei Schritt 910 verifiziert das System, daß alle Bits innerhalb des Low-Bytes richtig programmiert wurden. Wenn dies der Fall ist, fährt das System fort zu Schritt 914. Wenn nicht, schleift das System zurück zu Schritt 902, um nur solche Bits neu zu programmieren, die nicht richtig programmiert wurden. Die Dateni-Anzeigenspeicher 450 schalten die Drain-Programmierspannungen für Bits, die richtig programmiert wurden, ab, um Drain-Störungsbedingungen vorzubeugen. Der Programmierprozeß wird dann wiederholt für das Low-Byte, außer daß nur solche Bits, die nicht richtig programmiert wurden, neu programmiert werden. Nicht gezeigt in 9 ist, daß nach einer festen Anzahl von Näherungen ohne erfolgreiche Programmierung der Low-Byte-Programmierprozeß angehalten wird und ein Fehler angezeigt wird.
  • Der High-Byte-Programmierprozeß besteht aus den Schritten 914, 916, 918, 920 und 922. Dieser Prozeß ist exakt analog zu dem Low-Byte-Programmierprozeß, außer daß das High-Byte-Speicherarray 102 betroffen ist. Nachdem der High-Byte-Programmierprozeß abgeschlossen ist, fährt das System fort zu Schritt 926 und der Wortprogrammierprozeß ist abgeschlossen.
  • Eine Ausführungsform der vorliegenden Erfindung liefert eine Ausweich- bzw. Nebenschlußstruktur, die es erlaubt die Programmierung von jeweils einem Byte zugunsten einer Programmierung mit jeweils einem Wort zu umgehen. Diese Umgehung wird verwendet wenn eine externe Programmierspannungsquelle verfügbar ist, wodurch ausreichend Programmierstrom für eine Programmierung mit jeweils einem Wort bereitgestellt wird.
  • Andere Ausführungsformen der oben beschriebenen Erfindung sind möglich. Die Beschreibung hat sich bisher auf Teilworte, die 8 Bits in der Größe betragen, konzentriert. Jedoch können andere Teilwortgrößen, wie z. B. 4, 6, 10, 12 und 16 Bit, leicht verwendet werden.
  • In einer anderen Ausführungsform wird eine Bit-für-Bit-Verifikation geliefert ohne Programmierung mit jeweils einem Byte. In dieser Ausführungsform wird ein ganzes Wort auf einmal programmiert und nur solche Bits innerhalb eines Wortes, bei denen die Programmierung fehlschlägt, werden neu programmiert.
  • Noch eine andere Ausführungsform liefert die Programmierung jeweils eines Bytes ohne die Bit-für-Bit-Verifikation.

Claims (17)

  1. Vorrichtung zum Speichern von Daten, mit: einem Speicherarray (100, 102), welches eine Mehrzahl von Speicherworten und einen Adressiermechanismus (130, 140, 142) aufweist, um individuelle Worte in der Mehrzahl von Speicherworten zu adressieren, wobei der Adressiermechanismus ein adressiertes Wort spezifiziert, einer Mehrzahl von Spaltenleitungen (17, 18), die jeweils mit einer Mehrzahl von Speicherzellen (13, 14) mit erdfreiem Gate aus dem Speicherarray verbunden sind, einem Datenbus (180), der eine Mehrzahl von Datenbitleitungen aufweist, um Daten in das Speicherarray hinein und aus diesem heraus zu übertragen, wobei jede der Datenbitleitungen mit einer Mehrzahl von Spaltenleitungen (17, 18) aus der Mehrzahl von Spaltenleitungen verbunden ist, Zufuhrschaltkreisen (110, 112, 150, 152) für Programmierleistung bzw. -spannung, die mit dem Speicherarray verbunden sind, um Programmierspannungen an das adressierte Wort des Speichers anzulegen, um automatisch das adressierte Speicherwort zu programmieren und wiederzuprogrammieren, einer Programmierverifizierlogik, die mit dem Speicherarray (100, 102) verbunden ist, um getrennt die Programmierung des adressierten Wortes zu verifizieren, Steuerschaltkreisen, die mit den Zufuhrschaltkreisen (110, 112, 150, 152) für Programmierspannung und mit der Programmierverifizierlogik verbunden sind, um die Spannungszufuhrschaltkreise zu steuern, damit diese das adressierte Speicherwort programmieren, wobei die Vorrichtung dadurch gekennzeichnet ist, daß jedes Wort eine Mehrzahl von Teilworten aufweist, wobei jedes Teilwort eine Mehrzahl von Zellen mit erdfreiem Gate aufweist, die Programmierverifizierlogik des adressierten Wortes so angeordnet ist, daß sie getrennt die Programmierung individueller Teilworte verifiziert, um einen Satz von Teilworten zu bestimmen, bei denen die Programmierung fehlgeschlagen ist, und um getrennt die Programmierung individueller Bits des Speichers innerhalb jedes Satzes von Teilworten zu verifizieren (906, 918), die nicht programmiert wurden, um einen Satz von Bits zu bestimmen, der nicht programmiert wurde, und die Steuerschaltkreise so ausgelegt sind, daß sie die Spannungszufuhrschaltkreise so steuern, daß sie nur den Satz von Teilworten neu programmieren, der nicht programmiert wurde, und zwar jeweils Teilwort für Teilwort, und nur den Satz von Bits neu programmieren (912, 902, 924, 914), der innerhalb des Satzes von Teilworten nicht programmiert wurde.
  2. Vorrichtung zum Speichern von Daten nach Anspruch 1, wobei die Steuerschaltkreise weiterhin eine Mehrzahl von Bitprogrammieranzeigen (450) aufweisen, welche den jeweiligen Bits innerhalb des adressierten Wortes entsprechen, und wobei die Programmierverifizierlogik mit der Mehrzahl von Bitprogrammieranzeigen (450) verbunden ist und diese so steuert, daß sie den Satz von Bits anzeigen, die innerhalb des adressierten Wortes nicht programmiert worden sind.
  3. Vorrichtung zum Speichern von Daten nach Anspruch 1, wobei die Steuerschaltkreise verbunden sind mit: den Zufuhrschaltkreisen (110, 112, 150, 152) für die Programmierspannung, den Bitfreischalteingaben der Zufuhrschaltkreise für Programmierspannung und der Programmierverifizierlogik, wobei die Steuerschaltkreise weiterhin eine Mehrzahl von Bitprogrammieranzeigen (450) umfassen, welche den jeweiligen Bits innerhalb des adressierten Wortes entsprechen, wobei die Bitprogrammieranzeigen mit der Programmierverifizierung verbunden und durch diese eingestellt sind, um einen Satz von Bits anzuzeigen, bei denen innerhalb des adressierten Wortes die Programmierung fehlgeschlagen ist.
  4. Vorrichtung zum Speichern von Daten nach einem der vorstehenden Ansprüche, wobei die Zufuhrschaltkreise (110, 112, 150, 152) für die Programmierspannung weiterhin eine Mehrzahl von Spaltentreibern (150, 152) aufweisen, die jeweils mit der Mehrzahl von Spaltenleitungen (17, 18) verbunden sind, welche mit einer zugehörigen Datenbitleitung des Datenbusses (180) verbunden ist, wobei jeder der Spaltentreiber eine Freischalteingabe (170, 172) für ein Teilwort aufweist, um die Programmierung eines individuellen Teilwortes innerhalb des adressierten Speicherwortes zu ermöglichen bzw. freizugeben.
  5. Vorrichtung zum Speichern von Daten nach irgendeinem der vorstehenden Ansprüche, wobei die Zufuhrschaltkreise (110, 112, 150, 152) für die Programmierspannung weiterhin eine Mehrzahl von Spaltentreibern (150, 152) aufweisen, die jeweils mit der Mehrzahl von Spaltenleitungen (17, 18) verbunden sind, welche mit einer zugehörigen Datenbitleitung des Datenbusses (180) verbunden sind, wobei jeder der Spaltentreiber eine Bitfreischalteingabe und eine Bytefreischalteingabe (170, 172) aufweist, die mit den Steuerschaltkreisen verbunden sind, um getrennt die Programmierung eines Bits innerhalb eines Teilwortes des adressierten Speicherwortes zu ermöglichen bzw. freizugeben.
  6. Vorrichtung zum Speichern von Daten nach irgendeinem der vorstehenden Ansprüche, wobei jedes Speicherteilwort des Speicherarrays (100, 102) aus einer Mehrzahl von Speicherzellen (13, 14) mit erdfreiem Gate besteht.
  7. Vorrichtung zum Speichern von Daten nach einem der vorstehenden Ansprüche, wobei jedes Speicherbit eine Speicherzelle (13, 14) mit erdfreiem Gate aufweist.
  8. Vorrichtung zum Speichern von Daten nach einem der vorstehenden Ansprüche, wobei das Array gelesen werden kann unter Verwendung einer Zufuhrspannung von einer externen Quelle mit 3,3 V oder weniger.
  9. Vorrichtung zum Speichern von Daten nach einem der vorstehenden Ansprüche, wobei jedes aus der Mehrzahl von Teilworten des Speichers aus acht Speicherzellen mit erdfreiem Gate besteht.
  10. Vorrichtung zum Speichern von Daten nach Anspruch 9, wobei jedes aus der Mehrzahl von Worten des Speichers aus zwei Teilworten des Speichers besteht.
  11. Vorrichtung zum Speichern von Daten nach einem der vorstehenden Ansprüche, wobei der Adressiermechanismus (130, 140, 142) aus einem Wortleitungsdecoder und einer Mehrzahl von Spaltendecodern besteht.
  12. Vorrichtung zum Speichern von Daten nach Anspruch 11, mit einem Spaltendecoder für jedes aus der Mehrzahl von Teilworten in dem adressierten Speicherwort.
  13. Verfahren zum Programmieren eines Arrays (100, 102) aus Speicherzellen mit erdfreiem Gate, mit einer Mehrzahl von Speicherworten, wobei das Speicherarray einen Adressiermechanismus (130, 140, 142) aufweist, um individuelle Worte in der Mehrzahl von Speicherworten zu adressieren, wobei das Verfahren aufweist: Auswählen eines adressierten Speicherwortes mit dem Speichermechanismus, Programmieren (902, 914) des adressierten Speicherwortes, wobei das Verfahren gekennzeichnet ist durch die weiteren Schritte: Teilen jedes Wortes in eine Mehrzahl von Teilworten des Speichers, wobei jedes Teilwort eines Speichers eine Mehrzahl von Speicherbits aufweist, wobei jedes Bit des Speichers eine Speicherzelle (13, 14) mit erdfreiem Gate aufweist, Verifizieren (906, 918) der Programmierung jedes aus der Mehrzahl von Bits in jedem Teilwort des adressierten Speicherwortes, und erneutes Programmieren (912, 904, 924, 914) derjenigen Bits, bei welchen die Programmierung fehlgeschlagen ist, während des Programmierungsschrittes (902, 914) automatisches Programmieren der Mehrzahl von Teilworten des adressierten Speicherwortes, und zwar Teilwort für Teilwort, während des Neuprogrammierungsschrittes (912, 902, 924, 914) automatisches Neuprogrammieren Teilwort für Teilwort, und zwar nur der Bits derjenigen Teilworte, bei welchen die Programmierung innerhalb des adressierten Speicherwortes fehlgeschlagen ist.
  14. Verfahren zum Programmieren eines Arrays aus Speicherzellen mit erdfreiem Gate nach Anspruch 13, wobei das Array unter Verwendung einer Zufuhrspannung von einer externen Quelle mit 3,3 V oder weniger gelesen werden kann.
  15. Verfahren zum Programmieren eines Arrays aus Speicherzellen mit erdfreiem Gate nach Anspruch 13, wobei jedes aus der Mehrzahl von Teilworten des Speichers acht Speicherzellen mit erdfreiem Gate aufweist.
  16. Verfahren zum Programmieren eines Arrays aus Zellen mit erdfreiem Gate nach Anspruch 15, wobei jedes aus der Mehrzahl von Worten des Speichers zwei Speicherteilworte aufweist.
  17. Verfahren zum Programmieren eines Arrays aus Speicherzellen mit erdfreiem Gate nach Anspruch 13, wobei: der Schritt des Verifizierens der Programmierung jedes aus der Vielzahl von Bits das Einstellen einer Mehrzahl von Bitprogrammieranzeigen (450) umfaßt, welche den jeweiligen Bits innerhalb des adressierten Wortes entsprechen, um einen Satz von Bits anzuzeigen, bei welchem die Programmierung fehlgeschlagen ist, und der Schritt des Neuprogrammierens nur derjenigen Bits, die nicht programmiert worden sind, Bitprogrammieranzeigen (450) verwendet, um das Neuprogrammieren der Bits freizugeben, die nicht programmiert worden sind.
DE69814948T 1997-03-06 1998-03-05 Schwachstromprogrammieren von schwebenden Gatterspeichern Expired - Lifetime DE69814948T2 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US812615 1997-03-06
US08/812,615 US5787039A (en) 1997-03-06 1997-03-06 Low current floating gate programming with bit-by-bit verification

Publications (2)

Publication Number Publication Date
DE69814948D1 DE69814948D1 (de) 2003-07-03
DE69814948T2 true DE69814948T2 (de) 2004-05-19

Family

ID=25210128

Family Applications (1)

Application Number Title Priority Date Filing Date
DE69814948T Expired - Lifetime DE69814948T2 (de) 1997-03-06 1998-03-05 Schwachstromprogrammieren von schwebenden Gatterspeichern

Country Status (3)

Country Link
US (1) US5787039A (de)
EP (1) EP0863514B1 (de)
DE (1) DE69814948T2 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5930168A (en) * 1998-03-20 1999-07-27 Micron Technology, Inc. Flash memory with adjustable write operation timing
EP1170798B1 (de) * 2000-07-04 2006-09-06 STMicroelectronics S.r.l. Architektur eines Festwertspeicherfelds
US6597603B2 (en) * 2001-11-06 2003-07-22 Atmel Corporation Dual mode high voltage power supply for providing increased speed in programming during testing of low voltage non-volatile memories
JP4063615B2 (ja) * 2002-08-30 2008-03-19 Necエレクトロニクス株式会社 不揮発性メモリおよびその書き込み処理方法
JP4421925B2 (ja) * 2004-03-30 2010-02-24 三星電子株式会社 不揮発性半導体記憶装置
US7957204B1 (en) * 2005-09-20 2011-06-07 Spansion Llc Flash memory programming power reduction
US7130222B1 (en) 2005-09-26 2006-10-31 Macronix International Co., Ltd. Nonvolatile memory with program while program verify
JP3970299B2 (ja) * 2005-11-25 2007-09-05 シャープ株式会社 半導体記憶装置
US7362610B1 (en) * 2005-12-27 2008-04-22 Actel Corporation Programming method for non-volatile memory and non-volatile memory-based programmable logic device
KR100819106B1 (ko) * 2006-09-27 2008-04-02 삼성전자주식회사 상변화 메모리 장치에서의 라이트 동작방법
US9799402B2 (en) * 2015-06-08 2017-10-24 Samsung Electronics Co., Ltd. Nonvolatile memory device and program method thereof
KR102527961B1 (ko) * 2015-07-02 2023-05-04 삼성전자주식회사 불휘발성 메모리 시스템 및 그것의 프로그램 방법
US10445173B2 (en) 2017-06-26 2019-10-15 Macronix International Co., Ltd. Method and device for programming non-volatile memory

Family Cites Families (25)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5053990A (en) * 1988-02-17 1991-10-01 Intel Corporation Program/erase selection for flash memory
US5163021A (en) * 1989-04-13 1992-11-10 Sundisk Corporation Multi-state EEprom read and write circuits and techniques
US5172338B1 (en) * 1989-04-13 1997-07-08 Sandisk Corp Multi-state eeprom read and write circuits and techniques
JP2900523B2 (ja) * 1990-05-31 1999-06-02 日本電気株式会社 不揮発性半導体メモリ装置の書込回路
JP2709751B2 (ja) * 1990-06-15 1998-02-04 三菱電機株式会社 不揮発性半導体記憶装置およびそのデータ消去方法
US5396468A (en) * 1991-03-15 1995-03-07 Sundisk Corporation Streamlined write operation for EEPROM system
US5263003A (en) * 1991-11-12 1993-11-16 Allen-Bradley Company, Inc. Flash memory circuit and method of operation
JP3178909B2 (ja) * 1992-01-10 2001-06-25 株式会社東芝 半導体メモリ装置
US5327383A (en) * 1992-04-21 1994-07-05 Intel Corporation Method and circuitry for erasing a nonvolatile semiconductor memory incorporating row redundancy
US5317535A (en) * 1992-06-19 1994-05-31 Intel Corporation Gate/source disturb protection for sixteen-bit flash EEPROM memory arrays
US5379413A (en) * 1992-06-19 1995-01-03 Intel Corporation User selectable word/byte input architecture for flash EEPROM memory write and erase operations
US5357463A (en) * 1992-11-17 1994-10-18 Micron Semiconductor, Inc. Method for reverse programming of a flash EEPROM
US5491809A (en) * 1993-01-05 1996-02-13 Texas Instruments Incorporated Smart erase algorithm with secure scheme for flash EPROMs
US5399928A (en) * 1993-05-28 1995-03-21 Macronix International Co., Ltd. Negative voltage generator for flash EPROM design
US5414664A (en) * 1993-05-28 1995-05-09 Macronix International Co., Ltd. Flash EPROM with block erase flags for over-erase protection
JP3252306B2 (ja) * 1993-08-10 2002-02-04 株式会社日立製作所 半導体不揮発性記憶装置
US5400286A (en) * 1993-08-17 1995-03-21 Catalyst Semiconductor Corp. Self-recovering erase scheme to enhance flash memory endurance
US5537350A (en) * 1993-09-10 1996-07-16 Intel Corporation Method and apparatus for sequential programming of the bits in a word of a flash EEPROM memory array
JP2725565B2 (ja) * 1993-10-08 1998-03-11 日本電気株式会社 仮想接地型フラッシュメモリの消去ベリファイ方法と仮想接地型フラッシュメモリ
US5530803A (en) * 1994-04-14 1996-06-25 Advanced Micro Devices, Inc. Method and apparatus for programming memory devices
KR0139889B1 (ko) * 1994-12-27 1999-04-15 김주용 플래쉬 메모리 장치
US5541886A (en) * 1994-12-27 1996-07-30 Intel Corporation Method and apparatus for storing control information in multi-bit non-volatile memory arrays
ATE209819T1 (de) * 1995-01-05 2001-12-15 Macronix Int Co Ltd Fortgeschrittene programmierverifikation für flash-speicher mit seitenmodus
US5644531A (en) * 1995-11-01 1997-07-01 Advanced Micro Devices, Inc. Program algorithm for low voltage single power supply flash memories
US5636162A (en) * 1996-06-12 1997-06-03 Texas Instruments Incorporated Erase procedure

Also Published As

Publication number Publication date
DE69814948D1 (de) 2003-07-03
EP0863514A2 (de) 1998-09-09
EP0863514A3 (de) 1999-08-18
US5787039A (en) 1998-07-28
EP0863514B1 (de) 2003-05-28

Similar Documents

Publication Publication Date Title
DE69533429T2 (de) Automatischer progammier-algorithmus für flash-speicher im seitenmodus mit variabler programmierimpulshöhe und -breite
DE19860871B4 (de) Leistungsunabhängiger Halbleiterspeicherbaustein und Verfahren zur Ansteuerung von dessen Wortleitungen
DE102005017012B4 (de) NOR-Flashspeicherbauelement, zugehöriges Speichersystem und Programmierverfahren
DE4233248C2 (de) Nicht-flüchtige Halbleiterspeichereinrichtung und Verfahren zum blockweisen Löschen von Daten in einer nicht-flüchtigen Halbleiterspeichereinrichtung
DE3751084T2 (de) Im system programmierbare logische vorrichtung.
DE4213731C2 (de) Nichtflüchtiges Halbleiterspeicherbauelement und Programmierverfahren hierfür
DE69826199T2 (de) Verfahren und Vorrichtung zur Programmierung einer Speicheranordnung wie EPROM-Matrixzellen mit virtueller Erdung
DE69030959T2 (de) EEPROM mit Referenzzelle
DE4000787C2 (de) Elektrisch loesch- und programmierbare halbleiterspeichervorrichtung
DE69814948T2 (de) Schwachstromprogrammieren von schwebenden Gatterspeichern
DE102005063049B4 (de) NAND-Flashspeicherbauelement und Programmierverfahren
DE102005052696A1 (de) Nichtflüchtiges Speicherbauelement und Seitenpuffer
DE102004033443A1 (de) Flashspeicherbauelement mit Mehrpegelzelle sowie Lese- und Programmierverfahren
DE69031648T2 (de) Programmierbare logische Vorrichtung
DE69127155T2 (de) Halbleiterspeicheranordnung
DE19859494A1 (de) Leistungsunabhängiger Mehrebenen-Halbleiterspeicherbaustein mit einer Schaltung zum Einstellen der Datenlesezeit
DE10026993A1 (de) Flash-Speicherbauelement mit einer neuen Redundanzansteuerschaltung
DE2650574B2 (de) Halbleiter-Speicher
DE102005055834A1 (de) Speicherschaltung, Ansteuerschaltung für einen Speicher und Verfahren zum Einschreiben von Schreibdaten in einen Speicher
DE112004002851B4 (de) Halbleitervorrichtung und Programmierverfahren
DE102005015806A1 (de) Verfahren zum Lesen einer Flash-Speichervorrichtung
DE69833348T2 (de) Nichtflüchtige Halbleiterspeicheranordnung
DE69828669T2 (de) Nichtflüchtige Halbleiterspeicheranordnung
DE112004003023T5 (de) Halbleiterbauelement und Verfahren zum Steuern des Halbleiterbauelements
DE60033467T2 (de) Halbleiterspeicheranordnung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition