Forum: FPGA, VHDL & Co. Kommunikation mit PC (400 mb/s netto)


von Sven (Gast)


Lesenswert?

Hallo zusammen,

ich suche ein einfaches Protokoll, das sich in einen FPGA einbetten 
laesst und ca. 400 mb/s an Nettodaten verarbeiten kann?

USB und Firewire sind definitiv zu kompliziert und sprengen alle 
Resourcen.
Arbeite auf einem DE0-Nano, das nur ca 22k Logikzellen besitzt.

Danke.

Gruesse,
Sven

von Peter II (Gast)


Lesenswert?

> 400 mb/s

Megabyte/s

oder

Megabit/s ?

von Matthias L. (Gast)


Lesenswert?

SPI

von Sven (Gast)


Lesenswert?

mbyte/s

von megamilli (Gast)


Lesenswert?

Sven schrieb:
> mbyte/s

also Millibyte oder was?

von Sven (Gast)


Lesenswert?

Ist das Problem bei SPI nicht, dass auf der PC-Seite der Converter von 
SPI nach USB nicht diesen Datendurchsatz schafft?

von Sven (Gast)


Lesenswert?

Nee, micro ;)
Das mega sollte in diesem Fall doch offensichtlich sein.

von (prx) A. K. (prx)


Lesenswert?

400 MByte/s sind ca. 4 GBit/s. Da wird die Luft dünn.

von Puh! (Gast)


Lesenswert?

RS232

von Sven (Gast)


Lesenswert?

Habe eben nochmal gerechnet und es wuerden auch ca. 2 gbit/s reichen.
wobei es das nicht wirklich leichter bei der auswahl macht.

von Puh! (Gast)


Lesenswert?

PCIe - gibt sicherlich auch fertige Bridges die man dafür verwenden 
kann.

von (prx) A. K. (prx)


Lesenswert?

Sven schrieb:
> Habe eben nochmal gerechnet und es wuerden auch ca. 2 gbit/s reichen.
> wobei es das nicht wirklich leichter bei der auswahl macht.

Wenn du alle bestehenden Lösungen vorsorglich ausschliesst...
Oder gibts ein PCIe, dass in dein FPGA reinpasst?

von Peter II (Gast)


Lesenswert?

es gibt ja auch noch 10Gbit Ethernet. Das ganze mit UDP sollte doch den 
aufwand im FPGA in Grenzen halten.

http://www.cyberport.de/?DEEP=5702-39U&APID=117&gclid=CJDgxuq04cACFQLJtAodilkAvQ

von Lattice User (Gast)


Lesenswert?

400 MByte/s d.h. 3.2 GBit/s sind sehr viel.

In dieser Liga spielen
USB 3.0
SATA II
PCIe
10G Ethernet

Nichts davon kann man mit DE0-Nano ohne zusätzliche HW realisieren.

Zum Vergleich:
USB 2.0  480 MBit/s brutto.
Firewire 800 MBit/s brutto.

Der geringste Aufwand wäre 4 Mal 1000 MB Ethernet, mit
4 dedizierten Netzwerkkarten im PC.

von user (Gast)


Lesenswert?

Mit Ethernet kannst du einen UDP/IP "Sender" bauen.

von Lattice User (Gast)


Lesenswert?

Peter II schrieb:
> es gibt ja auch noch 10Gbit Ethernet. Das ganze mit UDP sollte doch den
> aufwand im FPGA in Grenzen halten.
>
> http://www.cyberport.de/?DEEP=5702-39U&APID=117&gclid=CJDgxuq04cACFQLJtAodilkAvQ

Kleines Problem:
Diese Transceiver haben in der Regel ein XAUI Interface, d.h. 4 * 2.5 
GT/s serielle Links.

XGMII Tranceiver sind mir noch nie über den Weg gelaufen, aber ich habe 
auch noch nie welche gesucht.
XGMII braucht pro Richtung 32 Datenleitungen plus Kontrollsignale. IO 
Standard ist HSTL. (kennt man von DDR2 RAMs)
(siehe IEEE 802.3 Section 4  &46.4)

von J. S. (engineer) Benutzerseite


Lesenswert?

Peter II schrieb:
> es gibt ja auch noch 10Gbit Ethernet. Das ganze mit UDP sollte doch den
> aufwand im FPGA in Grenzen halten.
Wenn das eine kurze P2P-Verbindung sein soll, dann doch eher USB3.0.

von Christian R. (supachris)


Lesenswert?

