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