De la Taula de Veritat al Circuit Lògic
La taula de veritat conté totes les combinacions possibles de les entrades i els seus resultats:
A | B | C | D | F(A, B, C, D) |
---|---|---|---|---|
0 | 0 | 0 | 0 | 1 |
0 | 0 | 0 | 1 | 0 |
0 | 0 | 1 | 0 | 1 |
0 | 0 | 1 | 1 | 0 |
0 | 1 | 0 | 0 | 0 |
0 | 1 | 0 | 1 | 1 |
0 | 1 | 1 | 0 | 0 |
0 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 1 |
1 | 0 | 0 | 1 | 0 |
1 | 0 | 1 | 0 | 1 |
1 | 0 | 1 | 1 | 0 |
1 | 1 | 0 | 0 | 0 |
1 | 1 | 0 | 1 | 1 |
1 | 1 | 1 | 0 | 0 |
1 | 1 | 1 | 1 | 1 |
Es col·loquen els valors de la taula de veritat en un mapa de Karnaugh per identificar agrupacions:
Els grups es formen amb potències de 2 (1, 2, 4, 8...). Agrupem els 1s adjacents per simplificar l'expressió.
CD | |||||
---|---|---|---|---|---|
AB | 00 | 01 | 11 | 10 | |
00 | 1 | 0 | 0 | 1 | |
01 | 0 | 1 | 1 | 0 | |
11 | 0 | 1 | 1 | 0 | |
10 | 1 | 0 | 0 | 1 |
B'C'D'
B C D
B C' D
B' C D'
CD | |||||
---|---|---|---|---|---|
AB | 00 | 01 | 11 | 10 | |
00 | 1 | 0 | 0 | 1 | |
01 | 0 | 1 | 1 | 0 | |
11 | 0 | 1 | 1 | 0 | |
10 | 1 | 0 | 0 | 1 |
Combinant els termes simplificats, l'expressió resultant és:
F(A, B, C, D) = BCD + BC'D + B'D'
El següent pas és construir el circuit utilitzant:
El circuit resultant és més eficient i requereix menys portes lògiques.
Encara es pot simplificar més l'expressió booleana:
\[F(A, B, C, D) = BCD + BC'D + B'D'\]
Observem que podem agrupar termes:
\[F = BCD + BC'D + B'D'\]
Agrupem els dos primers termes:
\[F = B D (C + C') + B'D'\]
Com que \( C + C' = 1 \), es redueix a:
\[F = BD + B'D'\]
L'expressió final es pot escriure com:
\[F = B \odot D\]
Així doncs, la simplificació final de l'expressió és:
\[F(A, B, C, D) = B \odot D\]
Fixa't que podríem haver fet l'agrupació de 4 "1" interna i l'agrupació de les 4 cantonades de la taula de Karnaugh (recorda que és un toroide de taula) i ja ho tenim tot simplificat.
En l'àlgebra de Boole, la simplificació de funcions lògiques permet reduir el nombre de termes per optimitzar circuits digitals.
A · 1 = A
, A + 0 = A
A · A' = 0
, A + A' = 1
A · A = A
, A + A = A
A · (B + C) = A · B + A · C
A + A · B = A
(A + B) + C = A + (B + C)
, (A · B) · C = A · (B · C)
(A · B)' = A' + B'
, (A + B)' = A' · B'
NOT (¯): La sortida és la inversa del valor d'entrada.
Regla booleana: Y = A'
A | A' |
---|---|
0 | 1 |
1 | 0 |
AND (·): La sortida és 1 si totes les entrades són 1.
Regla booleana: A · B = AB
A | B | A · B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
OR (+): La sortida és 1 si almenys una de les entrades és 1.
Regla booleana: A + B
A | B | A + B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
NAND: La sortida és 0 només si totes les entrades són 1.
Regla booleana: A NAND B = (A · B)'
A | B | A NAND B |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
NOR: La sortida és 1 només si totes les entrades són 0.
Regla booleana: A NOR B = (A + B)'
A | B | A NOR B |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
XOR (⊕): La sortida és 1 si exactament un dels valors d'entrada és 1.
Regla booleana: A ⊕ B = (A · B') + (A' · B)
XNOR (⊙): La sortida és 1 si els valors d'entrada són iguals.
Regla booleana: A ⊙ B = (A · B) + (A' · B')
A | B | A ⊕ B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
A | B | A ⊙ B |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
Pots trobar si has fet la simplificació de portes lògiques correcta introduint la teva funció lògica no simplificada en un Google Colab del professor que ha implementat l'algorisme de Quine–McCluskey de la biblioteca python simpliqm. (Clica Open in Colab emprant el teu compte personal de Gmail per executar el codi python ja que no funciona amb email de centre).