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.
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.
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.