CAPÍTULO 5 – MAPA DE KARNAUGH
1. INTRODUÇÃO
Mapa de Karnaugh é um método de simplificação gráfico criado por Edward Veitch (1952) e aperfeiçoado pelo engenheiro de telecomunicações Maurice Karnaugh. Chamamos esse diagrama de mapa, visto este ser um mapeamento biunívoco a partir de uma tabela verdade da função que está a ser analisada.
Ele é utilizado para simplificar uma equação lógica ou para converter uma tabela verdade no seu circuito lógico correspondente.
O método de leitura por "mapa de Karnaugh" é considerado mais simples que a "álgebra booleana", pois elimina o problema de erro nas simplificações. Porém quando utilizado mais de 6 entradas, esse método se torna complicado, pois fica difícil identificar as células adjacentes no mapa. Para esse caso são utilizadas soluções algorítmicas computacionais.
(http://pt.wikipedia.org/wiki/Mapa_de_Karnaugh)
Um mapa de Karnaugh para duas variáveis pode ser montado da seguinte forma (*):
- Tabela da verdade:
B A Y
0 0 Y1
0 1 Y2
1 0 Y3
1 1 Y4
- Mapa de Karnaugh:
A=0 A=1
A
B 0 1
B=0 0 Y1 Y2
B=1 1 Y3 Y4
(*) Existe outra forma para representar o mapa de Karnaugh e obter resultados semelhantes, porém, em nosso curso adotaremos o sistema apresentado.
No núcleo do mapa indicamos os valores da saída “Y” (Y1, Y2, Y3 e Y4). Na linha acima do núcleo do mapa indicamos os valores da variável de entrada “A” (0 ou 1). Na coluna à esquerda do núcleo do mapa indicamos os valores da variável de entrada “B” (0 ou 1).
Exemplo – A partir da tabela da verdade a seguir, pede-se o mapa de Karnaugh:
- Tabela da verdade:
B A Y
0 0 1
0 1 0
1 0 1
1 1 0
- Mapa de Karnaugh:
A
B 0 1
0 1 0
1 1 0
2. SIMPLIFICAÇÃO
Para obter a simplificação da expressão booleana e o respectivo circuito lógico, deve-se seguir o seguinte procedimento:
a) Efetuar agrupamentos de valores “1”, vizinhos entre si, no sentido vertical ou horizontal
apenas, no tamanho 2n (n = 1, 2, 3 ....), isto é, pares, quadras, octetos etc.;
b) Note que no núcleo da tabela temos os valores da variável de saída “Y”, onde o estado de “Y” pode estar indicando a ação deste circuito (ligando um motor elétrico, uma lâmpada, um alarme etc.). O agrupamento todo de valores “1” é tratado como uma única entidade “Y”; c) No agrupamento de valores “1” formado, verifique qual é a variável de entrada (D, C, B ou
A) muda de valor quando deslocamos de um valor “1” para outro valor “1” no agrupamento. Se uma variável troca de valor sobre o agrupamento indica que para o agrupamento resultar em Y = 1 não há dependência desta variável de entrada então esta variável é descartada.
Exemplo – Obter a expressão booleana simplificada no seguinte mapa de Karnaugh:
0 0 0
0 1
1 1
1 BA
Observe que quando deslocamos do primeiro valor “1” (B = 0 e A = 0) para o segundo valor “1” (B =1 e A = 0) apenas o valor da variável “B” troca de valor. Isto significa que para o agrupamento resultar em “Y = 1” não depende do valor de “B”, dependendo apenas do valor
de “A” e “A = 0”. Elimina-se a variável “B”, ficando apenas “A = 0”, ou seja :
3. TAMANHO DE MAPAS.
3.1. DUAS VARIÁVEIS:
0 0 0
1 1
1 0
1 BA
Y = B
3.2. TRÊS VARIÁVEIS:
00 0 0
0 1
01 1
1 C
BA
11 1
0 10 1
0
B A B A
C . B
B . A
Y =
#! "+# !"Importante: Entre linhas ou colunas vizinhas entre si somente uma variável de entrada (D, C, B ou
A) pode trocar de valor (0 → 1 ou 1 → 0).
3.3. QUATRO VARIÁVEIS:
00 0 00
0 01
01 0
0 DC
BA
11 0
1 10 0
1 B A
D C
D . C . B
D . B . A 0 11
0 10
1
1
0
0 0
0
Y =
# ! "+# !"Importante: Entre linhas ou colunas vizinhas entre si somente uma variável de entrada (D, C, B ou
A) pode trocar de valor (0 → 1 ou 1 → 0).
4. TAMANHO DE AGRUPAMENTOS.
4.2. QUADRA:
a) b)
00 0 00 0 01 01 1 1 DC BA 11 0 0 10 0 0
B . A D . B
0 11 0 10 1 1 1 1 1 1
Y =
#! "+# !"00 1 00 1 01 01 1 1 DC BA 11 0 0 10 0 0 D . B
D . C 0 11 1 10 0 1 0 1 0 1
Y =
# "+# !"4.3. OCTETO:
a) b)
00 0 00 1 01 01 0 1 DC BA 11 0 1 10 0 1 C 1 11 0 10 1 0 1 0 1 0
Y = C
00 0 00 0 01 01 0 0 DC BA 11 1 1 10 1 1 B 0 11 0 10 0 0 1 1 1 1
Y =
!5. AGRUPAMENTOS ESPECIAIS.
5.1. SOBREPOSIÇÃO DE AGRUPAMENTOS.
Com a finalidade de promover maior simplificação, um mesmo valor “1” pode participar em outros agrupamentos e, desta forma, aumentar o tamanho do agrupamento. Cuidado apenas para não aumentar a quantidade de grupos além do necessário, pois ao contrário de simplificar a expressão boolena será maior que o necessário.
00 1 00 1 01 01 0 0 DC BA 11 1 1 10 0 1 1 11 1 10 1 1 1 0 0
0 C . B . A
D . C . B
D . B . A
B . A
D . B 00 1 00 1 01 01 0 0 DC BA 11 1 1 10 0 1 1 11 1 10 1 1 1 0 0 0
5.2. VIZINHANÇA ENTRE BORDAS OPOSTAS.
Deve ser levado em consideração que as bordas laterais, da esquerda e da direita, são vizinhas entre si, assim como a borda superior é vizinha à borda inferior.
a) 00 1 00 1 01 01 0 0 DC BA 11 1 0 10 1 0 1 11 1 10 0 0 0 1 1 1 00 1 00 1 01 01 0 0 DC BA 11 1 0 10 1 0 1 11 1 10 0 0 0 1 1 1
B . A D . A
C . B
Y =
#! "+# "+# !" b) 00 1 00 1 01 01 0 0 DC BA 11 0 0 10 1 1 0 11 1 10 0 0 0 0 01 C . A
D . A 00 1 00 1 01 01 0 0 DC BA 11 0 0 10 1 1 0 11 1 10 0 0 0 0 0 1
Y =
# "+# "EXEMPLO – Um sistema de alarme deve ser acionado (Y = 1) de acordo com os estados de quatro sensores (D, C, B e A), funcionando de acordo com o estabelecido na tabela da verdade fornecida a seguir:
D C B A Y
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 0
0 1 1 0 0
Para este sistema de alarme, pede-se:
a) A expressão booleana obtida a partir da tabela da verdade;
b) A expressão booleana simplificada através do mapa de Karnaugh; c) O circuito lógico simplificado.
Resolução:
a) Expressão booleana:
D C B A Y
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 0
0 1 1 0 0
0 1 1 1 0
1 0 0 0 0
1 0 0 1 0
1 0 1 0 1 !
1 0 1 1 1 !
1 1 0 0 0
1 1 0 1 0
1 1 1 0 1 !
1 1 1 1 0
Y = ( ! ) + ( ! ) + ( ! ) + ( ! ) +
( ! ) + ( ! ) + ( ! )
b) Note que é possível preencher o mapa de Karnaugh a partir da expressão booleana obtida no item anterior:
00
1 00
0 01
01 1
0 DC
BA
11 1
0
10 1
0
1 11
1 10
0
1 0
0 0
0
D . B . A
C . B D . C
00
1 00
0 01
01 1
0 DC
BA
11 1
0
10 1
0
1 11
1 10
0
1 0
0 0
0
c) Circuito simplificado:
C
C
B A
A D
D
D . C
C . B
D . B . A