Mikroprozessortechnik 03/88 |
RAM-Disks sind nützliche Einrichtungen, die wohl besonders von denjenigen sehr geschätzt werden, die an Rechnern mit Kassettenbandspeichern ihre Geduld üben müssen. Aber auch im Vergleich zur Diskette kann die RAM-Disk erstaunliche Geschwindigkeit bieten. Wer schon einmal in längeren Assemblerquellen mit einem Textverarbeitungsprogramm wie TP herumgesucht hat, weiß ein Lied davon zu singen. Hier wird nun eine konkrete Schaltung einschließlich Layout vorgestellt, die außer einer RAM-Disk von 256 KByte auch noch einen kompletten Hauptspeicher sowie eine MEMDI-Erzeugung enthält. Bild 1 zeigt die Schaltung. Die eigentliche RAM-Disk wird über IN- und OUT-Befehle bedient und tangiert den Hauptspeicher nicht.
Zum Adressieren von 256 KByte werden 18 Adreßbits benötigt.
Die niederwertigsten 8 Bit stellt ein vom
Programm mittels OUT-Befehl ladbarer Adreßzähler (2 x
74LS193) bereit. Die nächsthöheren 8 Bit müssen vom
Programm in ein Oktallatch (DS8282) geladen werden. Die restlichen 2
Bit stecken in der Peripherieadresse,
unter der das Bedienprogramm anschließend die RAM-Disk liest oder
beschreibt. Nach jedem Zugriff inkrementiert
die Zugriffslogik der RAM-Disk den o.g. Adreßzähler. Damit
sind INIR- und OTIR-Befehle für das Umladen der
Daten bestens geeignet. Die RAM-Disk belegt insgesamt 8 E/A-Adressen
nach folgendem Schema:
Grundadresse plus
0 = Lesen/Schreiben Bank 1
1 = Lesen/Schreiben Bank 2
2 = Lesen/Schreiben Bank 3
3 = Lesen/Schreiben Bank 4
4 = nicht benutzen
5 = nicht benutzen
6 = mittlere 8 Adreßbit laden
7 = niedrigste 8 Adreßbit in den Zähler laden.
Die Grundadresse kann man in gewissen Grenzen frei wählen, indem
man das Wickelfeld 0 entsprechend verdrahtet.
Der Hauptspeicher umfaßt volle 64 KByte.
Damit außer ihm auch noch andere Baugruppen (Urlader, Bildschirm
usw.)
im Speichervolumen betrieben werden können, besitzt er eine
Einrichtung zum Entadressieren.
Dazu besitzt die Baugruppe einen Eingang für das K1520-Bussignal
READY. Aktiviert bei einem Speicherzugriff
eine andere Baugruppe diese Leitung, so tritt der Hauptspeicher in dem
Bereich, den die andere Baugruppe belegt,
in den Hintergrund, indem der Lese- oder Schreibzugriff in einen
Refreshzyklus umgewandelt wird. Dafür stehen
bei Lesezyklen ca. 100 ns und bei Schreibzyklen etwas mehr als 1
Systemtakt zur Verfügung. Schaltet man mittels
MEMDI-Signalen die anderen Baugruppen ab, so kommt automatisch der
Hauptspeicher wieder hervor. Dieses
Verfahren erleichtert die Speicherverwaltung ganz erheblich.
Um den Hauptspeicher auch bei 4 MHz Systemtakt ohne die lästigen
WAIT-Zyklen betreiben zu können, schaltet
die Zugriffslogik das RAS-Signal ca. 50 ns nach Aktivwerden des
CAS-Signales ab. Damit wird den
Speicherschaltkreisen genügend Zeit zum Rückschreiben der
Information in die Matrix verschafft. Das ist
besonders wichtig für die sehr kurze Zugriffslücke zwischen
M1- und Refreshzugriff beim Befehlsholezyklus
des U880.
Dieser Schaltungsteil besteht aus 4 Flipflops, die über 8 OUT-Adressen einzeln gesetzt und gelöscht werden können. Die von den OUT-Befehlen ausgegebenen Daten sind dabei belanglos. Durch Systemreset werden alle vier Flipflops gelöscht. Welche MEMDI-Signale dabei gesetz/gelöscht werden, kann man durch DIL-Schalter oder Wickelbrücken frei wählen. Leider war auf der Leiterplatte nicht mehr genügend Platz, so daß der Koppelbussteckverbinder entfallen mußte. Deshalb müssen die MEMDI-Signale am Wickelfeld C abgegriffen werden.
Auf der Leiterplatte sind einige
Stützkondensatoren (33 nF Epsilan sowie Elkos 47 µF/6,3 V)
vorgesehen.
die im Stromlaufplan nicht extra angegeben wurden. Sie sind mit Cs
bezeichnet.
Alle Logikschaltkreise (außer Bustreiber und Dekoder) sind
Low-Power-Schottky-, also 74LSxxx-Typen.
Im Stromlaufplan wird nur die Typnummer (also 193 entspricht 74LS193)
angegeben.
Als Speicherschaltkreise können alle U2164-Typen eingesetzt
werden.
Die Verzögerungsglieder in den RAS/CAS-Schaltungen wurden zu 390
pF und 100 ... 180 Ω gewählt.
CP/M und ähnliche Plattenbetriebssysteme bestehen im wesentlichen
aus 3 Teilen:
1. dem BIOS (Basis-Ein/Ausgabesystem)
2. dem BDOS (eigentliches Plattenbetriebssystem)
3. dem CCP (Kommandoprogramm).
Zur Einbindung der RAM-Disk muß das in Bild 2 gezeigte Bedienprogramm in
das BIOS eingefügt werden.
Bei den meisten Systemen findet man im BIOS zwei oder drei Tabellen, in
denen die Adressen der
Disk-Parameter-Header (DPH) sowie die Adressen der zugehörigen
Lese- und Schreibroutinen stehen.
Dort muß man die eingefügten Programmteile eintragen. Wer
mehr als 256 KByte RAM-Disk einbauen will,
muß allerdings den Disk-Parameter-Block (DPB) ändern. Da das
BIOS jedes Laufwerk in maximal 256 Blöcke
aufteilt, ist bei größeren Speichern die
Blockgröße entsprechend Bild
3 im DPB zu vereinbaren.
Wenn die RAM-Disk richtig ins BIOS eingebaut ist, so ergibt die
Überprüfung mit STAT DSK:
folgende Antwort:
E: | Drive Characteristics |
2048: | 128 Byte Record Capacity |
256: | Kilobyte Drive Capacity |
64: | 32 Byte Directory Entries |
0: | Checked Directory Entries |
128: | Records/Extent |
8: | Records/Block |
16: | Sectors/Track |
0: | Reserved Tracks |
651 KByte | 283 KByte | 40 KByte |
Bild 1 | Bild 2 | Bild 3 |
Schaltplan | Bedienprogramm | Blockgrößen |
303 KByte | 633 KByte | 440 KByte |
Bild 4 | Bild 5 | Bild 6 |
Bestückungsplan | Lötseite | Bauelementeseite |