Gigabit Ethernet FPGA zu PC

Gast #973794
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.
#973841
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.
#973856
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
Gast #974016
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?
#974129
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.
Gast #974142
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
#974152
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
#974244
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.
Gast #974711
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.
Gast #1064140
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
#1064149
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....
#2406200
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.
#2406453
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...
#2447096
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.
Gast #2826858
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

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