Forum: FPGA, VHDL & Co. SP605 Gigabit Tranceiver falsche Line Rate


von schrammler (Gast)


Angehängte Dateien:

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.

von Duke Scarring (Gast)


Lesenswert?

Schau Dir mal den Takt, mit dem das Ding wirklich läuft auf einem 
Oszilloskop an:
1
    TILE0_GTPCLKOUT0_OUT  =>      open,    --Referenztakt
2
    TILE0_GTPCLKOUT1_OUT  =>      open,    --Referenztakt

Duke

von schrammler (Gast)


Angehängte Dateien:

Lesenswert?

gelb ist TILE0_GTPCLKOUT0_OUT mit 41,7 MHz und
grün ist TILE0_TXN0_OUT mit 125 MHz

von Christian R. (supachris)


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?

von schrammler (Gast)


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.

von schrammler (Gast)


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?

von Christian R. (supachris)


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.

von schrammler (Gast)


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.

von Christian R. (supachris)


Lesenswert?

Hm, keine Ahnung, vom DRP lass ich lieber die Finger, das ist bei mir 
zum Glück nicht nötig. Mit 8B/10B, Commas, Alignment und Elastic Buffer 
hab ich mir genügend graue Haare geholt.

von schrammler (Gast)


Lesenswert?

Ok, trotzdem Vielen Dank für die Hilfe ;)

von Duke Scarring (Gast)


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

von schrammler (Gast)


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.

von Christian R. (supachris)


Lesenswert?

Und dafür brauchts den MGT? Deine 00001111 hatte mich vorhin schon 
gewundert. Wäre da nicht der OSERDES besser geeignet? Oder musst du bis 
3,125GBit/s ausgeben?

von schrammler (Gast)


Lesenswert?

Naja, die Datenrate sollte so um die 2 GBit/s liegen. Kann man denn die 
Datenrate der OSERDES auch im Betrieb verändern?

von Christian R. (supachris)


Lesenswert?

2GBit/s schaffen die OSERDES nicht, nur 1080MBit/s maximal. Datenrate 
ist natürlich änderbar, über die Frequenz, das sind ja nicht weiter als 
schnelle Schieberegister.

von Duke Scarring (Gast)


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

von Duke Scarring (Gast)


Angehängte Dateien:

Lesenswert?

Mift Screenshot vergessen...

von schrammler (Gast)


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.

von Duke Scarring (Gast)


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

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
Noch kein Account? Hier anmelden.