Forum: Mikrocontroller und Digitale Elektronik Kompatibilität von SRAMs


von mr.chip (Gast)


Lesenswert?

Hallo

Wieder mal ne kleine Bestätigungsfrage:

Stimmt es, dass diese typischen kleinen SRAM-ICs (ca8-32 k x 8 Bit) von 
ihrer Ansteuerung her völlig kompatibel sind? (ausser Adressbreite, 
maximale Geschwindigkeit und evtl. Pinzuordnung)

Gruss

Michael

von Michael U. (Gast)


Lesenswert?

Hallo,

was ist "typisch"?

Bei den CMOS-Rams 2kx8 (6216), 8kx8 (6264), 32kx8 (62256) und deren 
Abkömmlingen kann man sagen ja.
Bei den Cache-Rams soweit auch, auch kompatibel zu den CMOS-Rams, wenn 
man sie z.B. an einen AVR hängt.
Die Cache-Rams haben meist noch spezielle Ansteuerzyklen, um schneller 
zugreifen zu können, die variieren von Hersteller zu Hersteller 
durchaus.

Im Zweifelsfalle also der Blick ins Datenblett.

Am Memory-Interface von 8515, Mega8515 und Mega162 liefen bei mir mir 
bisher eigentlich allem die ich gerade in einer Kiste fand.

Gruß aus Berlin
Michael

von mr.chip (Gast)


Lesenswert?

> Am Memory-Interface von 8515, Mega8515 und Mega162 liefen bei mir mir
> bisher eigentlich allem die ich gerade in einer Kiste fand.

Das wollte ich hören, danke :-)

von Jaipur B. (jaipur)


Lesenswert?

hört sich so in etwas an wie: speicherzugriffsverfahren - synchron & 
asynchron : lesen / schreiben

ich glaube so eine nettes und vor allem einfaches und überschaubares 
tutorial wäre echt toll, ich weiß aber nicht ob ich das zustande 
bekommen würde.

von mr.chip (Gast)


Lesenswert?

> ich glaube so eine nettes und vor allem einfaches und überschaubares
> tutorial wäre echt toll, ich weiß aber nicht ob ich das zustande
> bekommen würde.

Einen Leser hättest du auf jeden Fall :-) (Wobei das ansteuern von 
diesen Standard-SRAMs eigentlich wirklich nicht schwer, und die 
Datenblätter meist ausführlich sind.)

von A.K. (Gast)


Lesenswert?

Daumenregel: SRAMs die man irgendwo rausgezogen hat oder reinstecken 
kann (d.h. DIP-Gehäuse verfügbar) sind einfach gestrickt und bis auf 
3,3V/5V-Versorgung ziemlich identisch anzusteuern. Muss man sie 
aus/einlöten (also nicht in DIP-Gehäuse erhältlich), dann wird die Chose 
komplizierter.

von Jaipur B. (jaipur)


Lesenswert?

was hat denn nun die gehäuse form mit zugriffszyklen zu tun ? ;)

von mr.chip (Gast)


Lesenswert?

> was hat denn nun die gehäuse form mit zugriffszyklen zu tun ? ;)

Daumenregel :-)


Noch ne Frage zu den 8515ern - wie schnell bzw. langsam wollen die ein 
SRAM? Ich vermute mal, die Geschwindigkeit, die man bieten muss, hängt 
von der Taktfrequenz ab?

von Michael U. (Gast)


Lesenswert?

Hallo,

@Jaipur Boucheron: naja, das ist doch aber logisch...

Teste, wie oft in der Sekunde Du einen SRAM im DIL-Gehäuse mit 2 Fingern 
von der Tischplatte aufnehmen und wieder ablegen kannst.
Nun cersuche das mit einem SMD-Typ.

Gibt es Einfluß auf die Zugriffszyklen oder nicht? ;-)

Gruß aus Berlin
Michael

von Michael U. (Gast)


Lesenswert?

Hallo,

bei den alten CMOS-Rams dürfte das langsamst, was Du findest -15 sein, 
das sind da 150ns, da sind da sind dann eben Waits ab ca. 8MHz fällig.
-12 und -10 dürften höchstens bei 16MHz an die Grenze kommen.
Die Cache-Rams fangen wohl so bei -25 an, da das sind aber 25ns... :)

Gruß aus Berlin
Michael

von Benedikt K. (benedikt)


