Un circuito combinacional de varias salidas produce varias funciones booleanas a partir de las mismas entradas, como las siete señales de segmentos de un decodificador de pantalla o las salidas de suma y acarreo de un sumador. Minimizar cada salida por separado da una expresión válida para cada una, pero puede repetir el mismo término producto en varias salidas. Comparar las salidas puede revelar lógica que se puede compartir.
Compartir es una optimización del circuito: cada salida debe conservar su función correcta y el término compartido debe alimentar todas las salidas que lo utilizan. Que mejore el diseño depende del coste objetivo, incluida la carga del nodo, las puertas disponibles y la temporización.
Qué pasa por alto la minimización separada
Un mapa K de una sola salida responde una pregunta concreta: ¿qué cobertura implementa esta función en forma SOP o POS? En un circuito de varias salidas surge otra pregunta: ¿puede un mismo término servir para más de una salida? Dibujar un mapa separado para cada salida sigue siendo un buen primer paso, pero no compara los términos resultantes entre mapas.
En forma SOP, a menudo se puede generar una sola vez un término producto idéntico y conectarlo a las redes OR de varias salidas. POS tiene la posibilidad dual de compartir términos suma. Los valores lógicos siguen siendo equivalentes; cambia la estructura del circuito. Se parece a la factorización de un circuito multinivel (en inglés), aunque aquí el nodo compartido alimenta salidas distintas.
Ejemplo resuelto con dos salidas
Supongamos que tenemos dos salidas:
F₂ = AB + AD
Minimizada cada una por separado, cada salida contiene dos términos producto. Una implementación directa genera AB para F₁ y lo vuelve a generar para F₂, además de AC y AD: cuatro generadores de términos producto en total. Como AB es idéntico en ambas funciones, se puede generar una vez y enviar a las dos redes de salida:
F₁ = P₁ + AC
F₂ = P₁ + AD
Esta estructura necesita tres generadores de términos producto distintos (AB, AC y AD) en vez de cuatro, y conserva ambas funciones de salida. La lógica OR de F₁ y F₂ sigue presente. Este recuento compara solo los generadores producto; no demuestra cuál es el circuito físico más pequeño o rápido para toda biblioteca de puertas.
También puede haber otra implementación mediante factorización algebraica, por ejemplo F₁ = A(B + C). Compara la compartición de términos y la factorización como opciones distintas: una puede reducir lógica repetida y la otra cambia la profundidad. La guía de simplificación algebraica y la de implementación solo con NAND/NOR (en inglés) explican transformaciones relacionadas.
Proceso práctico para varias salidas
- Escribe una tabla de verdad completa para cada salida. Mantén el mismo orden de entradas y numeración de filas en todas las tablas. Marca una indiferencia solo cuando esa salida realmente no esté especificada para esa combinación.
- Encuentra una cobertura válida mínima por salida. Usa la forma SOP o POS requerida y el criterio de coste indicado. La guía de cobertura de mapas K explica por qué hay que elegir grupos como una cobertura completa, no de forma codiciosa celda por celda.
- Compara los términos entre salidas. Anota los términos producto o suma idénticos y comprueba cuáles se pueden generar una vez y reutilizar. Busca también subexpresiones comunes que puedan factorizarse.
- Vuelve a comprobar cada salida. Compartir un término no debe cambiar ninguna fila de la tabla. Después evalúa la cantidad de puertas, la carga, la profundidad, las cargas eléctricas y la temporización según las restricciones del diseño.
Una forma práctica de aprender el método es simplificar cada salida por separado y luego comparar los términos manualmente. Este solucionador minimiza una función booleana a la vez; no elige por sí solo una red compartida globalmente óptima para varias salidas.
Criterios de coste y límites
No existe un único criterio que represente todos los objetivos de diseño. Compartir puede reducir puertas duplicadas, pero aumenta la carga del nodo y quizá requiera búferes. Una red factorizada puede usar menos puertas, pero añadir etapas. Un diseño puede priorizar área, retardo, consumo, número máximo de entradas por puerta o las celdas preferidas de una biblioteca. Define el objetivo antes de llamar “más pequeño” a un circuito.
La misma distinción aparece en aplicaciones: un decodificador BCD a 7 segmentos tiene siete salidas que conviene considerar en conjunto, y una ALU combina varias funciones de resultado y estado. Consulta el ejemplo del decodificador, la comparación de sumadores y cómo usa lógica booleana una ALU (en inglés). Para pulsos en transiciones físicas, revisa también los riesgos estáticos y términos de consenso.