Forum: FPGA, VHDL & Co. Ethernet MAC ip core mit FIFO für spartan 6


von newbie (Gast)


Lesenswert?

Hallo Leute,
Ich arbeite schon seit längerem an einem Projekt von mir und komme nun 
nicht weiter. Ziel ist es erst mal Sensordaten von einem Android 
Device(handy/tablet) an ein FPGA Eval Board (Avnet/Xilinx lx150t dev 
board)zu senden. Mitlerweile  habe ich mich in die Android App 
Entwicklung eingearbeit und ein Programm geschrieben welches Sensordaten 
von einem Android Gerät zu einem anderen Android Gerät im Wlan über UDP 
schicken kann. Der nächste Schritt währe nun, Daten mit dem Evalboard zu 
empfangen und senden. Um das Evalboard mit den Android Geräten über Wlan 
zu verbinden wird eine Ethernet zu Wlan Bridge am Netzwerkanschluss des 
Evalboards angeschlossen.
Und somit kommen wir zu meinem Problem:
Soweit ich verstanden habe hat mein Board ein PHY welchen ich jetzt über 
GMII oder MII mit einem MAC verbinden kann. Ich habe mich mal nach 
einigen IP Cores umgeschaut und für mich kam eigentlich nur der Tri Mode 
Ethernet MAC von Xilinx in frage.(die 8 Stunden Nutzzeit der Eval Lizenz 
von Xilinx reichen für mich vollkommen aus). Da meine Erfahrungen mit IP 
Cores und MACs so ziemlich gegen Null gehen hätte ich folgende fragen:

1: Aufgrund des users guides von Xilinx und den dazugehörigen Examples 
werden eigentlich immer Microblaze Controller zur steuerung des Cores 
verwendet(Welche doch nicht kostenfrei sind oder?).   Ist bei der 
Einbindung eines MAC in ein FPGA ein Microcontroller zur Steuerung und 
Konfiguration von Nöten wenn man "nur" UDP Pakte versenden möchte?

2:Funktionsprizip des MACs für Blöde: Lieg ich damit richtig das der MAC 
z.B. bei der Datenübermittlung Zieladresse, Quelladresse, Längenangabe 
der Daten/Typ,Daten Byteweise aus meinen Speicher z.B FIFO einließt und 
dann sozusagen nur noch vorne die Preamble ,SFD und hinten PADs und FCS 
an das Frame anhängt. Und daraufhin dieses Frame an den PHY überträgt?

von Spartanist (Gast)


Lesenswert?

newbie schrieb:
> an ein FPGA Eval Board (Avnet/Xilinx lx150t dev
> board)zu senden.

Ich habe auch letzterdings mit dem Spartan-Board gearbeitet und mich an 
dem Tricore versucht. Leider sind die Demos von Xilinx und auch AVNET 
ziemlich Banane. Das Board hatte einen kaputten PHY, der erst in der 
darauffolgenden Version defektfrei sein sollte, zudem musste man da per 
Hand was patchen.

Welche PCB Version hast Du?

Es gibt von AVNET ein Design, welches die Abarbeitung des 
Ethernet-Stacks über TCPI/IP erledigt und Daten vom auf dem board 
befindlichen DDR3-Chip über Ethernet versendet. Die Performance soll 
angeblich bei 800MBit sein, was ich aber dahingehend infrage stelle, 
dass von Seiten des FAEs ausdrücklich ein kommerzieller Core empfohlen 
wurde, der dann aufgrund der stack Optimierung in der Lage sein soll, 
das zu leisten.

Das Problem bei beiden Lösungen ist auch, dass alles über EDK läuft, 
d.h. man braucht einen kompletten Soft-Apparat um das design herum, 
welcher dann für einen limitierten Durchsatz sorgt, insbesondere, wenn 
man mit dem DDR3 noch was anderes anstellen will, als ethernetten. Beim 
Virtex, mit dem die Demo-App (ETH+PHY+DDR) wohl gelaufen ist, max das 
wohl noch gut gelungen sein, weil der den Power-PC benutzt - auf dem S6 
ist aber keiner drauf, daher läauft das alles mit Micro Blaze, wie Du 
bereits vermutest hast.

Mit dem Microblaze ist kein Staat zu machen, jedenfalls nicht, wenn man 
an die Performance ds PHYs heran will.

Wie weit man mit dem TEMAC kommt, ist daher etwas ungewiss. Ich habe 
mich fast 1 Monat damit auseinander gesetzt und kam da nicht recht vom 
Fleck, sei es aufgrund der mangelnden Doku oder nicht funktionierender 
Demos, die mehr verwirren, als helfen.

