Hallo Fragewurm,
„Die Adressen und Steuersignale (Lese- oder Schreibzugriff,
Chip Select, Bank Select, /CAS, /RAS etc.) können aber genauso
wie bei SDRAM, weiterhin nur auf der steigenden Taktflanke
übertragen werden“
So ein DRAM-Zugriff ist recht kompliziert und mit der Datenrate wird Werbung betrieben, was das ganze verzerrt.
Also basteln wir uns ein DRAM …
Damit es anschaulich wird soll das nur 16 Bit haben. Zudem gibt es nur einen Pin für die Daten. Der Speicher-Baustein ist als nach aussen als 16x1 Organisiert.
Diese 16 Bit ordnen wir in einer 4x4 Matrix an, dadurch wird die Anordnung kompakt. So eine Matrix bestet nun aus Spalten und Zeilen.
Mit 2 Bits können wir nun die Zeilen ansteuern.
Jetzt haben wir ein kleines Problem: Wenn wir eine Zeile auswählen, werden imm gleich 4 Bits ausgelesen …
Also benötigen wir noch einen Multiplexer welcher aus den 4 Zeilen-Bits eines auswählt und auf den Ausgang schaltet. Das sind nochmals 2 Bits um diesen anzusteuern.
Vom Zeitlichen Verlauf her, benötigt es etwas Zeit, vom Anlegen der Zeilen-Adresse bis die 4 Bits intern wiklich anliegen und die Adresse für den Splaten-Multiplexer benötigt wird.
Also kann man einen Zwischenspeicher für die Zeilen-Bits einfügen und die 2 Pins für die Zeilen- und Spalten-Bits gemeinsam benutzen. Zudem fügen wir auch noch gleich einen Zwischenspeicher für die Spalten-Adresse ein.
Allerdings benötigen wir jetzt zwei zusätzliche Steuerleitungen, welche unseren RAM mitteilen wann die Zeilen- und wann die Spalten-Adressen anliegen und gültig sind.
Diese nennen wir mal Zeilen-Adress-Signal und Spalten-Adress-Signal und weil englisch sooo schön ist:
Column-Adress-Strobe (CAS) und
Row-Adress-Strobe (RAS).
Und weil wir ja praktisch immer mehr Speicher benötigen als in einen Chip passt, fügen wir noch einen Chip-Select Anschluss hinzu. Wenn dieser deaktiviert ist, ignoriert unser RAM einfach sämtliche STeuersignale an seinen Eingängen. Damit können wir nun mehrere Speicherchips paralell schalten.
Für unsere weiteren Betrachtungen nehmen wir mal an, dass dieser Chip-Select-Eingang immer aktiviert ist.
Die Ansteuerung sieht nun wie folgt aus:
- Zeilen-Adresse an die Adress-Pins anlegen.
- Wenn die Signale stabil sind werden mit der fallenden Flanke von RAS die Adressen in den Zeilen-Adress-Zwischenspeicher geladen und die entsprechende Zeile wird aktiviert, was etwas Zeit in anspruch nimmt.
- in der Zwischenzeit legen wir nun die Spalten-Adressen an.
- Sind diese Signale auch stabil werden die Adressen mit der fallenden Flanke von CAS in den Spalten-Adress-Zwischenspeicher übertragen und … da fehlt jetzt aber noch was … auf den Daten Ausgang gelegt.
Da fehlt doch noch ein Steuersignal welches Schreiben und Lesen ermöglicht, bis jetzt können wir nur lesen, also muss da noch ein R/W-Signal dazu, aber diese Dateils übergehen wir in unserer Betrachtung.
Bis jetzt haben wir aber nur ein ganz normales RAM, da ist noch nichts von DDR oder so zu sehen …
Die grösste Zeit beim Zugriff wird benötigt bis eine Zeile ihre Daten wirklich an unseren Multiplexer stabil angelegt hat, der Multiplexer selbst abrbeitet wesentlich schneller.
Wenn wir jetzt den Adress-Zwischenspeicher für die Spalten durch einen Zähler ersetzen können wir eigentlich Schritt 1. und 2. sparen, wenn wir immer 4 Bits einer Zeile nacheinander auslesen wollen.
Um nicht weitere Ansteuer-Pins zu benötigen braucht es etwas Logik.
Wenn CAS inaktiv ist, ladet die fallende Flanke von RAS die Adress-Bits in den Zwischen-Speicher. Danach wird CAS aktiviert.
Nun können wir das Ganze so verschalten, dass weitere fallende Flanken von RAS den Zähler für die Spalten weiterschaltet.
Nun haben wir schon mal ein FPO-RAM (Fast Page Out).
Wenn wir das Ganze noch so Modifizieren, dass bei der steigenden und bei der fallenden Flanke von RAS der Zähler weitergeschaltet wird, sind wir bei DDR angelangt.
Wie man sieht dauert der Zugriff auf das erste Bit einer Zeile immer gleich lang, auch bei DDR, die folgenden Bits einer Zeile können dann aber wesentlich schneller ausgelesen werden.
OK, mit 16Bits macht der ganze Aufwand noch keinen Sinn. Aber bei schon bei einem 64KBit-Speicher würde man für die Adress-Leitungen 16 Pins benötigen. Durch anordnen der Bits in einer 256x256-Matrix und mit RAS und CAS benötigt man dann nur noch 8 Adressleitungen. Jeder zusätzliche Adress-Pin vervierfacht also die adressierbare Speicherkapazität.
Da wäre noch die Geschichte mit dem Refresh, aber damit würde ich jetzt das FOrum sprengen …
Hier kannst du mal ansehen wie das in konkret aussieht (leider kann man nicht direkt auf das Datenblatt verlinken):
http://www.qimonda.com/computing-dram/ddr/sdram.html
Klick einfach mal auf „Datasheet“ in der obersten Zeile ( HYB25D128400CT-7 128Mb, 32Mx4, DDR266A 2-3-3)
Auf Seite 21 ist da ein Blockschaltbild.
Und ab Seite 77 (Kapitel "Timing Diagrams) kannst du dir dann ansehen wie die Pins angesteuert werden 
MfG Peter(TOO)