Forum: FPGA, VHDL & Co. "IP Core" für MDIO Interface


von Peter K. (Gast)


Lesenswert?

Hallo zusammen,

es steht mal wieder ein neues Projekt an, dabei möchte ich u.a. mehrere 
Phys konfigurieren. Hierzu gibt es ja die MDIO Schnittstelle.

Bisher habe ich meinen VHDL Code immer komplett selbst geschrieben (mal 
abgesehen von ein paar PLLs, die über einen Coregen erstellt wurden) 
doch jetzt möchte ich, falls vorhanden auf bestehendem Code aufsetzen. 
Das MII Interface ist ja standardisiert so dass ich hier eigentlich 
zuversichtlich war, im Netz Code zu finden. Leide war ich bisher nicht 
erfolgreich und habe den Eindruck, dass ich evtl nach den falschen 
Begriffen suche.

Daher zunächst die konkrete Frage:
Habt von Euch jemand einen Code, der ein MDIO Interface bedient? Als 
Interface nach Außen stelle ich mir beispielweise Adress Bus, Read Bus, 
Write Bus mit Rd und Wr und busy Signalen vor. Alternativ wäre auch ein 
eingebundenes Ram interessant, in dem bereits die MDIO Parameter 
hinterlegt werden können.

Nun noch eine allgemeine Frage:
Findet ihr häufig im Netz IP Cores, die Ihr für Eure Projekte nutzen 
könnt? Wenn ja, dann wo und wie? Oder sind die Problemstellungen doch 
immer zu speziell, um etwas passendes zu finden?

Ich freue mich auf Eure Antworten.

Viele Grüße,
Peter

von Heiner (Gast)


Lesenswert?

Peter K. schrieb:
> Habt von Euch jemand einen Code, der ein MDIO Interface bedient?
Ja, hab ich.

> nach Außen stelle ich mir beispielweise Adress Bus, Read Bus,
> Write Bus mit Rd und Wr und busy
Ich nehme an, Du möchtest einen Controller anschliessen?
Warum schließt Du den Controller nicht direkt an den PHYs an?

Wenn Du das dennoch im FPGA machen willst, kannst Du es gleich komplett 
machen. MDIO ist nichts anderes, als SPI mit ein bischen Protokoll. Der 
Hauptaufwand ist das, was du dann damit machen willst.

Peter K. schrieb:
> Findet ihr häufig im Netz IP Cores,
Ja!

>die Ihr für Eure Projekte nutzen könnt?
Nein!

Grund: Die haben allesamt Macken, sind schlecht dokumentiert und gehen 
am Notwendigen vorbei. Dort findet man meist genau das implementiert, 
was einfach zu schreiben war, das Schwere fehlt. Und es fehlt den 
meisten Proggern die Muße, ihre Sachen komplett auszuprogrammieren. 
Daher stelen sie den 2.klassigen Kram gerne ins Netz.

Besonders fehlt das, was man selber braucht :-)

Die richtig guten Cores, die perfekt dokumentiert und durchvalidiert 
sind, findet man bei vielen guten VHDL-proggern in den Firmen. Aber die 
rücken ihre Cores nicht raus. Sowas macht man halt nicht in einigen 
Tagen und die Firmen investieren.

Bevor Du fragst: Meinen kann ich Dir nicht geben und er brächte Dir auch 
nichts, weil er zu 80% aufgabentypisch ist. Konkret braucht man für MDIO 
wirklich nicht viel, das meiste sind die Zugriffe und die Logistik drum 
herum. Wenn du das wirklich aufteilen willst, ist die meiste Arbeit beim 
Controller zu leisten. Das MDIO kostet maximal 3 Tage, wenn man IO-Ports 
bedienen kann und etwas Erfahrung hat. Allein das Businterface, so wie 
Du es haben willst, wäre schon die Hälfte :-)

Ich rate aber wie angedeutet dazu, es komplett im FPGA zu machen.

von Peter K. (Gast)


Lesenswert?

Hallo Heiner,

vielen Dank für Deine Antwort. Deine Erfahrungen mit IP Cores decken 
sich mit meinen. Da bin ich ja schon mal beruhigt, dass es nicht nur mir 
so geht und nicht nur ich nichts passendes finde.

Ein MDIO Interface zu implementieren ist sicherlich kein Hexenwerk und 
vergleichsweise schnell gemacht, ich habe es für mich nur als Anlass 
genommen, noch einmal einen Anlauf auf die IP Core Suche zu nehmen.

Bei dem Projekt ist kein Controller involviert, es sollen proprietäre 
Datenpakete über Ethernet übertragen werden. das MDIO Interface benötige 
ich z.B. um zwischen 10MBit und 100 MBit umzuschalten oder andere PHY 
Einstellungen zu ändern.

Wer sonst noch Erfahrungen mit IP Cores teilen möchte, ist herzlich 
eingeladen. Auch sachdienliche Hinweise hinsichtlich MDIO Interface 
werden weiterhin angenommen :-)

Viele Grüße,
  Peter

von Max (Gast)


Lesenswert?

Was willst Du denn wissen? Hast Du ein Dok? Es gibt von verschiedenen 
Seiten Beschreibungen über MDIO, sowohl die Schnittstelle, als auch die 
Logik.

von PittyJ (Gast)


Lesenswert?

Für das reine MDIO Interface habe ich ca 200 Zeilen gebraucht. Nötig war 
ein Frequenzteiler, der auf einen gültigen Clock (8MHz in meinem Fall) 
runtergeregelt hat, und dann eine Statemachine zum Abarbeiten eines 
einzelnen Kommandos.

Darüber ist noch ein Statemaschine angesiedelt, die dem PHY über das 
MDIO-Interface die notwendigen Befehle zum sauberen Arbeiten schickt.
Waren auch noch mal so 200 Zeilen.

Ist also nicht so kompliziert.

von Abdo (Gast)


Lesenswert?

Hallo,
ich bin ganz neu in der Welt der Ethernet und FPGA, habe hier einen 
Board mit 2x SMSC LAN8710 und einen Xilinx FPGA.
Kann mit jemand bitte in klar text sagen was das MDIO-Interface genau 
ist? Und was ist seine Funktion?
Vielen Dank im vorraus
Abdo

von Schnarcho (Gast)


Lesenswert?

In Zeiten von Google sollte man doch herausfinden können, was MDIO ist

von Isidor Calaghan (Gast)


Lesenswert?

zumal es Wikipedia gibt, wo ich und andere einiges dazu geschrieben 
haben. Das MDIO konfigueirt den PHY, kann dort Funktionen lesen und 
setzen. Man  braucht es, wenn man etwas mehr tun will, was nur auto 
config und Senden.

von Anna Nym (Gast)


Lesenswert?

Ich habe MDIO selbst programmiert. In meinem Fall ist es aber ein Slave, 
der die empfangene Daten weiter zum uC schieben soll. An sich ist MDIO 
ziemlich easy. Solche "kleineren" Aufgaben setze ich persönlich lieber 
selbst um. IP für Master gibt es von Lattice:

http://www.latticesemi.com/products/intellectualproperty/referencedesigns/mdioslaveperipheral.cfm

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.