Hallo Leute,
bei miener Bachelor-Arbeit habe ich folgendes Problem:
Es soll ein Kästchen entstehen mit Ethernet-Anschluss.
Dabei soll das Gerät zwei Ethernet-Protokolle unterstützen:
1.) Standard Ethernet (im µC)
2.) EtherCat (Separater Controller)
Das Ganze soll wenn möglich per Software umschaltbar sein.
Will aber dafür keine Relais oder ähnliches verwenden...
Ich bin auf der Suche nach einen Ethernet-Phy, der
zwei MII Schnittstellen und einen Ethernet-"Ausgang" hat.
Der Phy soll sich dann umschalten lassen...
Ich hab schon mal einen Chip gesehen, der es genau umgekehrt kann:
1x MII, 2x Ethernet, daher dachte ich, dass es vielleicht auch die
andere Seite geben muss...
Kann mir von Euch jemand weiterhelfen?
Schöne Grüße,
Franz
Wie wäre es, die MII-Schnittstelle durch einen Multiplexer resp. zwei
wechselweise abschaltbare Treiber mit Tristate-Ausgängen zu leiten?
Dann kannst Du ein PHY verwenden, aber zwei MACs (oder auch mehr) daran
hängen.
Hallo Firefly,
vielen Dank für die Antwort. Irgendwie hat das mit der
Emailbenachrichtigung nicht geklappt, weshalb ich Deinen Beitrag erst
jetzt lese..
Ich habe eine andere Lösung für das Problem gefunden.
Ich verwende nun einen EtherCAT Chip, der mehrere MAC-Schnittstellen
hat,
und kann so die entsprechenden Nachrichten auf den dritten MAC
weiterleiten.
Daraus ergibt sich jetzt das nächste Problem:
Ich will die MAC in meinem µC mit einer MAC des EtherCAT controllers
verbinden. Dass es mit PHYs dazwischen funktioniert, ist mir klar.
Aber das gefällt mir wegen des Platzverbrauchst überhaupt nicht.
Ich hab schon mal ein Application Note von Micrel gesehen,
bei dem man zwei MACs direkt miteinander verbunden hat.
Jedoch nicht als detailierten Schaltplan, sondern nur als
Blockdarstellung.
Dass ich RX/TX crossen muss ist mir klar. Aber ich weis noch nicht was
ich
genau mit den anderen Leitungen anstellen soll, die die MII mit sich
bringt.
Da komm ich wohl um ein Experiment nicht herum :-).
Wär aber schön, wenn jemand von Euch schon Erfahrung mit sowas hatte,
und ein paar Tipps hier verlieren könnte.
Vielen Dank!
Wichtig sind folgende Signale:
TxD Sendedaten (MAC->PHY)
TxEN wenn high, sind Sendedaten gültig (MAC->PHY)
TxCLK Takt, mit dem die Sendedaten übertragen werden (PHY->MAC)
RxD Empfangsdaten (PHY->MAC)
RxDV wenn high, sind Empfangsdaten gültig (PHY->MAC)
RxCLK Takt, mit dem die Empfangsdaten übertragen werden (PHY->MAC)
Man könnte theoretisch TxD und RxD zusammenschalten, sowie TxEN und
RxDV, das heisst, einer der beiden MAC "spielt" PHY.
Problem ist aber, dass der PHY sowohl im Sende- als auch im Empfangsfall
den Takt bereitstellt. Leider hat aber ein MAC keinen Taktausgang an
seinem MII-Interface und daher wird das ganze nicht so einfach
funktionieren. Du müsstest von aussen einen 25MHZ-Takt einspeissen.
Ich halte die Lösung mit dem Tri-Stat-Muliplexer am MII-Interface, die
Rufus beschreibt, deutlich einfacher, günstiger und praxisnäher.
Allerdings musst du bei der Lösung darauf achten, dass du innerhalb
aller RX-Signale keinen allzugroßen Skew bekommst. Das heisst, die
Laufzeiten von RxD, RxDV und RxCLK durch deine Treiber sollten annähernd
gleich sein.
Für die TX-Leitungen gibt es neben der Anforderung eines geringens Skews
noch das Problem, dass der Takt vom PHY bereitgestellt wird, und das
Ausgeben der Daten im MAC veranlasst, welche wiederum vom PHY gelesen
werden. Zwischen dem Takt am PHY und den ankommenden Daten am PHY darf
nur eine bestimmte maximale Verzögerungszeit liegen, da sonst Setup- und
Holdtime Verletzungen auftreten können.
Dies bedeutet, dass deine Treiber eine möglichst kurze Verzögerungszeit
aufweisen sollten.
Eine eigene Frage?
Dieser Thread ist über 17 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.