Wir bekommen häufig Anfragen zu Speicherbausteinen und müssen immer wieder feststellen, das dort noch sehr viel Informationsbedürfnis besteht. Daher möchten wir nun an dieser Stelle die Grundlagen der Programmierung von Speicherbausteinen wie Eproms/EEproms und Flash Bausteinen verständlich machen. Insbesondere wollen wir auf die verschiedenen Sorten von Speicherbausteinen eingehen und vergleichen was z.B. die 27C, 28C oder 29F Reihe kann und was sie nicht kann.
Ein Speicherbaustein ist ein elektronisches Bauteil in dem ein Programm oder Daten oder auch beides gespeichert werden können. Ein Programm ist dabei eine Anweisungsfolge (Befehlsfolge) für einen Mikroprozessor (=Recheneinheit). Daten können z.B. die von einem Temperaturmesssystem aufgezeichneten Temperaturwerte oder auch beliebige andere Daten sein.
Das Programm bzw. die Daten werden im Speicherbaustein als eine Reihe von Nullen und Einsen (=Bits) gespeichert. Ein Bit kann einen der zwei Werte annehmen, entweder Null oder Eins. Für den Menschen ist diese Darstellung nicht einfach zu überblicken und daher werden diese Bits zu Gruppen zusammengefasst. Sechzehn Bits ergeben ein "Word", acht Bits ergeben ein "Byte" und vier Bits ergeben ein "Nibble".
Am gebräuchlichsten ist die Angabe Byte, die 8 Bits enthält und somit 2 hoch 8 Werte = 256 verschiedene Werte annehmen kann. Um diese darzustellen nutzt man das hexadezimale Zahlensystem. Diese haben die Basis 16 und nutzen die Ziffern von 0 bis 9 und zudem A bis F. Zwei Ziffern können also ebenfalls 256 Werte annehmen (von 00h bis FFh, wobei das kleine "h" nur zur Kennzeichnung als Hexadezimale Zahl dient). Wer über die Zahlensysteme nähere Informationen haben will, den möchten wir auf entsprechende andere Stellen verweisen.
Übrigens wurden die Begriffe Kilo und Mega im Zusammenhang mit den Bytes auch an die Zweiwertigkeit (Null oder Eins) der digitalen Systeme angepasst. Kilo bedeutet hier 1024 (=2 hoch 10) und Mega 1024 * 1024 = 1048576. Damit entspricht ein Kilobyte 1024 Byte und ein Megabyte 1048576 Byte.
Bei den 8 Bit Speicherbausteinen (die üblichste Art) werden die Bits zu einem Byte (=8 Bit) zusammengefasst und unter einer "Adresse" gespeichert. Unter dieser Adresse kann dann das Byte angesprochen werden und gibt damit auf seinen acht Datenleitungen die 8 Bits der angesprochenen Adresse heraus. So gibt es in einem 8 Megabit Baustein wie dem 27c801 insgesamt 1048576 Bytes (=8388608 Bits). Jedes Byte hat dabei seine eigene Adresse, fortlaufend von 00000h bis FFFFFh nummeriert (dieses entspricht dezimal 0 bis 1048575).
Neben den 8 Bit Speicherbausteinen gibt es noch 16 Bit Speicherbausteine, serielle 1 Bit Speicherbausteine und (selten/alt) 4 Bit Bausteine.
Die Bezeichnung EPROM steht für Erasable Programmable Read Only Memory. Was bedeutet das im Einzelnen?
"Erasable" meint das dieser Typ löschbar ist. Das Löschen erfolgt bei diesen Chips durch das Bestrahlen mit intensivem ultravioletten Licht im Bereich von 254 nm Wellenlänge. Auf das Löschen von Eproms mit UV-C Licht gehen wir weiter unten genauer ein.
"Programmable" meint das ein Programm oder Daten in diesen Chip programmiert (eingebrannt) werden können. Für das Programmieren ist ein Programmiergerät wie der Batronix BX32, BX32P oder BX40 erforderlich.
"Read Only Memory" meint das dieser Speichertyp im Zielgerät nur ausgelesen, aber nicht mehr programmiert werden kann.
Dieser Speichertyp kann also von einem Programmiergerät gebrannt (programmiert) werden und behält seine Daten dann solange, bis er von einem Löschgerät wieder gelöscht wurde. Beim Programmiervorgang können beliebig viele Bits von Eins auf Null programmiert werden. Eproms können dabei auch ohne Löschvorgang mehrfach hintereinander programmiert werden, solange die Bits nur von Eins auf Null geändert bzw. auf Null bleiben. Um Bits von Null auf Eins zu setzen, ist ein Löschvorgang notwendig. Näheres zum Löschen mit UV-C Licht steht weiter unten.
Da dass zum Löschen mit UV-C Licht notwendige Quarzglasfenster bei dem Chip einen großen Teil der Produktionskosten ausmacht, gibt es diese Bausteine mit und ohne Quarzglasfenster. Ohne Fenster lässt sich der Baustein nicht mehr durch UV-C Licht löschen. Die Eproms mit Fenster nennt man auch UV-Eproms, die ohne Fenster OTP (=One Time Programmable) Eproms.
Nach dem Programmieren eines mit UV-C Licht löschbaren Eproms sollte das Glasfenster mit einem Aufkleber zugeklebt werden, damit kein Sonnenlicht mehr eintreten kann. Das Sonnenlicht enthält nämlich auch Bestandteile des UV-C Lichtes und kann damit nach einiger Zeit Daten in dem Eprom löschen.
In der Bezeichnung eines EPROMS sagt das "C" nach der 27 aus, dass es sich um ein CMOS EPROM handelt (CMOS=Complimentary Metal Oxide Semiconductor). Diese benötigen wesentlich weniger Leistung als die alten NMOS EPROMS und kommen mit niedrigeren Programmierspannungen (12.5 Volt) aus (NMOS=N-channel Metal Oxide Semiconductor). Da beide Bauteile ansonsten kompatibel sind, können die alten NMOS EPROMS durch CMOS EPROMS gleicher Größe ersetzt werden (z.B. Tausch eines 2764 durch ein 27C64).
Die Bezeichnung EEPROM steht für Electrically Erasable Programmable Read Only Memory. Diese haben den selben Aufbau wie EPROMS, ermöglichen aber das Löschen einzelner Bytes oder des gesamten Speichers auf elektrischem Wege ohne UV-Licht. Da sich einzelne Bytes ohne das Löschen des gesamten Speichers löschen lassen, können diese einzelnen Bytes praktisch übergebrannt werden. Allerdings dauert der Brennvorgang bei einem EEPROM mit bis zu einigen Millisekunden pro Byte deutlich länger als bei EPROM. Um diesen Nachteil wieder zu beheben wurde in EEPROMS wie den AT28C256 eine Funktion zur Programmierung von sogenannten Blocks eingebaut. Dabei werden 64, 128 oder 256 Byte auf einmal in den Speicherbaustein geladen und gleichzeitig als Block programmiert. Dieses führt dann zu deutlich schnelleren Programmierzeiten.
Der zusätzliche interne Aufwand für die elektrische Löschbarkeit sowie ggf. die Blockschreibfunktion machen die EEPROMS teurer als die EPROMS.
Diese Bausteine lassen sich komplett oder blockweise elektrisch löschen und zudem lassen sich einige auch blockweise (wie die AT28C... bei den EEPROMS) programmieren. Die Flash EPROMS lassen sich aber leider nicht immer als Ersatz für ein normales Eprom einsetzen. Grund ist z.B., dass es die Flash Eproms auch mit kleinen Speichergrößen nur in Gehäusen mit 32 Pins oder mehr gibt. Ein 28F256 ist mit 32 Pins also nicht pinkompatibel zu einem von Speicherbereich gleichgroßen 27C256, der 28 Pins hat.
Seriell bedeutet bei diesen Bausteinen, das die Datenausgabe sowie die Adressangabe Bit für Bit (=seriell) erfolgt. Damit kann zwar nur ein Bit zur Zeit ausgegeben werden und die angesteuerte Adresse muss auch Bit für Bit übertragen werden aber dafür hat es den großen Vorteil das dass serielle EEPROM mit einem kleinen 8 Pin Gehäuse auskommt. Diese Bausteine werden demnach gerne eingesetzt, wenn Platz oder Ansteuerungsleitungen gespart werden sollen und dabei keine großen Datenmengen oder große Geschwindigkeit gefordert sind.
Die Bezeichnung RAM steht für "Random Access Memory" (= Speicher mit wahlweisem Zugriff). Diese Speicher sind sehr schnell zu beschreiben (man spricht hier im allgemeinen nicht von Brennen sondern von beschreiben) und jedes Byte lässt sich zudem einfach und genauso schnell überschreiben, es ist also kein Löschen erforderlich. Der Nachteil der Speichertechnologie liegt aber darin, dass diese Bausteine Ihren Speicherinhalt beim Ausschalten der Versorgungsspannung verlieren.
Die Bezeichnung NVRAM steht für Non Volatile Random Access Memory. Diese Bausteine haben also die großen Vorteile der RAM Bausteine (sehr hohe Geschwingkeit und einfaches Überschreiben bestehender Daten) und behalten auch nach dem Ausschalten der Versorgungsspannung Ihre Daten.
Dafür gibt es zwei mögliche Ansätze: Die erste Gruppe hebt den Nachteil der ursprünglichen RAMS mit einer eingebauten Batterie auf, die den Speicher beim Abschalten der Versorgungsspannung vor dem Verlust der Daten schützt. Die Batterie hält je nach Typ ca. 10 Jahre laut Herstellerangaben.
Die zweite Gruppe besitzt ein EEPROM gleicher Größe und speichert beim Ausschalten der Versorgungsspannung alle Daten des RAM Speichers in das EEPROM. Nach dem Einschalten der Versorgungsspannung werden die Daten dann vom EEPROM wieder in das RAM kopiert. Der Vorteil des schnellen RAM Zugriffs und der Überschreibbarkeit bleiben damit erhalten.
Ein Mikrocontroller ist ein komplettes System, bestehend aus der CPU (Recheneinheit/Mikroprozessor), dem Programmspeicher (FLASH oder EPROM), dem Arbeitspeicher (RAM) und der Ein/Ausgabe auf einem Chip. Diese Bausteine werden in vielen Geräten als "mini-PC's" gesetzt und steuern z.B. Drucker, Heizungen, Mikrowellen, Wecker etc..
Das Löschen erfolgt bei diesen Chips durch das Bestrahlen mit intensivem ultravioletten Licht im Bereich von 254 nm Wellenlänge. Da das UV-C Licht sehr gefährlich für die Augen und zudem krebserregend ist, erfolgt das Löschen dieser Chips in speziellen Eprom-Löschgeräten. Diese sorgen dafür, dass das Licht erst nach dem Schließen des Gehäuses eingeschaltet werden kann. Sobald das Gehäuse geöffnet wird, wird das Licht sofort abgeschaltet. Der Löschvorgang benötigt je nach Lichtintensität und anderen Gegebenheiten zwischen 5 und 25 Minuten. Dabei können in Löschgeräten je nach Gerätegröße von 5 bis zu einigen hundert Eproms auf einmal gelöscht werden.
Wir wurden schon oft gefragt, ob Eproms auch mit einem Gesichtsbräuner oder ähnlichem gelöscht werden können. Dieses ist aber nicht möglich, da die UV-C Wellenlänge des Lichtes bei diesem Geräten herausgefiltert werden. Das Löschen im Tageslicht ist dagegen möglich, da das Sonnenlicht auch die geforderte Wellenlänge enthält. Praktisch einsetzbar ist das Löschen durch die Sonnenlichteinstrahlung aber nicht, da dieses einige Wochen guten Sonnenschein benötigen würde.
Die Bezeichnung von Speicherbausteinen enthält das Kürzel des Herstellers, die Technologie, die Speichergröße, die schnellste erlaubte Zugriffszeit, den Temperaturbereich, die Gehäuseform sowie weitere interne Daten des Herstellers. Unterschiedliche Hersteller nutzen meist unterschiedliche Bezeichnungsarten, allerdings sind die Bausteine mit gleichen Daten unter den verschiedenen Herstellern in der Regel kompatibel.
Um die Bezeichnung eines Speicherbausteines richtig zu deuten, bedarf es schon etwas Gewöhnung. Dieses gelingt aber mit Übung sehr schnell und dann fällt es auch leicht einen Ersatztypen zu bestimmen. Ein Ersatztyp sollte die selbe Technologie nutzen (EPROM/EEPROM/FLASH/etc.), die selbe Speichergröße sowie die gleiche oder eine kürzere Zugriffzeit haben und ggf. den gleichen oder einen besseren Temperaturbereich.
Bei einem vorliegendem Speicherbaustein sucht man zunächst die Angabe der Technologie auf der Gehäusebeschriftung, also das 27C, 28C, 29F etc.. Davor befindet sich meistens ein Kürzel für den Namen des Herstellers (z.B. AT für Atmel). Dahinter folgt die Speichergröße in Bits, wobei diese je nach Hersteller teilweise unterschiedlich angegeben wird:
Ausgewählte mögliche Speichergrößen:
Zu beachten ist dabei, das die Speichergröße in Bits und nicht in Bytes angegeben wird. Hinter der Angabe der Speichergröße kommt manchmal noch eine Versionsangabe wie "B" und dann ein Trennstrich. Hinter dem Trennstrich steht dann die Angabe der schnellsten erlaubten Zugriffzeit in Nanosekunden (1/1.000.000.000 Sekunde). Das ist die maximale Verzögerungszeit zwischen dem Anlegen einer Adresse und der Ausgabe der Daten an den Ausgängen des Speicherbausteins. Auch diese Angabe ist etwas gewöhnungsbedürftig, da diese Angabe zweistellig erfolgt:
Ausgewählte mögliche Zugriffszeiten:
Hinter der Angabe der maximalen Zugriffzeit steht ein Kürzel für die Gehäuseform und den erlaubten Temperaturbereich. Da diese unterschiedlich sein können, sollte man im Zweifelsfall im Datenblatt nachschauen. Datenblätter sind übrigens gut über die Suchmaschinen wie z.B. Google mit der Bezeichnung des Bausteines + das Wort "Datasheet" (=Datenblatt) als Suchbegriffe zu finden (also z.B. 27c256 +datasheet).
Mit diesen Angaben können wir nun z.B. aus der Aufschrift M27C1001-10F1 entnehmen, dass es sich dabei um ein Eprom (=27C) mit 1 MBit Speichergröße (=1001) mit einer Zugriffszeit von 100 ns (=10) im DIP Gehäuse (=F) mit einem zulässigem Temperaturbereich von 0 bis 70Grad Celsius (=1) handelt, das von SGS Thomson (=M) hergestellt wurde.
In einer weiteren Reihe der Beschriftung des Speicherbausteines findet man dann noch das Datum der Herstellung (den Date Code). Dieses besteht aus dem Jahr (zweistellig angegeben) und der Kalenderwoche. Ein Baustein mit dem Date Code 0109 kommt also aus der 9 Kalenderwoche in 2001.