Un ordenador por dentro (III): los sistemas digitales

Una vez usted ya lo conoce todo acerca del misterioso mundo de los ceros y los unos, es hora de bajar a la tierra y ver cómo, a partir de lo que usted sabe ya de corrientes eléctricas, transistores, y sistemas binarios, se pueden diseñar y crear máquinas que utilicen todo esto para realizar sumas, restas, multiplicaciones, y lo que haga falta.

Operaciones lógicas

Se podría decir que estas son las operaciones más sencillas que se pueden hacer en los sistemas binarios, y se basan en simples aplicaciones de la lógica. Estas operaciones se llaman “Y, O, NO, y O-exclusivo”, aunque en este capítulo, en un arrebato de cosmopolitanismo, nos referiremos a ellas según sus nombres en inglés: AND, OR, NOT y XOR (eXclusive OR). Su uso es muy sencillo:

  • Si decimos que la nieve es blanca Y está fría, estamos diciendo algo verdadero, ya que es cierto tanto que la nieve sea blanca como que esté fría (verdadero AND verdadero = verdadero).
  • Si decimos que la nieve es blanca Y está caliente, estamos diciendo algo falso, ya que aunque la nieve es blanca, nunca está caliente (verdadero AND falso = falso). Ya ni hace falta decir qué diríamos al afirmar que la nieve es verde y caliente (falso AND falso = falso).
  • Pero si decimos que la nieve es verde O está fría, estaremos diciendo algo cierto, ya que aunque la nieve sea blanca, sí está fría. En una operación OR, si cualquiera de las dos premisas es cierta, el resultado será cierto (falso OR verdadero = verdadero), o (verdadero OR falso = verdadero).
  • La afirmación “la nieve NO es verde” es verdadera (NOT falso = verdadero).
  • También se puede tomar como cierto el hecho de que “el agua está EXCLUSIVAMENTE caliente O fría”, ya que no puede ser caliente y fría a la vez (falso XOR verdadero = verdadero, o verdadero XOR falso = verdadero, pero falso XOR falso = falso y verdadero XOR verdadero = falso).

Todas estas opciones se pueden resumir en unas sencillas tablas, donde además verá cómo los ceros y unos no sólo pueden representar números o letras, como vió en el capítulo anterior, sino que también pueden representar valores lógicos, tan sencillo como 1=verdadero y 0=falso. Así pues, estas serían las tablas relativas a las operaciones lógicas.

AND OR
0 AND 0 = 0

0 AND 1 = 1

1 AND 0 = 0

1 AND 1 = 1

0 OR 0 = 0

0 OR 1 = 1

1 OR 0 = 1

1 OR 1 = 1

XOR NOT
0 XOR 0 = 0

0 XOR 1 = 1

1 XOR 0 = 1

1 XOR 1 = 0

NOT 1 = 0

NOT 0 = 1

Estas operaciones son extremadamente sencillas de crear para las corrientes eléctricas, sencillamente juntando unos cuantos transistores, y creando un pequeño dispositivo con tres cables, llamado puerta lógica, que dependiendo de la corriente que entre por dos de esos cables (llamados entradas), saldrá o no saldrá corriente por el otro (llamado salida). A continuación se muestra la manera en que se dibujan dichas puertas, usadas para ser combinadas entre ellas y crear circuitos más complejos.

Puertas lógicas

Un ejemplo práctico: un sumador

En este apartado usted verá cómo juntando unas cuantas puertas lógicas se pueden hacer cosas realmente útiles, como es el caso de este ejemplo: un sumador, que sumará dos números cualquiera entre 0 y 15. Realmente no es mucho, pero es simple, servirá para que usted comprenda su funcionamiento, y realmente funciona exactamente igual que cualquier sumador para números realmente grandes.

Lo que primero que se hace en este tipo de diseños es plantear con detalle cómo son los datos a proporcionar (entradas), y cómo son los datos que queremos obtener (salidas). En este caso, la entrada será dos números de entre 0 y 15, que en binario es entre 0 y 1111. Eso indica que cada número tiene 4 bits y que, por tanto, necesitaremos cuatro cables para cada número, 8 en total. Si sumamos dos números cualquiera de 4 bits, podremos obtener cualquier número entre 0 y 30 (ya que 15+15=30 o, para seguir la moda binaria, 1111 + 1111 = 11110), por tanto, el número resultante (salida), es de 5 bits.

