SP605 Gigabit Tranceiver falsche Line Rate

Gast #3019260
Lesenswert?

Hallo!

Ich versuche derzeit den Gigabit-Tranceiver des SP605 (Spartan 6) 
anzusteuern. Grundsätzlich funktioniert das Ganze auch schon. Allerdings 
entspricht die im Core Generator eingestellte Line Rate von 0,6 Gbps 
nicht der Datenrate, die ich am Ausgang des Tranceivers messe (dort 
messe ich 1 Gbps => "11110000" mit einer Frequenz von 125 MHz). Die 
Signale PLLLKDET0, RESETDONE0 und RESETDONE1 habe ich auf LEDs geführt 
(und alle haben den Wert 1). Das UG386 und die Doku zum GTP-Wizzard habe 
ich gelesen und suche nun schon eine ganze Weile den Fehler. Ich würde 
mich wirklich freuen wenn mir jemand weiterhelfen könnte.
Außerdem möchte ich die Line Rate zur Laufzeit ändern können. Dazu habe 
ich versucht den Dynamic Reconfiguration Port (DRP) zu nutzen. Leider 
funktioniert dies auch noch nicht. => siehe Anhang
Ich bin für jede Hilfe dankbar.
Angehängte Dateien:
#3020342
Lesenswert?

Bist du sicher, dass du das Clocking des MGT verstanden hast?
Zunächst mal muss der REF Clock über einen IBUFDS direkt an die 
REF-Clock Pins des entsprechenden MGT Tiles angeschlossen werden. Was da 
die 200MHz zu suchen haben, verstehe ich nicht. Siehe Seite 38ff im 
UG386.
Dann muss der GTPCLKOUT(0) oder (1) benutzt werden, um die Logik im FPGA 
und die TXUSERCLK, TXUSERCLK2 und RXUSERCLK zu speisen, auch da muss 
dann was spezielles dran, und zwar ein BUFIO2. Seite 72ff im UG386.
Dann muss man die Buffer solange im Reset halten, wie die USERCLKs noch 
nicht stabil anliegen. RESETDONE reicht da leider noch nicht.
Hast du das denn mal simuliert?
Gast #3020708
Lesenswert?

Erstmal Vielen Dank für die Hilfe! - Das Clocking scheine ich noch nicht 
verstanden zu haben...
Stellt denn der GTP-Wizzard nicht den Referenztakt für CLK00 und CLK01 
bereit? Mir ist irgendwie unklar wo ich den hernehmen soll. Das heißt 
was genau lege ich an den differentiellen Eingang des IBUFDS an? Muss 
das ein externer Referenztakt sein? Den Ausgang des IBUFDS führe ich 
dann auf CLK00 und CLK01.
GTPCLKOUT(0) führe ich jetzt auf einen BUFIO1, danach auf einen BUFG und 
danach an TXUSERCLK, richtig?

Simuliert habe ich das Ganze noch nicht. Das würde ich machen sobald 
alles korrekt verdrahtet ist.
Gast #3020810
Lesenswert?

Ok, ich habe mir den Referenztakt jetzt mit einer PLL erzeugt und kann 
nun auch die korrekte Line Rate messen. Der Einsatz eines externen 
Referenztaktes wäre aber trotzdem aufgrund der Jitter besser, oder?
#3020895
Lesenswert?

Naja, mit PLL und internem REF-Clock gehts auch bei niedrigen Datenraten 
so halbwegs. Normalerweise kommt der REF-Clock aber von extern von einem 
Low Jitter Quarzoszillator. Auf dem SP605 ist dafür ein 125MHz 
Oszillator drauf, der den SFP MGT und den PCIe Anschluss speisen kann. 
Und dann gibts noch die SMA Buchsen für die anderen beiden MGTs, also 
für den MGT an SMA und den vom FMC Stecker, soweit ich das in Erinnerung 
habe.
An welchem MGT bist du denn jetzt dran? Der passende MGTREFCLK Eingang 
geht direkt auf den IBUFDS. Der Rest sollte dann so klappen. Ich hab bei 
mir den MGTCLOCKOU(0) an den BUFIO2 und dann an TXUSERCLK und RXUSERCLK, 
und den /2 geteilten an TXUSERCLK2 und RXUSERCLK2, weil ich 16 Bit 
Datenpfad habe.
Gast #3021436
Lesenswert?

