Forum: FPGA, VHDL & Co. DDR SDRAM


von Sebastian (Gast)


Lesenswert?

Hallo,
ich besitze ein Spartan3E und wage mich gerade an die Ansteuerung eines 
DDR SDRAM's(Micron512Mb).Anschließend muss ich in den RAM geschriebene
Werte in irgendeine Weise auf dem Rechner ausgeben(als Hex oder
Textdatei mit RS232 o.ä.).
Nun merke ich gerade beim Durchlesen der Datenblätter des RAM's,das die 
Umsetzung in VHDL keine so einfache Sache wird.Ohne Referenzen oder
Beispielprojekte sehe ich da schwarz.
Vielleicht gibt es ja jemanden der Lust hat mir zu helfen.Wäre sehr
dankbar dafür.



von Christoph Kessler (db1uq) (Gast)


Lesenswert?

Da gibts ein Projekt auf Opencores, DDR SDRAM Controller:
http://www.opencores.org/projects.cgi/web/ddr_sdr/overview

von Joerg (Gast)


Lesenswert?

Hallo,

ich habe auch das S3E Board, und habe in dem Zusammenhang einen eigenen
DDR Controller geschrieben.

Er bietet nach "innen" einen 64Bit Wishbone Bus mit 66MHz, nach aussen
entprechend 133MHz DDR bei 16 Bit Breite.

Dokumentation fehlt noch, ebenso wie ein kleiner, einfacher Test-Case 
und ein paar optimierungen. Aber er funktioniert zusammen mit Leon3 in 
einem kompletten SoC auf dem Board.

Siehe:

https://roulette.das-labor.org/trac/browser/vhdl/Tests-S3E/soc_leon3/wb_ddr


  j.


von Mike (Gast)


Lesenswert?

Hier hat jemand den OC Controller für das Spartan Board angepasst:

http://www.xdr.com/dash/fpga/

Dann gibt es in der Xilinx Memory Corner noch einen Controller.

von Holger M. (nezaya)


Lesenswert?

Moin

An der Ansteuerung des DDR SDRAM's auf dem Spartan3E Kit, bin ich auch 
gerade dran.

Prinzipiell hatte ich vor den LA von Sump [1], auf das Spartan 3E Kit zu 
portieren. Allerdings komme ich im Moment aus Zeitgründen nicht wirklich 
vorran.

Bei Xilinx gibt es nach Anmeldung einen Memory Interface Generator. Ich 
hab ihn mir zwar noch nicht näher angesehen, aber angeblich soll der ein 
Interface zur einfachen Ansteuerung des SDRAM erzeugen können.

Holger M.

[1] 100/200 MHz Logikanalysator (Spartan 3, SRAM)
Beitrag "100/200 MHz Logikanalysator (Spartan 3, SRAM)"

von Joerg (Gast)


Lesenswert?

Hallo,

Den MIG von Xilinx habe ich ausprobiert. Habe den Code weder verstanden, 
noch ihn zum funktionieren gebracht -- habe es wirklich versucht.
Man beachte auch 
http://groups.google.com/group/comp.arch.fpga/browse_thread/thread/5b7b9ad71c8dcebe/75b7258c3fa9587e?lnk=st&q=Scott+Schlachter+DDR&rnum=1#75b7258c3fa9587e


Habe meinen eigenen Controller mal aus dem SoC-Design rausoperiert und 
einem Testcase hinzugetan: 
https://roulette.das-labor.org/trac/wiki/wb_ddr

von Mike (Gast)


Lesenswert?

Zumindest bis MIG 1.5 gibt es mit dem Spartan3e Board Probleme (der 
generierte Code läuft nicht ohne Anpassungen). Version 1.6 soll 
zumindest Verilog-Code erzeugen können. Für VHDL gibt es deshalb ein 
Archiv das  vorgenerierte und angepasste Controller enthält. Einfach mal 
nach "s3e_starter_revd_mig_ddr[1].zip" googeln. Es gibt hier im Forum 
auch einen Thread darüber.

von Marko (Gast)


Lesenswert?

Hi, hat zwar nicht direkt mit dem Thema zu tun,
aber ich hab gester nen uralten EDO-RAM am Mega16
in Betrieb genommen. SIMM30, 2 Ports des µC wurden
verwendet, 1MB RAM.
Es wird zwar in den Dokus immer von Refresh im ms
Bereich geschrieben, aber hab durch Versuche ermittelt,
das man ohne Probleme bzw. Datenverluste mehrere Sekunden
warten kann ohne das ein Bit verloren geht.
5-6 Sekunden sind auf alle Fälle drin.
Ansteuerung mäßig schwierig, Kosten lachhaft.
Hab 27 Bausteine für € 1,99 erstanden.

