No solo con las puertas estándar AND
, OR
y NOT
. Para el sumador de dos bits que toma los números de dos bits AB
y CD
, y genera un número de tres bits XYZ
, la tabla de verdad se ve así:
A B C D | X Y Z
0 0 0 0 | 0 0 0
0 0 0 1 | 0 0 1
0 0 1 0 | 0 1 0
0 0 1 1 | 0 1 1
0 1 0 0 | 0 0 1
0 1 0 1 | 0 1 0
0 1 1 0 | 0 1 1
0 1 1 1 | 1 0 0
1 0 0 0 | 0 1 0
1 0 0 1 | 0 1 1
1 0 1 0 | 1 0 0
1 0 1 1 | 1 0 1
1 1 0 0 | 0 1 1
1 1 0 1 | 1 0 0
1 1 1 0 | 1 0 1
1 1 1 1 | 1 1 0
El mapa de Karnaugh para Y
tiene este aspecto:
CD AB>
V 00 01 11 10
00 0 0 1 1
01 0 1 0 1
11 1 0 1 0
10 1 1 0 0
El problema es que ya que solo se permiten dos retardos de compuerta, y necesitamos ambos: uno para AND
junto a los bits de cada grupo, y otro para luego OR
esos grupos juntos Esto significa que los grupos que podemos especificar están limitados a aquellos que no contienen ningún NOT
s, es decir, solo los siguientes:
A B C D A*B A*C A*D B*C
. . x x . x x . . . . . . . . . . . x . . . . . . . . . . . . .
. . x x . x x . . . . . x x x x . . x . . . . . . . x x . . . .
. . x x . x x . x x x x x x x x . . x . . . x x . . x x . x x .
. . x x . x x . x x x x . . . . . . x . . . x x . . . . . x x .
B*D C*D A*B*C A*B*D A*C*D B*C*D A*B*C*D True
. . . . . . . . . . . . . . . . . . . . . . . . . . . . x x x x
. x x . . . . . . . . . . . x . . . . . . . . . . . . . x x x x
. x x . x x x x . . x . . . x . . . x x . x x . . . x . x x x x
. . . . . . . . . . x . . . . . . . . . . . . . . . . . x x x x
Tenga en cuenta que ninguno de estos grupos cubre el punto 1001
sin cubrir el punto 1101
, que necesitamos para Y
. Puede obtener los grupos correctos usando NAND
, NOR
o XNOR
; pero solo si cuentan como 1 retardo de puerta.
Tenga en cuenta que si está utilizando una tecnología como la lógica CMOS donde cada bit tiene un inverso disponible, la técnica de mapas de Karnaugh hace que este problema sea trivial, con una solución de ejemplo a continuación (donde a
es NOT A
, etc. ):
X = AC + ABD + BCD
Y = Acd + abC + Abc + aCd + aBcD + ABCD
Z = bD + Bd