Aula 3 — Por que simplificar?

Menos portas • Mais rápido • Menos consumo

Conceito central

  • Reduzir portas/components ⇒ menores custos e área.
  • Menos níveis lógicos ⇒ menor atraso de propagação.
  • Menos consumo e menor chance de erro.
Meta da aula: simplificar expressões com Leis Booleanas e Mapas de Karnaugh, validar no simulador.
Aplicações reais: Em FPGA, simplificar reduz o número de LUTs; em ASIC, reduz área e consumo. Ex.: um multiplexador com termos redundantes pode virar uma expressão com menos produtos, cabendo em menos recursos.
O que é FPGA? Um Field-Programmable Gate Array é um chip reconfigurável formado por uma matriz de blocos lógicos (LUTs + flip-flops), interconexões programáveis e pinos de I/O. Após a síntese, um bitstream carrega a configuração que implementa seu circuito.

Por que importa aqui? Simplificar a expressão booleana normalmente reduz o número de LUTs e os níveis lógicos, facilitando timing closure (atingir a frequência desejada), diminuindo atraso e consumo.

Comparação rápida: CPU/GPU são fixas e gerais; FPGA é paralelo e reconfigurável (ótimo para prototipagem e pipelines de baixa latência); ASIC é fixo, mas, depois de projetado, costuma ser menor/mais rápido/mais eficiente que FPGA.
O que é “número de LUTs”? Em FPGAs, uma LUT (Look-Up Table) é o bloco lógico básico que implementa qualquer função combinacional de até K entradas (K depende do chip: 4, 5 ou 6, típicos).

Número de LUTs = quantas LUTs seu projeto consumiu após a síntese/mapeamento. É um indicador direto de área usada no FPGA (impacta custo, energia e se o design “cabe” no dispositivo).

  • Capacidade: uma LUT6 implementa qualquer lógica com ≤6 sinais de entrada em 1 LUT. Se a função tiver 7 entradas, o ferramental divide em ≥2 LUTs (e um multiplexador interno, p.ex. MUXF7).
  • Simplificação ajuda: reduzir a expressão (K-Map/leis) diminui a quantidade de LUTs e os níveis de LUT na rota crítica (melhora fmáx).
  • Modos especiais: LUTs podem virar LUT-RAM (memória pequena) ou SRL (shift register). Ainda contam como LUTs no relatório.
  • Exemplo: F = A·B + C·D tem 4 entradas → cabe em 1 LUT4. Já uma função genérica de 7 entradas em um FPGA de LUT6 vira 2 LUT6 + MUXF7.
Dica: além de “LUTs usados”, observe “níveis de LUT” na rota crítica — menos níveis ⇒ menor atraso.
O que é ASIC?
ASIC (Application-Specific Integrated Circuit) é um chip projetado sob medida para executar uma função específica. Ao contrário de FPGAs (reprogramáveis), a lógica do ASIC fica fixa no silício após a fabricação.
  • Vantagens: melhor PPA (Performance, Power, Area) — costuma ser mais rápido, consumir menos energia e ocupar menos área que um FPGA. Em alto volume, o custo unitário cai bastante.
  • Desvantagens: alto custo NRE (máscaras, ferramentas EDA), ciclo de desenvolvimento longo e risco caro de correção (re-spin).
  • Fluxo típico: Especificação → RTL (Verilog/VHDL) → Síntese → Place & Route → Verificação/Sign-off (STA, DRC, LVS) → Tape-out → Fabricação → Teste.
  • Prática comum: prototipar em FPGA e, quando o volume e/ou metas de PPA justificam, migrar para ASIC.

Leis e Propriedades

Álgebra Booleana

