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.
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.
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
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?
>> 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).
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 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.
Michael schrieb: > Ausgehend von einem Eingangstakt von 50MHz ergibt sich > bei einem Spartan schon ein ppJitter von +/- 300ns. Schwachsinn! Der PLL-Jitter ist << 1ns!
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.
Frage so zwischendurch: wie liesse sich der Jitter beim FPGA reduzieren? Bessere Oszillatorqualität? Was nimmt man da? Oder generell höhere Taktrate?
Ich benutze z.B. einen 200MHz LVDS Quarzoszillator. Diesen kann man dann auch sehr gut für die Delay Einheiten benutzen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.