Verriegelungsuhr
Partitur - 53.508 (von denen nur 36.828 aufgrund des L-förmigen Designs aktiv verwendet werden)
Aufnahme in hoher Qualität - https://1drv.ms/u/s!ArQEzxH5nQLKhvt_HHfcqQKo2FODLQ
Golly-Muster - https://1drv.ms/u/s!ArQEzxH5nQLKhvwAmwCY-IPiBuBmBw
Leitprinzipien -
- Da ich zum ersten Mal einen zellularen Automaten verwendete, vermied ich es, große vorgefertigte Komponenten miteinander zu verbinden. Ein gültiger Ansatz, den ich nicht gewählt habe, wäre ein Binäraddierer, der bei Null beginnt und kontinuierlich eins zum letzten Ausgang addiert, gefolgt von einem Binär-BCD-Wandler, einem Display-Demultiplexer, einem 7-Segment-Decoder und einer 7-Segment-Anzeige.
- Es sollte möglich sein, die Uhr kalt zu starten. Ich habe mir die zusätzliche Einschränkung auferlegt, dass ein einzelner Elektronenkopf, der an einer bestimmten Leiterzelle platziert ist, die Uhr korrekt starten soll. Ich wollte nicht vor Beginn der Simulation eine sorgfältige manuelle Synchronisation vieler unterschiedlicher Flip-Flops und einzelner Zeitsteuerungselemente erfordern.
Teil I: Der Minutenzähler
Mathematik
Das Zählen von 0 bis 9 im Binärformat (für die am wenigsten signifikante Minutenziffer) geht wie folgt vor sich:
0 - 0000
1 - 0001
2 - 0010
3 - 0011
4 - 0100
5 - 0101
6 - 0110
7 - 0111
8 - 1000
9 - 1001
Lesen Sie, dass als Spalten der niedrigstwertige (2 ^ 0-Einheiten-Bitstrom) 01010101, der 2 ^ 1-Einheiten-Strom 0011001100, der 2 ^ 2-Einheiten-Strom 0000111100 und der 2 ^ 3-Einheiten-Strom 0000000011 lautet.
Der erste ist einfach - nur Flip-Flip 01 für immer. Der dritte ist ein Strom von vier Einsen, sechs Nullen, phasenverschoben um sechs Nullen. Der vierte ist ein Strom von acht Nullen und zwei Einsen.
Die zweite ist etwas schwieriger, da sie eine unangenehme Asymmetrie aufweist. Allerdings stelle ich fest, dass (wo. Concat Operator ist):
0011001100. 0011001100 = 0011001100. NOT (1100110011) = 00110011001100110011 XOR 00000000001111111111 = 5 (0011) XOR 000000000011111111
(Übrigens, wie später angedeutet, läuft der Großteil meiner Uhr auf einem 60-Takt-Ticker. Die 00000000001111111111-Welle mit doppelter Länge ist der Punkt, an dem der 120-Takt-Ticker benötigt wird.)
Design
Die Ausgabe-Streams von oben nach unten erfolgen in Einheiten von Minuten (2 ^ 0, 2 ^ 1, 2 ^ 2, 2 ^ 3) und dann in Zehnern von Minuten (2 ^ 0, 2 ^ 2, 2 ^ 1). Beachten Sie, dass die beiden unteren Drähte gekreuzt sind.
- 120 Takt Hauptuhr.
- Wo soll ein Elektron für einen Kaltstart platziert werden? Ohne Elektronenschwanz spaltet es sich in zwei Richtungen, aber die Diode direkt darüber fängt eines dieser Elektronen auf und ergibt ein schönes zyklisches Elektron, das die 120-Takt-Schleife umrundet.
- 12-Takt Sekundäruhr.
- Die Spule aus Leiter + Diode startet den sekundären 12-Takt. Worte können nicht beschreiben, wie fummelig dieses kleine Stück zu synchronisieren war. Sie müssen die 120- und 60-Takt-Takte synchronisieren, dann die 12-Takt- und die 24-Takt-Pseudotakte des Frequenzhalbierers synchronisieren und anschließend den 24-Takt-Takt mit dem 120-Takt-Takt zurückbinden, da sonst das XOR-Gatter nicht funktioniert .
- Phasenverschiebung.
- Flip Flops. Ein einzelnes Elektron am Eingang trifft zuerst auf die eingestellte Linie und dann nach einer bestimmten Zeit auf die Rücksetzlinie, wobei genau ein Impuls eingeht, ein Impuls ausgeht.
- Das Hinzufügen von Buckeln hier - auf der Rücksetzleitung erhöht die Verzögerung zwischen dem Setzen und dem Zurücksetzen auf dem Flip-Flop. Jeder zusätzliche Buckel gibt einen zusätzlichen Impuls. Das Flip-Flop darunter hat neun zusätzliche Buckel, also zehn Impulse zwischen Setzen und Zurücksetzen.
- XOR-Gatter für meine knifflige 2 ^ 1-Minuten-Zeile.
- AND-NOT Gate und sehr spezifische Teillängen bedeuten, dass sich jeder Elektronenpuls, der vorbei kommt, auf sich selbst verdoppelt und das dahinter liegende Elektron vernichtet. Frequenz halver. Erstellt eine 24-Takt-Clock aus der 12-Takt-Sekundärquelle.
- 60-Takt Sekundäruhr, die eigentlich den größten Teil der Arbeit erledigt. Es ist einfach einfacher, eine schnelle Uhr von einer langsameren zu starten, daher ist die langsamste Uhr (120 Beats) der Master, obwohl sie kaum benutzt wird. Die 60-Takt-Uhr ist das Herzstück dieser Sache.
- Rückkopplungskabel, das nur dann Elektronen transportiert, wenn die 60-Takt-Uhr tickt. Es wird in Verbindung mit einem UND-NICHT-Gatter verwendet, um zu verhindern, dass die Uhr vom 120-Takt-Master wiederholt neu gestartet wird. Ansonsten passieren viele schreckliche Dinge und Strg-Z ist der Retter.
- Die Diode, von der aus die 60-Takt-Uhr gestartet wird.
- Dieses ganze Gerät ist ein Flip-Flop, ein UND-Gatter und ein UND-NICHT-Gatter kombiniert. Es gibt einen Riegel. Ein Puls in startet es, ein Puls in stoppt es.
- Drahtschleife zum Kalibrieren des Signalspeichers auf 10 Impulse ein, 10 Impulse aus für einen 1: 10-Impulseingang. Ohne sie bekommen wir 12 Impulse an, 8 Impulse aus. Diese Zehn-auf-Zehn-Aus-Latches bilden die Grundkomponenten der Zehn-Minuten-Blöcke in der gleichen Weise wie die 6-Mikrometer- (1-Puls-) Flip-Flops die Grundkomponenten der Minuteneinheiten bildeten.
- Der Kaltstart-Startimpuls verursachte alle Arten von Problemen, einschließlich der Tatsache, dass er mit den Takten, die er startet, zwei Schläge phasenverschoben war. Dies bringt die Laschen durcheinander. Dieses UND-Gatter fängt nicht synchronisierte Impulse ein und entsorgt sie - insbesondere den Startimpuls.
- Dies ist ein Teil des Designs, den ich im Nachhinein etwas bedauere. Es nimmt ein Elektron, spaltet es in fünf auf und vernichtet die fünf dahinter liegenden Elektronen, wobei es 111111 bis 100000 nimmt.
- Dies nimmt ein Elektron und stickt es auf die Vorderseite. Zwei Phasen voraus, um genau zu sein. Es dauert 100000 und macht 101000. Kombiniert mit Teil 16 erhalten wir 111111 -> 100000 -> 101000. Im Nachhinein wünschte ich, ich hätte 111111 -> 101010 -> 101000 getan; es hätte den gleichen Effekt auf weniger Raum erzielt.
- Die obigen Muster werden dann in die untere Verriegelung gedrückt, um 20 Ein, 40 Aus zu erreichen. Dies wird aufgeteilt, die Hälfte wird um 20 Einheiten phasenverschoben, und dann bilden diese die zwei Bitströme höherer Ordnung von einigen zehn Minuten.
Teil II: Der Stundenzähler
Erläuterung
Der Eingang zum Stundenzähler ist ein Einzelelektronenimpuls, einmal pro Stunde. Der erste Schritt besteht darin, diesen einmal alle zwölf Stunden auf einen einzelnen Elektronenimpuls zu reduzieren. Dies wird mit mehreren "Latch & Catch" -Primitiven erreicht.
Ein "Latch" ist ein 6-Mikrometer-Flip-Flop, das mit einem UND-NICHT-Gatter und einem UND-Gatter verbunden ist, um ein 6-Mikrometer-Ein / Aus-Latch zu erhalten. Ein "Fang" nimmt einen kontinuierlichen Strom von Elektronen als Eingang, lässt das erste durch und vernichtet dann jedes andere dahinter liegende Elektron, bis der Strom endet, an welchem Punkt sich der Fang zurücksetzt.
Wenn Sie eine Verriegelung gefolgt von einer Verriegelung hintereinander platzieren, wird ein Elektron einge- schaltet -> die Verriegelung wird eingeschaltet, ein Elektron am anderen Ende (der Rest wird von der Verriegelung eingefangen). Dann zweites Elektron ein -> Latch ausschalten, still fangen, zurücksetzen. Nettoeffekt: Das erste Elektron geht durch, das zweite Elektron wird vernichtet und so weiter und so fort, unabhängig davon, wie lange die Verzögerung zwischen diesen Elektronen dauert .
Verketten Sie nun zwei "Latch & Catch" -Elektronen in Reihe, und Sie haben nur jedes vierte Elektron im Durchgang.
Nehmen Sie als nächstes ein drittes "Latch and Catch", aber binden Sie dieses Mal ein ganzes viertes Latch ein und fangen Sie an der Flip-Flop-SET-Leitung zwischen dem AND-NOT-Gatter und dem Flip-Flop-SET. Ich überlasse es Ihnen, darüber nachzudenken, wie dies funktioniert, aber dieses Mal passiert nur eines von drei Elektronen, unabhängig davon, wie lange die Verzögerung zwischen diesen Elektronen dauert .
Nehmen Sie zum Schluss eines von vier Elektronen und eines von drei, kombinieren Sie sie mit einem UND-Gatter, und nur eines von zwölf Elektronen tritt durch. Dieser ganze Abschnitt ist das chaotische Kräuseln der Pfade links oben im Stundenzähler unten.
Nehmen Sie als nächstes alle zwölf Stunden das Elektron und teilen Sie es jede Stunde wieder auf, aber geben Sie es jeweils auf einen anderen Leiterdraht aus. Dies wird mit dem langen Wendelleiter mit dreizehn Austrittspunkten erreicht.
Nehmen Sie diese Elektronen - eine Stunde lang auf verschiedenen Leitern - und treffen Sie eine Flip-Flop-SET-Leitung. Die RESET-Leitung auf demselben Flip-Flop wird dann von dem Leiter der nächsten Stunde getroffen, wobei 60 Impulse pro Draht pro Stunde abgegeben werden.
Schließlich - nimm diese Impulse und lasse sie in siebeneinhalb Bytes ROM (Nur-Lese-Speicher) laufen, um die korrekten BCD-Bitströme auszugeben. Weitere Informationen zu WireWorld ROM finden Sie hier: http://www.quinapalus.com/wires6.html
Design
- Ein Elektron pro Stunde.
- Erster Riegel.
- Erster Fang.
- "Latch & Catch" eingebettet in eine äußere SET-Zeile "Latch & Catch".
- UND Tor.
- AM / PM-Verriegelung (einmal alle zwölf Stunden ein- / ausgeschaltet).
- Jede Drahtschleife ist 6x60 = 360 Einheiten lang.
- Flip / Flop drehte sich auf die Seite, um ein kleineres Profil zu erstellen.
- Siebeneinhalb Bytes ROM.
Anmerkungen
- Aufgrund des 6-Mikrometer-Designs mit einem Elektron pro Minute kann die Simulation für eine Echtzeituhr mit sechs Generationen pro Minute (eine Generation alle 10 Sekunden) ausgeführt werden.
- Die AM / PM-Leitung ist für AM hoch (1), für PM niedrig (0). Dies mag ein wenig ungewöhnlich erscheinen, aber es gibt eine Rechtfertigung. Während eines Kaltstarts der Uhr ist die AM / PM-Leitung anfangs natürlich niedrig (0). Sobald die AM / PM-Linie hochgezogen ist (1), zeigt dies an, dass die Zählung um 12:00 Uhr begonnen hat. Alle Ausgaben vor diesem Punkt sollten ignoriert werden. Alle Ausgaben nach diesem Punkt werden als sinnvoll angesehen.
Nützliche Links