LPC2292 und DRAM

OP #232394
Lesenswert?

Hey,

da SRAM zu teuer, frage ich mich ob es nicht vielleicht möglich andere
Speicherbausteine z.b. DRAM zu nutzen. Nur mussen die ja regelmäßig
refresh werden was zu lasten der Systemleistung geht, es sei den es
geht über eine Hardwarelösung. hat jemand erfahrung damit und könnte
z.b mit einer Schaltung weiterhelfen.

:-)  NX
Persönliche Seite #232395
Lesenswert?

Als Beispiel (Vorrausgesetzt du verstehst Assembler für AVR) Hab ich mal
mein DRAM Code angehangen.

Am besten Scrollst du Direkt ganz nach unten. Ab dem Label
"int_tim0OVF" beginnt die Refreshroutine (Dieses Label wird 56.25mal
pro Sekunde angesprungen. Sprich: ich refreshe jede 1/56.25 = 17ms.
Datenblatt sagt 32ms höchstens)

Du findest auch die Angabe wieviel Cycles /s das braucht und darunter
wieviel Rechenleistung draufgeht dabei. läpische 0,3% !

Jetz sag mir mal, dass du das Hardwaretechnisch lösen willst !

Aber wie du willst: Das einzige was du machen muss ist:
1. WE high, CAS high, RAS high
2. CAS low
3. 2^Adressbereich x RAS low und wieder high (Falling Edge)
   (bei 8bit (so wie ichs gemacht habe) wären es 256 mal RAS low und
wieder high)
4. Cas high

Das wars.
Gast #232397
Lesenswert?

Die Software ist OK, die Erklärung falsch (CAS und RAS vertauscht, beim
Rest verstehe ich nicht was das bedeuten soll).

In der Codesammlung gibt es Routinen von mir und auch ein paar PDFs zu
DRAM Grundlagen.
Persönliche Seite #232399
Lesenswert?

Das ganze ist zwar nett, wenn man nur irgendwelche Daten speichern will,
aber es ist keine Erweiterung des prozessorinternen Speichers, da auch
die Ansteuerung des gemultiplexten Adressbus (und das Wackeln an
RAS/CAS) des DRAMs in Software gelöst ist.
Damit aber der Prozessor den Speicher als externen Speicher nutzen
kann, muss dies alles in Hardware geschehen.

Allerdings sind normale DRAMs für einen ARM eh viel zu langsam.
Für das externe Speicherinterface eines AVRs mag das bei Verwendung von
60nsec-DRAMs noch möglich sein, wenn man ausreichend Waitstates einfügt,
aber für das Speicherinterface eines ARMs ist das nicht ansatzweise
ausreichend.
Wenn ich mir so die Beschreibung des LPC2292 ansehe, dann scheint ein
(externer) Speicherzugriff in drei Taktzyklen durchgeführt werden - bei
60 MHz Takt sind das also 50 nsec. Die reine Zugriffsgeschwindigkeit des
Speichers muss entsprechend schneller sein, daher werden da
üblicherweise 10nsec-SRAMs verwendet, die wie Maic zu recht bemerkte,
sehr teuer sind (oder in Form von Cache-SRAMs aus PC-Motherboards
gewonnen werden können, die verbrauchen aber recht viel Strom).
Obendrein sind größere SRAMs eher selten, üblich sind 512 kByte, wenn
es auch die eine oder andere Ausnahme mit 1 MByte geben mag.

Geeigneter für ein derart schnelles Speicherinterface wären SDRAMs,
aber deren Ansteuerung ist reichlich kompliziert. Mit einem ausreichend
schnellen FPGA/CPLD lässt sich sicherlich ein SDRAM-Controller
herstellen; sicherlich gibt es dafür auch freien VHDL-Code, aber das
ist schon 'ne deftige Übung.

Als echte Alternative käme noch die Verwendung eines anderen
ARM-Derivates in Betracht, dessen Speicherinterface direkt SDRAMs
ansteuern kann.
Da gibt es von OKI den ML67Q5003, der auch noch lötbar ist (wie der
2292 im PQFP144) und mittlerweile auch auf einer Entwicklungsplatine
von Olimex zu bekommen ist (http://www.olimex.com/dev/oki-h5003.html -
dort gibt es auch einen Schaltplan).
Auf dieser Platine sind neben dem ML67Q5003 16 MByte SDRAM und 512
kByte SRAM (mit 10 nsec) untergebracht.

Was der OKI-Prozessor in Einzelstückzahlen kostet und wer den verkauft,
entzieht sich leider meiner Kenntnis.
Gast #232400
Lesenswert?

Maic,
tue Dir das nicht an. Schau mal unter dem Stichwort Pseudo SRAM mit
Google nach, verhaelt sich im Interface wie ein SRAM ist aber bei
groesserer Speicherkapazitaet deutlich guenstiger.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren