Forum: FPGA, VHDL & Co. Asynchroner SRAM


von Dennis Schmidt (Gast)


Lesenswert?

Hi

Wir versuchen gerade in einem Schulprojekt unter anderem einen SRAM
über FPGA zu steuern. Hierzu benützen wir VHDL.
Es ist ein asynchroner SRAM.
Über 16 an den FPGA angeschlossene Taster simulieren wir die
Eingangsdaten, die in den SRAM reingeschrieben werden sollen. Mit einer
weiteren Taste starten wir den Lesevorgang. Dieser kann optional auch
mit einem 1sec-Takt-Zähler gestartet werden. Eine weitere Taste soll
den Lesezyklus aus dem SRAM starten. Die gespeicherten Daten können wir
über einen USB1.1 oder über UART empfangen.
Wir haben nicht viel Erfahrung damit, und würden gerne wissen, ob
jemand schon mal ein asynchrones RAM benützt hat. Die dabei verwendeten
Zustandsautomaten für WRITE und READ würden uns sehr helfen, unser
Projekt voranzubringen.

Wir würden uns freuen, wenn Ihr euer Wissen und Erfahrung mit uns
teilen würdet.

von Dennis (Gast)


Lesenswert?

Hallo wieder

Kennt einer von euch eine Web-Site, auf der es einen memory controller
core für asynchrones RAM zu finden ist?

Wir haben das Netz durchsucht, haben aber nichts passendes gefunden.

herzlichen Dank

von Alex H. (alex123)


Lesenswert?

Hi Dennis,

schau doch mal unter Hamburg VHDL Archiv, dort
gibt's ein SRAM-Modell.
Ausserdem jede Menge Links, z.B. RASSP, ... dort
findet man manchmal auch ganz brauchbare Informationen.
Oder unter OpenCores.

http://tams-www.informatik.uni-hamburg.de/vhdl/
http://www.eda.org/rassp/
http://www.opencores.org/

Gruss,

Alex

von Dennis (Gast)


Lesenswert?

Noch ne Frage:

Wenn wir Daten speicheren möchten, die mit 50Mhz anliegen(8 Bit
parallel alle 20ns), kann ich da mit einem Clock von 50Mhz ohne
Schwierigkeiten arbeiten?
Der RAM hat die Bearbeitungsdauer von 10ns für Speicher- und
Lesevorgang!
Was mache ich, wenn ich keine PLL_Eingang am FPGA habe? Wie schnell
sollte ich den neuen Clock wählen?

von Nobody (Gast)


Lesenswert?

Wie sieht bei deinem RAM der Timing Waveform für Schreiben und Lesen
aus?

Dies würde den Leuten sicher helfen deiner Frage eine Antwort zu
liefenrn. Mich würden die Antworten auch interessieren, da ich auch
demnächst mit externem RAM arbeiten möchte.

von Dennis Schmidt (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Leute,

hier ist das Datenblatt des von uns verwendeten RAM.
ich hoffe, dass ich ein paar Tips bekomme, wie wir z.B. einen
Schreibzyklus realisieren können, und auf was bei VHDL speziell den
Takt betreffend beachtet werden sollte.
Auf was sollte geachtet werden, wenn ich 10 mal hintereinander Daten in
den Speicher schreibe(Adresszähler wird inkrementiert). Wie sollte der
Takt gewählt werden?

Vielen Dank im Voraus

von Dennis Schmidt (Gast)


Lesenswert?

Hallo nochmals,

kann mir jemand grob verbal beschreiben, wie ich die Signale zu setzen
habe, wenn ich in den RAM schreiben möchte?

von Ssss S. (sssssss)


Lesenswert?

Hi!

Einfach die Waveforms im Datenblatt implementieren ;)

Such dir zb auf Seite5 eine Read Waveform aus und auf
Seite6 eine Write Waveform.
Da steht alles drin was du wann wie setzen musst ;)

BYe, Simon

von Dennis Schmidt (Gast)


