Nicholas Carlini escribió hace tiempo esta detallada serie de cinco artículos ([1], [2], [3], [4], [5] sobre cómo ha construido, paso a paso, circuitos digitales funcionales dentro del Juego de la vida de Conway. Su inspiradora idea es, poco a poco, implementar un microprocesador Intel 4004 completo que sea capaz de ejecutar el propio Juego de la vida, lo cual sería un sin duda un grácil y precioso bucle autorreferente.
La primera parte explica los componentes básicos, que como se puede imaginar son los deslizadores/planeadores con los que se puede transportar una señal de 1 bit. Éstos surgen de cañones de deslizadores, que sirven como fuente periódica cada pocos tics del reloj. Cuando hace falta, unas estructuras llamadas «devoradores» sirven para eliminarlos sin que quede rastro de ellos. Las colisiones entre deslizadores son el mecanismo para implementar las puertas lógicas: OR, AND y NOT.
En teoría combinando estas tres puertas lógicas ya se puede construir cualquier ordenador. En la práctica, debido a las limitaciones de las reglas del juego de la vida y el «escenario», se necesitan algunos elementos auxiliares como rotadores, duplicadores, cruces y divisores de señal; nada extremadamente complicado. Con todo esto se puede construir un sumador de 4 bits totalmente funcional.
La segunda y tercera partes de la serie entran en la lógica secuencial: un reloj hecho con un bucle de compuerta NOT, latches para almacenar los bits, flip-flops de tipo D sincronizados y un contador de 4 bits conectado a un visualizador de 7 segmentos. Como los autómatas celulares son deterministas se pueden simplificar algunos diseños, aunque no es que sean precisamente lo más eficiente en cuestión de espacio físico y velocidad.
En la cuarta parte parte se unen todos estos bloques prediseñados en una máquina de registros ilimitados (URM) de 16 registros de 4 bits, que es capaz de ejecutar tres instrucciones básicas: INC (incrementar), DEC (decrementar) y un salto condicional. También hay algunos módulos más sencillos que combinando las anteriores sirven para «poner a cero» (ZRO) o los «saltos incondicionales» (JMP). El diseño incluye:
- Reloj
- Registros
- Unidad aritmético-lógica (ALU) mínima
- Contador de programa
- ROM de 128 instrucciones
- Lógica de control
- Salidas en 7 segmentos
A partir de aquí la CPU está lista y se pueden hacer muchas cosas. La quinta y última parte habla de cómo multiplexar circuitos para hacerlos más eficientes, e incluye como ejemplo hasta un contador de Fibonacci. Una vez se dispone de las herramientas básicas, el resto es echarle imaginación.
Relacionado:
- John H. Conway hablando del Juego de la vida
- El juego de la vida de Conway en versión JavaScript
- El Juego de la vida de Conway, ahora en HTML5
- Un Juego de la vida infinitamente recursivo: zoom y a flipar
- Los tonos de la vida: música y autómatas celulares
- El juego de la vida de Conway en forma de checkboxes
- El juego de la vida de Conway en versión JavaScript
- Una máquina de Turing construida en «el juego de la vida»
- Un simulador de vida artificial en 100 líneas de código
- Un simulador del «Juego de la vida» de Conway de código abierto
- Un maletín artesanal sobre el que funciona el «Juego de la vida»
- El juego de la vida, versión épica
- El Juego de la Vida
- Cruce de autómatas celulares: la Regla 30 y el Juego de la vida
- La Regla 30 al ritmo de la música
- Tres problemas sobre un autómata celular, la «Regla 30» de Wolfram
- Una máquina con botones y ledes para explorar los autómatas celulares
- Un juego dentro de un juego dentro de un juego dentro de…
- El juego de la vida emulado dentro del juego de la vida