Lesenswert?

Michael U. wrote:
> -12 und -10 dürften höchstens bei 16MHz an die Grenze kommen.

Erklär mal wie ein 120ns RAM die Daten bei 16MHz in <1 Takt (<62,5ns) 
die Daten liefern soll.

von Michael U. (Gast)


Lesenswert?

Hallo,

das XMEM-Interface benötigt 4 Takte, es läuft asyncron...

Interessant finde ich in dem Zusammenhang, daß in der 
Befehlsbeschreibung für lds und sts jeweils 2 Takte angegeben sind.
Wieviele Takte braucht ein AVR bei

lds  r0,0x0060
lds  r1,0x0061
lds  r2,0x0062

???

Gruß aus Berlin
Michael


von Benedikt K. (benedikt)


Lesenswert?

6 Takte ist, doch klar. Gegenfrage:
Wie lange braucht folgender Code auf einem mega8151 ohne waitstates:

lds  r0,0x1060
lds  r1,0x1061
lds  r2,0x1062

Du hast auch meine vorhergehende Frage noch nicht beantwortet.

von Jaipur B. (jaipur)


Lesenswert?

also ich würde mich schon darüber freuen wenn mich jetzt mal jemand 
wenigstens ein bisschen über die timings aufklären könnte. ich bin mir 
hier leider immer noch nicht im klaren welche werte ich einhalten muss. 
mir gelingt es leider nur sehr schwer diese diagramme zu lesen, danke!

von Benedikt K. (benedikt)


Lesenswert?

Es ist etwas schwer zu sagen, da eine Menge Timingparameter stimmen 
müssen.
Mal einige aus dem Datenblatt zusammengefasst:
2/Fclk - 20ns muss größer sein als die Zugriffszeit vom SRAM.
Hier sind 100ns ist die Grenze.

Weiterhin muss gelten:
1/Flck - 50ns muss größer sein, also das SRAM braucht um die Daten 
anzulegen wenn man OE\ aktiviert (meist als TdOE bezeichnet).
Damit dieser Wert bei 16MHz ohne Waitstate eingehalten wird, braucht man 
schon einen RAM mit <35ns.
Ich hatte aber auch mit 55ns RAMs keine Probleme. Allerdings darf der 
Bus dann nicht belastet sein, also keine weiteren Sachen wie lange 
Leitungen, LCDs o.a. am Bus hängen !

Die Werte habe ich versucht aus dem Datenblatt zu interpretieren, also 
keine Garantie dass diese Aussagen stimmen !

von Michael U. (Gast)


Lesenswert?

Hallo,
@Benedikt K.:
doch habe ich, siehe oben:

"das XMEM-Interface benötigt 4 Takte, es läuft asyncron..."

Damit ist die Zykluszeit bei 16MHz ohne Wait 250ns.

Kritisch ist offenbar die Datenvorhaltezeit, der Übergang Adresse Low -> 
Daten im Takt 2 ist nicht sicher definiert.

Diagramme Datenblatt Mega8515 ab Seite 26.

Deshalb ja auch meine Frage oben:

lds  r0,0x1060 braucht 2 Zyklen
Das XMEM-Interface braucht aber 4 Zyklen.

Was macht der AVR, wenn direkt ein zweiter lds folgt bis XMEM fertig 
ist?
Dauert dieser lds (und folgende) dann 4 Zyklen oder gar 7 mit gesetzen 
Wait-Zyklen?

Gruß aus Berlin
Michael

von Michael U. (Gast)


Lesenswert?

Hallo,

ich habe nur ein Datenblatt von HM62256 zur Hand, beim langsamsten 
angegeben mit -8 ist die Write cycle time 85ns, die Write pulse width 
55ns, das würde also noch in die 62,5ns bei 16MHz reinpassen.
Da /WR als leztes aktiv wird, startet es den Schreibvorgang.
Die Daten müssen erst 35ns vor dem Ende von /WR gültig sein, die liegen 
aber schon bei der fallenden Flanke von /WR, also 62,6ns vorhher an, das 
passt auch.

Gut, bei 120ns ist es zu knapp, da dürfte Write pulse width bei 90ns.
Bei 1 Wait (/WR ist dann 125ns aktiv) müßte auch das schon gehen).

Gruß aus Berlin
Michael

von Jaipur B. (jaipur)


Lesenswert?

