Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
COLEÇÃO ESCOLA DE LÓGICA MATEMÁTICA
VOLUME 9

CIRCUITOS LÓGICOS

Fundamentos, Projetos e Aplicações

Uma exploração sistemática dos princípios fundamentais dos circuitos lógicos digitais, abrangendo álgebra booleana, portas lógicas, circuitos combinacionais e sequenciais, com aplicações práticas em sistemas computacionais modernos, alinhada com a BNCC.

AND
OR
NOT
XOR

COLEÇÃO ESCOLA DE LÓGICA MATEMÁTICA • VOLUME 9

CIRCUITOS LÓGICOS

Fundamentos, Projetos e Aplicações Práticas

Autor: João Carlos Moreira

Doutor em Matemática

Universidade Federal de Uberlândia

2025

Coleção Escola de Lógica Matemática • Volume 9

CONTEÚDO

Capítulo 1: Fundamentos dos Circuitos Lógicos Digitais 4

Capítulo 2: Portas Lógicas Básicas e Operações 8

Capítulo 3: Álgebra Booleana e Simplificação 12

Capítulo 4: Circuitos Combinacionais 16

Capítulo 5: Multiplexadores e Decodificadores 22

Capítulo 6: Circuitos Aritméticos Digitais 28

Capítulo 7: Circuitos Sequenciais e Flip-Flops 34

Capítulo 8: Contadores e Registradores 40

Capítulo 9: Exercícios Resolvidos e Propostos 46

Capítulo 10: Aplicações e Desenvolvimentos Modernos 52

Referências Bibliográficas 54

Coleção Escola de Lógica Matemática • Volume 9
Página 3
Coleção Escola de Lógica Matemática • Volume 9

Capítulo 1: Fundamentos dos Circuitos Lógicos Digitais

Introdução aos Sistemas Digitais

Os circuitos lógicos digitais constituem a espinha dorsal da tecnologia moderna, formando a base sobre a qual computadores, smartphones, sistemas de comunicação e incontáveis dispositivos eletrônicos operam. Diferentemente dos sistemas analógicos, que trabalham com valores contínuos, os sistemas digitais processam informações através de estados discretos, tipicamente representados pelos valores binários 0 e 1, que correspondem a diferentes níveis de tensão elétrica.

A representação binária permite construção de sistemas extremamente confiáveis e livres de ruído, pois pequenas variações na tensão não afetam o estado lógico do sistema. Esta característica fundamental tornou possível o desenvolvimento de circuitos integrados com bilhões de componentes operando simultaneamente com precisão extraordinária, revolucionando completamente nossa sociedade nas últimas décadas.

No contexto educacional brasileiro, particularmente considerando as competências específicas da Base Nacional Comum Curricular para matemática e suas tecnologias, o estudo dos circuitos lógicos desenvolve habilidades fundamentais de raciocínio estruturado, resolução de problemas complexos e compreensão dos princípios tecnológicos que sustentam o mundo digital contemporâneo.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 4
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Sistemas de Numeração e Representação

A compreensão dos sistemas de numeração constitui requisito essencial para trabalho efetivo com circuitos digitais. Enquanto humanos naturalmente utilizam o sistema decimal (base 10), os circuitos eletrônicos operam fundamentalmente em binário (base 2). Sistemas hexadecimal (base 16) e octal (base 8) surgem como notações convenientes para representação compacta de valores binários em contextos práticos de programação e design de hardware.

O sistema binário utiliza apenas dois dígitos, 0 e 1, onde cada posição representa uma potência de 2. Por exemplo, o número binário 1011₂ representa 1×2³ + 0×2² + 1×2¹ + 1×2⁰ = 8 + 0 + 2 + 1 = 11₁₀ no sistema decimal. Esta simplicidade fundamental permite implementação física através de dispositivos eletrônicos que operam em dois estados distintos.

A conversão entre sistemas de numeração requer compreensão das relações matemáticas subjacentes. Para converter decimal para binário, utiliza-se divisão sucessiva por 2, registrando os restos. Para converter binário para decimal, soma-se as potências de 2 correspondentes às posições onde aparecem 1s. Estas operações tornam-se naturais com prática sistemática e fundamentam operações mais complexas em circuitos digitais.

Exemplo de Conversão

Converter 45₁₀ para binário:

• 45 ÷ 2 = 22, resto 1

• 22 ÷ 2 = 11, resto 0

• 11 ÷ 2 = 5, resto 1

• 5 ÷ 2 = 2, resto 1

• 2 ÷ 2 = 1, resto 0

• 1 ÷ 2 = 0, resto 1

Resultado: 45₁₀ = 101101₂ (lendo os restos de baixo para cima)

Verificação:

• 1×2⁵ + 0×2⁴ + 1×2³ + 1×2² + 0×2¹ + 1×2⁰

• 32 + 0 + 8 + 4 + 0 + 1 = 45 ✓

Em hexadecimal: 101101₂ = 0010 1101 = 2D₁₆

Observação Importante

Em sistemas digitais reais, números são representados com quantidade fixa de bits (8, 16, 32 ou 64 bits). Isto impõe limites na faixa de valores representáveis e requer atenção especial ao overflow, quando operações produzem resultados além da capacidade de representação disponível.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 5
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Sinais Digitais e Níveis Lógicos

Os níveis lógicos em circuitos digitais correspondem a faixas de tensão elétrica que representam os estados binários 0 e 1. Na lógica TTL (Transistor-Transistor Logic), tradicionalmente utiliza-se 0V a 0,8V para representar nível lógico 0, e 2,0V a 5,0V para nível lógico 1. Tecnologias mais modernas como CMOS operam com faixas diferentes, frequentemente com tensões menores para redução de consumo energético.

A margem de ruído, diferença entre os limites das faixas de tensão, garante que pequenas interferências elétricas não causem interpretação errônea dos níveis lógicos. Esta característica fundamental distingue sistemas digitais de analógicos, proporcionando robustez essencial para operação confiável em ambientes eletricamente ruidosos como computadores modernos com bilhões de transistores comutando simultaneamente.

Sinais digitais podem ser classificados como estáticos, quando mantêm valor constante, ou dinâmicos, quando variam ao longo do tempo seguindo padrões específicos. Pulsos de clock, fundamentais para sincronização em circuitos sequenciais, constituem exemplo típico de sinais dinâmicos, alternando periodicamente entre 0 e 1 para coordenar operações temporais do sistema.

Análise de Níveis Lógicos

Padrão TTL (5V):

• Nível lógico 0: 0V ≤ V ≤ 0,8V

• Região indefinida: 0,8V < V < 2,0V

• Nível lógico 1: 2,0V ≤ V ≤ 5,0V

Margem de ruído baixo: 0,8V

Margem de ruído alto: 5,0V - 2,0V = 3,0V

Padrão CMOS (3,3V):

• Nível lógico 0: 0V ≤ V ≤ 0,33V

• Região indefinida: 0,33V < V < 2,97V

• Nível lógico 1: 2,97V ≤ V ≤ 3,3V

Vantagens CMOS:

• Menor consumo de energia

• Menor dissipação de calor

• Maior densidade de integração

• Compatível com baterias de baixa tensão

Dica Prática

Ao projetar circuitos mistos com componentes de diferentes famílias lógicas (TTL e CMOS), sempre verifique compatibilidade de níveis lógicos. Conversores de nível podem ser necessários para garantir comunicação correta entre diferentes tecnologias, evitando danos aos componentes ou mau funcionamento do sistema.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 6
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Conceitos Fundamentais de Circuitos Digitais

Os circuitos digitais dividem-se em duas categorias principais: combinacionais e sequenciais. Circuitos combinacionais produzem saídas que dependem exclusivamente das entradas atuais, sem memória de estados anteriores. Exemplos incluem somadores, multiplexadores e decodificadores, fundamentais para processamento aritmético e roteamento de dados em sistemas digitais.

Circuitos sequenciais, por outro lado, incorporam elementos de memória que armazenam estados, permitindo que saídas dependam não apenas das entradas atuais mas também da história do sistema. Flip-flops, contadores e registradores exemplificam esta categoria, essencial para implementação de computadores que mantêm informações ao longo do tempo durante execução de programas.

A distinção entre circuitos síncronos e assíncronos refere-se à presença ou ausência de um sinal de clock comum coordenando operações. Sistemas síncronos, predominantes na tecnologia atual, utilizam pulsos de clock para sincronizar mudanças de estado, simplificando design e análise temporal. Sistemas assíncronos, embora mais complexos, podem oferecer vantagens em velocidade e consumo energético em aplicações específicas.

Classificação de Circuitos

Circuito Combinacional - Somador Completo:

• Entradas: A, B, Cin (carry de entrada)

• Saídas: S (soma), Cout (carry de saída)

• S = A ⊕ B ⊕ Cin

• Cout = (A·B) + (Cin·(A⊕B))

• Saída depende apenas das entradas atuais

Circuito Sequencial - Contador Binário:

• Entradas: Clock, Reset

• Saídas: Q₃Q₂Q₁Q₀ (4 bits de contagem)

• Estado atual depende do estado anterior

• Armazena valor da contagem em flip-flops

• A cada pulso de clock, incrementa contagem

Comparação:

• Combinacional: sem memória, resposta imediata

• Sequencial: com memória, comportamento temporal

• Sistemas reais combinam ambos os tipos

Aplicações Práticas

Processadores modernos integram milhões de circuitos combinacionais (ALU, decodificadores) e sequenciais (registradores, cache) trabalhando harmoniosamente. O clock coordena todas as operações, tipicamente em frequências de gigahertz, permitindo bilhões de operações por segundo em dispositivos portáteis.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 7
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Capítulo 2: Portas Lógicas Básicas e Operações

Portas Lógicas Fundamentais

As portas lógicas constituem os blocos construtivos elementares de todos os circuitos digitais, implementando operações booleanas básicas através de circuitos eletrônicos compostos por transistores. Cada porta executa função lógica específica, transformando sinais de entrada em sinais de saída segundo regras bem definidas que correspondem exatamente às operações da álgebra booleana estudada matematicamente.

As três portas fundamentais são AND, OR e NOT. A porta AND produz saída 1 apenas quando todas as entradas são 1, implementando multiplicação lógica. A porta OR produz saída 1 quando pelo menos uma entrada é 1, implementando adição lógica. A porta NOT inverte o sinal de entrada, transformando 0 em 1 e vice-versa, implementando complementação lógica.

Portas derivadas combinam operações fundamentais para maior eficiência. NAND (NOT-AND) e NOR (NOT-OR) são particularmente importantes por serem funcionalmente completas, isto é, qualquer função booleana pode ser implementada usando apenas NAND ou apenas NOR. XOR (OU Exclusivo) produz saída 1 quando entradas diferem, fundamental em circuitos aritméticos e de comparação.

Análise das Portas Básicas

Porta AND (E lógico):

• Símbolo: Y = A · B ou Y = A ∧ B

• Tabela-verdade para 2 entradas:

A | B | Y

--|---|--

0 | 0 | 0

0 | 1 | 0

1 | 0 | 0

1 | 1 | 1

Porta OR (OU lógico):

• Símbolo: Y = A + B ou Y = A ∨ B

• Tabela-verdade para 2 entradas:

A | B | Y

--|---|--

0 | 0 | 0

0 | 1 | 1

1 | 0 | 1

1 | 1 | 1

Porta NOT (NÃO lógico):

• Símbolo: Y = Ā ou Y = ¬A

• Tabela-verdade:

A | Y

--|--

0 | 1

1 | 0

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 8
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Portas NAND e NOR: Completude Funcional

As portas NAND e NOR possuem propriedade notável de completude funcional, significando que qualquer função booleana pode ser implementada exclusivamente com NAND ou exclusivamente com NOR. Esta característica tem implicações profundas para manufatura de circuitos integrados, permitindo padronização de processos de fabricação com um único tipo de porta, simplificando design e reduzindo custos de produção.

A porta NAND resulta da negação da saída AND, produzindo 0 apenas quando todas as entradas são 1. Inversamente, NOR resulta da negação de OR, produzindo 1 apenas quando todas as entradas são 0. Estas portas são fisicamente mais simples de implementar em nível de transistor do que suas contrapartes não negadas, tornando-as escolha preferencial em muitos designs de circuitos integrados.

A demonstração de completude funcional envolve mostrar como implementar AND, OR e NOT usando apenas NAND (ou apenas NOR). NOT implementa-se conectando todas as entradas juntas, AND conectando-se NOT à saída de NAND, e OR aplicando-se De Morgan. Esta versatilidade fundamenta a ubiquidade destas portas em hardware digital moderno.

Implementação com NAND

Porta NAND:

• Y = (A · B)' = Ā + B̄

A | B | A·B | (A·B)'

--|---|-----|--------

0 | 0 | 0 | 1

0 | 1 | 0 | 1

1 | 0 | 0 | 1

1 | 1 | 1 | 0

Implementar NOT com NAND:

• Conectar ambas as entradas: Y = (A · A)' = Ā

Implementar AND com NAND:

