Forum: Mikrocontroller und Digitale Elektronik RGMII und MII kompatibel


von Roland E. (roland_91)


Lesenswert?

Guten Abend Forumsgemeinde,

ich wollte wissen, ob RGMII und MII kompatibel sind ?

Laut dem englischen Wikipedia-Eintrag besitzt die MII-Schnittstelle 4 
Transmitdatenbits und einen Takt von 25MHz bei 100Mbps, genauso wie die 
RGMII-Schnittstelle.
Nur TX_EN und TX_ER sind bei der RGMII zu einem Signal TX_CTL 
zusammengefasst.
https://en.wikipedia.org/wiki/Media-independent_interface

Ich habe bereits beide Schnittstellen über ein Ethernetkabel verbinden 
können und im Linux-Userspace via dem Befehl "ping" zufällige Daten 
sowohl senden als auch empfangen können.
Bevor ich aber auf gut Glück Zeit ein Programm stecke, frage ich lieber 
nochmal nach.


Dass es nicht das Gelbe vom Ei ist, ist mir bewusst. Es geht erstmal nur 
darum gezielt gewisse Daten über TXD[0..3] zu senden, Daten zu empfangen 
ist vorerst egal.

Grüße,
roland_91

von void (Gast)


Lesenswert?

>ich wollte wissen, ob RGMII und MII kompatibel sind?

Eher nicht. Nein.


>MII-Schnittstelle 4 Transmitdatenbits und einen Takt von 25MHz bei 100Mbps,
>genauso wie die RGMII-Schnittstelle.

Ja, aber nur wenn du den RGMII davon abhälst mit 1Gbps zu arbeiten und 
auf 100Mbps zügelst.


>Nur TX_EN und TX_ER sind bei der RGMII zu einem Signal TX_CTL zusammengefasst.

Die gemultiplexten Signale wirst du nicht auseinanderdröseln (wollen).


Und dann noch eine Kleinigkeit die Logiklevel:
MII ist 3.3V oder 5V (üblich LVTTL)
RGMII ist 2.5V CMOS oder 1.5V HSTL


>gezielt gewisse Daten über TXD[0..3] zu senden,
>Daten zu empfangen ist vorerst egal.

Echt? Wenn du die gesendeten Daten nicht empfangen möchtest ist das 
einfach: Nichts anschließen.
Aber mal im Ernst. Ein MII PHY und ein RGMII PHY würden dir echt helfen.

von Roland E. (roland_91)


Lesenswert?

Danke für die rasche Antwort.
Mit "nur Senden" meinte ich eine unidirektionale Verbindung von meinem 
Board ausgehend, also dass mein Board keine Daten empfangen braucht.
Aber das macht wohl leider keinen Unterschied, entweder gehen beide 
Richtungen oder keine.

Ich hatte mich nur gewundert, warum das Autonegotiation zwischen den 
beiden Schnittstellen dann allem Anschein nach geklappt hat und das 
Pingen auch.

Deinen letzten Satz verstehe ich nicht ganz?
Ich habe an einem Ende den KSZ9031RNX (RGMII) und am anderen sitzt der 
KSZ8893MQL (MII).
Einen der beiden PHYs auszutauschen ist leider nicht möglich, da beide 
eingebettet sind.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Autoneg machen die PHYs normalerweise voellig ohne CPU. Da geht nix 
ueber (RG)MII Interfaces. Da wird's nur Betriebsspannung und Takt 
brauchen.
Damit ein Ping geht, braucht's Verbindung in beide Richtungen. Vor dem 
Ping kommt ARP.
Beschreib' mal genauer, was du da an beteiligten Chipsen hast - wo 
haengen die PHYs jeweils noch drann und in welche Richtung soll da was 
gehen?

Prinzipiell sind unidirektionale Verbindungen schon moeglich, aber wenn 
da Switche dazwischen sind, neigen die zum fluten aller Ports mit dem 
Kram, der gesendet wird, ohne zu empfangen.