zurück zu den speicherzugriffsverfahren: synchron - lesen / schreiben

allgemein gilt: gültigkeit der adresse, gültigkeit des datums, übernahme 
des datums - der master legt die adresse für eine ganz bestimmte zeit 
auf den bus, innerhalb dieser zeit muss der slave reagieren können.

bei einem 8051 liegt diese zeit bei einer freuqnz von 12MHz zwischen 
300ns bis 500ns. in dieser zeit muss die zeit von dem speicher liegen. 
diese liegen um die 70ns. das ganze pasiert nach dem anlegen von dem /RD 
bzw /WR signal, das ist so zusagen der startschuss. der 8051 hält also 
seine daten viel länger als notwendig "offen"

falls ich falsch liegen sollte, würde ich mich natürlich über jede 
berichtigung freuen :)

von A.K. (Gast)


Lesenswert?

> was hat denn nun die gehäuse form mit zugriffszyklen zu tun ? ;)

Ähnlich viel, wie die sinkende menschliche Geburtenrate mit dem Rückgang 
der Storchenpopulation. Ursächlich garnichts.

Es ist nur so, dass die einfach gebauten asynchronen SRAMs technisch 
überwiegend aus Zeiten stammen, in denen man noch oft mit DIL Gehäuse 
arbeitete. Komplexere SRAM Ansteuerungen, wie beispielsweise 
burst-SRAMs, sind dann nur noch in SMD-Gehäuse auf dem Markt gekommen.


von Benedikt K. (benedikt)


Lesenswert?

Ich habe leider keine Infos zu der Zeit für ld auf externen Speicher 
gefunden, ich gehe aber von 3 Takten aus. Schaut man sich den internen 
Zugriff an (der 2 Takte benötigt): Es werden zwar auch 3 Takte 
dargestellt, der letzte ist aber nur die Vorbereitung für den nächsten 
Zurgiff.
Das würde auch vom logischen her am besten passen: Der externe Zugriff 
ist identisch mit dem internen Zugriff + 1 Zusatztakt für ALE.

Ob ein zweiter ld danach folgt oder nicht ist egal, das sieht man ja im 
Datenblatt: Nach 3 Takten ist man wieder an der selben Stelle und es 
wiederholt sich der Zyklus.


Ich denke die kritischste Stelle ist das was im mega8515 Datenblatt 
unter Punkt 10 steht: "Read Low to Data Valid:" 1/Flck - 50ns
Das setzt sich aus "Data Setup to RD high:" 40ns und
"RD Pulse width:" 1/Fclk - 10ns zusammen: 1/Fclk - 10ns - 40ns = 1/Flck 
-50ns

Das macht bei 16MHz Takt also 12,5ns Zeit zwischen OE\ Low und Daten 
müssen anstehen !
Somit scheiden alle RAMs über 50ns aus.
RAMs mit 55ns laufen, aber nur wenn man eine Timingverletzung in Kauf 
nimmt.
Für alle anderen RAMs braucht man also Wait States.

von Michael U. (Gast)


Lesenswert?

Hallo,

naja, da kann man wirklich nur Diagramme und Datenblätter studieren...

Nach dem Datenblatt des Hitachi 62256 gehen dann selbst 40ns-Typen da 
nicht ohne Wait, toe ist da schon mit 30ns angegeben.

Gruß aus Berlin
Michael

von A.K. (Gast)


Lesenswert?

Will man bei AVRs und voller Taktfrequenz ohne Waitstate arbeiten, sind 
Cache-SRAMs nötig, wie man sie auf 486/Pentium Mainboards fand. 
Allerdings sollte man deren Stromverbrauch sowohl bei der Versorgung als 
auch beim Layout beachten.

Theoretisch könnte man die OE-Zugriffszeit zwar auch anders angehen, 
aber da sich dem Datasheet die Adresszugriffszeit nicht eindeutig 
entnehmen lässt, ist das witzlos.

von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Auf 486er- Platinen waren üblicherweise 8 Stück 32k*8 und ein "TAG-Ram" 
mit nur 8k verbaut, also aufpassen, die 8 mit gleicher Typbezeichnung 
sind die richtigen.

von Benedikt K. (benedikt)


Lesenswert?

Ich hatte auch schon Mainboards mit 8x 8kB. Die 32kB SRAMs erkennt man 
an de 256 bzw 257 in der Bezeichnung.

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.