• Usar duas portas: Y = ((A · B)')' = A · B

Implementar OR com NAND:

• Por De Morgan: A + B = (Ā · B̄)'

• Negar entradas individualmente, depois NAND

Exemplo prático:

• Expressão: F = A · B + C

• Converter usando apenas NAND:

• F = ((A · B)' · C̄)'

• Requer 4 portas NAND para implementação

Relevância Industrial

Famílias lógicas como 74LS00 (quad NAND) estão entre os circuitos integrados mais produzidos na história. A completude funcional permite que designers construam sistemas completos usando chips padronizados, reduzindo custos e aumentando confiabilidade através de componentes bem testados e caracterizados.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 9
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Porta XOR e Aplicações

A porta XOR (OU Exclusivo) produz saída 1 quando número ímpar de entradas é 1, correspondendo à operação de adição módulo 2. Para duas entradas, XOR retorna 1 quando entradas diferem e 0 quando são iguais. Esta propriedade torna XOR fundamental em circuitos de comparação, detecção de paridade, e operações aritméticas binárias.

Matematicamente, XOR para duas entradas expressa-se como Y = A ⊕ B = A·B̄ + Ā·B, mostrando que saída é 1 quando exatamente uma entrada é 1. Para múltiplas entradas, XOR implementa função paridade, detectando se quantidade de 1s é ímpar. A porta XNOR (equivalência) é complemento de XOR, produzindo 1 quando entradas são iguais.

Aplicações de XOR incluem construção de somadores (bit de soma em somador completo é XOR das entradas), cifragem simétrica (operação XOR com chave), verificação de erros através de bits de paridade, e comparadores de igualdade. Estas aplicações tornam XOR uma das portas mais versáteis em design digital, presente em virtualmente todos os sistemas computacionais modernos.

Análise da Porta XOR

Porta XOR de 2 entradas:

• Símbolo: Y = A ⊕ B

• Expressão: Y = A·B̄ + Ā·B

A | B | A⊕B

--|---|-----

0 | 0 | 0

0 | 1 | 1

1 | 0 | 1

1 | 1 | 0

Propriedades importantes:

• Comutativa: A ⊕ B = B ⊕ A

• Associativa: (A ⊕ B) ⊕ C = A ⊕ (B ⊕ C)

• Identidade: A ⊕ 0 = A

• Auto-inversa: A ⊕ A = 0

• Complemento: A ⊕ 1 = Ā

Aplicação em somador:

• Somador meio: S = A ⊕ B, C = A · B

• Soma dois bits sem carry de entrada

Aplicação em criptografia:

• Cifragem: C = M ⊕ K (mensagem XOR chave)

• Decifragem: M = C ⊕ K (cifra XOR chave)

• Funciona pois (M ⊕ K) ⊕ K = M

Implementação Eficiente

Em CMOS, XOR requer aproximadamente o dobro de transistores de uma porta AND ou OR. Para circuitos com múltiplas XORs, considere explorar equivalências algébricas para minimizar quantidade de portas XOR necessárias, potencialmente substituindo por combinações de AND, OR e NOT quando vantajoso.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 10
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Temporização e Atrasos de Propagação

Embora modelos ideais tratem portas lógicas como dispositivos instantâneos, implementações físicas apresentam atrasos de propagação, tempo necessário para que mudança na entrada reflita na saída. Estes atrasos, tipicamente na ordem de nanossegundos para tecnologias modernas, acumulam-se em circuitos complexos e determinam velocidade máxima de operação do sistema.

O atraso de propagação divide-se em tpHL (high-to-low, quando saída transita de 1 para 0) e tpLH (low-to-high, transição de 0 para 1). Diferenças entre estes valores surgem de características assimétricas dos transistores. O atraso médio tp = (tpHL + tpLH)/2 frequentemente serve como métrica de desempenho da porta.

Glitches são pulsos espúrios que ocorrem devido a atrasos desiguais em diferentes caminhos do circuito, causando transições temporárias indesejadas na saída. Embora transitórios, glitches podem causar mau funcionamento em sistemas sensíveis. Design cuidadoso, incluindo balanceamento de caminhos e uso de técnicas como hazard covering, minimiza problemas relacionados a temporização.

Análise Temporal

Atrasos típicos (tecnologia CMOS 65nm):

• Inversor (NOT): 20 picossegundos

• NAND 2 entradas: 30 ps

• NOR 2 entradas: 35 ps

• XOR 2 entradas: 70 ps

Cálculo de atraso em cascata:

• Circuito: A → NOT → NAND → OR → Saída

• Atraso total = 20 + 30 + 40 = 90 ps

• Frequência máxima ≈ 1/(90×10⁻¹²) ≈ 11 GHz

Exemplo de glitch:

• Circuito: F = A·B + A·C

• Se A=1, B muda 1→0, C muda 0→1

• Devido a atrasos diferentes:

- A·B pode ir para 0 antes de A·C ir para 1

- F temporariamente vai para 0 (glitch)

- Depois estabiliza em 1

Solução para glitches:

• Adicionar termo redundante B·C

• F = A·B + A·C + B·C (hazard-free)

Projeto de Alto Desempenho

Em processadores modernos, caminho crítico (sequência de portas com maior atraso) determina frequência máxima de clock. Otimizações incluem pipeline (dividir operações em estágios), balanceamento de caminhos, e uso de portas mais rápidas em caminhos críticos, mesmo com maior consumo energético.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 11
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Capítulo 3: Álgebra Booleana e Simplificação

Fundamentos da Álgebra Booleana

A álgebra booleana, desenvolvida por George Boole no século XIX, fornece framework matemático formal para análise e manipulação de expressões lógicas digitais. Operando sobre conjunto de dois elementos {0, 1} com operações AND (·), OR (+) e NOT (‾), esta álgebra satisfaz axiomas que permitem simplificação sistemática de funções booleanas, essencial para otimização de circuitos digitais.

Os postulados fundamentais incluem comutatividade (A+B = B+A, A·B = B·A), associatividade ((A+B)+C = A+(B+C)), distributividade (A·(B+C) = A·B + A·C), identidade (A+0=A, A·1=A), e complementação (A+Ā=1, A·Ā=0). Estes postulados, juntamente com teoremas derivados, constituem ferramentas algébricas para transformação de expressões booleanas.

Teoremas importantes incluem absorção (A+A·B = A), De Morgan ((A+B)' = Ā·B̄, (A·B)' = Ā+B̄), consenso (A·B + Ā·C + B·C = A·B + Ā·C), e dupla negação ((Ā)' = A). Aplicação sistemática destes teoremas permite redução de complexidade de expressões, traduzindo-se diretamente em circuitos com menor número de portas, redução de custo e melhoria de desempenho.

Aplicação dos Teoremas

Exemplo de simplificação:

• Expressão original: F = A·B·C + A·B·C̄ + A·B̄·C

Passo 1: Fatorar A·B dos dois primeiros termos

• F = A·B·(C + C̄) + A·B̄·C

Passo 2: Aplicar C + C̄ = 1

• F = A·B·1 + A·B̄·C

• F = A·B + A·B̄·C

Passo 3: Fatorar A

• F = A·(B + B̄·C)

Passo 4: Aplicar absorção: B + B̄·C = B + C

• F = A·(B + C)

Resultado:

• Original: 3 termos produto, 9 literais

• Simplificado: F = A·(B + C), 3 literais

• Redução de 67% em número de literais

• Implementação: 1 porta AND, 1 porta OR (vs. 3 ANDs, 1 OR)

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 12
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Formas Canônicas: Soma de Produtos e Produto de Somas

Formas canônicas proporcionam representações padronizadas de funções booleanas, facilitando comparação, análise e implementação sistemática. A Forma Normal Disjuntiva ou Soma de Produtos (SOP) expressa função como OR de termos AND, onde cada termo contém todas as variáveis. A Forma Normal Conjuntiva ou Produto de Somas (POS) expressa como AND de termos OR.

Mintermos são produtos fundamentais onde todas as variáveis aparecem exatamente uma vez, normais ou complementadas. Para n variáveis, existem 2ⁿ mintermos possíveis. Um mintermo vale 1 para exatamente uma combinação de valores das variáveis. Função em SOP canônica é soma dos mintermos onde função vale 1.

Maxtermos são somas fundamentais com estrutura dual aos mintermos. Maxtermos valem 0 para exatamente uma combinação de entradas. Função em POS canônica é produto dos maxtermos onde função vale 0. Conversão entre formas utiliza dualidade: complementar função, trocar mintermos por maxtermos, e complementar novamente.

Obtenção de Formas Canônicas

Tabela-verdade da função F:

A | B | C | F | Mintermo | Maxtermo

--|---|---|---|----------|----------

0 | 0 | 0 | 0 | - | M₀ = A+B+C

0 | 0 | 1 | 1 | m₁ = Ā·B̄·C | -

0 | 1 | 0 | 0 | - | M₂ = A+B̄+C

0 | 1 | 1 | 1 | m₃ = Ā·B·C | -

1 | 0 | 0 | 1 | m₄ = A·B̄·C̄ | -

1 | 0 | 1 | 0 | - | M₅ = Ā+B+C̄

1 | 1 | 0 | 1 | m₆ = A·B·C̄ | -

1 | 1 | 1 | 0 | - | M₇ = Ā+B̄+C̄

Forma SOP canônica:

• F = Σm(1,3,4,6)

• F = Ā·B̄·C + Ā·B·C + A·B̄·C̄ + A·B·C̄

Forma POS canônica:

• F = ΠM(0,2,5,7)

• F = (A+B+C)·(A+B̄+C)·(Ā+B+C̄)·(Ā+B̄+C̄)

Verificação: Ambas as formas representam mesma função

Escolha da Forma

Use SOP quando função tem mais 0s que 1s na tabela-verdade (menor número de mintermos). Use POS quando há mais 1s que 0s (menor número de maxtermos). Esta escolha minimiza complexidade inicial antes de simplificação adicional através de Karnaugh ou Quine-McCluskey.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 13
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Mapas de Karnaugh para Simplificação

O Mapa de Karnaugh (K-map) constitui ferramenta gráfica para simplificação de funções booleanas através de agrupamento visual de mintermos adjacentes. Organizado para que células adjacentes difiram em apenas uma variável, o mapa facilita identificação de redundâncias e aplicação sistemática de teoremas de simplificação, particularmente efetivo para funções com até 4 ou 5 variáveis.

Cada célula do mapa corresponde a um mintermo, com 1s marcando onde função vale 1. Agrupamentos retangulares de 1s em potências de 2 (1, 2, 4, 8 células) representam simplificações onde variáveis que mudam no grupo são eliminadas. Bordas do mapa são adjacentes (topologia toroidal), permitindo agrupamentos que "envolvem" as extremidades.

Procedimento de simplificação: marcar 1s no mapa, formar maiores grupos possíveis (cobrir todos os 1s), minimizar sobreposições, e extrair expressão simplificada onde cada grupo gera termo produto. Variáveis constantes no grupo aparecem no termo, variáveis que mudam são omitidas. Dont-cares (×) representam condições irrelevantes, podem ser tratados como 0 ou 1 para maximizar simplificação.

Simplificação com K-map

Função: F(A,B,C,D) = Σm(0,1,2,5,6,7,8,9,10,14)

Mapa de Karnaugh 4 variáveis:

CD

AB | 00 | 01 | 11 | 10

---|----|----|----|----|

00 | 1 | 1 | 0 | 1 | (m₀,m₁,m₂)

01 | 0 | 1 | 1 | 1 | (m₅,m₆,m₇)

11 | 0 | 0 | 0 | 1 | (m₁₄)

10 | 1 | 1 | 0 | 1 | (m₈,m₉,m₁₀)

Agrupamentos:

• Grupo 1 (vermelho): m₀,m₁,m₈,m₉ = B̄·D̄ (4 células)

• Grupo 2 (azul): m₁,m₅,m₉ não formam potência de 2

• Reagrupar: m₀,m₂,m₈,m₁₀ = B̄·D̄ (4 células)

• Grupo 3 (verde): m₅,m₇ = A·B̄·D (2 células)

• Grupo 4 (amarelo): m₁₄,m₁₀ = B·C̄·D (2 células)

Expressão simplificada:

• F = B̄·D̄ + A·B̄·D + B·C̄·D

• Original: 10 mintermos (10 ANDs de 4 entradas + OR)

• Simplificada: 3 termos (redução de 70%)

Estratégia de Agrupamento

Sempre busque maiores grupos primeiro (8, depois 4, depois 2, finalmente 1s isolados). Priorize grupos que cobrem 1s essenciais (que não podem ser cobertos por outros grupos). Use dont-cares estrategicamente para aumentar tamanho dos grupos, mas nunca os inclua obrigatoriamente.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 14
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Método Quine-McCluskey

O método Quine-McCluskey oferece algoritmo sistemático para minimização de funções booleanas, particularmente útil quando número de variáveis excede capacidade prática dos mapas de Karnaugh (tipicamente mais de 5 variáveis) ou quando implementação computacional é desejada. Embora mais trabalhoso manualmente, este método garante obtenção de forma mínima através de procedimento determinístico sem ambiguidades.

O algoritmo opera em duas fases distintas. Primeira fase gera implicantes primos através de combinações sucessivas de mintermos que diferem em apenas um bit, eliminando variável correspondente. Processo continua até nenhuma combinação adicional ser possível. Segunda fase seleciona conjunto mínimo de implicantes primos que cobre todos os mintermos originais, utilizando tabela de cobertura.

Implicantes essenciais, aqueles que são únicos a cobrir certo mintermo, são incluídos obrigatoriamente na solução. Após inclusão dos essenciais, mintermos remanescentes são cobertos selecionando-se implicantes primos adicionais, preferencialmente aqueles que cobrem maior número de mintermos ainda descobertos. Soluções múltiplas podem existir quando escolhas equivalentes estão disponíveis.

Aplicação do Método

Função: F(A,B,C,D) = Σm(4,8,10,11,12,15)

Fase 1: Geração de implicantes primos

Grupo 0 (1 bit em 1):

• m₄ = 0100, m₈ = 1000

Grupo 1 (2 bits em 1):

• m₁₀ = 1010, m₁₂ = 1100

Grupo 2 (3 bits em 1):

• m₁₁ = 1011, m₁₅ = 1111

Combinações:

• m₈,m₁₀: 10-0 = A·C̄·D̄

• m₈,m₁₂: 1-00 = A·C̄·D̄

• m₁₀,m₁₁: 101- = A·B̄·C

• m₁₁,m₁₅: 1-11 = A·C·D

Implicantes primos:

• PI₁ = A·C̄·D̄ (cobre m₈,m₁₀,m₁₂)

• PI₂ = A·B̄·C (cobre m₁₀,m₁₁)

• PI₃ = A·C·D (cobre m₁₁,m₁₅)

• PI₄ = Ā·B̄·C̄·D̄ (cobre apenas m₄)

Fase 2: Tabela de cobertura

• PI₄ é essencial (único que cobre m₄)

• PI₁ cobre m₈,m₁₂ (escolher)

• Ou PI₂ + PI₃ cobrem m₁₀,m₁₁,m₁₅

Solução mínima: F = PI₁ + PI₂ + PI₃ + PI₄

Implementação Computacional

Quine-McCluskey adapta-se perfeitamente à implementação em software, sendo base de ferramentas CAD para síntese lógica. Algoritmos modernos como Espresso utilizam variações otimizadas deste método, processando funções com centenas de variáveis em sistemas industriais de design de circuitos integrados.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 15
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Capítulo 4: Circuitos Combinacionais

Características e Projeto de Circuitos Combinacionais

Circuitos combinacionais são aqueles cujas saídas dependem exclusivamente das entradas presentes no momento, sem influência de estados anteriores ou elementos de memória. Esta característica fundamental define comportamento completamente determinado por função lógica específica, implementável através de portas lógicas arranjadas sem realimentação ou elementos de armazenamento.

O projeto de circuitos combinacionais segue metodologia sistemática: especificação do problema através de tabela-verdade ou descrição funcional, obtenção de expressões booleanas para cada saída, simplificação usando álgebra booleana ou K-maps, e finalmente implementação física usando portas lógicas disponíveis. Otimização busca minimizar número de portas, atrasos de propagação, ou consumo energético.

Aplicações típicas incluem codificadores e decodificadores que convertem entre diferentes representações de dados, multiplexadores e demultiplexadores para roteamento de sinais, comparadores para decisões baseadas em magnitude, e circuitos aritméticos como somadores e subtratores. Estes blocos funcionais constituem componentes fundamentais em sistemas digitais complexos, desde simples controladores até processadores sofisticados.

Projeto de Circuito Combinacional

Problema: Projetar conversor BCD para 7 segmentos

Especificação:

• Entrada: 4 bits BCD (representa 0-9)

• Saída: 7 bits para display (a,b,c,d,e,f,g)

Tabela-verdade parcial:

BCD | Dígito | a b c d e f g

----|--------|---------------

0000 | 0 | 1 1 1 1 1 1 0

0001 | 1 | 0 1 1 0 0 0 0

0010 | 2 | 1 1 0 1 1 0 1

0011 | 3 | 1 1 1 1 0 0 1

...

Obtenção de expressões (exemplo para segmento a):

• a = 1 para: 0,2,3,5,6,7,8,9

• Simplificar com K-map

• a = A + C + B·D + B̄·D̄

Implementação:

• Repetir para segmentos b,c,d,e,f,g

• Total: ~30 portas lógicas para 7 saídas

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 16
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Codificadores e Decodificadores

Codificadores convertem informação de formato com muitas linhas para código binário com poucas linhas. Codificador 2ⁿ para n tem 2ⁿ entradas e n saídas, onde apenas uma entrada pode estar ativa por vez. Codificadores prioritários resolvem situação onde múltiplas entradas estão ativas, codificando a de maior prioridade e gerando saída adicional indicando se alguma entrada está ativa.

Decodificadores realizam operação inversa, convertendo código binário de n bits em ativação de uma entre 2ⁿ linhas de saída. Decodificador 3 para 8, por exemplo, recebe 3 bits e ativa exatamente uma entre 8 saídas. Entrada enable permite cascateamento de múltiplos decodificadores para construir decodificadores maiores, técnica fundamental em sistemas de endereçamento de memória.

Aplicações incluem conversão de teclado matricial para código binário (codificador), seleção de memória em sistemas computacionais (decodificador de endereço), displays multiplexados onde decodificador seleciona qual dígito está ativo, e sistemas de controle onde ações específicas são acionadas por combinações de entradas binárias.

Decodificador 2 para 4

Especificação:

• Entradas: A₁, A₀ (2 bits de endereço)

• Saídas: Y₃, Y₂, Y₁, Y₀ (4 linhas de saída)

• Enable: E (ativa decodificador)

Tabela-verdade:

E | A₁ | A₀ | Y₃ | Y₂ | Y₁ | Y₀

--|----|----|----|----|----|----|

0 | X | X | 0 | 0 | 0 | 0

1 | 0 | 0 | 0 | 0 | 0 | 1

1 | 0 | 1 | 0 | 0 | 1 | 0

1 | 1 | 0 | 0 | 1 | 0 | 0

1 | 1 | 1 | 1 | 0 | 0 | 0

Expressões lógicas:

• Y₀ = E · Ā₁ · Ā₀

• Y₁ = E · Ā₁ · A₀

• Y₂ = E · A₁ · Ā₀

• Y₃ = E · A₁ · A₀

Implementação:

• 4 portas AND de 3 entradas

• 2 inversores (para Ā₁ e Ā₀)

• Total: 6 portas lógicas

Cascateamento de Decodificadores

Para construir decodificador 3 para 8 usando dois 2 para 4: use bit mais significativo para selecionar qual decodificador ativar via enable. Conecte dois bits menos significativos às entradas de endereço de ambos. Esta técnica generaliza-se para decodificadores arbitrariamente grandes.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 17
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Multiplexadores e Aplicações

Multiplexadores (MUX) são circuitos que selecionam uma entre múltiplas entradas de dados para rotear à saída única, baseando-se em sinais de seleção. MUX 2ⁿ para 1 possui 2ⁿ entradas de dados, n entradas de seleção, e uma saída. Linhas de seleção formam endereço binário indicando qual entrada deve ser transmitida, funcionando como chave eletrônica controlada digitalmente.

A implementação típica utiliza decodificador para as linhas de seleção gerando sinais de habilitação, seguido de portas AND que habilitam entrada correspondente, e finalmente porta OR combinando todas as entradas habilitadas. Estrutura alternativa emprega árvore de portas de transmissão, mais eficiente em CMOS mas com características de temporização diferentes.

Multiplexadores são extraordinariamente versáteis, implementando qualquer função booleana de n variáveis com MUX de 2ⁿ entradas. Usando variáveis como seleção e conectando entradas de dados a 0, 1, ou variáveis remanescentes, qualquer tabela-verdade pode ser realizada. Esta universalidade torna MUX componente fundamental em datapath de processadores e sistemas configuráveis.

Multiplexador 4 para 1

Especificação:

• Entradas de dados: I₃, I₂, I₁, I₀

• Entradas de seleção: S₁, S₀

• Saída: Y

Tabela de seleção:

S₁ | S₀ | Saída Y

---|----|---------

0 | 0 | I₀

0 | 1 | I₁

1 | 0 | I₂

1 | 1 | I₃

Expressão lógica:

• Y = S̄₁·S̄₀·I₀ + S̄₁·S₀·I₁ + S₁·S̄₀·I₂ + S₁·S₀·I₃

Implementação de função booleana:

• Exemplo: F(A,B,C) = Σm(1,2,6,7)

• Usar MUX 8:1 com A,B,C como seleção

• I₀=0, I₁=1, I₂=1, I₃=0, I₄=0, I₅=0, I₆=1, I₇=1

• Alternativa: MUX 4:1 com A,B como seleção

• I₀=C, I₁=C, I₂=0, I₃=1

Aplicação em Sistemas Computacionais

Processadores utilizam multiplexadores extensivamente para selecionar entre múltiplas fontes de dados: registradores, memória, ou resultado de operação anterior. Bancos de registradores são essencialmente arrays de MUX permitindo acesso flexível a dados armazenados conforme instruções do programa.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 18
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Comparadores de Magnitude

Comparadores de magnitude determinam relação entre dois números binários, produzindo saídas indicando se primeiro número é maior, menor ou igual ao segundo. Estas funções são essenciais em unidades de controle, algoritmos de ordenação, e tomada de decisão baseada em valores numéricos. Comparadores de 1 bit são simples, mas extensão para múltiplos bits requer consideração cuidadosa de propagação de comparação.

Para comparador de 1 bit, igualdade verifica-se com XNOR (A⊙B), que produz 1 quando bits são iguais. Para determinar A maior que B, usa-se A·B̄. Para A menor que B, usa-se Ā·B. Comparadores multi-bit constroem-se comparando bits do mais significativo ao menos significativo, propagando resultado quando bits de mesma posição são iguais.

Implementação em cascata utiliza entradas de propagação que recebem resultado da comparação de bits mais significativos. Bit atual só determina resultado se bits anteriores foram iguais. Esta abordagem permite construção modular de comparadores de qualquer largura, fundamental em ALUs onde operações condicionais dependem de comparações entre operandos.

Comparador de 2 Bits

Especificação:

• Entradas: A = A₁A₀, B = B₁B₀

• Saídas: GT (A>B), EQ (A=B), LT (A

Lógica de comparação:

• Bit mais significativo (posição 1):

- Se A₁ > B₁: então A > B

- Se A₁ < B₁: então A < B

- Se A₁ = B₁: verificar bit menos significativo

Expressões booleanas:

• GT = A₁·B̄₁ + (A₁⊙B₁)·A₀·B̄₀

• EQ = (A₁⊙B₁)·(A₀⊙B₀)

• LT = Ā₁·B₁ + (A₁⊙B₁)·Ā₀·B₀

Exemplo numérico:

• A = 10₂ (2₁₀), B = 01₂ (1₁₀)

• A₁=1, A₀=0, B₁=0, B₀=1

• GT = 1·1̄ + ... = 1·1 = 1 ✓

• EQ = (1⊙0)·(0⊙1) = 0·0 = 0 ✓

• LT = 0·0 + ... = 0 ✓

• Resultado: A > B (correto)

Otimização de Comparadores

Para comparadores de muitos bits, estrutura em árvore reduz atraso de propagação comparado à cascata linear. Comparar pares de bits em paralelo e combinar resultados em níveis sucessivos reduz atraso de O(n) para O(log n), crítico em processadores de alto desempenho.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 19
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Geradores e Verificadores de Paridade

Circuitos de paridade detectam erros simples em transmissão ou armazenamento de dados, adicionando bit redundante que torna quantidade total de 1s par (paridade par) ou ímpar (paridade ímpar). Geradores de paridade calculam bit adicional baseado nos dados, enquanto verificadores examinam dados recebidos incluindo bit de paridade para detectar se erro ocorreu durante transmissão.

A implementação utiliza cascata de portas XOR, aproveitando propriedade de que XOR de múltiplos bits produz 1 quando quantidade de 1s é ímpar. Para paridade par, resultado do XOR em cascata é o bit de paridade. Para paridade ímpar, inverte-se o resultado. Esta abordagem é elegante e eficiente, requerendo apenas n-1 portas XOR para n bits de dados.

Verificadores de paridade aplicam mesma operação aos dados recebidos incluindo bit de paridade. Se resultado é 0, paridade está correta (assumindo paridade par). Se é 1, erro foi detectado. Importante notar que paridade simples detecta apenas erros ímpares (1, 3, 5... bits errados), sendo insuficiente para aplicações críticas que requerem códigos de correção de erro mais sofisticados como Hamming ou Reed-Solomon.

Sistema de Paridade Par

Gerador de paridade para 4 bits:

• Entradas: D₃D₂D₁D₀

• Saída: P (bit de paridade)

• P = D₃ ⊕ D₂ ⊕ D₁ ⊕ D₀

Exemplo de geração:

• Dados: 1011

• P = 1 ⊕ 0 ⊕ 1 ⊕ 1

• P = (1 ⊕ 0) ⊕ (1 ⊕ 1)

• P = 1 ⊕ 0 = 1

• Palavra transmitida: 10111 (5 bits, 4 uns - par)

Verificador de paridade:

• Entradas: D₃D₂D₁D₀P

• Saída: E (erro, 1 se detectado)

• E = D₃ ⊕ D₂ ⊕ D₁ ⊕ D₀ ⊕ P

Caso sem erro:

• Recebido: 10111

• E = 1 ⊕ 0 ⊕ 1 ⊕ 1 ⊕ 1 = 0 (sem erro) ✓

Caso com 1 erro:

• Recebido: 10011 (D₂ corrompido)

• E = 1 ⊕ 0 ⊕ 0 ⊕ 1 ⊕ 1 = 1 (erro detectado) ✓

Limitações da Paridade Simples

Paridade detecta apenas quantidade ímpar de erros. Dois bits errados resultam em paridade correta mas dados incorretos. Para aplicações críticas, códigos mais robustos como CRC (Cyclic Redundancy Check) ou códigos de Hamming que permitem correção além de detecção são necessários.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 20
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Conversores e Transcodificadores

Conversores de código transformam representação de informação entre diferentes sistemas numéricos ou esquemas de codificação, fundamentais em interfaces entre subsistemas que utilizam formatos distintos. Exemplos incluem conversão BCD para binário puro, código Gray para binário, e ASCII para outros formatos. Cada conversão possui complexidade específica determinada pela relação matemática entre códigos envolvidos.

Código Gray, também conhecido como código refletido, possui propriedade única de que valores consecutivos diferem em apenas um bit. Esta característica minimiza transições em sistemas mecânicos ou ópticos, reduzindo erros durante mudanças de estado. Conversão de binário para Gray utiliza operações XOR: bit Gray de posição i é XOR entre bits binários i e i+1, com bit mais significativo mantido igual.

Conversão inversa, Gray para binário, também emprega XOR mas de forma acumulativa: bit binário mais significativo é igual ao Gray correspondente, cada bit seguinte é XOR do bit binário anterior com bit Gray atual. Estas conversões são extremamente eficientes, implementáveis com n-1 portas XOR, tornando código Gray atrativo em encoders rotativos, comunicação assíncrona, e redução de consumo em barramentos.

Conversor Binário para Gray

Algoritmo de conversão (4 bits):

• Entrada binária: B₃B₂B₁B₀

• Saída Gray: G₃G₂G₁G₀

Fórmulas de conversão:

• G₃ = B₃

• G₂ = B₃ ⊕ B₂

• G₁ = B₂ ⊕ B₁

• G₀ = B₁ ⊕ B₀

Exemplo numérico:

• Binário: 1011₂ (11₁₀)

• G₃ = 1

• G₂ = 1 ⊕ 0 = 1

• G₁ = 0 ⊕ 1 = 1

• G₀ = 1 ⊕ 1 = 0

• Gray: 1110

Verificação da propriedade:

• 10₁₀ em binário: 1010, em Gray: 1111

• 11₁₀ em binário: 1011, em Gray: 1110

• Diferença: apenas G₀ muda (1111 → 1110) ✓

Implementação: 3 portas XOR de 2 entradas

Aplicação em Encoders Rotativos

Encoders ópticos usam código Gray para eliminar erros de leitura durante transições. Como apenas um bit muda por vez, leituras durante movimento nunca produzem valores completamente errôneos, diferente de binário onde múltiplos bits mudam simultaneamente podendo causar leituras espúrias.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 21
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Capítulo 5: Multiplexadores e Decodificadores

Aplicações Avançadas de Multiplexadores

Multiplexadores transcendem função básica de seleção de dados, servindo como blocos universais para implementação de funções lógicas arbitrárias. Técnica de Shannon permite decompor qualquer função booleana em termos de uma variável, recursivamente aplicável até reduzir função a constantes e variáveis simples. Esta decomposição mapeia-se naturalmente em estrutura de multiplexador, onde variável de decomposição serve como seleção.

Para implementar função de n variáveis, multiplexador de 2ⁿ⁻¹ entradas usa n-1 variáveis como seleção, deixando variável remanescente para expressar entradas como funções dela (0, 1, variável, ou complemento). Esta técnica reduz pela metade o tamanho do multiplexador necessário, economizando recursos em implementações físicas.

Multiplexadores também implementam máquinas de estados e lógica programável. Conectando saídas de registradores às entradas e usando estado atual como seleção, próximo estado é determinado. Alterando conexões das entradas (através de memória programável), comportamento do sistema modifica-se sem alterar hardware, base dos dispositivos lógicos programáveis (PLDs) e FPGAs modernas.

Implementação de Função com MUX

Função: F(A,B,C) = Σm(1,2,4,7)

Método 1: MUX 8:1 direto

• Usar A,B,C como seleção (S₂S₁S₀)

• I₀=0, I₁=1, I₂=1, I₃=0, I₄=1, I₅=0, I₆=0, I₇=1

Método 2: MUX 4:1 com Shannon

• Decompor por C: F = C̄·F₀ + C·F₁

• F₀ (quando C=0): função de A,B para m(2,4)

F₀ = Σ(AB): 01,10 → F₀ = Ā·B + A·B̄ = A⊕B

• F₁ (quando C=1): função de A,B para m(1,7)

F₁ = Σ(AB): 00,11 → F₁ = Ā·B̄ + A·B = A⊙B

• Usar A,B como seleção do MUX 4:1

• I₀ = C̄·B̄ + C·B̄ = B̄

• I₁ = C̄·B + C·0 = C̄·B

• I₂ = C̄·A + C·0 = C̄·A

• I₃ = C̄·0 + C·B = C·B

Vantagem: MUX menor (4:1 vs 8:1)

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 22
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Demultiplexadores e Roteamento de Dados

Demultiplexadores (DEMUX) realizam operação inversa dos multiplexadores, roteando entrada única para uma entre múltiplas saídas selecionadas. DEMUX 1 para 2ⁿ possui uma entrada de dados, n entradas de seleção, e 2ⁿ saídas. Entrada de dados é transmitida para saída endereçada pelas linhas de seleção, enquanto demais saídas permanecem em estado inativo (tipicamente 0).

Estruturalmente, demultiplexador é idêntico a decodificador com enable, onde entrada de dados funciona como enable. Esta equivalência permite uso intercambiável em muitas aplicações, simplificando design de sistemas. Diferença conceitual reside na interpretação: decodificador ativa linha específica, demultiplexador transmite dado para destino específico.

Aplicações incluem distribuição de dados em sistemas de comunicação serial-paralelo, onde bits recebidos sequencialmente são distribuídos para diferentes destinos, roteamento de sinais de controle em sistemas com múltiplos periféricos compartilhando barramento comum, e geração de sinais de habilitação temporalmente multiplexados em displays e memórias.

Demultiplexador 1 para 4

Especificação:

• Entrada de dados: D

• Entradas de seleção: S₁, S₀

• Saídas: Y₃, Y₂, Y₁, Y₀

Tabela de operação:

S₁ | S₀ | Y₃ | Y₂ | Y₁ | Y₀

---|----|----|----|----|----

0 | 0 | 0 | 0 | 0 | D

0 | 1 | 0 | 0 | D | 0

1 | 0 | 0 | D | 0 | 0

1 | 1 | D | 0 | 0 | 0

Expressões booleanas:

• Y₀ = D · S̄₁ · S̄₀

• Y₁ = D · S̄₁ · S₀

• Y₂ = D · S₁ · S̄₀

• Y₃ = D · S₁ · S₀

Aplicação em display multiplexado:

• D = sinal de dados serial

• S₁S₀ = contador que varre displays

• Y₀-Y₃ = habilitação de 4 displays

• Cada display recebe dados quando selecionado

Equivalência com Decodificador

Decodificador com enable E pode funcionar como DEMUX fazendo E = D (entrada de dados) e usando linhas de endereço como seleção. Esta dualidade permite economia de componentes em designs onde ambas as funções são necessárias, usando mesmo circuito para propósitos diferentes.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 23
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Técnicas de Expansão e Cascateamento

Expansão de circuitos permite construção de sistemas maiores a partir de componentes menores através de cascateamento sistemático. Esta modularidade é fundamental para design hierárquico, onde complexidade gerencia-se dividindo sistema em blocos funcionais tratáveis individualmente. Técnicas variam conforme tipo de circuito, mas princípios gerais incluem uso de sinais de enable, entradas de cascata, e particionamento apropriado de funções.

Para expansão de multiplexadores, técnica piramidal conecta saídas de múltiplos MUX menores às entradas de MUX maior que seleciona entre grupos. Bits mais significativos de seleção controlam MUX superior, bits menos significativos controlam MUX de cada grupo. MUX 16:1 constrói-se com cinco MUX 4:1: quatro no primeiro nível, um no segundo.

Decodificadores expandem-se usando bit(s) de endereço mais significativo(s) para gerar sinais enable dos decodificadores menores. Decodificador 4:16 resulta de dois 3:8 com bit mais significativo controlando qual está ativo. Esta hierarquia estende-se arbitrariamente, sendo base do endereçamento hierárquico em memórias e sistemas de endereçamento de processadores.

Expansão de Multiplexador

Construir MUX 8:1 usando MUX 4:1

Arquitetura:

• Nível 1: dois MUX 4:1 (MUX_A e MUX_B)

• Nível 2: um MUX 2:1 (MUX_C)

Conexões:

• MUX_A: entradas I₀-I₃, seleção S₁S₀, saída Ya

• MUX_B: entradas I₄-I₇, seleção S₁S₀, saída Yb

• MUX_C: entradas Ya,Yb, seleção S₂, saída Y

Funcionamento:

• S₂=0: MUX_C seleciona Ya (grupo I₀-I₃)

S₁S₀ seleciona dentro do grupo

• S₂=1: MUX_C seleciona Yb (grupo I₄-I₇)

S₁S₀ seleciona dentro do grupo

Exemplo de seleção:

• Selecionar I₅: S₂S₁S₀ = 101

• S₂=1 → MUX_C escolhe Yb

• S₁S₀=01 → MUX_B escolhe I₅

• Resultado: Y = I₅ ✓

Recursos necessários:

• 2× MUX 4:1 + 1× MUX 2:1

• Total: 3 circuitos integrados

Projeto Modular

Ao projetar sistemas expandíveis, sempre inclua sinais de enable e entradas/saídas de cascata em módulos base. Isto facilita expansão futura sem redesign completo. Documente claramente hierarquia de seleção para evitar conflitos em endereçamento durante expansão.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 24
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

ROM como Dispositivo Lógico Combinacional

Memórias Read-Only Memory (ROM) podem implementar qualquer função combinacional, armazenando tabela-verdade completa onde endereços correspondem a combinações de entrada e conteúdo corresponde a saídas desejadas. Esta abordagem é especialmente vantajosa para funções complexas onde simplificação algébrica produziria circuitos intrincados, ou quando múltiplas funções relacionadas são necessárias simultaneamente.

ROM de 2ⁿ × m possui n linhas de endereço (entradas) e m linhas de dados (saídas), armazenando 2ⁿ palavras de m bits. Para implementar função booleana, cada combinação de entrada endereça localização contendo valor apropriado das saídas. Decodificador interno converte endereço em seleção de linha, array de memória fornece dados, e buffers de saída apresentam resultado.

Vantagens incluem implementação garantida de qualquer função (universalidade), facilidade de modificação (reprogramando ROM), e consolidação de múltiplas funções em único dispositivo. Desvantagens são tamanho exponencial com número de variáveis, impossibilidade de otimização para funções esparsas, e velocidade potencialmente inferior a lógica dedicada. ROMs são ideais para tabelas de lookup, conversão de códigos, e funções matemáticas aproximadas.

Implementação de Função em ROM

Problema: Converter BCD para excesso-3

Especificação:

• BCD válido: 0000-1001 (0-9₁₀)

• Excesso-3: adiciona 3 ao BCD

• 0000₂ → 0011₂, 1001₂ → 1100₂

Configuração da ROM:

• Tamanho: 16 × 4 (4 entradas, 4 saídas)

• Endereços 0-9: valores válidos

• Endereços 10-15: dont-care (pode ser 0)

Conteúdo programado:

End | BCD | ROM[End] | Exc-3

----|-----|---------|-------

0 | 0000 | 0011 | 3

1 | 0001 | 0100 | 4

2 | 0010 | 0101 | 5

... | ... | ... | ...

9 | 1001 | 1100 | 12

10-15 | × | 0000 | ×

Vantagem:

• Implementação direta sem simplificação

• Fácil verificação e manutenção

• Múltiplas conversões em uma ROM

ROMs Programáveis

PROMs (Programmable ROM) permitem programação uma vez pelo usuário. EPROMs (Erasable PROM) permitem reprogramação via UV. EEPROMs permitem reprogramação elétrica. Flash é EEPROM de alta densidade. Escolha depende de necessidade de reprogramação e volume de produção.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 25
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Dispositivos Lógicos Programáveis (PLDs)

Dispositivos Lógicos Programáveis revolucionaram design digital permitindo implementação de circuitos customizados sem necessidade de fabricação de chips dedicados. PLDs contêm array de portas lógicas configuráveis através de conexões programáveis, possibilitando implementação de funções booleanas arbitrárias. Hierarquia de PLDs inclui PAL (Programmable Array Logic), GAL (Generic Array Logic), CPLD (Complex PLD), e FPGA (Field Programmable Gate Array).

PALs utilizam plano AND programável seguido de plano OR fixo, permitindo implementação eficiente de funções em soma de produtos. Cada saída possui OR fixo conectado a grupo de ANDs programáveis. Esta arquitetura limita flexibilidade mas oferece desempenho previsível e estrutura simples. GALs melhoram PALs com reprogramabilidade elétrica e macrocélulas configuráveis que incluem flip-flops e multiplexadores.

CPLDs integram múltiplos blocos tipo PAL/GAL interconectados por matriz de roteamento programável, oferecendo maior capacidade mantendo desempenho determinístico. FPGAs fornecem máxima flexibilidade com arrays de blocos lógicos simples (lookup tables) e recursos de roteamento extensivos, permitindo implementação de sistemas digitais extremamente complexos incluindo processadores completos.

Estrutura de PAL Simples

PAL 16L8 (exemplo simplificado):

Entradas: 16 pinos (10 dedicados, 6 I/O)

Saídas: 8 pinos configuráveis

Arquitetura:

• Plano AND: matriz programável

- Cada entrada e seu complemento disponíveis

- Fusíveis selecionam quais entram em cada AND

• Plano OR: conexões fixas

- Cada saída recebe 7-8 termos produto

Programação de função:

• F = A·B·C + Ā·B̄·D + A·C̄·D

• Termo 1: queimar fusíveis exceto A,B,C

• Termo 2: queimar fusíveis exceto Ā,B̄,D

• Termo 3: queimar fusíveis exceto A,C̄,D

• OR automático combina os 3 termos

Vantagens do PAL:

• Tempo de propagação fixo

• Arquitetura simples e previsível

• Ideal para máquinas de estados pequenas

• Menor custo que CPLD/FPGA

Escolha do Dispositivo

Use PAL/GAL para funções simples com poucos termos produto. CPLD para lógica de controle com requisitos de temporização rigorosos. FPGA para sistemas complexos, processamento de sinais, ou quando necessita muitos recursos de memória e multiplicadores. Considere reprogramabilidade, custo, e ferramentas de desenvolvimento disponíveis.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 26
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Hazards e Glitches em Circuitos Combinacionais

Hazards são pulsos transitórios indesejados que aparecem nas saídas de circuitos combinacionais devido a atrasos desiguais em diferentes caminhos do circuito. Embora transitórios, hazards podem causar mau funcionamento em sistemas sensíveis, particularmente quando alimentam circuitos sequenciais que podem capturar estados errôneos durante transições. Compreender e eliminar hazards é crucial para design de sistemas confiáveis.

Hazards estáticos ocorrem quando saída deveria permanecer constante mas momentaneamente muda. Static-1 hazard produz pulso para 0 quando saída deveria ficar em 1. Static-0 hazard produz pulso para 1 quando saída deveria ficar em 0. Hazards dinâmicos causam múltiplas transições quando deveria haver apenas uma. Hazards estáticos em 1 são mais comuns e resultam de termos produto complementares não cobertos por termo redundante.

Eliminação de hazards estáticos em SOP adiciona-se termos redundantes que cobrem transições problemáticas no mapa de Karnaugh. Para cada par de 1s adjacentes não cobertos pelo mesmo termo produto, adiciona-se termo cobrindo ambos. Esta abordagem garante que durante qualquer transição de entrada única, pelo menos um termo produto permanece ativo, eliminando glitch. Custo é aumento de portas, mas ganho em confiabilidade frequentemente justifica overhead.

Análise e Correção de Hazard

Função com hazard: F = A·B + Ā·C

Situação problemática:

• Estado: A=1, B=1, C=1 → F=1 (primeiro termo)

• Transição: A muda de 1→0

• Novo estado: A=0, B=1, C=1 → F=1 (segundo termo)

Análise temporal:

• t₀: A=1, termo A·B = 1, termo Ā·C = 0, F=1

• t₁: A muda para 0

• t₂: A·B vai para 0 (atraso na porta AND)

• t₃: Ā aparece (atraso no inversor)

• t₄: Ā·C vai para 1 (atraso na porta AND)

• Entre t₂ e t₄: ambos termos são 0 → F=0 (glitch!)

Correção com termo redundante:

• F = A·B + Ā·C + B·C (termo B·C adicionado)

• Durante transição A: 1→0 com B=C=1

- Termo B·C permanece 1 todo tempo

- F sempre 1, sem glitch ✓

Verificação no K-map:

• Grupo AB, grupo ĀC, grupo BC (redundante)

• Todos pares adjacentes cobertos

Quando Preocupar-se com Hazards

Em circuitos puramente combinacionais com saídas amostradas após estabilização, hazards são inofensivos. Preocupação surge quando saídas combinacionais alimentam flip-flops assíncronos, geram interrupções, ou controlam dispositivos sensíveis. Para esses casos, eliminação de hazards ou sincronização apropriada é essencial.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 27
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Capítulo 6: Circuitos Aritméticos Digitais

Somadores Binários

Circuitos aritméticos implementam operações matemáticas fundamentais em hardware digital, sendo componentes essenciais das Unidades Lógicas e Aritméticas (ALUs) em processadores. O somador constitui bloco construtivo básico, do qual derivam subtratores, multiplicadores e outras funções aritméticas. Compreensão profunda de somadores é fundamental para design eficiente de sistemas computacionais.

Somador meio (half adder) adiciona dois bits produzindo soma e carry, implementado com XOR para soma (S = A ⊕ B) e AND para carry (C = A·B). Somador completo (full adder) adiciona três bits - dois operandos e carry de entrada - produzindo soma e carry de saída. Equações são S = A ⊕ B ⊕ Cin e Cout = A·B + Cin·(A⊕B), ou equivalentemente Cout = A·B + A·Cin + B·Cin.

Somadores multi-bit constroem-se conectando somadores completos em cascata, onde carry de cada estágio alimenta próximo. Somador ripple-carry é mais simples mas possui atraso proporcional ao número de bits. Somadores carry-lookahead calculam carries em paralelo usando lógica adicional, reduzindo atraso para logarítmico. Escolha entre arquiteturas envolve compromisso entre velocidade, área e consumo energético.

Projeto de Somador Completo

Tabela-verdade:

A | B | Cin | S | Cout

--|---|-----|---|-----

0 | 0 | 0 | 0 | 0

0 | 0 | 1 | 1 | 0

0 | 1 | 0 | 1 | 0

0 | 1 | 1 | 0 | 1

1 | 0 | 0 | 1 | 0

1 | 0 | 1 | 0 | 1

1 | 1 | 0 | 0 | 1

1 | 1 | 1 | 1 | 1

Expressões booleanas:

• S = A ⊕ B ⊕ Cin

• Cout = A·B + Cin·(A ⊕ B)

Implementação com dois Half Adders:

• HA1: A, B → S1 = A⊕B, C1 = A·B

• HA2: S1, Cin → S = S1⊕Cin, C2 = S1·Cin

• Cout = C1 + C2

Recursos necessários:

• 2 portas XOR (para XORs)

• 2 portas AND (para carries)

• 1 porta OR (combinar carries)

• Total: 5 portas lógicas

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 28
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Somadores Carry-Lookahead

O somador carry-lookahead (CLA) elimina propagação sequencial de carries característica do ripple-carry através de cálculo paralelo dos carries usando funções de geração (G) e propagação (P). Para cada bit, G indica se carry é gerado independente de entrada (Gi = Ai·Bi), enquanto P indica se carry de entrada é propagado (Pi = Ai ⊕ Bi). Carries são então expressas em termos apenas de entradas originais, permitindo cômputo simultâneo.

Expressões de carry expandem-se recursivamente: C1 = G0 + P0·C0, C2 = G1 + P1·G0 + P1·P0·C0, e assim sucessivamente. Cada carry requer apenas dois níveis de lógica além das funções G e P, resultando em atraso constante independente da posição do bit. Entretanto, complexidade das portas aumenta com número de bits, limitando CLA prático a grupos de 4-8 bits.

CLA hierárquico combina múltiplos grupos CLA usando carry-lookahead de segundo nível. Grupos de 4 bits geram supercarry G* e P*, que alimentam CLA de nível superior calculando carries entre grupos. Esta hierarquia estende-se para somadores de 32, 64 ou mais bits mantendo atraso logarítmico. Arquitetura é padrão em processadores modernos onde velocidade aritmética é crítica para desempenho geral.

CLA de 4 Bits

Funções Generate e Propagate:

• G₀ = A₀·B₀, P₀ = A₀ ⊕ B₀

• G₁ = A₁·B₁, P₁ = A₁ ⊕ B₁

• G₂ = A₂·B₂, P₂ = A₂ ⊕ B₂

• G₃ = A₃·B₃, P₃ = A₃ ⊕ B₃

Expressões de Carry:

• C₁ = G₀ + P₀·C₀

• C₂ = G₁ + P₁·G₀ + P₁·P₀·C₀

• C₃ = G₂ + P₂·G₁ + P₂·P₁·G₀ + P₂·P₁·P₀·C₀

• C₄ = G₃ + P₃·G₂ + P₃·P₂·G₁ + P₃·P₂·P₁·G₀ + P₃·P₂·P₁·P₀·C₀

Bits de soma:

• S₀ = P₀ ⊕ C₀

• S₁ = P₁ ⊕ C₁

• S₂ = P₂ ⊕ C₂

• S₃ = P₃ ⊕ C₃

Análise de temporização:

• Nível 1: G e P (1 porta de atraso)

• Nível 2: Carries (2 portas de atraso)

• Nível 3: Soma (1 porta XOR)

• Total: ~4 portas vs. 8 no ripple-carry de 4 bits

Compromisso Velocidade-Área

CLA é significativamente mais rápido que ripple-carry mas requer mais portas e roteamento complexo. Para somadores de 8-16 bits, CLA compensa. Para 32+ bits, híbrido com CLA de 2 níveis é comum. Escolha depende de requisitos de desempenho e restrições de área/potência do chip.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 29
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Subtratores e Complemento de Dois

Subtração em circuitos digitais implementa-se elegantemente através de complemento de dois, permitindo reutilização de somadores para subtrair. Complemento de dois de número binário obtém-se invertendo todos os bits (complemento de um) e adicionando 1. Propriedade fundamental é que A - B = A + (complemento-de-dois de B), transformando subtração em adição de valor negativo representado em complemento de dois.

Somador-subtrator combina somador com portas XOR que condicionalmente invertem segundo operando baseado em sinal de controle. Quando SUB=0, XORs passam B inalterado e carry-in é 0, resultando em A+B. Quando SUB=1, XORs invertem B e carry-in é 1 (adiciona 1 após inversão), resultando em A+(-B) = A-B. Este design unificado economiza recursos em ALUs.

Overflow ocorre quando resultado excede faixa representável. Em complemento de dois com n bits, faixa é -2⁽ⁿ⁻¹⁾ a 2⁽ⁿ⁻¹⁾-1. Overflow detecta-se quando carry entra e sai do bit de sinal diferem: Voverflow = Cn ⊕ Cn-1. Tratamento de overflow varia: ignorar, saturar em valor máximo/mínimo, ou gerar exceção. Escolha depende de aplicação e arquitetura do processador.

Somador-Subtrator de 4 Bits

Arquitetura:

• Entradas: A₃A₂A₁A₀, B₃B₂B₁B₀, SUB

• Saídas: S₃S₂S₁S₀, V (overflow)

Circuito:

• 4 portas XOR: B'ᵢ = Bᵢ ⊕ SUB (i=0 a 3)

• Somador 4-bit: A + B' + SUB

• V = C₄ ⊕ C₃

Operação de adição (SUB=0):

• B'ᵢ = Bᵢ ⊕ 0 = Bᵢ

• C₀ = SUB = 0

• Resultado = A + B ✓

Operação de subtração (SUB=1):

• B'ᵢ = Bᵢ ⊕ 1 = B̄ᵢ (inversão)

• C₀ = SUB = 1 (adiciona 1)

• Resultado = A + B̄ + 1 = A + compl-2(B) = A - B ✓

Exemplo com overflow:

• A = 0111₂ (+7), B = 0010₂ (+2)

• A + B = 1001₂ (interpretado como -7, overflow!)

• C₄=0, C₃=1 → V = 0⊕1 = 1 (detectado) ✓

Detecção de Overflow

Regra prática: overflow ocorre quando sinais dos operandos são iguais mas sinal do resultado difere. Equivalentemente, quando carry entra no bit de sinal mas não sai (ou vice-versa). Esta detecção é essencial para aritmética de inteiros com sinal em linguagens de programação de alto nível.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 30
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Multiplicadores Binários

Multiplicação binária segue mesmo algoritmo da decimal: multiplica multiplicando por cada bit do multiplicador, desloca produtos parciais apropriadamente, e soma. Para números de n bits, multiplicador array implementa este processo com n-1 linhas de somadores, cada processando produto parcial e carry da linha anterior. Resultado possui 2n bits, acomodando produto máximo.

Multiplicador 2×2 é bloco elementar: produz 4 produtos parciais P₀₀=A₀·B₀, P₀₁=A₀·B₁, P₁₀=A₁·B₀, P₁₁=A₁·B₁ usando portas AND. Somadores arranjam-se para produzir C₃C₂C₁C₀, onde C₀=P₀₀, C₁ resulta de somar P₀₁ e P₁₀, e bits superiores incluem carries. Generalização para multiplicadores maiores replica este padrão em estrutura bidimensional de portas AND e somadores.

Multiplicadores mais eficientes empregam algoritmos como Booth que reduzem número de operações, ou multiplicadores Wallace tree que organizam somadores em árvore minimizando atraso. Multiplicadores sequenciais realizam multiplicação em múltiplos ciclos de clock usando somador único e registradores de deslocamento, economizando área em detrimento de velocidade. Escolha da arquitetura depende de requisitos de throughput, latência, e área disponível.

Multiplicador 2×2

Operandos: A = A₁A₀, B = B₁B₀

Produto: P = P₃P₂P₁P₀ (4 bits)

Produtos parciais:

• PP0: A₁·B₀ A₀·B₀ (multiplicação por B₀)

• PP1: A₁·B₁ A₀·B₁ 0 (multiplicação por B₁, deslocada)

Lógica de formação:

• P₀ = A₀·B₀ (direto)

• P₁ = (A₁·B₀) ⊕ (A₀·B₁) (soma sem carry)

• C = (A₁·B₀) · (A₀·B₁) (carry para próximo)

• P₂ = (A₁·B₁) ⊕ C (soma com carry anterior)

• P₃ = (A₁·B₁) · C (carry final)

Exemplo numérico:

• A = 11₂ (3), B = 10₂ (2)

• A₁·B₀ = 1·0 = 0, A₀·B₀ = 1·0 = 0

• A₁·B₁ = 1·1 = 1, A₀·B₁ = 1·1 = 1

• P₀ = 0, P₁ = 0⊕1 = 1

• C = 0·1 = 0, P₂ = 1⊕0 = 1, P₃ = 1·0 = 0

• Resultado: 0110₂ = 6₁₀ ✓ (3×2=6)

Multiplicadores em Hardware Moderno

Processadores modernos incluem multiplicadores dedicados de 32 ou 64 bits com latência de 1-3 ciclos. FPGAs oferecem blocos DSP especializados para multiplicação rápida. Para aplicações customizadas, escolha entre multiplicadores array (rápidos, grandes), sequenciais (lentos, pequenos), ou Booth (intermediário com vantagem para números com sinal).

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 31
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Divisores e Unidade Lógica Aritmética

Divisão binária é operação mais complexa aritmeticamente, tipicamente implementada através de algoritmo de subtração repetida análogo à divisão longa. Circuitos divisores são maiores e mais lentos que multiplicadores, frequentemente implementados sequencialmente mesmo em processadores de alto desempenho. Algoritmo básico subtrai divisor do dividendo, conta quantas vezes é possível, gerando quociente e resto.

Divisores restaurativos testam se subtração produz resultado negativo; caso sim, restauram valor anterior. Divisores não-restaurativos ajustam sinal da operação em iteração seguinte, evitando restauração explícita. Algoritmo SRT (Sweeney, Robertson, Tocher) permite dígitos de quociente em {-1,0,1}, redundância que acelera decisões de dígito. Independente do algoritmo, divisão requer n iterações para n bits de quociente.

A Unidade Lógica Aritmética (ALU) integra somador-subtrator, operações lógicas (AND, OR, XOR), e frequentemente multiplicador, selecionando operação através de código de controle. ALUs modernas incluem shift, rotação, e comparação. Design típico usa multiplexadores para selecionar resultado correto baseado em opcode. Flags de status (zero, carry, overflow, sinal) são geradas para suportar programação condicional e detecção de exceções.

ALU Simples de 4 Bits

Entradas:

• Operandos: A[3:0], B[3:0]

• Controle: OP[2:0] (8 operações possíveis)

Saídas:

• Resultado: R[3:0]

• Flags: Z (zero), C (carry), V (overflow), N (negativo)

Operações implementadas:

OP | Operação | Implementação

---|----------|---------------

000 | R = A+B | Somador

001 | R = A-B | Somador-subtrator

010 | R = A&B | AND bit-a-bit

011 | R = A|B | OR bit-a-bit

100 | R = A⊕B | XOR bit-a-bit

101 | R = ¬A | Inversão

110 | R = A<<1 | Shift esquerda

111 | R = A>>1 | Shift direita

Geração de flags:

• Z = (R == 0) → NOR de todos os bits

• C = carry-out do bit 3 (em adição/subtração)

• V = C₄ ⊕ C₃ (em adição/subtração)

• N = R[3] (bit de sinal)

Uso dos flags:

• Z para branches condicionais (if R == 0)

• C para aritmética multi-precisão

• V para detectar overflow em inteiros com sinal

• N para comparações (resultado negativo)

Otimização de ALU

Em ALUs reais, caminho crítico frequentemente é adição. Use carry-lookahead para minimizar atraso aritmético. Operações lógicas são inerentemente rápidas (apenas 1 nível de porta), então não limitam frequência. Considere pipeline interno da ALU para operações complexas como multiplicação e divisão.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 32
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Comparadores e Shifters Avançados

Comparadores avançados realizam operações de magnitude em tempo reduzido através de arquiteturas paralelas. Comparadores de árvore dividem problema recursivamente: comparar blocos de bits em paralelo e combinar resultados. Para comparador de 8 bits, dois comparadores de 4 bits operam em paralelo, resultados combinam-se com lógica simples. Atraso é O(log n) versus O(n) da comparação sequencial bit-a-bit.

Shifters (deslocadores) movem bits em padrões específicos: shift lógico insere zeros, shift aritmético preserva sinal, rotate reintroduz bits deslocados. Implementação ingênua com multiplexadores requer n MUX n:1 para shifter de n bits. Barrel shifter é otimização que permite deslocamento de quantidade arbitrária em tempo constante, usando log n estágios de multiplexadores 2:1, cada dobrando deslocamento potencial.

Funnel shifter combina dois operandos para shifts maiores que largura da palavra, essencial em operações de concatenação e manipulação de campos de bits. Implementação típica concatena entradas, usa shifter barrel na palavra dupla, e seleciona n bits apropriados. Estas operações são fundamentais em processamento de strings, criptografia, e compressão de dados onde manipulação de bits em nível baixo é necessária.

Barrel Shifter de 8 Bits

Arquitetura em 3 estágios:

Estágio 1: Shift de 0 ou 1 bit (controle S₀)

• Se S₀=0: saída = entrada

• Se S₀=1: saída = entrada << 1

Estágio 2: Shift de 0 ou 2 bits (controle S₁)

• Se S₁=0: saída = entrada do estágio 1

• Se S₁=1: saída = entrada do estágio 1 << 2

Estágio 3: Shift de 0 ou 4 bits (controle S₂)

• Se S₂=0: saída = entrada do estágio 2

• Se S₂=1: saída = entrada do estágio 2 << 4

Exemplo de deslocamento:

• Entrada: 10110010

• Deslocar 5 bits: S₂S₁S₀ = 101₂ = 5₁₀

• Estágio 1 (S₀=1): 01100100 (shift 1)

• Estágio 2 (S₁=0): 01100100 (sem shift)

• Estágio 3 (S₂=1): 01000000 (shift 4)

• Total: shift de 1+0+4 = 5 bits ✓

Vantagens:

• Atraso constante: 3 níveis de MUX

• Qualquer deslocamento 0-7 bits

• Usado em processadores RISC

Aplicações de Shifters

Shifters são fundamentais para: multiplicação/divisão por potências de 2 (shift = operação aritmética rápida), extração de campos em instruções, alinhamento de dados em memória, operações de bits em criptografia, e normalização em ponto flutuante. Hardware dedicado justifica-se pelo uso intensivo em praticamente todas as operações de processador.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 33
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Capítulo 7: Circuitos Sequenciais e Flip-Flops

Introdução aos Circuitos Sequenciais

Circuitos sequenciais diferem fundamentalmente dos combinacionais pela incorporação de memória, permitindo que saídas dependam não apenas das entradas presentes mas também da história do sistema. Esta característica temporal transforma circuitos digitais de meros processadores de dados instantâneos em sistemas computacionais completos capazes de armazenar informação, contar eventos, e implementar máquinas de estados complexas.

Elementos de memória básicos são latches e flip-flops, dispositivos biestáveis que armazenam um bit de informação. Latches são transparentes, passando entrada para saída enquanto habilitados. Flip-flops são disparados por borda, capturando entrada apenas durante transição do clock, proporcionando sincronização precisa essencial para operação confiável de sistemas digitais complexos.

Classificação de circuitos sequenciais divide-se em síncronos, onde mudanças ocorrem sincronizadas com pulsos de clock, e assíncronos, onde mudanças ocorrem imediatamente em resposta a entradas. Sistemas síncronos dominam design moderno pela simplicidade de análise, previsibilidade temporal, e facilidade de teste. Circuitos assíncronos aparecem em interfaces, detecção de eventos, e sistemas de baixíssimo consumo onde clock seria desvantagem.

Diferença Entre Latch e Flip-Flop

Latch SR (Set-Reset):

• Entradas: S (Set), R (Reset), EN (Enable)

• Comportamento:

- EN=1: saída segue entradas SR imediatamente

- EN=0: saída mantém valor anterior (memória)

• Problema: transparência causa race conditions

Flip-Flop D:

• Entradas: D (Data), CLK (Clock)

• Comportamento:

- Borda de subida de CLK: Q ← D

- Entre bordas: Q mantém valor (memória)

• Vantagem: mudança apenas em momentos definidos

Diagrama temporal:

• Latch: mudanças enquanto EN=1 (múltiplas possíveis)

• Flip-Flop: mudança apenas em ↑CLK (única, precisa)

Aplicações:

• Latch: buffer temporário, multiplex de displays

• Flip-Flop: registradores, contadores, máquinas de estado

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 34
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Latches e Elementos de Memória Básicos

O latch SR é elemento de memória mais simples, construído com duas portas NOR ou NAND em configuração cruzada criando realimentação positiva. Entrada S (Set) força saída Q=1, entrada R (Reset) força Q=0. Quando ambas S=R=0, circuito mantém estado anterior - propriedade fundamental de memória. Condição S=R=1 é proibida pois resulta em comportamento indeterminado quando entradas retornam simultaneamente a 0.

Latch D elimina ambiguidade do SR conectando entrada R a S através de inversor, garantindo que apenas uma ação (set ou reset) ocorra por vez. Adicionar entrada enable cria latch D habilitado, armazenando valor de D quando enable está ativo, mantendo valor quando enable desativa. Este é bloco construtivo para flip-flops mais complexos e aparece em caminhos de dados como buffer temporário.

Latches transparentes apresentam problema de race condition em sistemas síncronos: enquanto habilitados, múltiplas transições podem atravessar, causando comportamento errático. Solução é uso de flip-flops mestre-escravo ou edge-triggered que eliminam transparência, garantindo que apenas uma transição ocorra por ciclo de clock, fundamental para operação confiável de sistemas digitais complexos.

Latch SR com Portas NOR

Circuito:

• Porta NOR1: entradas S e Q̄ → saída Q

• Porta NOR2: entradas R e Q → saída Q̄

• Realimentação: Q alimenta NOR2, Q̄ alimenta NOR1

Tabela característica:

S | R | Q(próx) | Operação

--|---|---------|----------

0 | 0 | Q(atual)| Memória

0 | 1 | 0 | Reset

1 | 0 | 1 | Set

1 | 1 | × | Proibido

Análise de operação (Set):

• Estado inicial: Q=0, Q̄=1

• Aplicar S=1, R=0

• NOR1: 1 NOR 1 = 0 → Q=0 inicialmente

• Aguarde propagação...

• NOR1: 1 NOR 0 = 0... não, 1 NOR 1 = 0

• Análise correta: S=1 força Q=1 via NOR1

• Q=1 alimenta NOR2: 0 NOR 1 = 0 → Q̄=0

• Q̄=0 alimenta NOR1: 1 NOR 0 = 0... ajusta-se a 1

• Estado final estável: Q=1, Q̄=0 ✓

Metaestabilidade

Quando entradas violam tempos de setup/hold, latch pode entrar em estado metaestável oscilando entre 0 e 1 antes de estabilizar. Este fenômeno é inevitável em sistemas assíncronos. Sincronizadores multi-estágio reduzem probabilidade de metaestabilidade propagar-se, mas não eliminam completamente o risco.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 35
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Flip-Flops Disparados por Borda

Flip-flops disparados por borda (edge-triggered) capturam entrada apenas durante transição específica do clock - borda de subida (rising edge) ou descida (falling edge) - proporcionando sincronização precisa fundamental para sistemas digitais confiáveis. Implementação clássica usa configuração mestre-escravo com dois latches em série, primeiro captura dado enquanto clock está baixo, segundo transfere para saída na borda de subida.

Flip-flop D é mais comum, transferindo valor de entrada D para saída Q na borda do clock. Simplicidade conceitual (Q⁺ = D) torna-o ideal para registradores de dados, pipelines, e qualquer aplicação requerendo armazenamento sincronizado. Variantes incluem enable (somente atualiza quando habilitado), reset assíncrono (Q=0 independente de clock), e set assíncrono (Q=1 independente de clock).

Flip-flops JK e T oferecem funcionalidade adicional mas raramente são usados diretamente em designs modernos, sendo substituídos por flip-flops D com lógica externa. JK permite todas operações (hold, set, reset, toggle), T complementa saída quando entrada é 1. Historicamente importantes, hoje persistem primariamente em contextos educacionais e alguns designs legados.

Flip-Flop D Mestre-Escravo

Arquitetura:

• Latch Mestre: D, CLK → Qm

• Latch Escravo: Qm, CLK̄ → Q

• Clock invertido para escravo

Operação:

Fase 1 (CLK=0):

• Mestre habilitado: Qm segue D

• Escravo desabilitado: Q mantém valor anterior

Fase 2 (CLK=1):

• Mestre desabilitado: Qm congela

• Escravo habilitado: Q ← Qm

• Transferência ocorre na transição 0→1

Exemplo temporal:

• t₀: CLK=0, D=1 → Qm=1, Q=0 (anterior)

• t₁: D muda para 0 → Qm=0, Q=0

• t₂: CLK↑ (borda subida) → Qm congela em 0, Q←0

• t₃: D muda para 1 → Qm permanece 0 (desabilitado), Q=0

• Próxima borda: Q capturará novo D

Parâmetros temporais críticos:

• tsu (setup time): D estável antes do CLK↑

• th (hold time): D estável após CLK↑

• Violação → resultado imprevisível

Escolha de Reset

Reset assíncrono é imediato mas pode causar problemas com clock skew. Reset síncrono aguarda borda do clock, mais seguro mas adiciona latência. Para sistemas críticos, use reset assíncrono assert + síncrono deassert: ativa reset imediatamente, desativa sincronizado com clock, evitando corrupção de estado.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 36
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Registradores e Armazenamento Paralelo

Registradores são arranjos de flip-flops operando sincronizadamente para armazenar palavras multi-bit. Registrador de n bits consiste de n flip-flops compartilhando sinal de clock comum, permitindo captura simultânea de dados paralelos. Aplicações incluem armazenamento temporário em datapath de processadores, buffering entre estágios de pipeline, e implementação de bancos de registradores em arquiteturas RISC.

Registradores de deslocamento movem dados serialmente, deslocando conteúdo uma posição a cada pulso de clock. Configuração básica conecta saída de cada flip-flop à entrada do próximo, implementando fila FIFO. Variantes incluem deslocamento direita/esquerda selecionável, carga paralela para inicialização rápida, e operação bidirecional essencial para comunicação serial e processamento de dados streaming.

Registradores universais combinam funcionalidades múltiplas: carga paralela, deslocamento esquerda/direita, hold. Multiplexadores em cada estágio selecionam operação baseada em código de controle. Esta versatilidade torna registradores universais ideais para aplicações genéricas mas com overhead de área e complexidade. Para funções específicas, registradores dedicados são mais eficientes.

Registrador de Deslocamento 4-Bit

Configuração SIPO (Serial In, Parallel Out):

• Entrada serial: SI

• Clock: CLK (comum a todos FF)

• Saídas paralelas: Q₃Q₂Q₁Q₀

Conexões:

• FF0: D₀=SI, saída Q₀

• FF1: D₁=Q₀, saída Q₁

• FF2: D₂=Q₁, saída Q₂

• FF3: D₃=Q₂, saída Q₃

Operação de carga serial:

• Inicial: Q₃Q₂Q₁Q₀ = 0000

• Carregar 1101₂ via SI:

• CLK1: SI=1 → 0001

• CLK2: SI=0 → 0010

• CLK3: SI=1 → 0101

• CLK4: SI=1 → 1101 ✓

Aplicação típica:

• Conversão serial-paralela em UART

• Receber dados de linha serial

• Apresentar byte completo para processamento

Registradores em Processadores

Processadores modernos possuem 16-32 registradores de propósito geral de 32 ou 64 bits. Banco de registradores usa decodificadores para seleção e multiplexadores para roteamento, permitindo múltiplas leituras e escrita simultâneas. Registradores de porta dupla ou tripla são comuns em designs superescalares.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 37
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Análise Temporal e Sincronização

Análise temporal garante que circuitos sequenciais operem corretamente em frequência desejada, verificando que sinais estabilizem-se antes de serem amostrados. Parâmetros críticos incluem tempo de setup (tsu), durante o qual entrada deve estar estável antes da borda do clock, tempo de hold (th), durante o qual entrada deve permanecer estável após borda, e tempo de clock-to-output (tco), atraso entre borda do clock e estabilização da saída.

Período mínimo de clock determina-se considerando caminho crítico: Tmin = tco + tpd(lógica) + tsu, onde tpd é atraso de propagação através da lógica combinacional entre flip-flops. Clock skew (diferença de chegada do clock em diferentes partes do circuito) e jitter (variação temporal do clock) devem ser considerados, adicionando margem ao cálculo de frequência máxima segura de operação.

Sincronizadores resolvem problema de sinais assíncronos entrando no domínio síncrono. Configuração típica usa cadeia de dois ou mais flip-flops para capturar sinal externo, reduzindo probabilidade de metaestabilidade propagar-se. MTBF (Mean Time Between Failures) calcula-se baseado em parâmetros do flip-flop e frequência de eventos assíncronos, permitindo design de sincronizadores adequados para confiabilidade requerida.

Cálculo de Frequência Máxima

Especificações do sistema:

• Flip-flop: tsu = 2ns, th = 1ns, tco = 3ns

• Lógica combinacional: tpd = 8ns

• Clock skew: ±0,5ns

• Margem de segurança: 10%

Cálculo do período mínimo:

• Caminho de dados: tco + tpd + tsu

• Tmin(ideal) = 3 + 8 + 2 = 13ns

• Com skew: adicionar 1ns (pior caso)

• Tmin(skew) = 13 + 1 = 14ns

• Com margem: 14 × 1,1 = 15,4ns

Frequência máxima segura:

• fmax = 1/Tmin = 1/15,4ns ≈ 65 MHz

Verificação de hold time:

• Hold require: th = 1ns

• Hold available: tco(min) + skew = 3 - 0,5 = 2,5ns

• Hold slack: 2,5 - 1 = 1,5ns > 0 ✓

• Setup/hold satisfeitos com margem ✓

Ferramentas de Análise

Ferramentas modernas de síntese (como Quartus, Vivado) realizam análise temporal automática, reportando caminhos críticos e violações. Use constraints de temporização para especificar requisitos. Sempre valide timing após síntese e place-and-route, pois atrasos reais podem diferir de estimativas iniciais.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 38
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Máquinas de Estados Finitos

Máquinas de Estados Finitos (FSM - Finite State Machines) modelam sistemas sequenciais através de conjunto finito de estados, transições entre estados baseadas em entradas, e saídas dependentes de estado e/ou entradas. FSMs dividem-se em Moore (saídas dependem apenas do estado) e Mealy (saídas dependem de estado e entradas). Esta abstração é fundamental para design de controladores, protocolos de comunicação, e lógica de controle em sistemas digitais complexos.

Projeto de FSM segue metodologia sistemática: especificação do comportamento desejado, construção do diagrama de estados mostrando transições, codificação de estados (binária, one-hot, Gray), derivação de equações de próximo estado e saída usando tabelas de transição, e implementação com flip-flops e lógica combinacional. Escolha da codificação afeta área, velocidade, e consumo energético do circuito resultante.

Máquinas Moore produzem saídas síncronas com clock, eliminando glitches mas adicionando ciclo de latência. Máquinas Mealy respondem imediatamente a entradas, reduzindo latência mas potencialmente gerando transições espúrias nas saídas. Escolha entre Moore e Mealy depende de requisitos de temporização e tolerância a glitches. Designs híbridos combinam ambas abordagens otimizando características desejadas.

Detector de Sequência

Especificação: Detectar sequência "101" em stream de bits

Máquina de Moore:

• Estados: S0 (início), S1 (viu "1"), S2 (viu "10"), S3 (viu "101")

• Transições:

S0: X=0→S0, X=1→S1

S1: X=0→S2, X=1→S1

S2: X=0→S0, X=1→S3

S3: X=0→S2, X=1→S1

• Saída: Z=1 apenas em S3

Codificação de estados (2 bits):

• S0 = 00, S1 = 01, S2 = 10, S3 = 11

Equações de próximo estado:

• Q1⁺ = Q1·Q0·X + Q̄1·Q0·X + Q1·Q̄0·X

• Q0⁺ = Q̄1·Q̄0·X + Q̄1·Q0·X̄ + Q1·Q0·X̄

• Simplificar com K-map para implementação

Saída:

• Z = Q1·Q0 (estado S3)

Exemplo de operação:

• Entrada: 1 0 1 0 1 1

• Estados: S0→S1→S2→S3→S2→S3→S1

• Saída Z: 0 0 0 1 0 1 0

Codificação One-Hot

Codificação one-hot usa um flip-flop por estado (S0=0001, S1=0010, S2=0100, S3=1000), simplificando decodificação de estado e transições, mas usando mais flip-flops. Vantajosa em FPGAs onde flip-flops são abundantes mas LUTs são limitadas. Reduz lógica de próximo estado às custas de mais registradores.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 39
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Capítulo 8: Contadores e Registradores

Contadores Binários

Contadores são circuitos sequenciais que percorrem sequência predeterminada de estados, tipicamente progredindo através de números binários. Contadores síncronos atualizam todos os flip-flops simultaneamente em cada pulso de clock, enquanto contadores assíncronos (ripple counters) propagam transições sequencialmente através dos estágios. Aplicações incluem divisão de frequência, medição de tempo, geração de endereços, e controle de sequências em sistemas digitais.

Contador binário ascendente de n bits percorre estados de 0 a 2ⁿ-1, retornando a 0 após máximo. Implementação com flip-flops T é natural: bit menos significativo complementa a cada clock, cada bit subsequente complementa quando todos os bits inferiores são 1. Contadores descendentes invertem lógica, complementando quando bits inferiores são 0. Contadores up/down incluem controle que seleciona direção de contagem.

Contadores módulo-N contam até N-1 e retornam a 0, implementados detectando-se estado N-1 e forçando reset. Alternativamente, carga paralela com valor 0 no estado N-1 implementa módulo sem lógica de reset adicional. Contadores BCD (década) contam 0-9, fundamentais para displays decimais e aplicações que requerem interface decimal-binária.

Contador Síncrono de 4 Bits

Usando Flip-Flops T:

• FF0 (LSB): T0 = 1 (sempre complementa)

• FF1: T1 = Q0

• FF2: T2 = Q0·Q1

• FF3 (MSB): T3 = Q0·Q1·Q2

Sequência de contagem:

CLK | Q3 Q2 Q1 Q0 | Decimal

----|------------|--------

0 | 0 0 0 0 | 0

1 | 0 0 0 1 | 1

2 | 0 0 1 0 | 2

3 | 0 0 1 1 | 3

... | ... | ...

15 | 1 1 1 1 | 15

16 | 0 0 0 0 | 0 (overflow)

Conversão para contador módulo-10:

• Detectar estado 1001₂ (9)

• Lógica: LOAD = Q3·Q̄2·Q̄1·Q0

• Na detecção, carregar 0000

• Conta: 0→1→...→9→0 (década) ✓

Implementação com flip-flop D:

• D0 = Q̄0

• D1 = Q1 ⊕ Q0

• D2 = Q2 ⊕ (Q0·Q1)

• D3 = Q3 ⊕ (Q0·Q1·Q2)

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 40
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Contadores em Anel e Johnson

Contadores em anel (ring counter) circulam único bit 1 através de registrador de deslocamento, produzindo n estados distintos com n flip-flops. Saídas são mutuamente exclusivas, eliminando necessidade de decodificação - cada flip-flop representa um estado. Configuração conecta saída do último flip-flop à entrada do primeiro, com inicialização carregando 1 no primeiro estágio e 0s nos demais.

Contador Johnson (contador de deslocamento torcido) conecta saída complementada do último flip-flop à entrada do primeiro, produzindo 2n estados distintos com n flip-flops - dobro da eficiência do anel simples. Sequência característica alterna preenchendo registrador com 1s e depois com 0s. Decodificação de estados individuais requer apenas portas de 2 entradas, simples e rápida.

Estes contadores são especialmente úteis para geração de sinais de controle sequenciais, multiplexação de displays onde cada estado habilita um dígito, e geração de formas de onda específicas. Autodetecção de erros é possível adicionando lógica que verifica validade do padrão no registrador, reinicializando se padrão inválido for detectado - importante para aplicações críticas onde erros transitórios podem corromper estado.

Contador Johnson de 4 Bits

Configuração:

• 4 flip-flops D: FF3, FF2, FF1, FF0

• D0 = Q̄3 (saída complementada do último)

• D1 = Q0, D2 = Q1, D3 = Q2 (deslocamento)

Sequência de estados:

CLK | Q3 Q2 Q1 Q0 | Estado

----|------------|--------

0 | 0 0 0 0 | 0

1 | 0 0 0 1 | 1

2 | 0 0 1 1 | 2

3 | 0 1 1 1 | 3

4 | 1 1 1 1 | 4

5 | 1 1 1 0 | 5

6 | 1 1 0 0 | 6

7 | 1 0 0 0 | 7

8 | 0 0 0 0 | 0 (ciclo)

Decodificação de estados:

• Estado 0: Q̄3·Q̄0

• Estado 1: Q̄3·Q0

• Estado 2: Q̄2·Q0

• Estado 4: Q3·Q0

• Apenas 2 entradas por decodificação!

Vantagens:

• 8 estados com 4 flip-flops (eficiente)

• Decodificação simples

• Sem condições de corrida

Aplicação em Multiplexação

Contadores Johnson são ideais para multiplexar displays de 7 segmentos: cada estado habilita um dígito enquanto dados correspondentes são apresentados. Com 4 flip-flops, multiplexa-se 8 displays. Decodificação simples reduz atraso, importante para evitar flickering em displays multiplexados de alta taxa.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 41
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Divisores de Frequência e Prescalers

Divisores de frequência reduzem frequência de clock por fator específico, essenciais para geração de bases de tempo, sincronização de subsistemas operando em diferentes taxas, e redução de consumo energético. Contador binário de n bits divide por 2ⁿ naturalmente: bit menos significativo divide por 2, próximo por 4, e assim sucessivamente. Saída do bit mais significativo fornece clock dividido por 2ⁿ.

Divisão por números não-potência de 2 requer contadores módulo-N ou circuitos especializados. Técnica comum usa contador que conta até N-1, gera pulso de reset, e recomeça. Duty cycle da saída pode não ser 50%, problema para algumas aplicações. Divisores com duty cycle ajustável empregam comparadores detectando metade da contagem para alternar saída, garantindo simetria do sinal gerado.

Divisores fracionários sintetizam frequências não-inteiras do clock de referência, fundamentais em PLLs (Phase-Locked Loops) para síntese de frequências. Técnica delta-sigma alterna divisão entre N e N+1 estatisticamente, produzindo frequência média fracionária com baixo jitter. Estes circuitos são complexos mas essenciais em comunicações wireless e aplicações de RF onde síntese precisa de frequência é crítica.

Divisor por 10 com Duty Cycle 50%

Requisito: Dividir 100 MHz por 10 → 10 MHz com duty cycle 50%

Método simples (duty cycle variável):

• Contador módulo-10: conta 0-9

• Alternar saída a cada overflow

• Resultado: pulsos de 100ns (1 ciclo de 100MHz)

• Duty cycle = 10% (ruim)

Método com duty cycle 50%:

• Contador conta 0-9 (10 estados)

• Saída alta quando contagem < 5

• Saída baixa quando contagem ≥ 5

• OUT = (COUNT < 5) ? 1 : 0

Implementação:

• Comparador: verifica se Q2=0 (bit MSB do 0-9)

• Mais precisamente: OUT = Q̄2·Q̄1·(Q̄0 ∨ algo)

• Ajuste fino para exatos 50%

Resultado:

• Período saída: 100ns (10 ciclos entrada)

• Duty cycle: 50% (5 altos, 5 baixos) ✓

• Frequência: 10 MHz ✓

PLLs e Síntese de Clock

Circuitos modernos usam PLLs para multiplicar e dividir clocks gerando frequências precisas. PLL compara fase de oscilador controlado por tensão (VCO) com referência, ajustando VCO até travar. Divisor programável no loop de feedback permite síntese de múltiplos de frequência de referência, essencial em processadores com clocks de GHz derivados de cristais de MHz.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 42
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Memórias e Arrays de Registradores

Memórias são arrays organizados de elementos de armazenamento, permitindo leitura e escrita de dados através de endereçamento. RAM (Random Access Memory) permite acesso a qualquer localização em tempo constante, fundamental para sistemas computacionais. SRAM (Static RAM) usa flip-flops, rápida mas cara em área. DRAM (Dynamic RAM) usa capacitores, densa mas requer refresh periódico para manter dados.

Arquitetura de memória típica inclui array de células organizadas em linhas e colunas, decodificadores de linha e coluna para seleção, amplificadores de sentido para leitura, e drivers de escrita. Multiplexação de endereço (RAS/CAS em DRAM) reduz pinos em detrimento de latência adicional. Memórias modernas incluem buffers, pipelining, e múltiplos bancos para aumentar throughput.

Hierarquia de memória em computadores utiliza níveis com diferentes velocidades e tamanhos: registradores (rápidos, pequenos), cache (intermediária), RAM principal (grande, moderada), e armazenamento secundário (enorme, lento). Princípio de localidade (temporal e espacial) torna caches efetivas, mantendo dados frequentemente acessados em níveis rápidos, dramaticamente melhorando desempenho médio do sistema.

RAM Simples de 16×4

Especificação:

• 16 palavras de 4 bits cada

• Endereço: 4 bits (A₃A₂A₁A₀)

• Dados: 4 bits (D₃D₂D₁D₀)

• Controle: WE (Write Enable), CS (Chip Select)

Arquitetura:

• Array: 16 registradores de 4 bits

• Decodificador 4:16 para seleção de palavra

• Multiplexador 16:1 para leitura (por bit)

• Lógica de escrita com enable condicional

Operação de escrita:

• CS=1, WE=1, Endereço=0101₂ (5)

• Decodificador ativa linha 5

• Dados D₃D₂D₁D₀ escritos no registro 5

• Outros registros inalterados

Operação de leitura:

• CS=1, WE=0, Endereço=0101₂

• MUXs selecionam registro 5

• Conteúdo aparece em D₃D₂D₁D₀

• Não-destrutivo (dados preservados)

Temporização:

• tAA (address access): endereço → dados válidos

• tWP (write pulse): duração mínima de WE

• tDS (data setup): dados estáveis antes de WE↓

Projeto de Bancos de Memória

Para construir memória maior, cascade múltiplos chips: use bits superiores de endereço para CS de cada chip (seleção de chip), bits inferiores como endereço interno. Por exemplo, 1KB de memória usando chips 256×8: 2 bits MSB selecionam 1 de 4 chips, 8 bits LSB endereçam dentro do chip selecionado.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 43
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

FIFOs e Buffers Circulares

FIFOs (First-In First-Out) são buffers onde primeiro dado escrito é primeiro lido, implementando fila ideal para interfacear sistemas operando em taxas diferentes. Aplicações incluem buffering em comunicação serial, suavização de rajadas de dados em redes, e sincronização entre domínios de clock diferentes (FIFOs assíncronas). Implementação usa memória dual-port com ponteiros de leitura e escrita independentes.

Buffer circular implementa FIFO usando array de tamanho fixo com ponteiros que envolvem ao atingir final. Ponteiro de escrita avança quando dado é inserido, ponteiro de leitura avança quando dado é removido. Buffer vazia quando ponteiros são iguais após leitura, cheia quando ponteiros são iguais após escrita - ambiguidade resolvida com flag adicional ou usando tamanho-1 posições efetivas.

FIFOs assíncronas requerem cuidado especial: ponteiros cruzam domínios de clock, necessitando sincronização. Técnica Gray coding para ponteiros elimina race conditions: apenas um bit muda por incremento, sincronização captura valor correto ou anterior, ambos seguros. Sinais de almost-full e almost-empty com antecedência configuram controle de fluxo, prevenindo overflow/underflow em sistemas com latência.

FIFO Síncrona de 8 Posições

Componentes:

• Memória: 8 palavras × N bits

• Ponteiro escrita: WR_PTR (3 bits, 0-7)

• Ponteiro leitura: RD_PTR (3 bits, 0-7)

• Contador de ocupação: COUNT (4 bits, 0-8)

Operação de escrita (WR_EN=1):

• Se COUNT < 8:

- Escrever dado em MEM[WR_PTR]

- WR_PTR ← (WR_PTR + 1) mod 8

- COUNT ← COUNT + 1

• Se COUNT = 8: sinalizar FULL, ignorar escrita

Operação de leitura (RD_EN=1):

• Se COUNT > 0:

- Ler dado de MEM[RD_PTR]

- RD_PTR ← (RD_PTR + 1) mod 8

- COUNT ← COUNT - 1

• Se COUNT = 0: sinalizar EMPTY, dado inválido

Flags de status:

• EMPTY = (COUNT == 0)

• FULL = (COUNT == 8)

• ALMOST_FULL = (COUNT >= 6) - aviso antecipado

• ALMOST_EMPTY = (COUNT <= 2) - aviso antecipado

Clock Domain Crossing

FIFOs assíncronas são solução padrão para transferência segura entre domínios de clock. Ponteiros em código Gray sincronizados por flip-flops duplos minimizam risco de metaestabilidade. Profundidade da FIFO deve acomodar burst máximo considerando latências de sincronização e controle de fluxo. Subdimensionamento causa perda de dados, superdimensionamento desperdiça recursos.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 44
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Design para Testabilidade

Testabilidade refere-se à facilidade de verificar funcionamento correto de circuito fabricado, detectando defeitos de manufatura. Circuitos sequenciais apresentam desafios únicos: estados internos não são diretamente observáveis, sequências específicas são necessárias para alcançar estados, e cobertura completa requer enorme número de vetores de teste. Técnicas de DFT (Design for Testability) incorporam estruturas que facilitam teste durante design.

Scan chains convertem flip-flops normais em scan flip-flops com modo de operação dual: modo funcional opera normalmente, modo scan forma registrador de deslocamento permitindo carregar estados internos serialmente e observar resultados. Multiplexador em cada flip-flop seleciona entre entrada funcional (D) e saída do flip-flop anterior (scan-in). Modo scan transforma circuito sequencial complexo em combinacional observável/controlável.

BIST (Built-In Self-Test) incorpora hardware para auto-teste, eliminando necessidade de equipamento externo caro. LFSR (Linear Feedback Shift Register) gera padrões pseudo-aleatórios como estímulos, MISR (Multiple Input Signature Register) comprime respostas em assinatura compacta comparada com valor esperado. BIST é essencial em sistemas embarcados, memórias, e circuitos onde acesso físico para teste é impossível ou impraticável.

Scan Chain Simples

Conversão de flip-flop normal para scan:

Flip-flop normal:

• Entrada: D (dados funcionais)

• Saída: Q

Scan flip-flop:

• Entradas: D (funcional), SI (scan-in), SE (scan-enable)

• MUX interno: seleciona D se SE=0, SI se SE=1

• Saída: Q (também conecta ao próximo SI)

Operação em modo funcional (SE=0):

• Todos flip-flops operam normalmente

• D → Q em cada borda de clock

• Circuito funciona como projetado

Operação em modo scan (SE=1):

• Flip-flops formam cadeia de deslocamento

• SI(FF0) ← scan_in (entrada serial externa)

• SI(FF1) ← Q(FF0), SI(FF2) ← Q(FF1), ...

• Q(FFn) → scan_out (saída serial externa)

Procedimento de teste:

1. SE=1: deslocar vetor de teste via scan-in

2. SE=0: aplicar um ciclo de clock (operação funcional)

3. SE=1: deslocar resultado via scan-out

4. Comparar com resposta esperada

Overhead de Scan

Scan adiciona ~10-20% de área (MUXs e roteamento) e reduz frequência máxima (~5-10% devido a MUX no caminho). Benefício em cobertura de teste (>95%) e redução de custo de teste justifica overhead. Use ferramentas de síntese conscientes de scan para minimizar impacto no caminho crítico, colocando MUXs fora de caminhos de alto desempenho quando possível.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 45
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Capítulo 9: Exercícios Resolvidos e Propostos

Exercícios Fundamentais Resolvidos

Esta seção apresenta seleção abrangente de exercícios resolvidos cobrindo todos os aspectos fundamentais dos circuitos lógicos digitais, desde conversões numéricas e simplificação booleana até projeto de circuitos aritméticos e sequenciais complexos. Cada exercício inclui solução detalhada explicitando estratégias de resolução, análise de alternativas, e discussão de considerações práticas de implementação.

Os problemas estão organizados por tópico e nível crescente de dificuldade, proporcionando progressão pedagógica que consolida competências técnicas sistematicamente. Soluções incluem não apenas resultados finais mas também raciocínio subjacente, técnicas de verificação, e conexões com aplicações reais que contextualizam conhecimentos abstratos.

Exercícios aplicados demonstram relevância prática dos conceitos estudados, conectando teoria com implementações reais em sistemas digitais modernos. Esta abordagem desenvolve competências essenciais para aplicações acadêmicas e profissionais onde design eficiente de hardware digital é fundamental para sucesso de projetos tecnológicos.

Exercício Resolvido 1: Simplificação

Problema: Simplifique F = A·B·C + A·B·C̄ + A·B̄·C + Ā·B·C

Solução usando Álgebra Booleana:

Passo 1: Fatorar A·B dos dois primeiros termos

• F = A·B·(C + C̄) + A·B̄·C + Ā·B·C

Passo 2: Aplicar C + C̄ = 1

• F = A·B + A·B̄·C + Ā·B·C

Passo 3: Fatorar A do primeiro e segundo termos

• F = A·(B + B̄·C) + Ā·B·C

Passo 4: Aplicar absorção: B + B̄·C = B + C

• F = A·(B + C) + Ā·B·C

Passo 5: Expandir

• F = A·B + A·C + Ā·B·C

Passo 6: Aplicar consenso ou verificar minimalidade

• F = A·B + A·C + Ā·B·C (já mínimo)

Verificação com K-map confirma resultado

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 46
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Exercícios Propostos - Nível Básico

Exercícios básicos focam na aplicação direta de conceitos fundamentais, desenvolvendo fluência com técnicas essenciais antes de progressão para problemas mais complexos. Esta seção consolida compreensão de sistemas numéricos, operações booleanas básicas, e análise de circuitos simples através de prática sistemática.

Cada conjunto de problemas testa aspectos específicos do conhecimento, desde reconhecimento de padrões e aplicação de teoremas até construção de circuitos elementares e interpretação de diagramas temporais. Abordagem incremental assegura desenvolvimento sólido de fundamentos antes de enfrentar desafios mais sofisticados.

Exercícios Propostos - Básicos

1. Conversões numéricas:

(a) 10110₂ para decimal, (b) 173₁₀ para binário, (c) 2F₁₆ para binário

2. Simplifique usando álgebra booleana:

(a) A + A·B, (b) (A + B)·(A + B̄), (c) A·B + A·B̄

3. Construa tabelas-verdade para:

(a) F = A·B̄ + Ā·B, (b) F = (A + B)·(Ā + C)

4. Implemente usando apenas portas NAND:

(a) NOT, (b) AND, (c) OR

5. Projete somador completo de 1 bit

6. Obtenha SOP canônica para F(A,B,C) = Σm(0,2,5,7)

7. Simplifique usando mapa de Karnaugh:

F(A,B,C,D) = Σm(0,1,2,5,6,7,8,9,14)

8. Projete comparador de 2 bits

9. Análise de circuito: dado diagrama, determine função

10. Implemente MUX 4:1 com portas básicas

Estratégias de Resolução

Para exercícios básicos: revise definições e teoremas antes de iniciar, desenhe diagramas quando aplicável, verifique resultados com casos simples, pratique múltiplas abordagens para mesmo problema. Desenvolva método sistemático de resolução que possa ser aplicado consistentemente.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 47
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Exercícios Propostos - Nível Intermediário

Exercícios intermediários integram múltiplas técnicas e requerem julgamento sobre estratégias apropriadas, desenvolvendo competência para situações que transcendem aplicação mecânica de procedimentos básicos. Problemas típicos envolvem otimização de circuitos, análise de temporização, e projeto de subsistemas funcionais completos.

Esta seção prepara para aplicações reais onde problemas não seguem templates estabelecidos, requerendo criatividade na escolha de abordagens e perseverança através de designs iterativos. Desenvolvimento destas competências é essencial para trabalho independente em projetos de hardware digital.

Exercícios Propostos - Intermediários

11. Projete somador-subtrator de 8 bits com detecção de overflow

12. Implemente multiplicador 4×4 usando arquitetura array

13. Otimize F = Σm(0,1,2,3,5,7,8,10,11,14,15) com dont-cares em d(4,12,13)

14. Projete decodificador BCD para 7 segmentos com minimização de portas

15. Análise temporal: calcule frequência máxima dado tpd das portas

16. Projete contador módulo-12 síncrono

17. Implemente máquina de estados para detector de sequência "1011"

18. Projete registrador universal de 4 bits (shift left/right, load, hold)

19. Otimize circuito dado minimizando atraso usando carry-lookahead

20. Projete FIFO síncrona de 16×8 com flags full/empty/almost-full

21. Converta máquina de Mealy para Moore equivalente

22. Projete divisor de frequência por 7 com duty cycle 50%

23. Implemente ALU de 4 bits com 8 operações

24. Análise de hazards: identifique e corrija glitches em circuito dado

25. Projete gerador de paridade par para 8 bits com árvore de XORs

Abordagem para Problemas Intermediários

Decomponha problemas complexos em subproblemas manejáveis. Esboce arquitetura antes de detalhar implementação. Considere múltiplas alternativas e avalie trade-offs. Verifique resultados parciais antes de prosseguir. Documente decisões de design para facilitar revisão e depuração.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 48
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Exercícios Propostos - Nível Avançado

Exercícios avançados desafiam estudantes com projetos originais que requerem síntese criativa de conhecimentos de múltiplas áreas, desenvolvimento de estratégias não-convencionais, e análise crítica de resultados em contextos sofisticados. Estes problemas preparam para pesquisa independente e aplicações profissionais complexas em design de hardware digital.

Problemas incluem otimização multi-objetivo, projeto de sistemas completos sob restrições conflitantes, análise de tecnologias emergentes, e investigações que conectam circuitos lógicos com arquitetura de computadores e sistemas embarcados. Esta experiência desenvolve competências essenciais para carreiras em design de ASICs, FPGAs, e desenvolvimento de hardware avançado.

Exercícios Propostos - Avançados

26. Projeto completo: processador RISC de 8 bits

- Defina ISA com 16 instruções

- Projete datapath e unidade de controle

- Implemente pipeline de 3 estágios

- Análise de hazards e forwarding

27. Otimização multi-objetivo de ALU

- Minimizar área, atraso e potência

- Comparar arquiteturas alternativas

- Análise de Pareto dos trade-offs

28. Projeto de controlador de memória DDR

- Interface com SDRAM DDR3

- Gerenciamento de refresh

- Otimização de bandwidth

29. Implementação de FPU (Floating Point Unit)

- Formato IEEE 754 simplificado

- Operações: add, sub, mult

- Tratamento de exceções

30. Síntese lógica: desenvolvimento de ferramenta

- Parser de expressões booleanas

- Otimizador com heurísticas

- Gerador de netlist

Abordagem para Problemas Avançados

Para exercícios avançados: estude arquiteturas existentes como referência, use ferramentas de simulação para validação, implemente incrementalmente testando cada módulo, documente decisões e aprendizados, considere extensões e melhorias futuras. Colaboração e revisão por pares enriquecem aprendizado neste nível.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 49
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Orientações e Gabaritos Selecionados

Esta seção fornece gabaritos para exercícios selecionados e orientações gerais para resolução, oferecendo suporte ao aprendizado independente sem comprometer valor pedagógico da resolução autônoma. Soluções enfatizam estratégias de pensamento e métodos de verificação tanto quanto resultados finais.

Para problemas complexos, múltiplas abordagens são apresentadas quando apropriado, demonstrando flexibilidade dos métodos de design digital e encorajando exploração de diferentes perspectivas. Esta diversidade desenvolve maturidade técnica e adaptabilidade intelectual essenciais para profissionais de hardware.

Gabaritos Selecionados

Exercício 1(a): 10110₂ = 1×16 + 0×8 + 1×4 + 1×2 + 0×1 = 22₁₀

Exercício 2(a): A + A·B = A·(1 + B) = A·1 = A (absorção)

Exercício 6: F = Ā·B̄·C̄ + Ā·B·C̄ + A·B̄·C + A·B·C

Exercício 11: Use somador 8-bit, XOR condicional, flag V = C₈ ⊕ C₇

Exercício 17: 4 estados, codificação 00,01,10,11, saída em estado final

Orientações gerais:

• Para simplificação: sempre tente K-map antes de álgebra

• Para projeto de contadores: determine sequência, codifique, derive equações

• Para análise temporal: some todos os atrasos no caminho crítico

• Para máquinas de estados: diagrama primeiro, depois implementação

Recursos adicionais:

• Simuladores: Logisim, Digital, CircuitVerse

• Ferramentas de síntese: Quartus, Vivado, Yosys

• Referências online: documentação de fabricantes, tutoriais

Auto-avaliação

Para avaliar progresso: resolva sem consultar gabaritos inicialmente, compare com múltiplas soluções, identifique padrões em erros, busque compreensão conceitual além de correção técnica. Domine verdadeiro manifesta-se na capacidade de explicar soluções claramente e adaptar técnicas a problemas novos.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 50
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Projetos Práticos Sugeridos

Projetos práticos consolidam conhecimentos através de aplicações completas que integram múltiplos conceitos estudados. Implementação física ou simulação de sistemas funcionais desenvolve competências essenciais de depuração, otimização e documentação que transcendem conhecimento teórico, preparando para desafios reais em desenvolvimento de hardware.

Sugestões incluem projetos com diferentes níveis de complexidade, permitindo escolha adequada a recursos disponíveis e tempo dedicado. Implementações podem usar breadboards com CIs discretos para experiência hands-on, simuladores para prototipação rápida, ou FPGAs para designs mais complexos e desempenho real.

Projetos Sugeridos

Projeto 1: Relógio Digital

• Contadores BCD em cascata (segundos, minutos, horas)

• Decodificadores para displays de 7 segmentos

• Multiplexação de displays

• Botões de ajuste de hora

Projeto 2: Calculadora Simples

• Entrada via teclado matricial

• ALU de 8 bits (add, sub, and, or)

• Registradores para operandos

• Display hexadecimal de resultado

Projeto 3: Comunicação Serial

• Transmissor UART (registrador de deslocamento)

• Receptor UART com detecção de frame

• FIFO para buffering

• Teste com loopback

Projeto 4: Jogo Simples

• Máquina de estados para lógica do jogo

• Gerador de números pseudo-aleatórios (LFSR)

• Interface com LEDs e botões

• Contador de pontuação

Execução de Projetos

Comece com especificação clara, divida em módulos testáveis independentemente, implemente e teste incrementalmente, documente interface de cada módulo, integre progressivamente validando cada etapa. Use controle de versão para gerenciar mudanças. Apresente resultados com demonstração funcional e relatório técnico detalhado.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 51
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Capítulo 10: Aplicações e Desenvolvimentos Modernos

Circuitos Lógicos em Sistemas Contemporâneos

Circuitos lógicos digitais fundamentam toda a infraestrutura tecnológica moderna, desde smartphones e computadores pessoais até data centers massivos e sistemas embarcados em veículos autônomos. Compreensão dos princípios estudados neste volume proporciona base sólida para progressão em áreas avançadas de engenharia eletrônica, arquitetura de computadores, e design de sistemas digitais complexos.

Tecnologias emergentes como computação quântica, neuromorphic computing, e processadores especializados para inteligência artificial constroem-se sobre fundamentos lógicos estabelecidos, estendendo conceitos clássicos para domínios novos. FinFETs, transistores de tunelamento, e dispositivos spintrônicos prometem continuar miniaturização e melhoria de eficiência energética além dos limites da tecnologia CMOS tradicional.

Internet das Coisas, edge computing, e sistemas ciber-físicos demandam circuitos lógicos otimizados para ultra-baixo consumo, operação em ambientes adversos, e segurança em hardware. Estes desenvolvimentos requerem profissionais com sólida compreensão de fundamentos digitais combinada com conhecimento de aplicações específicas de domínio e restrições de sistemas reais.

Aplicações em IoT e Edge Computing

Microcontroladores para IoT:

• Circuitos lógicos otimizados para mínimo consumo

• Modos de sleep com wake-up rápido

• Periféricos inteligentes com DMA

• Criptografia em hardware para segurança

Processadores Edge:

• Aceleradores de IA (TPUs, NPUs)

• Arquiteturas heterogêneas (CPUs + GPUs + ASICs)

• Gerenciamento dinâmico de potência

• Processamento local reduzindo latência

Tendências tecnológicas:

• Near-threshold computing para eficiência

• Approximate computing para aplicações tolerantes

• In-memory computing eliminando gargalo de von Neumann

• Photonic interconnects para alta bandwidth

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 52
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Perspectivas Futuras e Tendências Tecnológicas

O futuro dos circuitos lógicos está intimamente ligado a desafios fundamentais de física, necessidades de aplicações emergentes, e busca contínua por maior eficiência e capacidade computacional. Aproximação dos limites físicos da miniaturização CMOS impulsiona pesquisa em dispositivos alternativos e paradigmas computacionais não-convencionais que transcendem arquiteturas clássicas de von Neumann.

Computação quântica explora superposição e entrelaçamento para resolver problemas intratáveis classicamente, requerendo circuitos lógicos especializados para controle de qubits e correção de erros quânticos. Computação neuromórfica inspira-se no cérebro, usando circuitos analógicos e digitais híbridos para implementar redes neurais de baixíssimo consumo adequadas para reconhecimento de padrões e processamento sensorial.

Integração 3D de circuitos, usando empilhamento vertical de camadas lógicas e memória através de TSVs (Through-Silicon Vias), promete densidade e bandwidth sem precedentes. Chiplets modulares conectados por interconnects avançados permitem sistemas heterogêneos combinando tecnologias ótimas para cada função, otimizando custo-benefício e acelerando desenvolvimento de produtos complexos.

Tecnologias Emergentes

Computação Quântica:

• Portas lógicas quânticas (Hadamard, CNOT, Toffoli)

• Circuitos de controle clássico para qubits

• Correção de erros quânticos em hardware

• Interfaces criogênicas para supercondutor

Neuromorphic Computing:

• Sinapses implementadas com memristores

• Neurônios usando circuitos osciladores

• Spike-timing-dependent plasticity em hardware

• Redes neurais profundas energeticamente eficientes

Desafios e Oportunidades:

• Integração heterogênea de tecnologias diversas

• Ferramentas de EDA para paradigmas não-clássicos

• Verificação formal de sistemas complexos

• Segurança em hardware contra ataques sofisticados

• Sustentabilidade e reciclabilidade de eletrônicos

Preparação para o Futuro

Profissionais devem manter fundamentos sólidos em lógica digital clássica enquanto desenvolvem expertise em domínios específicos. Aprendizado contínuo, acompanhamento de pesquisas de ponta, e experiência prática com tecnologias emergentes são essenciais. Habilidades interdisciplinares em física, ciência da computação, e engenharia de sistemas tornam-se cada vez mais valiosas.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 53
Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas

Referências Bibliográficas

Bibliografia Fundamental

ERCEGOVAC, Miloš D.; LANG, Tomás; MORENO, Jaime H. Introduction to Digital Systems. New York: John Wiley & Sons, 1999.

FLOYD, Thomas L. Digital Fundamentals. 11ª ed. Boston: Pearson, 2015.

HARRIS, David M.; HARRIS, Sarah L. Digital Design and Computer Architecture. 2ª ed. San Francisco: Morgan Kaufmann, 2012.

MANO, M. Morris; CILETTI, Michael D. Digital Design: With an Introduction to the Verilog HDL. 5ª ed. Boston: Pearson, 2013.

TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gregory L. Sistemas Digitais: Princípios e Aplicações. 11ª ed. São Paulo: Pearson, 2011.

WAKERLY, John F. Digital Design: Principles and Practices. 4ª ed. Upper Saddle River: Prentice Hall, 2006.

Bibliografia Especializada

CHU, Pong P. FPGA Prototyping by Verilog Examples. Hoboken: John Wiley & Sons, 2008.

KATZ, Randy H.; BORRIELLO, Gaetano. Contemporary Logic Design. 2ª ed. Upper Saddle River: Prentice Hall, 2005.

RABAEY, Jan M.; CHANDRAKASAN, Anantha; NIKOLIC, Borivoje. Digital Integrated Circuits: A Design Perspective. 2ª ed. Upper Saddle River: Prentice Hall, 2003.

WESTE, Neil H. E.; HARRIS, David M. CMOS VLSI Design: A Circuits and Systems Perspective. 4ª ed. Boston: Addison-Wesley, 2011.

Bibliografia Complementar

BRASIL. Ministério da Educação. Base Nacional Comum Curricular: Ensino Médio. Brasília: MEC, 2018.

HENNESSY, John L.; PATTERSON, David A. Computer Architecture: A Quantitative Approach. 6ª ed. San Francisco: Morgan Kaufmann, 2017.

MAXFIELD, Clive. The Design Warrior's Guide to FPGAs. Amsterdam: Newnes, 2004.

PARHAMI, Behrooz. Computer Arithmetic: Algorithms and Hardware Designs. 2ª ed. Oxford: Oxford University Press, 2010.

Recursos Tecnológicos

ALTERA. Quartus Prime Design Software. Disponível em: https://www.intel.com/quartus. Acesso em: jan. 2025.

LOGISIM. Digital Logic Simulator. Disponível em: http://www.cburch.com/logisim/. Acesso em: jan. 2025.

XILINX. Vivado Design Suite. Disponível em: https://www.xilinx.com/vivado. Acesso em: jan. 2025.

YOSYS. Open Source Verilog Synthesis. Disponível em: http://www.clifford.at/yosys/. Acesso em: jan. 2025.

Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas
Página 54

Sobre Este Volume

"Circuitos Lógicos: Fundamentos, Projetos e Aplicações Práticas" oferece tratamento abrangente e rigoroso dos circuitos digitais, desde fundamentos de álgebra booleana e portas lógicas até aplicações avançadas em processadores e sistemas computacionais modernos. Este nono volume da Coleção Escola de Lógica Matemática destina-se a estudantes do ensino médio avançado, graduandos em engenharia e ciência da computação, e profissionais interessados em dominar os princípios do hardware digital.

Desenvolvido em conformidade com as diretrizes da Base Nacional Comum Curricular, o livro integra rigor técnico com aplicações práticas relevantes, proporcionando base sólida para design de sistemas digitais, desde circuitos simples até arquiteturas complexas. A obra combina desenvolvimento conceitual cuidadoso com exemplos motivadores e exercícios que desenvolvem competências essenciais em análise, síntese e otimização de circuitos lógicos.

Principais Características:

  • • Sistemas de numeração e representação binária
  • • Portas lógicas e álgebra booleana aplicada
  • • Simplificação usando Karnaugh e Quine-McCluskey
  • • Circuitos combinacionais: multiplexadores, decodificadores
  • • Circuitos aritméticos: somadores, multiplicadores
  • • Flip-flops, registradores e elementos de memória
  • • Contadores, máquinas de estados finitos
  • • Análise temporal e sincronização de sistemas
  • • Design para testabilidade e BIST
  • • Dispositivos lógicos programáveis (PLDs, FPGAs)
  • • Aplicações em IoT, edge computing e sistemas modernos
  • • Exercícios graduados e projetos práticos completos

João Carlos Moreira

Universidade Federal de Uberlândia • 2025

CÓDIGO DE BARRAS
9 788500 000994