Gruss
WK

von void (Gast)


Lesenswert?

>Deinen letzten Satz verstehe ich nicht ganz?
>Ich habe an einem Ende den KSZ9031RNX (RGMII)
>und am anderen sitzt der KSZ8893MQL (MII).
>Einen der beiden PHYs auszutauschen ist leider nicht möglich,
>da beide eingebettet sind.

Glaube ich dir. Weil eben hast du noch etwas anderes beschrieben. Und 
zwar, dass du zwei (RG)MII Schnittstellen mit einem Twistedpair Kabel 
verbunden hast. Und das ist sportlich.

  >>RGMII und MII Schnittstellen [...]
  >>Ich habe bereits beide Schnittstellen über ein Ethernetkabel 
verbinden können

Ich schließe mich WK an und denke eine genaue(re) Beschreibung wäre gut.

von Roland E. (roland_91)


Lesenswert?

Okay, hätte ich evtl gleich machen sollen, auch wenn der Eingangspost 
dann Überlänge gehabt hätte ^^

Also an einem Ende ist folgendes Board mit dem KSZ9031, was ich über 
einen Host-PC per USB-to-RS232 seriell mit der Konsole steuere: 
http://www.phytec.de/produkt/single-board-computer/phyboard-mira/#download

Am anderen Ende befindet sich das hier mit dem 
Ethernet-Erweiterungsboard, auf dem der KSZ8893 ist: 
https://inova-semiconductors.de/products/tools/inap375t-apix2-development-kit.html

Beide Platinen verbinde ich über ein Cat-5-Ethernetkabel.
Wenn ich über meinen Host-PC per USB-to-RS232-Kabel auf das Target 
zugreife, kann ich über die Ethernet-Schnittstelle (ifconfig eth0) 
"pingen".

PS:
Im Manual von erstgenanntem Board steht zwar die Möglichkeit theoretisch 
eine RMII nutzen zu können, dazu muss man allerdings was umlöten und 
aufgrund der SMD-Bauweise ist mir dies nicht möglich ohne Harakiri zu 
spielen.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Vielleicht bin ich ja noch nicht ganz wach, aber so wie ich das grad' 
seh', wuerd' ich sagen: Ethernet ist Ethernet - und wie PHYs dann an 
ihren jeweiligen MAC angebunden sind, ist zur Ethernetseite hin voellig 
wurst.

Es gibt da keine verschiedenen Sorten wie z.B. Ethernet-MII und 
Ethernet-RGMII.
Die beiden sollten sich ueber das Ethernetkabel "sehen", d.h. link 
negotiation machen, sich dabei wahrscheinlich auf 100MBit/sec einigen 
und fertsch. Wenn auf beiden Geraeten irgendeine SW laeuft, die 
Ethernet/IP spricht, dann sollte ein Ping (und auch schon der ARP 
vorher) ganz normal funktionieren - OK, im selben IP-Adressbereich 
sollten sie schon sein, wenn kein Router dazwischen ist - also 
"vernuenftige" IP-Adressen und Netzmasken haben.

Ich hatte befuerchtet, dass du da irgendwie 2 PHYs mit ihren jeweiligen 
MII und RGMII Ports verbinden willst, nicht ueber ihre Ethernet-Ports. 
Oder nicht passende PHY zu MAC Kombinationen. Das was du machen willst, 
kommt mir vor, wie der "ganz normale" Betrieb. Der sollte schon 
funktionieren.

Gruss
WK

von Blechbieger (Gast)


Lesenswert?

Ich denke du hast den Aufbau einer Ethernetverbindung falsch verstanden. 
Der grundsätzliche Aufbau ist

CPU -- MAC -- PHY -- PHY -- MAC -- CPU

