www.mikrocontroller.net

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


Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rufus Τ. Firefly (rufus) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Franz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Schrotty (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Schrotty (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.