www.mikrocontroller.net

Forum: FPGA, VHDL & Co. DualPortRAM SinglePortRAM


Autor: Michael (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: FPGAküchle (Gast)
Datum:

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

Autor: Michi (Gast)
Datum:

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

Autor: FPGAküchle (Gast)
Datum:

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

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.