wobei CPU und MAC oft in einer MCU zusammengefasst sind oder im Fall von 
Switches sogar CPU, MAC und PHY zusammengefasst sind. MII und RGMII sind 
zwei von mehreren Varianten für die Verbindung MAC zu PHY und unabhängig 
von der PHY - PHY Verbindung. In deinem Fall ist die PHY - PHY 
Verbindung ein TP-Kabel auf dem 100BASE-T betrieben wird da es das 
schnellste ist das beide PHY unterstützen.

Deine Beschreibung war verwirrend da es eine nicht standard-konforme 
Möglichkeit gibt ohne PHY zwei MAC direkt zu verbinden die in deinem 
Fall tatsächlich nicht funktioniert hätte.

von Roland E. (roland_91)


Lesenswert?

Guten Morgen,
danke erstmal für die Hilfe und sorry für die Verwirrung. Der Gebrauch 
des Wortes PHY sowohl für die Bitübertragungsschicht als auch für die 
Chips verwirrt mich auch manchmal.

Nach dem Ausräumen des "Aneinandervorbeischreibens" frage ich nochmal um 
mich zu vergewissern:

Ich kann also bei oben genanntem Aufbau grundsätzlich auf meiner 
Boardseite Steuerdaten auf die Sendeleitungen TXD0..3 legen und das 
Ethernet-Erweiterungsboard empfängt diese?
Wenn das Autonegotiation positiv verläuft, muss ich mir um die 
Rahmenbedingungen wie Übertragungstakt oder -geschwindigkeit keinen Kopf 
machen ?
In meinem Fall würde man dann von einer "MAC to external PHY"-Verbindung 
sprechen, richtig?

von Michael X. (Firma: vyuxc) (der-michl)


Lesenswert?

Dein Phytec-Board hat ein 10/100/1000MBit Ethernet mit RJ45, richtig?
Das Inova-Board hat mit der Ethernetplatine 2x 100MBit Ethernet mit 
RJ45.

Warum interessierst du dich für MII/RGMII? Oder möchtest du einen 
seperaten PHY an das Inovaboard stricken?

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Roland E. schrieb:
> Ich kann also bei oben genanntem Aufbau grundsätzlich auf meiner
> Boardseite Steuerdaten auf die Sendeleitungen TXD0..3 legen und das
> Ethernet-Erweiterungsboard empfängt diese?
> Wenn das Autonegotiation positiv verläuft, muss ich mir um die
> Rahmenbedingungen wie Übertragungstakt oder -geschwindigkeit keinen Kopf
> machen ?

Also wenn du persoenlich handgedengelte Daten auf die Sendeleitungen 
TXD0..3 (und TXCTL) legst, dann sieht das eher duster aus. Diese Daten 
muessen schon "wie Ethernet aussehen", d.h. zB. erstmal einen 
Takteinlauf, dann SFD, die beiden MAC-Adressen, Payload, vielleicht 
Padding und zu guter Letzt auch noch die richtige CRC, gebildet ueber 
den Schlonz vorher.
Wenn z.B. die CRC nicht stimmt, dann wird das Paket von jedem 
Switch/jeder normalen Netzwerkkarte verworfen und taucht nichtmal im 
Wireshark eines direkt angeschlossenen PCs auf.
Sollten beide PHYs aus irgendwelchen Gruenden keinen Link 
zusammenbekommen, dann kann und sollte man das aus den Registern des 
PHYs via MDI Schnittstelle lesen und entsprechende Massnahmen 
einleiten...

Gruss
WK

von Roland E. (roland_91)


Lesenswert?

Danke, Dergute Weka.

Michael X. schrieb:
> Dein Phytec-Board hat ein 10/100/1000MBit Ethernet mit RJ45, richtig?
> Das Inova-Board hat mit der Ethernetplatine 2x 100MBit Ethernet mit
> RJ45.
>
> Warum interessierst du dich für MII/RGMII? Oder möchtest du einen
> seperaten PHY an das Inovaboard stricken?