von Loki (Gast)


Lesenswert?

@Jörg: Diese links zur "labor..." führen bei mir zu keiner URL. (?)

von Joerg (Gast)


Lesenswert?

@Loki:
  Verstehe ich nicht - die Links funktionieren bei mir einbahnfrei.
  Was passiert denn bei dir? Timeout, oder Fehler vom Server?

von Loki (Gast)


Lesenswert?

Es besteht ein Problem mit dem Sicherheitszertifikat der Website.

Das Sicherheitszertifikat dieser Website wurde nicht von einer 
vertrauenswürdigen Zertifizierungsstelle ausgestellt.

Die Sicherheitszertifikatprobleme deuten eventuell auf den Versuch hin, 
Sie auszutricksen bzw. Daten die Sie an den Server gesendet haben 
abzufangen.
  Es wird empfohlen, dass Sie die Webseite schließen und nicht zu dieser 
Website wechseln.

Wenn Sie zu dieser durch einen Link weitergeleitet wurden, dann 
überprüfen Sie die Websiteadresse in der Adressleiste, um 
sicherzustellen, dass dies die erwartete Adresse ist.
Wenn Sie zu Websites wie https://example.com wechseln, versuchen Sie 
"www" zu der Adresse hinzuzufügen (https://www.example.com).
Geben Sie keine persönlichen Informationen auf der Website an, wenn Sie 
diesen Fehler ignorieren und den Vorgang fortsetzen.

Weitere Informationen erhalten Sie unter "Zertifikatfehler" in der 
Internet Explorer-Hilfe.

von Joerg (Gast)


Lesenswert?

Da hat der IE schon recht -- der Server benutzt https, hat aber kein 
teures, offizielles Zertifikat dem Microsoft vertraut.
Mein Zertifikat kommt von  CaCert.org; die beglaubigen, dass der Rechner 
meiner ist -- nur vertraut der IE per default den CaCert Leuten nicht, 
daher die Warnung.


Du kannst an der Stelle ganz beruhigt OK klicken und weitermachen, die 
Verbindung wird sogar auch verschluesselt.

  j.


 * Siehe auch http://www.ccc.de/https/



von fpga (Gast)


Lesenswert?

Ich habe versucht den code von Joerg 
(https://roulette.das-labor.org/trac/browser/vhdl/Tests-S3E/soc_leon3/wb_ddr) 
in mein s3e-starter zu bringen.
Doch leider bekomme ich beim "implement design" immer folgende 
Fehlermeldung:
"ERROR:LIT:421 - DCM symbol "ctrl0/dcm0/dcm0" (output 
signal=ctrl0/dcm0/clk0u)"

online Hilfe von xilinx:
http://www.xilinx.com/xlnx/xil_ans_display.jsp?iLanguageID=1&iCountryID=1&getPagePath=23004

Da steht:"You can disable this error message by setting the environment 
variable XIL_MAP_ALLOW_VARIABLE_CLKOUT_PHASE_SHIFT" <-- wie geht das 
genau?

kennt jemand eine Lösung für dieses problem?

von Joerg (Gast)


Lesenswert?

Hallo,

Interessant; ich wusste nicht dass sich die S3E DCMs von den S3 DCMs 
unterscheiden -- mir ist nur aufgefallen, dass das Overflow Statusbit 
nie gesetzt wurde. Meine ISE Versionen haben auch nie ein Wort darueber 
verloren...

Also unter Linux setzt du die Environment Variable mit  "export 
XIL_MAP_ALLOW_VARIABLE_CLKOUT_PHASE_SHIFT=1" bevor du ISE startest.
Bei Windows weiss ich es nicht genau -- glaube das ist in den 
Programm-Eigenschaften: also rechts Klick auf das ISE Icon und dort 
suchen.

Es gibt aber noch eine Alternative: Bei dem S3E Board brauchst du den 
Variablen-Phase-Shift gar nicht -- ich habe die richtige 
Phasenverschiebung schon eingetragen. Du kannst also in DDRDCM.vhd in 
Zeile 93 CLKOUT_PHASE_SHIFT => "VARIABLE" auf "FIXED" umstellen.


  j.

von Frager (Gast)


Lesenswert?

Gibt es den doanload noch? Bei mir kommt ein Seitenfehler ...

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.