Forum: Mikrocontroller und Digitale Elektronik SRAM Ansteuern (Zeitdiagramm)


von Fabian S. (ih453)


Lesenswert?

Hallo zusammen,

ich bin neu in diesem Forum und habe direkt schon einige Fragen.
Bei meinem momentanen Vorhaben geht es darum, dass ich gerne Daten in 
ein SRAM (AS6C1008)schreiben sowie aus dem SRAM lesen möchte.
Da ich mir jedoch nicht ganz sicher bin, wie ich nun das SRAM richtig 
Ansteuern muss, wäre es schön, wenn ihr mir hier weiter helfen würdet.
(Datenblatt-Link:
https://cdn-reichelt.de/documents/datenblatt/A300/AS6C1008-ALE.pdf)

Meine Idee:
Bei dem Schreiben habe ich mich für den WRITE CYCLE 1 entschieden, da 
ich hierbei CE# und CE2 nicht verändern brauche. Wofür genau existieren 
diese? Laut Datenblatt für „Chip Enable Inputs“, aber warum zwei mal?
Folglich würde ich CE# auf low und CE2 auf high legen.
Im nächsten Schritt wäre für mich eine wichtige Frage, ob die Adresse, 
sowie die Daten gleichzeitig angelegt werden dürfen? Ich finde ich keine 
eindeutige Antwort in dem Datenblatt.
Nach dem anlegen der Daten und der Adresse muss nun WE# für mindestens 
twp >= 45 ns low geschaltet werden.
Die Adresse darf, sobald WE# = high, geändert werden, da twr, Tow und 
tdh mind. = 0 sind?
Des weiteren würde mich interessieren, woher ich weiß, wie groß twp 
gewählt werden muss, da im Datenblatt lediglich die Aussage gemacht 
wird, dass twp > twhz+tdw sein soll.

Zu dem Lesen, hier habe ich mich für den READ CYCLE 1 entschieden.
Hier verstehe ich es so, dass ich lediglich eine Adresse anlegen muss 
und die Daten dann an den Datenpins anliegen?
Vorausgesetzt, es ist dauerhaft WE# = high, OE# = low, CE# = low und CE2 
= high.
Die Zeit zwischen dem Anlegen der Adresse und dem Auslesen der Daten 
muss mind. 55 ns betragen.


Ich hoffe ihr könnt mir weiter helfen.


Gruß
IH453

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Womit willst Du das SRAM ansteuern? Mit winem µC (der sollte das Timing 
vorgeben, so daß die Art der zu verwendenden Zugriffe dadurch festgelegt 
ist) oder einem FPGA, das Du selbst programmierst?

von Georg G. (df2au)


Lesenswert?

Fabian S. schrieb:
> Wofür genau existieren
> diese? Laut Datenblatt für „Chip Enable Inputs“, aber warum zwei mal?
Wenn du zwei Chips davon im System hast, kannst du einfach die 
höchstwertige Adresse bei einem an CE# und beim anderen an CE2 legen und 
sparst ein Gatter. Der Pin war ohnehin frei.

> Folglich würde ich CE# auf low und CE2 auf high legen.
Richtig.

> Im nächsten Schritt wäre für mich eine wichtige Frage, ob die Adresse,
> sowie die Daten gleichzeitig angelegt werden dürfen?
Ja.

> Nach dem anlegen der Daten und der Adresse muss nun WE# für mindestens
> twp >= 45 ns low geschaltet werden.
Ja.

> Die Adresse darf, sobald WE# = high, geändert werden, da twr, Tow und
> tdh mind. = 0 sind?
Ja.

> Des weiteren würde mich interessieren, woher ich weiß, wie groß twp
> gewählt werden muss, da im Datenblatt lediglich die Aussage gemacht
> wird, dass twp > twhz+tdw sein soll.
??? Du hast doch selbst schon herausgefunden, dass #WE mindestens 45ns 
lang sein muss.

> Hier verstehe ich es so, dass ich lediglich eine Adresse anlegen muss
> und die Daten dann an den Datenpins anliegen?
> Vorausgesetzt, es ist dauerhaft WE# = high, OE# = low, CE# = low und CE2
> = high.
Ja.

> Die Zeit zwischen dem Anlegen der Adresse und dem Auslesen der Daten
> muss mind. 55 ns betragen.
Ja.

von Falk B. (falk)


Lesenswert?

@ Fabian S. (ih453)

>Bei meinem momentanen Vorhaben geht es darum, dass ich gerne Daten in
>ein SRAM (AS6C1008)schreiben sowie aus dem SRAM lesen möchte.

Was für Daten? Wieviel? Wie schnell?

>Bei dem Schreiben habe ich mich für den WRITE CYCLE 1 entschieden, da
>ich hierbei CE# und CE2 nicht verändern brauche.

> Wofür genau existieren
>diese?

Umd dem IC zu sagen: "HEy, DU bist gemeint!"

>Laut Datenblatt für „Chip Enable Inputs“, aber warum zwei mal?

Warum nicht? Damit kann man zumindest zwei Cips ohne Zusatzlogik 
ansprechen.

>Im nächsten Schritt wäre für mich eine wichtige Frage, ob die Adresse,
>sowie die Daten gleichzeitig angelegt werden dürfen?

Ja.

> Ich finde ich keine
>eindeutige Antwort in dem Datenblatt.


>Nach dem anlegen der Daten und der Adresse muss nun WE# für mindestens
>twp >= 45 ns low geschaltet werden.

Ja.

>Die Adresse darf, sobald WE# = high, geändert werden, da twr, Tow und
>tdh mind. = 0 sind?

Ja.

>Des weiteren würde mich interessieren, woher ich weiß, wie groß twp
>gewählt werden muss, da im Datenblatt lediglich die Aussage gemacht
>wird, dass twp > twhz+tdw sein soll.

>Hier verstehe ich es so, dass ich lediglich eine Adresse anlegen muss
>und die Daten dann an den Datenpins anliegen?

Ja.

>Vorausgesetzt, es ist dauerhaft WE# = high, OE# = low, CE# = low und CE2
>= high.

Genau.

>Die Zeit zwischen dem Anlegen der Adresse und dem Auslesen der Daten
>muss mind. 55 ns betragen.

Ja.


>Ich hoffe ihr könnt mir weiter helfen.

Du hast es schon vollkommen richtg erkannt. Aber eine SRAM-Ansteuerung 
"zu
Fuß" mit TTL-ICs macht heute keiner mehr. Dazu nimmt man mindestens 
einen CPLD oder direkt einen passenden Mikrocontroller.

https://www.mikrocontroller.net/articles/Speicher#SRAM

von Fabian S. (ih453)


Lesenswert?

Hallo,

vorab schon einmal Danke für eure schnellen und sehr hilfreichen 
Antworten.

@ Rufus
Ich möchte das ganze erst einmal mit einem Mikrocontroller testen bzw. 
Ansteuern. Hierbei war für mich besonders wichtig, dass ich das SRAM 
richtig Ansteuere, bzw. die richtigen Zeiten und Reihenfolgen einhalte.

@ df2au
Bei der Berechnung twp > twhz+tdw, welche im Datenblatt ist, bin ich 
davon ausgegangen, dass dieses eine Zahl größer 45 ns ergeben kann und 
ich diese daher ausrechnen muss. Also kann man hier sagen, dass man mit 
den >45 ns auf der sicheren Seite liegt.

@ falk
Die Programmierung in VHDL (welche vermutlich auch für ein CPLD 
notwendig ist) ist nicht ganz so meins. Daher tendiere ich lieber zu 
einem Mikrocontroller.


Gruß
IH453

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Fabian S. schrieb:
> Ich möchte das ganze erst einmal mit einem Mikrocontroller testen bzw.
> Ansteuern.

Hat der einen herausgeführten Adress- und Datenbus, wie z.B. ein 
Atmega128? Dann übernimmt die Hardware des Microcontrollers das 
Ansteuern des Speicherst -- und Du hast einfach nur mehr RAM, das 
programmtechnisch genauso genutzt wird wie das im Microcontroller 
bereits enthaltene.

Du musst nur im Datenblatt des Controllers die Timingdiagramme für 
externe Speicherzugriffe mit denen des SRAMs abgleichen, d.h. ob das 
SRAM möglicherweise zu langsam für das Timing des Controllers ist (ein 
45nsec-SRAM aber ist allemal schnell genug für einen Atmega128).

Das jedenfalls ist so ziemlich die sinnvollste Art, ein SRAM 
anzusteuern ...

von Fabian S. (ih453)


Lesenswert?

Es ist gut zu wissen, dass der Atmega128 das ganze schon fertig 
vorgesehen hat. (Ich habe hier mal einen Blick in das Datenblatt 
geworfen)

Jedoch ging es mir bei meiner Frage um das Verständnis der 
SRAM-Ansteuerung.

Das ganze soll mehr zum verdeutlichen dienen ohne das dabei ein 
bestimmter Zweck erfüllt wird.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Naja, dann sieh Dir genauer an, wie es der Atmega128 macht -- das dürfte 
Dir beim Verständnis helfen, denn das ist eine praktische Anwendung.

von Georg (Gast)


Angehängte Dateien:

Lesenswert?

Fabian S. schrieb:
> Ich habe hier mal einen Blick in das Datenblatt
> geworfen

Das ist die eine Seite, andrerseits ist auch in jedem SRAM-Datenblatt 
eine Reihe von Timingdiagrammen enthalten, z.B. im beigefügten 
Datenblatt das "Read Cycle Timing Chart". Das enthält die worst case 
Angaben für Setup- und Holdzeiten. Das Datenblatt des Prozessors enthält 
dagegen die bei einem Zugriff durch diesen Prozessor tatsächlich 
auftretenden Zeitbezüge. Aufgabe des Systemdesigners ist es 
sicherzustellen, dass alle(!!) Zeitangaben des SRAMs bei allen(!) 
Readzyklen des Prozessors eingehalten werden. Also, u.a., die Setup-Zeit 
für die Adressen muss beim Prozessor grösser sein als die Minimumangabe 
beim RAM.

I.A. fasst man die Zeiten vom Anlegen von Adresse und CS bis zur Ausgabe 
der Daten als Zugriffszeit zusammen und gibt diese bei der 
Typbezeichnung an, weil es verschieden schnelle Subtypen gibt. Manchmal 
wird auch für den Prozessor angegeben, welche RAM-Zugriffszeit er 
benötigt, aber normalerweise muss man sich das selbst erarbeiten, es ist 
ja sowieso vom Prozessortakt abhängig.

Georg

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.