Ich beschäftige mich derzeit mit den GTP Transceivern bei Xilinx, weil wir da demnächst ein System damit bauen wollen. Ich hab da mal eine grundsätzliche Frage: Wenn ich keine Nutzdaten zu übertragen habe, muss ich ja Idle-Symbole senden. Soweit klar. Kann ich die unbegrenzt lange senden, oder kommt dann der Empfänger auch aus dem Tritt? Die konkrete Anwendung wird so aussehen, dass es eine Board to Board Verbindung zwischen einem Virtex 6 LXT und mehreren Spartan 6 LXT geben wird. Alle GTP werden mit dem gleichen Ref-Clock aus dem gleichen Quarzoszillator versorgt. Außerdem werden beide Seiten über FIFOs entkoppelt und der Lese-Takt am Empfänger ist gleich dem Schreib-Takt am Sender. Laut dem Xilinx-Paper "High Speed Serial I/O made simple" brauche ich dann keine Clock correction. Nur über die maximale Anzahl der Idles finde ich da nichts. In der Anwendung wird über die eine Richtung nur wenig übertragen (Steuerdaten) und in der Rückrichtung die Messdaten. Kennt sich da jemand aus? Ich wollte eigentlich im Oktober zum entsprechenden Workshop bei PLC2, aber der findet wahrscheinlich nicht statt, weil sich sonst keiner angemeldet hat bei denen.... Vielen Dank für Antworten.
Christian R. schrieb: > Wenn ich keine Nutzdaten zu übertragen habe, muss ich ja Idle-Symbole > senden. Mit dem GTP habe ich noch nicht gearbeitet, aber mit ähnlichen Serializern. Die IDLE-Symbole sendet der Serializer automatisch, da musst Du nichts tun. Du übergibts einfach keine Nutzdaten. > Kann ich die unbegrenzt lange senden, oder kommt > dann der Empfänger auch aus dem Tritt? Du kannst diese unbegrenzt lange senden, das ist ja der Sinn der IDLE Symbole. Dies dienen dazu Sender und Receiver auf der seriellen Verbindung synchron zu halten.
Aha. Ja, 100% bin ich durch die Doku noch nicht durch, ob der dir nun automatisch sendet, oder nicht. Dachte mir schon, dass das unbegrenzt geht, hab aber nichts dazu gefunden. Vielen Dank schon mal.
Christian R. schrieb: > ob der dir nun automatisch sendet, oder nicht. Das mit dem automatisch senden muss sein. Auf der seriellen Leitung darf der Datenstrom nicht aufhören, weil der Receiver aus dem Flankenübergängen den Takt rekonstruiert. Deshalb werden aus den 8 Bit Nutzdaten 10 Bit Symbole erzeugt, diese sind so konstruiert, dass sie a) genügend 0-1 und 1-0 Übergänge aufweisen b) keinen Gleichanteil haben Wenn keine Nutzdaten zu übertragen sind, müssen deshalb IDLE (SYNC) Symbole gesendet werden. Man brauch sich in einer Anwendung eigentlich um die IDLE Symbole nicht zu kümmern. Diese sind in 2 Fällen wichtig : - Beim Aufbau der Verbindung erkennt der Receiver die IDLE oder SYNC Symbole und ermittelt die 10 Bit Grenzen. Dazu braucht er eine Sequenz von mehreren aufeinanderfolgenden (5 soweit ich weiss) IDLE Symbolen. Normalerweise, wenn die Verbindung gut ist, kommen Sender und Receiver nicht aus dem Tritt. Man kann den Receiver aber so einstellen, dass er sich bein Auftreten einer IDLE sequenz wieder re-synchronisiert. - Wenn der Schreibtakt der Nutzdaten auf der Senderseite und der Lesetakt der Nutzdaten auf der Empängerseite nicht übereinstimmen, dann würden diese langsam auseinanderdriften. Deshalb weiss der Empfänger, dass er IDLE Symbole wegschmeißen, bzw. einfügen darf. In diesem Fall muss man garantieren, dass zwischen den Nutzdatenpaketen ausreichen IDLE Symbole kommen.
Ja genau, so hab ich das auch verstanden. 8B10B und durchgehender Datenstrom ist logisch und klar. Mir gehts eher um die konkrete Realisierung mit dem GTP-Wrapper. Ich hab nochmal in den GTP Wrapper geschaut, wahrscheinlich muss ich die selbst senden. Ist aber offenbar ganz einfach. Es gibt am TX einen Eingang TX_CHARISK, damit werden die Eingangsdaten in die K-Charakter übertragen. Dazu muss man offenbar an den Dateneingängen für Idle (K29.7) 11111101 anlegen und eben das TX_CHARISK aktiv setzen, damit K29.7 über die Leitung geht. Über das Erst-Sync Problem hab ich auch nachgedacht. Die Frage ist, ob der sich da kümmert, oder ob ich im Core Generator die Sequenz selber einstellen muss. Wenn ich die Clock Correction deaktiviere (weil ich ja wie gesagt die selbe Taktquelle für Sender und Empfänger habe) kann ich nämlich keine Komma-Sequenzen mehr angeben. Die Komma-Alignment-Geschichte will aber K28.5 oder K28.1 haben, also Start of Frame. Ich wollte eigentlich so einfach wie möglich die Übertragung gestalten, bisher ist es ein Parallel-Interface mit Data und Active. Die nachfolgende Logik dekodiert selbst, was das ist. Ich bräuchte also keine Frames. Ob der GTP da akzeptiert, wenn ich als Idle immer das 28.5 sende? Da müsste der sich ja ständig ausrichten können und wenn dann Daten kommen, müssten die stimmen, oder? Das grundsätzliche Prinzip istz mir klar, wie gesagt mir gehts um die GTP-Realisierung.
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.