Para empezar, se puede ir pensando en cómo serán los números más pequeños posibles, como puede ser 1+1, cuyo resultado 10. Sumando dos números de un bit, obtenemos un número de dos bits. Veamos cómo se suman todos los números de 1 bit posibles:

0 + 0 = 00

0 + 1 = 01

1 + 0 = 01

1 + 1 = 10

Si usted se fija en el resultado, podrá ver que si nos quedamos sólo con el bit de más a la derecha (llamado bit menos significativo), éste pertenece a la función XOR de los operandos que se suman, y el bit de más a la izquierda (bit más significativo) es una función AND de los operandos. Por tanto, un sumador de dos números de un bit se podría describir con este simple esquema:

Sumador simple

¡Enhorabuena! Acaba usted de ver cómo a partir de unos pocos transistores y unas corrientes eléctricas, se puede diseñar un simple circuito para hacer sumas de un dígito. Como habrá deducido, el bit resultante menos significativo es el que en la imagen está denominado como SUMA_0 y el más significativo es SUMA_1.

Entonces, si sabemos sumar números binarios de un solo dígito, ¿cómo lo hacemos para sumar números de varios dígitos? En realidad funciona de la misma manera en que usted suma números decimales de varios dígitos: alineando cada uno de éstos y sumándolos uno a uno. Ahora tan sólo hay que tener en cuenta el llamado acarreo, tal y como usted lo tendría en cuenta en esta suma: 25 +37. Primero suma el 5 y el 7, que dan 12. Entonces escribe el 2 y se lleva 1 que sumará al resultado de 2+3. Ese número que “se lleva” es el acarreo. Pues de la misma manera tendrá que tener en cuenta el acarreo en el sumador con la siguiente formula.

SUMA = X + Y + Acarreo

El acarreo de entrada habrá que conectarlo al acarreo de salida de la suma de los dos dígitos anteriores. Por tanto, un sumador completo de 1 bit tendrá que tener, aparte de las entradas de los números X e Y, otra entrada de Acarreo (AE), y aparte de la salida del resultado, una salida de Acarreo (AS).

Por tanto, el resultado de la suma se calculará mediante X+Y+AE, y habrá que añadir una salida del acarreo (lo que nos llevamos), para tener en cuenta el acarreo a calcular en el número siguiente. Veamos cómo es el acarreo de salida para la nueva fórmula de la suma:

X Y AE = Resultado
0 0 0 = 00
0 1 0 = 01
1 0 0 = 01
1 1 0 = 10
0 0 1 = 01
0 1 1 = 10
1 0 1 = 10
1 1 1 = 11

El dígito menos significativo del resultado (el de la derecha) es el que consideraremos como resultado de la suma para ese número, y el más significativo (el de la izquierda) es el acarreo que nos llevaremos para sumar el siguiente dígito. No vamos a entrar en cómo crear la circuitería para el sumador completo, con sus tres entradas y sus dos salidas, porque aunque es simple, no creo que le interese demasiado, quédese sólo con el esquema general:

Full adder

Como este tipo de notación es un poco desagradable y liosa a la vista, un sumador completo se representa con una cajita donde se indican todas las entradas y las salidas como la que se muestra a continuación:

Cajita representando un full adder

Ahora, para sumar un número de cuatro dígitos, tan sólo hay que “empalmar” cuatro sumadores completos de la siguiente manera:

Combinación de sumadores completos

Y voilà! Ya sabe usted cómo lo hace su ordenador para sumar números entre 0 y 15. Si quiere números más grandes, tan sólo tendrá que empalmar más sumadores completos por la izquierda.

Conclusiones

Ya que el objetivo de este capítulo no era hacer de usted un experto diseñador de circuitos electrónicos, le hemos enseñado sólo un ejemplo simple de cómo se combinan los transistores de su ordenador para utilizar esos 0 y 1 y hacer cosas útiles con ellos. El resto de operaciones (multiplicaciones, divisiones…) son más complicadas de crear, pero siguen procedimientos similares

Para saber un poquito más

Para saber en detalle cómo diseñar circuitos digitales complejos, así como el conocimiento en profundidad de los tipos de sistemas digitales más comúnmente usados, tiene disponibles gratuitamente y en PDF los apuntes de la asignatura Sistemas Digitales de la Universidad Pontificia de Salamanca.

Deja un comentario aquí