Kommunikation mit PC (400 mb/s netto)

Gast #3803379
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
Gast #3803428
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.
Gast #3803461
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)
#3803498
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...
Gast #3803524
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.
Persönliche Seite #3803596
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 ??
Gast #3803683
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.
Gast #3804321
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.
#3804371
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).
Gast #3804397
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.
Gast #3804419
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.
Gast #3804429
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.
Persönliche Seite #3804524
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).
#3804967
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.
#3805690
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...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren