Mittwoch, 19. März 2014

Massenspeicher

Was mir an den ganzen bereits veröffentlichten Schaltungen nicht gefällt, ist der Einsatz von Floppy-Controllern. Ich meine, gut und schön, wenn der Selbstbaurechner ein Diskettenlaufwerk hat, nur, was soll ich damit dann anfangen? Ich habe keinerlei Rechner mehr, der über ein Diskettenlaufwerk verfügt. Womit sollte ich dann Daten austauschen?
Der einzig sinnvolle Massenspeicher ist daher, zumindest momentan, die SD-Karte. Ein USB-Stick wäre mir fast noch lieber, allerdings dürfte es sehr problematisch sein, dass korrekte Protokoll auszutüfteln. Davon ab sind SD-Karten heute billig zu bekommen und fast jeder Laptop hat auch einen SD-Karten Einschub.
Als internen Festplatten-Ersatz habe ich sowohl echte Festplatten gesehen, wie auch schon CF-Karten. Ich denke, dass auch hier eine einfache SD-Karte das Mittel der Wahl ist.
Zwei SD-Karten als externer und interner Massenspeicher sind somit für mich gesetzt. Nun dreht es sich "nur" noch um die Ansteuerung der Karten. Natürlich könnte ich einfach einen Portbaustein (z. B. Z80-PIO oder 8255) nehmen und den Z8 dies von allein bewerkstelligen lassen. Allerdings habe ich den Eindruck, als wenn dies nicht sonderlich schnell sein wird. Andererseits stellt sich die Frage, welche Geschwindigkeit denn wirklich notwendig ist, für ein System, dessen Hauptspeicher maximal 1MB groß ist.
Dennoch denke ich darüber nach, einen CPLD wie den XC9572 von Xilinx oder andere einzusetzen. Bein Schreiben auf die SD-Karte werden byteweise durch die Z8-interne DMA die Daten in ein 8-Bit Schieberegister im CPLD geschrieben, sowie darin ein Zähler auf 0 gesetzt. Sodann beginnt der CPLD seriell die Daten in die SD-Karte zu schreiben. Nach jedem Bit wird der Inhalt des Schieberegisters um eine Stelle weiter geschoben und der Zähler inkrementiert. Erreicht der Zähler den Wert 8, wird zum einen das Zählen blockiert. Zum anderen wird ein Signal an die DMA gegeben das nächste Byte zu senden.
Beim Lesen werden die Informationen bitweise von der SD-Karte in das Schieberegister eingeschoben und der Zähler bis 8 inkrementiert. Ist dieser Wert erreicht, also ein ganzes Byte empfangen, wird ein Signal an die DMA gegeben, dass ein Wert zur Abholung bereit steht. Nach der Abholung wird der Zähler zurück gesetzt und das nächste Byte eingelesen. Diese Überlegung führt automatisch zu der Erkenntnis, dass hierfür zuvor die Anzahl der einzulesenden Bytes vom Z8 in den CPLD geschrieben werden muss. Zum Schreiben ist diese Information nicht erforderlich.

Keine Kommentare:

Kommentar veröffentlichen