Minimales Ethernetpaket

Gast #5740202
Lesenswert?

Hallo,

ich möchte zwischen zwei FPGAs im 2MHz Zyklus Daten übertragen. Von der 
Störfestigkeit und den Leitungslängen würde 100MBit Ethernet gut gehen. 
Pro Paket habe ich also 50 Bitzeiten. Es müssen nur 24 Bit übertragen 
werden.

Geht das bei einer Punkt zu Punkt Verbindung?

Die Preamble müsste meines Wissens verkürzt werden, macht das jeder PHY 
mit?

Welche Nachteile hat man durch die verkürzte Preamble?

Danke

Klaus
Gast #5740485
Lesenswert?

Klaus schrieb:
> ich möchte zwischen zwei FPGAs im 2MHz Zyklus Daten übertragen. Von der
> Störfestigkeit und den Leitungslängen würde 100MBit Ethernet gut gehen.
> Pro Paket habe ich also 50 Bitzeiten. Es müssen nur 24 Bit übertragen
> werden.

Die Präambel und vor allem der geforderte Interframe-Gap fressen dir die 
Zeit weg. Eine kurze CRC Summe würde ich auch noch dazurechnen.

> Geht das bei einer Punkt zu Punkt Verbindung?

Punkt zu Punkt ohne Ethernet ist wohl machbar. Habe das mal für 80 kHz 
bzw. 3 us Latenz gemacht. Brauchte gut Zeit bis das alles geplant und 
auf diese Latenz zugeschnitten war.
Beitrag #5740605 wurde von einem Moderator gelöscht.
#5740704
Lesenswert?

Nun, viele FPGAs haben Serdes gleich schon eingebaut. Mit nach oben 
offenen Geschwindigkeiten, je nach chip. Am Einfachsten waer's wenn 
beide FPGAs mit demselben Clock laufen. Mit einem Ethernet PHY hast du 
je einen externen Clock, der dir aufgezwungen wird, mit einem Rx/Tx 
Buffer auf jeder Seite. Waehrend das native Serdes auf einem internen 
Clock laufen kann, und man nur einen buffer zum synchronisieren 
benoetigt. Wenn beide FPGAs synchron laufen braucht's nicht mal einen 
Bynchronisierbuffer.
Die Blocklaenge ist nach oben eigentlich nicht begrenzt.
Gast #5740710
Lesenswert?

Klaus schrieb:
> Was ist ein PHY anderes als ein Serdes?

Ja, genau. Und eigentlich muss Dich auch das
noch nichteinmal interesieren, Du verschickst
auf Deiner Ebene nur Bytes, Ethernet-Frames
kommen erst auf höherer Protokollebene.

Ich hatte das auch mal gemacht und bin wie
folgt vorgegangen: z.B. 2 Bits werden für
den Typ (Command/Data/etc.) vorgesehen, der
Rest beschreibt dann ein Kommando/Datum.
Beispiel: [01+Start][10+6Bit-Data]..[01+Stop]
(evtl. noch ein Sync-Kommando wie [01+Sync]
oder [00+Sync], ein CheckSum-Kommando wie
[11+Checksum] etc.). Für Deine 24 Bits
sind das dann mindestens 1+4+1=6 Bytes
erforderlich.
Gast #5740856
Lesenswert?

Genau die CERN-Sachen (white rabbit), die teils bei ohwr.org zu finden 
sind, hätte ich jetzt auch mal angesehen.
Ansonsten bleibt noch SATA oder SDI als Lösung mit minderem Overhead.
Für Übertragung von Samplewerten am Bandbreitenlimit hätte ich sonst 
noch eine Standard-Lösung (UDP/RTP) parat, da werden selbstverständlich 
die Werte in Pakete aggregiert.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren