Peripherie: SRAM-Drive          

Um vernünftig mit einem Computersystem arbeiten zu können, braucht man eine Möglichkeit, Daten und Programme dauerhaft zu speichern. Moderne Systeme benutzen dazu Festplatten, die ersten Computer haben ihre Daten auf Lochstreifen gespeichert. Ich habe mich entschieden, das MyCPU-System mit einem statischem RAM Laufwerk auszustatten. Die Daten werden dabei in batteriegepufferten SRAM-Bausteinen gespeichert. Die Vorteile liegen auf der Hand: Die Software zur Ansteuerung dieses "Laufwerks" ist sehr simpel, und zudem wird eine maximale Zugriffsgeschwindigkeit und eine hohe Datentransferrate erreicht. Man könnte natürlich auch eine Festplatte oder ein Diskettenlaufwerk an das MyCPU-System anschließen, aber der Softwareaufwand wäre enorm, die Geschwindigkeit somit gering, und wer braucht für ein 8-Bit System schon Gigabytes an Speicher?

Spezifikation des SRAM-Drive:
  • Modulare Bauweise, Controller-Platine und max. 16 Speicherkarten
  • Maximal 16 MByte bestückbar, in Schritten von 0,5 MByte
  • Der Speicher ist in max. 4 Logische Laufwerke partitionierbar
  • Blockweiser Zugriff: Blockgröße 256 Bytes, max. 65536 Blöcke
  • Pufferung der Versorgungsspannung durch 3,6V Lithium Batterie
  • Dallas DS12887 Echtzeituhr


Achtung, das SRAM-Drive ist out-of-date.
Das SRAM-Drive wurde durch den IDE-Controller (Bauanleitung) ersetzt.



Controller Platine

Die Controller-Platine beherbergt alle zur Steuerung des SRAM-Drives benötigten Komponenten, die Dallas Echtzeituhr und die Lithium Batterie zur Pufferung der S-RAMs. Auf der Platine sind auch die DIP-Switches zur Konfiguration des Laufwerks untergebracht.


Memory-Map und Register

Adresse   Funktion
1000h - 10FFh R/W In diesen Speicherbereich wird der gerade selektierte Speicherblock des SRAM-Drives eingeblendet.
1100h W Adress-Register: Durch dieses Register werden die unteren 8 Bits der 16 Bit breiten Blockadresse des zu selektierenden Speicherblocks gesetzt.
1120h W Adress-Register: Durch dieses Register werden die oberen 8 Bits der 16 Bit breiten Blockadresse des zu selektierenden Speicherblocks gesetzt.
1140h W Access-Enable-Register: Der Zugriff auf den selektierten Speicherblock (1000h-10FFh) ist nur möglich, wenn dieses Register den Wert 59h enthält. Dieses Register schützt den Dateninhalt des Laufwerks vor unbefugten Zugriffen, z.B. bei einem Systemabsturz.
1180h R/W Echtzeituhr: Datenregister
11C0h W Echtzeituhr: Adressregister



DIP-Switch S1:  Speichergröße

 Switch
 0=off, 1=on
 1 2 3 4 5
  Speichergröße / RAM-Bausteine
 0 0 0 0 0   0,5 MB   /   4
 0 0 0 0 1   1,0 MB   /   8
 0 0 0 1 0   1,5 MB   /   12
 0 0 0 1 1   2,0 MB   /   16
 0 0 1 0 0   2,5 MB   /   20
 0 0 1 0 1   3,0 MB   /   24
 0 0 1 1 0   3,5 MB   /   28
 0 0 1 1 1   4,0 MB   /   32
 x x x x x  
 1 1 1 1 0   15,5 MB   /   127
 1 1 1 1 1   16,0 MB   /   128



DIP-Switch S2:  Anzahl der Partitionen

 Switch
 0=off, 1=on
 1  2
  Anzahl der Partitionen
  (Alle Partitionen sind gleich groß)
 0  0   1
 0  1   2
 1  0   3
 1  1   4



Bitte Linksklick aufs Bild zur Vergrößerung bzw. Rechtsklick->Ziel Speichern unter... um das Bild als .gif zu speichern.





Speicherkarte

Es können bis zu 16 Speicherkarten mit der Controller-Platine verbunden werden, wobei jede Speicherkarte mit bis zu 1 MByte (=8 RAMs je 128KB) bestückt werden kann. Damit die Speicherkarten von der Controller-Platine unterschieden werden können, muss jeder Speicherkarte eine eindeutige ID zugewiesen werden. Die erste Karte bekommt die ID 0, die zweite ID 1, usw. Die folgende Tabelle listet die möglichen Jumper-Einstellungen für die entsprechenden ID's auf:

  S1   JP2   ID der Speicherkarte
  8 = on   3-5,  4-6   0
  7 = on   3-5,  4-6   1
  6 = on   3-5,  4-6   2
  5 = on   3-5,  4-6   3
  4 = on   3-5,  4-6   4
  3 = on   3-5,  4-6   5
  2 = on   3-5,  4-6   6
  1 = on   3-5,  4-6   7
  8 = on   1-3,  2-4   8
  7 = on   1-3,  2-4   9
  6 = on   1-3,  2-4   10
  5 = on   1-3,  2-4   11
  4 = on   1-3,  2-4   12
  3 = on   1-3,  2-4   13
  2 = on   1-3,  2-4   14
  1 = on   1-3,  2-4   15



Bitte Linksklick aufs Bild zur Vergrößerung bzw. Rechtsklick->Ziel Speichern unter... um das Bild als .gif zu speichern.


Hinweis: Die Adress- und Datenleitungen werden auf der Speicherkarte nicht gepuffert. Das heißt, dass die Buslast zu hoch werden kann wenn mehr als eine Speicherkarte mit der Controller-Karte verbunden wird, so dass die sichere Funktion des SRAM-Drives nicht mehr gewährleistet ist. Darum empfehle ich den zusätzlichen Einbau von Bustreibern (74AC245 für ID0-ID7, und 74AC541 für IA0-IA7). Es ist aber zu bedenken, dass so die Zugriffsgeschwindigkeit sinkt, und die CPU eventuell niedriger getaktet werden muss. Eine andere Variante währe, Speicherbausteine mit einer höheren Kapazität zu verwenden und so die Gesamtzahl der Bausteine am Bus zu reduzieren.