Conjunto essencial

  • Comutativa: A+B=B+A; A·B=B·A
  • Associativa: (A+B)+C=A+(B+C); (A·B)·C=A·(B·C)
  • Distributiva: A·(B+C)=A·B+A·C; A+(B·C)=(A+B)·(A+C)
  • Identidade: A+0=A; A·1=A
  • Absorção: A + A·B = A;   A·(A + B) = A
  • Anulação: A+1=1; A·0=0
  • Complementar: A+Ā=1; A·Ā=0
  • Involutiva: (Ā)̄ = A
  • De Morgan: Ā+ B̄ = (A·B)̄; Ā· B̄ = (A+B)̄
  • De Morgan: (A·B)′ = A′ + B′;   (A + B)′ = A′·B′
  • Consenso: A·B + A'·C + B·C = A·B + A'·C
Prova (Absorção): A + A·B = A
A + A·B = A·1 + A·B   (Identidade)
= A·(1 + B)   (Distributiva)
= A·1   (Anulação: 1 + B = 1)
= A   (Identidade)
Exemplo rápido: Prove que A + A·B = A usando absorção.
A + A·B = A·1 + A·B = A·(1 + B) = A·1 = A.

Simplificação por Leis

Passo a passo

Exemplo guiado

F = A·B + A·B′
1) F = A·B + A·B′ ⟶ fatorar A
2) F = A·(B + B′) ⟶ compl.
3) F = A·1 = A
Exemplo 2 (fatoração)
F = A·B·C + A·B·C' + A'·B·C
= A·B·(C + C') + A'·B·C (Complementar)
= A·B + A'·B·C (Identidade)
= B·(A + A'·C) (Fatoração) → (opcional seguir com K-Map)
Agora você: Simplifique F = (A + B)·(A + B′).
Expanda: A·A + A·B′ + B·A + B·B′ = A + A·B′ + A·B + 0 = A + A·(B′+B) = A + A = A.

Mapa de Karnaugh — 2 variáveis

Estrutura correta (A, B) — Foco em F = A + B

Layout 2×2 (sem código Gray nas colunas)

O Mapa de Karnaugh (K-map) é uma ferramenta visual que ajuda a simplificar expressões booleanas. Para 2 variáveis, o K-map terá 4 células organizadas em uma matriz 2×2. Cada célula representa uma combinação possível de valores para as variáveis A e B:

  • As linhas representam os valores de A (0 e 1).
  • As colunas representam os valores de B (0 e 1).

Exemplo: para a função F = A + B:

  1. Monte a tabela verdade e calcule F para cada combinação.
  2. Preencha o K-map com os valores obtidos (seguindo A como linha, B como coluna).
  3. Identifique grupos de 1s adjacentes em potências de 2 (1, 2, 4...).
ABF = A + B
000
011
101
111

No K-Map de 2 variáveis, temos apenas 2 colunas (B=0 e B=1) e 2 linhas (A=0 e A=1). Exemplo: F = A + B.

B=0 B=1
A=0 0 1
A=1 1 1
Resultado: O grupo da coluna B=1 nos dá o termo B. O grupo da linha A=1 nos dá o termo A. Portanto:
F = A + B

📌 Etapas após preencher o Mapa de Karnaugh:

  • Encontrar grupos de células com valor 1 que sejam adjacentes.
  • Cada grupo deve ter tamanho de potência de 2 (1, 2 ou 4 células).
  • Quanto maior o grupo, mais simples será a expressão resultante.
  • As células de um grupo devem estar lado a lado (horizontal ou vertical), nunca em diagonal.

✔️ Em seguida, escrevemos a expressão simplificada com base nos grupos encontrados:

  • Grupo da coluna onde B = 1 → representa o termo B.
  • Grupo da linha onde A = 1 → representa o termo A.

Resultado final da simplificação:

F = A + B

Nesse caso, voltamos à expressão original. Mas nem sempre isso acontece! O Mapa de Karnaugh também nos permite:

  • Confirmar que a expressão já está na forma mínima.
  • 🔽 Simplificar expressões mais complexas com economia de portas lógicas.
Por que não usar código Gray aqui? Com apenas uma variável na coluna (B), não existe ordenação Gray a aplicar. O código Gray é usado quando há duas ou mais variáveis nas colunas/linhas (ex.: BC = 00,01,11,10), garantindo adjacência entre células.

Mapa de Karnaugh — 3 variáveis

Exemplo de agrupamentos visuais

Layout 2×4 com código Gray em BC

Linhas: A = 0/1 • Colunas: BC em Gray: 00, 01, 11, 10. Exemplo de função com grupos: F = B + A'·C.

🧩 Construindo a Tabela Verdade da função F = B + A'·C

Antes de preencher o mapa de Karnaugh, precisamos listar todas as combinações possíveis das variáveis A, B e C. Em seguida, aplicamos a função F = B + A'·C linha por linha para obter o valor de saída F para cada entrada.

A B C A'·C F = B + A'·C
00000
00111
01001
01111
10000
10100
11001
11101

📍 Correspondência das posições no Mapa de Karnaugh (usando código Gray)

Com a tabela verdade em mãos, devemos localizar cada combinação A, B e C na tabela 2×4 do mapa de Karnaugh. As colunas usam código Gray em BC: 00, 01, 11, 10. Essa ordenação preserva a adjacência entre colunas para facilitar agrupamentos.

A B C BC (Gray) Posição no K-map F
00000A=0, BC=000
00101A=0, BC=011
01111A=0, BC=111
01010A=0, BC=101
10000A=1, BC=000
10101A=1, BC=010
11111A=1, BC=111
11010A=1, BC=101

Esses valores são exatamente os que aparecem preenchidos no mapa do slide acima. A partir deles, os grupos são formados visualmente e a expressão é simplificada.

BC=00011110
A=0 0 1 1 1
A=1 0 0 1 1
  • Regras: grupos retangulares, tamanhos potência de 2 (1,2,4,8), maximizar tamanho, sobreposição permitida, jamais agrupar diagonal.
  • Leitura: o grupo de 4 (colunas 11 e 10) elimina A e C, sobrando B. O grupo de 2 (A=0 e C=1 na coluna 01) elimina B, vira A'·C. Portanto F = B + A'·C.

🧠 Interpretação passo a passo

Após preencher o Mapa de Karnaugh com os valores da função, identificamos os 1s e buscamos grupos adjacentes de acordo com as regras:

  • Os grupos devem ser retangulares (sem diagonais).
  • Devem conter uma potência de 2 de células: 1, 2, 4 ou 8.
  • Sobreposição é permitida se ajudar a maximizar os grupos.
  • Quanto maior o grupo, mais simples será a expressão gerada.

No exemplo da função F = B + A'·C:

  • 🔹 O grupo de 4 células (colunas 11 e 10) cobre os casos onde B=1, e as variáveis A e C variam — por isso, o termo é B.
  • 🔸 O grupo de 2 células (linha A=0 e C=1 → colunas 01 e 11) cobre os casos onde A=0 (ou seja, A') e C=1, enquanto B varia — por isso, o termo é A'·C.

Resultado final da simplificação:

F = B + A'·C

➡️ Essa é a forma simplificada da função com uso de agrupamentos no mapa de Karnaugh. Em expressões maiores, esse processo reduz portas lógicas e torna circuitos mais eficientes.

SOP vs POS • Don’t Cares (X)

Quando agrupar 1’s, quando agrupar 0’s — e como usar X

SOP (Soma de Produtos) vs POS (Produto de Somas)

  • SOP: agrupa 1’s no K-Map → termos AND somados (OR). Bom para realizar com AND/OR (ou NAND-only via De Morgan).
  • POS: agrupa 0’s no K-Map → termos OR multiplicados (AND). Útil para NOR-only (ou realizar negações distribuindo por De Morgan).

Don’t Cares (X)

Entradas/combinações que não ocorrem ou não importam podem ser marcadas como X. Considere X como 0 ou 1 para aumentar grupos e simplificar mais.

BC=00011110
A=0 1 X 1 0
A=1 0 1 X 1

Exemplo POS (agrupando 0’s)

Função de 3 variáveis com 0’s em um retângulo 2×1 → gera um termo OR. Ex.: se as células (A=1, BC=00) e (A=1, BC=01) forem 0, o grupo resulta em (A' + C'). O produto final (AND) combina os grupos de 0’s.

Leitura POS: o grupo de 0’s elimina B (colunas 00 e 01), restando (A' + C'). Se outro grupo de 0’s existir, multiplique (AND) os fatores OR para obter a forma POS final.

BC=00 01 11 10
A=0 1 1 1 1
A=1 0 0 1 1
Dica: Escolha X como 0 ou 1 conforme ajude a formar grupos maiores (2,4,8,16). Não é obrigatório usar todos os X.

Do K-Map ao Circuito

Níveis lógicos, atraso e equivalências

Implementação

  • Em SOP: cada grupo → um termo AND; a soma (OR) finaliza. Níveis típicos: 2 (AND → OR).
  • Em POS: cada grupo de 0’s → um termo OR; o produto (AND) finaliza. Níveis típicos: 2 (OR → AND).
  • Com NAND-only ou NOR-only, use De Morgan para converter (mostre equivalências no quadro).
Atraso aproximado
$ Atraso ≈ (nº de níveis) × (atraso por porta).
Ex.: 2 níveis × 2ns/porta → ~4ns.

Atividade prática (simulador)

  1. Escolha F = A·B + A·B'. Monte o circuito original (2 AND + 1 OR).
  2. Simplifique (leis ou K-Map) → F = A. Monte a versão minimizada (apenas fio/OR com 1 entrada).
  3. Teste as 4 combinações (A,B) e compare atrasos/portas usadas.
Dica de simulação
Logisim Evolution: use probes nas saídas e a ferramenta Ticks Enabled para observar propagação.
Tinkercad: organize com rótulos A, B, F (antes) e F (depois) lado a lado para comparar.
QR para circuito exemplo

Recursos & Quiz

Referências rápidas + teste relâmpago

Recursos úteis

links

Logisim Evolution (download)

Tinkercad Circuits (online)

All About Circuits – Digital

• Mano, M. & Ciletti, M. – Digital Design (cap. de simplificação)

Quiz rápido

1) (V/F) A simplificação de circuitos digitais só serve para economizar componentes, não afeta o funcionamento.
Verdadeiro
Falso

Correto: Falso. A função lógica é a mesma; simplificar reduz portas/níveis → menos atraso, área e consumo.

2) No K-Map, “agrupar” significa:
a) Juntar todos os zeros.
b) Juntar 1’s adjacentes (2,4,8,...) para reduzir termos.
c) Refazer a tabela-verdade.
d) Somar entradas.