Lesenswert?

Wenn ich jetz etwas schreiben möchte, und dies 10 mal hintereinander,
muss ich in einem Schreib-Process zuerst
1. Adresse anlegen,
2. dann CE auf "0" legen
3. dann WE auf "0" legen
4. OE auf "1" legen???????????
Werden dann so drauffolgend die an DATA-Leitungen anliegenden Daten ins
RAM geschrieben?

Wie bekomme ich die Timings hin, wenn ich mit 50 MHZ arbeite?
ich kann doch keine kürzeren Clocks als 20 ns erhalten.

von Dirk (Gast)


Lesenswert?

Hi,

http://www.derepas.com/fabrice/hard/#ramtester

hier wird auf dem Xilinx Startkit (FPGA) die asynchronen SRAMs von ISSI
angesprochen.

>Wie bekomme ich die Timings hin, wenn ich mit 50 MHZ arbeite?
>ich kann doch keine kürzeren Clocks als 20 ns erhalten.

Einige FPGAs besitzen PLL oder DLL Stufen. Mit der PLL/DLL kannst du
deinen Eingangsclocksignal z.B. verdoppeln und kommst so an die
maximale 10ns.

von Klaus F. (kfalser)


Lesenswert?

Wenn Du wirklich alle 20 ns neue Daten in das RAM schreiben willst, dann
musst Du deinen Takt auf 100 MHz verdoppeln.
Wenn Du dann noch deine Ausgänge an unterschiedlichen Taktflanken
änderst, bekommst Du eine saubere Lösung.
Das WE Signal bleibt dann für 10 ns low, Du brauchst also mindestens
die SRAMs mit der -12 oder -15 Geschwindigkeit.

         |<-10 ns >|

Takt   __|----|____|----|____|----|____|-----|____

Addr     >< Adresse  1       >< Addresse 2
WE     -------|_________|---------|__________|-----

Wenn Du nur 1 SRAM am Datenbus hast, dann kannst Du CE fest auf 1
legen, sonst gemeinsam mit der Adresse ändern.

von Klaus F. (kfalser)


Lesenswert?

Wenn Du nur 1 SRAM am Datenbus hast, dann kannst Du CE fest auf '0'
legen, sonst gemeinsam mit der Adresse ändern.

von Winni Gruber (Gast)


Lesenswert?

Mach dir einfach eine kleine Statemachine für den Lese- und den
Schreibvorgang.
In dieser Statemachine (FSM) kannst du dann bei jedem Zustandswechsel
die Ausgangssignale ändern. (Also WE, Data, Address, ...) Die
Zustandswechsel erfolgen mit dem Takt, also maximal alle 20 ns ein
Wechsel. Du kannst aber auch, wenn nötig einfach einen Wartetakt
einfügen und somit den nächsten Signalwechsel erst nach 40 ns ausführen
(Waitstate). Versuche also, mit dieser FSM die im Datenblatt des Rams
beschriebenen Waveforms nachzubilden, so dass die geforderten Zeiten
nicht UNTERschritten werden.
Dass das RAM auch schneller kann, das braucht dich nicht zu stören. Bei
einem S-RAM funktionieren die Zugriffe auch immer langsamer, nur eben
nicht schneller, als die angegebenen Zeiten!
Ich hoff, dir geholfen zu haben...

von Jürgen Schuhmacher (Gast)


Lesenswert?

Winni, überprüfe bitte mal das Timing und die state machine deiner
Tastatur- Du hast da irgendeinen doppelten Clock drin - gfs mal einen
wait state einfügen :-)

von Xenu (Gast)


Lesenswert?

@Jürgen Schuhmacher:

Das ursprüngliche Posting ist zwei Monate alt.
Ich nehme mal an dieses Schulprojekt ist schon vorbei.

von Jürgen Schuhmacher (Gast)


Lesenswert?

Stimmt auch wieder, mir ging es ums Doppelpost, ist aber egal :-)

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.