Forum: FPGA, VHDL & Co. Maximale Bandbreite bei IOs


von Mann Fred (Gast)


Lesenswert?

Ausgehend von dieser Diskussion
Beitrag "Re: Funktionsweise von Gigabit Transceivern"
hätte ich eine Frage:

Welche Bandbreite bekommt man über einen normalen FPGA-Pin (nicht 
Transceiver)? Stimmt die dort gemachte Rechnung von z.B. 600 Mb/s = 300 
MHz als DDR?

Wie funktioniert der Anschluss eines SD-RAMs? Laut Spezifikation können 
die z.B. bis zu 1067 für die Daten (z.B. für 266 MHz Takt). Geht das 
über die normalen IOs oder die Transceiver?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Manni T. schrieb:
> Welche Bandbreite bekommt man über einen normalen FPGA-Pin (nicht
> Transceiver)? Stimmt die dort gemachte Rechnung von z.B. 600 Mb/s = 300
> MHz als DDR?
Kommt halt auch arg auf FPGA an, findste nicht?
Sag halt mal, welcher Typ.

> Wie funktioniert der Anschluss eines SD-RAMs? Laut Spezifikation können
> die z.B. bis zu 1067 für die Daten (z.B. für 266 MHz Takt). Geht das
> über die normalen IOs oder die Transceiver?
Das geht nicht ueber die Transceiver, kann aber ueber irgendwelche 
Spezial-HW im FPGA laufen (MEMPHY), so dass dann der begnadete 
Entwickler nicht ganz frei ist, in den IOs die fuer's Speicherinterface 
hergenommen werden koennen.

Gruss
WK

von Mann Fred (Gast)


Lesenswert?

"MEMPHY" klingt für mich nach fester Hardware. Kenne ich noch vom 
Spartan. Ich dachte bei den moderneren FPGAs sind die IOs wieder schnell 
genug.

SD-RAMs zur Seite gelassen: Wie kriegt man 1Gb/s über einen normalen IO?
Was ich so geblättert habe, z.B. MAX10 las erster Kandidate, da kommt es 
eher auf 250MHz x 2.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Manni T. schrieb:
> Ich dachte bei den moderneren FPGAs sind die IOs wieder schnell
> genug.

Tja, ich hab davon keine Ahnung, aber ich weiss, was ich tue, wenn ich 
Ahnung brauche: Ich lese die Datenblaetter. Und verlass' mich nicht auf 
irgendwelche Kasper hier aus dem Forum.

Manni T. schrieb:
> Wie kriegt man 1Gb/s über einen normalen IO?

Beim Spartan6 ging das z.b. ueber IOSERDES2, was an normalen IO-Zellen 
haengt. Aber 1GBit/sec wahrscheinlich nicht bei den lahmarschigen 
Klassen. iirc gingen die nur bis 0.95Gbit/sec oder so.

Gruss
WK

von Gustl B. (-gb-)


Lesenswert?

Also normalerweise steht das im Datenblatt zu deinem FPGA.

Hier mal für den Artix7:
https://docs.xilinx.com/v/u/en-US/ds181_Artix_7_Data_Sheet
Seite 15.

Manni T. schrieb:
> Bandbreite

Was meinst du denn damit? Im Sinne von Analogbandbreite wie wenn man 
sich ein Spektrum anguckt? Oder im Sinne von Busbreite? Oder meinst du 
vielleicht doch eher Datenrate?

Laut dem Dokument oben schafft der schnellere Artix7 1250 MBit/s auf 
einem normalen IO, wenn man DDR LVDS über den IO macht mit dem 
eingebauten SerDes.

Manni T. schrieb:
> Wie funktioniert der Anschluss eines SD-RAMs? Laut Spezifikation können
> die z.B. bis zu 1067 für die Daten (z.B. für 266 MHz Takt). Geht das
> über die normalen IOs oder die Transceiver?

Normale IOs. Du kannst dir das doch auch ganz ohne FPGA mal 
zusammenklicken mit dem MIG bei Xilinx z. B. und gucken was das sagt und 
ob es meckert. Einfach den gewünschten FPGA auswählen, RAM Baustein 
wählen, Pins wählen und zack, fertig bekommst du mal eine Aussage ob das 
so geht.

