Las tablas de verdad se utilizan para dos propósitos principales, pero distintos:
En cualquiera de las dos situaciones, una línea de "no me importa" en un entrada es una forma abreviada de indicar que el circuito en cuestión se comportará de forma idéntica cuando la entrada sea alta o cuando sea baja. En muchos contextos, implicará que la entrada en cuestión no debe o no afectará en absoluto al estado de la salida; lo ideal sería que las excepciones a esto estuvieran claramente anotadas, pero en la práctica no lo están. Puede ser bueno tener una anotación para indicar esa situación. Por ejemplo, considere un mux con la siguiente tabla de verdad:
Sel A B Out
0 0 X 0
0 1 X 1
1 X 0 0
1 X 1 1
X 0 0 0
X 1 1 1
Desde el punto de vista de la lógica combinatoria estática pura, las dos últimas líneas son redundantes. Sin embargo, hay una razón importante para ellas. En su ausencia, si A
y B
son tanto altas como Sel
cambia de alto a bajo, no habría ninguna garantía de que la salida deba permanecer alta; para decirlo de otra manera, las primeras cuatro líneas definen el estado de la salida cuando Sel
es un alto válido y cuando es un bajo válido, pero sólo las dos últimas líneas especifican el estado de la salida cuando Sel
está en un nivel que no es ni alto ni bajo válido (por ejemplo, mientras está en transición).
En cuanto a las salidas, las especificaciones de "no importa" sólo son relevantes cuando la verdad se utiliza para especificar qué lógica es requerido hacer. Muchas herramientas de síntesis harán que las salidas se comporten de alguna manera específica para toda combinación de entradas cuyo comportamiento no esté especificado de otra manera. Considere, por ejemplo, la siguiente tabla de verdad:
A B C Q
0 0 X 0
1 0 0 0
0 1 0 0
1 0 1 1
0 1 1 1
Nada especifica explícitamente lo que el Q
debe hacer si A
y B
están ambos fijados. Es muy posible que esta lógica se coloque detrás de un circuito que nunca activará A y B simultáneamente [por ejemplo, estarán activos en diferentes fases no superpuestas de un reloj multifase], en cuyo caso Q=(A or B) and C
sería probablemente la realización óptima. En algunos lenguajes, sin embargo, se requiere que las salidas sean bajas para combinaciones no especificadas de entradas, y en otros se requiere que las salidas mantengan su estado actual. Si la tabla de verdad incluye una línea que especifica el estado de salida como "no me importa" cuando tanto A como B son altos, entonces una persona o un programa que implemente el diseño sabría que Q=(A or B) and C
sería una realización aceptable. En caso contrario, si se exigiera que la realización mantuviera su valor siempre que A
y B
fueran ambas altas, sería necesario añadir mucha complejidad adicional al circuito (¡incluyendo muy posiblemente un latch!), pero dicha complejidad no tendría ninguna función útil.