mikrocontroller.net

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


Autor: bati (Gast)
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: Manuel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dann brauch er eigentlich auch kein Ethernet Protokoll zu 
implementieren...

Autor: Falk Brunner (falk)
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

Autor: bati (Gast)
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

Autor: Jörg (Gast)
Datum:

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

Autor: Falk Brunner (falk)
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

Autor: bati (Gast)
Datum:

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

Autor: Meph (Gast)
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

Autor: Uwe Bonnes (Gast)
Datum:

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

Autor: JBB (Gast)
Datum:

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

Autor: Christian R. (supachris)
Datum:

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

Autor: Georg A. (georga)
Datum:

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

Autor: daniel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
was braucht man denn für PCI an Win DRiver Software?

Autor: Georg A. (georga)
Datum:

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

Autor: JBB (Gast)
Datum:

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

Autor: Hannes (Gast)
Datum:

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

Autor: Georg A. (georga)
Datum:

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

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

Bewertung
0 lesenswert
nicht lesenswert
Hallo Gregor,

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

René

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

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

Autor: Ingenieur (Gast)
Datum:

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

Autor: MLG (Gast)
Datum:

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

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.