Forum: Mikrocontroller und Digitale Elektronik SDRAM DIMM am AVR32


von Martin K. (mkrelli)


Lesenswert?

Hi.

Ich habe folgendes "Problem":

Ich entwickle zur Zeit an einem MultiMedia Board auf basis eines 
AVR32AP7000 (der hat ja alles was man braucht ;) )

Da ich allerdings beide MAC-Controller plus LCD-Controller verwenden 
möchte gehen mir die oberen 16bit Datenleitung (und ein paar bit Addr) 
am Externen Bus Interface flöten. Dieses wird u.a. verwendet um RAM und 
andere Sachen anzusteuern.
Der Punkt ist: Ich möchte ein SDRAM DIMM Modul (! keine einzelnen Chips 
- 128MB oder so) anschließen. Das hat ja einen 64bit Datenbus, 4 
ChipSelects usw. Ich möchte jetzt allerdings auch nicht nur 1/4 des 
Moduls nutzen können nur weil ich bloß einen 16bit Datenbus hab...

Ich habe mir überlegt, dass ich auf Basis der 4 CS Eingänge, einem CPLD 
und den zwei CS Ausgängen vom SDRAMC eine art Multiplexer aufbaue...
Der CPLD müsste dann erstmal 16bit Puffern und die Busbreite auf 32bit 
erhöhen  und dann einen CS auswählen. Das ganze für jeden CS. (Natürlich 
müssen auch die CS vom Controller korrekt behandelt werden)

Im Prinzip klingt das ja schön und gut... Aber die Große frage ist 
jetzt, ob der Controller das dann noch versteht. Also die Daten wieder 
richtig lesen kann (beim Schreiben sehe ich da nur ein geringeres 
Problem).

Was meint ihr?
Hapt ihr vieleicht irgendwelche anderen Vorschläge?

Grüße.
Martin.

von Benedikt K. (benedikt)


Lesenswert?

Vermutlich wird das nicht funktionieren, da dann nur ein DRAM die 
Refreshbefehle und die Initialisierung mitbekommt.

Mit normalen DRAMs hatte ich sowas mal gemacht, um diese an einem 
normalen AVR anzuschließen. Aber selbst da war es nicht ganz einfach 
(der CPLD muss erkennen wann ein Refresh ausgeführt wird, und dann alle 
DRAMs zusammen adressieren.

von Martin K. (mkrelli)


Lesenswert?

ich hatte gerade noch eine andere idee:
wenn ich dem controller vorgaukle, dass er doppelt soviele spalten im 
ram hätte (bei einstellung auf 16bit datenbus).

dann lasse ich den CPLD die drei verantworlichen adressleitungen 
überwachen und bei einer eins schaltet er auf den zweiten, bzw bei null 
auf den ersten teilblock (CS0, CS1). die cs vom controller stellen die 
"seite" auf dem DIMM ein. achso und gepuffert muss natürlich genau so 
werden. (das müsste doch dann auch die übergröße korrigieren)

denke das müsste doch besser gehn?

von Martin K. (mkrelli)


Lesenswert?

@benedikt:
also quasi alle dram chips gleichzeitig auswählen (also diesen 4k 
refresh?)
müsste das mit der zweiten lösungsidee nicht klappen?

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.