Einführung in den Aufbau von Logikgattern mit Drähten. Geht auch tiefer und erklärt, wie man Tore ohne Verzögerung herstellt.
Wie man Logikgatter baut
Einführung
Sobald Sie die Ebenen mit Sensoren und Drähten erreicht haben, werden Sie schnell mit Herausforderungen konfrontiert, bei denen mehrere Sensoren denselben Magneten/Kolben/Portal gemeinsam steuern müssen. Einige der möglichen Konfigurationen sind trivial, zum Beispiel die Aktivierung eines Kolbens, wenn irgendein Sensor aktiv ist, oder die Freigabe eines Magneten, wenn zwei Sensoren beide aktiv sind.
Jeder Sensor aktiviert den Kolben (links). Alle Sensoren müssen aktiv sein, um den Magneten freizugeben (rechts).
Wenn wir jedoch einen Kolben aktivieren möchten, wenn alle Sensoren aktiv sind, oder einen Magneten freigeben möchten, wenn irgendein Sensor aktiv ist, müssen wir etwas ein bisschen fortschrittlicher machen.
Einfache Kolbenschieber
Wir können Kolben verwenden, um einfache Logikgatter herzustellen. Die Verwendung dieses Ansatzes wird einige Nachteile haben, aber sie sind ziemlich einfach zu verstehen, also beginnen wir mit ihnen.
Wenn wir einen Kolben aktivieren möchten, wenn zwei (oder mehr) Sensoren gleichzeitig aktiv sind, können wir einen zusätzlichen Sensor und einen zusätzlichen Kolben verwenden. Um die Bezugnahme auf sie zu vereinfachen, nennen wir unsere Anfangssensoren für unsere Eingangssensoren und unseren Anfangskolben für unseren Ausgangskolben, während wir unsere zusätzlichen Komponenten für unseren Gate-Sensor bzw. Gate-Kolben bezeichnen.
Wir können unseren Gate-Kolben leicht aktivieren, wenn ein Eingangssensor aktiv ist (so wie wir es in der Einführung getan haben). Wenn jedoch stattdessen die negative Seite der Eingangssensoren verwendet wird, wird es aktiviert, wenn irgendein Eingangssensor nicht aktiv ist. Denken Sie daran, dass wir überprüfen möchten, ob alle Eingabesensoren aktiv sind, aber wir können dies so umformulieren, dass wir überprüfen möchten, ob keine Eingabesensoren „nicht aktiv“ sind. Wenn das der Fall ist, wird unser Torkolben nicht aktiv sein. Durch die Verwendung unseres Gate-Sensors können wir den Zustand des Gate-Kolbens erkennen und dann den Ausgangskolben entsprechend steuern.
Durch die Verwendung eines zusätzlichen Sensors und Kolbens können wir ein Und-Gatter erstellen. Lose Stücke sind weiß gefärbt. (Der Grund, warum der Kolben nicht ausgefahren ist, liegt einfach daran, dass wir die Fabrik noch nicht begonnen haben).
Auf ganz ähnliche Weise können wir eine Magnetauslösung vornehmen, wenn mindestens ein Sensor aktiv ist. Beachten Sie, dass wir hier die positive Seite unserer Eingangssensoren verwenden, während wir immer noch die negative Seite unseres Gate-Sensors verwenden.
Ein zusätzlicher Sensor und Kolben können auch zu einem Not-Gatter werden, das wir an das triviale Oder-Gatter anschließen (das Oder-Gatter verbindet nur mehrere positive Sensordrähte mit demselben Block).
Wie Sie den Anschnittsensor und den Anschnittkolben zueinander aufbauen, kann auf viele verschiedene Arten erfolgen. Im Bild unten sehen Sie einige der möglichen Varianten.
Varianten des Kolbenschiebers. Lose Stücke sind weiß gefärbt.
Kettentore
Im vorherigen Abschnitt haben wir ein Und-Gatter und ein Nicht-Gatter gebaut. Durch die Verwendung des positiven Ausgangs des Gate-Sensors im Und-Gatter erhalten wir ein Nand-Gatter (Not and) und durch die Verwendung mehrerer Eingangssensoren (wie wir es getan haben) für das Not-Gate erhalten wir ein Nor-Gate (Not or). . In der Informatik können Sie bekanntermaßen alle booleschen Logiken (wahr/falsch, eins/null, hohes Signal/niedriges Signal) aufbauen, indem Sie nur NAND-Gatter oder nur Nor-Gatter verwenden. Das bedeutet, dass wir mit dem einfachen Kolbenschieber-Design jede gewünschte Logik aufbauen können. Wir brauchen möglicherweise mehrere Kolbenschieber, aber wir können es tun.
Als Beispiel wollen wir versuchen, ein Xor-Gatter (Exclusive Or) zu bauen. Ein Xor-Gatter sollte ein Signal ausgeben, wenn irgendein Eingang aktiv ist, aber nicht, wenn beide Eingänge aktiv sind. Dazu können wir prüfen, ob mindestens ein Eingang aktiv ist und nicht beide, also ein Und-Gatter mit Eingängen aus einem Oder-Gatter und einem Nand-Gatter. Da unser Und-Gatter-Design jedoch invertierte Eingänge verwendet, brauchen wir eigentlich, dass unser Und-Gatter seine Eingänge von einem Nor-Gatter und einem Und-Gatter erhält.
Ein Xor-Tor. Das Tor ganz links ist das Nor-Tor. Ganz rechts ist das Und-Gatter der Eingänge. Das mittlere ist das Und-Gatter, das die Ausgänge der anderen Gatter als Eingänge verwendet.
Kolbenverzögerungen
Die Kolben benötigen einen einzigen Tick, um ihre Arme herauszuziehen oder zurückzuziehen. Ein einziger Tick ist keine lange Zeit, aber manchmal ist das Timing entscheidend für den ordnungsgemäßen und effizienten Betrieb einer Fabrik. Wie wir im vorherigen Abschnitt gesehen haben, können wir einfache Gatter zu komplexerer Logik verketten. Die kombinierte Logik mehrerer Gatter benötigt eine Anzahl von Ticks, die der längsten Kette von Gattern entspricht. Beispielsweise benötigt das Xor-Gatter aus dem vorherigen Beispiel 2 Ticks, um aktualisiert zu werden. Es enthält 3 grundlegende Tore, aber 2 davon können gleichzeitig betrieben werden.
Die Verzögerung wird nicht nur mit zunehmender Komplexität zunehmen, die endgültige Ausgabe kann auch zwischen instabilen Werten und den tatsächlichen Werten flackern. Dies kann passieren, wenn es in der Logik Unterketten unterschiedlicher Länge gibt, da sich dann eine Unterkette vor der anderen ändert.
Solange es zu Verzögerungen an unseren Toren kommt, müssen wir verzögerte und instabile Ausgänge in Betracht ziehen, die möglicherweise Probleme in unseren Fabriken verursachen oder nicht. Logikgatter in Computern haben auch winzige Verzögerungen und um das zu umgehen, wird eine sogenannte Uhr verwendet. Die Ausgabewerte werden nur verwendet, wenn der Takt pulsiert, was zu einem zu ignorierenden instabilen Verhalten führt (wie es zwischen den Taktpulsen auftritt). Während wir selbst eine Art Uhr erstellen könnten, haben wir Zugriff auf etwas, was Computer nicht haben:Portale.
Instant-Gates
Durch die Verwendung von Portalen können wir Logikgatter mit einer 0-Tick-Verzögerung erstellen. Dadurch werden alle Bedenken aus dem vorherigen Abschnitt völlig irrelevant. Die Portaltore können etwas schwieriger zu verstehen sein als die Kolbentore, daher könnte es gut sein, zunächst Kolbentore zu verwenden.
Das Kernkonzept des Portaltors ist die Tatsache, dass Sensoren durch ein Portal sehen können und erkennen, was sich auf der anderen Seite befindet.
Sensor, der durch eine Reihe von Portalen sieht. Beachten Sie die rote Sensorlinie.
Wir werden jedoch niemals etwas auf der anderen Seite entdecken, das ist der springende Punkt. Wenn die Sensorleitung auf die andere Seite reicht, wird die negative Seite des Sensors aktiviert. Wir können verhindern, dass die Linie die andere Seite erreicht, indem wir einfach das Portal ausschalten. Wenn das Portal inaktiv ist, kann die Leitung nicht hindurchgehen und der Sensor erkennt stattdessen, dass das Portal selbst blockiert wird, wodurch die positive Seite aktiviert wird.
Ein Und-Gatter, das aus einer Reihe von Portalen besteht. Sobald beide Sensoren aktiviert sind, wird das Portal erneut aktiviert und der Torsensor wird nichts mehr sehen.
Instant Gates verketten
Um eine komplexere Logik mit Portalgates zu erstellen, können wir sie einfach verketten, wie wir es mit Kolbengates getan haben. Der Unterschied besteht jedoch darin, dass die Portalversion überhaupt keine Verzögerung aufweist.
Ein Xor-Tor aus Portalen. Es hat eine Verzögerung von 0 Ticks.
Portaltore können jedoch auch auf andere Weise verkettet werden. Wir können jedem Torsensor mehrere Sätze von Portalen geben. Auf diese Weise wird die negative Seite des Sensors nur aktiviert, wenn alle Portalpaare geöffnet sind.
Ein weiteres Xor-Tor. Dieser hat nur zwei Teile, einer prüft, ob der erste Eingang der einzige aktive ist, der andere prüft, ob der zweite Eingang der einzige aktive ist.
Meistens müssen wir nicht mehrere Portalsätze verwenden, da die Eingangssignale alle zum selben Portal gehen können. Die Verwendung mehrerer Portalpaare kann es jedoch einfacher machen, zu sehen, was vor sich geht, da es einfacher ist zu erkennen, welches Portal den Durchgang der Sensorleitung verhindert.
Eine kompaktere Version des Xor-Gates.
Kompakte Fabriken
Eine Eigenschaft der Portaltore ist, dass sie wirklich flexibel sind, wenn es darum geht, wie und wo Sie sie bauen. Ich persönlich mag es, meine Fabriken aufzuräumen, sobald sie funktionieren, und ihre Teile ziemlich kompakt zusammenzupacken (wie sehr ich mir die Mühe mache, variiert von Level zu Level).
Beim Bau eines Portaltors ist das Einzige, was wichtig ist, dass der Sensor eine leere Stelle sehen kann, wenn alle Portale offen sind.
4 Portaltore, die jeweils auf dieselbe leere Stelle blicken.
Ein Portaltor mit 3 Portalpaaren.
Es versteht sich von selbst, dass es umso schwieriger wird, den Überblick darüber zu behalten, was sie tun, je seltsamer Sie sie bauen.
Echtes Rätselbeispiel
Dies ist eine Lösung für das Level „Adder“ in der Gruppe „Digitalia“. Die 8 Bits der roten und blauen Blöcke sollten addiert und mit einem grünen Block ausgegeben werden. Durch die Verwendung einer Reihe von Portal-Gattern kann ich jeden 24. Tick eine neue 8-Bit-Ausgabe erzeugen (3 Ticks pro Bit).
Mögliche Lösung für „Adder“