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?
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?
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.
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.
statt direkt zu verbinden sollte man es wohl besser so machen,.. http://www.dacomwest.de/pdf/connecting2devices.pdf lg Markus
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.