www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DRAM und Refresh


Autor: Markus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
kann mir jemand mal erklären wie ein Refresh bei DRAM's funktioniert? 
Hab hier in der Linkliste was gefunden das mich interessiert

http://www.myplace.nu/avr/dram/index.htm

Hier wird der CAS-before-RAS Refresh verwendet. Muß da einfach nur die 
CAS-Leitung und die RAS-Leitung getaktet werden? Und der Rest wird vom 
DRAM gemacht?
Die Geschichte ist nämlich interessant wenn man viel Speicher auf 
kleinem Raum braucht und die Performance eine untergeordnete Rolle 
spielt. Außerdem kann man auch Controller mit RAM versehen die keinen 
Adress-Datenbus haben.

Gruß
Markus

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sehr interessanter Beitrag!

Bei den älteren DRAMs wurden jeweils nur die unteren Adressleitungen 
(z.B. A0 bis A9) angelegt und ins RAM geschrieben. Die Adressierung von 
A10 bis A?? brauchte man für einen Refresh-Zyklus nicht anzulegen. Durch 
den Vorgang wurden die Inhalte der Speicherzellen in ein internes 
Adressregister gelesen und wieder zurückgeschrieben (Refresh).

Die Refreshroutine des Beispielprogramms gibt keine Adressen aus, 
sondern wackelt nur kräftig an den CAS und RAS-Signalen herum.


// Executes a 1024 cycle CAS-before-RAS refresh sequence
// on every timer interrupt (every 16 mS)
// This takes about 1.6 mS @ 8 MHz, so the refresh overhead
// is about 10 %
//
SIGNAL(SIG_OVERFLOW1)  //timer 1 overflow every 16 mS
{
  int i;

  outp(TI1_H, TCNT1H);          //reload timer
  outp(TI1_L, TCNT1L);

  for (i=0;i<1024;i++)  // 1024 cycles
  {
    cbi(PORTC,PC3);    // CAS lo
    cbi(PORTC,PC2);    // RAS lo

    sbi(PORTC,PC3);    // CAS hi
    sbi(PORTC,PC2);    // RAS hi
  }
}

Siegfried

Autor: Markus Burrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Siegfried,
gibt es denn bei dem dort verwendeten oder einem ähnlichen DRAM eine 
andere und vor allem schnellere Möglichkeit als an RAS und CAS zu 
"wackeln"? :)
Schließlich sind 10% der Gesamtleistung nicht gerade wenig. Bei manchen 
Anwendungen mag das egal sein aber bei anderen kommt es schon darauf an.

Gruß
Markus

Autor: Siegfried (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Markus,

so wie das aussieht, gehts bei den hier vorgestellten Komponenten von 
Seiten der Software nicht schneller. Wie der Autor in seinem Beitrag 
auch geschrieben hat, kommt die Lösung nur da in Frage, wo der 
Controller noch Leerlaufzeiten hat (und das ist bei den meisten 
Anwendungen der Fall).

Andere DRAM-Datenblätter hab ich mir jetzt nicht angesehen. Interessant 
ist der Gedanke schon, ggf. ein paar alte PS/2-, SIMM oder SIPP-Module 
als "Monster-RAM" für die AVRs zu verwenden.

Als Hardware-Lösung kommt eine Schaltung in Form eines Zählers in Frage, 
so dass am Ausgang die Zählfolge 3 - 1 - 0 - 2 - 3 hat. Damit kann der 
Refresh unabhängig vom Controller erfolgen. Allerdings weis ich jetzt 
nicht, ob der Refreshcounter im RAM nach jedem Zugriff wieder auf 0 
gesetzt wird. Wenn dem so ist, dann muss sichergestellt sein, das 
innerhalb der Refreshzeit 1024 Refresh-Zyklen abgefeuert werden.

CAS RAS Zustand
 1      1   Ruhe (Controller darf zugreifen)
 0      1   Refresh-Zyklus
 0      0   Refresh-Zyklus
 1      0   Refresh-Zyklus
 1      1   Ruhe (Controller darf zugreifen)

Gruß

Siegfried

Autor: Markus Burrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gab mal in einer Elektor ein Projekt das 4MB SIMM's an einen 8051 
gehängt hat. War ein Druckerpuffer.

Autor: Jonas Diemer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
sonst kannste doch auch ne at90s1200 oder einen tiny als "ram 
controller" nehmen. die dinger kosten ja fast nix und haben teilweise 
onboard taktgeber.

Autor: Markus Burrer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
das würde sich bei größeren RAM Bänken lohnen, aber ich denke nicht für 
ein IC

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.