Las tablas de verdad se utilizan para dos propósitos principales, pero distintos:
-
Indica a una persona o programa que está implementando cierta lógica lo que se requiere que haga la lógica
-
Indica a una persona o programa que está usando algo de lógica lo que se debe esperar que haga la lógica
En cualquiera de las situaciones, una línea "no importa" en una entrada es una forma abreviada de indicar que el circuito en cuestión se comportará de manera idéntica cuando la entrada sea alta o baja. En muchos contextos, implicará que la entrada en cuestión no afectará o no afectará en absoluto al estado de salida; Idealmente, las excepciones a eso se anotarían claramente, 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 un punto de vista lógico combinatorio estático puro, las dos últimas líneas son redundantes. Hay, sin embargo, una razón importante para ellos. En su ausencia, si A
y B
son altos y Sel
cambia de alto a bajo, no habría 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
input es un máximo válido y cuando es un mínimo válido, pero solo las dos últimas líneas especifican el estado de salida cuando Sel
está en un nivel que no es ni alto ni bajo válido (p. ej., durante la transición).
Con respecto a los resultados, las especificaciones de "no importa" solo son relevantes cuando la verdad se usa para especificar qué lógica es necesario para hacer. Muchas herramientas de síntesis harán que las salidas se comporten de alguna manera específica para todas las combinaciones de entradas cuyo comportamiento no se especifique 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 debería hacer Q
si se configuran A
y B
. Es totalmente posible que esta lógica se coloque detrás de los circuitos que nunca configurarán A y B simultáneamente [por ejemplo. estarán activos en diferentes fases no superpuestas de un reloj de varias fases], en cuyo caso el Q=(A or B) and C
sería probablemente la realización óptima. En algunos idiomas, sin embargo, se requiere que las salidas sean bajas para combinaciones de entradas no especificadas, y en otros se requiere que las salidas mantengan su estado actual. Si la tabla de verdad incluyera una línea que especificara el estado de salida como "no importa" cuando A y B son altos, entonces una persona o programa que implementa el diseño sabría que Q=(A or B) and C
sería una realización aceptable. De lo contrario, si se requiriera que la salida mantuviera su valor cuando tanto A
como B
fueran altos, sería necesario agregar mucha complejidad adicional al circuito (¡incluso posiblemente un pestillo!), Pero tal complejidad no sirve ninguna función útil.