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
Dann brauch er eigentlich auch kein Ethernet Protokoll zu implementieren...
@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
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.
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
Also wir haben diese Entwicklung aufgegeben und sind auf Cabled PCIe mit externem Controller (PLX) umgestiegen.
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...
Georg A. schrieb: > einfacher als (T)EMAC und PHY-Gewurschtel. Da gibt es von xilinx aber sicher Beispiele?
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?
> 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 Gregor, hast du die Variante GMII-Phy verworfen? Du warst mal stark dran. Wollte dich sowiso mal danach fragen. René
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.