Forum: FPGA, VHDL & Co. True DualPortRam Zugriff von mehreren Entities


von P. S. (sw1ft)


Lesenswert?

Hallo miteinander,

ich bastel mir gerade ein Design auf meinem Spartan-3E und hänge nun an 
folgender Frage. Ich habe mir mit dem Xilinx Tool den DualPortRam 
eingbaut mit der Konfiguration 5 downto 0 Adressen und 63 downto 0 
Daten. Nun möchte ich von einer Seite des DPRs mit einer Entity lesend 
und schreibend zugreifen das macht auch keine Probleme, nur auf der 
anderen Seite bin ich am überlegen wie ich das handhabe, da dort jeweils 
2 lesend und 2 schreibende Entities angeschlossen sind die per 
Chipselect gepollt werden um den Speicherzugriff zu schützen. Wird im 
Endeffekt von einem Scheduler gesteurt. Ich dachte jetzt, dass die 
Synthese das schon checkt durch den Scheduler aber ich bekomme immernoch 
die Fehlermeldung:

Multi-source in Unit <top_prototyp> on signal <addr2<0>>; this signal is 
connected to multiple drivers.

Meine Frage ist nun sollte ich eine zusätzlich Weiche einbauen (entweder 
komplett zusätzliche Entity oder im Scheduler) welche mir die Adressen 
nur im bestimmten Fall durchschleift?

Zur Verdeutlichung:

-------------|     |---------------|              |----------|
Entity1      |-----| DualPortBlock |------o-------| Entity 2 |_
             |     |               |       \      |----------|  \
-------------|     |---------------|        \                    \
       |                                     \    |----------|    |
       |                                      \---| Entity 3 |    |cs2
        \                                         |----------|    |
         \                                           |            |
          \  cs0                          cs1                   
           \-------|-----------|-------------------/            /
                   | Scheduler |                               /
                   |-----------|------------------------------/

Naja ich hoffe ist klar, ansonsten muss ichs doch noch genauer Zeichnen. 
Für weitere offene Fragen die ich in der Eile vergessen haben sollte, 
bin ich natürlich jederzeit zu sprechen.

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


Lesenswert?

> Meine Frage ist nun sollte ich eine zusätzlich Weiche einbauen
Ja, diese "Weiche" heißt Multiplexer. Den brauchst du, um die Signale 
entsprechend deiner CS1 und CS2 umzuschalten...

von P. S. (sw1ft)


Lesenswert?

-------------|     |---------------|              |----------|
Entity1      |-----| DualPortBlock |-----MUX------| Entity 2 |_
             |     |               |       \      |----------|  \
-------------|     |---------------|        \                    \
       |                                     \    |----------|    |
       |                                      \---| Entity 3 |    |cs2
        \                                         |----------|    |
         \                                           |            |
          \  cs0                          cs1
           \-------|-----------|-------------------/            /
                   | Scheduler |                               /
                   |-----------|------------------------------/


Ok, dachte ich mir schon. In diesem Sinne ist meine Frage auch schon 
beantwortet, danke Lothar

von abc (Gast)


Lesenswert?

je nach verwendeter Taktrate ist es auch möglich die zweite seite 
doppelt so schnell zu takten und beide zugriffe in einem "originaltakt" 
abzuarbeiten.

Dann brauchst du auch den scheduler nicht.

von P. S. (sw1ft)


Lesenswert?

Hab nur eine Taktdomain. Läuft also alles synchron, daher auch der 
Scheduler der alles nacheinader abholt. Soll später auch noch um weitere 
Entities erweitert werden. Ist nur mein erstes FPGA, VHDL Projekt und 
weiss noch nicht so genau wo ich mir was sparen kann. Aber wie gesagt - 
Danke für die fleißige Hilfe :)

von Jan (Gast)


Lesenswert?

Nimm einen Cyclone statt des Spartan. Der hat einen dritten 
RAM-Anschluss

von Sigi (Gast)


Lesenswert?

>... Der hat einen dritten
>RAM-Anschluss
3. RAM-Anschluss? Welcher M4K/M9K in welchem Zyklon kann dass?
Hardwareseitig werden nur 2 Ports unterstützt.

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


Lesenswert?

Sigi schrieb:
> Hardwareseitig werden nur 2 Ports unterstützt.
Man kann bei allen anderen FPGA-Herstellern auch zwei RAMs so 
verschalten, dass von einer Seite geschrieben und von zwei (oder noch 
mehr) Seiten gelesen werden kann.
Dazu werden dann einfach ein paar RAMs parallelgeschaltet. Das geht aber 
nicht mehr, wenn (wie hier) von mehreren Seiten geschrieben werden 
soll.

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.