Xilinx GTP Training

OP #7802627
Lesenswert?

Hallo zusammen und frohes neues Jahr,

ich habe mir auf einem eigenen Board mit Artix7 einen Transceiver Kanal auf einen SFP gelegt.

Dann habe ich das Beispieldesign mit Datengenerator und Datenckecker erzeugt, in mein Design kopiert, SFP-Modul eingesteckt, Loopback mit Glas gemacht und siehe da, das was gesendet wird, kommt auch wieder an.

Jetzt habe ich das mal umgebaut damit ich da selber eigene Daten senden und empfangen kann. Quasi Datengenerator und Datenckecker rausgeworfen und selber Code geschrieben der das Training am Anfang nach dem Reset macht. Dann noch einen TX und einen RX Datenbus mit jeweils 32 Bit Daten und 4 Bit Valid Signalen. Meine TX Logik setzt jetzt immer das K28.5 Comma wenn ein Byte nicht valide ist.

Ganz am Anfang nach dem Reset lege ich auf TX nur Comma und warte bis ich auf RX die Comma korrekt empfange. Danach lasse ich auch Nutzerdaten zu.

Es ist immer so, dass ich die Comma korrekt empfange. K28.5 ist auch eindeutig und kann glaube ich nicht durch schieben von Bits zu einem anderen validen Comma werden. Aber manchmal, da bekomme ich nicht alle Daten. Ein Bild zeigt das, da bekomme ich bei den letzten 32 Bits zwar die unteren 3 Bytes korrekt, aber das Obere nicht, stattdessen ist dort ein Comma.

Zum Erzeugen der Daten verwende ich die TX User Clock, die verwende ich auch für den ILA der die TX Daten anguckt und die RX User Clock verwende ich eben für alles was RX macht und auch den zugehörigen ILA.

Habt ihr Erklärungen oder eine Empfehlung wie man das Training richtig machen sollte?

Edith meint: Das 8B10B macht der IP, ich lege also nur x"bc" für ein Byte an und sage, dass das ein K-Code werden soll und es wird auch einer.

Ich weiß nur nicht ob das für das Training Sinn macht dauerhaft nur den einen K-Code zu schicken. Eigentlich ja, weil so das Word-Alignment funktioniert.

Der Link läuft mit 1,25 GBit und machte mit dem Code vom Beispieldesign (da werden Daten aus einem BRAM geschickt und überprüft) keine Bitfehler. Nur will ich eben eigene Pakete schicken können.

Vielen Dank!

Angehängte Dateien:
OP #7802721
Lesenswert?

Und es geht fragend weiter:

Beim Comma Alignment habe ich eine Comma Mask. Als Default steht da 0001111111 drinnen. Bedeutet das, dass für die Commaerkennung nur die Bits angeguckt werden, die dort in der Maske gesetzt sind? Sprich wenn jetzt hier die 7 Bits matchen, dann sagt die Commaerkennung, dass da ein Comma vorhanden ist. Warum sind da nur 7 Bits der Default wenn bei 8b10b doch 10 Bits ein Wort ergeben?

Bei der Clock correction gibt es eine Sequenz die man einstellen kann und eine Periodicity of the CC sequence die als Default bei 5000 steht. Was bedeutet das? Muss ich genau alle 5000 Bytes die definierte Sequenz einfügen?

Kann ich den GTP auch ohne das alles verwenden? Also nur als SerDes? Der macht dann hoffentlich das Bitalignment, aber klar, 8b10b muss ich selber machen und auch das Wordalignment mit Bitslip muss ich mir bauen. Ist aber nicht so irre kompliziert.

Angehängte Dateien:
#7803070
Lesenswert?

Ethernet also, ok, dann geht kein Aurora. Und von dem Ethernet willst du möglichst viel selbst machen und keine IP-Cores verwenden? Deinen Anwendungsfall würde soweit ich das überblicke die 1G Base-X PCS von Xilinx abdecken bzw. hatte ich vor vielen Jahren mal Teile der PCS von opencores genommen. Wenn du dann noch den Xilinx-Mac nimmst, brauchst du "nur" noch IP/UDP machen.

#7805560
Lesenswert?

Gustl B. schrieb:

Ich weiß nur nicht ob das für das Training Sinn macht dauerhaft nur den einen K-Code zu schicken. Eigentlich ja, weil so das Word-Alignment funktioniert.

Ich bin mir da nicht so sicher. Für die PLL wäre es vmtl. günstig auch mal was anderes zu schicken, da beim K28.5 keine 'schnellen' Bits dabei sind (linker Teil im Bild).

Angehängte Dateien:
OP #7805761
Lesenswert?

Na gut, dafür gibt es doch Dual-Clock-FIFOs. So einen habe ich im TX Pfad vor dem Xilinx-GTP und im RX Pfad hinter dem GTP. Sieht aktuell gut aus.

Etwas nervig ist, wenn der Datenpfad mehere Bytes breit ist, aber nicht jedes Byte darin valide ist. Kann man aber auch mit umgehen ...

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