Forum: FPGA, VHDL & Co. Dual ported RAM


von Thomas W. (diddl)


Lesenswert?

Ich habe eine Design Frage, ganz grundsätzlich ...


---------
Ich habe einen 256 MB SDRAM an einem Spartan-6.

Der Refresh läuft tadellos, der Zugriff erfolgt "von außen".
Das ermöglicht einem kleinen Java Programm, dem Loader, den SDRAM zu 
beschreiben (und zu lesen).

---------
Ich habe eine kleine CPU die auf den SDRAM zugreift (Code und Daten).

---------
Nun würde ich gerne beides kombinieren.
Damit ich Code für die CPU rauf laden kann.


Wie macht man es am besten?

- Mit dual ported RAM?

- Oder einen speziellen Zustand in der State Machine der CPU?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thomas W. schrieb:
> - Oder einen speziellen Zustand in der State Machine der CPU?
Nur so geht das.
Denn du hast ja kein DP RAM, deshalb musst du den Zugriff auf das RAM 
so multiplexen, dass jeder mal drankommt...

von Bernhard K. (bkom)


Lesenswert?

Oder eines der Blockrams des Spartans als Rom mit Bootloader verwenden?

Thomas W. schrieb:
> ---------
> Ich habe eine kleine CPU die auf den SDRAM zugreift (Code und Daten).
>
> ---------

von Thomas W. (diddl)


Lesenswert?

Bernhard K. schrieb:
> Oder eines der Blockrams des Spartans als Rom mit Bootloader verwenden?
>

Das war meine erste Idee.

Aber es wäre natürlich cool, den Speicher von "außen" zu sehen, auch 
während des Betrieb ...



Vorallem ist die Kommunikation mit dem FPGA CPU-core dann deutlich 
verbessert, wenn es einen gemeinsamen Speicher gibt.

Als wenn nur serielle Kommunikation über UART und/oder SPI geht.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Thomas W. schrieb:
> Aber es wäre natürlich cool, den Speicher von "außen" zu sehen
Du bist damit dann aber weit, weit, weit weg von den bisherigen 256MB 
Speicherplatz. Das ist das Problem mit den internen SRAM-Blöcken.

> auch während des Betrieb ...
Wenn schon, dann "dem Betrieb"...  ;-)

von Route_66 H. (route_66)


Lesenswert?

Lothar M. schrieb:
> Wenn schon, dann "dem Betrieb"...  ;-)

Wenn du schon korrigierst, dann richtig!
Es heißt: während des Betriebes.

Der umgangssprachlich oft verwendete Dativ macht noch lange keine 
richtige Schreibweise.

von Ordner (Gast)


Lesenswert?

Lothar M. schrieb:
>> auch während des Betrieb ...
> Wenn schon, dann "dem Betrieb"...  ;-)

während DES BETRIEBS!

erschütternd, was hier an Rechtschreibung unterwegs ist!

Der Akkusativ ist hier grammatikalisch falsch und wird in DE nur in der 
sprachlich unterentwickelten Region Schwaben in dieser Weise verwendet.

von Gustl B. (-gb-)


Lesenswert?

Ordner schrieb:
> Der Akkusativ ist hier grammatikalisch falsch und wird in DE nur in der
> sprachlich unterentwickelten Region Schwaben in dieser Weise verwendet.

Dativ

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Route 6. schrieb:
> Wenn du schon korrigierst, dann richtig!
Ja, zum Glück hat einer den Witz "von den Anführungszeichen" begriffen 
und auch den Smiley richtig interpretiert... ;-)

Ordner schrieb:
> Der Akkusativ ist hier grammatikalisch falsch
Der ist ja noch besser...  :-D

Stichwort dazu: Der Dativ ist dem Genitiv sein Tod!


Aber nachdem das durch ist: können wir uns wieder des Themas annehmen?

: Bearbeitet durch Moderator
von Thomas W. (diddl)


Lesenswert?

Lothar M. schrieb:
> Du bist damit dann aber weit, weit, weit weg von den bisherigen 256MB
> Speicherplatz. Das ist das Problem mit den internen SRAM-Blöcken.

Nee, bin ich nicht.
Ich dachte schon an einer Anbindung des SDRAM nach "Außen".



Der Mojo hat ja einen AVR (einen 32u4) vorgeschaltet.
Der programmiert den Flash und/oder den Spartan direkt über ein BIT 
File.

Aber der ist auch über RX/TX und SPI angeschlossen.
Wobei auch schon der UART sehr flink läuft,mit 500 Kbit.

Bei den Mojo Code Samples gibt es einen SD Controller.
Und es gibt ein "Register" Sample.

Das Register Sample ist einfach ein 32 bit adresslatch und ein 32 bit 
Datenbus.
Man kann so 32 Bit lesen und schreiben direkt über den USB Port.
Dazu gibt es ein Utility und auch einen Java Code.
Läuft super schnell.


Ich habe das SDRAM Sample und da Register Sample kombiniert.
Da ist der ganze SDRAM als register eingeblendet von Adresse 0 weg.
Und ab Adresse 0xFFFFFFE0 habe ich mal 4 Stück 32 Bit Register.
Läuft fein um module direkt in der Hadware testen zu können.

: Bearbeitet durch User
von Thomas W. (diddl)


Lesenswert?

Der SDRAM controller bietet ein memory interface.

Ich dachte ich mach mir ein Verilog Modul, das drei solche Memory 
Interfaces bitet, einen Master zum SDRAM und zwei Slaves.

Dann kann die FPGA CPU eines der Memory Slave Interface haben und der 
externe Speicherzugriff den anderen.


Damit ist das transparent.
Die CPU benutzt den SDRAM direkt oder zber den Splitter.

von Mampf F. (mampf) Benutzerseite


Lesenswert?

Thomas W. schrieb:
> Aber es wäre natürlich cool, den Speicher von "außen" zu sehen, auch
> während des Betrieb ...

Bei schnellem SRAM kann man ein cycle-shared-RAM-Interface 
implementieren ... Beispielsweise, das SRAM wird mit 60MHz betrieben und 
es gibt zwei Busse, die jeweils 30MHz fahren und sich quasi die 60MHz 
teilen.

Das ist ansich schon ein Aufwand - funktioniert aber.

Bei SDRAM dürfte das aber nochmal eine Ecke komplexer sein ... Falls es 
da was fertiges gibt, würde ich auf jedenfall das fertige verwenden.

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.