Forum: FPGA, VHDL & Co. LAN Transceiver des Nexys3 Boards


von Norbert (Gast)


Lesenswert?

Hallo,

auf Empfehlungen hier im Forum habe ich mir zum Einstieg das Nexys3 der 
Firma Digilent gekauft und bin bis jetzt wirklich sehr zufrieden. Für 
den Preis ist es sicherlich eine gute Wahl. Auch was die Peripherie 
betrifft, ist das Board wirklich gut durchdacht.

Eine Sache, die mir allerdings recht merkwürdig vorkommt, ist die 
Bestückung mit dem LAN Transceiver LAN8710 der Firma Microchip bzw. 
SMSC. Dieser liefert noch nicht einmal die Auflösung der MAC 
Protokollebene, d.h. man muss sozusagen den gesamten Protokollstack in 
der Hardware des FPGA abbilden.

Ohne große Vorkenntnisse vermute ich trotzdem mal, dass die Kapazität 
des verbauten XC6LX16 für die Abbildung eines kompletten MAC/IP/TCP oder 
MAC/UDP Protokollstacks kaum ausreichen würde und ich frage mich, was 
solch eine Bestückung überhaupt für einen Sinn ergeben soll, als für 
bloßes Marketing weil es in der Liste der vorhandenen Schnittstellen des 
Boards nun mal gut ausschaut? Warum hat man hier keinen Chip verbaut, 
der wenigstens noch die MAC Ebene des Protokollstacks auflöst oder noch 
besser, einen kleinen MC, der einem hier noch etwas mehr unter die Arme 
greift?

Leider habe ich trotz intensiver Suche keinerlei Musterapplikationen zur 
Bedienung des LAN Transceivers gefunden. Lediglich Hinweise, dass es 
entsprechende Cores von der Fa. Xlilinx gibt, die allerdings 
Lizenzgebühren kosten und das nicht zu knapp. Für einen Hobbyisten also 
unbrauchbar.

Mal eine dumme Frage, was könnte man denn sonst mit dem LAN Interface 
anfangen wenn man z.B. ein selbstentwickeltes Low-Level Protokoll fahren 
würde? Gibt es denn wenigstens hierfür ein paar Musterapplikationen in 
VHDL, die ich mir mal anschauen könnte um daraus zu lernen, wie man 
sowas implementiert?

Vielen Dank für Eure Hilfe.

Beste Grüße,

Norbert

von Duke Scarring (Gast)


Lesenswert?

Norbert schrieb:
> Dieser liefert noch nicht einmal die Auflösung der MAC
> Protokollebene, d.h. man muss sozusagen den gesamten Protokollstack in
> der Hardware des FPGA abbilden.
Richtig. Das machen eigentlich alle Hersteller so, die Ethernet und FPGA 
anbieten.

> Ohne große Vorkenntnisse vermute ich trotzdem mal, dass die Kapazität
> des verbauten XC6LX16 für die Abbildung eines kompletten MAC/IP/TCP oder
> MAC/UDP Protokollstacks kaum ausreichen würde und ich frage mich, was
TCP/IP wird wahrscheinlich tatsächlich etwas zu aufwendig, aber UDP und 
ICMP und darauf basierte Protokolle lassen sich ganz gut mit 
State-Machines abbilden.


> Leider habe ich trotz intensiver Suche keinerlei Musterapplikationen zur
> Bedienung des LAN Transceivers gefunden. Lediglich Hinweise, dass es
> entsprechende Cores von der Fa. Xlilinx gibt, die allerdings
> Lizenzgebühren kosten und das nicht zu knapp. Für einen Hobbyisten also
> unbrauchbar.
Ja, leider. Für eine gewisse Zeit laufen die auch im Demomodus. 
Allerdings sind die Schnittstellen für den Microblaze optimiert.


> Mal eine dumme Frage, was könnte man denn sonst mit dem LAN Interface
> anfangen wenn man z.B. ein selbstentwickeltes Low-Level Protokoll fahren
> würde? Gibt es denn wenigstens hierfür ein paar Musterapplikationen in
> VHDL, die ich mir mal anschauen könnte um daraus zu lernen, wie man
> sowas implementiert?
Hier findest Du eine rudimentäre UDP-Implementierung in Verilog:
http://www.fpga4fun.com/10BASE-T.html

Bei Gaisler in der grlib is ein 100-MBit Core enthalten, der auch wieder 
für ein SoC-optimiert ist. Er füllt den Sende-FIFO mit einem 
AMBA-AHB-DMA-Master.

Und Opencores hat sicher auch was zu bieten.

Duke

von Norbert (Gast)


Lesenswert?

Hallo Duke

Duke Scarring schrieb:
> Hier findest Du eine rudimentäre UDP-Implementierung in Verilog:
> http://www.fpga4fun.com/10BASE-T.html

Super, danke Dir! Das sieht schon mal recht verständlich aus. Aber ein 
kleines Problem hab ich noch:

>Connect two IOs from the FPGA board to an Ethernet cable.

>    If the cable's other end connects to a hub or switch (like on
>    the picture above), use pin 1 and 2 of the Ethernet cable.
>    If the cable's other end connects directly to the PC, use pin 3 and 6.

Naja, hier hat man sich wohl den ganzen Transceiver-Chip eingespart ;-)

Der LAN8710 ist mit ganzen 19 Leitungen mit dem FPGA verbunden, die alle 
bedient werden wollen. Da muß ich mir mal das Datenblatt reinziehen und 
schauen, was es mit den ganzen Leitungen auf sich hat. Eventuell ist die 
Sache ja halb so wild und man kann den Code von fpga4fun fast 1:1 
umsetzen.

Gottseidank ist Verilog ja noch recht gut lesbar aber so ein 
Verilog2VHDL Tool wäre auch nicht schlecht.

>Und Opencores hat sicher auch was zu bieten.

Stimmt, da hatte ich mich mal registriert. Das wäre natürlich auch mal 
eine Suche wert. Dort findet man viele nützliche Dinge.

Beste Grüße,

Norbert

von Strubi (Gast)


Lesenswert?

Hi Norbert,

ich würde die Sache erst mal mit einer Soft-CPU ansteuern. D.h. nur 
MAC/RMII zum Phy hin implementieren (oder vom USRP-Projekt 
runterklauben) und mit etwas DMA-Logic an die CPU ranflanschen. Beim 
USRP ist das schon quasi fertig für den offenen ZPU-Softcore. (Suche 
github, oder ettus.com).
Wenn Du dann noch über genügend externes Memory verfügst, sollten die 
Resourcen des LX16 locker für einen Port des lwip stack reichen. Die 
Performance ist dann ev. mies, aber das kannst du notfalls noch mit 
einigen Extras wie Checksum-Generierung und verketteten DMA-Listen 
pimpen. Lohnt sich mE eher, als komplette UDP-FSM mit ARP und 
schiessmichtot 'hart' zu implementieren.

Grüsse,

- Strubi

von Edi M. (Gast)


Lesenswert?

Ich würde das Atlys empfehlen. Hat ausreichend Platz für einen lightw. 
IP stack.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Ich hatte hier mal vorgelegt und Pakete verschickt.
Das ist aber erst der Anfang.

Beitrag "Ethernet GMII"

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.