Jump to content

frei programmierbares Display mit 31 Spalten und 8 Zeilen


Wurstbrot_deluxe

Empfohlene Beiträge

Ich möchte zum Einstand in diesem Forum meine bis dato größte Spielerei mit Redstone vorstellen. Es handelt sich um eine frei programmierbare Anzeige mit 31 Spalten (Bytes) und 8 Zeilen (bit). Jeweils acht übereinander liegende Speicherzellen - also 8 bit - werden unter der gleichen Adresse erreicht und können gleichzeitig beschrieben oder gelöscht werden. Desweiteren gibt es einen total reset über die gesamte Anzeige.

Am "Kontrollpult" rechts lassen sich über Hebel die acht Datenleitungen mit Signalen belegen. binär 0 oder 1, also Lampe aus oder Lampe an.
Links sind die acht Hebel für die Signale des Adressbus, mit 8 Hebeln sind 256 verschiedene Einstellungen möglich. Mit den Werten 1110000 binär (also E0 hexadezimal) bis 11111110 binär (FE hex) sind die Bytes der Anzeige adressierbar. Die vergebenen Adressen könnte man auch nachträglich ändern mit den vorhandenen Hebeln an der Rückseite des Adressdecoders. Oberhalb der Anzeige gibt es noch Kontrolllampen, die die jeweils aktive Reihe anzeigen.
E0hex ist von vorne gesehen rechts, FEhex links.

Der Adressdecoder (gelb im zweiten Bild) arbeitet je Reihe mit acht parallelen exklusiv-nicht-oder-Verknüpfungen, die über mehrere Stufen mit Und-Gattern zu einem Ausgangssignal verarbeitet werden.  Soll heißen, das Ausgangsssignal liegt nur dann an, wenn die Signale auf dem Adressbus mit den in den XNOR Gattern vorgegebenen Werten exakt übereinstimmen.
Das Ausgangssignal des Adressdecoders wird über ein NAND Gate mit dem Schreib Kommando verknüpft und parallel dazu über eine UND Schaltung mit dem Löschkommando.
Das Schreibkommando wird über eine weitere UND Verknüpfung mit dem Signal des Datenbus verbunden. Diese Leitungen führen je Bit auf ein RS-NOR Gatter, das ist die zu beschreibende Speicherzelle. Das RS-NOR wurde gewählt, weil es mit einer Grundfläche von 3x3 Blöcken die wohl kompakteste Möglichkeit ist, eine Speicherzelle mit Redstone zu bauen.
Das Ausgangssignal der Speicherzelle steuert dann die Redstonelampen der Anzeige an, jeweils vier Stück als Block.

Die Herausforderung bestand darin, eine halbwegs kompakte Bauweise zu finden. Der Abstand der einzelnen "Lampenblöcke" des Displays lässt nur eine Breite und Höhe von drei Blöcken zu, nur in der Tiefe besteht Spielraum.
In der gesamten Logik gibt es nur Redstonekabel, Redstonefackeln, Verstärker und Redstonelampen. Dazu 16 Hebel und drei Knöpfe am Kontrollpult und 248 Hebel, die für die Adressierung der Speicherreihen verwendet werden. 31Byte * 8bit Adressbusbreite = 248. Diese 248 Hebel werden nur einmal betätigt für die initiale Adressvergabe der Speicherreihe (des Byte), oder wenn man tatsächlich die Adressen der Anzeige ändern möchte.
Im Nachhinein habe ich mich etwas geärgert über zwei Defizite. Es wäre schöner gewesen, wenn man den Inhalt der Speicherzellen auch überschreiben könnte, anstatt nur zu löschen und dann neu zu beschreiben. Zudem habe ich es aus Platzmangel nicht mehr geschafft, eine Broadcastfunktion über die Adresse FFhex zu implementieren, mit der man alle Spalten gleichzeitig mit dem selben Wert beschreiben kann.
Optimierungspotenzial gibt es hinsichtlich der Menge der verbauten Verstärker im Adress- und Datenbus. Senkrecht nach oben führende Steuersignale der Speicherzellen wurden über Redstonefackeln realisiert, da galt zunächst: Platz einsparen ist wichtiger als Arbeitstempo. Vielleicht ist da noch was mit Redstonewendeltreppen möglich.

Gruss wb_d

2017-02-19_22.01.40.png

Blick auf das Gesamtkonstrukt, im Vordergrund Adressbus (gelb), Datenbus (blau), Steuersignale (grün und rot)

2017-02-19_22.00.59.png

Die Rückseite:
gelb: Adressdecoder mit acht XNOR Gattern und kaskadierten UND Verknüpfungen
blau: 8 bit Datenbus
weiss: Speicherzellen und Ausgabe

2017-02-19_22.02.10.png
Kontrollpult:
links Hebel für den Addressbus
rechts: Datenbus
Mitte: Steuersignale gesamte Anzeige löschen, aktuelles Byte löschen und Daten in Speicher schreiben
 

2017-02-19_22.04.11.png
Adressbus:
11100011, also E3 hexadezimal, damit wird das dritte Byte von rechts auf der Anzeige angesprochen

2017-02-19_22.04.23.png
Die Kontrollleuchte oberhalb des Displays (da wo das Fadenkreuz ist) zeigt die gewählte Reihe an

2017-02-19_22.04.32.png
Auf dem Datenbus ist 11101000 eingestellt, das soll ein ! ergeben.

2017-02-19_22.04.39.png
Mit Druck auf den grünen Knopf (memory write) wird der Wert des Datenbus in die Reihe geschrieben.

2017-02-19_22.04.55.png

Voila! fertig.

bearbeitet von Wurstbrot_deluxe
typofehler, ergänzung
Link zu diesem Kommentar
Auf anderen Seiten teilen

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...
B
B