Minimizar la multiplicación de dos bits en la función binaria

0

las entradas son X = (x1, x0), Y = (y1, y0).

la salida es Z = (z3, z2, z1, z0).

el componente: Z = X * Y.

Tengo estas expresiones simplificadas por los mapas de Karnaugh: (* = AND / + = OR / ~ = NOT)

z3 = x1 * x0 * y1 * y0

z2 = x1 * (~ x0) * y1 + x1 * y1 * (~ y0)

z1 = x1 * (~ y1) y0 + x1 (~ x0) * y0 + (~ x1) * x0 * y1 + x0 * y1 * (~ y0)

z0 = x0 * y0

ahora quiero minimizar estas 4 expresiones con el menor número de componentes usando (Y / O / NO / NOR / NAND / XOR) cada componente tiene solo 2 entradas.

z0 Estoy seguro de que está minimizado (solo tiene un componente) y creo que también se minimiza z3.

¿Puede alguien mostrarme cómo minimizar z2 y z1?

es lo mejor que he encontrado, pero necesito minimizarlo para 7 puertas o menos (no 8)

    
pregunta STD

1 respuesta

1

Para poder mantenerme sano mientras escribo esta respuesta, usaré la nomenclatura con la que estoy más familiarizado.

  • \ $ \ bar x \ $ en lugar de ~ x
  • \ $ xy \ $ en lugar de x * y
  • \ $ x + y \ $ en lugar de x + y
  • \ $ x_0 \ $ en lugar de x0
  

¿Puede alguien mostrarme cómo minimizar z2 y z1?

Tratemos de \ $ z_2 \ $ primero. $$ \ begin {align} z_2 & = x_1 (\ bar x_0) y_1 + x_1y_1 (\ bar y_0) \\ z_2 & = x_1y_1 (\ bar x_0 + \ bar y_0) \\ z_2 & = x_1y_1 \ overline {x_0 y_0} \\ \ end {align} $$

Bien, ahora hemos terminado con \ $ z_2 \ $

Tiempo para \ $ z_1 \ $

$$ \ begin {align} z_1 & = x_1 (\ bar y_1) y_0 + x_1 (\ bar x_0) y_0 + (\ bar x_1) x_0y_1 + x_0y_1 (\ bar y_0) \\ z_1 & = x_1y_0 (\ bar y_1 + \ bar x_0) + x_0y_1 (\ bar y_0 + \ bar x_1) \\ z_1 & = x_1y_0 \ overline {y_1x_0} + x_0y_1 \ overline {y_0x_1} \\ \ end {align} $$

Entonces recapitulemos lo que realmente tenemos.

\ $ z_3 = x_0x_1y_0y_1 \\ z_2 = x_1y_1 \ overline {x_0 y_0} \\ z_1 = x_1y_0 \ overline {y_1x_0} + x_0y_1 \ overline {y_0x_1} \\ z_0 = x_0y_0 \ $

¿Puedes ver alguna expresión algebraica que se use varias veces en las 4?

Puedo ver que \ $ x_1y_0 \ $ y \ $ x_0y_1 \ $ se usan dos veces en \ $ z_1 \ $. Vamos a introducir dos señales. Una llamada \ $ A = x_1y_0 \ $ y \ $ B = x_0y_1 \ $.

Puedo ver que \ $ x_1y_0 \ $ y \ $ x_0y_1 \ $ hace \ $ z_3 \ $.

Puedo ver que \ $ z_0 \ $ es una parte de \ $ z_2 \ $.

Vamos a actualizar lo que tenemos.

\ $ z_3 = AB \\ z_2 = x_1y_1 \ overline {z_0} \\ z_1 = A \ overline {B} + B \ overline {A} = A \ oplus B \\ z_0 = x_0y_0 \\ A = x_1y_0 \\ B = x_0y_1 \ $

Contemos cuántas puertas tenemos.

\ $ z_3 = \ text {1 AND gate} \\ z_2 = \ text {2 AND gates, 1 NOT gate} \\ z_1 = \ text {1 XOR gate} \\ z_0 = \ text {1 AND gate} \\ A = \ text {1 AND gate} \\ B = \ text {1 AND gate} \ $

8, igual que tú. ¿Con cuál crees que necesitamos trabajar para reducir el número de puertas?

Creo que \ $ z_2 \ $, porque esa tiene la mayor cantidad de puertas. El problema es claramente cómo se agrega \ $ z_0 \ $ a \ $ z_2 \ $.

Entonces, ¿cómo podemos reescribir \ $ z_2 = x_1y_1 \ overline {x_0 y_0} \ $?

$$ \ begin {align} z_2 & = x_1y_1 \ overline {z_0} \\\\ z_2 & = (x_1y_1) \ overline {z_0} \\\\ z_2 & = \ overline {\ overline {(x_1y_1) \ overline {z_0}}} \\\\ z_2 & = \ overline {\ overline {(x_1y_1)} + \ overline {\ overline {z_0}}} \\\\ z_2 & = \ overline {\ overline {(x_1y_1)} + z_0} \\\\ \ end {align} $$

Eso es mejor! \ $ z_2 \ $ ahora requiere solo una puerta NOR y una puerta NAND. 2 puertas en lugar de 3. Misión cumplida.

Para mayor claridad, estas son las expresiones algebraicas finales que desea utilizar:

\ $ z_3 = AB \\ z_2 = \ overline {\ overline {(x_1y_1)} + z_0} \\ z_1 = A \ oplus B \\ z_0 = x_0y_0 \\ A = x_1y_0 \\ B = x_0y_1 \ $

    
respondido por el Harry Svensson

Lea otras preguntas en las etiquetas