Hallo, nach langem suchen in diesem forum melde ich mich mit dem folgenden problem; ich benutze spartan 3e board mit dem XC3S500E-4fg320 FPGA und SMSC LAN83C185 PHY. ich moechte die daten von meinem pc an das board senden und andersrum. bisher hatte ich leider keinen erfolg. ich habe es erstmal mit dem tri state ethernet mac core von xilinx und dazugehoerigen example_design versucht wobei ich wireshark als sniffer benutze. es hat nicht geklappt, mittlerweile ist die evaluation licence ausgelaufen und ich kann keinen bitstream mehr generieren. jetzt will ich einfach ohne mac core feststellen ob ueberhaupt etwas an FPGA ankommt. das LED an dem ethernet connector blinkt zwar, wenn ich es vom pc pinge aber ich empfange gar nichts an den rxd ports. ich habe ein einfaches vhdl modul geschrieben, in dem ich in kurzen zeitabstaenden die aenderung an den data ports durch die LED anzeigen am board beobachte. es passiert gar nichts! ich bekomme immerhin das rx_clk (25 MHz) signal an das board. ich habe alle speed optionen der netzwerkkarte ausprobiert(10Mbps, 100Mbps, auto-negotiation). ich habe auch versucht ein udp paket an pc zu senden, auch ohne erfolg. ich moechte noch erwaehnen, dass ich auf jeden fall alle im datasheet vorgegebenen anweisungen bezueglich der clocks, ports, timing, enables usw beachte. langsam werde ich verzweifelt. daher bitte ich alle, die auf diesem board geschafft haben, auf die einfachste weise PHY zu testen, mir den hilfreichen ratschlag zu geben. danke im voraus timscho
Stelle mal am FPGA alle Pins, dei mit dem PHY verbunden sind auf INPUT oder Tristate. Dann mal mit dem Oszi an das RX-DV-Singal ran und schauen, ob sich da was tut. Wenn nicht, könnte das sehr viel Ursachen haben. Die meisten PHYs können in ihren Grundeinstellungen durch sogenannte "Strapping-Options" eingestellt werden. Das heisst, dass der PHY im Reset den Pegel an bestimmten Pins liest und entsprechend ein paar Konfigurationen vornimmt. Eine der Möglichen Konfigurationen wäre z.B. der "Isolate Mode", der dieses Verhalten erklären könnte. Oder "Auto Negotiation" ist im PHY deaktiviert oder, oder, oder. Les dir das Datenblatt vom PHY genau durch und prüfe jede einzelne Strapping Option, ob die vielleicht das Problem verursachen könnte. Wenn ja, dann Pulle die Signale entsprechend. Wenn sie auf den PFGA geführt sind, dann kannst das ja recht einfach durch konfiguration der entsprechenden Pullups und Pulldowns an den FPGA-Pins machen.
Schrotty, vielen Dank fuer deine Antwort. Es hat sich inzwischen erledigt. Ich hab leider keinen Oszi zur Hand, sonst haette ich es direkt so gemacht. Ich konnte eine Aenderung an den rx_data Pins feststellen, als ich es mit dem doppelten clock (50 MHz) getaktet habe. Das war dann eine Riesenfreude, da ich nun sicher war, dass HW-maessig alles in Ordung war. Inzwischen hab ich auch ein Design implementiert, das die UDP Paketten an PC schickt, was ich mit Wireshark beoabachten kann. Die Netzwerkkarte ist dabei auf Full duplex eingestellt. Ich moechte noch sagen, dass mich der Versuch die Kommunikation mit dem Xilinx EMAC core und seinem example_design herzustellen zu viel Zeit gekostet hat und letzendlich unnoetig war. Fuer solche simple ethernet Kommunikation (UDP) wuerde ich allen raten, sich ein eigenes design zu entwerfen (oder eins vonm net runterladen und anpassen), bevor man kostbare Zeit auf Implementation von EMAC core und das ganze drumherum verschwendet. Timscho
Welches Design anstelle eines EMAC cores von Xilinx kannst du denn z.B. empfehlen?
Hallo Jan, ich habe im Forum von www.xilinx.com ein vhdl UDP-Sender fuer Spartan 3e gefunden, der in sich die EMAC Funktionalitaet beinhaltet. Mit Platformspezifischen Aenderungen (MAC Adresse, Source- und Destination IP) funktioniert das Design einwandfrei. Probiers mal aus, wenn du Fragen hast, melde dich. Timscho
Hallo Timscho, bei dem Design ist sind ja maximal 10Mb/s möglich. Hast du es vielleicht hinbekommen, dass auch 100Mb/s möglich sind? In der Beschreibung des IP Stacks der dort verwendet wird steht, dass es nicht möglich ist. Aber die verwendete Hardware ist ja auch eine andere soweit ich das überblicken kann. Jan
Nein, ich habe nicht versucht die 100Mb/s Geschwindigkeit zu erreichen.
Meine Netzwerkkarte habe ich auch auf 10Mb/s Full-Duplex eingestellt.
> "Aber die verwendete Hardware ist ja auch eine andere soweit ich das
überblicken kann."
Ich verstehe nicht, welche HW du hier vergleichst.
Das ist ne Page über das Projekt von den Autoren: http://www.itee.uq.edu.au/~peters/xsvboard/stack/stack.htm#_Toc507573143 (...)The protocol stack was designed and built on an XSV-300 board (version 1.0) from the XESS Corp Ganz unten steht halt dass es nicht möglich wäre, das Design unter 100Mb7s zu betreiben. Du benutzt ja das spartan 3e mit nem xc3s500e-.... Die phy, die bem spartan integriert ist, kann ja auch 100Mb/s. Warum sollte es also nicht möglich sein. Ich möchte nur Daten empfangen, ohne Rücksichtnahme auf irgendein Protokoll. Auch das Ethernet Protokoll (mac source, destination,...) soll zunächst nicht verarbeitet werden. Kannst dir vorstellen ob das gehen würden? Das würd mich schon mal interessieren. Du kannst das nicht vielleicht mal ausprobieren ob er das leistet:)? Hab das Board selbst nicht.
Ja, die PHY auf meinem board koennte schon 100Mb/s bringen. Das habe ich auch mit dieser FPGA Konfiguration versucht, indem ich die Netzwerkkarte auf 100Mb/s eingestellt hatte, hat aber nicht funktioniert. Ich konnte keine packets am Wireshark empfangen. Ich habe auch nicht weiter erforscht, aus welchem Grund dieses Design bei 100Mb/s nicht funktioniert. Ich nehme an, die benutzte Taktgescwindigkeit kommt der PHY Geschwindigkeitsanforderung irgendwie nicht nach. Ich habe das, wie gesagt, nicht ins Detail analysiert, die 10Mb/s reichen mir momentan schon. Es gibt allerdings noch ein Design (beigefuegt), das fuer 100Mb/s tauglich sein sollte. Das habe ich aber nicht getestet. Es wuerde mich aber sehr interessieren, wie du es findest. Gruss Timscho
>"Ich möchte nur Daten empfangen, ohne Rücksichtnahme auf
irgendein Protokoll. Auch das Ethernet Protokoll (mac source,
destination,...) soll zunächst nicht verarbeitet werden. Kannst dir
vorstellen ob das gehen würden? Das würd mich schon mal interessieren."
Das Problem liegt ja auch darin, dass man im Wireshark keine Daten
empfaengt, solange das nicht in einem festen Format(Protokoll) gesendet
worden ist. Man kann nicht an PHY eine Reihe willkuerlicher Bits senden
und diese dann am anderen Ende der Ethernetverbindung empfangen.
Zum mehr als zum Testen taugt der udpSender aber auch nicht, hier im Forum findet man übrigens auch den zugehörigen Empfänger. Ist halt nur eine minimale MAC Teilmenge implementiert. Da fehlt alles angefangen von der Kollisionserkennung bis zum hin zu den control frames
Ich habe auch am Anfang gesagt, dass ich nur eine einfache Ethernet Kommunikation(UDP Protokoll) in einer Richtung (von FPGA zu PC) herstellen moechte, und dafuer reicht dieses Design vollkomm. Kollisionserkennung faellt da sowieso aus, da es nur einen Sender und einen Empfaenger gibt, es kann ja nichts kollidieren. Kontrolmechanismen wie control frames gibt es bei UDP in der Regel nicht, dafuer solltest du vielleicht lieber TCP/IP verwenden.
Ja, die MAC-Hardware im Ethernet-Controler ignoriert immer alle ungültigen Frames. Ich möchte mit dem fpga empfangen, nicht mit dem PC. Schade, bevor ich mir das Board bestell würd ich schon gern genau wissen ob er die Geschwindigkeit schafft..
Mit dem VHDL Schnippsel habe ich damals auch angefangen. Ist aber schnell witzlos, wenn man nicht sicherstellen kann, dass die Packete auch angekommen sind. Außerdem wollte ich das damals an einen Switch hängen ;-) Aber dann kann man auch einfach den Xilinx Core nutzen, der funktioniert eigentlich ohne Probleme.
Hallo Jan, egal ob du von FPGA zu PC sendest onder andersrum, es muessen schon die gueltigen Frames sein, damit du was empfaengst. Sowohl Spartan 3e als auch dazugehoerige PHY schaffen die 100Mb/s, man muss nur die passende HW-Konfiguration haben ;)
Ja, dieser MAC würde ungültige Frames bei der Destination-MAC Prüfung rausschmeißen.. "die passende Hardwarekonfiguration":) Ja, hast es denn jetzt vielleichtschon mal ausprobiert:)? Wo hast das Board eig bestellt?
Wie schon oben gesagt; - "udpSender" laeuft nicht bei 100Mb/s - "udpSender100" sollte laufen, aber ich habe es nicht ausprobiert Mein board ist von Digilent; www.digilentinc.com
Timscho schrieb: >>"Ich möchte nur Daten empfangen, ohne Rücksichtnahme auf > irgendein Protokoll. Auch das Ethernet Protokoll (mac source, > destination,...) soll zunächst nicht verarbeitet werden. Kannst dir > vorstellen ob das gehen würden? Das würd mich schon mal interessieren." > > Das Problem liegt ja auch darin, dass man im Wireshark keine Daten > empfaengt, solange das nicht in einem festen Format(Protokoll) gesendet > worden ist. Man kann nicht an PHY eine Reihe willkuerlicher Bits senden > und diese dann am anderen Ende der Ethernetverbindung empfangen. Das entsprechende Format ist doch das Ethernet Packet. Es geht mit dem Preamble los. Dann Start,Destination Address und dann Source Address .... Das ist doch im Source code enthalten. Ich meine Wireshark müsste es anzeigen. Der Quellcode udpSender100 ist fehlerhaft. Der eingehende Takt ist nicht verdrahtet. Tiefer bin ich nicht eingestiegen.
>Das entsprechende Format ist doch das Ethernet Packet. >Es geht mit dem Preamble los. Dann Start,Destination Address und dann >Source Address .... > Das ist doch im Source code enthalten. Ja aber du hast es doch durch deine platformspezifischen Daten ersetzt..? > Der eingehende Takt ist nicht verdrahtet. Was meinst du jetzt genau damit? 50Hz board clock..?
Hallo Rene, ich hoffe du hast auch die source-IP und destination-IP i "UDPSender" geaendert bzw durch eigene IPs ersetzt?
Timscho schrieb: > ich hoffe du hast auch die source-IP und destination-IP i "UDPSender" > geaendert bzw durch eigene IPs ersetzt? Ich habe nichts weiter geändert. Ich habe das Spartan 3AN Board mit der PHY LAN8700. Wenn ich auf der seriellen Konfigurationsschnittstelle was hinein schiebe, geht die Phy in Autodetect und LED für Link geht am PC und an der Phy am FPGA an. Danach will der PC herausfinden welches neuer Netzwerkteilnehmer verbunden ist. Diese Pakete sehe ich im Wireshark. Genauer habe ich es noch nicht untersucht. Wie muss TX_EN zum Signal verschoben sein? Ist diese Signal einen Takt vor den Datenleitungen bereits aktiv?
Hallo Timscho, ich habe nochmal eine Frage zu der Ethernet PHY auf deinem Board. Welche Einstellungen musstest du vornehmen, um mit der PHY zu arbeiten? Wenn ich z.B. das Board (Spartan 3A) mit meinem PC verbinde, steht bei meinen Netzwerkeinstellungen: "Netzerkkabel wurde entfernt." Außerdem leuchtet auch keine "Link-LED" oder ähnliches. Viele Grüße Jan
Eigentlich solltest du nur die netzwerkkarte auf full-duplex 10Mbps einstellen.
Das ist es nicht. Wie initialisierst du den PHY Baustein konkret? Im Datenblatt steht ja, dass nRST für 100us auf low gezogen werden muss. Das mach ich auch. Autonegotiation wird defaultmäßig ja auch durchgeführt.
Das mit dem reset konnte ich ja gar nicht durchfuehren, da auf dem Spartan 3e board kein reset signal vom FPGA zu PHY geleitet ist. Das macht das board selbst, denke ich. Was bekomst du eigentlcih wenn du "ipconfig" eingibst?
Ok es liegt am reset. Habe eine timing vorgabe im Datenblatt missverstanden. Wenn die PHY läuft, und das Kabel erkannt wurde zeigt mir ipconfig bzw. ipconfig /all alle möglichen Infos an. MAC, IP, ... Wenn die PHY nicht läuft, dann nur die MAC und Beschreibung etc.
Yo, dann hast du es! Das freut mich. :) Jetzt nur noch den UDPSender/Empfaenger schnell implementieren und dann hast du deine paketten am laufen :)
Ja, danke auf jeden Fall! Gut, dass hier auch Leute sind, die auch was konstruktives schreiben anstatt sofort "kuck ins Datenblatt". Das Xilinx Forum kannst du vergessen!
Es freut mich sehr, wenn ich dir helfen konnte. Aus eigener erfahrung kann ich sagen, dass man hier die loesungen fuer typische fragen aus dem gebiet recht schnell findet, und fuer die anwendungsspezifischen probleme gibt es meistens einige hilfsbereite und kompetente nutzer. Angesichts der xilinx-forum und thema fpga - ethernet kann ich dich auf einen nutzer namens "alexgiul" hinweisen. Er hat schon viel erfahrung auf diesem gebiet, die er in seinen zahlreichen beitraegen weiter vermittelt. Timscho
Hallo zusammen, ich bin sehr sehr neu in der fpga Welt und daher im Voraus bitte entschuldigt meine eher dummen Fragen. Ich bin auf den Thread gestoßen, weil Ich eine möglichst einfache Lösung brauche, um Daten von dem FPGA zum PC zu übertragen. Ich habe mittlerweile viel darüber gelesen, aber kapiere leider immer noch nict alles. Ist der UdpSender ne Art Alternative zu dem Xilinx IP Core TEMAC? Der TEMAC ist doch nur MAC Implementierung, oder? D.h. man müsste noch selber MII Implementieren, PHY (mein Chip ist Broadcom BCM5221), Datenaufbereitung (Frame encapsulation, checksum, usw), FIFO zum Frames puffern. Stimmt das so? Ich habe eine Virtex4. Kann ich den UdpSender trotzdem hernehmen oder ist er nur für Spartan Boards? Benötige Ich unbedingt auch eine MicroBlaze bzw. Powerpc Implementierung? Habe bis jetzt gar nicht damit gearbeitet und wäre mir lieber wenn ich vorerst darauf verzichten könnte. Kennt einer von Euch diese Lösung http://www.fpga4fun.com/10BASE-T0.html und kann sie mir evtl empfehlen oder abraten? Gibt es evtl eine vorhandene Lösung bei der Ich direkt meine Rohdaten übergebe und der rest wird erledigt? Ist wahrscheinlich zu viel verlangt aber da die Datenübertragung nicht der Fokus meiner Arbeit ist, würde Ich gerne keine Monate lang darin investieren. Danke im Voraus und nochmals entschuldigt meine super Anfängerfragen, Rone
Hallo rone! Ein neuer Thread wäre ganz gut gewesen, anyway. > Kennt einer von Euch diese Lösung > http://www.fpga4fun.com/10BASE-T0.html und kann sie mir evtl empfehlen > oder abraten? Ich hab das mal kurz überflogen. Sieht nicht schlecht aus. Die Lösung braucht immerhin keinen Microblaze oder sonstigen Prozessor. Allerdings habe ich bei solchen komplexen Sachen wie Ethernet gern einen Prozessor zur Verfügung. Das macht das Entwickeln einfacher. Zum TEMAC: Wenn ich das richtig sehe, ist da ein MII-Interface mit dabei. Duke
Hallo Ihr! Ich versuche eine ethernet-Verbindung zwischen den PC und eine Espartan 3E herzustellen. Ich bin so verzweifelt wie Timscho am Anfang. So wenn einer mir helfen koennte, waere Euch wirklich sehr dankbar! Ich habe Probleme mit der Angaben der IP und der MAC-Adressen.So weit ich weiss, die IP Adresse kann man selber vergeben aber nicht die MAC-Adresse.Stimmt das? Wie kann ich erfahren, wo diese MAC-Adresse bei meiner Espartan3E ist? Ausserdem haette ich eine weitere Frage: Ist es noetig irdgeneinen router zwischen PC und Espartan3E zu haben, oder kann man sie einfach direkt mit dem Kabel verbinden? Viele Gruesse! Artur
Artur schrieb: > Ich habe Probleme mit der Angaben der IP und der MAC-Adressen.So weit > ich weiss, die IP Adresse kann man selber vergeben aber nicht die > MAC-Adresse.Stimmt das? Nein. Auch die MAC-Adresse ist konfigurierbar. > Wie kann ich erfahren, wo diese MAC-Adresse bei > meiner Espartan3E ist? Welchen Ethernet-Core verwendest Du? Einen von OpenCores oder den aus dem EDK? Gaisler hat in der GRLib auch einen drin. Dort kann man die MAC über Register setzen. > Ausserdem haette ich eine weitere Frage: Ist es noetig irdgeneinen > router zwischen PC und Espartan3E zu haben, oder kann man sie einfach > direkt mit dem Kabel verbinden? Ich habe hier eine Direktverbindung mit einem Crossoverkabel. Duke
Hallo, und danke schon mal für die Antwot. Ich hätte noch eine was zum fragen. Duke, wenn die MII Schnittstelle schon dabei ist, was müsste man noch selber implementieren? PHY tut man nur konfigurieren, oder? Bietet die GRLib eine komplette Lösung? Sprich mit Frame Erstellung, MII und allem drum dran? Kann Ich GRLib und udpsender auch für Virtex4 hernehmen? Vielen Dank und Grüße, Rone
rone schrieb: > was müsste man noch > selber implementieren? Ich hab da nichts weiter dran implementiert. Hardwaremäßig war grlib/greth ready to go. Der Zugriff vom Prozessor aus erfolgt über den AMBA-Bus. > PHY tut man nur konfigurieren, oder? Ja. Denke schon. > Bietet die > GRLib eine komplette Lösung? Sprich mit Frame Erstellung, MII und allem > drum dran? Hmm. Da hab ich nicht geguckt. Das Frame wird ja quasi in Software zusammengebaut. Es ist ein Beispiel dabei, um die Ethernetgeschwindigkeit zu testen. Mit dem MII mußt Du nicht wirklich was machen. Mal kurz einen Reset zur Sicherheit und dann kann man dort ein paar Parameter auslesen. > Kann Ich GRLib und udpsender auch für Virtex4 hernehmen? Ich denke schon. Duke
Guten Tag! Die Ethernet-Crossover-Kabel und hatte versucht, aber selbst ich erkenne, dass ein Gerät, und der Port nicht leuchtet LED. Das Programm ich benutze, ist der Xilinx ISE, ich UdpSender Datei versuchte, war die einzige Veränderung, machte ich die IP-Adresse und MAC-Adresse, nicht der UCF-Datei nicht ändern, weil die Karte die ich habe ist der Spartan 3E und passt gut. Keine Notwendigkeit zu ergänzen, oder was ist falsch mache. Vielen Dank im Voraus für Ihre Hilfe! Artur
Ich habe mal die UPD100 Version überflogen. Da ist mir aufgefallen das es eine gigantische State Machine mit wenn ich das richtig in Erinnerung habe 57 States. Dies würde ich ganze einfach machen, indem ich die ganze Initialisierung in einen ROM oder BlockRAM schreibe. Bei Xilinx kann man dies einfach mit einem Texteditor machen und dann die Initialisierungsdatei in den BlockRAM kopieren. Dadurch kann man sich die Masse an Multiplexern einsparren die alle Durchlaufzeit benötigen und somit das ganze recht langsam wird.
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.