Anmerkung:
DDR RAM Bausteine brauchen recht viele Pins (Adresse, Daten) man kann 
auch mehrere Bausteine zusammenknoten mit gemeinsamer Adresse um Pins zu 
sparen. Ich finde aber da den OctaSPI oder HyperRAM ganz nett, denn das 
sind sehr wenige Pins und man bekommt doch mit 400 MBit/Datenpin recht 
hohe Datenraten. Statt einem DDR Stein kann man locker zwei HyperRAMs 
ranhängen, mit ein wenig gemeinsam genutzten Leitungen sogar 3.

: Bearbeitet durch User
von Mann Fred (Gast)


Lesenswert?

Gustl B. schrieb:
> mit dem MIG bei Xilinx z. B. und gucken was das sagt und
> ob es meckert. Einfach den gewünschten FPGA auswählen, RAM Baustein
> wählen,
Es geht jetzt nicht um RAMs, sondern die Transmission in andere 
Baugruppen.

Gustl B. schrieb:
> Was meinst du denn damit? Im Sinne von Analogbandbreite wie wenn man
> sich ein Spektrum anguckt? Oder im Sinne von Busbreite?
Digitale Pin-Bandbreite.

von Gustl B. (gustl_b)


Lesenswert?

Manni T. schrieb:
> Es geht jetzt nicht um RAMs, sondern die Transmission in andere
> Baugruppen.

Da gilt was im Datenblatt steht.

Manni T. schrieb:
> Digitale Pin-Bandbreite.

Schwierig. Heutzutage gibt es da schon auch Modulationen wie PAM bei 
PCIe 5. Da spricht man dann entweder von Bitrate wenn man wissen will 
wie viele Bits über den Link gehen oder von Baudrate, das gibt an wie 
viele Symbole das je Zeit sind.
Pin ist da auch schwierig, denn oft ist das ja LVDS und dann hat man 
zwar eine Bitrate, aber auch zwei Pins die man braucht.

von Mann Fred (Gast)


Lesenswert?

Ok, Bandbreite / Pin ist wieder etwas doppeldeutig. Stimmt. Hier geht es 
ohne Modulation, also 0/1 digital: Ein Bit/Pin und ein Pin/Signal.

Aber zurück zu der IOs: Ich hatte das Thema SD-RAM eingebracht, weil die 
Bandbreite für selbige scheinbar(!) über die maximale Frequenz der 
(normalen) Pins hinaus geht. Ich las da etwas von den 1067 MHz, bzw die 
Hälfte als DDR. Die daraus resultierenden 500MHz kriege ich 
normalerweise in einem FPGA nicht hin. Ein MAX 10 arbeitet so ungefähr 
auf 200MHz, 300 wenn man sich abmüht, würde ich sagen.

Dazu kam der Einwurf "MEMPHY", siehe oben, was ich so interpretierte, 
dass die Pins, an die die Daten eines SD-RAMs kommen, spezielle Pins 
sein müssten.  Wenn aber die Darstellung im Datenblatt stimmt, können ja 
offenbar doch! alle Pins diese Geschwindigkeit. (Soweit der speed grad 
des Bausteins passt). Auch nach dem Datenblatt meines FPGA ist das 
angeblich so.

Daher nochmal die Frage: Wie macht der FPGA das, dass die Pins 680MHz 
können und damit 1250 DDR (ich beziehe mich auf den link und die Tabelle 
für den ATIX bei max speed ganz links.) Stecken in den IOs auch 
spezielle PLLs / Serializer, wie bei den Giga-Transceivern? Davon lese 
ich nirgendwo.

von Mann Fred (Gast)


Lesenswert?

Jetzt mal konkret:

Wenn ich mich z.B. auf diese Seite beziehe:
https://www.intel.com/content/www/us/en/docs/programmable/683760/21-1/high-speed-lvds-circuitry.html

