Forum: FPGA, VHDL & Co. Gigabit Ethernet FPGA zu PC


von bati (Gast)


Lesenswert?

Hallo,

ich möchte eine Ethernet Verbindung von einem FPGA zu einem PC 
herstellten. Ich habe ein Virtex 4 SX-25 Board mit einem Phy. Ich möchte 
nur UDP Pakete empfangen und senden und zwar immer nur mit einem Host PC 
mit einer direkten Verbindung. Ich möchte die Verbindung so schnell wie 
möglich machen. Daher meine Frage, was ich jetzt genau implementieren 
muss, also welche Schichten ich brauche. So wie ich es verstanden habe 
die MAC Schicht (z.B. einen MAC Core), die ich mit dem Phy verbinde. Ich 
habe mir dazu auch das Tutorial auf FPGA4fun angeschaut. Das wäre im 
Prinzip genau das was ich möchte, nur halt mit einem Gigabit.

Danke im Voraus.

von Christian R. (supachris)


Lesenswert?

Ich würde sagen, ohne einen Prozessorkern wird das eine recht kniffelige 
Geschichte. UDP mag in Hardware gehen, aber das ist dann nicht ganz 
ohne. Wir machen das hier mit einem Virtex 4 FX, da ist schon im PowerPC 
jede Menge zu tun, damit man da ordentlich kommunizieren kann....du 
musst ja auch noch andere Geschichten reinbauen, wenn du z.B. über einen 
Switch am PC hängst, oder eine IP-Adresse beziehen willst usw. Mit dem 
PowerPC im Virtex 4 FX schafft man aus dem SDRAM über den eingebauten 
TEMAC nahezu die vollen 1 Gbit/s, wenn man die Daten per DMA in die 
FIFOs schaufeln lässt, Checksum Offloading benutzt usw.

von Falk B. (falk)


Lesenswert?

@bati (Gast)

>möglich machen. Daher meine Frage, was ich jetzt genau implementieren
>muss, also welche Schichten ich brauche. So wie ich es verstanden habe
>die MAC Schicht (z.B. einen MAC Core), die ich mit dem Phy verbinde. Ich

Genau. Und den MAC fütterst du mit Ethernet+UDP Paketen, kann man in 
einem Aufwasch erledigen, ist eh fest gekoppelt. Fettig.

@ Christian R. (supachris)
>Ich würde sagen, ohne einen Prozessorkern wird das eine recht kniffelige

Nöö, weil . . .

>jede Menge zu tun, damit man da ordentlich kommunizieren kann....du
>musst ja auch noch andere Geschichten reinbauen, wenn du z.B. über einen
>Switch am PC hängst, oder eine IP-Adresse beziehen willst usw.

Will er aber nicht

"nur UDP Pakete empfangen und senden und zwar immer nur mit einem Host 
PC
mit einer direkten Verbindung."

MFg
Falk

von Manuel (Gast)


Lesenswert?

Dann brauch er eigentlich auch kein Ethernet Protokoll zu 
implementieren...

von Falk B. (falk)


Lesenswert?

@Manuel (Gast)

>Dann brauch er eigentlich auch kein Ethernet Protokoll zu
>implementieren...

Doch, denn damit kann man im PC eine einfache 
Gigabit-Ethernetkarte/Anschluss verwenden.

MfG
Falk

von Christian R. (supachris)


Lesenswert?

Oh, hab ich wieder überlesen. Naja, das geht dann natürlich, der 
Paketaufbau ist ja recht simpel. Ist halt aber die unflexibelste Lösung 
dann.

von bati (Gast)


Lesenswert?

Danke erst einmal für die Antworten.

Also wie gesagt, flexibel muss es überhaupt nicht sein. Ich will es als 
"feste" Datenverbindung nur zwischen den beiden Geräten nutzen.

Noch zwei Fragen:

Muss ich jetzt den MAC-Core mit dem gesamten Ethernet-Frame füttern oder 
nur mit dem IP-Frame?

Die Lösung auf FPGA4Fun sieht relativ simpel aus und nutzt gar keinen 
Phy. Wäre sowas auch mit Gigabit denkbar?

von Christian R. (supachris)


Lesenswert?

