Forum: FPGA, VHDL & Co. Spartan-3E Starter Kit + DDR2


von Mathias (Gast)


Lesenswert?

Hallo!

Über DDR2 Ansteuerung wurde schon viel debattiert, ich möchte hier meine 
Fragen doch posten - auch auf die Gefahr hin auf Google verwiesen zu 
werden.

Hat jemand von euch schon mal einen DDR2 Controller für das Spartan-3E 
Starter Kit implementiert?

ISE hegt kein Interesse daran meine ODDR2s und IDDR2s zu platzieren. Ich 
verwende nur die Constraints aus dem UG230.
Der Scratch DDR2 Controller, verwendet wenigstens die ODDR2s.

Mir ist auch klar, dass ich einigen Hirnschmalz investieren müsste, um 
dann das Timing hinzukriegen. Bisherige Versuche gingen schief.

Das Plasma Projekt auf OpenCores verwendet, so wie ich das verstanden 
habe ein Taktsignal von nur 25 MHz (und ein 50MHz Signal). Dazu muss 
wohl dieses ominöse DLL deaktiviert sein.

Was also ist DLL (Delay Locked Loop??)? Wo finde ich bitte Timing 
Parameter wenn DLL deaktiviert ist?

Code hab ich jetzt mal keinen, da irgendwie gar nichts mehr 
funktioniert.

Freu mich auf rege Anteilnahme :)

von Christian R. (supachris)


Lesenswert?

Also um einen DCM (im Spartan 3e ist da eine DLL drin) wirst du nicht 
herumkommen. Für die DDR2 RAM Ansteuerung brauchst du 90° 
phasenverschobene Takte. Hast du denn mal den MIG aus dem Xilinx Core 
Generator benutzt?

von Mathias (Gast)


Lesenswert?

MIG hab ich noch nie benutzt.

Mit DLL meinte ich eigentlich die DLL Funktionalität des DDR2 Chips. 
Diese kann laut Plasma/OpenCores deaktiviert werden und der Chip dann 
mit 25 MHz betrieben werden. Dient wohl dazu den Chip möglichst einfach 
zu evaluieren oder so.
Mich hätte jetzt interessiert, woher die Infos kommen, dass der Chip 
z.B. auch mit 25 MHz (oder eben weit unter den 77MHz im normalen 
Betrieb) funktioniert und wie.

MIG funktioniert glaub ich nicht für Spartan-3E. Überhaupt ist diese 
DDR2 Sache auf dem Spartan-3E alles andere als bequem zu erledigen. Oder 
ist ein DDR2 Controller allgemein unbequem :)

Auf jeden Fall wäre es super, hätte jemand es irgendwie bewerkstelligt 
die ODDR2s und IDDR2s Primitiva zu integrieren, das würde mir das 
Gefitzle mit den steigenden und fallenden Flanken ersparen.

von Martin K (Gast)


Lesenswert?

Ich habe es nie gepackt, auf dem S3E ein DDR2-design zum Laufen zu 
bekommen. Meine damaligen Recherchen ergaben Berichte, laut derer des 
auf dem S3E-brd verbauten Micron RAM einen bug hat bzw es falsch 
angeschlossen sein könnte.

Ich habe das seinerzeit verworfen und nie wieder angefasst.

Falls Du was hinbekommst, bitte melden.

von Christian R. (supachris)


Lesenswert?

Der MIG kann zwar den Spartan 3e, aber nicht alle. Dummerweise wird der 
500E-FG320 nicht vom aktuellen MIG unterstützt. Habe aber schon öfters 
gelesen, dass da eh was nicht stimmt mit dem RAM.

von Mathias (Gast)


Lesenswert?

Oje :)

Und ich hatte mich schon darauf verlassen den RAM zu nutzen.
Solltet ihr zufällig wieder auf die Resourcen stoßen, die ihr gelesen 
habt, wäre es super, wenn ihr die hier posten könntet.

Ich werde versuchen, was diese Woche geht - werde aber nicht all zu 
lange damit rumspielen, weil ich so schon genug frustriert bin.

Besonders wertvoll wären die Infos, uber mögliche Bugs der Platine.

Schöne Grüße und besten Dank,
Mathias

von Josef G. (bome) Benutzerseite


Lesenswert?

Vielleicht ist in diesem Zusammenhang interessant
der letzte Beitrag (16.02.2012) in folgendem Thread:
Beitrag "Projekt 8bit-Rechner mit FPGA-Prototyp-Gerät"

von Duke Scarring (Gast)


Angehängte Dateien:

Lesenswert?

Mathias schrieb:
> Hat jemand von euch schon mal einen DDR2 Controller für das Spartan-3E
> Starter Kit implementiert?
Ich weiß ja nicht, welches Starter Kit Du hast.
Ich habe hier das "Spartan-3E FPGA Starter Kit Board" (siehe Bild) von 
Xilinx bzw. Digilent.

Dort ist ein DDR SDRAM verbaut (MT46V32M16), kein DDR2 SDRAM.
Ich habe den DDR SDRAM mit 100 MHz Busfrequenz zum kaufen bekommen.

Duke

von Mathias (Gast)


Lesenswert?

Habe genau dieses. Wow ich bin gerade total verblüfft - denke jetzt 
schon seit 4 Jahren da ist ein DDR2 Chip drauf :X

von Mathias (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Hier mal was ich so habe...

iddr.vhd ist nur eine Interfacedatei. Die beiden Signale si und so sind 
records und in iwb.vhd definiert.

Der Speicher ist Teil eines ganzen SoC.

Ich schreibe aufsteigende Zahlenfolgen in den Speicher, lese 
anschließend und vergleiche.

Zur Zeit spuckt er nur ab und an richtige Werte aus, von denen auch nur 
die oberen 16 bit stimmen.

Super wäre es, wenn wenigstens 16 bit korrekt gelesen und geschrieben 
wrden könnten. Das hatte auch zeitweise funktioniert. Nur ist das Ding 
irgendwie sehr anfällig gegenüber keinsten Änderungen. Genausogut 
könntee es auch ein Zufall gewesen sein :)

Ich versuche das Problem auf das Lesen oder Schreiben einzugrenzen. Das 
gelang mir bis jetzt nicht.

Es gibt hier auch eine fertige Implementierung von "das-labor.org"

https://www.das-labor.org/trac/browser/fpga/ddr

Ich habe es noch nicht getestet, aber es verwendet FDDRRSE Register, die 
mein Spartan-3E laut Libraries Guide mal nicht besitzt. Andererseits 
wurde es wohl eben auf einem S-3E Starter Kit getestet. Sehr seltsam...

von Mathias (Gast)


Angehängte Dateien:

Lesenswert?

Hallo!

Die aktuelle Implementierung läuft ohne DLL mit 25 MHz auf meinem 
kompletten System.
Evtl. ist sie von Nutzen für Euch.
Es gibt noch ein Problem mit den ODDR2s für das SD_DM Signal. Hier 
musste ich das Taktsignal direkt benutzen.

Aber es läuf ;)

Schöne Grüße,
Mathias

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.