Forum: Mikrocontroller und Digitale Elektronik SDRAM anbinden


von Steffen H. (mcst)


Lesenswert?

Hallo,

hab schon eine mehrere Informationen hier im Forum und an anderen 
Stellen gewälzt, aber Richtig geholfen hats leider nicht.

Ich versuche einen SDRAM vom Typ IS42S16400F an eine TC1130 anzubinden. 
Der µC hat einen integrierten SDRAM- Controller, also dacht ich „alles 
kein Problem Timing und Adressierung einstellen und fertig“. So leicht 
war’s dann noch nicht

Im Datenblatt des SDRAM sind verschiedene Timingeigenschaften festgelegt 
die ich folglich über das Setzen entsprechender Parameter in den TC1130 
Registern einhalten muss. Ich habe mir die Zykluszeiten für einen 100MHz 
Takt ausgerechnet und eingetragen.

Zuerst mal zum prinzipiellem Verständnis:
Ich habe das so verstanden, dass wenn der Takt am SDRAM unter den 100MHz 
liegt, der Datenzugriff immer noch funktioniert da die Timing-Werte im 
Datenblatt ja als Minimalwerte angegeben sind.
-> ist meine Annahme Richtig?

Jetzt zum eigentlichen Problem:

Über die JATAG- Schnittstelle wird ein Code zum Testen in den SDRAM 
geschrieben und soll von dort ausgeführt.
Ich habe mir den Speicherinhalt nach Übertragung des Codes mit dem 
Debugger angeschaut -> hier sind keine Fehler zuerkennen.

Nach dem Startup, der Initialisierung der Interrupt- Tabelle usw. wird 
der CPU. Takt von 45MHz auf 100MHz umgestellt
Bis zu dieser Stelle läuft der Test-Code fehlerfrei. Kurz darauf kommt 
es allerdings zu einem Trap bzw. Absturz.
Ohne die Erhöhung der Taktfrequenz läuft der Code einige Sekunden aber 
auch dann kommt es zu diesem Fehler.

Beim vorherigem test des Codes auf dem Entwicklungsbourd sind keine 
Fehler aufgetreten, allerdings ist hier auch anderer SDRAM angebunden.

Meine Mutmaßung ist das es zu einem Lesefehler des Codes kommt, ggf. 
durch falsch eingestelltes Timings. Ehrlich gesagt weis ich nicht mehr 
weiter, da ich dachte alles korrekt eingestellt zu haben.

Wenn ihr Tipps habt die mir weiterhelfen währ ich sehr froh! Auch 
Prinzipielles zur Anbindung von SDRAM kann helfen.

Steffen

von ich (Gast)


Lesenswert?

Schreib doch mal ein Testprogramm das permanent Daten ins SDRAM schreibt 
und liest (RAMtest) das Programm sollte dann allerdings nicht aus dem 
SDRAM selbst ausgeführt werden.

Irgendwie hört sich dein Problem nach falschen refresh timings an...

von Gerd E. (robberknight)


Lesenswert?

Vielleicht wird auch die Verbindung zwischen µC und SDRAM gestört. Zeig 
doch mal Dein Layout, zumindest einen Ausschnitt mit µC und SDRAM drauf.

von Stefan W. (wswbln)


Lesenswert?

Unterschiedliche SDRAMs brauchen evtl unterschiedliche 
Startup-Sequenzen. Mal die Datenblätter verglichen?

Manche Zeiten werden in den Datenblättern auch in ns angegben, die 
rechnen sich bei verschiedenen Frequenzen natürlich in eine 
unterschiedliche Anzahl von Zyklen um.

Hast Du einen Logic-Analyzer zur Verfügung?

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.