www.mikrocontroller.net

Forum: FPGA, VHDL & Co. RMII Schnittstelle


Autor: Sebastian (Gast)
Datum:

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

Autor: Peter (Gast)
Datum:

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

Autor: Sebastian (Gast)
Datum:

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

Autor: Peter (Gast)
Datum:

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

Autor: Markit (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
statt direkt zu verbinden sollte man es wohl besser so machen,..

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

lg Markus

Autor: Fabian S. (jacky2k)
Datum:

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

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]
  • [vhdl]VHDL-Code[/vhdl]
  • [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.