Forum: Mikrocontroller und Digitale Elektronik Verschiedene RAM-Arten auseinanderhalten


von Zwille (Gast)


Lesenswert?

Hallo,

die grundsätzlichen Begriffe RAM, (Flash-)ROM, EEPROM sind mir bekannt.

Doch momentan bin ich dabei einen geeigneten Mikrocontroller für ein 
Projekt auszusuchen und da tauchen bei mir doch einige Fragen gerade zur 
Abgrenzung dieser Speicher auf.


Bei den RAMs z.B. gibt es den SRAM (Statischen RAM), ERAM (Extended 
RAM), den XRAM (Externer RAM), Scratchpad-RAM,... - und vielleicht gibt 
es ja noch mehr.
Ich habe jedes dieser Worte einzelnd nachgeschlagen und sehe sie deshalb 
getrennt. Manchmal bin ich mir nicht ganz sicher, ob ich die richtig 
verstanden habe, um was es sich da handelt.

Ich nehme doch an, daß diese RAMs alle, mit Ausnahme des XRAM, Teile 
eines Gesamt-RAMs sind, oder?
Wie also stehen diese RAMs in Beziehung zu einander?

Bedeutet z.B. bei einigen Mikrocontrollern SRAM = RAM?

In einigen Datenblättern ist nun mal z.B. vom SRAM dann wieder von einem 
anderen die Rede. Und klar, Datenblätter erzählen nicht gerne von dem 
was der Mikrocontroller nicht hat.

Mein Kernproblem also ist: Wie lassen sich Mikrocontroller mit 
derartigen verschiedenen Angaben vergleichen, was sind ihre Aufgaben?

Kann mir hier vielleicht jemand einen Überblick zu diesen RAMs geben?

Vielen Dank!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Zuallererst heit RAM nichts anderes als Random Access Memory.
Also Speicher mit wahlfreiem Zugriff.
Du mußt das RAM also nicht in einer bestimmten Reihenfolge (wie z.B. ein 
Magnetband) auslesen, sondern du kannst direkt nacheinander die 
Speicherzelle X und danach die Speicherzelle Y auslesen.

> Bei den RAMs z.B. gibt es den SRAM (Statischen RAM), ERAM (Extended
> RAM), den XRAM (Externer RAM), Scratchpad-RAM,... - und vielleicht gibt
> es ja noch mehr.
Jeder uC hatte schon immer ein paar Bytes RAM. Diese waren meist im 
Befehlssatz irgendwie verankert (z.B. beim 8048...). Weil die Programme 
aufwendiger und damit mehr Speicherplatz nötig wurde, wurde der 
erweiterte (extended) RAM oder ERAM eingeführt. Und wenn das nicht 
reichte konnte man an den uC zusätzlich Speicher aussen (extern) 
anschliessen: XRAM. Das Schratchpad-RAM ist einfach ein Schmierblatt, 
auf dem jeder herumkritzeln darf.
Allerdings sind diese Begriffe herstellerabhängig und sagen nichts 
darüber aus, in welcher Technik der RAM-Speicher tatsächlich 
realisiert ist.

Die Technik eines RAMs ist dann z.B.
statisches RAM   SRAM  (das ist bei uCs üblicherweise eingebaut)
dynamisches RAM  DRAM
synchrones dynamisches RAM  SDRAM
double datarate synchrones dynamisches RAM   DDR-SDRAM
und alle möglichen weiteren Kombinationen...
http://de.wikipedia.org/wiki/Halbleiterspeicher

Fazit: es ist im normalen Leben ziemlich unnötig zu wissen, wie ein RAM 
physikalisch aufgebaut ist. Es muß nur groß und schnell genug sein... 
;-)

von Falk B. (falk)


Lesenswert?

Siehe Speicher.

von Zwille (Gast)


Lesenswert?

Lothar Miller schrieb:
> Das Schratchpad-RAM ist einfach ein Schmierblatt,
> auf dem jeder herumkritzeln darf.

Wozu wird dann hier nochmal unterschieden?

Vielen Dank auch für Deine Antwort!

von Weingut P. (weinbauer)


Lesenswert?

hmmm ... ERAM ist bei Bascom auf AVR das interne EEPROM

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Zwille schrieb:
> Wozu wird dann hier nochmal unterschieden?
Das ist einfach nur ein Name eines Programmierers für einen 
Speicherbereich. Wo dieses Schmierblatt liegt (im DRAM oder SRAM oder im 
internen Registersatz) wird mit diesem Begriff nicht festgelegt.

Der eigentliche Witz: du kannst kein Scratchpad-RAM kaufen...  :-o
Du kannst aber irgendeinen Speicherbereich reserveieren und so nennen.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Fhutdhb Ufzjjuz schrieb:
> hmmm ... ERAM ist bei Bascom auf AVR das interne EEPROM
Ich zitiere mich:
>>> Allerdings sind diese Begriffe herstellerabhängig und sagen nichts
>>> darüber aus, in welcher Technik der RAM-Speicher tatsächlich
>>> realisiert ist.

von Zwille (Gast)


Lesenswert?

Ok, ich habe versucht die Reihenfolge der RAMs bzgl. ihrer 
Geschwindigkeiten aus dem Speichertutorial herauszulesen.

Von langsam zu schnell:

-PSRAM
-DRAM
-SRAM
-SDRAM
-DDR-SDRAM

