Forum: FPGA, VHDL & Co. Microblaze Ethernet Lite EDK


von ferro (Gast)


Lesenswert?

Hallo zusammen,

habe jetzt meine ersten Schritte in dem Themenbereich FPGAs gemacht.

Will in meinem Projekt nun einen Microblaze programmieren (mit C), damit 
er Daten über das Netzwerk schicken kann.
Dazu gibt es im EDK ja das Ethernet-Lite Interface, dass ich über den 
PLB angeschlossen habe. Dazu stehen mir dann bestimmt Treiber zur 
Verfügung, die mir das EDK erstellt. Habe da die Header xemaclite_i.h 
xemaclite_l.h und xemaclite.h gefunden.
Damit müsste doch recht einfach eine Netzwerkkommunikation aufzustellen 
sein.

Hat einer damit Erfahrung und kann mir gute Tips geben oder Literatur 
dazu empfehlen?

Am besten hier mal ein kleines Codeexample posten, wie ich so ne 
Kommunikation realisieren kann.

Kann man hier auch irgendwie geschickt polling betreiben oder geschieht 
die Kommunikation über Interrupts?

Da ich selber noch Anfänger bin mit dem Thema, bitte um Nachsicht wenn 
die Fragen vllt zu trivial erscheinen :-)!

Schon mal Danke vorab für jede Hilfe.

Gruss ferro

von Duke Scarring (Gast)


Lesenswert?

Erster Tip: Nicht mit dem Schwersten anfangen. FPGAs sind ja schon 
komplex genung, aber dann auch noch MicroBlaze und Ethernet...

Zweiter Tip: Such nach Beispielapplikationen für Ethernet Lite und 
versuche diese zu verstehen. Dann kannst Du sie für Deine Zwecke 
abwandeln.

Duke

von ferro (Gast)


Lesenswert?

Danke mal für deine Tips.

Hab nun inzwischen bisschen rumgeforscht.
Hab entdeckt, dass man dazu einen Network Stack generieren muss (kann 
mir das jmd bestätigen?). Laut Xilinx Forum entweder lwIP oder ucLinux. 
Da ich nur über den xilkernel als OS verfüge, muss ich wohl lwIP 
verwenden, oder?
Ist mein Gedankengang richtig?
Hab dazu ein Beispielcode angeschaut.

Kann man nicht einfach nur mit den Send oder Receive Methoden Pollen, 
und so irgendwie eine einfach Netzwerkkommunikation aufbauen?

PS: Hab noch ne andere Frage: Wenn in der main-methode eines Programms, 
xilmain-methode aufgerufen wird, dann wird da die kontrolle an das OS 
übergeben. Wo wie geht es dann im Programm weiter, bzw. so startet man 
threads?

gruss ferro

von Papa S. (printf)


Lesenswert?

Hallo Ferro,

ich will mich demnächst auch mit dem Thema 'Ethernet lite' bzw. tcp/ip 
beschäftigen. Im Moment habe ich für eine (einseitige) Datenübertragung 
(FPGA ==> PC)  einen UDP-Stack gebaut (Das UDP-Protokoll ist sehr 
einfach und für große Datenmengen sehr gut geeignet, aber es gibt bei 
UDP keine Verbindungskontrolle). Auf PC-Seite ist das UDP-Protokoll mit 
dem WinSocket auch sehr gut zu handhaben. Ich möchte aber auch tcp/ip 
mit Verbindungskontolle bzw. httpd für eine WebServer-Anbindung 
ausprobieren.
Ich habe schon mal geschaut, es gibt (wenn man kein Geld ausgeben will) 
entweder für das EDK ab 10.x (oder 9.x ? weiss jetzt nicht genau) den 
kostenlosen ethernet-lite . Alternativ gibt es auf opencores.org einen 
kostenlosen 10/100mbit Ethernet MAC (mit wishbone interface, 
Schnittstelle zu ethernet is MII).
Ich habe auch schon mal einen Blick auf den Ethernet-lite geworfen, bin 
aber aus der Dokumentation bzw. den Header-Files nicht recht schlau 
geworfen. Falls Du etwas findest, wäre ich für Hinweise sehr dankbar. 
Als Plttform verwende ich das Spartan3E starter kit (mit 500er bzw. 
1600er Spartan3E).
Es gibt übrigens bei den Beispielen für das StarterKit mit dem 1600er 
ein Web-Demo. Falls Du interessiert bist, kann ich das mal auskramen.
-Papa Schlumpf

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Such mal nach ML403 auf der Xilinx Seite in den Beispielen ist ein 
einfacher Webserver mit dem Microblaze enthalten.

