Criar e simular circuitos lógicos
Apresentação
UC00651 (50h · 4,5 pts) do curso Técnico de Sistemas de Computação e Redes. Cobre os fundamentos da eletrónica digital: sistemas de numeração, portas lógicas, álgebra de Boole, simplificação (Karnaugh), circuitos combinacionais (somadores, MUX, descodificadores) e sequenciais (latches, flip-flops, registos, contadores, máquinas de estados). É a base de como funcionam, por dentro, os processadores.
Sistemas de numeração
Bases
- Binário (base 2) — 0 e 1; é a "língua" do hardware (transístor ligado/desligado).
- Decimal (base 10) — humano.
- Hexadecimal (base 16) — 0–9, A–F; compacta o binário (1 dígito hex = 4 bits).
- Octal (base 8) — menos comum hoje.
Unidades: bit (1 dígito binário), nibble (4 bits), byte (8 bits).
Conversões
- Decimal → Binário: divisões sucessivas por 2, ler os restos de baixo para cima.
- Binário → Decimal: soma das potências de 2 das posições a 1.
- Binário ↔ Hex: agrupar bits de 4 em 4.
Exemplo: 13₁₀ = 1101₂ = D₁₆.
Aritmética binária
0101 (5)
+ 0011 (3)
------
1000 (8)
Regras: 0+0=0, 0+1=1, 1+1=10 (0 e transporta 1).
Representação de números
- Sinal-magnitude — 1 bit de sinal.
- Complemento a 2 — padrão para inteiros negativos (permite somar/subtrair com o mesmo circuito).
- BCD — cada dígito decimal em 4 bits (mostradores).
- ASCII / Unicode — codificação de caracteres.
- Código Gray — só muda 1 bit entre valores consecutivos (encoders).
Portas lógicas
Blocos elementares que implementam funções booleanas.
| Porta | Expressão | Saída = 1 quando |
|---|---|---|
| NOT (inversor) | Ā | A = 0 |
| AND | A·B | todas as entradas = 1 |
| OR | A+B | pelo menos uma = 1 |
| NAND | ¬(A·B) | nem todas = 1 |
| NOR | ¬(A+B) | todas = 0 |
| XOR | A⊕B | número ímpar de 1s (A≠B com 2 entradas) |
| XNOR | ¬(A⊕B) | A = B |
NAND e NOR são portas universais: qualquer função lógica pode ser construída só com NANDs (ou só com NORs).
Tabela de verdade
Define o comportamento listando todas as combinações de entrada (2ⁿ linhas para n entradas) e a saída correspondente.
A B | AND | OR | NAND | XOR
0 0 | 0 | 0 | 1 | 0
0 1 | 0 | 1 | 1 | 1
1 0 | 0 | 1 | 1 | 1
1 1 | 1 | 1 | 0 | 0
Álgebra de Boole
Manipula expressões lógicas para as simplificar (menos portas = menor custo, consumo e atraso).
Identidades
Identidade: A·1 = A A+0 = A
Nulo: A·0 = 0 A+1 = 1
Idempotência: A·A = A A+A = A
Complemento: A·Ā = 0 A+Ā = 1
Dupla neg.: ¬(Ā) = A
Comutativa: A·B = B·A A+B = B+A
Distributiva: A·(B+C) = A·B + A·C
Absorção: A + A·B = A
Teoremas de De Morgan
$$ \overline{A \cdot B} = \bar A + \bar B \qquad \overline{A + B} = \bar A \cdot \bar B $$
Permitem converter ANDs em ORs (e vice-versa) e implementar tudo com NAND/NOR.
Formas canónicas
- Soma de produtos (SOP) — OR de termos AND (mintermos onde a saída é 1).
- Produto de somas (POS) — AND de termos OR (maxtermos).
Mapa de Karnaugh
Método gráfico de simplificação (prático até 4–5 variáveis). Colocam-se as saídas numa grelha com código de Gray nos eixos e agrupam-se os 1s adjacentes em grupos de potências de 2 (1, 2, 4, 8…) — quanto maior o grupo, mais simples o termo. O resultado é a expressão mínima (SOP).
Circuitos combinacionais
A saída depende apenas das entradas atuais — não têm memória.
Metodologia de projeto
- Especificar o problema.
- Construir a tabela de verdade.
- Simplificar (Boole ou Karnaugh).
- Desenhar com portas.
- Simular e validar todos os casos.
Blocos típicos
- Half adder: soma 2 bits.
S = A⊕B,Cout = A·B. - Full adder: soma 2 bits + carry.
S = A⊕B⊕Cin,Cout = A·B + Cin·(A⊕B). Encadeando full adders → somador de n bits (núcleo da ALU). - Multiplexer (MUX) — seleciona uma de várias entradas com linhas de seleção.
- Demultiplexer / Descodificador — encaminha/ativa uma saída (ex.: BCD→7 segmentos).
- Codificador — converte 2ⁿ linhas em n bits.
- Comparador — A>B, A=B, A<B.
Circuitos sequenciais
A saída depende das entradas e do estado anterior — têm memória. Sincronizados por um sinal de clock.
Latches e flip-flops
- Latch SR — Set/Reset; estado proibido S=R=1.
- Flip-flop D — na borda do clock, copia D para a saída Q (memória de 1 bit). O mais usado.
- Flip-flop JK — versátil; J=K=1 faz toggle.
- Flip-flop T — toggle (base de contadores).
Diferença latch vs flip-flop: o latch é sensível ao nível do sinal; o flip-flop à borda (transição) do clock — mais previsível em sistemas síncronos.
Registos e contadores
- Registo — conjunto de flip-flops D que guarda uma palavra de n bits (registos do CPU).
- Registo de deslocamento — desloca bits a cada clock (conversão série↔paralelo).
- Contador — conta pulsos de clock: binário, década (0–9), ascendente/descendente; usado em temporizadores e divisores de frequência.
Máquinas de estados (FSM)
Modelo: estado atual + entradas → próximo estado + saídas. - Mealy — saída depende do estado e da entrada. - Moore — saída depende só do estado.
Projeto: diagrama de estados → tabela de transições → flip-flops (memória de estado) + lógica combinacional (próximo estado e saídas). Exemplos: semáforo, fechadura digital, controlador de máquina de venda.
Tecnologia e simulação
Famílias lógicas
- TTL (série 74xx) — 5 V, rápida, mais consumo.
- CMOS (4000, 74HC) — baixo consumo, ampla gama de tensão. Domina hoje.
- Parâmetros: níveis lógicos (V_IH/V_IL), fan-out, atraso de propagação, consumo.
Lógica programável
Hoje a lógica complexa não se monta com chips 74xx soltos — descreve-se em VHDL/Verilog e sintetiza-se em CPLD/FPGA. Permite implementar circuitos enormes (até CPUs) de forma reconfigurável.
Simuladores
- Logisim Evolution — didático, excelente para combinacional/sequencial e FSM.
- CircuitVerse — online.
- Falstad · Digital · Tinkercad — alternativas.
- Para FPGA: ferramentas do fabricante (Xilinx Vivado, Intel Quartus) com testbenches.
Boas práticas
- Tabela de verdade / diagrama de estados antes de desenhar.
- Simplificar (Boole/Karnaugh) — menos portas, menor atraso.
- Simular todos os casos, incluindo limites.
- Tratar estados não utilizados (FSM) para evitar bloqueios.
- Atenção a glitches/hazards e a temporização do clock.
- Documentar tabela, equações e diagrama.
Apêndices
A · Resumo
Bases: 13 = 1101b = Dh (nibble=4 bits, byte=8)
Universais: NAND, NOR
De Morgan: ¬(AB)=Ā+B̄ ¬(A+B)=Ā·B̄
Full Adder: S=A⊕B⊕Cin Cout=AB+Cin(A⊕B)
FF-D: Q segue D na borda do clock
FSM: estado + entrada → próximo estado + saída
B · Glossário
Bit/Byte. 1 / 8 dígitos binários. Combinacional. Sem memória (saída = f(entradas)). Flip-flop. Memória de 1 bit, sincronizada por clock. FSM. Máquina de estados finitos. Karnaugh. Método gráfico de simplificação. MUX. Multiplexer (seletor). Porta universal. NAND/NOR (constroem tudo). Sequencial. Com memória (depende do estado anterior).
C · Recursos
- Logisim Evolution · simulador didático (GitHub).
- CircuitVerse · circuitverse.org — online.
- Nand2Tetris · nand2tetris.org — construir um computador desde portas.
- All About Circuits · capítulos de lógica digital.