Bei den Remanenten Spreichern bin ich mir da nicht so sicher (MRAM, 
FRAM, EEPROM,...)

Ihr dürft mich gerne korrigieren!

von Zwille (Gast)


Lesenswert?

Lothar Miller schrieb:
> Der eigentliche Witz: du kannst kein Scratchpad-RAM kaufen...  :-o
> Du kannst aber irgendeinen Speicherbereich reserveieren und so nennen.
>

D.h. also, wenn im Datenblatt von einem Scratchpad-RAM die Rede ist, daß 
ich einem Speicherbereich einen Namen oder diesen Namen vergeben kann 
und ähnlich wie bei einem Enummerationsbefehl diesen Namen statt der 
ersten Adresse verwenden kann?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Irgendwie fast schon trollig...
Du gibst in einer Programmiersprache sowieso jedem Speicher einen Namen. 
Im allgemeinen sind das dann z.B. irgendwelche Variabeln (oder Arrays 
oder Zeichenketten), die dann im Speicher liegen.

> wenn im Datenblatt von einem Scratchpad-RAM die Rede ist
Dann kommt das ganz darauf an, wozu das Datenblatt gehört. In einer vom 
PC bekannten RTC gibt es ein paar Bytes, die nicht verwendet sind und 
deshalb als Schmierzettel verwendet werden können...

von Zwille (Gast)


Lesenswert?

Und gibt es ein Unterschied im Handling zwischen ERAM und XRAM, wenn 
beides on-chip untergebracht ist?

Vermutung:
Denke XRAM benötigt z.B. movx usw. während ERAM ganz normal angesprochen 
wird. ERAM gibt es z.B. weil der Vorgänger-uC diesen eben noch nicht 
hatte.

Richtig?

von Karl H. (kbuchegg)


Lesenswert?

Zwille schrieb:
> Und gibt es ein Unterschied im Handling zwischen ERAM und XRAM, wenn
> beides on-chip untergebracht ist?
>
> Vermutung:
> Denke XRAM benötigt z.B. movx usw. während ERAM ganz normal angesprochen
> wird. ERAM gibt es z.B. weil der Vorgänger-uC diesen eben noch nicht
> hatte.
>
> Richtig?

Falsch.
Du kannst vermuten soviel du willst. Letzten Endes entscheidet immer das 
Datenblatt. Deine Vermutung kann stimmen, muss aber nicht.

von Zwille (Gast)


Lesenswert?

Karl heinz Buchegger schrieb:
> Du kannst vermuten soviel du willst. Letzten Endes entscheidet immer das
> Datenblatt. Deine Vermutung kann stimmen, muss aber nicht.

Das ist ja grauenvoll. Mir dämmert es jetzt so langsam, warum es so viel 
Zeit brauchen soll, von einer uC-Familie zur anderen zu wechseln, wenn 
schon innerhalb von z.B. AVR soviel Ungleichheit in den Datenblättern 
besteht.

Bei manchen steht sogar so gut wie gar nichts drin, als ob der uC gerade 
noch in der ersten Entwicklunsphase steckt (z.B. ATmega1280).


Gibt es denn noch weitere Vergleichslisten im Netz, als den Parametric 
Product Table von Atmel, die vielleicht in manchen Punkten etwas genauer 
sind?

Wie geht Ihr da i.d.R. prinzipiell vor? Oder ist das normal, daß man 
ewig viel Zeit in die uC-Wahl steckt? Im Moment kann ich mir vorstellen, 
daß es leicht 3 Wochen werden.

Bei mir sind 19 uC in die engere Wahl gekommen. Bevor ich jedoch die 
Auswahlkritterien ausweite möchte ich mir über den Vergleich bisheriger 
Punkte völlig im Klaren sein (Speicher, I/O, Timer,...)

Oder ist das normal, daß man ewig viel Zeit in die uC-Wahl steckt? Im 
Moment kann ich mir vorstellen, daß es leicht 3 Wochen werden.

von (prx) A. K. (prx)


Lesenswert?

Zwille schrieb:

> Bei manchen steht sogar so gut wie gar nichts drin, als ob der uC gerade
> noch in der ersten Entwicklunsphase steckt (z.B. ATmega1280).

Das könnte daran liegen, dass AVRs nur eine Sorte RAM haben und selbst 
extern angeschlossenes RAM sich in der Adressierung nicht von internem 
unterscheidet (nur im Tempo). 8051er (und Derivate) haben aber aus den 
bereits beschriebenen Gründen 3-4 getrennte RAM-Adressräume. Beim Design 
der AVRs hatte Atmel diesen Fehler vermieden.

Wenn du also unbedingt einen Mikrocontroller mit IRAM, ERAM und XRAM 
benötigst, vielleicht um das Leben möglichst kompliziert zu gestalten, 
dann bist du bei AVRs völlig falsch und solltest dich beispielsweise bei 
Atmels anderer Typenreihe umsehen, den AT98ern. Die bieten das.

von (prx) A. K. (prx)


Lesenswert?

PS: Ersetze AT98 durch AT89.

von (prx) A. K. (prx)


Lesenswert?

Zwille schrieb:

> Das ist ja grauenvoll.

Als du das erste Mal versuchst hast, auf 2 Beinen zu gehen, hat das auch 
ein wenig gedauert. Mittlerweile geht das hoffentlich schneller.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.