Da der MAC kostepflichtig ist (site-Lizenz 5k, project Lizenz 2500,-) 
sollte man sich gfs lieber den OC core nehmen und umrüsten. Wenn Du kein 
GBit brauchst, ist der auch direkt verwendbar. (10/100)

von Andi (chefdesigner)


Lesenswert?

newbie schrieb:
> 2:Funktionsprizip des MACs für Blöde:

Der MAC (Media Access Controller) nimmt Dir einen Teil des Protokolls ab 
und schafft zudem die hochgeschwinde Anbindung des Phy. Zur Verfügung 
stehen da verschiedene Interfaces, mit denen der MAC und der Phy logisch 
kommunizieren. Physikalisch werden dazu die schnellen GigiBitTransceiver 
der FPGAs benutzt.

Man kann sich das auch sparen indem man einen physikalischen MAC+PHY 
verwendet. Da ist dann die Datenkommunikations einfacher und langsamer 
und der FPGA braucht keine GBT-Ports. Das wird billiger.

Umgekehrt kann man mit FPGAs auch den Phy emulieren, muss sich dann aber 
mit der 5PAM was einfallen lassen. Lohnen tut sich das meines Wissens 
nicht.

Wenn Du Dich entschließt, den MAC von Xilinx einzusetzen, könnten wir 
uns kurzschliessen, weil ich ähnliches vorhabe.

von newbie (Gast)


Lesenswert?

Hallo und danke schonmal für eure schnellen Antworten.

Spartanist schrieb:
> Welche PCB Version hast Du?


Laut Boardbezeichnung : ...lx150t-PCB-E (sollte soweit ich weiß eine 
aktuellere Version sein)

Hatte auch am Anfang meine Bedenken ob der Phy funktionsfähig ist, da 
der Ethernet Test(Welcher beiliegend zum Factory_test Ordner ist) 
aufgrund der nicht funktionsfähigen Batchdatei funktionslos war(Auch 
wenn der Bitsream "von Hand" über Impact geladen wurde). Habe aber 
mittlerweile den S6LX150T_TEMAC_FIFO_perf_edk12_3 RXtest unter ISE 13.1 
zum laufen bekommen indem ich die Batchdatei ein wenig bearbeitet habe 
(Musste den Pfad welcher auf die Settings Datei des ISE führte 
anpassen).

Andreas F. schrieb:
> Wenn Du Dich entschließt, den MAC von Xilinx einzusetzen, könnten wir
> uns kurzschliessen, weil ich ähnliches vorhabe.

Bei dem  Projekt handelt es sich um eine Bachelor Thesis welche ich an 
meiner Hochschule betreibe.Ich kann dir leider im Moment nicht sagen ob 
ich mit dem TEMAC von Xilinx mein Projekt fortführen werde, da ich nicht 
weiß ob mir eine EDK Lizenz zur Verfügung gestellt wird...
Trotzdem Danke für dein Angebot und dein Antwort!!

Spartanist schrieb:
> Da der MAC kostepflichtig ist (site-Lizenz 5k, project Lizenz 2500,-)
> sollte man sich gfs lieber den OC core nehmen und umrüsten. Wenn Du kein
> GBit brauchst, ist der auch direkt verwendbar. (10/100)

Habe momentan die kostenlose Eval Lizenz des TEMAC welche mir ermöglicht 
einen Bitstream zu erzeugen und ins Board zu laden . Dieser ist dann für 
eine bestimmte Zeit im Board funktionsfähig (laut einem AVNET 
Mitarbeiter etwa 8 Stunden )und kann nach Ablauf der Zeit ins Board neu 
geladen werden.

Habe mich auch mal mit 2 Opencores befasst :
10_100_1000 Mbps Tri-mode Ethernet MAC und den Ethernet IP Core (Denke 
das ist der welcher Spartanist gemeint hat) : Welche mich doch wegen der 
überschaubaren Anzahl an Beispielen und der etwas spärlich geratenen 
Doku abgeschreckt hat.

Ist zum Verzweifeln das ganze Thema...

von Michael (Gast)


Lesenswert?

newbie schrieb:
> Laut Boardbezeichnung : ...lx150t-PCB-E (sollte soweit ich weiß eine
>
> aktuellere Version sein)

Soweit mir bekannt, ist das Problem ab Revision "D" erledigt.

Nicht erledigt sind die zahllosen Dokuschwächen bei den xilnx-Cores. wir 
haben schließlich auf einen kostenpflichtigen Altera-IP-Core 
umgesattelt.

Es wäre aber interessant, wenn du Deine Erfahrungen berichten könntst.

