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...