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