www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Asynchroner SRAM


Autor: Dennis Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Alex H. (alex123)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Nobody (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dennis Schmidt (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo nochmals,

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

Autor: Ssss Ssssss (sssssss)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dennis Schmidt (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dirk (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Klaus Falser (kfalser)
Datum:

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

Autor: Winni Gruber (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 :-)

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jürgen Schuhmacher:

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

Autor: Jürgen Schuhmacher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stimmt auch wieder, mir ging es ums Doppelpost, ist aber egal :-)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.