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
Las puertas lógicas utilizadas en el diseño de memorias y procesadores son las siguientes:
- Puerta OR: la salida será un cero lógico cuando al menos en uno de los pines de entrada de la puerta OR hay un 1. En el caso de que todos los valores de entrada sean 0 entonces el valor de salida será 0.
- Puerta AND: la salida solo puede ser un uno lógico si todos los valores de entrada son unos lógicos. En cualquier otro caso la salida es siempre cero lógico.
- Puerta XOR: la salida es un uno lógico cuando solo uno de los pines de entrada reciben una señal en alto y el resto están en bajo, en el resto de casos el pulso de salida será bajo o cero lógico.
Luego tenemos lo que son las puertas lógicas negadas, estás en realidad invierten su valor de salida a través de un inversor, el cual también se le conoce como NOT. El cual no es una puerta lógica, simplemente se encarga de cambiar la señal de 0 a 1. Se utiliza para crear las puertas lógicas negadas, como las que os comentaremos a continuación.
- Puerta NOR: es la inversa de la puerta OR, la salida solo será uno lógico cuando todas las señales de entrada sean cero lógico. Al revés que la puerta OR la salida será cero lógico si al menos uno de las señales de entrada están en alto o uno lógico.
- Puerta NAND: es la inversa de la puerta AND por lo que la salida será siempre un uno lógico, excepto cuando todos los valores de entradas sean uno lógico, entonces la salida será cero lógico.
- Puerta XNOR: es la puerta XOR invertida. La salida es cero lógico cuando al menos una de las entradas es un uno lógico, en otras condiciones la salida será siempre uno lógico.
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.
Entendiendo el 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.