Computación mecánica digital

He descubierto una máquina que me tiene fascinada. Se llama Digi-Comp II y fue un juguete educativo comercializado en los años sesenta. En el siguiente vídeo se muestra su funcionamiento con una reproducción a mayor escala que el original:

Aquí donde la ven, Digi-Comp II funciona de manera análoga a un ordenador. Con ella se pueden realizar muchas operaciones aritméticas, como con una calculadora, aunque de forma mecánica en lugar de electrónica. La máquina fue concebida para mostrar cómo funcionan los circuitos digitales con los que los ordenadores realizan operaciones aritméticas binarias. La velocidad de cálculo de esta simulación mecánica es lógicamente muchísimo menor que la de cualquier dispositivo electrónico (¡en el ejemplo del vídeo, se necesitan dos minutos y medio para multiplicar 3×13!) pero esto hace que podamos seguir el proceso paso por paso, además de que ver caer las bolitas es apasionante por sí mismo.

Para comprender cómo funciona es necesario conocer primero los números binarios. El sistema de numeración binario trabaja en base 2 en lugar de en base 10. Así, si en los números decimales, de derecha a izquierda, tenemos unidades (100), decenas (101), centenas (102)… en el binario esas posiciones corresponderán a 20,21, 22… Por ejemplo, el número binario 101 equivale al 5 decimal (1×20+0x21+1×22) y el binario 1101 al 13 decimal (1×20+0x21+1×22+1×23).

Los números binarios se suman de la misma manera a como nos enseñaron en el colegio con los número de toda-la-vida, pero teniendo en cuenta que ahora sólo hay dos cifras o dos bits. Por ejemplo, podemos hacer 5+13 así:

Screen shot 2012-12-05 at 2.15.00 AMO sea, de derecha a izquierda: uno más uno es cero y me llevo uno; cero más cero, cero, más uno que me llevo, uno; uno más uno es cero y me llevo uno; uno más el uno que me llevo es cero y me llevo uno; y finalmente uno que me llevo, uno. El resultado es 10010 que equivale a 18 en el sistema decimal.

Podemos entonces escribir las reglas básicas de la suma como:
0+0=0
0+1=1
1+0=1
1+1=0 (y 1 de ‘acarreo’)

De donde vemos que un dispositivo que sume necesita tener un bit para la suma de los dos bits de entrada y otro bit que represente el acarreo (lo que ‘me llevo’) generado por la suma. Si llamamos A y B a las entradas, S a la suma y C al acarreo, podemos construir una tabla con todos los casos de la suma de este modo:

Screen shot 2012-12-05 at 2.10.09 AM

A la función C se le llama también ‘AND’ (digamos que algo sólo es verdad si las entradas son verdad simultáneamente), mientras que la S es un operador conocido como ‘o exclusivo’ o ‘XOR’. En definitiva, se puede sumar combinando los operadores lógicos ‘AND’ y ‘XOR’. Ahora sólo faltaría implementar estas funciones, por ejemplo, con circuitos electrónicos o mecánicos.

He hecho un dibujo – a mano – mostrando un mecanismo que funcionaría como una puerta XOR. Imaginemos que tenemos un canal, que se bifurca y se vuelve a juntar, por el que puede circular una bolita. A la entrada y salida de las bifurcaciones ponemos dos pequeñas clavijas en forma de ‘L’ que podemos cambiar de posición haciéndolas girar sobre un pivote. Yo he pintado de diferente color cada una de las dos posiciones que pude adoptar la misma clavija para diferenciar la que tomaré como 0 (azul) de la 1 (roja). La salida será 1 si la bolita llega al recipiente situado al final, S, o 0  cuando no llega. Si ambas clavijas están en la posición 0 (dibujo I) la bolita no puede llegar al final porque quedaría retenida en B. Si abro el paso en B, sí podría hacer el recorrido completo y lo mismo ocurriría poniendo A a 1 y dejando B en su posición original (dibujos II y III). Sin embargo, moviendo las dos clavijas a la vez, la bolita quedará de nuevo atrapada (dibujo IV).

Diagrama casero de la función XOR.

Diagrama casero de la función XOR. Se puede ampliar pinchando sobre la imagen.

Así, se podría hacer un circuito combinando varias funciones lógicas. Una vez hecha la suma, se puede por ejemplo multiplicar como sucesión de sumas. Al final, se puede combinar todo para tener una auténtica máquina calculadora, como Digi-Comp II, cuyo esquema, sacado del manual original que se puede descargar aquí, incluyo a continuación (como siempre, se puede ver más grande pinchando sobre la figura).

Digi-compii

Lógicamente, trabajando con una máquina así, no podemos manejar números muy grandes. En esta caso el acumulador tiene 7 bits por lo que podremos representar 128 números (27), del 0 (0000000) al 127 (1111111). Si el resultado de la operación fuera mayor, se produciría un ‘overflow‘.

Entradas relacionadas:

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s