¿Por qué las implementaciones de suma de productos son más populares que las implementaciones de producto de sumas?

En mi libro sobre diseño de circuitos ( Fundamentals of Digital Logic with VHDL de Stephen Brown y Zvonko Vranesic ), los escritores siempre prefieren una suma de productos para representar e implementar circuitos simples.

En álgebra booleana, esta preferencia también se usa, pero creo que principalmente porque escribir sumas de productos es más fácil y más corto. Y tal vez más fácil de entender para los lectores.

Pero al implementar el uso de puertas lógicas, supongo que también se hacen otras consideraciones además de estas. Como costes y retrasos de las puertas.

Entonces, ¿hay alguna razón específica por la que se realicen preferentemente implementaciones de suma de productos? ¿Por qué las puertas AND son más baratas que las puertas OR? Leí sobre la realización del transistor de estas puertas, pero no recuerdo tal declaración.

Respuestas (5)

Por lo que aprendí en mis cursos de lógica digital, todo tiende a hacerse con NAND, ya que son más baratos y cualquier función booleana se puede realizar con NAND (o NOR, para el caso). Me imagino que las implementaciones de suma de productos (compuertas AND y OR) no son particularmente omnipresentes debido a esto.

Hmm, leí cómo las puertas AND y OR se pueden realizar con puertas NAND, sí. Entonces, probablemente, una compuerta AND requiere menos NAND que una OR. Lo que parece razonable :P ¿Pero son las NAND más baratas que las NOR?
@StevenRoose En un proceso CMOS estándar, sí. Los PFET suelen ser peores que los NFET, por lo que los PFET deben ser más grandes para coincidir con los menús desplegables de NFET. Con una puerta NOR, dos PFET están en serie y deben duplicarse en tamaño. Para una puerta NAND, tendría un área activa de, digamos, 8-10 unidades, y una puerta NOR tendría un área de quizás 14-20 dependiendo de la fuerza relativa de los PFET y NFET.
Vale la pena señalar que (a and b) or (c and d)es equivalente a (a nand b) nand (c nand d).

Aunque el producto de sumas y la suma de productos tienen una complejidad esencialmente equivalente (uno puede transformarse en el otro invirtiendo todas las entradas y salidas), creo que a la mayoría de las personas les resulta más fácil trabajar con la suma de productos. Por ejemplo, suponga que se debe seleccionar un chip ROM en las direcciones de memoria [durante las cuales MREQ estará activo] en 0xC000-0xFFFF, y también se supone que se debe seleccionar en la dirección 0x0000-0x3FFF si BANKSEL no está configurado. Su ecuación de selección podría escribirse en forma de suma de productos como:

UseROM = (MREQ & A15 & A14) # (MREQ & !A15 & !A14 & !BANKSEL)

La forma de producto de sumas correspondiente, suponiendo la misma polaridad de salida, sería

