4. Logikgatter mit Game of Life

Das Ziel dieses Praktikums war es ja, Spiel und Wissenschaft enger zu verknüpfen. Wir versuchten mit den oben kurz erklärten Grundformen von Life einen zellulären Automaten zu verwirklichen, der ein vorgegebenes Signal verarbeiten, sprich verknüpfen kann. Game of Life hat gezeigt, dass es möglich ist mit Glidern Datenströme zu simulieren. Deshalb müsste es für Life auch möglich sein Computerprogramme zu simulieren, sofern es gelingt UND-Gatter und Inverter zu konstruieren, womit bekanntlich jede logische Verknüpfung aufgebaut werden kann.

Logikgatter manipulieren Datenströme, die aus Nullen und Einsen bestehen und somit die Zustände wahr und nicht wahr generieren. Im Game of Life werden diese Zustände mit Glidern dargestellt, wobei ein anwesender Glider den Zustand wahr und ein abwesender entsprechend ein Nicht wahr repräsentiert. Somit ist möglich einen Datenstrom, der auf Game of Life basiert, zu konstruieren.

4.1 Logische Gatter

Es hat sich gezeigt, dass Game of Life in der Lage ist, in Form von Glidern Datenströme zu generieren. Um nun einfache Schaltungen oder gar ganze Computerprogramme zu simulieren, muss man, basierend auf dem Game of Life-Algorithmus, Logikgatter konstruieren können. Logikgatter manipulieren Datenströme, die aus Nullen und Einsen bestehen und somit die Zustände wahr und nicht wahr repräsentieren. Im Game of Life steht ein anwesender Glider für den Zustand wahr (1) und ein abwesender dementsprechend für den Zustand nicht wahr (0).
Mit den beiden elementaren Gattern Und und Inverter ist es möglich, jegliche Schaltung aufzubauen.
 
 

4.1.1 Der Inverter

Ein Inverter, der 0 in 1 umwandelt und umgekehrt wird folgendermassen aufgebaut:
Um einen kontinuierlichen Datenstrom in Form von Glidern zu generieren, bedient man sich einer Glidergun, die vorzugsweise in einer Ecke positioniert wird. Sie soll in diagonaler Richtung Glider absenden. In der horizontal gegenüberliegenden Ecke wird ein beliebiger Datenstrom auch in Form von Glidern konstruiert und zwar so, dass diese Glider, die sich ebenfalls in diagonaler Richtung fortbewegen, auf den anderen Gliderstrom zulaufen.
Auch dieser zweite Datenfluss wird mit einer Glidergun aufgebaut. Bei der Plazierung ist besonders darauf zu achten, dass sich die Glider beim allfälligen Aufeinandertreffen gegenseitig auslöschen. Sobald nun diese zweite Gun entsprechend positioniert ist, können einige Glider hinausgelassen werden.
Aus diesem Gliderstrom, in den man nun die eigenen Informationen einbaut, werden die unerwünschten Glider einfach gelöscht, bis der angestrebte Code erreicht ist. Um die Anordnung noch zu vervollständigen, wird nun auch noch die Glidergun gelöscht.
Der Datenstrom ohne die Glidergun wird zur einfacheren Erläuterung im weiteren A genannt
Immer, wenn A nicht wahr ist, passiert ein Glider, abstammend von der Glidergun, den Datenstrom. Wenn A wahr ist, d.h. ein Glider ist vorhanden, trifft dieser auf den Glider der Glidergun, wobei sie sich gegenseitig auslöschen. Dementsprechend gibt es keinen Glider mehr; der Inverter wandelte das Signal von wahr in nicht wahr um. 
4.1.2 Das Und-Gatter

Das Und-Gatter baut auf dem Inverter auf. Zum bekannten Aufbau des Inverters wird parallel zum Datenstrom A ein weiterer Datenstrom hinzugefügt, der B genannt wird. Auch hier ist darauf zu achten, dass der Gliderstrom von B so auf die übrigen Gliderströme abgestimmt ist, dass sich die Glider beim Aufeinanderprallen gegenseitig auslöschen. Um B aufzubauen, geht man am besten analog zum Aufbau von A vor.
Falls nun A wahr ist, wird der entsprechende Glider mit einem Glider der Glidergun kollidieren, wonach kein Glider mehr vorhanden ist. Falls nun B auch wahr ist, kann jener Glider ungehindert weiter gehen. Der daraus resultierende Datenstrom repräsentiert dann A und B gleich wahr. Dies stimmt auch, wenn A nicht wahr ist, denn dann löscht der Glider der Glidergun den Glider von B aus ((nicht A) und B= nicht wahr). Falls nun weder ein B, noch ein A vorhanden ist, passiert davon sowieso kein Glider. Nun ist aber noch ein Glider der Gun vorhanden, der keine Aufgabe mehr zu erfüllen hat und mit einem sogenannten Eater zerstört wird. Ein Eater ist ein Konstrukt, das statisch ist und zudem in der Lage ist, auf ihn treffende Glider zu zerstören


 
 

4.1.3 Das NAND-Gatter (nicht (A&B))

Aus der Verknüpfung der beiden vorangegangenen Logikgatter resultiert das NAND-Gatter (nicht (A&B)), das die Grundlogik für alle logischen Schaltungen liefert.


 
 

4.1.4 Der Halbaddierer

Mit den nun bekannten Grundformen und Logikbausteinen ist es möglich, jede beliebige logische Schaltung aufzubauen. Dies hat natürlich nur theoretischen Charakter, da einfachste Schaltungen mit diesem Spielbrettaufbau schon äusserts kompliziert werden. Dies soll am Beispiel des Halbaddierers demonstriert werden. Der Halbaddierer addiert zwei Dualziffern, wobei die Schaltung zwei Ausgänge hat. Der erste Ausgang (Z) enthält die erste Ziffer (2^0) und der zweite Ausgang (Ü), der Übertrag, die zweite. Eine solch einfache Schaltung benötigt sechs Grundgatter und sogar nur deren fünf, falls die Schaltung aussschliesslich mit NAND-Gattern aufgebaut wird. Trotzdem ist diese einfache Schaltung in Game of Life schon riesig.

Unten ist der Schaltungsaufau mit Grundgattern und daneben dieselbe Schaltung nur mit NAND-Gatter.

Daraus wird der Aufbau für die Schaltung in Game of Life folgendermassen abgeleitet:

Und so sieht dann die Anfangskonfiguration aus:


 
 

Diese animierten Schaltungen können mit dem Programm Life32.exe für Windows, das von Johan Bontes entwickelt wurde, ausgeführt werden. Die unten aufgeführten lif-Datein, enthalten diese Schaltungen.

Life32.exe

Inverter.lif

A&B.lif

not(A&B).lif

Halbaddierer.lif


  vorangehende Seite  nächste Seite  [Home]