DE10197113B3 - Verfahren zum Aktivieren eines speziellen Programmiermodus eines Speichers und Einrichtung mit einem Speicher mit speziellem Programmiermodus - Google Patents

Verfahren zum Aktivieren eines speziellen Programmiermodus eines Speichers und Einrichtung mit einem Speicher mit speziellem Programmiermodus Download PDF

Info

Publication number
DE10197113B3
DE10197113B3 DE10197113T DE10197113T DE10197113B3 DE 10197113 B3 DE10197113 B3 DE 10197113B3 DE 10197113 T DE10197113 T DE 10197113T DE 10197113 T DE10197113 T DE 10197113T DE 10197113 B3 DE10197113 B3 DE 10197113B3
Authority
DE
Germany
Prior art keywords
memory
words
programming mode
data
special programming
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 - Fee Related
Application number
DE10197113T
Other languages
English (en)
Other versions
DE10197113T1 (de
Inventor
Sundeep M. Bajikar
Paul D. Ruby
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.)
Intel Corp
Original Assignee
Intel Corp
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 Intel Corp filed Critical Intel Corp
Publication of DE10197113T1 publication Critical patent/DE10197113T1/de
Application granted granted Critical
Publication of DE10197113B3 publication Critical patent/DE10197113B3/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/46Test trigger logic
    • 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

Landscapes

  • Read Only Memory (AREA)
  • Television Systems (AREA)

Abstract

Ein Verfahren, umfassend: Aktivieren eines speziellen Programmiermodus eines Speichers durch Eingeben (150) eines speziellen Programmierungs-Zugriffscodes in einen Zustands-Controller, wobei der Speicher Automatisierungsschaltungen zur Programmier-Verifizierung aufweist und wobei das Aktivieren des speziellen Programmiermodus die interne Programmier-Verifizierung durch die Automatisierungsschaltungen des Speichers deaktiviert; Programmieren (208, 210, 212) einer Mehrzahl von Wörtern in den Speicher während des speziellen Programmiermodus mittels eines einzigen Kommandos ohne die Durchführung der internen Programmier-Verifizierung durch die Automatisierungsschaltungen des Speichers; Verlassen des speziellen Programmiermodus des Speichers, nachdem die Mehrzahl von Wörtern in den Speicher programmiert worden ist; permanentes Sperren (164) des speziellen Programmiermodus nach dem Verlassen des speziellen Programmiermodus; und Freigeben der internen Programmier-Verifizierung des Speichers nach dem Verlassen des speziellen Programmiermodus, wobei eines oder mehrere Wörter, die nachfolgend in den Speicher programmiert werden, durch die von dem Speicher ausgeführte interne Programmier-Verifizierung überprüft werden.