Der einzig verfügbare USB 3.0 Controller, der FX3 schafft die 400MB/s 
nur auf dem Papier. Und SuperSpeed auf Basis von 5 GBit/s Transceivern 
selbst zu machen, ist schon eine Menge Arbeit, oder wird teuer (PLDA ist 
mir als einziger Core Anbieter bekannt). PCIe wäre auch was, aber auch 
nicht ohne, recht viel Protokoll...

von (prx) A. K. (prx)


Lesenswert?

Lattice User schrieb:
> Diese Transceiver haben in der Regel ein XAUI Interface, d.h. 4 * 2.5
> GT/s serielle Links.

Wikipedia sagt: 3,125GT/s. Passt auch, denn es sollen ja 10Gb/s netto 
rauskommen. Nicht wie bei SATA oder Fibre Channel, wo die Bitrate brutto 
gerechnet wird und als Byterate 1/10 rauskommt.

von Lattice User (Gast)


Lesenswert?

A. K. schrieb:
> Lattice User schrieb:
>> Diese Transceiver haben in der Regel ein XAUI Interface, d.h. 4 * 2.5
>> GT/s serielle Links.
>
> Wikipedia sagt: 3,125GT/s. Passt auch, denn es sollen ja 10Gb/s /netto/
> rauskommen. Nicht wie bei SATA oder Fibre Channel, wo die Bitrate brutto
> gerechnet wird und als Byterate 1/10 rauskommt.

Hast recht. Steht auch so in meinen FPGA Datasheets.

von J. S. (engineer) Benutzerseite


Lesenswert?

Christian R. schrieb:
> Der einzig verfügbare USB 3.0 Controller, der FX3 schafft die 400MB/s
> nur auf dem Papier.
Man muss sich nicht nur auf einen Chip beschränken und kann 2 Kabel 
nutzen, wie bei CameraLink. Ich denke bei dem Vorschlag auch an die dem 
TE zur VErfügung stehende HW. USB3.0 wird von den PCs ohne grössere 
Umbauten verarbeitet und Adapterplatinen mit USB 3.0 für FPGAs gibt es 
inzwischen auch. Damit könnte er auskommen.

> Und SuperSpeed auf Basis von 5 GBit/s Transceivern
> selbst zu machen, ist schon eine Menge Arbeit
und mit dem DE auch nicht wirklich eine Alternative. Dasselbe gilt aber 
auch für eine 10GB Anbindung mit PHY etc. Da müsste man auch mit GBT 
ran.

Mit dem Board, wie vom TE beschrieben, sehe ich eigentlich nur die 
Chance, eine einfache 100MHz x 32 Bit Verbindung mit 2x16 parallel an 
zwei USB-Transmitter, die mit 200MB/s funken, u.u. mit 16-auf-8 FiFos, 
je nach Besaftung des Chips. Alles andere erfordert mehr FPGA-Power und 
auch mehr spezielles VHDL-Design.


Lattice User schrieb:
> Der geringste Aufwand wäre 4 Mal 1000 MB Ethernet, mit
> 4 dedizierten Netzwerkkarten im PC.
Das wäre eine ähnliche Lösung, braucht aber schon 4 Kanäle, wenn nicht 5 
oder gar 6, weil 1GBE am PC üblicherweise real nicht mehr, als 800Mbps 
bringt.

Man muss sich natürlich überhaupt Gedanken machen, wie der PC diese 
Mengen annehmen soll. Im schlimmsten Fall bräuchte man bei USB so 2 PCs. 
Aber bei 5-6 GigE-Kanälen 6 NICs ??

: Bearbeitet durch User
von Sven (Gast)


Lesenswert?

Ich haette auch die Moeglichkeit die Datenkommunikation aufzuteilen und 
parallel ueber mehrere Ports verteilen. Ausserdem sollte ich den Verkehr 
soweit minimieren, dass pro Leitung maximal 260 mbit/s oder in einer 
anderen Konfiguration 520 mbit/s anfallen wuerden.

Nach meiner Suche ist es fuer SPI aber noch immer zu viel. Stimmt das?
Kleiner geht aber auf keinen Fall.

von Christian R. (supachris)


Lesenswert?

520MBit/s ist mit USB 3.0 dann locker machbar, das sind ja nur 65MB/s, 
das schafft der FX3 auch im 16 Bit Slave FIFO Modus.

von uwe (Gast)


Lesenswert?

