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.
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.
@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
@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
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?
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.
@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
@ 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
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.
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.
@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
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....
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.
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
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.
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...
> 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.
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.
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?
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.