Forum: FPGA, VHDL & Co. Stabilität von DCM/PLL-Takten in FPGAs


von Gorgonzola (Gast)


Lesenswert?

Ich muss ein DDR3-Interfac bauen und bin mir unschlüssig, wie es mit der 
Taktversorgung aussieht. Laut einigen verbalen Quellen soll es mitunter 
ungünstig sein, von einem niedrigen OSC-Takt hochzutakten, um auf die 
benötigte Frequenz zu kommen.

Kann da jemand der Experten etwas dazu sagen?

Wer hat ein DDR-Interfac betriebsfähig vorzuweisen und einen gering 
taktenden OSZ (<33 MHz) angeschlossen?

Ich muss "hoch" auf 667.

von hu bu (Gast)


Lesenswert?

Gehts hier um Xilinx?

Weiß zumindest nicht wie es bei anderen aussieht, aber Xilinx empfiehlt 
grundsätzlich gar keine DCM bei DDR2. DDR3 sollte wohl nicht einfacher 
sein.

Musste das leidlich erfahren: mit 50mhz -> dcm -> 200mhz für ddr2 hat 
nicht funktioniert, Synchronisierung war nicht in den Griff zu kriegen. 
Mit dem Tausch auf einen dedizierten 200mhz clock aus einer externen pll 
lief es dann auf Anhieb.

von Sigi (Gast)


Lesenswert?

Hi,

ich habe diesen Monat jeweils eine MIG-Componente (unter 14.1)
für Virtex4 und Virtex5 implementiert:

Virtex4 von 50MHz nach 100MHz (per progbaren Board-Oszilator)
und 100MHz nach 166MHz (per DCM), 100 nach 200MHz (per DCM) für
den Delay-Controller:  klappt problemlos.
(Sogar das Übertakten des 166-DDR auf 200MHz läuft längere
Zeit stabil).

Virtex5 von 100MHz nach 200MHz (per DCM): klappt ebenfalls
problemlos.

Zu Beginn hatte ich jeweils Probleme mit den ansteuernden
Komponenten aussenrum (FSMs waren zu langsam, wurden dann
aber optimiert, dann liefs ohne Probleme)


Verwendet wurde jeweils ein Digilent/Virtex4 und ein
NuHorizon/Virtex5-Demoboard.


Auf meinem alten Spartan3E-Board hatte ich mal per DCM
50MHz=>133MHz (oder 166MHz??, weiss nicht mehr was auf
dem Board verbaut ist). lief ebenfalls problemlos.


Kleiner 50MHz (z.B. 33MHz): habe leider kein Board
mit kleiner 50MHz, meisst nur 100MHz oder grösser.


Vieleicht hilft ja das Anlegen eines eigenen Bausteins
unter MIG, dann kann man alle Parameter ein wenig
relaxter gestalten. Manchmal hilft z.B. auf statt
SSTL2_II SSTL2_I (wird bei meinen V4-Board empfohlen).

Gruss

Sigi

von Gorgonzola (Gast)


Lesenswert?

Sigi schrieb:
> Ich habe
Danke schon mal für Deine Ausführungen.

> Kleiner 50MHz (z.B. 33MHz): habe leider kein Board
> mit kleiner 50MHz, meisst nur 100MHz oder grösser.
ok, so wurde es auch von einem FAE empfohlen.

> Vieleicht hilft ja das Anlegen eines eigenen Bausteins
> unter MIG,
Was meinst Du damit?

von Sigi (Gast)


Lesenswert?

>> Vieleicht hilft ja das Anlegen eines eigenen Bausteins
>> unter MIG,
>Was meinst Du damit?

Zuerst muss in MIG der SDRAM-Typ angegeben werden. Auf
der nächsten Seite wird dann eine Liste von Bausteinen
angezeigt. Ist der Gewünschte nicht darunter, kann ein
eigener Baustein angelegt werden (dazu: Alle Timing
Parameter raussuchen und in die Tabelle eintragen).

von Mister LG (Gast)


Lesenswert?

Meine Erfahrungen gehen bis 200MHz x2, daher kann ich das nicht 
verbindlich sagen.

Meines Erachtens ist es unproblematisch von z.B. 50 MHz per Faktor 4 auf 
200 hochzugehen, aber ein DDR3-Controller braucht die Signale so genau, 
dass er bis zu 1366 MHz Datentakt erzeugen kann. Soweit ich weiss, zieht 
sich der MIG das intern per eigener PLL auf die benötigte Frequenz hoch. 
Angenommen man fährt das DDR mit 233MHz, braucht er einen Takt von 933. 
Ich kann mir kaum vorstellen, dass man da mit 66 MHz und einem krummen 
Faktor hinkommt. Letztlich bedeutet das mehr Jitter in der Clock und 
somit weniger Timing Reserve.

von Michael (Gast)


Lesenswert?

Von den PLLs darf man nicht zuviel erwarten. Sieh Dir mal die 
Spezifikation des Jitters in dem VDL-wrapper der DCMs / PLLs an, die der 
Coregen erzeugt. Ausgehend von einem Eingangstakt von 50MHz ergibt sich 
bei einem Spartan schon ein ppJitter von +/- 300ns.

Bei den 200 MHz x 4 stehen nur 1.25ns/2 = 620 ps zur Verfügung. Der 
Jitter liegt da schon im Bereich des theoretischen Auges.

von berndl (Gast)


Lesenswert?

Michael schrieb:
> Ausgehend von einem Eingangstakt von 50MHz ergibt sich
> bei einem Spartan schon ein ppJitter von +/- 300ns.

Schwachsinn! Der PLL-Jitter ist << 1ns!

von Jan M. (mueschel)


Lesenswert?

berndl schrieb:
> Michael schrieb:
>> Ausgehend von einem Eingangstakt von 50MHz ergibt sich
>> bei einem Spartan schon ein ppJitter von +/- 300ns.
> Schwachsinn! Der PLL-Jitter ist << 1ns!
War nur ein kleiner Tippfehler: ps statt ns. 300ps Jitter bei 680ps pro 
Bit ist schon ein ziemliches Problem.

von Robert K. (Firma: Medizintechnik) (robident)


Lesenswert?

Frage so zwischendurch: wie liesse sich der Jitter beim FPGA reduzieren?

Bessere Oszillatorqualität? Was nimmt man da?
Oder generell höhere Taktrate?

von Martin (Gast)


Lesenswert?

Ich benutze z.B. einen 200MHz LVDS Quarzoszillator. Diesen kann man dann 
auch sehr gut für die Delay Einheiten benutzen.

von Dipl.-Ing. (TH) (Gast)


Lesenswert?

Ich empfehle in jedem Fall eine dual ended source. Single ended 
produziert statistisch im Schnitt 40% mehr jitter, wegen der Wurzel 2 - 
Beziehung - je nach Qualität des Layouts und was da so reinspukt oder 
bounced.

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.