-
Die Erfindung bezieht sich auf ein Flash-Speicherbauelement
nach dem Oberbegriff des Anspruchs 1, auf ein Verfahren zum Verifizieren, ob
Speicherzellen eines Flash-Speicherbauelements programmiert sind
oder nicht, und auf eine Programmiereinheit für ein nichtflüchtiges
Speicherbauelement.
-
Flash-Speicherbauelemente bilden
einen Typ nichtflüchtiger
Datenspeicherbauelemente hoher Dichte, die es ermöglichen,
Daten „on-board" zu schreiben und
zu löschen.
Eine Flash-Speicherzelle weist einen Feldeffekttransistor (FET)
mit einem Auswahlgate, einem floatenden Gate, einer Source und einer
Drain auf. Daten werden in der Flash-Speicherzelle durch Änderung
der im floatenden Gate gespeicherten Ladungsmenge gespeichert, was
eine Änderung
einer Schwellenspannung Vt der Flash-Speicherzelle verursacht. Die
in der Flash-Speicherzelle gespeicherten Daten werden durch Anlegen
einer Auswahlspannung an eine mit dem Auswahlgate verbundene Wortleitung
ausgelesen. Die Menge an Strom, die fließt, wenn die Flash-Speicherzelle
ausgewählt ist,
ist durch die Schwellenspannung Vt der Flash-Speicherzelle bestimmt.
-
Eine Flash-Speicherzelle hat üblicherweise zwei
mögliche
Zustände,
und zwar „programmiert" und „gelöscht". Wenn die Flash-Speicherzelle
programmiert ist, sind überschüssige Elektroden
auf dem floatenden Gate eingefangen und die Schwellenspannung Vt
liegt auf einem angehobenen Wert, so. dass nur wenig Drain-Source-Strom über die Flash-Speicherzelle fließt, wenn
die Zelle zwecks Auslesen ausgewählt
wird. Der programmierte Zustand der Flash-Speicherzelle wird als
logisch „0" bezeichnet. Wenn
die Flash-Speicherzelle gelöscht
ist, gibt es keine oder nur wenig überschüssige Elektronen auf dem floatenden
Gate, was zur Folge hat, dass relativ viel Source-Drain-Strom über die Flash-Speicherzelle fließt, wenn
die Zelle zwecks Auslesen ausgewählt
wird. Der gelöschte
Zustand der Flash-Speicherzelle wird als logisch „1" bezeichnet.
-
1 zeigt
im Blockschaltbild ein herkömmliches
Flash-Speicherbauelement 100 mit einem Speicherzellenfeldblock 110,
einem Zeilendecoder 120, einem Wortleitungspegelauswahlblock 130,
einem Treiberblock 140 und einem Seitenpuffer 150. Der
Speicherzellenfeldblock 110 umfasst eine Anzahl i+1 von
Zellenketten 200, 202, 204, 206,
von denen jede in Reihe geschaltete Flash-Speicherzellen aufweist.
So umfasst die erste Kette 200 in Reihe geschaltete Flash-Speicherzellen
deren Gateelektroden mit jeweils einer von einer ersten bis sechzehnten
Wortleitung WLj (j=0,1,..., 15) verbunden sind, wobei in 1 stellvertretend nur drei
Zellen 112, 113 und 114 gezeigt sind.
Die Flash-Speicherzelle 112, die mit der ersten Wortleitung
WL0 verbunden ist, ist mit ihrer Drainelektrode an einen ersten
Auswahltransistor 112 gekoppelt, dessen Gateelektrode mit
einer Kettenauswahlleitung SSL verbunden ist. Die mit der sechzehnten
Wortleitung WL15 verbundene Flash-Speicherzelle 114 ist
mit einer Sourceelektrode an einen zweiten Auswahltransistor
115 gekoppelt,
dessen Gateelektrode mit einer Masseauswahlleitung GSL verbunden
ist. Eine Drainelektrode des ersten Auswahltransistors 111 ist
mit einer ersten Bitleitung BL0 verbunden, und eine Sourceelektrode des
zweiten Auswahltransistors 115 ist mit einer gemeinsamen
Sourceleitung CSL verbunden.
-
In dieser Weise sind alle Ketten 200, 202, 204 und 206 mit
der Kettenauswahlleitung SSL, der ersten bis sechzehnten Wortleitung
WLj und der Masseauswahlleitung GSL verbunden. Außerdem ist jede
Kette 200, 202, 204 und 206 über die
erste Bitleitung BL0 bzw. je eine weitere Bitleitung BL1,..., Bli-1,
Bli mit dem Seitenpuffer 150 verbunden, um eine Seiteneinheit
zu bilden. Während 1 der Einfachheit halber
nur eine im Speicherzellenfeldblock 110 enthaltene Seiteneinheit
zeigt, versteht es sich, dass der Speicherzellenfeldblock 110 in
Wirklichkeit eine beliebige, vorgebbare Anzahl an Seiteneinheiten
umfassen kann. Die Seiteneinheiten werden durch den Zeilendecoder 120 adressiert.
Im Treiberblock 140 enthaltene Transistoren werden in Reaktion
auf Adressensignale des Zeilendecoders 120 leitend geschaltet,
so dass eine jeweilige Seiteneinheit ausgewählt wird.
-
Der Wortleitungspegelauswahlblock 130 wählt eine
Programmierspannung VPGM, eine Lesespannung VREAD, eine Programmverifizierspannung
VRDV oder eine Durchlassspannung VPASS in Abhängigkeit von einer entsprechenden
Betriebsart aus und überträgt die ausgewählte Spannung
zum Treiberblock 140. Die Programmierspannung VPGM und
die Lesespannung VREAD werden während
eines Programmiervorgangs bzw. eines Lesevorgangs der ausgewählten Flash-Speicherzellen
angelegt. Die Programmierverifizierungsspannung VRDV wird angelegt,
um zu verifizieren, ob die Flash-Speicherzelle programmiert ist
oder nicht. Die Durchlassspannung VPASS wird angelegt, um nicht
ausgewählte Flash-Speicherzellen
elektrisch „anzuschalten" und damit zu bewirken,
dass über
diese ein Zellenstrom fließt.
Der Treiberblock 140 legt die modusabhängige Spannung an die Wortleitungen
WLj einer ausgewählten
Seiteneinheit in Reaktion auf ein Adressensignal des Zeilendecoders 120 an.
Der Seitenpuffer 150 sensiert den über die Bitleitungen BL0, BI1,..., Bli-1,
Bli fließenden
Zellenstrom und interpretiert Daten von den ausgewählten Flash-Speicherzellen.
-
Nach dem Programmiervorgang führt das Flash-Speicherbauelement 100 wiederholt
einen Zyklus in Form einer Programmiereinheitsschleife aus, mit
dem der Programmierverifiziervorgang durchgeführt wird. Als Ergebnis des
Programmierverifiziervorgangs wird der Programmiervorgang, wenn
verifiziert wurde, dass die Flash-Speicherzellen programmiert sind,
beendet, während
ansonsten der Programmiervorgang nochmals durchgeführt und
der Programmierverifiziervorgang wiederholt wird. Wenn beispielsweise
eine große
Anzahl von Flash-Speicherzellen mit einer zugehörigen Wortleitung verbunden
sind, werden vorgegebene Zyklen zum Programmieren aller dieser Flash-Speicherzellen
und zum Verifizieren ihres Programmierzustands benötigt. Sobald
verifiziert worden ist, dass die Flash-Speicherzellen, die mit der
ausgewählten
Wortleitung verbunden sind, vollständig programmiert sind, werden Flash-Speicherzellen, die
mit einer anderen Wortleitung verbunden sind, programmiert, und
deren Programmierzustand wird verifiziert.
-
Wenn der Programmiervorgang und der
Programmierverifiziervorgang für
eine ausgewählte Wortleitung
wiederholt durchgeführt
werden, kann die Schwierigkeit auftreten, dass der Programmiervorgang
dadurch verfrüht
beendet wird, dass unterprogrammierte Flash-Speicherzellen fälschlich
als programmiert erkannt werden. Die Ursache hierfür ist im
Zeitablaufdiagramm von 2 veranschaulicht und
liegt darin, dass sich mit ansteigender Programmierspannung VPGM
und konstant anliegender Programmierverifizierungsspannung VRDV
während
der wiederholten Programmiereinheitsschleifen der Zellstrom aufgrund
derjenigen Flash-Speicherzellen erhöht, die während der ersten paar Programmier einheitsschleifen
unterprogrammiert bleiben, was ein Anstieg des Pegels der gemeinsamen
Sourceleitung CSL verursacht. Dadurch werden die in Wirklichkeit unterprogrammierten
Flash-Speicherzellen fälschlich als
programmiert beurteilt.
-
3 veranschaulicht
graphisch beispielhafte Schwellenspannungsverteilungen von Flash-Speicherzellen
während
des Programmierverifizierablaufs von 2.
Wie aus 3 ersichtlich,
hat die Schwellenspannung Vt der Flash-Speicherzellen anfänglich,
wenn ein Löschvorgang
für alle
Flash-Speicherzellen durchgeführt
wurde, einen negativen Spannungspegel. Die Programmiereinheitsschleifen werden
dann nacheinander ausgeführt,
und die Flash-Speicherzellen werden durch die hohe Programmierspannung
VPGM in der letzten Schleife programmiert. Diese Vorgehensweise
kann zur Folge haben, dass die Schwellenspannung Vt am hohen Endbereich
ungleichmäßig verteilt
ist. Diese ungleichmäßige Verteilung
der hohen Schwellenspannung Vt führt
zu der Schwierigkeit, dass ein Überprogrammieren
von Flash-Speicherzellen der Seiteneinheit auftreten kann. Gleichzeitig
kann es sein, dass Flash-Speicherzellen mit einer niedrigen Schwellenspannung
Vt ähnlich
der Programmierverifizierungsspannung VRDV in einem unterprogrammierten
Zustand bleiben, d.h. es ist unsicher, ob diese Flash-Speicherzellen
programmiert sind oder nicht.
-
Der Erfindung liegt als technisches
Problem die Bereitstellung eines Flash-Speicherbauelements der eingangs
genannten Art sowie eines Programmierverifizierverfahrens und einer
Programmiereinheit zugrunde, mit denen sich die oben erwähnten Schwierigkeiten
herkömmlicher
Systeme wenigstens teilweise vermeiden lassen und mit denen insbesondere
zuverlässig
und mit relativ geringem Aufwand beurteilt werden kann, ob Flash-Speicherzellen
programmiert sind oder nicht.
-
Die Erfindung löst dieses Problem durch die Bereitstellung
eines Flash-Speicherbauelements
mit den Merkmalen des Anspruchs 1, eines Programmieiverifiziervertahrens
mit den Merkmalen des Anspruchs 5 und einer Programmiereinheit mit
den Merkmalen des Anspruchs 11.
-
Vorteilhafte Weiterbildungen der
Erfindung sind in den Unteransprüchen
angegeben.
-
Das erfindungsgemäße Flash-Speicherbauelement
und das erfindungsgemäße Programmierverifizierverfahren
sind in der Lage, eine fälschliche
Erkennung, ob Flash-Speicherzellen programmiert sind oder nicht,
zuverlässig
zu verhindern, und eine verhältnismäßig gleichförmige Verteilung
der Schwellenspannung über
programmierte Speicherzellen hinweg bereitzustellen.
-
Vorteilhafte Weiterbildungen der
Erfindung sind in den Unteransprüchen
angegeben.
-
Vorteilhafte, nachfolgend beschriebene
Ausführungsformen
der Erfindung sowie das zu deren besserem Verständnis oben erläuterte herkömmliche Ausführungsbeispiel
sind in den Zeichnungen dargestellt, in denen zeigen:
-
1 ein
Blockschaltbild eines herkömmlichen
Flash-Speicherbauelements,
-
2 ein
Zeitablaufdiagramm zur Veranschaulichung eines Programmierverifiziervorgangs für das herkömmliche
Flash-Speicherbauelement von 1,
-
3 eine
Serie von Diagrammen zur Veranschaulichung von Schwellenspannungsverteilungen
von Flash-Speicherzellen gemäß dem Programmierverifiziervorgang
von 2,
-
4 ein
Blockschaltbild eines erfindungsgemäßen Flash-Speicherbauelements,
-
5 ein
Zeitablaufdiagramm zur Veranschaulichung eines Programmierverifiziervorgangs mit
erfindungsgemäß angelegten
Programmierverifizierungsspannungen,
-
6 eine
Serie von Diagrammen zur Veranschaulichung von Schwellenspannungsverteilungen
von Flash-Speicherzellen gemäß dem Programmierverifiziervorgang
von 5,
-
7 ein
Zeitablaufdiagramm zur Veranschaulichung eines weiteren erfindungsgemäßen Programmierverifiziervorgangs
mit erfindungsgemäß angelegten
Programmierverifizierungsspannungen und
-
8 ein
Zeitablaufdiagramm noch eines weiteren erfindungsgemäßen Programmierverifiziervorgangs
mit erfindungsgemäß angelegten
Programmierverifizierungsspannungen.
-
4 zeigt
ein erfindungsgemäßes Flash-Speicherbauelement 400,
das zusätzlich
zu den Komponenten des herkömmlichen Flash-Speicherbauelements
von 1, auf deren obige
Beschreibung insoweit verwiesen werden kann, einen Programmierverifizierungsspannungsgenerator 410 aufweist.
Dieser beinhaltet einen mit einer Speisespannung VCC verbundenen PMOS-Transistor 413,
einen mit beiden Anschlüssen eines
ersten Widerstands 414 verbundenen, ersten NMOS-Transistor 417,
einen mit beiden Anschlüssen eines
zweiten Widerstands 415 verbun denen, zweiten NMOS-Transistor 418 und
einen dritten Widerstand 416, der zwischen den zweiten
NMOS-Transistor 418 und eine Massespannung eingeschleift
ist. Der PMOS-Transistor 413 wird vom Ausgangssignal eines
Komparators 412 angesteuert, der eine Referenzspannung
VREF mit einer Spannung an einem Knoten NA zwischen dem ersten und
dem zweiten Widerstand 414, 415 vergleicht. Der
erste NMOS-Transistor 417 wird von einem ersten Programmierverifiziersteuersignal
PGM_VFEN1 angesteuert, um den ersten Widerstand 414 elektrisch kurzzuschließen, und
der zweite NMOS-Transistor 418 wird von einem zweiten Programmierverifiziersteuersignal
PGM_VFEN2 angesteuert, um den zweiten Widerstand 415 elektrisch
kurzzuschließen.
-
Der Programmierverifizierungsspannungsgenerator 410 bewirkt
ein selektives Kurzschließen des
ersten oder zweiten Widerstands 414, 415 in Abhängigkeit
von einer Aktivierung des ersten oder zweiten Programmierverifiziersteuersignals PGM_VFEN1,
PGM_VFEN2. Dies erlaubt es, dass die Programmierverifizierungsspannung
VRDV mit einem hohen oder einem niedrigen Spannungspegel erzeugt
werden kann. Wenn das erste und das zweite Programmierverifiziersteuersignal
PGM_VFEN1 und PGM_VFEN2 inaktiv sind, wird die Programmierverifizierungsspannung
VRDV auf hohem Spannungspegel erzeugt. Wenn hingegen das erste und das
zweite Programmierverifiziersteuersignal PGM_VFEN1 und PGM_VFEN2
aktiviert sind, wird die Programmierverifizierungsspannung VRDV
auf niedrigem Spannungspegel erzeugt. Außerdem wird die Programmierverifizierungsspannung
VRDV, wenn das erste oder das zweite Programmierverifiziersteuersignal
PGM_VFEN 1, PGM_VFEN2 selektiv aktiviert wird, auf je einem von
zwei Zwischenspannungspegeln zwischen dem hohen und dem niedrigen
Spannungspegel erzeugt.
-
5 veranschaulicht
im Zeitablaufdiagramm einen zugehörigen erfindungsgemäßen Programmierverifiziervorgang,
bei dem die Program mierverifizierungsspannung VRDV durch den Programmierverifizierungsspannungsgenerator 410 erzeugt
wird. Wie aus 5 ersichtlich,
wird der Programmiervorgang in einer (n-2)-ten Programmiereinheitsschleife
(n=3,4...) mit einer ersten Programmierspannung VPGM1 ausgeführt, woraufhin
der Programmierverifiziervorgang mit einer ersten Programmierverifizierungsspannung
VRDV1 durchgeführt
wird. In einer (n-1)-ten Programmiereinheitsschleife wird der Programmiervorgang
mit einer zweiten Programmierspannung VPGM2 ausgeführt, wonach
der Programmierverifiziervorgang mit einer zweiten Programmierverifizierungsspannung
VRDV2 ausgeführt
wird, die einen niedrigeren Spannungspegel aufweist als die erste
Programmierverifizierungsspannung VRDV1. In einer n-ten Programmiereinheitsschleife
wird der Programmiervorgang mit einer dritten Programmierspannung
VPGM3 durchgeführt, wonach
der Programmierverifiziervorgang mit der ersten Programmierverifizierungsspannung
VRDV1 ausgeführt
wird, deren Spannungspegel höher
als derjenige der zweiten Programmierverifizierungsspannung VRDV2
ist. In einer (n+1)-ten Programmiereinheitsschleife wird der Programmiervorgang mit
einer vierten Programmierspannung VPGM4 ausgeführt, wonach der Programmierverifiziervorgang mit
der zweiten Programmierverifizierungsspannung VRDV2 durchgeführt wird,
deren Spannungspegel niedriger als derjenige der ersten Programmierverifizierungsspannung
VRDV1 ist.
-
Somit werden die Programmierverifiziervorgänge in den
aufeinanderfolgenden Programmiereinheitsschleifen mit Spannungspegeln
durchgeführt, die
höher oder
niedriger als ein jeweils vorhergehender Programmierverifizierungsspannungspegel
sind, so dass Flash-Speicherzellen, die in Wirklichkeit unterprogrammiert
sind, zwar eventuell durch die zweite, niedrigere Programmierverifizierungsspannung VRDV2
als „programmiert" verifiziert werden,
jedoch dann durch die erste, höhere
Programmierverifizierungsspannung VRDV1 als „unterprogrammiert" erkannt werden,
so dass der Programmiervorgang fortgesetzt wird. Dem entsprechend
werden unterprogrammierte Flash-Speicherzellen vollständig programmiert.
-
6 veranschaulicht
beispielhafte Schwellenspannungsverteilungen von Flash-Speicherzellen gemäß der erfindungsgemäßen Programmierverifizierung.
Wie aus 6 ersichtlich,
hat die Schwellenspannung Vt der Flash-Speicherzellen in einem Anfangszustand
nach Durchführen
eines Löschvorgangs
für alle
Flash-Speicherzellen einen negativen Spannungspegel. Anschließend wird
der Wert der Programmierverifizierungsspannung in den aufeinanderfolgenden
Programmiereinheitsschleifen verändert,
wie oben zu 5 erläutert. In
der (n-1)-ten Programmiereinheitsschleife, mit n=2, 3,..., ist es eventuell
noch unsicher, ob die jeweilige Flash-Speicherzelle, die eine Schwellenspannung
Vt von ungefähr
der zweiten Programmierverifizierungsspannung VRDV2 aufweist, programmier
ist oder nicht. Die Flash-Speicherzellen, die in der n-ten Programmiereinheitsschleife
eine Schwellenspannung Vt niedriger als die erste Programmierverifizierungsspannung VRDV1
aufweisen und deren Programmierzustand somit als „unsicher" zu beurteilen ist,
werden als unterprogrammiert verifiziert, so dass der Programmiervorgang
fortgesetzt wird. Dadurch ist in der letzten Programmiereinheitsschleife
die Schwellenspannung Vt der Flash-Speicherzellen gleichmäßig verteilt,
so dass keine unterprogrammierten und keine überprogrammierten Flash-Speicherzellen vorliegen.
-
7 veranschaulicht
im Zeitablaufdiagramm eine weitere erfindungsgemäße Realisierung einer Programmierverifizierung
mit verschiedenen Programmierverifizierungsspannungen. Wie aus 7 ersichtlich, wird der
Programmiervorgang in den aufeinanderfolgenden Programmiereinheitsschleifen
mit sukzessiver Erhöhung
der Programmierspannungen VPGM1, VPGM2, VPGM3 und VPGM4 ausgeführt, während die
Programmierverifiziervorgänge
mit vier untereinander verschiedenen Programmierverifizierungsspannungen
VRDV1, VRDV2, VRDV3 und VRDV4 ausgeführt werden. Ablauf und Wirkung
dieser Programmverifizierung mit den vier verschiedenen Programmierverifizierungsspannungen
VRDV1 bis VRDV4 entsprechen denjenigen, wie sie oben zu 5 für die Programmierverifizierung
mit zwei verschiedenen Programmierverifizierungsspannungen VRDV1,
VRDV2 erläutert
wurden, worauf verwiesen werden kann.
-
8 veranschaulicht
im Zeitablaufdiagramm eine weitere erfindungsgemäße Realisierung einer Programmierverifizierung,
bei denen die vier aufeinanderfolgenden Programmierverifizierungsspannungen
VRDV1 bis VRDV4 wie im Beispiel von 7 voneinander
verschiedene Werte haben, wobei im Beispiel von 8 die Programmierverifizierungsspannungswerte
VRDV1 bis VRDV4 sukzessive niedriger werden, während in 7 die dritte Programmierverifizierungsspannung
VRDV3 zwischen der höheren
ersten Programmierverifizierungsspannung VRDV1 und der niedrigeren
zweiten Programmierverifizierungsspannung VRDV2 liegt.
-
Mit anderen Worten ist im Beispiel
von 8 für die Programmierverifizierungsspannung
VRDV3 in der n-ten Programmiereinheitsschleife ein Wert niedriger
als die Programmierverifizierungsspannung VRDV2 in der (n-1)-ten
Programmiereinheitsschleife gewählt,
und die Programmierverifizierungsspannung VRDV4 in der (n+1)-ten
Programmiereinheitsschleife ist auf einen Wert niedriger als die
Programmierverifizierungsspannung VRDV3 in der n-ten Programmiereinheitsschleife
festgelegt. Im Unterschied dazu ist im Beispiel von 7 die Programmierverifizierungsspannung
VRDV3 in der n-ten Programmiereinheitsschleife höher gewählt als die Programmierverifizierungsspannung
VRDV2 in der (n-1)-ten
Programmiereinheitsschleife. In einer weiteren Variante kann die
Programmierverifizierungsspannung VRDV4 in der (n+1)-ten Programmiereinheitsschleife auch
auf einen höheren
Wert als die Programmierverifizierungsspannung VRDV3 in der n-ten
Programmiereinheitsschleife festgelegt sein.
-
Erfindungsgemäß können Flash-Speicherzellen,
die hinsichtlich ihres Programmierzustands als unsicher verifiziert
worden sind, vollständig
programmiert werden, da der Programmierverifiziervorgang mit verschiedenen
Programmierverifizierungsspannungspegeln ausgeführt wird.