Forum: FPGA, VHDL & Co. DualPortRAM SinglePortRAM


von Michael (Gast)


Lesenswert?

Hallo,

ich arbeite gerade das UsingBlockRAM.pdf von xilinx durch. Ich hab' da
zu mal eine Frage. Was ist den der Vorteil bzw. Nachteil oder Überhaupt
der Unterschied zwischen DualPortRam und SinglePortRam??? Mir fehlen da
einfach ein paar Beispiele... Wann ich welche Art verwende.

Danke,
Michael.

von Sebastian (Gast)


Lesenswert?


von FPGAküchle (Gast)


Lesenswert?

IMHO sind die BlockRAM's immer DUALPort. Du kannst natürlich einen Port
unbenutzt lassen, dann isses SinglePort.
Wenn Du mehrere Datenquellen/senken hast ist Dualport die bessere Wahl,
da die Quellen/Senken nicht aufeinader warten mussen. FiFos sind
DualPort(naja üblicherweise) , damit kann man sie gut zum Ausgleich
unterschiedlicher Datenraten nutzen,. Also z.B. purzeln die Daten
langsam von Drauß´en über den einen Port rein und werden gespeichert.
Wenn genügend daten drin sind, kann über den Port ein zweites Gerät die
Daten flugs auslesen. Sollte beim Auslesen, neue Daten eintreffen ist
das beim DualPort kein Problem.

Oder datenaustausch zw. Hardware mit unterschiedlichen Taktraten.

Und singleport ist halt brauchbar wenn es nur eine Quelle/Senke gibt.

von Michi (Gast)


Lesenswert?

Hallo zusammen,
dazu hätte ich auchnoch eine Frage:

Bei den FPGA´s sind ja immer maximale Taktraten für den Blockram
angegeben, die ja Teilweise recht hoch sind. Sind diese Taktraten für
den Singleportbetrieb, oder ist es wirklich möglich die Daten von 2
Seiten mit mehreren hundert MHZ in den Ram zu pumpen? Das wären dann ja
wahnsinnig schnelle Speicher, wie man sie als externe Bausteine noch
nichteinmal findet.

Gruß Michi

von FPGAküchle (Gast)


Lesenswert?

Hm, was meinst Du mit mehreren Hundert MHz? Schauen wir mal nach:
Für einen Spartan3-1000 mit langsamsten Speegrad verrät mir
 speedprint -s 4 3s1000

folgende Zeiten:
RAMB16

   Tback                         350.00 / 350.00
   Tbcka                           0.00 / 0.00
   Tbckd                           0.00 / 0.00
   Tbcke                         105.20 / 105.20
   Tbcko                        1905.60 / 2382.00             1915.20 /
2394.00
   Tbckr                         117.20 / 117.20
   Tbckw                          -0.80 / -0.80
   Tbdck                         484.00 / 484.00
   Tbeck                         485.00 / 485.00
   Tbrck                         497.00 / 497.00
   Tbwck                         485.00 / 485.00

(speedprint ist ein Tool aus der ISE das die zeiten aus der datenbank
ausdruckt,
am besten in einer DOS-shell aufrufen)

OK, die Kürzel sagen nicht viel ich schau dann bei www.xilinx.com im
Interactive datasheet nach (zwar für VirtexII aber die Kürzel sind
gleich/ähnlich)

also
 http://www.xilinx.com/applications/web_ds_v2/

Irgendwas auswählen und in der erzeugten tabelle die zeiten anklicken
und sie werden mit Bild erklärt.

Zum abschätzen der Zykluszeit brauchen wir also die längste Setupzeit,
und die Clock to outputzeit also
tbdck + tbcko = ca. 2.9 ns

-> Hm das ist flott schliesst aber nicht die Laufzeiten von
letzten FF das die Adresse erzeugt ein.Und nicht die Zeiten vom
Datenausgang BRAM zum ersten FF. Pi mal daumen für jede Teilstrecke ca
1 ns macht 5 ns.
Also 200 Mhz für den BRAM im langsamsten Spartan3-1000.

Das deckt sich auch mit meinen Erfahrungen, schneller als mit 100 MHz
habe ich noch kein design mit BRAM gesehen. (Wobei der längste Pfad
wohl nicht der BRAM ist). Also für schneller als 200 MHz wirdt Du schon
ein optimales design entwerfen müssen.

Schneller speedgrade bringt nicht viel ca 10%) bei Virtex 4 hast du
bestimmt mehr luft, aber > 350 MHz wuerde ich nicht erwarten.

Geschwindigkeitsmäßig ist ein einzelner BRAM schon schnell aber klein
(18Kbit). schaltest du mehrere Zusammen, kommen mehr Laufzeiten hinzu.
Nimmst du mehr als die Hälfte der vorhanden BRAM#s Müssen die Signale
über den ganzen chip laufen (BRAMS liegen an der rechten und linken
Kante).
Ob single oder dual spielt IMHO keine Kontrolle.

Kurz ein ein einzelne BRAM ist schnell aber klein, alle BRAM's
zusammen sind immer noch ausreichend schnell (ca 100 Mhz) aber meist
immer noch winzig.

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.