Forum: FPGA, VHDL & Co. SDRAM Controller


von Chris (Gast)


Lesenswert?

Hallo,
ich brauch für mein neues Projekt etwas mehr und schnelleren Ram. Da 
wollt ich mich an Drams ranwagen. Da Drams nicht mehr so einfach zu 
bekommen sind und auch nciht die größten sind, wollte ich SDrams 
verwenden. Zum Beispiel den MT48LC8M8A2 von Micron. Die Ansteuerung 
wollte ich nicht in den µC packen. Ich hätte lieber nen Interface, das 
die SDrams für meinen µC wie ein Sram aussehen lässt. Ich glaube nämlich 
nicht, dass ich es schaffe das RefreshTiming noch mit im µC 
unterzubringen. Außerdem wäre es so denke ich auch etwas sauberer. Mein 
Problem ist nur, ich bin nicht der beste in Verilog. Ich beherrsche zwar 
die Grundlagen, aber einen wirklich funktionierenden SDram Controller 
bekomme ich glaube ich nicht hin, bzw hab ihn bisher noch nicht zum 
funktionieren gebracht. Deswegen wollte ich fragen, ob es evtl jemand 
schon ein gutes Projekt kennt. Ich kenne die Sourcen von XESS und 
OpenCores, habe sie aber noch nicht zum synthetisieren gebracht. 
Vorallem die von OpenCores machen starke Probleme und passen auch nicht 
ganz zu dem was ich suche. Gut wäre es, wenn das in einem CPLD (XC9...) 
von Xilinx oder so untergebracht werden könnte.
Kennt jemand vielleicht noch gute andere Projekte mit SDram Controllern, 
die sich synthetisieren lassen?
Vielen dank für etwaige Antworten
Gruß
Chris

von Chris (Gast)


Lesenswert?

Ouch, sorry hatte OpenCores falsch eingestellt. Er hatte mir nur die als 
fertig gekennzeichneten Projekte angezeigt. Dafür könnt ich mich echt 
hauen. Habe jetzt zwei Projekte gefunden, die vielversprechend aussehen. 
Werde sie mal unter die Lupe nehmen. Falls jemand dennoch irgendwelche 
Vorschläge hat, immer her damit :)
Die beiden Projekte die ich meine:
http://www.opencores.org/projects.cgi/web/sdram/overview

http://www.opencores.org/projects.cgi/web/mem_ctrl/overview

von Chris (Gast)


Lesenswert?

Ok ich habe mich mit beiden Projekten etwas befasst und habe 
festgestellt, dass ich keines von beiden zum laufen bekomme. Habe mich 
hauptsächlich mit dem ersten von beiden beschäftigt, da dies nicht so 
groß war. Ich bekomme es zwar wunderbar zum synthetisieren und so, 
allerdings ergibt die Simulation nicht das was sie sollte. ich habe auch 
schon ein bisschen daran rumgespielt, aber bisher keinen erfolg.
Kennt vielleicht jemand, das sich synthetisieren lässt und so 
funktioniert wie es sollte?
Gruß
Chris

von Jens B. (sio2)


Lesenswert?

Die Teile bei opencores sollen teilweise nicht 100%ig gehen, aber die 
autoren bieten gegen bares nen funktionierenden ip an (hat unser 
vhdl-dozent gesagt).

von Chris (Gast)


Lesenswert?

Ui... das ist vielleicht spaßig... ich glaube da hätte ich fast selbst 
einen schreiben können... ich habe jetzt immerhin das behavioural model 
zum laufen gebracht, habs aber noch nicht mit nem model von micron 
gechekt ob alles einwandfrei läuft... aber die post fit version weigert 
sich immernoch...
also vorschläge sind jederzeit gern gesehen...
ne frage zum timing: ist es möglich 100mhz mit nem cpld zu erreichen? 
hab mich mit den datenblättern noch nicht befasst...

von Marko (Gast)


Lesenswert?

Wie schnell soll denn der RAM sein?
Muss es SD-RAM sein oder ginge auch EDO?
Bin ganz stolz, hab gestern EDO
RAM am µC Mega16 in Betrieb genommen,
war für mich als nob etwas knifflig aber
letztlich kein großes Problem.
Von wegen Refresh kann ich nur sagen ...
mach dir keinen unnötigen Kopf drum.
Hab durch Versuch festgestellt, das
die Refreshzyklen auch im 5-6 Sekunden
Bereich liegen können, ohne das bei
mir Datenverluste eingetreten währen.
Ansonsten brauchste nur 18 Pins für
Daten und Adressen IO und 3 Pins
für Ansteuerung WE, CAS, RAS.
Die 18 IOs kannste auch anderweitig noch
verwenden, solange Du die Steuerleitungen
in Ruhe sprich high lässt.
Extra RAM-Controller oder sonstiges Gesumse
ziemlich unnötig. Ich vermute aber mal
von der Betriebsspannung her wirds eng,
meine DIMM laufen auf 5V, ob die auch
tiefer gehen müsst ich erst noch testen

von Marko (Gast)


Lesenswert?

Ach so, glatt vergessen, ich hab so um 1MB erweitert

von Loki (Gast)


Lesenswert?

>Refreshzyklen auch im 5-6 Sekunden Bereich liegen können,

Bist Du da sicher ?

von JojoS (Gast)


Lesenswert?

würde ich unterschreiben, als Dipl. Arbeit habe ich mal einen Digitizer 
gebaut mit TTL-Grab und DRAMs, erst wenn der Refresh >20s geschaltet 
wurde konnte man einige Pixelfehler sehen.

von Loki (Gast)


Lesenswert?

Was ist mit häufigen Lesezugriffen auf die Speicherzelle?

von Chris (Gast)


Lesenswert?

Also nunja... was heißt schnell... also ein Lesezugriff sollte nicht 
mehr als 90ns dauern. Ist für nen ARM Aber deine Ansteuerung des EDOs 
würde mich trotzdem mal interessieren Marko. Vielleicht lässt sie sich 
ja auf SDRAMs oder DRAMs übertragen.
Ich kann zwar wie gesagt etwas Verliog(schreiben und lesen) und VHDL(nur 
lesen) Aber es direkt im µC zu machen wäre mir lieber.

von FPGA-Küchle (Gast)


Lesenswert?

DRAM's und Artverwandte sind weitaus komplexer in der Ansteuerung als 
SRAM. Falls es Kosten und Speicherdichte zulässt, sollte man SRAMS, 
vielleicht besser synchrone SRAM's einsetzen.


Dein VHDL-Prof erzählt hinsichtlich opencores Mist. Die Designs laufen 
sehr wohl und sind oft von anderen weiter debuggt. Der SDRAM-controller 
auf opencores von Markus läuft auch besetns aber ist halt beschränkt 
(Burst-länge?). Die unbeschränkte Version wird als IP verkauft.

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.