Description

  • Die vorliegende Erfindung betrifft ein Verfahren und eine einen Speicher aufweisende Einrichtung, bei dem bzw. bei der ein spezieller Programmiermodus eines Speichers aktiviert wird, eine Mehrzahl von Wörtern in den Speicher während des speziellen Programmiermodus programmiert wird und danach der spezielle Programmiermodus verlassen wird.
  • Über die Jahre wurden verschiedene Programmierverfahren zur Programmierung von nicht-flüchtigen Speichern entwickelt. 1 zeigt einen Programmierungs-Algorithmus 10 nach dem Stand der Technik für einen nicht-flüchtigen löschbaren programmierbaren Nur-Lese-Speicher („EPROM”) nach dem Stand der Technik, der keine On-Chip-Programmierungs- und Lösch-Automatisierungs-Schaltungen enthält. Ein mit dem EPROM gekoppelter Mikroprozessor führt den Programmierungs-Algorithmus 10 aus. Der Mikroprozessor sendet einen 100-Mikrosekunden-Programmierpuls an das EPROM. Der Mikroprozessor führt dann eine Wort-Verifikation durch, zur Bestimmung, ob das zur Programmierung in das EPROM vorgesehene Wort erfolgreich programmiert wurde. Der Algorithmus bricht ab, wenn 25 Versuche zur Programmierung eines Wortes fehlschlagen. Wenn andererseits das Wort erfolgreich programmiert wurde, wird der Algorithmus beim Durchlaufen jeder Adresse wiederholt.
  • 2 zeigt einen Programmierungs-Algorithmus 15 nach dem Stand der Technik für einen nicht-flüchtigen Flash-Speicher nach dem Stand der Technik einer frühen Generation. Ein mit dem Flash-Speicher nach dem Stand der Technik gekoppelter Mikroprozessor führt den Programmierungs-Algorithmus 15 aus. Der Flash-Speicher wird auf einer Wort-für-Wort-Basis programmiert. Der Mikroprozessor schreibt eine Programmanweisung mit einer 10-Mikrosekunden-Zeitbegrenzung in den Flash-Speicher. Die Programmieroperation benötigt daher 10 Mikrosekunden.
  • Nach jeder Programmieroperation wird jedes gerade programmierte Wort durch den Mikroprozessor verifiziert. Die Verifizierungsoperation des Programms wird durch den Mikroprozessor veranlasst, indem dieser eine Programmierungs-Verifizierungsanweisung in ein Anweisungsregister des Flash-Speichers schreibt. Die Programmierungs-Verifizierungsoperation bereitet den Flash-Speicher für die Verifikation des zuletzt programmierten Wortes vor. Der Flash-Speicher legt eine intern erzeugte Spielraum-Spannung (margin voltage) an das Wort an. Dann führt der Mikroprozessor einen Lesezyklus zur Ausgabe des Wortes aus dem Flash-Speicher an den Mikroprozessor aus. Der Mikroprozessor vergleicht dann das von dem Flash-Speicher gelesene Datenwort mit dem Datenwort, das der Mikroprozessor in den Flash-Speicher programmieren wollte. Ein erfolgreicher Vergleich zwischen dem programmierten Wort und den Zeitdaten bedeutet, dass das Wort erfolgreich programmiert wurde. Wenn die Daten nicht erfolgreich programmiert wurden, werden die Programmierungs- und die Verifizierungsschritte innerhalb einer Begrenzung von 25 Versuchen zur Programmierung des Wortes wiederholt.
  • 3 zeigt einen Programmierungs-Algorithmus 18 nach dem Stand der Technik für einen Flash-Speicher nach dem Stand der Technik einer späteren Generation, der On-Chip-Programmierungs- und Lösch-Automatisierungs-Schaltungen enthält. Die On-Chip-Programmierungs- und die Lösch-Automatisierungs-Schaltungen enthalten eine Anweisungs-Benutzerschnittstelle, eine Schreib-Zustandsmaschine, einen Datenvergleicher und ein Statusregister.
  • Der Programmieralgorithmus 18 beginnt damit, dass der mit dem Flash-Speicher gekoppelte Mikroprozessor eine Programmierungs-Setup-Anweisung (d. h. 40 hexadezimal) auf die Anweisungs-Benutzerschnittstelle des Flash-Speichers schreibt, gefolgt von einer die Adresse und Daten spezifizierenden zweiten Schreiboperation. Nach erfolgreichem Empfang und Interpretation der angeforderten Programmieroperation leitet die Anweisungs-Benutzerschnittstelle des Flash-Speichers ein übersetztes Signal an die Schreib-Zustandsmaschine des Flash-Speichers, die dann einen internen Programmierungsalgorithmus innerhalb des Flash-Speichers steuernd übernimmt. Insbesondere überwacht die Schreib-Zustandsmaschine interne Programmierungs- und Verifizierungs-Schaltungen zur Ausführung der folgenden Tasks: (1) Programmierungs-Pulssteuerung, (2) Puls-Wiederholungssteuerung, (3) Zeitbegrenzungs-Steuerung, (4) Programmierungs-Verifikation und (5) Aktualisierung des Statusregisters.
  • Vorausgesetzt, dass die zu beschreibende Speicherposition vorher gelöscht wurde (d. h. nur logische Einsen speichert), sendet die Schreib-Zustandsmaschine zur Programmierung des Wortes in den Flash-Speicher einen Programmierpuls einer vorgegebenen Breite an die Speicherzellen, die von einer Eins auf eine Null programmiert werden müssen.
  • Die Programmierungs-Verifizierung findet dann in zwei Schritten statt. Eine Abtast-Lesespannung mit Spielraum (margined-sensing read voltage) wird an die gerade programmierten Zellen angelegt. Die sich ergebenden Bit-Leitungsströme werden dann einzeln in Abtastverstärker gespeist, einen Abtastverstärker pro Zelle. Die Ausgaben der herstellerseitig eingestellten Programmierungs-Referenz-Schaltungen, auf Vtp (d. h. die Programmierungs-Schwellenwertspannungen) werden ebenfalls in die jeweiligen Abtastverstärker gespeist. Die Ausgaben der Abtastverstärker werden dann für eine Überprüfung in einen Datenkomparator geleitet. Diese Überprüfung vergleicht die Ausgaben der Abtastverstärker mit den Inhalten eines Datenregisters.
  • Der Datenkomparator berichtet die Ergebnisse seiner Überprüfung an die Schreib-Zustandsmaschine die wiederum bestimmt, ob eine Pulswiederholung erforderlich ist. Wenn die Programmierungs-Verifikationsoperation zeigt, dass eine oder mehrere Zellen reprogrammiert werden müssen, werden die obigen Programmierungs- und die Programmierungs-Verifikationsschritte solange wiederholt, bis entweder alle Zellen als erfolgreich programmiert verifiziert wurden oder eine Zeitüberschreitung eintritt. Wenn die Pulswiederholung endet, sendet die Schreib-Zustandsmaschine ein Signal zur Aktualisierung des Statusregisters.
  • Das siebte Bit des Statusregisters (d. h. SR. 7) wird auf Null gesetzt, wenn die Schreib-Zustandsmaschine beschäftigt ist. Das siebte Bit des Statusregisters wird auf Eins gesetzt, wenn die Schreib-Zustandsmaschine fertig ist (wenn z. B. die Programmierung endet) und zur Ausführung der nächsten Operation bereit ist. Wenn das vierte Bit des Statusregisters (d. h. SR. 4) auf Eins gesetzt ist, zeigt dies an, dass bei der Programmierung des Wortes ein Fehler aufgetreten ist.
  • Wenn die Adresse bei der das Datenwort programmiert wurde nicht die letzte Adresse ist, dann inkrementiert der externe Mikroprozessor die Adresse und wiederholt die obigen Operationen. Der Mikroprozessor sendet mit anderen Worten dem Speicher eine 40 Hex-Programmierungs-Setup-Anweisung, gefolgt von einer Schreiboperation, die die inkrementierte Adresse und das zugeordnete Datenwort spezifiziert. Der Speicher programmiert das Datenwort, führt die interne Programmierungs-Verifikation durch und aktualisiert das Statusregister. Der obige Ablauf wird wiederholt, bis alle Datenwörter programmiert sind.
  • Obwohl die On-Chip-Programmierungs-Verifikation nach dem Stand der Technik im Allgemeinen vorteilhaft ist, weil der externe Mikroprozessor zur Bearbeitung anderer Aufgaben befreit wird, weist die On-Chip-Programmierungs-Verifikation einige Nachteile auf. Bei der On-Chip-Programmierungs-Verifikation werden Spannungen dauernd von niedrigem auf hohen Pegel und andersherum geändert, was im Allgemeinen die Programmierzeiten verlängert. Ferner werden die Spannungs- und Zeitablauf-Einstellungen für die Programmierungs- und die Programmierungs-Verifikationsoperationen oft zur Behandlung von Worst-Case-Bedingungen gewählt, was im Allgemeinen ebenfalls die Programmierzeiten verlängert. Ferner geht eine Programmierungs-Anweisung jedem zu programmierenden Datenwort voran, was die Programmierzeiten für lange Datenwort-Strings weiter erhöht.
  • Aus der Druckschrift EP 0 680 050 B1 ist ein Flash-EEPROM mit einer internen Programmierverifikation bekannt, welche neben einer Steuereinrichtung eine Verifizierschaltung verwendet, die ein zu schreibendes Datenwort mit einem nach dem Schreiben gelesenen Datenwort vergleicht und ein die Korrektheit der Schreiboperation anzeigendes Verifiziersignal ausgibt. In der Steuerschaltung dieser integrierten Schaltung können Schaltungsdefekte auftreten, die von einer Art sind, dass sie bei bestimmten Charakteristika der Speicherzellen nicht erfasst werden können. Die Druckschrift stellt sich deshalb die Aufgabe, die interne Steuerschaltung so zu verbessern, dass die beschriebenen Schaltungsdefekte erkannt werden können. Dazu werden der internen Steuerschaltung ein Testmodus-Steuerabschnitt, eine Taktauswahlschaltung und eine das Verifiziersignal an die Steuerschaltung weiterleitende Logikschaltung hinzugefügt. In vorgegebenen Testmodi kann dann die Weiterleitung des Verifiziersignals an die Steuerschaltung unterbunden werden, wobei das Verifiziersignal in Abhängigkeit von den Steuersignalen entweder durch ein High-Signal oder durch ein Low-Signal ersetzt wird. Die Steuerschaltung führt dann diejenigen Operationen aus, die sich ergeben würden, wenn tatsächlich das Signal high bzw. low wäre. Auf diese Weise können die Schaltungsdefekte erkannt werden. Die interne Programmierverifikation bleibt auch in dem Testmodus ständig erhalten.
  • Aufgabe der Erfindung ist es, die herstellerseitige Erstprogrammierung eines Speichers, der eine Einrichtung zur internen Programmierverifikation aufweist, zu beschleunigen.
  • Diese Aufgabe wird erfindungsgemäß durch ein Verfahren mit den Merkmalen des Anspruchs 1 bzw. eine Einrichtung mit den Merkmalen des Anspruchs 9 gelöst.
  • Der Grundgedanke der Erfindung liegt darin, einen speziellen Programmiermodus vorzusehen, der durch Eingeben eines speziellen Programmierungs-Zugriffscodes aktiviert wird und in dem die interne Programmier-Verifizierung abgeschaltet wird, wobei der spezielle Programmiermodus nach seinem Verlassen permanent gesperrt wird und dann die interne Programmier-Verifizierung freigegeben wird.
  • Vorteilhafte und/oder bevorzugte Weiterbildungen der Erfindung sind in den Unteransprüchen gekennzeichnet.
  • Die vorliegende Erfindung wird in beispielhafter und nicht in beschränkender Weise in den Figuren der beiliegenden Zeichnung dargestellt, wobei gleiche Verweise gleiche Elemente kennzeichnen und in denen:
  • 1 einen Programmierungs-Algorithmus nach dem Stand der Technik für EPROMs nach dem Stand der Technik zeigt, wobei ein externer Mikroprozessor die Programmierung jedes Wortes verifiziert.
  • 2 einen Programmierungs-Algorithmus nach dem Stand der Technik für einen Flash-Speicher nach dem Stand der Technik einer frühen Generation zeigt, wobei Programmierungs- und Programmierungs-Verifizierungsanweisungen verwendet werden;
  • 3 einen Programmierungs-Algorithmus nach dem Stand der Technik für einen Flash-Speicher nach dem Stand der Technik einer späteren Generation zeigt, der eine On-Chip-Programmierungs- und eine Lösch-Automatisierungs-Schaltung enthält;
  • 4 einen mit einem nicht-flüchtigen Flash-Speicher gekoppelten Host-Prozessor gemäß einer Ausführungsform der Erfindung zeigt;
  • 5 ein Blockschaltbild eines nicht-flüchtigen Flash-Speichers zeigt, der eine Spezieller-Programmiermodus-Schaltung aufweist;
  • 6 eine der Programmierungs-Verifikation und dem speziellen Programmiermodus zugeordnete Flash-Speicher-Schaltung zeigt;
  • 7 die Abläufe für den Eintritt, den Austritt und die Deaktivierung eines speziellen Programmiermodus für einen Flash-Speicher zeigt;
  • 8 die Programmieroperation während des speziellen Programmiermodus zeigt;
  • 9 die Verifizierungsoperationen während des speziellen Programmiermodus zeigt;
  • 9A eine alternative Programmierungsfolge einer Ausführungsform zeigt;
  • 9B eine alternative Verifizierungsfolge einer Ausführungsform zeigt;
  • 10 die Programmierungs- und Verifikationsabläufe für einen Hashing enthaltenden alternativen speziellen Programmiermodus zeigt;
  • 11 einen alternativer Ablauf für den Eintritt in den speziellen Programmiermodus zeigt.
  • Ein spezieller Programmiermodus zum Prüfen eines Halbleiterspeichers wird beschrieben, wie zum Beispiel eines nicht-flüchtigen Flash-Speichers. Der spezielle Programmiermodus wird in Anbetracht dessen, dass der Modus oft bei einer herstellerseitigen Einstellung mit der Prüfung eines Halbleiterspeichers nach dessen Herstellung und Kapselung angewendet wird, auch als herstellerseitiger Programmiermodus bezeichnet.
  • Wie unten ausführlicher beschrieben wird, ist bei einer Ausführungsform ein Host-Computer, wie zum Beispiel ein Mikroprozessor, mit einem nicht-flüchtigen Flash-Speicher gekoppelt. Der Mikroprozessor sendet eine oder mehrere Anweisungen an den Flash-Speicher, um in den speziellen Programmiermodus einzutreten. Während des speziellen Programmiermodus werden die Flash-Speicherzellen ohne die Verwendung interner Daten-Verifikation durch den Flash-Speicher programmiert.
  • Die Flash-Speicher Programmieroperationen sind hinsichtlich der Geschwindigkeit optimiert. Der Host-Mikroprozessor kann den zukünftigen Eintritt in den herstellerseitigen Programmiermodus dauerhaft deaktivieren, indem er eine Anweisung zur Deaktivierung des herstellerseitigen Programmiermodus an den Flash-Speicher sendet. Eine alternative Ausführungsform enthält eine dynamische Hash-Operation bezüglich der programmierten Bits und das Ergebnis der Hash-Operation wird bei der Verifikationsoperation verwendet.
  • Ausführungsformen der Erfindung helfen bei der Reduzierung der Zeit die zum Prüfen eines Flash-Speichers benötigt wird, um zu sehen, ob der Flash-Speicher erfolgreich programmiert werden kann. Eine Reduktion der Prüfzeit eines Flash-Speichers kann bei der Erhöhung der Gesamteffizienz der Herstellung von Produkten mit Flash-Speichern helfen, insbesondere bei großen Volumina. Ausführungsformen der Erfindung helfen bei der Optimierung der Datenprogrammierung eines Flash-Speichers.
  • 4 zeigt eine Anordnung von Komponenten für eine spezielle Programmiermodus-Operation, auch bezeichnet als herstellerseitige Programmiermodus-Operation. Der Host-Computer 22 ist mit einem nicht-flüchtigen Flash-Speicher 24 durch die Leitungen 26 gekoppelt. Die Leitungen 26 weisen Busse zu Übertragung von Adressen, Steuerungs- und Datensignalen auf. Der Host-Computer 22 kann ein Mikroprozessor oder ein anderes Rechenmittel sein, wie ein Mikrocontroller, ein Personal-Computer, ein Personal digital Assistant, ein Netzwerkprozessor, eine Workstation oder ein Mainframe-Computer. Der Host-Prozessor 22 überwacht die Prüfung des Flash-Speichers 24. Obwohl bei einer Ausführungsform der Erfindung der Speicher 24 ein Flash-Speicher ist, können andere Arten von Halbleiterspeichern verwendet werden. Zusätzlich kann bei anderen Ausführungsformen der Erfindung der Speicher 24 in einem Chip oder einer andere Schaltungen enthaltende Einrichtung eingebettet sein. Zum Beispiel kann der Speicher 24 in einem digitale und analoge Schaltungen und andere Speicher enthaltenden System-on-a-Chip eingebettet sein.
  • Der Host-Prozessor 22 weist eine Verarbeitungs-Schaltung 33 zur Verwendung eines speziellen Programmiermodus zur Programmierung des Speichers 24 auf. Der spezielle Programmiermodus ermöglicht dem Host-Prozessor 22, Datenwörter zur Programmierung des Speichers 24 zu senden und ermöglicht dem Speicher 24 in den speziellen Programmiermodus einzutreten, wobei die Daten-Verifikation extern durch den Host-Prozessor 22 erledigt wird. Die Schaltungen 33 des Host-Prozessors 22 enthalten Schaltungen zur Durchführung externer Daten-Verifikation während des speziellen Programmiermodus.
  • Der Host-Prozessor 22 ist ebenfalls mit dem Speicher 34 zur Speicherung von Code und Daten für den Prozessor 22 gekoppelt. Der in Speicher 34 gespeicherte Code enthält den durch den Host-Prozessor 22 zum Prüfen des Speichers 24 verwendeten Algorithmus. Der Speicher-Prüfalgorithmus enthält einen Algorithmus zur Programmierung des Speichers 24, der sich auf die externe Programmierungs-Verifikation durch den Host-Prozessor 22 stützt. Der Speicher 34 speichert ebenfalls Daten, die durch den Host-Prozessor 22 verwendet werden. Die durch den Host-Prozessor 22 verwendeten Daten enthalten in den Speicher 24 zu programmierende Daten. Der Host-Prozessor 22 verwendet ebenfalls den Speicher 34 als Arbeitspuffer für aus dem Speicher 34 gelesene Daten, als Teil der durch den Host-Prozessor 22 ausgeführten externen Programmierungs-Verifikationsroutine.
  • Bei einer Ausführungsform ist der Speicher 34 ein DRAM. Bei anderen Ausführungsformen können andere Arten von Halbleiterspeichern verwendet werden. Für wiederum andere Ausführungsformen kann der Speicher 34 einen Festplattenspeicher oder nichtflüchtigen Speicher aufweisen. Bei einer Ausführungsform befindet sich der Speicher 34 extern zu dem Host-Prozessor 22. Für andere Ausführungsformen kann der Speicher 34 als Teil des Host-Prozessors 22 enthalten sein und zum Beispiel ein system-on-a-chip bilden.
  • Bei einer Ausführungsform ist der Speicher 24 ein nichtflüchtiger Flash-Speicher, der eine Schreib-Automatisierungs-Schaltung enthält. Der Speicher 24 enthält Steuer-Schaltungen 28, die mit einem Flash-Speicher-Array 20 gekoppelt sind. Die Steuer-Schaltungen 28 enthalten Spezieller-Programmiermodus-Schaltungen 32, die es dem Speicher 24 ermöglicht, in einen speziellen Programmiermodus einzutreten oder diesen zu verlassen. Während des speziellen Programmiermodus wird die interne Daten-Verifikation durch den Speicher 24 zeitweise deaktiviert und eine externe Daten-Verifikation findet extern durch die Verwendung des Host-Prozessors 22 statt. Das Flash-Speicher-Array 20 enthält einzelne Flash-Speicherzellen zum nicht-flüchtigen Speichern von Informationen.
  • 5 zeigt weitere Details eines Nicht-flüchtigen-Flash-Speichers 24. Der Flash-Speicher 24 weist ein Flash-Zellen-Array 20, Anweisungs-Benutzerschnittstellen-Schaltungen 40, eine Schreib-Zustandsmaschine 28, spezielle Programmiermodus-Schaltungen 32, Ein/Ausgabelogik 47, Eingabepuffer 51, 52 und 55, Ausgabepuffer 53 und 54, Ausgabemultiplexer 45, Identifizierer-Register 85, Statusregister 83, Datenregister 91, Datenkomparator 81, Adress-Eingabepuffer 61, Adress-Latch 62, Adress-Zähler 63, Steuer-Schaltungen für die Leistungsabsenkung 73, X-Decoder 71, V-Decoder 72, Programmierungs-/Lösch-Spannungsschalter 41 und V-Durchschalt-/Abtast-Schaltungen 74 auf.
  • Das Flash-Zellen-Array 20 stellt einen nicht-flüchtigen Datenspeicher in großem Maßstab mit wahlfreiem Zugriff zur Verfügung. Bei einer Ausführungsform ist das Flash-Zellen-Array 20 als eine Menge von Array-Blöcken 20a bis 20x angeordnet. Block 20a ist ein 16 Kilobyte Hauptblock. Block 20b ist ein 8 Kilobyte Parameterblock. Block 20c ist ein 8 Kilobyte Parameterblock. Block 20d ist ein 96 Kilobyte Hauptblock. Block 20e ist ein 128 Kilobyte Hauptblock. Und Block 20x ist ein 128 Kilobyte Hauptblock. Andere 128 Kilobyte Hauptblöcke des Flash-Arrays 20 sind nicht gezeigt.
  • Der Steuerbus 106 ist Teil der Datenleitungen 26 aus 4. Der Datenbus 104 ist ebenfalls ein Teil der Leitungen 26 aus 4. Der Adressbus 102 ist ebenfalls ein Teil der Leitungen 26. Der Adressbus 102, der Datenbus 104 und der Steuerbus 106 koppeln den Flash-Speicher 24 mit dem Host-Prozessor 22.
  • Der Flash-Speicher 24 enthält On-Chip-Programmierungs- und Lösch-Automatisierungs-Schaltungen, die die Anweisungs-Benutzerschnittstelle 40, die Schreib-Zustandsmaschine 28, den Datenkomparator 81 und das Statusregister 83 enthalten.
  • Die Anweisungs-Benutzerschnittstellen-Schaltungen 40 sind eine Anforderungsschnittstelle für den Flash-Speicher 24. Die wesentliche Aufgabe der Anweisungs-Benutzerschnittstellen-Schaltungen 40 ist es, zwischen dem Host-Prozessor 22 und Funktionen interner Einrichtungen 24 zu vermitteln. Die Anweisungs-Benutzerschnittstelle 40 dient dieser Rolle durch ein Anweisungsregister zum Halten der herausgegebenen Anfrage, einem Anweisungsdecoder zum Interpretieren/Übersetzen dieser Anfrage und der Steuerlogik zum Einleiten einer Aktion. Aktivitäten enthalten Kommunikationen zwischen der Anweisungs-Benutzerschnittstelle 40 und der Schreib-Zustandsmaschine 28, der Auswahl des Lesepfades und der Prüfung und Löschung des Statusregisters 83.
  • Die Anweisungs-Benutzerschnittstelle 40 befindet sich auf einem internen Datenbus. Die Anweisungen sind Eingaben auf den Datenpins DQ0–DQ7, wobei CE# und WE# tiefgesteuert sind. Die Anweisungen werden gelatched und interpretiert nachdem WE# an VIH zurückgegeben ist. Die Adressinformation wird in dem Adresslatch 62 festgehalten und die Programmdaten werden in dem Datenregister 91 gespeichert, wenn WE# in einem zweiten Bus-Zyklus hochgesteuert ist.
  • Wenn die herausgegebene Anweisung eine Leseoperation ist (z. B. aus dem Identifiziererregister 85 oder dem Statusregister 83 oder dem Speicher-Array 20), so stellt die Anweisungs-Benutzerschnittstelle 40 sicher, dass der Ausgabe-Multiplexer 45 die Daten an die Ausgabepuffer 53 und 54 durchschaltet (gated).
  • Die Schreib-Zustandsmaschine 28 steuert die verschiedenen Komponenten innerhalb des Flash-Speichers 24, die zum Programmieren, Löschen und Verifizieren des Arrays 20 benötigt werden. Die Schreib-Zustandsmaschine 28 enthält einen integrierten Oszillator und Steuer-Schaltungen zum Ausführen der Programmierungs- und Löschoperationen. Die Schreib-Zustandsmaschine 28 ist ein spezialisierter Prozessor mit reduziertem Anweisungssatz zur Ausführung von Programmierungs-, Lösch- und anderen Operationen auf dem Array 20. Die Schreib-Zustandsmaschine 28 enthält eine arithmetische logische Einheit, Mehrzweckregister, einen Steuerspeicher und einen Steuer-Sequenzer. Die Schreib-Zustandsmaschine 28 verwendet die von der Anweisungs-Benutzerschnittstelle 40 empfangenen Informationen, um auf den geeigneten Platz des Programmspeichers zur Ausführung der zur Durchführung einer Operation benötigen Anweisungen zuzugreifen. Die Anweisungs-Benutzerschnittstelle 40 leitet übersetzte Benutzeranfragen zur Verarbeitung und Steuerung an die Schreib-Zustandsmaschine 28 weiter. Die Schreib-Zustandsmaschine 28 führt den Implementierungsalgorithmus für die Sequenzierung der Hochspannungs-Schaltung der Y-Durchschalt (gating)/Abtast-Schaltung 74 aus, um eine Ladung an die Flashzellen des Arrays 20 anzulegen und eine Ladung von den Flashzellen des Array 20 zu entfernen.
  • Die Schreib-Zustandsmaschine 28 erzeugt Signale, die einen Strobe auf die Bits des Array 20 hervorrufen, was das Löschen eines Programms oder eines Blockes des Array 20 erfordert. Die Schreib-Zustandsmaschine 28 erzeugt ferner Signale zur Überwachung der Strobe-Pulsbreiten und zugeordneten Zeitabläufe. Die Schreib-Zustandsmaschine 28 erzeugt Signale, die den Datenkomparator 81 steuern. Die Schreib-Zustandsmaschine 28 erzeugt Signale, die von dem Datenkomparator 81 eine Rückmeldung anfordern, um die Pulswiederholungssteuerung zu bestimmen und eine Aktualisierung an dem Statusregister 83 zur Verfügung zu stellen. Die Schreib-Zustandsmaschine 28 erzeugt Signale, die einen Adresszähler 63 zur Löschvorbereitung oder Lösch-Verifizierung initialisieren.
  • Die Y-Durchschalt/Abtast-Schaltung 74 umfasst Lese/Schreibpfad-Schaltungen für den Zugriff auf das Array 20. Insbesondere enthalten die Y-Durchschalt/Abtast-Schaltungen 74 Quellschalter-Schaltungen, um die geeigneten Spannungspegel an das Array 20 für eine Löschfunktion anzulegen. Die Y-Durchschalt/Abtast-Schaltungen 74 enthalten ferner Programmlast-Schaltungen zur Ansteuerung der Programmierungs-Pegelspannungen auf die Bit-Leitungen des Array 20 während der Programmierung.
  • Der Host-Prozessor 22 liest durch Übertragung der Adressen über den Benutzeradressenbus 102 das Array 20, während Lesezyklen über den Benutzersteuerbus 106 signalisiert werden. Die Anweisungs-Benutzerschnittstellen-Schaltungen 40 detektieren die Lesezyklen und bewirken, dass der Adresslatch 62 die Adressen von dem Benutzeradressenbus 102 durch den X-Decoder 71 und Y-Decoder 72 überträgt. Die Anweisungs-Benutzerschnittstellen-Schaltungen 40 verursachen ferner, dass der Ausgabe-Multiplexer 45 die gelesenen Daten von der Y-Durchschalt-/Abtast-Schaltung 74 über den Benutzerdatenbus 104 überträgt.
  • Der Host-Prozessor 22 schreibt Daten in das Array 20, wobei Schreibzyklen zur Übertragung von Programmieranweisungen und Daten an die Anweisungs-Benutzerschnittstellen-Schaltungen 40 über die Leitungen 26 erzeugt werden. Die Anweisungs-Benutzerschnittstellen-Schaltung 40 verifiziert die Programmieranweisungen und reiht die Programmieranweisungen und Adressen und Datenparameter an die Schreib-Zustandsmaschine 28 in eine Warteschlange ein. Die Schreib-Zustandsmaschine 28 führt die Programmoperationen durch Programmierung der spezifizierten Daten in das Array 20 an die spezifizierten Adressen durch.
  • Die Schreib-Zustandsmaschine 28 enthält Schaltungen zur Aktivierung oder Deaktivierung des speziellen Programmiermodus des Flash-Speichers 24. Wenn der spezielle Programmiermodus durch die Schaltungen 32 aktiviert ist, verhindert die Schreib-Zustandsmaschine 28 die Verifikation von in das Speicher-Array 20 geschriebenen Daten. Die Verifikation von Programmdaten ist die normale Operation des Flash-Speichers 24.
  • Die normale Verifikationsoperation des Flash-Speichers 24 ist im Folgenden unter Bezug auf die 5 und 6 erklärt. 6 zeigt bestimmte Schaltungen des Flash-Speichers 24 in detaillierterer Weise. Der Datenkomparator 81 ist bei der normalen Programmierungs-Verifikationsoperation durch den Flash-Speicher 24 von zentraler Bedeutung. Der Datenkomparator 81 wird durch die Schreib-Zustandsmaschine 28 gesteuert. Die Schreib-Zustandsmaschine 28 verwendet den Datenkomparator 81 während der Programmierungs-Verifikations- und Lösch-Verifikationsoperationen. Der Datenkomparator 81 vergleicht die gerade programmierten Zellen des Array 20 mit in dem Datenregister der Einrichtung gespeicherten Daten. Zur Lösch-Verifikation vergleicht der Datenkomparator 81 die gelöschten Plätze mit dem hexadezimalen Datenwert FFFF. Gelöschte Positionen werden durch den Datenkomparator 81 durch die Adresszähler-Schaltung 63 gezykelt.
  • Für die Programmierungs-Verifikation und Lösch-Verifikation berichtet der Datenkomparator 81 die Ergebnisse seines Vergleichs für die Schreib-Zustandsmaschine 28, die wiederum bestimmt, ob die Pulswiederholung erforderlich ist. Wenn keine Pulswiederholung erforderlich ist, sendet die Schreib-Zustandsmaschine 28 ein Signal zur Aktualisierung des Programmierungs- oder Lösch-Statusbits des Statusregisters, welches in dem Statusregister 83 wiedergegeben wird.
  • Für normale Programmierungs-Verifikationen kommt es unmittelbar vor dem Datenvergleich durch den Datenkomparator 81 zu einer Spielraumbestimmungs-Funktion (margining function). Für die Programmierungs-Verifikation wird ein Strom IPMRGN, der aus einer Programmierungs-Spielraum-Vorspannung abgeleitet ist, die aus einer die Programmzellen des Arrays enthaltenden Spalte gelesen wird, in einen der 16 Abtastverstärker 117a bis 117p (ein 16 Bit Wort vorausgesetzt) gespeist, mit der Referenzstromstärke IPREF, welche die Stromstärke aus herstellerseitig gesetzten Programmreferenz-Schaltungen 111 ist. Die Spielraum-Stromstärke IPMRGN wird aus einer an die gerade programmierte Zelle angelegten erhöhten Lesespannung abgeleitet.
  • Wenn IPMRGN kleiner ist als IPREF, gibt der jeweilige Abtastverstärker der Abtastverstärker 117a117p eine logische Eins heraus. Diese Operation findet für acht oder sechzehn Bits parallel statt, in Abhängigkeit von der Busbreite der Programmierungsoperation. Die acht Bit oder sechzehn Bit Ausgabewerte der Abtastverstärker 117a117p werden an den Datenkomparator 81 zum Vergleich gegen die in den Datenregistern 91 gespeicherten Daten gesendet.
  • Die in 5 gezeigten spezieller Programmiermodus-Schaltungen 32 der Schreib-Zustandsmaschine 28, können die durch die Schreib-Zustandsmaschine 28 verwendeten Programmierungs-Verifikationsabläufe deaktivieren. Die Schaltungen 32 können entweder die Programmierungs-Verifikation durch die Schreib-Zustandsmaschine 28 zeitweise deaktivieren oder die Programmierungs-Verifikation durch die Schreib-Zustandsmaschine 28 dauerhaft deaktivieren. Bei einer Ausführungsform der Erfindung umfassen die Schaltungen 32 in dem Array 20 gespeicherten Code und zugeordnete Schaltungen, die zur Deaktivierung des Programmierungs-Verifikationsablaufs innerhalb des Flash-Speichers 24 wirken. Der Programmierungs-Verifikationsablauf kann entweder zeitweise für die Programmierung von bestimmten Datenwörtern deaktiviert sein, oder der Programmierungs-Verifikationsablauf kann dauerhaft deaktiviert sein, um zu verhindern, dass ein äußerer Benutzer des Speichers 24 in dem speziellen Programmiermodus eintritt. Während des speziellen Programmiermodus deaktiviert die Schaltung 32 die Programmierungs-Verifikation.
  • Das in 5 gezeigte Statusregister 83 ist eine andere Komponente in der Automatisierungs-Schaltung des Flash-Speichers 24. Das Statusregister 83 enthält Bits, die eine Schnittstelle zu der Außenwelt des Flash-Speichers 24 sind. Die Schreib-Zustandsmaschine 28 empfängt Rückmeldungen von ihren Unterstützungs-Schaltungen, wobei es der Schreib-Zustandsmaschine 28 ermöglicht wird, den Strom des Statusregisters 83 und die Anweisungs-Benutzerschnittstelle 40 nebeneinander zu halten. Das Bit 7 des Statusregisters zeigt an, ob die Schreib-Zustandsmaschine zum Empfang von weiteren Anweisungen bereit ist (eine logische Eins) oder mit der Ausführung von Aufgaben beschäftigt ist (eine logische Null). Das Bit 4 des Statusregisters 83 zeigt den Programmstatus an. Wenn Bit 4 des Statusregisters 83 eine logische Eins ist, so zeigt dies einen Fehler bei der Wort/Byte-Programmierung an. Wenn das Programmstatusbit 4 eine logische Null ist, zeigt dies eine erfolgreiche Wort/Byte-Programmierung an.
  • Die Inhalte des Statusregisters werden auf den Bits DQ0–DQ7 des Datenbus 104 auf den fallenden Kanten von CE# oder OE# herausgegeben, je nachdem, welches in einem Lesezyklus später auftritt. Jeder Pin muss hochgesteuert werden, dann wieder niedrig, um den aktualisierten Inhalt der Ausgabepuffer 53 und 54 zu senden. Der Host-Prozessor 22 liest dann die Ausgabe des Statusregisters 83 über die Datenleitungen 104.
  • 7 zeigt die Abläufe zum Eintritt, Austritt und der Deaktivierung des speziellen Programmiermodus für den Flash-Speicher 24 in einem Zustandsdiagramm. Die eingeklammerten Informationen in der 7 zeigen den Zustand der Anweisungs-Benutzerschnittstelle 40. Informationen innerhalb der Kreise unter den eingeklammerten Informationen zeigen den Zustand des Ausgabe-Multiplexers 45 des Flash-Speichers 24 an.
  • Der Ablauf des speziellen Programmiermodus beginnt bei Operation oder Zustand 150 mit dem Senden einer Speziellen-Programmiermodus-Anweisung von dem Host-Prozessor 22 an den Flash-Speicher 24 über die Leitungen 26, die in der Anweisungs-Benutzerschnittstelle 40 gespeichert wird. Bei einer Ausführungsform der Erfindung wird eine einzelne Spezieller-Programmiermodus-Anweisung zum Eintritt in den speziellen Programmiermodus verwendet. Bei einer unten ausführlicher beschriebenen alternativen Ausführungsform wird eine spezielle Folge von Anweisungen verwendet, um die Anweisungs-Benutzerschnittstelle zu veranlassen, die Schaltungen 32 zu veranlassen, in den speziellen Programmiermodus einzutreten.
  • Bei Zustand 152 ist die Anweisungs-Benutzerschnittstelle 40 in den speziellen Programmiermodus-Zustand eingetreten. Der Ausgabe-Multiplexer 45 gibt ein Statussignal aus. Bei Zustand 152 veranlasst die Anweisungs-Benutzerschnittstelle 40 die Schaltungen 32 der Schreib-Zustandsmaschine 28 in den speziellen Programmiermodus einzutreten. In dem speziellen Programmiermodus deaktivieren die Schaltungen 32 die interne Programmierungs-Verifikation durch den Flash-Speicher 24. Als nächstes sendet der Host-Computer 22 eine Datenstrom-Setup-Anweisung an die Anweisungs-Benutzerschnittstelle 40 des Flash-Speichers 24, um in den Zustand 154 zu gelangen. Bei Zustand 154 ist die Anweisungs-Benutzerschnittstelle 40 in einem Datenstrom-Einrichtungs-Zustand (d. h. dem DS-Einrichtungs-Zustand. Bei Zustand 154 gibt der Ausgabe-Multiplexer 45 ein Statussignal aus. Der Datenstrom-Einrichtungs-Zustand 154 veranlasst die Schreib-Zustandsmaschine 28 den Flash-Speicher 24 für einen Strom von Datenwörtern vorzubereiten, die in das Flash-Speicher-Array 20 programmiert werden sollen. Bei einer Ausführungsform erfordert der Strom von Datenwörtern keine sequentiellen Adressen. Bei einer anderen Ausführungsform ist der Strom von Datenworten für sequentielle Adressen bestimmt. Bei Zustand 154 sind die Anweisungs-Benutzerschnittstelle 40, die Schreib-Zustandsmaschine 28 und die spezielle Programmiermodus-Schaltung 32 alle in dem Datenstrom-Setup-Modus und erwarten die Eingabe von Daten, die in den Flash-Speicher 24 zur Speicherung in das Array 20 strömen sollen.
  • Das nächste eintretende Ereignis ist, dass die Daten von dem Host-Prozessor 22 über den Datenbus 104 zu dem Flash-Speicher 24 strömen gelassen werden. Bei einer Ausführungsform der Erfindung hat der Datenbus 104 eine Breite von 16 Bits und dementsprechend ist jedes Datenwort ein 16 Bit breites Datenwort. Der Datenstrom ist eine Serie von Datenwörtern die in das Flash-Speicher-Array 20 geschrieben werden sollen, beginnend mit der Startadresse. Bei einer Ausführungsform erfordert der Strom von Datenwörtern keine sequentiellen Adressen. Bei einer anderen Ausführungsform ist der Strom von Datenwörtern für sequentielle Adressen bestimmt. Die Startadresse wird durch den Host-Prozessor 22 über den Adressbus 102 an den Flash-Speicher 24 gesendet. Sobald die Daten über den Datenbus 104 an den Flash-Speicher 24 gesendet sind, tritt die Anweisungs-Benutzerschnittstelle 40 des Flash-Speichers in den Zustand 156 ein, welcher der Datenstrom-Zustand ist. In dem Zustand 156 gibt der Ausgabe-Multiplexer 45 das Statussignal aus. Bei Zustand 156 sind die Schreib-Zustandsmaschine 28 und die Spezielle-Programmiermodus-Schaltung 32 ebenfalls in dem Datenstrom-Zustand.
  • Während des Datenstrom-Zustandes wird ein Strom von Datenwörtern von dem Host-Prozessor 22 über den Datenbus 104 an den Flash-Speicher 24 gesendet. Die Schreib-Zustandsmaschine 28 und die Schaltung 32 bewirken, dass die Datenstromwörter bei Adressen innerhalb des Flash-Speicher-Array 20 gespeichert werden. Bei einer Ausführungsform sind die Adressen nicht sequentiell. Bei dieser Ausführungsform sendet der Host-Prozessor 22 die verschiedenen Adressen über den Adressbus 102 und fährt nicht damit fort, die ursprüngliche Adresse zu senden. Bei einer Ausführungsform bleibt die durch den Host-Prozessor 22 über den Adressbus 102 gesendete Adresse die ursprüngliche Startadresse. Die Schreib-Zustandsmaschine 28 und die Schaltung 32 schreiten sequentiell durch den Adresszähler 63 und bewirken die Speicherung der Datenwörter bei einer Reihe von sequentiellen Adressen innerhalb des Flash-Speicher-Array 20.
  • Wie in 7 gezeigt, sind die gesendeten Daten gleich den Daten X, was anzeigt, dass eine Serie von Datenwörtern an den Flash-Speicher 24 gesendet wird. Bei einer Ausführungsform ist die Adresse gleich der vorangegangenen Adresse, welche die Startadresse des Datenstroms bleibt. Bei einer anderen alternativen Ausführungsform können jedoch verschiedene Adressen gesendet werden. Die Anweisungs-Benutzerschnittstelle 40, die Schreib-Zustandsmaschine 28 und die Spezielle-Programmiermodus-Schaltung 32 verbleiben in dem Datenstrom-Zustand 156, bis eine Datenstrom-Beendigungsbedingung auftritt.
  • Der Datenstrom-Zustand 156 unterscheidet sich von Programmieroperationen nach dem Stand der Technik. Bei den Programmieroperationen nach dem Stand der Technik, wie der in 3 gezeigten, gäbe es für jedes Datenwort in dem Datenstrom eine hexadezimale Programmierungsanweisung 40, gefolgt von einem einzelnen Datenwort und einer Adresse, gefolgt von einer Programmierungs-Verifikation. Zum Programmieren eines zweiten Datenworts bei einer zweiten Adresse müsste nach dem Stand der Technik mit anderen Worten eine andere hexadezimale Programmanweisung 40 an den Flash-Speicher gesendet werden. Das zweite Datenwort und die Adresse würden dann an den Flash-Speicher gesendet und dann würde es zu einer Programmierungs-Verifikationsoperation kommen. Nach dem Stand der Technik würde daher die Abfolge Anweisung-Daten-Verifikation, Anweisung-Daten-Verifikation, Anweisung-Daten-Verifikation etc. auftreten, während die erwünschten Adressen durchschritten werden. Beim Stand der Technik würde, nachdem jedes Wort als programmiert verifiziert wurde, die Schreib-Zustandsmaschine in einen ”Bereit”-Zustand gehen, wie durch das siebte Bit des Statusregisters in einem logischen Eins-Zustand angezeigt, unter der Annahme, dass das Datenwort richtig programmiert wurde.
  • Demgegenüber bleibt bei der unter Bezug auf 7 beschriebenen Ausführungsform der Erfindung die Schreib-Zustandsmaschine 28 beim Zustand 156 beschäftigt, bis der gesamte Strom einer Mehrzahl von Datenwörtern in das Flash-Speicher-Array 20 programmiert wurde. Der ”Beschäftigt”-Zustand der Schreib-Zustandsmaschine 28 wird durch eine in dem siebten Bit des Statusregisters gespeicherte logische Null angezeigt.
  • Die unter Bezug auf 7 beschriebene Spezielle-Programmiermodus-Folge setzt voraus, dass die zu programmierenden Speicherblöcke vorher gelöscht wurden. Wenn eine Flash-Zelle des Flash-Speicher-Array 20 gelöscht wurde, speichert die Flash-Zelle eine logische Eins. Wenn die Flash-Zelle programmiert ist, speichert die Flash-Zelle eine logische Null. Um das Flash-Array 20 zu löschen, muss das Flash-Array 20 Block für Block gelöscht werden. Ein Datenblock ist mit anderen Worten die kleinste Einheit von Daten, die gelöscht werden kann. Wenn ein Datenblock gelöscht wird, wird jede Zelle innerhalb dieses Blockes zur Speicherung einer logischen Eins gebracht. Einzelne Bits oder Zellen des Flash- oder Speicher-Arrays 20 können von dem logischen Eins-Zustand in den logischen Null-Zustand programmiert werden. Jedoch können keine einzelnen Bits von dem logischen Null-Zustand in den logischen Eins-Zustand programmiert werden. Bei dem Versuch ohne Löschen des Blockes ein Bit oder eine Zelle von einem logischen Null-Zustand in den logischen Eins-Zustand zu programmieren, wird die einzelne Zelle einfach nicht antworten (d. h. sie wird die Ladung oder den Zustand nicht halten).
  • 8 zeigt die während des speziellen Programmiermodus mit dem Datenstrom-Zustand 156 verknüpften Abläufe 202. Bei dem Verarbeitungsblock 204 empfängt der Flash-Speicher 24 Daten von dem Host-Prozessor 22 über den Datenbus 104, während der Flash-Speicher 24 sich in dem speziellen Programmiermodus befindet. Die zu dem Flash-Speicher 24 gesendeten Daten sind ein Datenstrom, der mit dem Datenwort Null bei der Startadresse innerhalb des Flash-Speicher-Arrays 20 beginnt. Bei dem Verarbeitungsblock 206 veranlassen die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltung 32 das Flash-Speicher-Array 20 für die Programmierung aktiviert zu sein.
  • Bei dem Verarbeitungsblock 208 beginnt die Schreib-Zustandsmaschine 28 die Programmierung des ersten Datenworts in dem von dem Host-Prozessor 22 gesendeten Datenstrom in das Array 20. Gemäß dem Prinzip eines Flash-Speichers werden nur solche Bits der Datenwörter tatsächlich programmiert, die von einer logischen Eins zu einer logischen Null programmiert werden. Vor der Programmierung befindet sich jedes Bit in dem zu programmierenden Block des Arrays 20 bereits in dem logischen Eins-Zustand (dem hexadezimalen FFFF Zustand). Diejenigen Bits, die von einer Eins zu einer Null geändert werden müssen, werden durch die Programmierung der jeweiligen Zellen programmiert.
  • Bei dem Verarbeitungsblock 208 wird nur ein einzelner Programmierpuls für jede zu programmierende Zelle verwendet. Während des speziellen Programmiermodus wird mit anderen Worten keine Mehrzahl von Programmierpulsen an jede Zelle gesendet, wie dies normalerweise während einer Operation eines nicht-speziellen Programmiermodus geschehen würde. Dies ist bei der Beschleunigung der Programmierung der Worte hilfreich. Wenn der spezielle Programmiermodus für die Prüfung eines Flash-Speichers 24 in der Fabrik verwendet wird, wird der Flash-Speicher 24 neu hergestellt sein und daher wird ein einzelner Programmierpuls üblicherweise zur erfolgreichen Programmierung einer Flash-Speicherzelle ausreichend sein. Dies steht im Kontrast zu älteren Flash-Speichern, die eine Mehrzahl von Programmierpulsen erfordern können, um eine Zelle in dem normalen Programmiermodus voll zu programmieren.
  • Bei dem Verarbeitungsblock 210 prüfen die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltung 32 auf eine Datenstrom-Beendigungsbedingung. Dies wird durch Prüfen des Datenbusses 104 und des Adressbusses 102 getan, um zu erkennen, ob die geeigneten Beendigungsinformationen sich auf diesen Bussen befinden. Wenn der Datenbus 104 und der Adressbus 102 weiterhin anzeigen, dass zur Programmierung in den Flash-Speicher 20 weitere Datenwörter gesendet werden, setzt sich die Verarbeitung 202 mit dem Verarbeitungsblock 212 fort. Bei dem Verarbeitungsblock 212 inkrementiert die Schreib-Zustandsmaschine 28 den internen Flash-Speicheradresszähler 63, um zu der nächsten Adresse zu gehen. Bei einer Ausführungsform sind die Adressen sequentiell. Bei einer alternativen Ausführungsform sind die Adressen nicht sequentiell und der Host 22 sendet verschiedene Adressen. Bei dieser alternativen Ausführungsform wird der Adresszähler nicht inkrementiert. Statt dessen wird die nächste Adresse von dem Host 22 empfangen. Der Programmfluss kehrt dann zu dem Verarbeitungsblock 208 zurück. Das nächste zu programmierende Wort wird bei einer Ausführungsform in das Flash-Speicher-Array 20 bei der nächsten durch den internen Adresszähler 63 angezeigten Adresse programmiert. Bei einer anderen Ausführungsform kommt die nächste Adresse von dem Host 22. Der Verarbeitungsfluss setzt sich dann mit dem Verarbeitungsblock 210 fort. Die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltungen 32 prüfen durch Überwachen des Datenbusses 104 und des Adressbusses 102 wieder auf die Datenstrom-Beendigungsbedingung. Wenn die Datenstrom-Beendigungsbedingung nicht vorgefunden wird, dann wird der interne Adresszähler 63 wieder durch die Schreib-Zustandsmaschine 28 bei Verarbeitungsblock 212 inkrementiert. Bei einer anderen Ausführungsform kommt die nächste Adresse statt dessen von dem Host 22. Der Verarbeitungsfluss setzt sich dann mit dem Verarbeitungsblock 208 fort und das nächste Wort in dem Datenstrom wird in das Flash-Speicher-Array 20 durch die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltungen 32 programmiert. Dieses Wort wird in die durch den internen Adresszähler angezeigte nächste Adresse programmiert. Bei einer anderen Ausführungsform kommt die nächste Adresse statt dessen von dem Host 22. Der Verarbeitungsfluss bewegt sich dann wieder zu dem Verarbeitungsblock 210, wo eine Prüfung auf die Datenstrom-Beendigungsbedingung stattfindet.
  • Die Abfolge der Bewegung von dem Verarbeitungsblock 208 zu dem Verarbeitungsblock 210 zu dem Verarbeitungsblock 212 und zurück zu dem Verarbeitungsblock 208 setzt sich fort, bis alle Datenworte in dem Datenstrom programmiert sind.
  • Die Spezielle-Programmierungs-Schaltungen 32 stellen sicher, dass die interne Programmierungs-Verifikation während des speziellen Programmiermodus nicht durch den Flash-Speicher 24 während des Datenstroms getätigt wird. Daher wird der durch den Host-Prozessor 22 über die Leitungen 26 an den Flash-Speicher 24 gesendete Datenstrom nicht durch irgendwelche durch den Host-Prozessor 22 gesendeten Anweisungen unterbrochen. Mit anderen Worten sendet der Host-Prozessor 22 nicht für jedes Wort in dem in den Flash-Speicher 24 zu programmierenden Datenstrom eine einzelne Programmanweisung. Der Flash-Speicher 24 führt auch nicht für jedes in den Flash-Speicher 24 programmierte Datenwort eine interne Programmierungs-Verifikation aus.
  • Verschiedene Datenstrom-Beendigungsbedingungen sind für verschiedene Ausführungsformen möglich. Bei einer Ausführungsform wird die gleiche Adresse während der Datenstrom-Bedingungen auf den Bus 102 gesendet. Wenn der Host-Prozessor 22 die auf dem Adressbus 102 gesendete Adresse ändert, die mit dem Datenwort des hexadezimalen FFFF gekoppelt ist, dann wird diese Bedingung zu der Datenstrom-Beendigungsbedingung. Die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltung 32 prüfen mit anderen Worten die Adresse auf dem Adressbus 102 und die Datenworte auf dem Datenbus 104, und wenn sie eine geänderte Adresse und ein entsprechendes Datenwort eines hexadezimalen FFFF erkennen, bemerken sie, dass die Datenstrom-Beendigungsbedingung ausgelöst wurde. Bei einer Abwandlung der Ausführungsform braucht die geänderte Adresse nicht durch ein Datenwort eines Hexadezimals FFFF begleitet werden, um eine Daten-Beendigungsbedingung auszulösen.
  • Bei einer anderen Ausführungsform die darauf beruht, dass der Host 22 verschiedene Adressen mit den Daten sendet, kann die Daten-Beendigungsbedingung im Senden der gleichen Adresse wie die letzte Adresse, gekoppelt mit dem Datenwort eines FFFF-Hexadezimals bestehen. Für eine Abwandlung der Ausführungsform braucht die gleiche Adresse nicht von einem Datenwort eines FFFF-Hexadezimals begleitet sein, um eine Daten-Beendigungsbedingung auszulösen.
  • Bei einer anderen Ausführungsform der Erfindung besteht die Datenstrom-Beendigungsbedingung bezüglich des Zustandes 156 in dem Senden von Datenwörtern auf dem Datenbus 104 von dem Host-Prozessor 22 zu dem Flash-Speicher 24, die alle logische Einsen sind. Mit anderen Worten ist das abschließende Datenwort in dem Datenstrom als FFFF Hexadezimal bestimmt. Für eine Ausführungsform der Erfindung wird der Flash-Speicher 24 während des speziellen Programmiermodus im Werk geprüft, so dass die Prüfspezifikation von der Anforderung ausgeht, dass das letzte Datenwort in dem zu programmierenden Datenstrom zu Prüfzwecken ein ausschließlich logische Einsen enthaltendes Datenwort ist.
  • Bei einer weiteren Ausführungsform der Erfindung erfordern die Prüfspezifikationen, dass die während des Datenstroms auf dem Adressbus 102 gesendete Adresse für jedes Speicherwort inkrementiert wird. Mit anderen Worten inkrementieren die Adressen, wenn neue Datenwörter über den Datenbus 104 von dem Host-Prozessor 22 während dieser Spezieller-Programmiermodus-Datenstrom-Beendigungsbedingung gesendet werden. Bei dieser Ausführungsform wird die Datenstrom-Beendigungsbedingung durch eine nicht inkrementierte Adresse auf dem Adressbus 102 ausgelöst, gekoppelt mit einem Datenwort eines FFFF-Hexadezimals. Mit anderen Worten wird das Ende des Datenstromes dadurch angezeigt, dass die Adresse für das letzte Datenwort in dem Datenstrom, das mit dem Datenwort eines FFFF-Hexadezimals gekoppelt ist, gleich bleibt. Die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltungen 32 würden auf eine solche Datenstrom-Beendigungsbedingung überprüfen. Bei einer Abwandlung dieser Ausführungsform würde die Bedingung einer nicht inkrementierten Adresse eine Datenbeendigungsbedingung auslösen, auch wenn sie nicht von einem Datenwort eines FFFF-Hexadezimals begleitet wird.
  • Wie in 8 gezeigt, bewegt sich der Verarbeitungsfluss zu dem Verarbeitungsblock 214, wenn die Datenstrom-Beendigungsbedingung bei dem Verarbeitungsblock 210 erkannt wird. Bei dem Verarbeitungsblock 214 deaktivieren die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltung 32 ferner die Programmierpulse, so dass keine zusätzlichen Worte in das Flash-Speicher-Array 20 programmiert werden. Der Verarbeitungsfluss bewegt sich zu dem Verarbeitungsblock 216, der die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltungen 32 zur Deaktivierung des Arrays 20 gegen weitere Programmierung veranlasst. Der Verarbeitungsfluss bewegt sich dann zu dem Verarbeitungsblock 218, wo die Programmierung von Strömen von Datenwörtern in das Flash-Speicher-Array 20 endet.
  • Bei einer Ausführungsform der Erfindung wirken die Blockbegrenzungen auf dem Flash-Speicher-Array 20 nicht als Datenstrom-Beendigungsbedingungen. In anderen Worten kann die Datenstromprogrammierung über Blockgrenzen innerhalb des Flash-Speicher-Arrays 20 fortsetzen. Daher kann die Programmierung von Datenwörtern ununterbrochen auch über Flash-Blockgrenzen unter der Annahme fortsetzen, dass jeder Block vorher gelöscht wurde.
  • Es wird wieder Beug auf 7 genommen. Sobald die Daten-Beendigungsbedingung durch das Flash-Speicher-Array 20 empfangen wurde, bewegt sich der Verarbeitungsfluss von dem Zustand 156 zurück zu dem Zustand 152. Bei dem Zustand 152 befindet sich die Anweisungs-Benutzerschnittstelle in dem Spezieller-Programmiermodus-Zustand und der Ausgabe-Multiplexer 45 gibt ein Statussignal aus. Obwohl der Datenstrom programmiert wurde, verbleibt der Flash-Speicher 24 in dem Spezieller-Programmiermodus-Zustand. Dennoch hat bis dahin keine interne Verifikation durch den Flash-Speicher 24 bezüglich der erfolgreichen Programmierung des während Schritt 156 gesendeten Datenstroms stattgefunden.
  • Die nächste Operation in dem Spezieller-Programmiermodus-Verarbeitungsfluss ist es, eine Programmierungs-Verifikation extern zu dem Flash-Speicher 24 auszuführen. Dieser externe Verifikations-Verarbeitungsfluss wird durch den Host-Prozessor 22 durch Senden einer Lese-Array-Anweisung an die Anweisungs-Benutzerschnittstelle 40 über die Leitungen 26 gestartet. Wie in 7 gezeigt, bewirkt die an den Flash-Speicher 24 gesendete Lese-Array-Anweisung, dass der Verarbeitungsfluss sich zu dem Zustand 158 bewegt. Bei Zustand 158 befindet sich die Anweisungs-Benutzerschnittstelle 4 in dem Lese-Array-Zustand (d. h. dem RD Array-Zustand). Der Ausgabe-Multiplexer 45 gibt ein Lese-Array-Signal aus. Während des Zustandes 158 liest der Host-Prozessor die Daten, die während des Zustandes 156 in das Flash-Speicher-Array 20 während des Strömens der Daten programmiert wurden. Während des Zustandes 158 liest der Host-Computer 22 die Daten und verifiziert ob, oder ob nicht die strömenden Datenwörter erfolgreich in das Array 20 programmiert wurden.
  • 9 zeigt die Abläufe 250 für die externe Programmierungs-Verifikation während des speziellen Programmiermodus des Flash-Speichers 24. Bei Verarbeitungsblock 252 gibt der Host-Prozessor 22 eine Lese-Array-Anweisung über die Leitung 26 an die Anweisungs-Benutzerschnittstelle 40 heraus. Der Verarbeitungsfluss bewegt sich dann zu dem Verarbeitungsblock 254, wo der Flash-Speicher 24 den Datenvergleichspegel auf den Verifikationspegel setzt.
  • Bei Verarbeitungsblock 254 wird statt der Ausführung einer internen Programmierungs-Verifikation bezüglich des Datenwortes durch den Datenkomparator 81 das Datenwort nicht intern verifiziert, obwohl eine Abtastung unter Verwendung eines Spielraum-Abtastschemas (margined-sensing scheme) ausgeführt wird. Der Verarbeitungsfluss bewegt sich dann zu dem Verarbeitungsblock 256. Bei dem Verarbeitungsblock 256 wird der Host 22 eine Leseanweisung an die Anweisungs-Benutzerschnittstelle 40 zum Lesen eines Datenwortes herausgeben, welches das erste Datenwort in dem Datenstrom ist das in das Flash-Speicher-Array 20 programmiert wurde. Beim Empfang der Lese-Anweisung von dem Host-Prozessor bewirken die Anweisungs-Benutzerschnittstelle 40, die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltung 32, dass das erste Datenwort über den Datenbus 104 an den Host-Prozessor 22 gesendet wird.
  • Die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltung 32 bewirkt, dass die Leseoperation bezüglich des Flash-Speicher-Arrays 20 bei den Programmierungs-Verifikations-Spannungspegeln stattfindet. Bei dem Verarbeitungsblock 256 bewirken die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltung 32, dass ein beschränktes Abtastschema verwendet wird. Eine erhöhte Lesespannung wird an die programmierten Zellen angelegt. Der von einer die programmierten Zellen enthaltenden Spalte gelesenen programmierten Spielraum-Spannung abgeleitete Strom IPMRGN wird in einen der Abtastverstärker 117a117p mit dem Referenzstrom IPREF gespeist, welches der Strom von der herstellerseitig gesetzten Programmreferenz-Schaltung 111 ist. Wenn IPMRGN kleiner als IPREF ist, gibt der jeweilige Abtastverstärker der Abtastverstärker 117a117p eine logische Null aus. Wenn IPMRGN größer ist als IPREF, gibt der Abtastverstärker der Abtastverstärker 117a117p eine logische Eins aus. Diese Operationen finden unter Verwendung jedes der Abtastverstärker 117a117p für alle Bits des Wortes parallel statt.
  • Bewegt man sich zum Verarbeitungsblock 258, führt der Host-Prozessor 22 eine Verifikation des ersten Datenworts extern durch. Bei einer Ausführungsform der Erfindung ist die Verifikationsoperation 258 eine Vergleichsoperation, wobei der Host-Prozessor 22 eine Verarbeitungs-Schaltung 33 zum Vergleich des von dem Flash-Speicher-Array 24 erhaltenen Datenwortes mit einem in den Speicher 34 gespeicherten Speicherwort verwendet. Das in dem Speicher 34 gespeicherte Speicherwort ist das ursprüngliche Wort, das von dem Host-Prozessor 22 in das Flash-Speicher-Array 20 gespeichert werden sollte. So verwendet der Host-Computer 22 den Speicher 34 zur Speicherung des Datenstromes, den der Host-Prozessor 22 an den Flash-Speicher 24 als Teil der Datenstromoperation gesendet hat. Die Daten in dem Speicher 34 werden dann mit den in dem Flash-Speicher-Array 22 gespeicherten Daten verglichen, um eine externe Daten-Verifikation auszuführen.
  • Der Verarbeitungsfluss bewegt sich dann zu dem Verarbeitungsblock 260. Bei dem Verarbeitungsblock 260 sendet der Host 22 über die Leitungen 26 eine andere Leseanweisung an die Anweisungs-Benutzerschnittstelle 40. Dies bewirkt das Lesen des zweiten Datenwortes in dem Datenstrom durch den Host 22 von dem Flash-Speicher-Array 20 über den Datenbus 104. In dem Verarbeitungsblock 260 sendet der Host 22 ebenfalls die Adresse des zu lesenden Datenwortes über den Adressbus 102 an den Flash-Speicher 24. Bei dem Verarbeitungsblock 260 führen die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltungen 32 des Flash-Speichers 24 unter Verwendung von beschränkten Spannungs-Abtastpegeln eine Leseoperation bezüglich des zweiten Datenwortes aus und senden die zweiten Datenwörter über den Datenbus 104 an den Hostprozessor 22.
  • Der Verarbeitungsfluss bewegt sich dann zu dem Verarbeitungsblock 262. Bei dem Verarbeitungsblock 262 führt der Host 22 eine Verifikation (d. h. Vergleich) des zweiten Datenworts bezüglich des zur Programmierung vorgesehenen Datenwortes durch. Dies wird getan, um zu prüfen, ob das Datenwort erfolgreich in das Datenarray 20 programmiert wurde.
  • Der Verarbeitungsfluss geht weiter. Der Host 22 liest das nächste Datenwort durch Senden einer Lese-Anweisung zusammen mit einer Adresse an das Flash-Speicher-Array 24. Der Flash-Speicher 24 antwortet durch Ausführen eines Lesevorgangs bei einem beschränkten Abtastpegel und Senden des gelesenen Datenwortes an den Host-Prozessor 22 über die Leitungen 26. Der Host-Prozessor 22 führt dann einen Vergleich bezüglich dieses nächsten Datenwortes durch.
  • Der Verarbeitungsfluss geht weiter. Schließlich liest bei Verarbeitungsblock 270 der Host-Prozessor 22 das letzte Datenwort in den Datenstrom. Bei dem Verarbeitungsblock 270 sendet der Host-Prozessor 22 eine Lese-Anweisung und eine Adresse an das Speicher-Array 24. Der Flash-Speicher 24 antwortet durch Lesen des letzten Datenworts unter Verwendung einer begrenzten Spannung und sendet ein letztes Datenwort über die Leitungen 26 an den Host-Prozessor 22. Der Verarbeitungsfluss bewegt sich dann zu dem Verarbeitungsblock 272. Bei dem Verarbeitungsblock 272 verifiziert der Host-Prozessor 22 das letzte Datenwort durch Ausführen eines Vergleichs bezüglich des in dem Speicher 34 gespeicherten letzten Datenwortes von dem Datenstrom.
  • Der externe Verifikationsablauf 250 bewegt sich dann zu dem Verarbeitungsblock 274. Bei dem Verarbeitungsblock 274 prüft der Host-Prozessor 22, ob alle Worte in dem Datenstrom erfolgreich während des durch den Host-Prozessor 22 überwachten externen Verifikationsprozesses verglichen wurden. Wenn alle Datenworte erfolgreich mit dem zur Programmierung in den Flash-Speicher 24 bestimmten Datenworten verglichen wurden, bewegt sich der Verarbeitungsfluss zu dem Verarbeitungsblock 276, wo der externe Verifikationsablauf endet. Wenn bei dem Verarbeitungsblock 274 der Host-Prozessor 22 zu dem Schluss kommt, dass nicht alle Worte als Teil der externen Verifikation erfolgreich verglichen wurden, kehrt der Verarbeitungsfluss zurück zu dem Verarbeitungsblock 278. Bei dem Verarbeitungsblock 278 reprogrammiert der Host-Prozessor 22 die fehlerhaften Datenworte. Dies wird getan, indem der Host-Prozessor 22 eine Datenstrom-Setup-Anweisung über die Leitungen 26 an die Anweisungs-Benutzerschnittstelle 40 des Flash-Speichers 24 sendet. Dies wird in 7 durch die Bewegung von dem Zustand 158 in den Zustand 154 gezeigt. Der Host-Prozessor 22 sendet dann Datenwörter über die Leitungen 26 mit einer Adresse an den Flash-Speicher 24. Dies bewirkt, dass die Anweisungs-Benutzerschnittstelle 40 von dem Zustand 154 in den Zustand 156 geht. Bei dem Zustand 156 werden fehlerhafte Datenworte in das Flash-Speicher-Array 20 in einer strömenden Weise reprogrammiert. Gibt es nur ein fehlerhaftes Datenwort, so wird nur dieses fehlerhafte Datenwort in das Flash-Speicher-Array 20 bei der jeweiligen Adresse reprogrammiert.
  • Der Host-Prozessor 22 sendet dann den Datenstrom-Beendigungsauslöser an den Flash-Speicher 24. Die Anweisungs-Benutzerschnittstelle 40 springt dann von dem Zustand 156 in den Zustand 152. Der in 9 gezeigte Ablauf für die externe Verifikation 250 geht dann zu dem Verarbeitungsblock 280. Bei dem Verarbeitungsblock 280 führt der Host-Prozessor 22 einen externen Lesevorgang aus und eine Verifikation der reprogrammierten Worte. Insbesondere sendet der Host-Prozessor 22 eine Lese-Array-Anweisung an die Anweisungs-Benutzerschnittstelle 40 über die Leitungen 26. Die Anweisungs-Benutzerschnittstelle geht dann von dem Zustand 152 zu dem Zustand 158, gezeigt in 7. Der Host-Prozessor 22 sendet eine Lese-Anweisung für jedes reprogrammierte Datenwort. Das Flash-Speicher-Array 24 liest die reprogrammierten Datenworte bei dem Spielraum-Abtastpegel und sendet diese Datenworte über die Leitungen 26 an den Host-Speicher 22. Der Host-Prozessor 22 verifiziert (d. h. vergleicht) dann jedes Datenwort, so wie es empfangen wird mit dem erwarteten Datenwort das in dem Zwischenspeicher 34 gespeichert ist.
  • Der Verarbeitungsfluss geht dann zu dem in 9 gezeigten Verarbeitungsblock 282. Bei dem Verarbeitungsblock 282 prüft der Host-Prozessor 22, ob irgendeines der reprogrammierten Worte nicht verifiziert werden konnte und daher immer noch bei der externen Verifikationsprüfung fehlerhaft ist. Wenn eines der reprogrammierten Datenworte immer noch fehlerhaft ist, geht der Ablauf zu Schritt 286. Bei Schritt 286 vermerkt der Host-Prozessor 22 einen Fehler bezüglich der Programmierung des Flash-Speichers 24. Bei Schritt 286 zeigt der Host-Prozessor mit anderen Worten an, dass der Flash-Speicher 24 im dem als Teil des speziellen Programmiermodus durchgeführten Test fehlerhaft war.
  • Bei einer alternativen Ausführungsform der Erfindung würde der Host-Prozessor 22 den speziellen Programmiermodus verlassen wenn nicht alle Worte erfolgreich bei dem Verarbeitungsblock 274 verglichen wurden und versuchen, die fehlerhaften Datenworte unter Verwendung von normalen Programmierverfahren mit einer internen Verifikation durch den Flash-Speicher 24 zu reprogrammieren. Als Teil dieser Reprogrammierung würde der Flash-Speicher 24 eine Mehrzahl von Programmierpulsen für jedes Wort anlegen, um zu versuchen, diese Worte zu programmieren. Wenn bei diesem alternativen Ablauf die reprogrammierten Worte nicht erfolgreich reprogrammiert werden, würde der Flash-Speicher 24 in dem Statusregister 23 Fehlerhaftigkeit der Programmierung dieser Datenworte anzeigen.
  • Wenn jedoch bei dem Verarbeitungsblock 282 der Host-Computer bestimmt, dass alle der reprogrammierten Worte richtig verifiziert wurden und das keines beim Programmieren fehlerhaft ist, geht der Verarbeitungsfluss zu dem Verarbeitungsblock 284. Bei dem Verarbeitungsblock 284 zeigt der Host-Prozessor an, dass das Prüfen des Flash-Speicher-Arrays bezüglich des programmierten Stroms von Datenworten erfolgreich beendet wurde.
  • Während des speziellen Programmiermodus geht die Anweisungs-Benutzerschnittstelle 40 immer zu dem Zustand 158, welcher der Lese-Array-Zustand ist, wenn durch die Anweisungs-Benutzerschnittstelle 40 eine ungültige Anweisung empfangen wird.
  • Wenn der Host-Prozessor alle Prüfungen während des speziellen Programmiermodus abgeschlossen hat, wird der Host-Prozessor den speziellen Programmiermodus verlassen wollen. Der Host-Prozessor 22 kann den speziellen Programmiermodus zu verlassen wünschen, gleich ob oder ob nicht der Flash-Speicher 24 die verschiedenen, durch den Host-Prozessor 22 ausgeführten Programmierprüfungen durchlaufen hat oder auch nicht.
  • Um den speziellen Programmiermodus zu verlassen, sendet der Host-Prozessor 22 eine Verlasse-speziellen-Programmiermodus-Anweisung über die Leitungen 26 an den Flash-Speicher 24. Die Verlasse-speziellen-Programmiermodus-Anweisung wird durch die Anweisungs-Benutzerschnittstelle 40 des Flash-Speichers 24 empfangen. Die Anweisungs-Benutzerschnittstelle tritt dann in den Zustand 160 ein. Im Zustand 160 befindet sich die Anweisungs-Benutzerschnittstelle in dem Status-Zustand. Im Zustand 160 gibt der Ausgabe-Multiplexer 45 ein Statussignal aus. Im Zustand 160 ist das Flash-Speicher-Array 24 nicht länger in dem speziellen Programmiermodus. Sobald das Flash-Speicher-Array nicht mehr in dem speziellen Programmiermodus ist, kann das Flash-Speicher-Array 24 seine üblichen internen Programmierungs-Verifikationsoperationen ausführen.
  • Bei einer Ausführungsform der Erfindung kann der spezielle Programmiermodus dauerhaft bezüglich des Flash-Speichers 24 deaktiviert werden. Bei einer Ausführungsform wird dies getan, nachdem ein Flash-Speicher 24 erfolgreich den Programmiertest während des speziellen Programmiermodus abgeschlossen hat. Der spezielle Programmiermodus wird deaktiviert, so dass der den Flash-Speicher 24 erwerbende Kunde nicht in der Lage ist, in den speziellen Programmiermodus einzutreten. Bei dieser Ausführungsform ist mit anderen Worten der spezielle Programmiermodus ein spezieller herstellerseitiger Programmiermodus der ausschließlich für die Werksprüfungen genutzt wird.
  • Um den speziellen Programmiermodus dauerhaft zu deaktivieren, geht der Verarbeitungsfluss zu dem Zustand 162. Bei dem Zustand 162 sendet der Host-Prozessor 22 eine Deaktivierespeziellen-Programmiermodus-Anweisung über die Leitungen 26 an die Anweisungs-Benutzerschnittstelle 40. Der Verarbeitungsfluss geht dann zu dem Verarbeitungsblock 164. Bei dem Verarbeitungsblock 164 deaktiviert der Flash-Speicher 24 den speziellen Programmiermodus dauerhaft. Insbesondere setzen die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltungen 32 bei dem Verarbeitungsblock 164 ein internes Register oder CAM (Assoziativspeicher), was die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltung 32 daran hindert, je wieder in den speziellen Programmiermodus einzutreten. Wenn der spezielle Programmiermodus dauerhaft deaktiviert ist, kann der Endbenutzer nicht mehr in den speziellen Programmiermodus eintreten. Dies bedeutet, dass auch dann, wenn ein Host-Computer 22 eine Anweisung des speziellen Programmiermodus an den Flash-Speicher 24 senden würde, die Schreib-Zustandsmaschine und die Schaltungen 32 es dem Flash-Speicher-Array nicht erlauben würden, in den speziellen Programmiermodus einzutreten. Bei deaktiviertem speziellen Programmiermodus würde dann die Programmierung des Flash-Speicher-Arrays im normalen Betrieb stattfinden, was die interne Programmierungs-Verifikation für jede Programmierung eines Datenworts enthalten würde.
  • Bei einer alternativen Ausführungsform kann dieser spezielle Programmiermodus semi-dauerhaft durch Setzen eines Bits in dem Code deaktiviert werden, der die Schaltungen 32 und die Schreib-Zustandsmaschine 38 steuert. Bei einer alternativen Ausführungsform können bestimmte Anweisungsfolgen zur Veränderung der Deaktivierung des speziellen Programmiermodus verwendet werden.
  • Diese Anweisungsfolgen würden dem Anwender nicht mitgeteilt, sondern nur dem Hersteller des Flash-Speichers bekannt sein. Bei einer weiteren anderen alternativen Ausführungsform könnten die Deaktivierungs-Schaltungen bezüglich des speziellen Programmiermodus durch den Hersteller zugreifbar sein, obwohl sie in einem Register oder CAM angeordnet ist und auch denn verändert werden, wenn das Bit oder Register auf dauerhafte Deaktivierung des speziellen Programmiermodus gesetzt ist.
  • Bei einer Ausführungsform aktiviert die Eingabe eines speziellen Programmierungs-Zugriffscodes in die Anweisungs-Benutzerschnittstelle 40 den Speziellen-Programmiermodus des Speichers. Wie unten ausführlicher beschrieben wird, wird dann eine Mehrzahl von Wörtern in den Speicher programmiert. Weil der spezielle Programmiermodus aktiviert ist, ist die interne Verifikation deaktiviert. Dann wird der spezielle Programmiermodus des Speichers verlassen.
  • 9A zeigt eine alternative Programmierungsfolge einer Ausführungsform. Zuerst wird das Statusregister bei dem Verarbeitungsblock 300 gelesen. Wenn das Statusregister bei einer Ausführungsform 0 lautet, ist die Programmierphase (PGM) bereit zu beginnen, wie in Verarbeitungsblock 302 gezeigt. Als nächstes werden die Daten im Verarbeitungsblock 304 in den Speicher geschrieben. Die Daten werden kontinuierlich gesendet, bis eine Programmierzeit (Xns) verstrichen ist (d. h. Zeitüberschreitung) wie in Verarbeitungsblock 206 gezeigt. Als nächstes werden die letzten Daten in dem Verarbeitungsblock 308 geprüft. Wenn das letzte Datenwort nicht an den Speicher gesendet wurde, wird der Programmierungsablauf wiederholt, wie in den Verarbeitungsblöcken 304, 306 gezeigt. Wenn das letzte Datenwort an den Speicher gesendet wurde, wird die Programmierphase durch Schreiben von FFFF in die Blockadresse beendet, wie in Verarbeitungsblock 310 gezeigt.
  • 9B zeigt eine alternative Verifikationsfolge einer Ausführungsform. Die Verifikation kann entweder durch einen externen Verifikations-Prozessor oder durch einen Speicherinternen Verifikations-Prozessor erreicht werden, wenn dieser aktiviert ist. Zuerst wird in den Verarbeitungsblöcken 312, 313 der Status überprüft, um zu bestimmen, ob die Verifikationsphase bereit ist. Als nächstes werden die gleichen Datenwörter, die während der Programmierphase gesendet wurden, wieder an den Speicher im Verarbeitungsblock 314 gesendet und die wiedergesendeten Datenwörter werden mit den Datenwörtern verglichen die an den Speicher während der Programmierphase gesendet wurden. Alternativ können die Datenwörter sowohl an den Speicher als auch an den zweiten Speicher während der Programmierphase gesendet werden. Bei einem Block wird, wie oben beschrieben, der gesamte Block von Wörtern in den Speicher programmiert, wenn irgendeines der Wörter nicht während des Verifikationsschrittes 314 erfolgreich verifiziert wird. Die Verifikation wird dann wiederholt. Bei einer alternativen Ausführungsform wird in dem Fall, in dem irgendeines der Wörter nicht erfolgreich während des Verifikationsschrittes 314 verglichen wird das eine Wort, das nicht verifiziert wurde reprogrammiert und die Verifikation wiederholt. Als nächstes wird in den Verarbeitungsblöcken 315 und 316 der Status geprüft, um zu bestimmen, ob die Verifikationsphase fertig ist. Wenn das letzte Datenwort verifiziert wurde, wird die Programmierphase durch Schreiben von FFFF in eine andere Adresse beendet, wie in dem Verarbeitungsblock 318 gezeigt.
  • 10 zeigt die Programmierungs- und Verifikationsabläufe 320 für einen Hashing enthaltenden speziellen Programmiermodus. Für die in 10 gezeigte Operation 320 gilt im allgemeinen der in 7 gezeigte Verarbeitungsablauf, bis auf die Hinzufügung des Hashings durch den Flash-Speicher 24.
  • Für die Operation 320 gibt es statt einer mit dem Lesen jedes Datenworts zugeordneten Verifikation eine Hash-Operation, die jedem Datenwort zugeordnet ist. Bei Beendigung der Programmierung des Datenstroms gibt es einen einzelnen Verifikationsschritt, der den Vergleich von Hash-Werten enthält.
  • Wie in 10 gezeigt, startet der Verarbeitungsfluss 320 bei dem Verarbeitungsblock 322. Bei dem Verarbeitungsblock 322 tritt das Flash-Speicher-Array 24 in den speziellen Programmiermodus ein. So tritt das Flash-Speicher-Array 24 in den speziellen Programmiermodus-Zustand 152 ein, in dem der Host-Prozessor eine Spezieller-Programmiermodus-Anweisung an den Flash-Speicher 24 sendet.
  • Der Verarbeitungsfluss geht zu dem Verarbeitungsblock 324. Bei dem Verarbeitungsblock 324 wird die Datenstrom-Setup-Anweisung durch den Host-Prozessor 22 über die Leitungen 26 an das Flash-Speicher-Array 24 gesendet. So wird in den Zustand 154 eingetreten.
  • Der Verarbeitungsfluss geht zu dem Verarbeitungsblock 326, bei dem der Host-Prozessor 22 ein erstes Datenwort in dem Datenstrom an den Flash-Speicher 24 über die Leitungen 26 zur Programmierung in das Array 20 sendet. Der Zustand der Anweisungs-Benutzerschnittstelle 40 geht zu dem Zustand 156, was der datenströmende Zustand ist. Bei Zustand 156 empfängt der Flash-Speicher einen Strom von Datenworten, die in das Flash-Speicher-Array 20 programmiert werden. Bei einer Ausführungsform erfordert der Strom von Datenworten keine sequentiellen Adressen. Bei einer anderen Ausführungsform ist der Strom von Datenworten für sequentielle Adressen bestimmt.
  • Der Verarbeitungsfluss geht zu dem Verarbeitungsblock 328, bei dem das Flash-Speicher-Array einen Hash bezüglich des ersten Datenwortes ausführt, das programmiert wurde. Der bei dem Verarbeitungsblock 328 ausgeführte Hash ist ein dynamischer Hash, weil er bezüglich jedes in das Flash-Speicher-Array 20 programmierten Datenwortes ausgeführt wird. Der Hash wird mit anderen Worten jeweils für ein Wort ausgeführt.
  • Bei dem Verarbeitungsblock 328 führen die Schreib-Zustandsmaschine 28 und die Spezieller-Programmiermodus-Schaltung 32 einen Hash durch ein Durchlaufen des ersten Datenwortes durch einen Hashing-Algorithmus aus, der die Daten in ein kleineres Datenwort destilliert, welches die Ausgabe des Hashing-Algorithmus ist. Die Schreib-Zustandsmaschine 28 und die Schaltung 32 speichern zeitweise den in Verarbeitungsblock 328 erzeugten Hash-Wert auf einem Platz innerhalb des Flash-Speicher-Arrays 20. Das Array 20 speichert auch den Hash-Algorithmus. Bei einer alternativen Ausführungsform der Erfindung speichert die Schreib-Zustandsmaschine 28 und die Schaltung 32 den Hash-Algorithmus in einem Mikrocode innerhalb der Schreib-Zustandsmaschine 28.
  • Der Verarbeitungsfluss geht dann zu dem Verarbeitungsblock 330. Bei dem Verarbeitungsblock 330 wird ein zweites Datenwort in das Flash-Speicher-Array 2 programmiert. Dies ist das zweite Datenwort des Datenstroms.
  • Der Verarbeitungsfluss geht zu dem Verarbeitungsblock 332, bei dem der Flash-Speicher 24 eine Hash-Operation bezüglich eines zweiten Datenwortes ausführt das für die Verbindung mit dem Hash des ersten Datenwortes programmiert wurde. Mit anderen Worten empfängt der Hash-Algorithmus als Eingaben sowohl das Ergebnis der ersten Hashing-Operation als auch das zweite Datenwort. Der Hashing-Algorithmus gibt eine Hashing-Zwischenausgabe aus, die in dem Flash-Speicher-Array 20 gespeichert wird.
  • Der Verarbeitungsfluss 320 wird für die nächste Folge von Datenworten innerhalb des Datenstroms fortgesetzt. Jedes Datenwort wird in das Flash-Speicher-Array 20 programmiert. Das Flash-Speicher-Array 24 führt ein dynamisches Hashing bezüglich jedes programmierten Datenworts aus. Der Hashing-Algorithmus verwendet die neu programmierten Datenworte und die Ergebnisse der vorhergehenden Hashing-Operation zur Erzeugung eines neuen Hash-Wertes. Das Ergebnis wird in dem Array 20 gespeichert. Der Verarbeitungsfluss 320 geht weiter zu dem Verarbeitungsblock 350, bei dem das letzte Datenwort in dem Strom in das Array 20 durch den Flash-Speicher 24 programmiert wird. Bei dem Verarbeitungsblock 320 veranlassen die Schreib-Zustandsmaschine und die Spezieller-Programmiermodus-Schaltungen 32 den Hash-Algorithmus zur Ausführung einer Hash-Operation bezüglich des letzten durch den Flash-Speicher programmierten Datenworts und der vorhergehenden Ausgabe des Hashing-Algorithmus. Das Hash-Wert-Ergebnis wird in dem Array 20 gespeichert.
  • Der Verarbeitungsfluss geht dann zu dem Verarbeitungsblock 354. Bei dem Verarbeitungsblock 354 vergleicht der Host-Prozessor 22 den in dem Flash-Speicher-Array 20 gespeicherten Hash-Wert mit einem Hash-Wert, den der Host-Prozessor 22 in dem Speicher 34 gespeichert hat, um zu überprüfen ob sie gleich sind. Der in dem Speicher 34 gespeicherte Hash-Wert ist ein Ergebnis eines dynamischen Hashings der in dem Speicher 34 gespeicherten Datenstromworte, die durch den Host-Prozessor 22 zur Programmierung in den Flash-Speicher 24 gesendet wurden. Der Host-Prozessor 22 führt mit anderen Worten den gleichen Hashing-Algorithmus wie der Flash-Speicher 24 bezüglich der Datenworte aus, die in den Flash-Speicher 24 programmiert werden sollen. Wenn die in dem Array 20 und dem Speicher 34 gespeicherten Hash-Werte gleich sind, geht der Verarbeitungsfluss zu dem Verarbeitungsblock 356, was bedeutet, dass die Datenworte in dem Datenstrom alle erfolgreich in den Flash-Speicher 24 programmiert wurden. Dies ist dadurch begründet, dass eine Hash-Operation bedeutet, dass es eine hohe Wahrscheinlichkeit dafür gibt, dass das Ergebnis der Hash-Operation eine eindeutige Zahl ist. Es gäbe nur eine sehr kleine Wahrscheinlichkeit dafür, dass die Hash-Werte gleich sind obwohl die Datenstromworte nicht erfolgreich in den Flash-Speicher 24 programmiert wurden. Wenn die Hash-Werte bei dem Verarbeitungsblock 354 gleich sind, gibt es eine hohe Wahrscheinlichkeit dafür, dass der Datenstrom erfolgreich in den Flash-Speicher 24 programmiert wurde.
  • Wenn das Hashing-Verfahren 320 abgeschlossen ist, würde der Prozessor 22 den Flash-Speicher 24 veranlassen, den speziellen Programmiermodus zu verlassen.
  • Wenn bei dem Verarbeitungsblock 354 der Host-Prozessor 22 bestimmt, dass die Hash-Werte nicht gleich sind, geht der Verarbeitungsfluss zu dem Verarbeitungsblock 358, wo der Host-Prozessor 22 einen Fehler bei der Programmierung des Flash-Speichers 24 anzeigt. Wenn die Hash-Werte nicht gleich sind ist es hochwahrscheinlich, dass eines oder mehrere der Datenworte nicht erfolgreich in den Flash-Speicher 24 programmiert wurden.
  • Bei einer Ausführungsform der Erfindung wird bei einer an dem Verarbeitungsblock 358 angezeigten Fehlerbedingung der Hashing-Verarbeitungsfluss 320 für alle Datenworte des Datenstroms wiederholt.
  • Bei einer alternativen Ausführungsform der Erfindung wird der spezielle Programmiermodus verlassen, wenn ein Fehler bei dem Verarbeitungsblock 358 angezeigt wird und der Host-Prozessor 22 unternimmt den Versuch den Flash-Speicher 24 unter Verwendung von normalen Programmierverfahren zu reprogrammieren, was die interne Programmierungs-Verifikation durch den Flash-Speicher 24 enthält.
  • Bei einer alternativen Ausführungsform der Erfindung könnte der Verarbeitungsfluss 320 zusätzlich zu dem dynamischen Hashing der programmierten Datenworte das Hashing von innerhalb des Flash-Speichers 24 gespeicherten Statusinformationen enthalten. Die Statusinformation könnte die in dem Statusregister 83 gespeicherten Statuswerte und andere Statusinformationen enthalten. Der Host-Prozessor 22 würde in seinem Speicher 34 einen erwarteten Hash-Wert speichern, der sich aus dem Hashing der Datenstromworte und der erwarteten Statusinformation des Flash-Speichers 24 ergeben würde. Das Hashing der Statusinformationen zusätzlich zu den Datenworten würde es dem Host-Prozessor 22 ermöglichen, zusätzlich zu der richtigen Programmierung des Datenstroms den richtigen Betrieb des Flash-Speichers 24 zu prüfen. Wenn z. B. ein Blockungsfehler auftritt, könnte der alternative Hashingablauf diesen Fehler erfassen. Wenn die Statusinformationen und Datenworte gehasht werden, würden die Schreib-Zustandsmaschine 28 und der spezielle Programmiermodus 32 den Ablauf des Hash-Algorithmus überwachen.
  • 11 zeigt einen alternativen Ablauf 402 zum Eintritt in den speziellen Programmiermodus. Statt der Verwendung einer einzelnen vom Host-Prozessor 22 an den Flash-Speicher 24 gesendeten Spezieller-Programmiermodus-Anweisung verwendet der Ablauf 402 eine Anweisungsfolge, der ein Endbenutzer wahrscheinlich nicht folgen kann. Daher macht es der Ablauf 402 weniger wahrscheinlich, dass ein Endbenutzer in den speziellen Programmiermodus eintreten kann. Ein Hersteller würde den Ablauf 402 vertraulich behandeln und einen solchen Ablauf z. B. für den herstellerseitigen Test des Flash-Speichers 24 verwenden.
  • Die spezielle Folge 402 arbeitet folgendermaßen. Der Host-Prozessor 22 sendet eine Lese-Array-Anweisung über die Leitungen 26 an die Anweisungs-Benutzerschnittstelle 40, was den Flash-Speicher 24 veranlasst in den Zustand 404 einzutreten. Bei dem Zustand 404 ist die Anweisungs-Benutzerschnittstelle in dem Lese-Array-Zustand und der Ausgabe-Multiplexer 45 gibt ein Lese-Array-Signal aus. Bei dem Zustand 404 ist der Flash-Speicher 24 nicht in dem speziellen Programmiermodus. Wenn der Host-Prozessor 22 eine Programmierungs-Setup-Anweisung an die Anweisungs-Benutzerschnittstelle 40 sendet, geht der Verarbeitungsfluss zu dem Zustand 418, wobei die Anweisungs-Benutzerschnittstelle 40 sich in dem Programmierungs-Setup-Modus befindet und der Ausgabe-Multiplexer 45 ein Lese-Array-Signal ausgibt. Wenn alternativ der Verarbeitungsfluss bei dem Zustand 404 startet und der Host-Prozessor 22 eine Lösche-Einrichtung-Anweisung an die Anweisungs-Benutzerschnittstelle 40 sendet, geht die Anweisungs-Benutzerschnittstelle 40 zu dem Zustand 416, wobei sich die Anweisungs-Benutzerschnittstelle 40 in dem Lösche-Einrichtung-Zustand befindet und der Ausgabe-Multiplexer 45 ein Lese-Array-Signal ausgibt.
  • Wenn der Verarbeitungsfluss bei dem Zustand 404 startet, dann sendet der Host-Prozessor 22 auf sequentiellen Buszyklen des Bus 26 eine Serie von Spezieller-Programmiermodus-Anweisungen an den Flash-Speicher 24 zum Eintritt in den speziellen Programmiermodus. Wenn die erste Spezieller-Programmiermodus-Anweisung durch den Host-Prozessor 22 gesendet wird, tritt die Anweisungs-Benutzerschnittstelle 40 in den Zustand 406 ein, der ein Spezieller-Programmiermodus-Nummer-1-Zustand ist und der Ausgabe-Multiplexer zeigt ein Lese-Array-Signal an.
  • Befindet sich die Anweisungs-Benutzerschnittstelle 40 in dem Spezieller-Programmiermodus-Zustand-Nummer-1, welcher der Verarbeitungsblock 406 ist, bewirkt der Empfang einer anderen Spezieller-Programmiermodus-Anweisung, dass die Anweisungs-Benutzerschnittstelle 40 in den Zustand 408 geht, welcher der Spezieller-Programmiermodus-Zustand-Nummer-2 ist und wobei der Ausgabe-Multiplexer 45 ein Lese-Array-Signal ausgibt. Eine andere durch den Host-Prozessor 22 an die Anweisungs-Benutzerschnittstelle 40 gesendete Spezieller-Programmiermodus-Anweisung bewirkt einen Sprung zu dem Zustand 410, der ein Spezieller-Programmiermodus-Zustand-Nummer-3 für die Anweisungs-Benutzerschnittstelle 40 ist, wobei der Ausgabe-Multiplexer 45 ein Lese-Array-Signal ausgibt.
  • Andere sequentielle Spezieller-Programmiermodus-Anweisungen bewirken, dass durch die Anweisungs-Benutzerschnittstelle 40 ähnliche Zustände eingenommen werden. Wenn n – 1 Spezieller-Programmiermodus-Anweisungen gesendet werden, tritt die Anweisungs-Benutzerschnittstelle 40 in den Zustand 412 ein. Bei Zustand 412 befindet sich die Anweisungs-Benutzerschnittstelle 40 in dem Spezieller-Programmiermodus-Zustand n – 1 und der Ausgabe Multiplexer 45 gibt einem Lese-Array-Signal aus. Bei den Zuständen 406, 408, 410 und 412 befindet sich der Flash-Speicher 24 jedoch nicht in dem wirklichen speziellen Programmiermodus. Wenn sich die Anweisungs-Benutzerschnittstelle 40 in dem Zustand 406, 408, 410 und 412 befindet, kann der Empfang einer Nicht-Spezieller-Programmiermodus-Anweisung durch die Anweisungs-Benutzerschnittstelle 40 die Anweisungs-Benutzerschnittstelle zum Eintritt in einen normalen Zustand veranlassen, wie zum Beispiel dem Lese-Array-Zustand 404, einem Programmierungs-Steup-Zustand 418 oder einem Lösche-Einrichtung-Zustand 416. Es wurde mit anderen Worten nicht in den speziellen Programmiermodus eingetreten.
  • Wenn jedoch die Anweisungs-Benutzerschnittstelle einmal in dem Zustand 412 ist und eine andere Spezieller-Programmiermodus-Anweisung auf dem n-ten Buszyklus empfangen wird, dann springt die Anweisungs-Benutzerschnittstelle zu dem Zustand 414, welcher der spezielle Programmiermodus ist. Bei dem Zustand 414 ist die Anweisungs-Benutzerschnittstelle in dem wahren Spezieller-Programmiermodus-Zustand und der Ausgabe-Multiplexer 45 gibt ein Statussignal aus.
  • Bei dem Verarbeitungsfluss 402 in 11 sendet der Host-Prozessor die erforderliche Folge von Spezieller-Programmiermodus-Anweisungen, um den Flash-Speicher in den Zustand 414 zu bringen, welcher der Spezieller-Programmiermodus-Zustand ist. Sobald die Anweisungs-Benutzerschnittstelle 40 und der Flash-Speicher 24 in dem Zustand 414 sind, verbleiben sie in dem Spezieller-Programmiermodus-Zustand bis der Host-Prozessor 22 eine Verlasse-speziellen-Programmiermodus-Anweisung sendet, um den Flash-Speicher zu veranlassen in den Zustand 160 zu gehen, was der Status-Zustand der Anweisungs-Benutzerschnittstelle 40 ist.
  • Daher wird nur in den wahren Spezieller-Programmiermodus-Zustand eingetreten, wenn eine Abfolge von n Spezieller-Programmiermodus-Anweisungen sequentiell in den Buszyklen gesendet werden. Bei einer Ausführungsform der Erfindung ist die Ganzzahl ”n” gleich 10, was 10 Spezieller-Programmiermodus-Anweisungen bedeutet. Andere Werte von n sind jedoch möglich.
  • Bei einer alternativen in 11 gezeigten Ausführungsform kann der Host-Prozessor 22 eine Deaktiviere-Spezieller-Programmiermodus-Anweisung an den Flash-Speicher 24 senden, nachdem der spezielle Programmiermodus verlassen wurde, um zu unterbinden, dass der Ablauf 402 zukünftig den Flash-Speicher 24 veranlasst, in den speziellen Programmiermodus einzutreten. Der Host-Prozessor 22 kann mit anderen Worten eine Deaktiviere-Speziellen-Programmiermodus-Anweisung senden, die den speziellen Programmiermodus dauerhaft deaktiviert.
  • Alternativen bezüglich des Ablaufs 402 sind möglich. Zusätzliche Zyklen oder komplexe Abläufe könnten hinzugefügt werden, um zu verhindern, dass ein Anwender in den speziellen Programmiermodus hackt. So könnte die Spezieller-Programmiermodus-Anweisungsfolge weitere Komplexität hinzugefügt werden, um die Schwierigkeit des Eintritts in den speziellen Programmiermodus weiter zu erhöhen. Solche erhöhte Sicherheit könnte verwendet werden, wenn der spezielle Programmiermodus nicht dauerhaft deaktiviert wurde. Zum Beispiel könnte ein Hersteller des Flash-Speichers 24 es wünschen, den speziellen Programmiermodus des Flash nicht dauerhaft zu deaktivieren, weil der Hersteller den speziellen Programmiermodus für Problemlösungen bei dem Flash-Speicher 24 verwenden will nachdem der Flash-Speicher 24 durch Kunden eingesetzt wurde. Ein komplexer Ablauf für den Eintritt in den speziellen Programmiermodus würde helfen zu verhindern, dass ein Benutzer absichtlich oder zufällig in den speziellen Programmiermodus eintritt, würde es dem informierten Herstellervertreter jedoch ermöglichen, die richtigen Abläufe zum Eintritt in einen speziellen Programmiermodus zu verfolgen.

Claims (15)

  1. Ein Verfahren, umfassend: Aktivieren eines speziellen Programmiermodus eines Speichers durch Eingeben (150) eines speziellen Programmierungs-Zugriffscodes in einen Zustands-Controller, wobei der Speicher Automatisierungsschaltungen zur Programmier-Verifizierung aufweist und wobei das Aktivieren des speziellen Programmiermodus die interne Programmier-Verifizierung durch die Automatisierungsschaltungen des Speichers deaktiviert; Programmieren (208, 210, 212) einer Mehrzahl von Wörtern in den Speicher während des speziellen Programmiermodus mittels eines einzigen Kommandos ohne die Durchführung der internen Programmier-Verifizierung durch die Automatisierungsschaltungen des Speichers; Verlassen des speziellen Programmiermodus des Speichers, nachdem die Mehrzahl von Wörtern in den Speicher programmiert worden ist; permanentes Sperren (164) des speziellen Programmiermodus nach dem Verlassen des speziellen Programmiermodus; und Freigeben der internen Programmier-Verifizierung des Speichers nach dem Verlassen des speziellen Programmiermodus, wobei eines oder mehrere Wörter, die nachfolgend in den Speicher programmiert werden, durch die von dem Speicher ausgeführte interne Programmier-Verifizierung überprüft werden.
  2. Das Verfahren nach Anspruch 1, ferner umfassend ein Verifizieren (250) der Mehrzahl der in den Speicher programmierten Wörter mit einem externen Verifizierungs-Prozessor, der während des speziellen Programmiermodus extern mit dem Speicher gekoppelt wird.
  3. Das Verfahren nach Anspruch 2, wobei das Verifizieren ferner umfasst: Bestimmen, ob alle Wörter der Mehrzahl von Wörtern verifiziert sind; ein Wiederholen der Programmierung der gesamten Mehrzahl von Wörtern und Wiederholen der Verifizierung, wenn irgendeines der Mehrzahl von Wörtern nicht in Ordnung ist; und Verlassen des speziellen Programmiermodus des Speichers wenn alle der Mehrzahl von Wörtern in Ordnung sind.
  4. Das Verfahren nach Anspruch 2, wobei das Verifizieren ferner umfasst: Bestimmen (274), ob alle der Wörter der Mehrzahl von Wörtern verifiziert sind; Wiederholen der Programmierung (278) des einen Worts, das nicht in Ordnung ist, und Wiederholen des Verifizierens (280), wenn irgendeines der Mehrzahl von Wörtern nicht in Ordnung ist; und Verlassen des speziellen Programmiermodus des Speichers, wenn die gesamte Mehrzahl von Wörtern in Ordnung ist.
  5. Das Verfahren nach Anspruch 1, wobei Programmieren der Mehrzahl von Wörtern in den Speicher ferner ein Verwenden eines einzigen Programmierimpulses für jedes Bit jedes Wortes der Mehrzahl von Wörtern umfasst.
  6. Das Verfahren nach Anspruch 1, wobei das Programmieren der Mehrzahl von Wörtern in den Speicher ohne die Ausführung einer internen Programmier-Verifizierung des Speichers weitergeht, bis eine Programmier-Beendigungsbedingung erfüllt ist (210, JA).
  7. Das Verfahren nach Anspruch 6, wobei die Programmier-Beendigungsbedingung eine vorgewählte Zeit ist.
  8. Das Verfahren nach Anspruch 6, wobei die Programmier-Beendigungsbedingung eine Endadresse ist.
  9. Eine Einrichtung, aufweisend: einen ersten Speicher (24) mit einer Automatisierungsschaltung (28, 81), die, wenn sie nicht deaktiviert ist, eine interne Programmier-Verifizierung durchführt, wobei die Automatisierungsschaltung eine Spezieller-Programmiermodus-Schaltung (32) enthält, die die Automatisierungsschaltung, die die interne Programmier-Verifizierung durchführt, deaktiviert, wenn die Spezieller-Programmiermodus-Schaltung aktiviert ist; und einen mit dem ersten Speicher (24) gekoppelten Host-Prozessor (22), wobei der Host-Prozessor: mit einem einzigen Befehl an den ersten Speicher (24) eine erste Mehrzahl von Wörtern sendet, die während des speziellen Programmiermodus in den Speicher programmiert werden, ohne dass der erste Speicher interne Programmier-Verifizierungen ausführt; den speziellen Programmiermodus des ersten Speichers verlässt, nachdem die erste Anzahl von Wörtern in den ersten Speicher programmiert worden ist, nach Verlassen des speziellen Programmiermodus den speziellen Programmiermodus permanent sperrt, und nach Verlassen des speziellen Programmiermodus die interne Programmier-Verifizierung des ersten Speichers freigibt, wobei ein oder mehrere nachfolgend in den ersten Speicher programmierte Wörter durch die von dem ersten Speicher ausgeführte interne Programmier-Verifizierung verifiziert werden.
  10. Die Einrichtung nach Anspruch 9, wobei der Host-Prozessor (22), ohne die von dem ersten Speicher (24) ausgeführte Programmier-Verifizierung aufzurufen, die erste Mehrzahl von Wörtern, die in den ersten Speicher programmiert worden sind, aus dem ersten Speicher zurück liest und eine zweite Mehrzahl von Wörtern, die in einem mit dem Host-Prozessor gekoppelten zweiten Speicher (34) gespeichert sind, mit der ersten Mehrzahl von aus dem ersten Speicher zurück gelesenen Wörtern vergleicht, um zu prüfen, ob die erste Mehrzahl von Wörtern erfolgreich programmiert wurde, wobei der zweite Speicher von dem ersten Speicher getrennt ist.
  11. Die Einrichtung nach Anspruch 10, wobei der Host-Prozessor (22) ferner die gesamte erste Mehrzahl von Wörtern neu programmiert, wenn irgendeines der Mehrzahl von Wörtern nicht in Ordnung ist.
  12. Die Einrichtung nach Anspruch 10, wobei der Host-Prozessor (22) ferner diejenigen Wörter der ersten Mehrzahl von Wörtern neu programmiert, welche nicht in Ordnung sind.
  13. Die Einrichtung nach Anspruch 10, wobei die Spezieller-Programmiermodus-Schaltung deaktiviert wird, wenn eine Programmier-Beendigungsbedingung erfüllt ist.
  14. Die Einrichtung nach Anspruch 13, wobei die Programmier-Beendigungsbedingung eine vorgewählte Zeit ist.
  15. Die Einrichtung nach Anspruch 13, wobei die Programmier-Beendigungsbedingung eine Endadresse ist.
DE10197113T 2000-12-27 2001-11-28 Verfahren zum Aktivieren eines speziellen Programmiermodus eines Speichers und Einrichtung mit einem Speicher mit speziellem Programmiermodus Expired - Fee Related DE10197113B3 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US09/752,594 2000-12-27
US09/752,594 US7007131B2 (en) 2000-12-27 2000-12-27 Method and apparatus including special programming mode circuitry which disables internal program verification operations by a memory
PCT/US2001/044877 WO2002052576A1 (en) 2000-12-27 2001-11-28 Enhanced special programming mode

Publications (2)

Publication Number Publication Date
DE10197113T1 DE10197113T1 (de) 2003-12-04
DE10197113B3 true DE10197113B3 (de) 2013-09-12

Family

ID=25026964

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10197113T Expired - Fee Related DE10197113B3 (de) 2000-12-27 2001-11-28 Verfahren zum Aktivieren eines speziellen Programmiermodus eines Speichers und Einrichtung mit einem Speicher mit speziellem Programmiermodus

Country Status (6)

Country Link
US (1) US7007131B2 (de)
CN (1) CN100431055C (de)
DE (1) DE10197113B3 (de)
GB (1) GB2388227B (de)
TW (1) TWI250529B (de)
WO (1) WO2002052576A1 (de)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6859399B1 (en) 2000-05-17 2005-02-22 Marvell International, Ltd. Memory architecture and system and multiport interface protocol
EP1318440B1 (de) * 2001-12-04 2005-08-17 STMicroelectronics S.r.l. Architektur und Verfahren zur Verwaltung einer Schnittstelle, basierend auf einem endlichen Automaten
US20040049617A1 (en) * 2002-09-05 2004-03-11 Integrated Circuit Solution Inc. Method of firmware update by USB interface
JP5055971B2 (ja) * 2006-11-16 2012-10-24 株式会社ニコン 表面処理方法及び表面処理装置、露光方法及び露光装置、並びにデバイス製造方法
US9727277B2 (en) * 2012-12-21 2017-08-08 Sandisk Technologies Llc Storage device and method for enabling hidden functionality
JP2014225309A (ja) * 2013-05-16 2014-12-04 ピーエスフォー ルクスコ エスエイアールエルPS4 Luxco S.a.r.l. 半導体装置
CN104217757B (zh) * 2013-05-31 2018-01-05 华邦电子股份有限公司 非易失性存储器的编程方法
US9798493B2 (en) * 2013-12-16 2017-10-24 International Business Machines Corporation Firmware bypass for medium-access commands

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69513434T2 (de) * 1994-04-27 2000-05-04 Toshiba Kawasaki Kk Flash EEPROM mit Autofunktion zum automatischen Schreiben und Löschen

Family Cites Families (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2172127B (en) * 1985-03-06 1988-10-12 Ferranti Plc Data compression system
EP0224639B1 (de) * 1985-07-08 1991-07-24 Siemens Aktiengesellschaft Verfahren zum Kontrollieren eines Speicherzugriffs auf einer Chipkarte und Anordnung zur Durchführung des Verfahrens
JPH081760B2 (ja) * 1987-11-17 1996-01-10 三菱電機株式会社 半導体記憶装置
US4873705A (en) * 1988-01-27 1989-10-10 John Fluke Mfg. Co., Inc. Method of and system for high-speed, high-accuracy functional testing of memories in microprocessor-based units
US5053990A (en) * 1988-02-17 1991-10-01 Intel Corporation Program/erase selection for flash memory
JP2648840B2 (ja) * 1988-11-22 1997-09-03 株式会社日立製作所 半導体記憶装置
US5016009A (en) * 1989-01-13 1991-05-14 Stac, Inc. Data compression apparatus and method
US5333300A (en) * 1991-02-11 1994-07-26 Intel Corporation Timing circuitry and method for controlling automated programming and erasing of a non-volatile semiconductor memory
JP3408552B2 (ja) * 1991-02-11 2003-05-19 インテル・コーポレーション 不揮発性半導体メモリをプログラム及び消去する回路とその方法
US5559971A (en) * 1991-10-30 1996-09-24 I-Cube, Inc. Folded hierarchical crosspoint array
US5412793A (en) * 1991-12-03 1995-05-02 Intel Corporation Method for testing erase characteristics of a flash memory array
US5506803A (en) * 1992-04-01 1996-04-09 Intel Corporation Apparatus and method for minimizing verify time in a semiconductor memory by constantly charging n-well capacitance
FR2708763B1 (fr) * 1993-06-30 2002-04-05 Intel Corp Dispositif de mémoire flash, procédé et circuit de traitement d'un ordre d'utilisateur dans un dispositif de mémoire flash et système d'ordinateur comprenant un dispositif de mémoire flash.
US5509134A (en) * 1993-06-30 1996-04-16 Intel Corporation Method and apparatus for execution of operations in a flash memory array
US5526311A (en) * 1993-12-30 1996-06-11 Intel Corporation Method and circuitry for enabling and permanently disabling test mode access in a flash memory device
DE69427277T2 (de) * 1994-01-31 2001-09-13 St Microelectronics Srl Verfahren zur Programmierung und Prüfung eines nichtflüchtigen Speichers
US5729489A (en) * 1995-12-14 1998-03-17 Intel Corporation Programming flash memory using predictive learning methods
US5701266A (en) * 1995-12-14 1997-12-23 Intel Corporation Programming flash memory using distributed learning methods
US5796746A (en) * 1995-12-22 1998-08-18 Micron Technology, Inc. Device and method for testing integrated circuit dice in an integrated circuit module
US5873113A (en) * 1996-09-24 1999-02-16 Altera Corporation System and method for programming eprom cells using shorter duration pulse(s) in repeating the programming process of a particular cell
US5974499A (en) * 1997-04-23 1999-10-26 Micron Technology, Inc. Memory system having read modify write function and method
US5959911A (en) * 1997-09-29 1999-09-28 Siemens Aktiengesellschaft Apparatus and method for implementing a bank interlock scheme and related test mode for multibank memory devices
JPH11203266A (ja) * 1998-01-07 1999-07-30 Mitsubishi Electric Corp マイクロコンピュータ
US6834323B2 (en) * 2000-12-26 2004-12-21 Intel Corporation Method and apparatus including special programming mode circuitry which disables internal program verification operations by a memory

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69513434T2 (de) * 1994-04-27 2000-05-04 Toshiba Kawasaki Kk Flash EEPROM mit Autofunktion zum automatischen Schreiben und Löschen

Also Published As

Publication number Publication date
TWI250529B (en) 2006-03-01
GB0315744D0 (en) 2003-08-13
WO2002052576A1 (en) 2002-07-04
US20020080652A1 (en) 2002-06-27
GB2388227B (en) 2005-04-20
CN1502111A (zh) 2004-06-02
US7007131B2 (en) 2006-02-28
CN100431055C (zh) 2008-11-05
GB2388227A (en) 2003-11-05
DE10197113T1 (de) 2003-12-04

Similar Documents

Publication Publication Date Title
DE69221045T2 (de) Verfahren und Gerät zur programmierbaren Speicherssteuerung mit Fehlerregelung und Prüffunktionen
DE69024086T2 (de) EEprom-System mit Blocklöschung
DE602004003275T2 (de) Nichtflüchtiger Speicher mit Seiten-Kopierfunktion und entsprechendes Verfahren
DE69914864T2 (de) Steuerung der konfiguration in einer programmierbaren logik-einheit mittels nichtflüchtiger bauelemente
DE4422453C2 (de) Flash-Speicherbauelement
DE10239487B4 (de) Nichtflüchtiges Halbleiterspeicherbauelement
DE102005040226B4 (de) Nichtflüchtiges Speicherbauelement und Testverfahren
DE102018117119A1 (de) Betriebsverfahren von nichtflüchtigen Speichervorrichtungen und Betriebsverfahren von Speichersteuerungen
DE102006034495B4 (de) Verfahren zum Durchführen einer Programmieroperation eines nicht-flüchtigen Speicherbauelements und nicht-flüchtiges Speicherbauelement
DE3875658T2 (de) Programmierbarer nur-lese-speicher mit mitteln zur entladung der bitleitung vor dem nachpruefen der programmierung.
DE10159901B4 (de) Mikrocomputer mit eingebautem programmierbarem, nichtflüchtigem Speicher
DE69029479T2 (de) Hochleistungsspeichersystem
DE69521203T2 (de) Flash-EEPROM mit gesteuerter Entladungszeit der Wortleitungs- und Sourcespannungen nach der Löschung
DE102007041845A1 (de) Verfahren zum Betreiben eines integrierten Schaltkreises mit mindestens einer Speicherzelle
DE102005057112B4 (de) Nichtflüchtiges Speicherbauelement und Programmierverfahren
DE4206286C2 (de) Speicherzugriffssystem und Verfahren zum Ausgeben eines digitalen Datenstromes
DE102008002083A1 (de) Flash-Speichervorrichtung und Verfahren zum Programmieren
DE102005060386A1 (de) Programmierverfahren einer Flash-Speichervorrichtung
DE102005035084A1 (de) Speicherbauelement und Programmierverfahren
DE10197113B3 (de) Verfahren zum Aktivieren eines speziellen Programmiermodus eines Speichers und Einrichtung mit einem Speicher mit speziellem Programmiermodus
DE102019135863A1 (de) Speichercontroller, Speichervorrichtung und Speichersystem mit verbesserten Schwellenspannungs-Verteilungseigenschaften und ähnliche Betriebsverfahren
DE60016104T2 (de) Nichtflüchtige Halbleiterspeicheranordnung
DE69500112T2 (de) Programmierbarer integrierter Speicher mit Emulationseinrichtung
EP1037140B1 (de) Verfahren und Vorrichtung zur Absicherung bei Veränderung des Speicherinhalts von Steuergeräten
DE69629315T2 (de) Flashspeicheranordnung mit löschungsunterbrechungslogik unter verwendung von mehreren prüfpunkten

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law

Ref document number: 10197113

Country of ref document: DE

Date of ref document: 20031204

Kind code of ref document: P

R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20131213

R119 Application deemed withdrawn, or ip right lapsed, due to non-payment of renewal fee