Pular para conteúdo

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

  1. Operadores Bitwise em C: ^ representa XOR, & representa AND e | representa OR em nível de portas lógicas reais.
  2. Propagação de Carry: O laço simula o circuito físico Ripple Carry Adder, propagando o carry do bit menos significativo (LSB) ao mais significativo (MSB).
  3. Equivalência com Hardware: Demonstra exatamente como circuitos combinacionais de silício executam somas na CPU.

🎯 3. Próximos Passos & Sequência Didática