Aula 18 - Lógica Digital e Circuitos Combinacionais 🔌
Objetivo Pedagógico
Objetivo: Modelagem de circuitos lógicos combinacionais, simplificação booleana com Mapas de Karnaugh, portas universais NAND/NOR e somadores binários (Half/Full Adder).
📑 1. Fundamentos Teóricos & Análise Técnica
Todo sistema computacional digital é construído a partir de interruptores eletrônicos microscópicos (Transistores MOSFET) que implementam as operações da Álgebra de Boole (George Boole, 1854) formalizadas por Claude Shannon em 1937.
Circuitos digitais dividem-se em duas categorias primárias: 1. Circuitos Combinacionais: A saída em qualquer instante de tempo depende estritamente dos valores atuais das entradas, sem memória de estados anteriores (ex: portas lógicas AND, OR, NOT, XOR, multiplexadores, decodificadores e somadores aritméticos). 2. Portas Universais (NAND e NOR): Qualquer função lógica computável no universo pode ser construída utilizando exclusivamente portas NAND ou exclusivamente portas NOR. 3. Somador Completo (Full Adder): Bloco atômico da aritmética binária que recebe três bits de entrada (Bit A, Bit B e o Carry-In da casa anterior) e gera dois bits de saída: a Soma (\(S = A \oplus B \oplus C_{in}\)) e o Vai-Um (\(C_{out} = (A \cdot B) + (C_{in} \cdot (A \oplus B))\)).
📐 Arquitetura Conceitual & Diagrama de Fluxo
graph LR
subgraph FullAdder ["Circuito Somador Completo (Full Adder)"]
A["Entrada A"] --> XOR1["XOR Gate"]
B["Entrada B"] --> XOR1
Cin["Carry-In (Cin)"] --> XOR2["XOR Gate"]
XOR1 --> XOR2
XOR2 --> Sum["Soma (S) = A ⊕ B ⊕ Cin"]
A --> AND1["AND Gate"]
B --> AND1
XOR1 --> AND2["AND Gate"]
Cin --> AND2
AND1 --> OR1["OR Gate"]
AND2 --> OR1
OR1 --> Cout["Carry-Out (Cout)"]
end
style FullAdder fill:#e3f2fd,stroke:#1565c0
style Sum fill:#e8f5e9,stroke:#2e7d32
style Cout fill:#fff3e0,stroke:#e65100 🔍 Pilares e Diretrizes Técnicas
Nesta unidade, aprofundamos os seguintes conceitos fundamentais: - Completude Funcional da Porta NAND: Minimização de silício através de topologias lógicas homogêneas. - Mapas de Karnaugh (K-Maps): Técnica gráfica de agrupamento de adjacências de Gray para minimização de termos produto. - Tempo de Propagação (Propagation Delay): Atraso temporal cumulativo na transição de estados dos transistores. - Aritmética de Complemento de Dois: Representação unificada de números positivos e negativos que simplifica a ULA.
🛠️ 2. Implementação Prática em Eletrônica Digital e Álgebra Booleana
Abaixo está a implementação técnica de referência, estruturada com padrões de engenharia de software e foco em robustez:
// logic_circuits.c (Simulação em Nível de Bits de um Full Adder)
#include <stdio.h>
#include <stdint.h>
// Simulação de Portas Lógicas com Operadores Bitwise
typedef struct {
uint8_t sum;
uint8_t cout;
} FullAdderResult;
FullAdderResult full_adder(uint8_t a, uint8_t b, uint8_t cin) {
FullAdderResult res;
// Soma: A XOR B XOR Cin
res.sum = a ^ b ^ cin;
// Carry-out: (A AND B) OR (Cin AND (A XOR B))
res.cout = (a & b) | (cin & (a ^ b));
return res;
}
// Encadeamento de 4 bits (Ripple Carry Adder)
uint8_t add_4bit(uint8_t a, uint8_t b) {
uint8_t result = 0;
uint8_t carry = 0;
for (int i = 0; i < 4; i++) {
uint8_t bit_a = (a >> i) & 1;
uint8_t bit_b = (b >> i) & 1;
FullAdderResult bit_res = full_adder(bit_a, bit_b, carry);
result |= (bit_res.sum << i);
carry = bit_res.cout;
}
return result; // Retorna soma de 4 bits
}
int main() {
uint8_t a = 5; // 0101 em binário
uint8_t b = 7; // 0111 em binário
printf("%d + %d = %d (Calculado via portas lógicas simuladas)\n", a, b, add_4bit(a, b));
return 0;
}
💡 Análise Passo a Passo do Código
- Operadores Bitwise em C:
^representa XOR,&representa AND e|representa OR em nível de portas lógicas reais. - Propagação de Carry: O laço simula o circuito físico Ripple Carry Adder, propagando o
carrydo bit menos significativo (LSB) ao mais significativo (MSB). - Equivalência com Hardware: Demonstra exatamente como circuitos combinacionais de silício executam somas na CPU.
🎯 3. Próximos Passos & Sequência Didática
-
Slides da Aula
-
Quiz de Fixação
-
Exercícios Práticos
-
Desafio de Projeto