erkenne ich zwar eine Altera-PLL und einen Receiver/Transmitterblock, 
ferner lässt sich daraus ersehen, dass die Transmitter-Clock wohl 10x 
schneller ist, als die übertragene Clock, aber trotz 1/4-stündigem 
Durchklicken durch die Dokumente auf der Seite und allenmöglichen Infos 
zu internen und externen PLLs sowie emuliertem und echtem LVDS-Standard 
(?), kommt man nirgends zu einem Datenblatt, wo ausdrücklich ein Wert 
für die PLLs oder eine konkrete Konfiguration steht, was den Betrieb als 
Serial-Parallel-Wandler beschreibt.

Das Blöckchen, mit dem ich diese Funktion ins Design bringe, ist ja nur 
ein Platzhalter für eigentliche Hardware, die ja schon existieren muss. 
Kann ich mir da einfach eine 1,2 GHz-PLL mit 120 MHz-Ausgang schnappen 
und den Serialisier-Block damit betreiben?

von Gustl B. (gustl_b)


Lesenswert?

Manni T. schrieb:
> Ein MAX 10 arbeitet so ungefähr auf 200MHz, 300 wenn man sich abmüht,
> würde ich sagen.

Kommt sehr auf das Design an. Ich habe hier Designs die schaffen 
nichtmal 100 MHz.

Manni T. schrieb:
> Wie macht der FPGA das, dass die Pins 680MHz können und damit 1250 DDR
> (ich beziehe mich auf den link und die Tabelle für den ATIX bei max
> speed ganz links.) Stecken in den IOs auch spezielle PLLs / Serializer,
> wie bei den Giga-Transceivern? Davon lese ich nirgendwo.

Ja da stecken spezielle IO Zellen drinnen. Manchmal mit SerDes in 
Hardware wie bei Xilinx, aber der Max10 hat leider keine SerDes wenn ich 
das richtig erinnere. Besondere PLLs haben meist nur die Transceiver 
oder Intel mit den hat welche bei den IO SerDes im Stratix10.

Manni T. schrieb:
> Kann ich mir da einfach eine 1,2 GHz-PLL mit 120 MHz-Ausgang schnappen
> und den Serialisier-Block damit betreiben?

Normalerweise ja. Aber du brauchst nirgens die 1.2 GHz. Du brauchst bei 
DDR die halbe Frequenz von der Bitrate, also meinetwegen 600 MHz und 
dann für den Datenpfad nochmal einen langsamen Clock.

Um welchen FPGA geht es denn? Die Datenblätter in denen die konkreten 
Werte stehen sind sehr spezifisch für einzelne Bausteine.

von Gustl B. (gustl_b)


Lesenswert?

https://cdrdv2-public.intel.com/666319/m10_datasheet-683794-666319.pdf

Ab Seite 26 geht es um Switching. Da kommen dann auch die Tabellen mit 
den verschiedenen IO Standards. Jedenfalls ist der Max10 da eher lahm. 
Ich würde also klar einen Spartan7 nehmen. Auch weil der Max10 keine 
interne LVDS Terminierung kann.

von Mann Fred (Gast)


Lesenswert?

Gustl B. schrieb:
> welche bei den IO SerDes im Stratix10.
Jetzt wo du es schreibst, es könnte der Stratix gemeint gewesen sein. 
Den hatte ich in nächtlicher Verwirrung mit dem Atix von der Konkurrenz 
vermauschelt.


> Normalerweise ja. Aber du brauchst nirgens die 1.2 GHz. Du brauchst bei
> DDR die halbe Frequenz von der Bitrate, also meinetwegen 600 MHz
Die 600 waren die Annahme für einen möglichen Takt um 1.2 zu schaffen, 
weil mir das noch logisch erschien - aus der Diskussion hier und im 
anderen thread.

So wirklich benötigen "tun" wir im Grund schon 2.4.

Da müssen also mehr Leitungen oder doch die richtigen Transceiver ran.

Ich klinke mich da aus dem Thema aus: am Montag darf sich das einer der 
Entwickler ansehen. :-)

Ist aber schon mal gut, dass ich nun ein besseres Verständnis habe.

von Gustl B. (gustl_b)


Lesenswert?

Manni T. schrieb:
> So wirklich benötigen "tun" wir im Grund schon 2.4.
> Da müssen also mehr Leitungen oder doch die richtigen Transceiver ran.

Ja das geht mit einem normalen IO oder LVDS Paar nicht mehr.

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.