www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik SDRAM DIMM am AVR32


Autor: Martin Krellmann (mkrelli)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Benedikt K. (benedikt) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Martin Krellmann (mkrelli)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Martin Krellmann (mkrelli)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.