Correto: b) Agrupar 1’s adjacentes em potências de 2 produz termos mais simples.

3) Simplifique: F = A·B + A·B'.
a) A
b) B
c) A + B
d) 0

Correto: A. (Fatora: A·(B + B') = A·1 = A)

4) (V/F) Em um K-Map de 3 variáveis, cada célula representa uma combinação única (com ordenação Gray nas bordas).
Verdadeiro
Falso

Correto: Verdadeiro. O código Gray garante adjacência (muda 1 bit por passo).

5) Por que implementar a expressão simplificada no simulador?
a) Porque muda a função e facilita o teste.
b) Mesma função com menos portas/níveis → menos área, atraso e consumo.

Correto: b) Simplificar mantém funcionalidade, mas melhora eficiência prática.

Mapa de Karnaugh — 4 variáveis

Wrap-around e grupos grandes (8, 16)

Layout 4×4 (AB x CD) com código Gray

Linhas (AB): 00, 01, 11, 10 • Colunas (CD): 00, 01, 11, 10.

Exemplo: mintermos m(0,1,2,3,8,9,10,11) → duas linhas superiores (AB=00 e AB=01) cheias de 1 → F = A'.

AB\CD00011110
00 1 1 1 1
01 1 1 1 1
11 0 0 0 0
10 0 0 0 0
Wrap-around: bordas opostas são adjacentes (células do canto também). Grupos podem “passar” pela borda.