Vom Preis her das günstigste was ich gefunden hat. man könnte HSMC mit 
10G Ethernet zukaufen oder man probiert es erst mal über die SMB 
Anschlüsse oder die SMA Anschlüsse oder über 1G Ethernet.
Das DE0 nano ist einfach dafür Harware/Layout/Anschlusstechnisch nicht 
ausgelegt.
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=166&No=740&PartNo=1

von Lattice User (Gast)


Lesenswert?

Jürgen S. schrieb:

>
> Lattice User schrieb:
>> Der geringste Aufwand wäre 4 Mal 1000 MB Ethernet, mit
>> 4 dedizierten Netzwerkkarten im PC.
> Das wäre eine ähnliche Lösung, braucht aber schon 4 Kanäle, wenn nicht 5
> oder gar 6, weil 1GBE am PC üblicherweise real nicht mehr, als 800Mbps
> bringt.

4 reicht. Ursprünglich waren 400 MByte/s verlangt, d.h. 4 x 100 MByte/s 
= 4 x 800 MBit/s.
Ausserdem kann man den Overhead (und Aufwand) klein halten indem man raw 
Ethernet macht.

>
> Man muss sich natürlich überhaupt Gedanken machen, wie der PC diese
> Mengen annehmen soll. Im schlimmsten Fall bräuchte man bei USB so 2 PCs.

Bei USB muss man tierisch aufpassen, Die Anschlüsse am PC teilen sich 
oft die Bandbreite.

> Aber bei 5-6 GigE-Kanälen 6 NICs ??
Da sehe ich kein Problem.




uwe schrieb:
> Das DE0 nano ist einfach dafür Harware/Layout/Anschlusstechnisch nicht
> ausgelegt.
> 
http://www.terasic.com.tw/cgi-bin/page/archive.pl?Language=English&CategoryNo=166&No=740&PartNo=1

Das ist das grösste Problem. Auf den Stiftleisten sind z.B. nicht genug 
GND Pins um parallel zuverlässig höhere Datenraten zu erreichen.

von Christian R. (supachris)


Lesenswert?

Lattice User schrieb:
> Bei USB muss man tierisch aufpassen, Die Anschlüsse am PC teilen sich
> oft die Bandbreite.

Naja, bei SuperSpeed ist das eher unkritisch, da in solchen Fällen ja 
selten mehr als ein SuperSpeed Gerät an einem Root Hub hängt. Notfalls 
muss halt eine weitere PCIe Karte rein. Problem ist eher die PCIe 
Anbindung, manche Mainboards und ältere Controller-Karten haben nur PCIe 
1.1 damit sind dann nur 250MB/s brutto möglich, bei USB 3.0 dann etwa 
noch 170MB/s. PCIe 2.0 muss schon sein. Aber da aus den 400MByte/s jetzt 
nur noch 400MBit/s geworden sind, ist auch das an einem 3.0 Anschluss 
locker machbar. Mit dem FX3 hab ich max. 335MB/s gemessen, aber 
fehlerfrei geht wegen des blöden Slave FIFO Timings bisher nur so 
275MB/s (75MHz, 32 Bit).

von Lattice User (Gast)


Lesenswert?

Christian R. schrieb:
> Lattice User schrieb:
>> Bei USB muss man tierisch aufpassen, Die Anschlüsse am PC teilen sich
>> oft die Bandbreite.

In neueren Chipsätzen spart sich Intel die UHCI Hostcontroller, und 
intergriert statt dessen zwei USB 2.0 Hubs hinter die EHCI Controller.
Aber auch bisher schon haben die beiden EHCI Controller 6 je Rootports 
bedient.

>
> Naja, bei SuperSpeed ist das eher unkritisch, da in solchen Fällen ja
> selten mehr als ein SuperSpeed Gerät an einem Root Hub hängt. Notfalls
> muss halt eine weitere PCIe Karte rein.

> Problem ist eher die PCIe
> Anbindung, manche Mainboards und ältere Controller-Karten haben nur PCIe
> 1.1 damit sind dann nur 250MB/s brutto möglich, bei USB 3.0 dann etwa
> noch 170MB/s. PCIe 2.0 muss schon sein.

Eine USB3 Einsteckkarte hat so 2 oder 4 Rootports, diese teilen sich 
dann natürlich die PCIe Bandbreite. Und genau das meinte ich.

> Aber da aus den 400MByte/s jetzt
> nur noch 400MBit/s geworden sind,

Sind es nicht, der TO schreibt hier
Beitrag "Re: Kommunikation mit PC (400 mb/s netto)"
von der Aufteilung auf mehrere Ports und 520 MBit/s PRO Leitung. Du 
brauchst dann natürlich entsprechend viele FX3.

