Forum: FPGA, VHDL & Co. Ethernet Pakete empfangen(MII)


von Waldemar M. (waldi3141)


Angehängte Dateien:

Lesenswert?

Hallo,
ich bins wieder mit meinem Arty Board :),
mit dem Code von HamsterWorks(ArtyEthernetTX) bin ich in der Lage 
100Mb/s  Daten an den PC zu senden. (PC<->ArtyBoard direkt mit LAN-Kabel 
verbunden)

Problem ist, dass kontinuierlich Daten am PC ankommen und ich gern vom 
PC aus , den Datenstrom ein- und auszuschalten würde. Dazu muss das 
Board in der Lage sein, Pakete zu empfangen mit den 
Ein/Ausschaltbefehlen(so meine Denkweise).

Nun bin ich gerade dabei, den Code von hier:
Beitrag "MII Synchronisierung, Ethernet"
zum Laufen zu kriegen.

Mit Labview broadcaste ich UDP Pakete, leider kommt nichts am Board an.
Habe die Register "rx_data_o",  "rx_dv_o" und auch das Signal vom PHY 
"phy_txd" auf Ausgänge geführt, sehe aber keine Daten.

Hätte da einer eine Idee?
Bin frisch auf dem Gebiet, wahrscheinlich übersehe ich etwas ganz 
banales :S

von Duke Scarring (Gast)


Lesenswert?

Waldemar M. schrieb:
> Habe die Register "rx_data_o",  "rx_dv_o" und auch das Signal vom PHY
> "phy_txd" auf Ausgänge geführt, sehe aber keine Daten.
Wie schaust Du Dir die Daten an?
Mit einem Multimeter?

Bist Du sicher, das die Daten gesendet werden?
Blinkt die TX-LED am Host-PC?

Duke

von Waldemar M. (waldi3141)


Lesenswert?

Duke Scarring schrieb:

> Wie schaust Du Dir die Daten an?
> Mit einem Multimeter?
Achso sorry, mit einem Oszilloskop

> Bist Du sicher, das die Daten gesendet werden?
Ja, die Daten werden schon verschickt denke ich, konnte die Pakete 
nämlich selbst empfangen via UDP tester software ( paket an IP: 
192.168.100.255 geschickt)
> Blinkt die TX-LED am Host-PC?
Nee , die LED blinkt nicht :(

.. Stutzig macht mich, dass vom FPGA selbst ja keine IP oder MAC-Adresse 
mitgeteilt werden hmm .... vielleicht wird deshalb kein Paket an das 
Board geschickt ;/

: Bearbeitet durch User
von S. R. (svenska)


Lesenswert?

Du möchtest ein Ethernet-Paket verschicken, also muss es an eine 
MAC-Adresse adressiert werden. IP-Pakete werden aber an IP-Adressen 
verschickt.

Entweder, du implementierst ARP im FPGA oder du musst vorher in der 
ARP-Tabelle des PC manuell die MAC-Adresse des FPGA einer IP zuweisen. 
Dann gehen Pakete an diese IP auch an den FPGA raus.

von Dennis X. (Gast)


Lesenswert?

S. R. schrieb:
> Entweder, du implementierst ARP im FPGA oder du musst vorher in der
> ARP-Tabelle des PC manuell die MAC-Adresse des FPGA einer IP zuweisen.
> Dann gehen Pakete an diese IP auch an den FPGA raus.

MAC Broad/Multicast mit normalen Ethernet Paketen. Wenn du IP willst 
bist du eine Ebene höher, wenn du es wirklich brauchst musst es wohl mit 
ARP machen wie Sven schon geschrieben hat.

von Lattice User (Gast)


Lesenswert?

S. R. schrieb:

>
> oder du musst vorher in der
> ARP-Tabelle des PC manuell die MAC-Adresse des FPGA einer IP zuweisen.
> Dann gehen Pakete an diese IP auch an den FPGA raus.


Windows 7: (admin Befehlszeile)
1
arp -s 157.55.85.212 00-aa-00-63-c6-09

Linux: (als root)
1
arp -s 157.55.85.212 00:aa:00:63:c6:09

Der Eintrag ist permanent bis zum reboot
(weitere Optionen siehe arp -?)

von Waldemar M. (waldi3141)


Lesenswert?

Hallo nochmal, ich habe das mit dem Code erst mal auf Eis gelegt.
Wenn ich den (UDP-Tx)Code von Hamsterworks im Projekt einbinde, kann ich 
merkwürdigerweise Pakete empfangen, die vom PC aus gebroadcastet werden. 
Sonst erhalte ich(allein mit dem verlinkten Code oben) keine Daten an 
den 4 Rx-Pins vom PHY. Da muss also wohl schon gewisse Kommunikation 
stattfinden, obwohl der Code von Hamsterworks keine Verarbeitung für das 
empfangen der Pakete hat.(bin noch ziemlich grün hinter den Ohren :))

Naja, letztendlich handhabe ich es so, dass ich die rohen Pakete 
empfange und wenn diese eine bestimmte Zeichenfolge beinhalten, schaltet 
ich den Datenstrom an/aus.

Danke für die Antworten!, bringen immer neue Ideen :)

von Duke Scarring (Gast)


Lesenswert?

Waldemar M. schrieb:
> kann ich
> merkwürdigerweise Pakete empfangen, die vom PC aus gebroadcastet werden.
Na klar, dann kennt ja der Host auch die MAC-Adresse und aktualisiert 
sein ARP-Tabelle...

Nochmal: Für eine minimale UDP-Kommunikation muß man auf ARP-Request 
reagieren. Und zum Debuggen ist es hilfreich auch auf ICMP 
(PING)-Request zu antworten. Danach läuft auch UDP zufriedenstellend.

Duke

von Waldemar M. (waldi3141)


Lesenswert?

Duke Scarring schrieb:
> Na klar, dann kennt ja der Host auch die MAC-Adresse und aktualisiert
> sein ARP-Tabelle...
Leider steht die MAC-Adresse/IP-Adresse dort(arp Tabelle) nicht drin, 
nachdem das Board 'programmiert' und die 'Kommunikation' aufgebaut 
wurde.
Das ist auch noch so ein Problem, da ich das board momentan nur mit 
Broadcasting erreichen kann

von S. R. (svenska)


Lesenswert?

Waldemar M. schrieb:
> Leider steht die MAC-Adresse/IP-Adresse dort(arp Tabelle) nicht drin,
> nachdem das Board 'programmiert' und die 'Kommunikation' aufgebaut
> wurde.

Ein Broadcast geht an alle und wird nicht bestätigt.

Logisch, dass dein Board nicht in der ARP-Tabelle auftaucht. Woher soll 
dein Computer denn wissen, dass es überhaupt existiert und zuhört? Es 
reagiert ja nicht auf ARP-Anfragen!

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.