Forum: FPGA, VHDL & Co. RMII Schnittstelle


von Sebastian (Gast)


Lesenswert?

Hallo,

Ich hab hier einen FPGA an den zwei Phys für Ethernet über RMII 
angeschlossen sind. Nun möchte ich Daten unverändert durch die Phys 
leiten, also von Phy1 nach Phy2 und umgekehrt. Leider gibt es momentan 
Probleme, da die Daten aus irgendeinem Grund verändert werden. Manchmal 
ändert sich auch die Geschwindigkeit der Phys von 10 auf 100Mbps und 
umgekehrt, ohne irgendeinen Grund.

Für die Datenübertragung habe ich den zwei Bit breiten Bus der beiden 
Schnittstellen verbunden. Phy1_RX[1..0] mit Phy2_TX[1..0] und 
Phy2_RX[1..0] mit Phy1_TX[1..0].

Das DataValid (DV) Signal der Phy1 gebe ich direkt an den TX Enable Pin 
(tx_en) von Phy2. Das gleiche gilt für das dv Signal von Phy 2. Bei RMII 
muss der Clock anscheinend intern vorgegeben werden. Daher lege ich an 
die tx_clk Pins beider Phys das interne 50MHz Signal an.

Meine Vermutung ist, dass man das DV Signal nicht direkt auf das tx_en 
geben darf. Aber ich weis da nicht was ich anders machen kann. Außerdem 
habe ich jetzt auch keine FIFOs in der Datenleitung eingebaut, da ja 
alles mit dem gleichen Tackt von 50MHz läuft, den ich intern vorgebe.

Wo könnte das Problem liegen?

von Peter (Gast)


Lesenswert?

Welche Phys verwendest Du, bzw wie werden die Phys konfiguriert? Hast Du 
Zugriff auf deren MDIO-Interfaces. Ansonsten gibt es in der Regel einige 
Pins am Phy, über die mit Pullups/Pulldown ein Bootstrap-Konfiguration 
definiert wird, die mit dem Reset eingelesen wird.

Das ganze könnte aber auch ein Problem mit einer Autonegotation-Prozedur 
sein, die in einen instabielen Zustand fällt. Es ist eigentlich nicht 
vorgesehen, dass Phys direct miteinander verbunden werden, ohne MAC. Was 
hast LAN-seitig angeschlossen? Kannst Du diese Interfaces fest auf 
100BaseTX-FD oder 10BaseT-HD festnageln und es nochmals probieren?

von Sebastian (Gast)


Lesenswert?

Die Phys sind von Micrel, Typ KS8721BL/SL. Zugriff auf die 
Managementinterfaces der Phys habe ich momentan nicht. Zum testen 
verwende ich momentan mehrere Netzwerkkarten in meinem Rechner. Die 
beiden Karten, die über das FPGA Board verbunden sind, habe ich beide 
auf 100Mbps Full Duplex festgesetzt. Beide Karten melden momentan 
"Eingeschränkte oder keine Konektivität", nachdem einige Sekunden lang 
versucht wurde eine Verbindung herzustellen. An den Phys am FPGA Board 
leuchten die grünen LEDs für Link.

Was meinst du, müsste ich zwischen Ein- und Ausgabe der Daten bauen, 
damit das ordentlich zusammenspiel? Ich weis, dass man die Daten bei 
einer MII Schnittstelle empfangen kann, diese dann jedoch in einem FIFO 
zwischenspeichern muss und das dann über den tx Ausgang der Pins 
absenden kann. Da es bei der RMII ja nur einen Takt gibt, benötigt man 
doch auch keinen FIFO.

von Peter (Gast)


Lesenswert?

Ich habe bisher nur das MII Interface verwendet. Als Phy brauche benutze 
ich in der Regel den DP83848 von National.

Passt gemäss Datenblatt das RMII Transmsit Timing auch wirklich auf's 
RMII Receive Timing? Insbesondere das RX_DV aufs TX-EN? Was geht mit dem 
CRS-Signal? Auch wenn es beim FD-Mode keine Kollisionen geben sollte, 
ich würde mal ne Oszi-Sonde hinhalten.

Üblicherweise schaltet man mindestens einen Switch (oder notfalls auch 
nur einen HUB) zwischen zwei Phys. Auch Mediaconverter z.B. von 
100BaseTX auf 100BaseFX enthalten einen 2-Port Switch, obwohl man 
theoretisch auch einfach zwei Phys zusammnschalten könnte.

von Markit (Gast)


Lesenswert?

statt direkt zu verbinden sollte man es wohl besser so machen,..

http://www.dacomwest.de/pdf/connecting2devices.pdf

lg Markus

von Fabian S. (jacky2k)


Lesenswert?

Hallo,
da ich evtl. etwas ähnlich machen möchte würde mich interessieren ob du 
inzwischen eine Lösung für das Problem hast.
Und was Markus vorgeschlagen hat ist doch quasi auf der falschen Seite 
des PHYs?

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.