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).
03 · Grupos
Encerrar unos
| A\B | 0 | 1 |
|---|---|---|
| 0 | m0 | m1 |
| 1 | m2 | m3 |
- 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
- 1Mapa = heatmap.
Unos calientes, ceros fríos: agrupar es encontrar las manchas (clustering visual).
- 2Gray = curva de Hilbert.
Ordenar para preservar vecindad: como índices espaciales en grillas.
- 3X = 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.
Agrupador
Σm(1,2,3) → A+B
Σm(1,2,3): A+B con 1 OR.
Preguntas para explorar
- Dejá solo m0 y m3. ¿Grupos? ¿Expresión? ¿Qué puerta es?
- Prendé todo. ¿Expresión? ¿Puertas?
- Apagá todo. ¿Qué significa una función 0?
Ver respuestas sugeridas
- Sin pares (diagonal): ~A·~B + A·B = XNOR. Dos minterms sueltos.
- 1 constante: 0 puertas (un cable a Vcc). El mejor circuito es ninguno.
- 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.