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.
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.
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.
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
= A·(1 + B) (Distributiva)
= A·1 (Anulação: 1 + B = 1)
= A (Identidade)
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
2) F = A·(B + B′) ⟶ compl.
3) F = A·1 = A
= 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)
F = (A + B)·(A + B′)
.
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
:
- Monte a tabela verdade e calcule F para cada combinação.
- Preencha o K-map com os valores obtidos (seguindo A como linha, B como coluna).
- Identifique grupos de 1s adjacentes em potências de 2 (1, 2, 4...).
A | B | F = A + B |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
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 |
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
ou4
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.
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 |
---|---|---|---|---|
0 | 0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 | 1 |
0 | 1 | 0 | 0 | 1 |
0 | 1 | 1 | 1 | 1 |
1 | 0 | 0 | 0 | 0 |
1 | 0 | 1 | 0 | 0 |
1 | 1 | 0 | 0 | 1 |
1 | 1 | 1 | 0 | 1 |
📍 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 |
---|---|---|---|---|---|
0 | 0 | 0 | 00 | A=0, BC=00 | 0 |
0 | 0 | 1 | 01 | A=0, BC=01 | 1 |
0 | 1 | 1 | 11 | A=0, BC=11 | 1 |
0 | 1 | 0 | 10 | A=0, BC=10 | 1 |
1 | 0 | 0 | 00 | A=1, BC=00 | 0 |
1 | 0 | 1 | 01 | A=1, BC=01 | 0 |
1 | 1 | 1 | 11 | A=1, BC=11 | 1 |
1 | 1 | 0 | 10 | A=1, BC=10 | 1 |
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=00 | 01 | 11 | 10 | |
---|---|---|---|---|
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, viraA'·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áveisA
eC
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'
) eC=1
, enquantoB
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=00 | 01 | 11 | 10 | |
---|---|---|---|---|
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 |
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).
Ex.: 2 níveis × 2ns/porta → ~4ns.
Atividade prática (simulador)
- Escolha
F = A·B + A·B'
. Monte o circuito original (2 AND + 1 OR). - Simplifique (leis ou K-Map) → F = A. Monte a versão minimizada (apenas fio/OR com 1 entrada).
- Teste as 4 combinações (A,B) e compare atrasos/portas usadas.
Tinkercad: organize com rótulos A, B, F (antes) e F (depois) lado a lado para comparar.
Recursos & Quiz
Referências rápidas + teste relâmpago
Recursos úteis
• Logisim Evolution (download)
• All About Circuits – Digital
• Mano, M. & Ciletti, M. – Digital Design (cap. de simplificação)
Quiz rápido
Correto: Falso. A função lógica é a mesma; simplificar reduz portas/níveis → menos atraso, área e consumo.
Correto: b) Agrupar 1’s adjacentes em potências de 2 produz termos mais simples.
F = A·B + A·B'
.
Correto: A. (Fatora: A·(B + B') = A·1 = A)
Correto: Verdadeiro. O código Gray garante adjacência (muda 1 bit por passo).
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\CD | 00 | 01 | 11 | 10 |
---|---|---|---|---|
00 | 1 | 1 | 1 | 1 |
01 | 1 | 1 | 1 | 1 |
11 | 0 | 0 | 0 | 0 |
10 | 0 | 0 | 0 | 0 |