von floGzmo (Gast)


Lesenswert?

ja webserver is an sich sehr schön aber doch nur als bitfile vorhanden 
oder hat jemand vhdl und c code der dahintersteckt?
gruß flo

von A. M. (am85)


Lesenswert?

ferro schrieb:
> Hab nun inzwischen bisschen rumgeforscht.
> Hab entdeckt, dass man dazu einen Network Stack generieren muss (kann
> mir das jmd bestätigen?). Laut Xilinx Forum entweder lwIP oder ucLinux.

uCLinux ist kein TCP/IP Stack sondern eine für Mikrocontroller 
optimierte Linuxdistribution, die ohne MMU auskommt.

> Da ich nur über den xilkernel als OS verfüge, muss ich wohl lwIP
> verwenden, oder?

Es gibt auch noch andere Stacks, da der lwIP Stack aber im EDK 
mitgebracht wird, ist es naheliegend den zu benutzen.

> Kann man nicht einfach nur mit den Send oder Receive Methoden Pollen,
> und so irgendwie eine einfach Netzwerkkommunikation aufbauen?

Willst du einfach nur Bits durch die Leitung jagen, dann kommst du ganz 
gut mit den vom EDK erstellten Treibern für den EthernetLite Core aus. 
Willst du aber den Funktionsumgang richtiger Netzwerkprotokolle nutzen, 
so kommst du an einem passenden Stack nicht vorbei.

> PS: Hab noch ne andere Frage: Wenn in der main-methode eines Programms,
> xilmain-methode aufgerufen wird, dann wird da die kontrolle an das OS
> übergeben. Wo wie geht es dann im Programm weiter, bzw. so startet man
> threads?

In den Plattform Settings, im EDK oder SDK, kannst du einstellen, 
welcher Thread nach "xilmain" gestartet werden soll und ihm dort die 
Priorität "1" geben, denn wenn dein Programm richtig läuft, dann wird 
Code, der nach der xilmain steht, nicht gestartet.

floGzmo schrieb:
> ja webserver is an sich sehr schön aber doch nur als bitfile vorhanden
> oder hat jemand vhdl und c code der dahintersteckt?

Such mal auf der Xilinx Homepage nach "xapp1026". In dem PDF ist ein 
Link unter dem du dir das zu dieser Application Note gehörende 
Referenzdesign runterladen kannst. Dort sind auch die C-Files enthalten, 
u.a. auch für einen einfachen Webserver. Btw. ein Webserver in VHDL mag 
unter umständen möglich, aber wenig sinnvoll sein.

von floGzmo (Gast)


Lesenswert?

okay gefunden. dankeschön


jetzt mus sich aber erstmal kucken ob das anstatt mit ml505 auch mit dem 
ml501 geht :/

von A. M. (am85)


Lesenswert?

floGzmo schrieb:
> jetzt mus sich aber erstmal kucken ob das anstatt mit ml505 auch mit dem
> ml501 geht :/

Ich hab das ganze auf nem ML410 laufen, wenn überhaupt, musst du da 
wenig anpassen. Das ML501 müsste ja mit nem Microblaze laufen, oder? 
Dann wird das auch klappen. Der Code ist für PPC 405, 440 und MB 
verwendbar. Kleine Anpassungen vorbehalten.

von olli (Gast)


Lesenswert?

hi,

bin grad auch dabei mir eine ethernetcommunikation aufzubauen. hab ein 
nettes board von trenz-electronic.de: te0320 partan-3A DSP FPGA 3400 
kgates.

leider hat es weder mac noch phy :(.
kennt jemand eine erweiterungsplatine incl. microblaze referenz design?
hab bis nur nur den PMod NIC gefunden. Leider gibt es dafür kein 
referenz design.

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.