Forum: Mikrocontroller und Digitale Elektronik Wie kann ich zwei Ethernet-Controller umschaltbar auf einen Stecker legen?


von Franz (Gast)


Lesenswert?

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

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

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.

von Franz (Gast)


Lesenswert?

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!

von Schrotty (Gast)


Lesenswert?

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.

von Schrotty (Gast)


Lesenswert?

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.

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.