Electrónica Digital · Tema 16

Mapas de Karnaugh

Simplificar con los ojos: vecinos lógicos como vecinos físicos, unos encerrados en rectángulos.

01 · Punto de partida

Adyacencia dibujada

El Tema 15 buscaba vecinos con XOR; Karnaugh los pone lado a lado usando orden Gray (00, 01, 11, 10: cambia 1 bit por paso). Encerrás unos en rectángulos de 1, 2, 4 u 8 y cada rectángulo es un producto simplificado.

  • ¿Por qué el orden no es 00, 01, 10, 11?
  • ¿Qué rectángulos valen?
  • ¿Los bordes se tocan?
  • ¿Hasta cuántas variables a mano?

02 · Orden Gray

Vecinos de verdad

Con orden binario, 01 y 10 quedan juntas pero difieren en 2 bits (falsa vecindad). Gray 00→01→11→10 cambia 1 bit siempre: lo adyacente en el mapa es adyacente en lógica. Los bordes opuestos también se tocan (el mapa es un cilindro, en 4 vars un toroide).

minterms → mapa Gray →rectángulos →suma mínima

03 · Grupos

Encerrar unos

Mapa 2 vars (filas A, columnas B en Gray).
A\B01
0m0m1
1m2m3
Par vertical (m1,m3) = B
Cambia A, queda B. Par horizontal (m2,m3) = A. Σm(1,2,3) = A+B (¡el Tema 15 dibujado!).
Diagonal NO
(m0,m3) difieren en 2 bits: no agrupan. El ojo aprende a no cruzar en diagonal.
Todo lleno = 1
Grupo de 4: se van A y B. Función constante sin puertas.
3 vars: mayoría
Grupos (m3,m7) = BC, (m5,m7) = AC, (m6,m7) = AB: AB+AC+BC otra vez, ahora visual.

04 · Límites

Hasta 4 a mano

2–4 variables

Ojo humano

Mapa dibujable, grupos visibles. El 90 % de los diseños discretos vive acá.

5+ variables

Software

Quine-McCluskey o Espresso en la PC: el método es el mismo, la escala no es manual.

Don't cares entran como comodines: se encierran si agrandan un grupo, se ignoran si no. BCD a display los usa (6 X por función).

05 · Mapas en código

Dibujar y agrupar

Mapa ASCII de 2 y 3 vars más validador de grupos.

Python en tu navegador. Dibujá tu función antes de agrupar.

def mapa2(mins):
    print("    B=0 B=1")
    for a in (0, 1):
        fila = "  ".join("1" if (a * 2 + b) in mins else "0" for b in (0, 1))
        print(f"A={a}  {fila}")
    return mins


mapa2([1, 2, 3])
mapa2([0, 3])

[1,2,3]: tres unos en L. [0,3]: diagonal (¡no agrupa!). ¿Qué grupos ves en cada uno?

Grupo válido

def grupo_valido(celdas, unos):
    celdas = list(celdas)
    if not all(c in unos for c in celdas):
        ok = False
    elif len(celdas) == 1:
        ok = True
    elif len(celdas) == 2:
        d = celdas[0] ^ celdas[1]
        ok = d != 0 and (d & (d - 1)) == 0
    elif len(celdas) == 4:
        ok = set(celdas) == {0, 1, 2, 3}
    else:
        ok = False
    print(f"{tuple(celdas)}: {'agrupa' if ok else 'NO agrupa'}")
    return ok


unos = {1, 2, 3}
grupo_valido((1, 3), unos)
grupo_valido((0, 3), {0, 3})
grupo_valido((0, 1, 2), unos)

06 · Analogía programador

Merge de regiones

  1. 1
    Mapa = heatmap.

    Unos calientes, ceros fríos: agrupar es encontrar las manchas (clustering visual).

  2. 2
    Gray = curva de Hilbert.

    Ordenar para preservar vecindad: como índices espaciales en grillas.

  3. 3
    X = wildcard.

    Comodín que completa grupos: como regex que acepta lo que convenga.

07 · Exploración

Laboratorio: agrupar tocando

Prendé celdas del mapa 2-var: el laboratorio agrupa solo (pares + cuádruple) y da la expresión mínima.

LABORATORIO 16

Agrupador

Σm(1,2,3) → A+B

Unosm1, m2, m3
Grupos(m2,m3)=A + (m1,m3)=B
MínimoA+B
Puertas1 OR

Σm(1,2,3): A+B con 1 OR.

Preguntas para explorar

  1. Dejá solo m0 y m3. ¿Grupos? ¿Expresión? ¿Qué puerta es?
  2. Prendé todo. ¿Expresión? ¿Puertas?
  3. Apagá todo. ¿Qué significa una función 0?
Ver respuestas sugeridas
  1. Sin pares (diagonal): ~A·~B + A·B = XNOR. Dos minterms sueltos.
  2. 1 constante: 0 puertas (un cable a Vcc). El mejor circuito es ninguno.
  3. 0 constante: cable a masa. También sin puertas.

08 · Comprensión

Confusiones frecuentes

«La diagonal agrupa»

m0 y m3 difieren en 2 bits: encierran XNOR, no un producto. Rectángulos, no diagonales.

«Grupo de 3»

Solo 1, 2, 4, 8: de a pares con reuso. Tres unos = un par + un suelto (o dos pares).

«Karnaugh resuelve todo»

Hasta 4 vars cómodo; 5 ya duele; después software. Idea eterna, mapa limitado.

«X siempre como 1»

Solo si agranda un grupo útil: X aislado se ignora (vale 0). Comodín, no obligación.

09 · Práctica guiada

Ejercicios de mapa

Ejercicio 1: Σm(0,1,2) en mapa

Dibujá, agrupá (0,1) y (0,2), escribí el mínimo. Verificá con el laboratorio.

Ver solución razonada

(0,1) = ~A; (0,2) = ~B. F = ~A+~B (NAND). m0 reusado en ambos grupos.

Ejercicio 2: wrap-around

Mapa 3 vars con unos en m0, m2, m4, m6. ¿Grupo? ¿Expresión? (Pista: columna entera.)

Ver solución

Grupo de 4 (columna C=0): F = ~C. Los bordes se pegan: 4 celdas, se van A y B.

Ejercicio 3: BCD inválido

Detector “dígito válido” (0–9) con 6 don't cares (10–15). ¿Mínimo? (Pista: ¿cuándo es 0?)

Ver solución

V = ~(A·B + A·C): es 0 solo con A=1 y (B o C). Los X absorben todo lo demás. Más fácil por los ceros.

10 · Síntesis

Ideas para recordar

  • Gray: vecinos físicos = vecinos lógicos.
  • Rectángulos de 2n; diagonal no; bordes se pegan.
  • Cada grupo = producto; reuso permitido.
  • X comodín; todo/ nada = constante.
  • Hasta 4 vars a mano; después software.

Mapa dominado. Ahora el método completo: en el próximo tema, diseño combinacional paso a paso.