newbie schrieb:
> Habe momentan die kostenlose Eval Lizenz des TEMAC welche mir ermöglicht
> einen Bitstream zu erzeugen und ins Board zu laden . Dieser ist dann für
> eine bestimmte Zeit im Board funktionsfähig (laut einem AVNET
> Mitarbeiter etwa 8 Stunden )und kann nach Ablauf der Zeit ins Board neu
> geladen werden.

Auf welches Design beziehst Du Dich?

von newbie (Gast)


Lesenswert?

Michael schrieb:
> Nicht erledigt sind die zahllosen Dokuschwächen bei den xilnx-Cores. wir
> haben schließlich auf einen kostenpflichtigen Altera-IP-Core
> umgesattelt.
>
> Es wäre aber interessant, wenn du Deine Erfahrungen berichten könntst.

Habe mich letze Woche mit der Configuration des TEMACS über den 
configuration_vector(anstatt AXI4-lite) beschäftigt, da ich nicht wusste 
ob ich nun eine EDK Lizenz bewilligt bekomme.Kahm aber relativ langsam 
voran da die ganzen Beispiele  auf den AXI4 Bus aufbauten.

Spartanist schrieb:
> Es gibt von AVNET ein Design, welches die Abarbeitung des
> Ethernet-Stacks über TCPI/IP erledigt und Daten vom auf dem board
> befindlichen DDR3-Chip über Ethernet versendet. Die Performance soll
> angeblich bei 800MBit sein, was ich aber dahingehend infrage stelle

Habe diesen Montag eine Zusage für die EDK Lizenz bekommen. Gestern 
Abend habe ich dann wohl noch das von Spartanist genannte Design 
ausprobieren können, jedoch wahren die Ergebnisse im Receive Modus mit 
etwa 22 MBit/s und im Transmit bei 9MBIT/s doch sehr ernüchternd.
Beim Beispiel handelte es sich um den Performance Test welcher den: 
Xilinx TEMAC mit FIFO und LwiP Stack ausführte.(Werde heute wohl noch 
die DMA variante austesten).

Michael schrieb:
> Auf welches Design beziehst Du Dich?

Weiß jetzt nicht genau was du mit Design meinst, ich kann mit der Eval 
Lizenz und ISE 13.1 2 Versionen des 
TEMAC(http://www.xilinx.com/products/intellectual-property/TEMAC.htm) 
4.5 und 5.1 erzeugen. Wenn ich ihn erstellt habe, kommt eben die 
Statusmeldung:
Das ich mit dieser Lizenz einen Bitstream erzeugen kann, aber dieser nur 
Für eine bestimmt Zeit im Board funktioniert.

von Hans (Gast)


Lesenswert?

newbie schrieb:
> 9MBIT/s doch sehr ernüchternd.

In der Tat sehr ernüchternd. Was wäre denn erwartet? 100MBit?
Ich suche eine Gigabit-Anbindung. Den LW IP kann man da wohl vergessen.
Scheint wenig zu geben.

Ich bin auch nicht so firm mit ETH, aber für eine hochperformante 
Übertragung nahe am theoertischen limit wird man sich was einfallen 
lassen müssen, denke ich, denn über's EDK kommt ja die gesamte 
Verwaltung der Software hinzu - auch wenn stacks, state machines und 
dergleichen in C sicher einfacher zu handeln sein werden. Wäre mal 
interessant zu wissen, was des BS an Datenbandbreite schluckt und wie 
mal mit einem CPU Kern hinkommt.

> Ethernet MAC ip core mit FIFO für spartan 6
Beim Spartan kommt dann nur ein Softcore in Frage. Ein 32-Bitter auf 125 
MHz internem Takt müsste die Rate (unidirektional) eigentlich schaffen, 
wenn man eine Bearbeitungsschleife von durchschnittlich 4 Takten annimmt 
bei 50% Last:

(1x idle, 1x Programmspeicher lesen, 1x Daten aus RAM holen (4 Bytes!), 
1x Daten auf MAC schicken (4 Bytes),)

32*125/4 = 1000 MBit

von Georg A. (georga)


Lesenswert?

Der Microblaze mit 65MHz auf einem S3E schafft mit einem RTL8169 (33MHz 
PCI) über uCLinux ca. 2-3MByte/s, egal ob read oder write. Und da sind 
schon DMA und IPv4-Checksums vom Realtek an. Wenn ich UDP-Frames in HW 
zusammenbaue und den Realtek über PCI abholen lasse, komme ich bequem 
auf 100MByte/s...

von Klausi (Gast)


Lesenswert?

Was wären denn so die limits eines Microblaze in Sachen Datendurchsatz?

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.