En el diseño de procesadores, los elementos básicos son las puertas lógicas, que de manera combinada se utilizan para crear sistemas combinacionales y secuenciales que permiten las memorias y procesadores complejos que utilizan los ordenadores desde los albores de la informática. En este artículo os vamos a dar una clase maestra de lo que son las puertas lógicas junto a los sistemas combinacionales y secuenciales.
Ya os comentamos anteriormente, a través del artículo «¿Cómo se diseña el hardware? Así trabajan los ingenieros de diseño» las herramientas que a día de hoy se emplean para el diseño del hardware. En este artículo, en cambio, os introduciremos lo que son las puertas lógicas y los productos de la combinación de estas, los sistemas combinaciones y secuenciales.
Los tres elementos son estructuras tanto básicas cómo complejas que podéis encontrar en cualquier procesador de un ordenador, sea del tipo que sea. Dado que son los elementos básicos para su construcción. Así que se trata de un concepto que debéis tenéis muy claro y nos vamos a esmerar por despejarte todas las dudas. Mirad.
¿Qué son las puertas lógicas?
Las puertas lógicas son combinaciones de transistores que son las unidades mínimas para construir cualquier semiconductor, ya estemos hablando de la construcción de una memoria, ya sea volátil o no volátil, como de cualquier tipo de procesador. Por lo que cualquier semiconductor que se encuentra en un ordenador sea del tipo que sea, está compuesto de puertas lógicas, hasta el microcontrolador que controla la nevera que hay en tu cocina lo está.
Todas las puertas lógicas tienen un número determinado de entradas y una sola salida y se encargan de realizar una operación concreta sobre los datos de entrada sobre los pines. En cada pin se emite un pulso que es binario, ya que solo puede tener dos valores que los llamamos alto o 1 lógico o bajo o cero lógicos. Al contrario de la creencia popular, una señal baja no significa una señal sin electricidad, sino una con un voltaje más bajo.
Para poder visualizar mejor a nivel mental los ceros y los unos lógicos, pensad en ellos como un pulsador, el cual tiene solo dos posiciones. O como corrientes eléctricas donde la intensidad más alta siempre marca el valor 1 y la más baja es siempre cero. De esa forma, y en una sucesión infinitamente rápida, es como generamos toda la información que se computa y procesa por cualquier sistema informático.
Tipos de puertas lógicas
Existen diferentes tipos de puertas lógicas que realizan diferentes funciones y vamos a expresar también sus formulas. Vamos a explicártelas para que las entiendas de la manera más sencilla posible.
Nota: definimos ‘A’ y ‘B’ como estados de entrada; mientras que ‘Y’ lo definimos como estado de salida. Los estados bajos se refieren al valor ‘0’ y los estados altos hacen referencia a valor ‘1’.
NOT
Es la construcción más sencilla que existe, contando únicamente con una entrada y una salida. La puerta lógica NOT tiene la función de negación, es decir, que invierte el estado de la entrada en la salida.
Si introducimos un estado de entrada alto, obtendremos a la salida un estado bajo. Pero, si en la entrada tenemos un estado bajo, en la salida tendremos un estado alto. Podemos verlo más claramente en la siguiente tabla de la verdad:
A | Y |
---|---|
1 | 0 |
0 | 1 |
Debes saber que la línea sobre la letra ‘A’ nos indica la negación de la salida o, lo que es lo mismo, que es el estado contrario de la entrada.
AND
Tiene una estructura de dos entradas y una única salida lógica. Las puertas lógicas AND hacen la función de producto (multiplicación). Se expresa su funcionamiento mediante la siguiente tabla de la verdad:
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Como puedes ver, a la salida únicamente obtendremos un estado alto cuando los dos estados de entrada son altos. Para el resto de combinaciones, al existir un estado bajo, siempre obtendremos a la salida un estado bajo.
NAND
Sencillamente, este tipo de puerta lógica es la combinación de una puerta AND con una puerta NOT. El funcionamiento es el inverso de la puerta AND que hemos visto anteriormente. Obtendremos un estado de salida bajo solamente en el caso que los dos estados de entrada sean altos.
A | B | Y |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
OR
La función de esta puerta lógica es la de realizar una suma de los estados de entrada. Se caracteriza la puerta OR por ofrecer un estado de salida alto siempre que en la entrada tengamos al menos un estado de entrada alto. Esta tiene la siguiente tabla de la verdad:
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
NOR
Esta es la inversa de la OR. Su funcionamiento, por tanto, será el inverso del anterior. Tendremos en su salida solamente un estado alto cuando tengamos dos estados bajos a la entrada. El resto de combinaciones de estados siempre nos dará un estado bajo de salida. Se puede ver claramente en la siguiente tabla de estados:
A | B | Y |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
XOR
Vamos ahora con una puerta lógica un poco más compleja que recibe el nombre de XOR. Explicado de manera sencilla, la salida será de estado alto cuando las entradas sean diferentes entre sí. Quiere decir que solo obtendremos un estado de salida alto cuando una de las entradas sea de estado alto y la otra baja. Vamos a verlo más claramente en la siguiente tabla de la verdad:
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Esta puerta lógica tendría un funcionamiento que combina las puertas lógicas OR y NOR.
XNOR
Vamos ahora con la inversa de la puerta XOR que acabamos de ver. Ahora el estado de salida alto se dará únicamente cuando los dos estados de entrada sean igual. Si uno de los dos estados de entrada es diferente (por ejemplo: A=0 ; B=1) el estado de salida será bajo. Puedes verlo más claramente en la siguiente tabla:
A | B | Y |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
Sistemas combinacionales
Las combinaciones de puertas lógicas no son fijas y dan una gran versatilidad, se puede conseguir el mismo resultado haciendo uso con diferentes de ellas. El objetivo es la señal de entrada y la de salida en los diferentes casos sea exactamente la misma y, por tanto, tengan la misma función. Esto permite la creación de elementos más complejos, aunque algunos de ellos son tan comunes que se usan en todos los diseños.
Por lo que los sistemas combinacionales no son más que combinaciones complejas de puertas lógicas en las que las entradas y salidas se combinan para obtener circuitos más complejos. En casos concretos ocurre un efecto de emergencia donde a partir de una combinación de piezas simples, las propias puertas, se acaban creando elementos totalmente nuevos que no se deducen a simple vista y que al mismo tiempo son elementos básicos de estructuras más complejas.
En comparación con la biología, tened en cuenta que una serie de elementos básicos como las células pueden crear órganos, que a su vez son componentes de algo más complejo que es un ser vivo.
Ejemplos de sistemas combinacionales
Un ejemplo de sistemas combinacionales son los descodificadores, que convierten la señal de entrada en la selección de una salida y que son utilizados para acceder a los datos de una memoria RAM o en la unidad de control de un procesador. Otro tipo de circuitos combinacionales son las ALU de las unidades de ejecución de CPU y GPU que se encargan de realizar operaciones aritméticas con los datos de entrada.
Podemos dividir los circuitos combinacionales en dos tipos distintos:
- Elementos que sirven para efectuar operaciones de lógica y aritmética. Por ejemplo sumadores o multiplicadores de números.
- Elementos que sirven para la transmisión de datos como multiplexores, demultiplexores, codificadores, descodificadores, etc.
Al contrario que los sistemas secuenciales, los sistemas combinacionales no funcionan por ciclos de reloj y la señal de salida será obtenida «inmediatamente» de una punta a otra del circuito de manera inmediata.
Sistemas secuenciales
Lo que diferencia a los sistemas combinacionales de los secuenciales es el hecho de que como su nombre indica existe una secuencia de pasos, por lo que tiene que existir un elemento que controle no solo esos pasos, sino también que marque la duración de estos. A esto le llamamos la señal de reloj y la medimos por Hz o pulsos por segundo. El concepto de las velocidades de reloj en MHz o GHz viene de aquí.
Además, hemos de tener en cuenta que para dar el salto de una parte de la secuencia a otra ha de recordar el momento presente. Es decir, el pasado respecto al paso siguiente. Por lo que son la base para la construcción de memorias. Ya sean registros, cachés, RAM de todo tipo y hasta la NAND Flash de los SSD. Esto se debe a que con ellas se pueden construir elementos como los biestables y los latches que pueden almacenar bits de información. Como apunte, los registros de un procesador están compuestos por biestables, también conocidos como Flip-Flops.
Concepto de la señal de reloj
Los sistemas secuenciales utilizan necesitan una señal de reloj para funcionar, la cual cada determinada cantidad de tiempo reciben un pulso en alto, siendo la velocidad de reloj la inversa del tiempo de cada ciclo. (1/tiempo de cada ciclo). Por ejemplo, un procesador a 1 MHz cambia de bajo a alto 1 millón de veces por segundo. Un circuito complejo puede tener múltiples velocidades de reloj y fases en cada una de sus diferentes partes.
De cara a visualizar el funcionamiento de un sistema secuencial, imaginaos un grupo de personas que se encuentran en una habitación y que solo pueden pasar a siguiente habitación cuando suena un silbato, el cual es un ciclo de reloj. Pues lo mismo ocurre con la señal en un sistema secuencial donde el circuito no se recorre en un solo ciclo, sino en una secuencia. Es decir, los sistemas secuenciales funcionan por fases y la señal pasa de una parte a otra del circuito por ciclo de reloj.
Con todo lo que os hemos explicado llega el turno de que te preguntes si quieres mantener tu vocación de ser, en algún momento, diseñador de hardware y enfrentarte a estos desafíos a diario que tienen que ver con el diseño de uno de los componentes esenciales y que marcan, de alguna manera, los saltos tecnológicos más transcendentales de la industria informática.