Zur ersten Frage: ja.

Zur zweiten Frage:
Mein Plan besteht darin auf meinem Phytec-Board irgendwann ein Programm 
laufen zu lassen, das einen Display steuern soll. Das Display ist über 
eine HSD-Leitung mit dem APIX2-Transmitterboard verbunden. Auf das 
APIX2-Transmitterboard greife ich über das Ethernet-Extension-Board zu.

Zu guter Letzt verbinde ich mein Phytec-Board per CAT5-Leitung mit dem 
Ethernet-Ext.-Board und möchte gerne über diese Verbindung die Daten zur 
Ansteuerung des Displays verschicken.

Zur besseren Vorstellung: 
https://inova-semiconductors.de/products/tools/inap375t-apix2-development-kit.html


Deshalb interessiere ich mich genauestens für das (RG)MII, sozusagen als 
SPI-Ersatz.

von asdfasd (Gast)


Lesenswert?

Das [RG]MII ist ein Interface speziell für die Verbindung eines 
Ethernetcontrollers (MAC) mit dem Leitungstreiber (PHY, z.B. für Coax, 
Twisted Pair, Glasfaser, ...). Von dieser Verbindung bekommt die 
Software-/Anwendungsebene nichts mit (hat meist auch gar keinen direkten 
Zugriff darauf) - die spricht mit dem MAC.

Die Kommunikation der beiden Geräte (Phytec und APIX2) wird in Form von 
Ethernetpaketen stattfinden. Wie die aufgebaut sein müssen, um bestimmte 
Funktionen auf dem APIX-Board auszulösen, wirst du den Hersteller des 
Boards fragen müssen.

von Dergute W. (derguteweka)


Lesenswert?

Moin,

Roland E. schrieb:
> Zu guter Letzt verbinde ich mein Phytec-Board per CAT5-Leitung mit dem
> Ethernet-Ext.-Board und möchte gerne über diese Verbindung die Daten zur
> Ansteuerung des Displays verschicken.

Also hardwaremaessig eine ganz gewoehnliche Ethernetverbindung zwischen 
2 Boards, oder?

> Zur besseren Vorstellung:
> 
https://inova-semiconductors.de/products/tools/inap375t-apix2-development-kit.html
>
> Deshalb interessiere ich mich genauestens für das (RG)MII, sozusagen als
> SPI-Ersatz.

Du hast softwaremaessig da eigentlich nie was damit zu tun, ob die 
beiden MAC<->PHY Verbindungen RGMII oder MII oder sonstirgendeine Abart 
sind. Im Gegenteil - ohne dass du auf die Boardhardware schaust, nur mit 
reinen Softwaremitteln waere das sogar sehr schwierig rauszukriegen.

Wenn du dir keinen wahnsinnigen Wolf programmieren willst, wuerd' ich 
dir empfehlen, als SPI-Ersatz einfach das gute, alte IPv4 TCP oder UDP 
Unicast zu nehmen. Damit lassen sich prima ein paar Bytes von Board zu 
Board transportieren (und per SW auf ein Display weiterleiten). Denn - 
oh Wunder - genau dafuer wurden diese Protokolle naemlich gemacht.
Nackerte SPI Bytes ueber einen PHY zu transportieren, wuerd' ich nicht 
machen, denn PHYs bauen schon auf eine bestimmte Struktur der Daten, die 
reinkommen. Ohne Takteinlauf und SFD am Anfang des Pakets koennte der 
PHY Probleme kriegen. Die MACs vor/hinter den PHYs "rechnen" auch mit 
bestimmten Eigenschaften der Pakete, die da rein und rauskommen und sind 
"not amused", wenn das was ganz anderes ist.

Gruss
WK

von Roland E. (roland_91)


Lesenswert?

Ok, dann werde ich es auf diesen Weg einmal probieren. Danke für die 
Hilfe.

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.