Hm, IP ist doch über Ethernet. Klar musst du Ethernet-Frames bauen, die 
dann wiederum einen IP-Frame enthalten, der wiederum einen UDP-Frame 
enthält....wenn ich´s noch recht in Erinnerung hab, war die Reihenfolge 
so.

Einen Phy brauchst du immer extern, der muss ja die Logiksignale auf die 
differenziellen Signale für Twisted Pair umsetzen, oder halt auf 
optisch. Im FPGA gehts maximal bis zum MAC.

von Jörg (Gast)


Lesenswert?

@Christian R.,

wenn du eine direkte Verbindung hast, brauchst du nur ein einziges
Protokoll (Ethernet+IP-Addr.) zum Austausch von Datenblöcken.
Schliesst du aber noch einen Swtich/Hub dazwischen, dann wird's
ein wenig komplizierter.

Gruss

Jörg

von Falk B. (falk)


Lesenswert?

@ bati (Gast)

>Muss ich jetzt den MAC-Core mit dem gesamten Ethernet-Frame füttern oder
>nur mit dem IP-Frame?

Das weiss das Datenblatt.

>Die Lösung auf FPGA4Fun sieht relativ simpel aus und nutzt gar keinen
>Phy. Wäre sowas auch mit Gigabit denkbar?

Nöö. Weil GigabitEthernet über CAT5 mit einer PAM5 Modulaton auf allen 
vier Aderpaaren arbeitet und optisches GigabitEthernet nicht aus dem 
FPGA rauskommt ;-)

MFG
Falk

von Christian R. (supachris)


Lesenswert?

Jörg wrote:
> @Christian R.,
>
> wenn du eine direkte Verbindung hast, brauchst du nur ein einziges
> Protokoll (Ethernet+IP-Addr.) zum Austausch von Datenblöcken.
> Schliesst du aber noch einen Swtich/Hub dazwischen, dann wird's
> ein wenig komplizierter.

Er schrieb aber, dass er UDP haben will.

von bati (Gast)


Lesenswert?

Hallo,

ich werde es mal mit dem Ethernet_Tri_Mode Core von opencores versuchen.
Den kann man auch noch etwas konfigurieren. Ist auch der einzige mit 
Gigabit soweit ich das gesehen habe. Hat schon mal jemand mit dem 
gearbeitet, oder existiert vielleicht noch ein anderer, den man 
ausprobieren könnte?

Danke.

von Meph (Gast)


Lesenswert?

@Christian R.

Ich will momentang genau das gleiche bauen wie du, nur mit einem 
Vistrex5. Hat auch nen integrierten TEMAC sowie PPC. Könntest du etwas 
genauer beschrieben, wie du dein System aufgebaut hast?

Grüße

von Christian R. (supachris)


Lesenswert?

Der Diplomand hat das gemacht. Im Prinzip erst einfach mal über den 
Wizzard das System für das ML403 Board erstellt, alle Adressbereiche 
vergeben, Treiber erstellen lassen usw. Ist am Anfang bissl Arbeit, aber 
naja. Dann hat er wohl erst mal die Demoprogramme benutzt und 
schlussendlich den eigenen IP-Stack implementiert. Leider war der V4 
FX12 dann zu klein für einen 2. DMA Kanal zu einer eigenen Hardware, da 
sind wir auf den FX20 umgestiegen. Das LocalLink zu unserer Hardware 
klappt noch nicht so recht, aber wird schon noch....

von Uwe Bonnes (Gast)


Lesenswert?

USRP2 (http://gnuradio.org/trac/wiki/USRP2) macht Gigabit Ethernet mit 
Opensource Komponenten. Seit einigen Tage gibt es auch die Schaltplaene 
als Ausgangspunkt fuer eigene Variationen.

von JBB (Gast)


Lesenswert?

Meph schrieb:
> Ich will momentan das gleiche bauen wie du,
> nur mit einem Vistrex5
hört sich gut an. Wo bekomme ich den? :-)

Hat sich hier was getan? Ich ziele auf einen Spartan6

von Christian R. (supachris)


Lesenswert?

Also wir haben diese Entwicklung aufgegeben und sind auf Cabled PCIe mit 
externem Controller (PLX) umgestiegen.

von Georg A. (georga)


Lesenswert?

