Asynchroner SRAM

Gast #388605
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.
Gast #388606
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
Gast #388608
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?
Gast #388609
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.
Gast #388610
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
Angehängte Dateien:
Gast #388613
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.
Gast #388614
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.
#388615
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.
Gast #388617
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren