Mapa de Karnaugh
Jo˜
ao Paulo Cerquinho Cajueiro
24 de agosto de 2009
O chamado mapa de Karnaugh foi desenvolvido pelo matem´atico e f´ısico Maurice Karnaugh1 em 1953, enquanto trabalhava no grupo de pesquisas da empresa Bell. Este m´etodo ´e uma poderosa ferramenta para circuitos l´ogicos, pois permite simplificar equa¸c˜oes booleanas apenas agrupando ´areas comuns, o que nosso c´erebro consegue fazer bem mais rapidamente do que aplicando postulados e teoremas a equa¸c˜oes.
1
De diagramas de Venn a Mapas de Karnaugh
Utilizar os teoremas e postulados da ´algebra de Boole para simplificar equa¸c˜oes ´
e bastante tedioso, o que faz com que seja bem prov´avel que hajam erros no processo. Mas j´a vimos que as equa¸c˜oes da ´algebra de Boole podem ser visualizadas atrav´es de um diagrama de Venn. Isto ´e exemplificado na figura 1, que apresenta um diagrama de Venn de 3 vari´aveis com os respectivos mintermos associados a cada uma das regi˜oes.
a b
c
(a) Regi˜oes das vari´aveis
abc abc abc abc abc abc abc abc
(b) Sub-regi˜oes dos mintermos
Figura 1: Diagrama Venn com 3 vari´aveis.
Utilizando os diagramas, ´e f´acil obter a equa¸c˜ao simplificada da fun¸c˜ao. Por exemplo, considere-se a fun¸c˜ao f1 = abc + abc + abc. Desenhando esta fun¸c˜ao
num diagrama de Venn (figura 2), fica ´obvio que podemos simplific´a-la para f1= (a + c)b.
O problema aparece quando acrescentamos mais 1 vari´avel. Como fazer um diagrama definindo todas as 16 possibilidades? A solu¸c˜ao para isto ´e desenhar
1Aparentemente ele atualmente (entre outras coisas), escreve o blog unclej0.blogspot.com.
f1
Figura 2: Diagrama Venn definindo a regi˜ao dada por f1 = abc + abc + abc =
(a + c)b.
as regi˜oes como quadrados, e n˜ao como c´ırculos, assim como foi feito na figura 3. No lado direito desta figura temos at´e a representa¸c˜ao do lado de fora do diagrama propriamente dito de que regi˜oes correspondem a que vari´aveis.
abcd abcd abcd abcd
abcd abcd abcd abcd
abcd abcd abcd abcd
abcd abcd abcd abcd
a
b
c d
abcd abcd abcd abcd
abcd abcd abcd abcd
abcd abcd abcd abcd
abcd abcd abcd abcd
Figura 3: Diagrama Venn de 4 vari´aveis desenhado com regi˜oes quadradas. Este diagrama de Venn modificado j´a ´e o pr´oprio mapa de Karnaugh, onde no mapa as regi˜oes em que a fun¸c˜ao ´e verdadeira s˜ao marcadas com 1, e em que a fun¸c˜ao ´e falsa s˜ao marcadas com 0.
2
Mapas de Karnaugh
Cada regi˜ao (quadrado) em um mapa de Karnaugh corresponde a uma linha na tabela verdade. Ou seja, cada regi˜ao corresponde a um mintermo e a um maxtermo. A figura 4 mostra os mintermos correspondentes a cada uma das regi˜oes. Nela tamb´em est´a presente o n´umero correspondente a cada mintermo
ou maxtermo. a b c d 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10
abcd abcd abcd abcd
abcd abcd abcd abcd
abcd abcd abcd abcd abcd abcd abcd abcd
Figura 4: Regi˜oes correspondentes a mintermos de um mapa de Karnaugh Note na figura 4 que os vizinhos de cada casa em um mapa de Karnaugh s˜ao tais que apenas muda uma vari´avel de cada vez. Por exemplo, da casa 5 para a casa 1 (acima) s´o muda o b, da 5 para a 7 (direita) s´o muda o c, da 5 para a 4 (esquerda) s´o muda o d e da 5 para a 13 (abaixo) s´o muda o a. Isto ´e v´alido para todas as casas.
´
E poss´ıvel aplicar isto inclusive para as casas nas bordas e nas quinas, pois podemos considerar que o mapa d´a a volta em si mesmo. Deste modo considera-se a casa 6 como vizinha da 4 e s´o muda a vari´avel c, e a casa 10 vizinha da 2 e s´o muda a vari´avel a.
Isto nos permite agrupar termos visualmente. Por exemplo, considere a fun¸c˜ao f2=Pm(3, 7, 12, 13) e seu respectivo mapa de karnaugh na figura 5.
f2=Pm(3, 7, 12, 13) a b c d 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 0 0 1 0 0 0 1 0 0 0 0 0 1 1 0 0 abc acd
Figura 5: Fun¸c˜ao f2 e simplifica¸c˜ao por agrupamento de casas vizinhas.
Analisando a fun¸c˜ao f2por ´algebra de Boole, vemos que podemos simplific´
a-la aplicando o teorema T6. E observando no mapa de Karnaugh, os termos que s˜ao unidos e simplificados s˜ao justamente os vizinhos.
f2= abcd + abcd | {z } T 6 + abcd + abcd | {z } T 6 f2= acd + abc
Ou seja, o agrupamento de 2 casas vizinhas corresponde `a simplifica¸c˜ao de uma vari´avel atrav´es da aplica¸c˜ao to teorema T6. Basta ver no pr´oprio mapa quais s˜ao as vari´aveis que n˜ao mudam dentro do agrupamento.
Para simplificar 2 ou mais vari´aveis basta aplicar o teorema repetidas vezes. Simplifiquemos a fun¸c˜ao f3 (vide figura 6), por exemplo. Basta agruparmos a
fun¸c˜ao de duas em duas casas e 2 grupos vizinhos de duas casas viram um ´unico grupo de 4 casas, retirando mais uma vari´avel da fun¸c˜ao.
f3= abcd + abcd | {z } + abcd + abcd | {z } = abc + abc | {z } f3= ac f3 a b c d 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0
⇒
f3 a b c d 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 0 0 0 0 0 0 0 0 1 1 0 0 1 1 0 0Figura 6: Agrupamento das casas da fun¸c˜ao f3.
Este mesmo procedimento pode ser mostrado para agrupamentos de 8 casas (simplificando ent˜ao 3 vari´aveis) ou 16 casas (simplificando 4 vari´aveis. A figura 7 mostra algumas possibilidades de agrupamentos de 2, 4 e 8 casas2, junto com
o produto respectivo. Claro que num mapa de Karnaugh de 4 vari´aveis um agrupamento de 16 casas seria todo o mapa e corresponderia a fun¸c˜ao 1.
2Exemplos utilizados tamb´em no artigo original de Karnaugh: “The map method for
bcd a b c d 0 0 0 0 0 1 0 0 0 0 0 0 0 1 0 0 abd a b c d 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 abd a b c d 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 bcd a b c d 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0
(a) agrupamentos de 2 casas
cd a b c d 0 1 0 0 0 1 0 0 0 1 0 0 0 1 0 0 ab a b c d 0 0 0 0 0 0 0 0 1 1 1 1 0 0 0 0 a d a b c d 1 0 0 1 1 0 0 1 0 0 0 0 0 0 0 0 b d a b c d 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 (b) Agrupamentos de 4 casas b a b c d 0 0 0 0 1 1 1 1 0 0 0 0 1 1 1 1 d a b c d 1 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 c a b c d 0 0 1 1 0 0 1 1 0 0 1 1 0 0 1 1 b a b c d 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 (c) Agrupamentos de 8 casas
Figura 7: Exemplos de mapas de karnaugh com os correspondentes produtos alg´ebricos.
2.1
Mapas de n vari´
aveis
Claro que um mapa de Karnaugh pode ser feito com um n´umero menor de vari´aveis. Para tanto basta simplesmente sair dividindo o mapa. Tem-se apenas que lembrar que uma casa deve ter n vizinhas, j´a que a simplifica¸c˜ao de uma vari´avel corresponde a unir uma casa com a vizinha. Isto ´e mostrado na figura 8 para mapas de 2, 3 e 4 vari´aveis.
a b 0 1 2 3 (a) Mapa de 2 vari´aveis a b c 0 1 3 2 4 5 7 6
(b) Mapa de 3 vari´aveis
a b c d 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10
(c) Mapa de 4 vari´aveis
Figura 8: Mapas de Karnaugh de 2, 3 e 4 vari´aveis, mostrando que cada casa tem n vizinhas.
Mas como aplicar este princ´ıpio para fun¸c˜oes com mais de 4 vari´aveis? ´
E imposs´ıvel fazer um mapa no plano onde cada uma das regi˜oes tem 5 (ou mais) vizinhos. Uma maneira (n˜ao muito pr´atica) ´e trabalhar com um mapa tridimensional como exemplifica a figura 9 que mostra um mapa de Karnaugh de 6 vari´aveis, note que cada casa tem 6 vizinhos: 4 no plano (como no mapa de 4 vari´aveis) e 2 verticais.
Na pr´atica, um mapa de 5 vari´aveis ´e desenhado como 2 de 4 vari´aveis, sendo um com uma vari´avel (em geral a mais significativa) sendo 0 e o outro com a mesma vari´avel sendo 1. Usa-se este mesmo princ´ıpio para mapas de 6 vari´aveis ou mais vari´aveis, como pode ser visto na figura 10.
c d e f 32 33 35 34 36 37 39 38 44 45 47 46 40 41 43 42 c d e f 48 49 51 50 52 53 55 54 60 61 63 62 56 57 59 58 c d e f 16 17 19 18 20 21 23 22 28 29 31 30 24 25 27 26 c d e f 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 a b
Figura 9: Mapa de Karnaugh tridimensional de 6 vari´aveis.
b c d e 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 b c d e 16 17 19 18 20 21 23 22 28 29 31 30 24 25 27 26 a
(a) 5 vari´aveis
c d e f 32 33 35 34 36 37 39 38 44 45 47 46 40 41 43 42 c d e f 48 49 51 50 52 53 55 54 60 61 63 62 56 57 59 58 c d e f 16 17 19 18 20 21 23 22 28 29 31 30 24 25 27 26 c d e f 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 a b (b) 6 vari´aveis
3
Soma de produtos e produto de somas
At´e o momento trabalhamos com o mapa de Karnaugh agrupando os 1’s para gerar fun¸c˜oes na forma soma de produtos, mas podemos agrupar os zeros tam-b´em, gerando equa¸c˜oes na forma produto de somas, como mostra a figura 11 para a fun¸c˜aof4= ac + a(b + cd).
f4(a, b, c, d) a b c d 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 0 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 a + c b + c + d a + b + c
Figura 11: Mapa de Karnaugh com agrupamento de 0’s.
Da mesma forma que na tabela verdade, um 0 no mapa de Karnaugh cor-responde a um maxtermo. Logo o agrupamento de 2 casas com 0 corcor-responde a uma soma com n − 1 termos (onde n ´e o n´umero de vari´aveis da fun¸c˜ao), o agrupamento de 4 casas equivale a uma soma de n − 2 vari´aveis e assim por diante.
No caso de agrupamento de zeros, deve-se tomar cuidado com a rela¸c˜ao entre uma regi˜ao marcada e como a vari´avel aparece na equa¸c˜ao. Por exemplo, na figura 11 a regi˜ao a + c ocorre onde est´a marcado a no mapa, e n˜ao onde est´a marcado a. A explica¸c˜ao para este fenˆomeno ´e a mesma dos maxtermos na tabela verdade terem as vari´aveis barradas em rela¸c˜ao aos mintermos corres-pondentes. Isto torna a an´alise do mapa por agrupamento de 0’s bem menos intuitiva. f5 a b c d 0 1 3 2 4 5 7 6 12 13 15 14 8 9 11 10 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 1
Figura 12: Exemplo de equa¸c˜ao minimizada por agrupamento de 1’s e de 0’s. A partir do mapa de Karnaugh, podemos obter a equa¸c˜ao na forma produto de somas, juntando os zeros; ou na forma soma de produtos, juntando os uns.
As duas formas obtidas da fun¸c˜ao f5da figura 12 s˜ao mostradas abaixo e apesar
de aparentarem ser diferentes, elas s˜ao, de fato, equivalentes.
f5= (a + b + c) a + b + d a + c + d a + b + c + d (1)
f5= a b + a c + b d + c d + a b c (2)
Come¸cando da equa¸c˜ao na forma produto de somas, multiplicamos os dois primeiros parˆenteses e os dois ´ultimos e obtemos:
f5= a + a b + a d + b + b d + b c + a d + c d ·
· a b + a c + a d + a c + b c + c d + a d + b d + c d + d (3) Retirando os v´arios termos redundantes, chega-se a:
f5= a + b + c d a b + a c + d + a c + b c (4)
Multiplicando novamente, obtˆem-se:
f5= a b + a c + a d + a b c + a b c + b d + a b c + a b c d + c d + a c d + b c d (5)
Onde novamente temos v´arios termos redundantes que simplificam em: f5= a b + a c + a d + b d + a b c + c d (6)
Note que podemos usar o teorema do consenso nos segundo, terceiro e ´ultimo termo, retirando ent˜ao o terceiro termo. Com isso, obt´em-se a equa¸c˜ao (2) obtida por soma de produtos.
Mostra-se ent˜ao que a equa¸c˜ao (1) ´e equivalente `a (2), q.e.d..
4
Equa¸
c˜
oes e circuitos n˜
ao-completamente
espe-cificados.
´
E bastante comum a situa¸c˜ao de que determinadas entradas de um circuito l´ogico nunca ocorram. Como exemplo imagine-se uma esteira carregando uma caixa de um lado para o outro, com sensores de fim de curso em ambas extremidades: se do lado esquerdo e sd do lado direito. No funcionamento normal do sistema
estes dois sinais nunca ser˜ao acionados ao mesmo tempo; nesta situa¸c˜ao n˜ao importa qual ´e o resultado do circuito para se = sd = 1, j´a que esta situa¸c˜ao
nunca vai existir, portanto n˜ao ´e necess´ario especificar um valor de sa´ıda para esta situa¸c˜ao. Diz-se ent˜ao que este circuito ´e n˜ao-completamente especificado. A tabela 1 mostra o exemplo de um sinal imagin´ario z determinado em fun¸c˜ao de a, se e sd. Neste exemplo, sempre que se= sd = 1 a sa´ıda z ´e n˜
ao-especificada, ou seja, z n˜ao-importa nestas situa¸c˜oes. Neste texto utilizaremos a nota¸c˜ao ×3 para identificar as situa¸c˜oes que um sinal n˜ao importa.
Pode-se descrever uma fun¸c˜ao l´ogica n˜ao-completamente especificada na forma soma de mintermos ou produto de maxtermos utilizando a nota¸c˜ao d(· · · ), que vem do inglˆes don’t care. Desta forma o sinal z pode ser descrito por:
z = X
m(2, 4, 6) + d(3, 7) =
Y
M(0, 1, 5) + d(3, 7) (7)
a se sd z 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 × 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 ×
Tabela 1: Exemplo de uma fun¸c˜ao n˜ao completamente especificada. As sa´ıdas n˜ao especificadas s˜ao identificadas por ×. Outras nota¸c˜oes comumente usadas s˜ao *, - ou d.
Um × na sa´ıda pode ser implementado como um 1 ou um 0, e n˜ao se sabe a princ´ıpio qual destes dois valores gerar´a uma solu¸c˜ao mais minimizada, logo para obter o menor circuito poss´ıvel o engenheiro deveria obter as equa¸c˜oes considerando que cada × pode ser 1 ou 0 e checar qual ´e o menor circuito final. Obviamente para problemas com muitos ×’s isto se torna impratic´avel, pois seria necess´ario implementar 2k circuitos, onde k ´e o n´umero de ×’s presentes.
Felizmente o mapa de Karnaugh facilita bastante a implementa¸c˜ao de circui-tos n˜ao-completamente especificados, pois podemos considerar se determinado × ´e 1 ou 0 visualmente, na hora da implementa¸c˜ao.
z a se sd 0 1 3 2 4 5 7 6 1 0 × 1 0 0 × 1
Figura 13: Mapa de Karnaugh da fun¸c˜ao z.
Ao minizarmos a fun¸c˜ao z pelo mapa de Karnaugh (figura 13) obtemos 2 fun¸c˜oes:
z0 = se+ sda (pelos 1’s) (8)
z00= sd(se+ a) (pelos 0’s) (9)
Note que, neste caso, estas duas equa¸c˜oes n˜ao s˜ao equivalentes; ou seja, n˜ao ´e poss´ıvel sair de uma delas e chegar na outra por ´algebra de Boole, como j´a foi feito na se¸c˜ao 3 para f5. Isto porque na minimiza¸c˜ao por soma de produtos foi
considerado que os ×’s eram 1, enquanto que em produto de somas eles foram considerados como sendo 0.
Esta situa¸c˜ao ´e bastante comum ao minimizar fun¸c˜oes n˜ao completamente especificadas, por´em, apesar de estranho, n˜ao causa nenhum problema, j´a que as diferen¸cas nas sa´ıdas ocorrem justamente quando n˜ao importa o valor da sa´ıda, seja por que aquela entrada nunca ocorre ou por outra raz˜ao qualquer.