Ich würde einen billigen RTL8169 nehmen und den per PCI besaften. PCI 
ist für einen Spartan6 ja auch eher Kleinkram, die Geschwindigkeit 
reicht vollkommen aus, wenn man als PCI-Target Bursts kann. IPv4 
Checksum-Offloading macht der 8169 auch und sein DMA/Deskriptoraufbau 
ist sehr simpel, das automatische Handling lässt sich alles mit ein paar 
Zeilen in HW hinbiegen.

Schrieb ich grad "würde"? Hab ich, tut wunderbar, 100MByte/s sind damit 
erzielbar.

von daniel (Gast)


Lesenswert?

was braucht man denn für PCI an Win DRiver Software?

von Georg A. (georga)


Lesenswert?

Keine Ahnung, dafür habe ich normalerweise Linux ;) Aber in einem festen 
Setup (d.h. es gibt nur ein Device auf dem Bus), reichen eine Handvoll 
Schreibzugriffe auf den Configurationspace aus. Beim 8169 wären das 
eigentlich nur Basisaddresse und Enablen vom DMA. Danach noch ein paar 
Configregister des 8169 beschrieben und man ist online.

BTW: Der obige 8169-Trick geht nur, wenn man soviel 
Eingriffsmöglichkeiten in den PCI-Slave (der Hostbridge...) bzw. das 
Memorymapping hat, sodass Deskriptorzugriffe per DMA nicht auf den 
normalen Speicher, sondern auf HW-Register gehen. Da muss man schon mal 
kurz nachdenken, ich finde das aber eher einfacher als (T)EMAC und 
PHY-Gewurschtel. Aber egal, wollte nur eine andere Möglichkeit 
aufzeigen...

von JBB (Gast)


Lesenswert?

Georg A. schrieb:
> einfacher als (T)EMAC und PHY-Gewurschtel.
Da gibt es von xilinx aber sicher Beispiele?

von Hannes (Gast)


Lesenswert?

Georg, kannst Du das etwas näher beschreiben?

Ich verstehe noch nicht ganz, wo Dein Zugriff ansetzt. Hast Du eine 
Karte verdrahtet oder nur den Chip?

von Georg A. (georga)


Lesenswert?

> Da gibt es von xilinx aber sicher Beispiele?

Damals (Anfang 2007) war sowas AFAIR in HW nur in den Virtexen 
vorhanden, und zuviele Black-Box-IPs (evtl. gar noch encryptet wie der 
100Mbit-Emac aus dem EDK) waren mir auch eher unsympatisch.

> Georg, kannst Du das etwas näher beschreiben?

Was davon? ;)

> Ich verstehe noch nicht ganz, wo Dein Zugriff ansetzt. Hast Du eine
> Karte verdrahtet oder nur den Chip?

Bei mir ist es die ganze Karte, warum soll ich die Logistik auch noch 
den Realtek einzeln beschaffen lassen, wenn die ganze Karte samt Trafo, 
eigener MAC und getestet für ~6EUR hergeht, Platz war auch genügend. Von 
der Ansteuerung her ist das aber kein Unterschied.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Hallo Gregor,

hast du die Variante GMII-Phy verworfen? Du warst mal stark dran.
Wollte dich sowiso mal danach fragen.

René

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Hallo Georg,
>
> hast du die Variante GMII-Phy verworfen? Du warst mal stark dran.
> Wollte dich sowieso mal danach fragen.
>
> René


Sorry ich hatte mich im Namen geirrt.

von Ingenieur (Gast)


Lesenswert?

Georg A. schrieb:
> RTL8169 nehmen und den per PCI besaften

Welche anderen MACs ausser dem Real Tec wären noch am Markt, mit denen 
man das einfach bewerkstelligen könnte?

von MLG (Gast)


Lesenswert?

Ingenieur schrieb:
> Welche anderen MACs ausser dem Real Tec wären noch am Markt, mit denen
> man das einfach bewerkstelligen könnte?

Mit PCI? Einen Riesenhaufen
Ohne PCI? fast nix.

Das scheint mir eine Marktlücke zu sein, aber was man im FPGA machen 
kann (und  RGMII ist für einen FPGA kein Thema) braucht man nicht als 
chip-Lösung.

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.