Construir un circuito lógico simple consiste en traducir una condición a señales binarias, operadores booleanos y puertas conectadas en el orden correcto.
Un circuito lógico simple resuelve una regla concreta usando puertas como AND, OR, NOT, NAND, NOR, XOR o XNOR.
Para construirlo correctamente conviene partir de una descripción clara del problema y transformarla paso a paso en una expresión booleana.
El primer paso es determinar qué señales necesita el circuito. Cada señal se representa como una variable booleana.
Por ejemplo, si queremos activar una alarma cuando una puerta está abierta y el sistema está armado, podemos usar:
Después se define qué debe producir el circuito. La salida también es un valor binario.
En el ejemplo de la alarma, la salida puede llamarse S y significa "la alarma suena".
S = alarma activada
La condición del problema debe expresarse con operadores lógicos.
Si la alarma suena cuando la puerta está abierta y el sistema está armado, la expresión es:
S = A ∧ B
Esta expresión se implementa con una puerta AND.
Una vez obtenida la expresión, cada operador se reemplaza por una puerta lógica.
Las variables de entrada se conectan a las puertas que correspondan.
Regla: una lámpara se enciende si hay energía y el interruptor está activado.
L = E ∧ I
El circuito tiene una puerta AND con entradas E e I.
Regla: una notificación aparece si hay un mensaje nuevo o una alerta pendiente.
N = M ∨ A
El circuito se implementa con una puerta OR.
Regla: una compuerta se abre si el sensor de bloqueo no está activo.
C = ¬B
El circuito usa una puerta NOT para invertir la señal B.
Regla: un sistema se habilita si el usuario está autorizado y no hay error.
H = U ∧ ¬E
Primero se invierte E con una puerta NOT. Luego U y ¬E entran a una puerta AND.
Regla: una salida se activa si A y B están activas, o si C está activa.
S = (A ∧ B) ∨ C
El circuito se construye en dos pasos: A y B entran a una puerta AND; luego la salida de esa AND entra con C a una puerta OR.
Después de construir una expresión o circuito, conviene verificar su comportamiento con una tabla de verdad.
| A | B | C | A ∧ B | (A ∧ B) ∨ C |
|---|---|---|---|---|
| 0 | 0 | 0 | 0 | 0 |
| 0 | 0 | 1 | 0 | 1 |
| 0 | 1 | 0 | 0 | 0 |
| 0 | 1 | 1 | 0 | 1 |
| 1 | 0 | 0 | 0 | 0 |
| 1 | 0 | 1 | 0 | 1 |
| 1 | 1 | 0 | 1 | 1 |
| 1 | 1 | 1 | 1 | 1 |
A veces no partimos de una frase, sino de una tabla de verdad. En ese caso buscamos las filas donde la salida vale 1.
Por ejemplo, si la salida vale 1 solo cuando A = 1 y B = 0, la expresión es:
S = A ∧ ¬B
Esa expresión se traduce directamente a una puerta NOT para B y una puerta AND para combinar A con ¬B.
Antes de dibujar o implementar un circuito, conviene revisar si la expresión puede simplificarse.
S = (A ∧ B) ∨ (A ∧ ¬B)
Aplicando distributividad:
S = A ∧ (B ∨ ¬B)
Como B ∨ ¬B es una tautología, la expresión queda:
S = A
El circuito final no necesita puertas: la salida puede conectarse directamente a A.
El mismo método sirve para escribir condiciones en programas.
const habilitado = usuarioAutorizado && !hayError;
Esta condición equivale a la expresión U ∧ ¬E y puede representarse con una puerta NOT seguida de una puerta AND.
Construir circuitos lógicos simples es un ejercicio de traducción: una regla se convierte en variables, operadores booleanos y puertas conectadas. Este proceso permite pasar de una idea lógica a una implementación concreta.
En el próximo tema estudiaremos expresiones booleanas y circuitos equivalentes.