UseROM = MREQ & (A15 # !A14) & (!A15 # A14) & (A14 # !BANKSEL)

La forma de suma de productos identifica efectivamente las circunstancias en las que la salida debe estar activa, mientras que el producto de sumas identifica efectivamente las circunstancias en las que la salida debe estar inactiva. En el primero, hay dos términos de producto, cada uno de los cuales está claramente asociado con el acceso en uno de los dos rangos. En este último, hay cuatro factores, de los cuales sólo uno tiene una relación obvia con el comportamiento deseado. Se podría invertir el sentido de las entradas y salidas y obtener algo más parecido a lo primero:

DontUseROM = (!MREQ # !A15 # !A14) & (!MREQ # A15 # A14 # BANKSEL)

Eso reducirá la complejidad para que coincida con el primer ejemplo, pero es mucho menos intuitivo. De hecho, la única forma de entenderlo es averiguar qué debe suceder para que DontUseROM descienda, es decir, O el primero O el segundo factor debe disminuir. Y cada factor solo disminuirá cuando las entradas cumplan con TODAS las condiciones necesarias para que eso suceda. En otras palabras, de vuelta a la suma de productos.

La lógica invertida puede ser antinatural. Pasemos a la lógica cuantificada:

X : ( d tu C k ( X ) q tu a C k s ( X ) ) ( d o gramo ( X ) b a r k s ( X ) ) ( ¬ d tu C k ( X ) ¬ d o gramo ( X ) )

"Todo es o un pato (y graznidos), o un perro (y ladra) o bien no es ni pato ni perro".

Si anotamos el dual y luego usamos el de DeMorgan para cambiar la lógica, obtenemos algo poco natural:

Dual (hasta ahora todo bien):

¬ X : ¬ ( ( ( d tu C k ( X ) q tu a C k s ( X ) ) ( d o gramo ( X ) b a r k s ( X ) ) ( ¬ d tu C k ( X ) ¬ d o gramo ( X ) ) )

DeMorgan, paso 1:

¬ X : ¬ ( ( d tu C k ( X ) q tu a C k s ( X ) ) ¬ ( d o gramo ( X ) b a r k s ( X ) ¬ ( ¬ d tu C k ( X ) ¬ d o gramo ( X ) )

paso 2:

¬ X : ( ( ¬ d tu C k ( X ) ¬ q tu a C k s ( X ) ) ( ¬ d o gramo ( X ) ¬ b a r k s ( X ) ( d tu C k ( X ) d o gramo ( X ) )

"No existe una cosa que, simultáneamente:

  • es un no charlatán o un no pato; y
  • es un no ladrador o un no perro; y
  • es un pato o un perro, o ambos".

¿Que qué? :)

La suma de productos va de la mano con divide y vencerás. Una representación de suma de productos de una proposición la divide en todos los casos que independientemente la hacen verdadera. La proposición P es verdadera si tal y tal; o alguna situación; o si ese otro caso. La división en casos independientes ayuda a la claridad en el razonamiento.

Además, en la lógica de predicados y el razonamiento relacionado, generalmente tratamos con positivos, como "pato", y menos con negativos como "no pato". "non-duck" no es una clase de objeto. Las cosas se clasifican utilizando los atributos positivos que tienen, no los que no tienen. El espacio de las cosas que "no son patos" es ilimitado. Razonar con tales negativos es confuso.

En la lógica proposicional , como en la lógica de orden cero sin cuantificadores, como la que tratamos en los circuitos lógicos, podemos escribir la tabla de verdad completa. Puede resultar que el espacio negativo de una función sea, de hecho, más simple de caracterizar.

Por ejemplo, una fórmula booleana sobre cuatro variables tiene solo una tabla de 16 filas. Supongamos que hay tres filas para las que es verdadero y es falso en todas las demás. Luego se produce una fórmula simple dando esas tres combinaciones de cuatro variables y combinándolas con o .

Pero supongamos que la fórmula solo es falsa en tres filas. Entonces puede ser más conveniente y natural caracterizar estas excepciones, y expresarlo así: la fórmula es verdadera cuando las variables no están en esta combinación, y no en esta otra combinación, y no en esta tercera combinación. Los operadores not pueden luego distribuir en las combinaciones, produciendo un producto sobre las sumas.

Ejemplo positivo:

A B C D  P
0 0 0 0  0 
0 0 0 1  0
0 0 1 0  0
0 0 1 1  0
0 1 0 0  1 *
0 1 0 1  0
0 1 1 0  0
0 1 1 1  1 *    Sum of products:
1 0 0 0  0      P = A'BC'D' + A'BCD + ABC'D
1 0 0 1  0
1 0 1 0  0
1 0 1 1  0
1 1 0 0  0
1 1 0 1  1 *
1 1 1 0  0
1 1 1 1  0

Ejemplo negativo:

A B C D  P
0 0 0 0  1 
0 0 0 1  1
0 0 1 0  1
0 0 1 1  1
0 1 0 0  0 *
0 1 0 1  1
0 1 1 0  1
0 1 1 1  0 *    Product of sums:
1 0 0 0  1      P = (A'BC'D' + A'BCD + ABC'D)'
1 0 0 1  1      P = (A'BC'D')'(A'BCD)'(ABC'D)'
1 0 1 0  1      P = (A + B' + C + D)(A + B' + C' + D')(A' + B' + C + D')
1 0 1 1  1
1 1 0 0  1      Sum of products:
1 1 0 1  0 *    A'B'C'D' + A'B'C'D + A'B'CD' ... (10 more terms)
1 1 1 0  1
1 1 1 1  1

Aun así, a pesar de su sencillez, es algo difícil de entender la tercera fórmula (producto-de-sumas) en comparación con la segunda (producto-de-productos-negados). Sin embargo, la suma alternativa no simplificada de 13 productos también es difícil de entender debido a la gran cantidad de términos.

Agregaría que incluso cuando las cosas se expresan en forma de producto de sumas, el método normal de evaluación humana sería invertirlas para producir el producto de sumas. Si no existe nada que cumpla con los tres criterios, eso implica que todo debe 'fallar' al menos en uno; solo los patos que graznan fallan en el primero, solo los perros que ladran fallan en el segundo, y las cosas que no son ni perros ni patos fallan en el tercero. En otras palabras, de vuelta a la suma de productos.
En cuanto a su segundo ejemplo, sugeriría que la descripción más natural sería describirlo en términos de cuándo P es falso, usando la suma de productos e invirtiendo el resultado. Incluso con SOP no invertido, no hay necesidad de 13 términos. Creo que solo se necesitan cinco: !B + C!D + A!D + AC + !A!CD, por ejemplo.
Reformulé "es un pato o un perro excavado" porque pensé que "cavó" era un error tipográfico, luego me di cuenta de que "cavó" significa algo que es tanto un pato como un perro. Lo siento si hay alguna confusión.
Creo que el paso 1 de DeMorgan también está mal.

En primer lugar: como dijeron otros, es posible implementar todas las funciones lógicas utilizando únicamente puertas NAND o NOR.

Ahora, debido a su implementación de CMOS estático, la puerta NAND tiende a ser más rápida que la NOR. Esto se debe a que la puerta NAND tiene la ruta crítica como una serie de N transistores nMOS, donde N es la entrada:

El NOR, en cambio, tiene el camino crítico con una serie de N transistores pMOS.

ingrese la descripción de la imagen aquí

En las mismas condiciones, debido a la menor movilidad de los huecos que de los electrones, los pMOS son menos conductores que los nMOS, y por tanto es preferible utilizar compuertas NAND.

Creo que los aspectos del análisis humano son mucho más relevantes que la distinción entre las puertas NAND y NOR. SOP es equivalente a POS con entradas y salidas invertidas, y en muchos contextos uno puede invertir entradas y salidas "gratis". Si uno tiene una hoja de papel que es blanca excepto por unas pocas formas rectilíneas negras, uno podría describir el contenido del papel describiendo las áreas oscuras (formas) o describiendo todas las áreas blancas (espacios alrededor y entre ellas). En la mayoría de los casos, la primera descripción será más fácil.
@supercat es cierto que la inversión es casi gratuita, pero también es cierto que si un pMOS tiene la mitad de la transconductancia de un nMOS, una puerta NOR de 2 entradas necesitará pMOSes cuatro veces más grandes para equilibrarse, y pagará con la capacitancia de entrada . Y creo que la razón de análisis humano es bastante subjetiva.
En cada CPLD que he visto, cada entrada está disponible en forma normal e invertida, y casi todas las salidas de suma de productos también lo están (aunque algunas salidas de términos de un solo producto no lo están), y muchos compiladores lógicos de hecho traducir la lógica de una forma a otra cuando haría las cosas más eficientes (por ejemplo, convertir el término de tres Q = W # X # (Y & Z)en el término de dos !Q = (!W & !X & !Y) # (!W & !X & !Z)). La afinidad por la suma de productos no se basa en el hardware, ya que la elección de la representación del hardware puede no depender en absoluto de la representación del código fuente.
@clabacchio, ¿cómo jugará con la capacitancia y cómo ayuda en el caso de la puerta NOR?

el retraso de propagación a la puerta AND es menor que a la puerta OR, por lo que implementar la lógica en SOP es mejor que en POS. El segundo punto es el costo de la puerta, la puerta AND es más barata que la puerta OR.

Ninguna de estas afirmaciones es cierta en general. ¿Puede respaldar cualquiera de ellos con algún tipo de referencia o cita?
La implementación normal de SOP para expresiones (A and B) or (C and D)en hardware es mucho más probable (A nand B) nand (C nand D)que implique puertas de lógica positiva. Si se necesita una salida invertida, la realización (A and B) nor (C and D)puede ser útil (implementada como una compuerta de cuatro entradas que es un cruce entre nandy nor) pero, en general, las compuertas ANDo ORdeben construirse con NANDo NORseguidas por un inversor.
@supercat, ¿cómo se relaciona tu comentario con esta respuesta?
@SD7: Las compuertas AND y OR se usan con mucha menos frecuencia que las compuertas NAND, NOR e híbridas; si un circuito descrito usando AND y OR se implementa realmente usando puertas NAND, el retraso de propagación que tendría si se implementara usando puertas AND y OR no parece muy relevante.