von Oo (Gast)


Lesenswert?

Die ganze Diskussion ist völlig für die Katz.
An ein DE0 was dranzufrickeln mit dem man 400MByte/s in einen PC bekommt 
ist ungefähr so sinnvoll wie einen Trabimotor in einen SUV einbauen zu 
wollen.
Bei dem Durchsatz kauft man ein richtiges Board mit PCIe und gut. Die 
total blödsinnige Ausgangsbedingung "400MByte/s mit DE0 Nano in PC" 
lässt aber darauf schließen dass der Threadersteller sowieso nicht die 
Kenntnisse hat da etwas funktionierendes zusammenzubauen.

von Lattice User (Gast)


Lesenswert?

Oo schrieb:
> Die ganze Diskussion ist völlig für die Katz.

Nicht ganz, es werden Informationen vermittelt und nicht nur dem TO.

> An ein DE0 was dranzufrickeln mit dem man 400MByte/s in einen PC bekommt
> ist ungefähr so sinnvoll wie einen Trabimotor in einen SUV einbauen zu
> wollen.

Zustimmung.

> Bei dem Durchsatz kauft man ein richtiges Board mit PCIe und gut. Die
> total blödsinnige Ausgangsbedingung "400MByte/s mit DE0 Nano in PC"
> lässt aber darauf schließen dass der Threadersteller sowieso nicht die
> Kenntnisse hat da etwas funktionierendes zusammenzubauen.

Auch hier Zustimmung.

von jo (Gast)


Lesenswert?

>Die ganze Diskussion ist völlig für die Katz.

Danke dafür...die haben den Schuss nicht gehört.

Gruß Jonas

von J. S. (engineer) Benutzerseite


Lesenswert?

Lattice User schrieb:
>> Aber bei 5-6 GigE-Kanälen 6 NICs ??
> Da sehe ich kein Problem.
Naja, 5-6 PHYs ich weiss net ...

> es reichen 4, 800MB
Ich dachte da eher an den PC. Ich habe sowas schon gemacht und 
vorgefunden, dass die PC-Treiber-Architektur Probleme machte, die 
theoretischen 1Gig anzunehmen.

Christian R. schrieb:
> Aber da aus den 400MByte/s jetzt nur noch 400MBit/s geworden sind
Fürwahr ein wundersame Verschlankung der Requirements. Das liebe ich.

> Mit dem FX3 hab ich max. 335MB/s gemessen, aber
> fehlerfrei geht wegen des blöden Slave FIFO Timings bisher nur so
> 275MB/s (75MHz, 32 Bit).
Sowas hatte ich einkalkuliert, von daher mein Vorschlag, mal gleich 2 
Leitungen vorzusehen.

Aber wie oben schon festgestellt wurde, sind es nun wohl 400Mbps, da 
reicht ja fast der USB 2.0 (theoretisch).

von Christian R. (supachris)


Lesenswert?

Naja, das pro Leitung bei den 520MBit/s hab ich überlesen. Aber trotzdem 
sind die Anforderungen sehr schwammig...und mit dem Nano Krümel ist das 
ja eh Quatsch.

von P. K. (pek)


Lesenswert?

Vielleicht eine etwas ketzerische Frage: Schon mal darüber nachgedacht, 
Deine Daten auf irgendwelche Weise zu komprimieren, bevor sie 
transferiert werden?

Dabei kommt es natürlich auf die Daten selbst an, und wie die beschaffen 
sind, ob die Komprimierung verlustfrei sein muss, oder ob schon auf dem 
Board entschieden werden kann, was ganz sicher nicht relevant ist etc.

Mit dem Wissen, wie die Daten gestaltet sind, lässt sich unter Umständen 
mit recht einfachen Mitteln (wenig Logik) schon viel erreichen.

von Lars R. (lrs)


Lesenswert?

Und alternativ zur Kompression braucht man die Daten vielleicht auch gar 
nicht an einen PC zu übertragen, sondern nimmt ein weiteres FPGA-Board 
mit einer im FPGA integrierten (Multi-core) CPU zur finalen Verarbeitung 
oder Speicherung. Zur Visualisierung fordert man dann mit dem PC ein 
Häppchen an.

PCIE-Bridge, -Treiber: Aufand
FX3 USB: Timing, Unflexibel
5x GigE: Daten sortieren auf PC, eth-Treiber kommen nicht hinterher...

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.