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!



