Note: This Document is Work In Progess...
Nutzung externes RAM am AVR.
Die AVRs erlauben zwei Arten der Nutzung externen RAMs:
- Memory mapped (XRAM)-Feature einiger AVRs
- "händisches" Anbinden von RAM
Alternative 1: Direkte Anbindung von RAM
Zunächst soll gezeigt werden, wie externe RAM-Bausteine angebunden
werden können, ohne das XRAM-Feature einiger AVRs zu nutzen. Die RAM-Bausteine werden
also mittels selbst zu erstellender Software angesteuert. Dabei sind
Timings des RAM-Bausteins zu beachten.
Als RAM-Baustein wurde der HM6116-70 gewählt, ein 2Kx8 SRAM-Baustein
mit 70ns Zugriffszeit. Dies ist ein älterer Baustein, man kann aber
auch einen beliebigen anderen Baustein zum Experimentieren hernehmen.
Vorteil der älteren RAM-Modelle ist, dass sie im DIP-Gehäuse verfügbar
sind.
Zunächst ein paar Auszüge aus dem Datenblatt:
Eigenschaften des HM6116.
PIN-Belegung.
Adressen A0..A10, Daten an I/O0..I/O..7. WE (Write Enable) und OE (Output Enable) sowie CS (Chip Select).
Beschreibung der PINs.
Das RAM ist intern als 128x128 Bit Array organisiert. Es bildet dies auf externe 8-Bitx2048 Adressen ab.
Im folgenden die Belegungsmöglichkeiten der Steuereingänge CS,OE,WE.
"High Z" bedeutet Tri-State-Zustand "Z", also vom Bus abgelöst.
Das RAM wurde an den AVR angeschlossen. Ein AVR-Port (im Beispiel Port A) wird für die Datenbits genutzt.
Da ich das RAM erstmal nur experimentell beschreiben will, nehme ich nur die
ersten drei Adresspins her (A0..A2) und verbinde diese mit weiteren
freien AVR-Pins (im Beispiel an Port C). An Port C werden dann die
Steuerleitungen CS, OE, WE gehängt.
Im Bild das HM6116 auf dem Steckbrett
RAM auf Steckbrett ganz rechts, via Breakoutboard (Mitte) an das AVR-Board (Links) geführt.
Software
Für das Schreiben und das Lesen des RAMs wurden eigene Funktionen
geschrieben, die das geforderte Timing des RAMs einhalten. Damit ist
natürlich auch die Reihenfolge der Ansteuerung der Steuerleitungen
gemeint. Es darf z.B. nicht passieren, dass der AVR und das RAM
gleichzeitig auf Ausgabe geschaltet sind, sonst geht einer der beiden
Chips kaputt. Das Timing ist im Datenblatt dargestellt, für READ- und
für den WRITE-Cycle. Es kann mehrere Möglichkeiten (mehrere
Cycle-Typen) geben, man muß sich das passende heraussuchen.
<TBD> weiter: die SW.
Note: This Document is Work In Progess...