Ich bin an dem MGT mit den SMA-Buchsen und werde das Modul bei 
Gelegenheit auf die Nutzung des externen Taktes umbauen.
Wenn ich jetzt die Line Rate im Betrieb schnell verändern möchte, nehme 
ich ja den DRP des GTP. Kann ich nicht auch einfach die Referenzfrequenz 
des GTP ändern? Die erzeuge ich ja im Moment noch über eine PLL.
Gast #3022370
Lesenswert?

Funktioniert denn Deine Übertragungsstrecke (nicht nur der Sender) schon 
fehlerfrei?

schrammler schrieb:
> Wenn ich jetzt die Line Rate im Betrieb schnell verändern möchte, nehme
> ich ja den DRP des GTP. Kann ich nicht auch einfach die Referenzfrequenz
> des GTP ändern? Die erzeuge ich ja im Moment noch über eine PLL.
Möglicherweise mußt Du auch beides anpassen (DRP + PLL).

Warum willst Du die Line-Rate eigentlich dynamisch ändern? Was hängt 
denn an der anderen Seite dran? Dort muß die Line-Rate ja auch passen.

Duke
Gast #3022778
Lesenswert?

Ich muss die Daten lediglich ausgeben. Das heißt die seriellen Daten 
werden zum Schalten einer Elektronik benötigt. Dabei muss ich die 
Geschwindigkeit mit der ich die Daten ausgebe ändern können.
Gast #3023846
Lesenswert?

schrammler schrieb:
> Das heißt die seriellen Daten
> werden zum Schalten einer Elektronik benötigt. Dabei muss ich die
> Geschwindigkeit mit der ich die Daten ausgebe ändern können.
Um dedizierte FPGA-Elemente (DSP, MGT, BRAM etc.) zu missbrauchen, muß 
man ersstmal komplett verstanden haben, wie sie funktionieren :-)

schrammler schrieb:
> Dabei muss ich die
> Geschwindigkeit mit der ich die Daten ausgebe ändern können.
Nu laß Dir doch nicht alles aus der Nase ziehen. Im welchem Breich soll 
Deine Datenrate liegen?

In Abhängigkeit von der reference clock sind m.E. auch nur bestimmte 
line rates nutzbar. Wenn Du die line rate Frequenz durch die Breite des 
Datenpfades dividierst, kommst Du auf die Datenrate, mit der Du dem GTP 
die Daten übergeben mußt.

Hast Du das eigentlich schon mal simuliert? Wenn nicht, kannst Du das 
Oszi eigentlich gleich wieder ausschalten. BTW: Welche Bandbreite hat 
Dein Scope?

Duke
Gast #3028905
Lesenswert?

@Duke Scarring: Die Datenrate hab ich ja oben schon angegeben. ;)

Die Frage war eigentlich ob ich die Referenzfrequenz des MGT im Betrieb 
ändern kann und auf diese Weise die Line Rate leicht verstimme (nach 
oben und unten). Über die Parameter M, N1, N2 und D sind ja nur gröbere 
Änderungen der Line Rate möglich. Vielleicht geht das ganze auch 
prinzipiell nicht so wie ich mir das vorstelle (z.B. weil die 
Referenzfrequenz konstant sein muss).

An der Siulation arbeite ich gerade.

Mein Oszi hat 1 GHz und 4 GSa/s.
Gast #3028975
Lesenswert?

schrammler schrieb:
> Über die Parameter M, N1, N2 und D sind ja nur gröbere
> Änderungen der Line Rate möglich.
Das sind Parameter, die direkt auf eine PLL wirken. Wenn Du frei 
durchstimmen willst, brauchst Du wahrscheinlich eine durchstimmbare 
Referenzquelle.

> Vielleicht geht das ganze auch
> prinzipiell nicht so wie ich mir das vorstelle (z.B. weil die
> Referenzfrequenz konstant sein muss).
Kann sein, glaube ich aber nicht. Die PLL wird ja dafür genutzt, um 
intern die Takte für line-rate und Datenverarbeitung (z.B. line-rate/32) 
bereitzustellen.

schrammler schrieb:
> An der Siulation arbeite ich gerade.
Sehr gut. Im schlimmsten Fall gaugelt dir ein schlechtes 
Simulationsmodell was vor. Im besten Fall weißt Du gleich, woran Du 
bist.

> Mein Oszi hat 1 GHz und 4 GSa/s.
Da wird es aber schon knapp, um sich 2 GBit/s anzuschauen.

Duke

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