Servus ich arbeite an einem Projekt der sich mit SyncE auseinandersetzt. Im Grunde wird ein P2P Gigabitlink mittels Kupfer(1000BaseT)/SFP(1000BaseX) aufgebaut. Durch ein externes Baustein wird das Systemtakt auf dem Slave mittels den Recovered Clock von einem PHY bzw. Spartan6 GTP zu dem Takt vom Master phasenstarr gekoppelt. Das funktioniert auch alles prima. Ziel das Projekt ist eine phassenstarres Aufbau zwischen Master und Slave zu gewährleisten. Der Delay bzw. Offset zwischen die Timestamp Zähler (mit 125MHz getaktet) auf beide Boards wird mittels PTP ermittelt. Und hier kommt das Problem. Durch den PHY wird der Link asymmetrisch und die PTP Ergebnisse sind fehlerbehaftet (bei der Berechnung mittels t1,t2,t3 und t4 wird immer ausgeganen dass der Link symmetrisch ist sprich RX und TX Delay sind gleich). Deswegen suche ich ein Weg wie ich die Asymmetrie vermessen kann. Zwei Use Cases sind vorhanden: 1000BaseT (problematisch): Der Assymetrie steckt im PHY (externes Baustein). Nach Linkaufbau kann ich auf dem Oszi sehen dass der Abstand zwischen den Master TX Trigger und den Slave RX Trigger sich fast immer verschiebt (Nanosekundenbereich max 20 NS was ich bis jetzt beobachten konnte). Der Abstand ist fest solange der Link nicht unterbrochen wird (ist auch gewünscht deswegen Phasenstarr das ganze). Würde ich den Link unterbrechen und neuaufbauen lassen dann kann es sein dass der TX/RX Abstand sich ändert. Eine Unsicherheit von bis zu 8 Nanosekunden wäre in Ordnung (ein Systemtakt) aber alles drüber ist schlecht... 1000BaseX (scheint zu laufen): Bei dieser Aufbau wird der PHY kurzgeschlossen und die Signale vom SFP Cage hängen direkt am Spartan6 GTP. Somit spielt sich der gesammte Delay/Durchlaufzeit in beide FPGAs und ist nachvollziebar. Der gemessene Delaywert schein zu passen. Als Referenz habe ich mir schon das "White Rabbit" Projekt angeschaut. Die schaffen sogar ein Sub-Nanosekunde Garantie! Dafür ist die Hardware was die verwenden so ziemlich kompliziert. Die nutzen eine bestimmte 8B10B K-Code um einen 125MHz Takt zu erzeugen und dann wird die Phase zwischen Takt und erzeugten Signal gemessen. Dadurch werden Parameter bestimmt die dann später in ein weiteren Verfahren reinfliessen und am Ende kommt das gewünschte Ergebnis. Das Ganze will ich mir eigentlich sparren und deswegen wollte ich fragen ob sich jemand schon mit was ähnliches beschäftigt hat und wie er/sie das ganze gelöst hat. FPGA: Xilinx Spartan6 150T, Xilinx ISE 14.7 PHY: Marvell 88E1322 Danke im Voraus. Gruss
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.