39. Funciones discretas en circuitos digitales

Un circuito digital implementa una función booleana mediante compuertas lógicas conectadas con cables. Cada compuerta es una función discreta elemental; al combinarlas se construyen calculadoras, memorias y procesadores.

39.1 Introducción

Los temas anteriores estudiaron funciones booleanas de forma abstracta: tablas de verdad, álgebra y leyes de simplificación. En hardware, esas funciones se materializan como **circuitos digitales** que procesan señales eléctricas con dos niveles estables: bajo (0) y alto (1).

Cada circuito combinacional define una función discreta f : Bⁿ → Bᵐ: varias entradas binarias producen una o más salidas binarias, sin memoria interna del estado previo.

39.2 Compuertas Lógicas

Las **compuertas** son los bloques elementales. Cada una implementa una operación booleana básica:

Compuerta Símbolo lógico Función
NOT¬pInvierte la entrada
ANDp ∧ q1 solo si ambas entradas son 1
ORp ∨ q1 si al menos una entrada es 1
XORp ⊕ q1 si las entradas son distintas
NAND¬(p ∧ q)Negación de AND (completa universalmente)

Con NOT, AND y OR (o solo NAND) puede construirse cualquier función booleana de n variables.

39.3 De la Función al Circuito

Para implementar una función booleana como circuito:

  1. Expresar la función en forma lógica (suma de productos, producto de sumas, etc.).
  2. Asignar una compuerta a cada operador (∧ → AND, ∨ → OR, ¬ → NOT).
  3. Conectar las salidas de las compuertas a las entradas de las siguientes según la expresión.
  4. Verificar con la tabla de verdad que el circuito reproduce la función deseada.
Ejemplo: f(p, q) = p ∧ ¬q Entrada p ──┬──► AND ──► Salida f │ Entrada q ──► NOT ──┘

39.4 Circuitos Combinacionales Simples

Semisumador (half adder): suma dos bits sin acarreo de entrada. Produce suma (S) y acarreo (C):

S = p ⊕ q (suma binaria) C = p ∧ q (acarreo) p=1, q=1 → S=0, C=1 (representa 2 en binario: 10)

El semisumador es un ejemplo de función discreta con **dos salidas** definida sobre B² → B². Combinando varios sumadores se construye la aritmética entera del procesador.

39.5 Simulador: Circuito Lógico Interactivo

Selecciona un circuito, asigna valores a las entradas p y q, y observa cómo las señales recorren las compuertas hasta las salidas. Los nodos en verde representan señal alta (1) y en rojo señal baja (0).

Simulador de Compuertas Salida: 0
p: q:
Circuito AND: salida = p ∧ q. Con p=0, q=0 → salida = 0.

39.6 Simulación de Circuitos en Programación

Un circuito combinacional puede simularse en software modelando cada compuerta como una función y propagando señales de entrada a salida.

const AND = (a, b) => a && b;
const OR  = (a, b) => a || b;
const NOT = (a)     => !a;
const XOR = (a, b) => Boolean(a) !== Boolean(b);

// Circuito: f(p,q) = p AND (NOT q)
function circuitoEjemplo(p, q) {
  const nq = NOT(q);
  return AND(p, nq);
}

// Semisumador: dos salidas [suma, acarreo]
function semisumador(p, q) {
  return [XOR(p, q), AND(p, q)];
}

console.log("p AND (NOT q) con p=1,q=0:", circuitoEjemplo(true, false));
// p AND (NOT q) con p=1,q=0: true

console.log("Semisumador p=1,q=1:", semisumador(true, true));
// Semisumador p=1,q=1: [false, true]  → S=0, C=1

// Tabla de verdad del semisumador
for (const p of [0, 1]) {
  for (const q of [0, 1]) {
    const [s, c] = semisumador(!!p, !!q);
    console.log(`p=${p} q=${q} → S=${+s} C=${+c}`);
  }
}

39.7 Errores Comunes

  • Confundir circuitos combinacionales con secuenciales: Los combinacionales no tienen memoria; la salida depende solo de las entradas actuales. Los flip-flops y registros sí almacenan estado.
  • Olvidar propagar el acarreo: Un semisumador solo suma dos bits; para sumar números de varios bits se necesita un sumador completo que encadene acarreos.
  • Asumir que XOR es OR: XOR vale 0 cuando ambas entradas son 1; OR vale 1 en ese caso.
  • No verificar con todas las entradas: Un circuito debe probarse con las 2ⁿ combinaciones posibles antes de darse por correcto.

39.8 Qué debes recordar de este tema

  • Un circuito digital implementa una función discreta f : Bⁿ → Bᵐ.
  • Las compuertas AND, OR, NOT (y XOR) son bloques elementales.
  • Cualquier función booleana puede construirse combinando compuertas.
  • El semisumador calcula S = p ⊕ q y C = p ∧ q.
  • Los circuitos pueden simularse en software propagando señales binarias.

39.9 Conclusión

Los circuitos digitales son la materialización física de las funciones booleanas. Desde una compuerta AND hasta un microprocesador, la lógica discreta gobierna el procesamiento de información en hardware.

Con esto cerramos el bloque de lógica booleana y circuitos. En el próximo tema abordaremos las **aplicaciones de relaciones discretas en programación**, integrando conjuntos, relaciones, funciones y lógica en problemas prácticos de desarrollo de software.