Apresentação Circuitos

Sumário 

  1. Introdução aos Sinais Digitais
  2. Sistemas de Numeração e Conversão de Bases
  3. Aritmética Binária Básica: Soma, Subtração e Multiplicação
  4. Representação Numérica em Computadores
  5. Álgebra Booleana, Tabelas Verdade e Propriedades Algébricas
  6. Desafios utilizando portas lógicas
  7. Blocos Combinacionais
  8. Circuitos Sequenciais (Latches e Flip-Flops)
  9. Máquinas de Estados Finitos e Projetos

Apresentação da Disciplina

A disciplina de Circuitos Digitais é ministrada pelos professores do Departamento de Informática da UFPR. Ela está presente no primeiro semestre do curso de Ciência da Computação, servindo como base para disciplinas futuras como:

  • Projetos Digitais e Microprocessadores
  • Arquitetura de Computadores
  • Software Básico

O conteúdo sugerido inclui, inicialmente:

  1. Introdução e Sinais Digitais
    Conceitos iniciais sobre representação digital da informação.
  2. Sistemas de Numeração
    Bases numéricas (binária, decimal, etc.) e conversão entre elas.
  3. Aritmética Binária
    Soma, subtração e multiplicação com números binários.
  4. Lógica Booleana
    Álgebra booleana, tabelas verdade, formas canônicas e simplificação.
  5. Portas Lógicas e Circuitos
    Uso de portas lógicas (AND, OR, NOT, etc.) na implementação de funções.
  6. Blocos Combinacionais
    Circuitos como somadores, multiplexadores, decodificadores e comparadores.
  7. Circuitos Sequenciais
    Latches, flip-flops e máquinas de estados (Moore e Mealy).
  8. Projetos Práticos
    Desenvolvimento de circuitos combinacionais e sequenciais aplicados.

Introdução aos Sinais Digitais

Sinais Digitais e Representação Discreta da Informação

Em um computador digital, toda informação é representada por números. Os computadores:

  • São digitais
  • Trabalham internamente na base 2 (binária)
  • Processam informações discretas, não contínuas

Um circuito digital só consegue processar informações que estejam em formato digital, pois ele foi desenvolvido para trabalhar nesse formato.


O Processo de Discretização

A representação digital exige transformar grandezas analógicas (contínuas) em digitais. Esse processo envolve algumas estapas:

  • Amostragem:
    Medição da grandeza em intervalos regulares de tempo
    • Exemplo: 44.100 medições por segundo em um arquivo de áudio (MP3)
  • Quantização:
    Arredondamento das medições para valores definidos
    • Exemplo: 5,7°C quantizada para 6°C
  • Codificação:
    Representação desses valores com números binários (0s e 1s)

Limitações e Qualidade da Representação Digital

Todavia, a representação binária traz consigo algumas desvantanges e limitações na hora de trabalhar com ela. Essas são:

  • Um sinal digital não contém todos os detalhes do sinal contínuo, perda de informação no processo de discretização
  • O problema acima pode ser melhorado com:
    • Mais amostras por segundo
    • Maior número de bits por medida (mais níveis de quantização)
    • No exemplo ao lado, quanto mais retângulos, mais próxima a área verde está da integral da função.

Exemplo: 0 Volts = 0 e 5 Volts = 1

Na base binária, os únicos algarismos válidos são 0 e 1. Um computador representa esses valores com sinais elétricos:

  • 0 Volts → representa 0
  • 5 Volts → representa 1

Embora existam outros níveis de tensão, os sistemas digitais usam apenas dois níveis distintos, pois são mais confiáveis e fáceis de interpretar. Então não existe para o computador 2,5V, é sempre 0 ou 1.

Sistemas de Numeração e Conversão de Bases

Sistemas Decimal, Binário, Octal e Hexadecimal

Bases Numéricas: Definição e Uso em Computação

Estamos acostumados com a base 10 (decimal), onde os algarismos válidos são de 0 a 9. No entanto, essa escolha é arbitrária. Os computadores são digitais e operam na base 2 (binária), usando apenas os algarismos 0 e 1, representados por sinais elétricos (ex: 0 Volts → 0; 5 Volts → 1).

Além da base 2, as bases Octal (base 8) e Hexadecimal (base 16) são comuns na computação por facilitarem a conversão com a base binária:

  • Octal: Algarismos de 0 a 7.
  • Hexadecimal: Algarismos de 0 a 9 e letras A a F.

Em geral, para uma base β ≥ 2, os algarismos válidos vão de 0 a β-1. Usamos subscritos para indicar a base, como 11₂ para binário. A ausência de subscrito indica base 10.

Veja a seguir a representação dos mesmos números em bases diferentes:

Binário 11010110₂ 11010,001₂
Octal 326₈ 32,1₈​
Decimal 214₁₀ 26,125₁₀
Hexadecimal D6₁₆​ 1A,20₁₆​

Sistema Posicional e Forma Polinomial

Sistemas de numeração são posicionais, ou seja, a posição do dígito influencia seu valor. Exemplo em base 10:

347 = 3 × 10² + 4 × 10¹ + 7 × 10⁰

Em qualquer base β, a forma segue esse padrão, apenas troca-se o 10 por β

Veja o valor de casa número da base 2 representa em decimal:

27 26 25 24 23 22 21 20
128 64 32 16 8 4 2 1

Lembre-se que para números fracionários, usamos potências negativas:

243,51 = 2×10² + 4×10¹ + 3×10⁰ + 5×10⁻¹ + 1×10⁻²
= 2×100 + 4×10 + 3×1 + 5×0,1 + 1×0,01


Conversão de Bases Numéricas

A conversão entre diferentes bases numéricas é um conceito fundamental na computação.

Para Decimal (de uma base β para decimal)

Para converter um número de qualquer base β para a base decimal, utilizamos sua forma polinomial. Cada dígito do número é multiplicado pela base elevada à potência correspondente à sua posição, começando da direita para a esquerda com a potência zero.
Pode-se fazer utilização da tabela que vimos antes também para facilitar a conversão.

  • Exemplo para inteiros:
24 23 22 21 20
1 0 1 1 0
16 8 4 2 1

10110₂​=1×2⁴ + 0×2³ + 1×2² + 1×2¹ + 0×2⁰ = 16+0+4+2+0 = 22₁₀

16 + 4 + 2 = 22₁₀


De Decimal (inteiros para uma base β)

Para converter um número inteiro da base decimal para outra base β, emprega-se o método das divisões sucessivas. O número decimal é dividido pela base β repetidamente, e o resto de cada divisão é o algarismo convertido. O processo continua até que o quociente seja zero. O número convertido é lido de baixo para cima (do último resto para o primeiro).

  • Exemplo: Converter 19₁₀​ para binário.

De Decimal (racionais para uma base β)

Para converter a parte fracionária de um número decimal para outra base (por exemplo, binário), utilizam-se multiplicações sucessivas pela base. O algarismo binário é a parte inteira do resultado da multiplicação, e a parte fracionária é usada na próxima multiplicação. A parte inteira do número decimal é convertida separadamente.

  • Exemplo: Converter 0,5625₁₀​ para binário.

Bases Octal e Hexadecimal: Conversão Direta

As bases octal e hexadecimal são amplamente utilizadas na computação por serem potências de 2, o que simplifica a conversão para binário. A conversão entre binário e octal/hexadecimal é direta e pode ser feita por agrupamento de bits.


Binário para Octal

Separe os algarismos binários em grupos de 3 bits, começando do bit menos significativo para o mais significativo. Cada grupo de 3 bits corresponde a um único algarismo octal.

  • Exemplo: Converter 10010011101₂​ para octal.
    • 10 010 011 101₂
    • 10₂​ = 2₈​
    • 010₂​ = 2₈​
    • 011₂​ = 3₈​
    • 101₂​ = 5₈​
    • Unindo: 2235₈​.

Octal para Binário

Converta cada algarismo octal para seus 3 dígitos binários equivalentes.

  • Exemplo: Converter 1366₈​​ para binário.
    • 1₈ = 001₂​
    • 3₈ = 011₂​
    • 6₈ = 110₂​
    • 6₈ = 110₂​
      Assim, 1366₈​​ = 001 011 110 110₂​.

Binário para Hexadecimal

Separe os algarismos binários em grupos de 4 bits (nibbles), novamente do bit menos significativo para o mais significativo. Cada grupo de 4 bits corresponde a um único algarismo hexadecimal.

  • Exemplo: Converter 110010011101₂​​ para hexadecimal.
    • 1001 1110 0011₂​ 
    • 1001₂​ = 9₁₆
    • 1110₂​ = E₁₆
    • 0011₂​ = 3₁₆
    • Unindo: 9E3₁₆​.

Hexadecimal para Binário

Converta cada algarismo hexadecimal para seus 4 dígitos binários equivalentes.

Conversão por tabela:

HEX BIN
0 0000
1 0001
2 0010
3 0011
4 0100
5 0101
6 0110
7 0111
HEX BIN
8 1000
9 1001
A 1010
B 1011
C 1100
D 1101
E 1110
F 1111

Exemplo: Converter A46F₁₆​​ para binário.

  • A₁₆ = 1010₂​ 
  • 4₁₆​ = 0100₂
  • 6₁₆​ = 0110₂
  • F₁₆ = 1111₂
  • Unindo: A46F₁₆ = 1010 0100 0110 1111​₂






Representações Infinitas (Dízimas)

Nem todos os números racionais possuem uma representação finita em outras bases numéricas.

Por exemplo, o número 0,1₁₀ não tem uma representação binária finita, resultando em uma dízima periódica:
0,1₁₀ = 0,000110011…₂

Em sistemas computacionais, esses valores são armazenados como aproximações, o que pode levar a erros de arredondamento. Quando esses erros se acumulam, podem causar falhas significativas.

Um exemplo real foi o incidente do míssil Patriot, ocorrido durante a Guerra do Golfo. Um erro de cálculo no tempo, causado pela imprecisa representação de 0,1 segundos em 24 bits, resultou em um desvio de meio quilômetro, impedindo a interceptação de um míssil inimigo.


Bits, Bytes e Nibbles

  • Bit: É a abreviação de “binary digit” (algarismo binário). Um bit é a menor unidade de informação em computação, representando um 0 ou um 1.
  • Byte: Um conjunto de 8 bits. Na maioria das CPUs, a menor unidade de operação é um byte, e a memória é endereçada a byte.
  • Nibble: O equivalente a meio byte, ou seja, 4 bits. É particularmente útil ao lidar com valores em hexadecimal.
  • Palavra de dado: É a unidade natural de processamento de um sistema, uma sequência de bits de tamanho fixo processada em conjunto, por exemplo, 16 bits, 32 bits ou 64 bits.

 


Capacidade de Representação

Capacidade de Representação

A capacidade de representar valores em um sistema numérico depende da base e da quantidade de algarismos (dígitos/casas) disponíveis.
Em uma base β, com n algarismos, podemos armazenar βⁿ possibilidades de valores.

Na base 10:

  • Com 1 dígito: 10 possibilidades (0–9).
  • Com 2 dígitos: 10² = 100 possibilidades (0–99).
  • Com n dígitos: 10ⁿ possibilidades.

Na base 2:

  • Com 1 bit: 2¹ = 2 possibilidades (0–1).
  • Com 2 bits: 2² = 4 possibilidades.
  • Com n bits: 2ⁿ possibilidades.

Para inteiros sem sinal com w bits, os números podem variar de 0 (00…000) até 2ʷ−1 (11…111).
O próximo número, 2ʷ (100…000), não pode ser representado em w bits.

Aritmética Binária

Soma Binária

A soma binária segue um procedimento similar à soma decimal que conhecemos, onde posicionamos os números um sobre o outro e somamos os dígitos individualmente, prestando atenção ao “vai um” (carry-over). O “vai um” possui o mesmo significado em outras bases, incluindo a binária.

Para analisar a soma, podemos observar um exemplo decimal como:
397 + 654 = 1051

Esse processo envolve a soma das parcelas de cada posição (unidades, dezenas, centenas, etc.), considerando o valor posicional (potências da base). O “vai um” ocorre quando a soma excede a capacidade da posição, sendo transferido para a próxima posição mais significativa.

Regras da Soma Binária

Considere a soma de dois números binários, por exemplo:
101011₂ + 100111₂

A operação é feita da direita para a esquerda, bit a bit. As possibilidades para a soma de dois bits (x e y) são:

  • 0 + 0 = 0 (Vai Um: 0)
  • 0 + 1 = 1 (Vai Um: 0)
  • 1 + 0 = 1 (Vai Um: 0)
  • 1 + 1 = 0 (Vai Um: 1)

Com um “vai um” da posição anterior, temos:

  • 1 + 0 + 0 = 1 (Vai Um: 0)
  • 1 + 0 + 1 = 0 (Vai Um: 1)
  • 1 + 1 + 0 = 0 (Vai Um: 1)
  • 1 + 1 + 1 = 1 (Vai Um: 1)

Exemplos Práticos

  • 1011₂ + 1101₂ = 11000₂
  • Tente fazer: 111001₂ + 110011₂ = 1101100₂

Overflow em soma sem sinais

Computadores digitais representam números com palavras de dado de tamanho fixo (como 16, 32 ou 64 bits). Quando uma operação exige mais bits do que o disponível, ocorre um overflow (ou underflow).

Exemplo:

Usando 4 bits sem sinal:
1111₂ (15₁₀) + 0001₂ (1₁₀) = 0000₂ (0₁₀) → Overflow!
O resultado deveria ser 16, mas esse número não é suportado em 4 bits.


Subtração Binária

A subtração binária A – B = C, onde A é o minuendo e B o subtraendo, pode ser feita de duas formas:

1. Subtração Tradicional (“Empresta”)

Feita da direita para a esquerda. Se o bit do minuendo for menor que o do subtraendo, empresta-se do bit à esquerda.

Exemplo:


1101₂ – 1011₂ = 0010₂

Limitação:

Funciona apenas se A ≥ B. Se A < B, o método falha e deve-se inverter os números e adicionar sinal negativo, o que para um computador não é viável.


2. Subtração com Complemento de 2

Método mais prático para computadores, pois transforma a subtração em soma.

O complemento de 2 é uma convenção para números binários em que podemos representar números negativos sem utilizar o sinal de (-) menos.

Dessa forma, quando formos usar complemento de 2, devemos saber com quantos bits estamos lidando:
Exemplo de números com 3 bits à direita:

Perceba que, com 3 bits:

  • Em binário sem sinal, os valores vão de 0 a 7.
  • Em complemento de 2, os valores vão de -4 a 3.
  • 000 = 0
  • 001 = 1
  • 010 = 2
  • 011 = 3
  • 100 = -4
  • 101 = -3
  • 110 = -2
  • 111 = -1

Ou seja, o intervalo de representação muda para [-2ⁿ⁻¹, 2ⁿ⁻¹ − 1], onde n é a quantidade de bits.
No caso de 3 bits:
→ intervalo: [-4, +3]


COMO ANALISAR OS NÚMEROS EM COMPLEMENTO DE 2 


Se o bit mais significativo (primeiro da esquerda) for 0, o número é positivo (igual à conversão normal para decimal).

Se o bit mais significativo for 1, o número é negativo.
Para saber qual valor ele representa:

  1. Identifique o valor mínimo que pode ser representado:
    • Com 3 bits, o número 100 representa −4.
  2. Some o valor dos bits restantes (como se fossem positivos).

Exemplo:
111 → bit mais significativo é 1 → é negativo
Valor de 111 = (−4) + 2 + 1 = −1

Outro exemplo:
101 → (−4) + 1 = −3

Também é possível aplicar o método de complemento de 2 em um número que já está nesse padrão a fim de transformá-lo em sua versão positiva.

Etapas para transformar um número em complemento de 2:

  1. Complemento de 1: inverte os bits de B.
    Exemplo: complemento de 1 de 01010010₂10101101₂
  2. Complemento de 2: (complemento de 1) + 1.
    Exemplo: 10101101₂ + 1₂ = 10101110₂

Exemplo Prático (A > B):

Subtrair 011101₂ – 010011₂:

  1. A = 01010011₂
  2. B = 00010011₂
  3. Complemento de 1 de B = 11101100
  4. Complemento de 2 = 11101101
  5. Soma:
    01010011 + 11101101 = 101000000
  6. Resultado final (despreza o “vai um”): 001000000₂

Resultados Negativos com Complemento de 2 (A < B)

Se o minuendo A for menor que B, o método tradicional falha, mas o complemento de 2 pode ser usado.

Exemplo:

01010011₂ – 01110011₂ = 11100000₂

Como interpretar um númerm em Complemento de 2:

  • Complemento de 2 de 100010₂
    • Complemento de 1: 011101₂
    • +1 = 011110₂
    • Resultado: -011110₂ = -30₁₀

Multiplicação Binária

A multiplicação binária é um processo análogo à multiplicação decimal, porém mais simples devido ao fato de que a base binária possui apenas dois algarismos: 0 e 1.

Etapas da Multiplicação Binária

A multiplicação binária segue o mesmo princípio do método tradicional de “multiplicar e somar” da base decimal:

1. Multiplicação dos Dígitos

  • 0 multiplicado por qualquer número é 0
  • 1 multiplicado por qualquer número é o próprio número

2. Deslocamento

Cada produto parcial é deslocado para a esquerda, de acordo com a posição do dígito do multiplicador que o gerou (como acontece na multiplicação decimal com os zeros).

3. Soma dos Produtos Parciais

Todos os produtos parciais são somados, utilizando as regras da soma binária, com o conceito de “vai um” (carry).


Exemplo Prático

Multiplicação de 101₂ por 11₂ (equivalente a 5 × 3 em decimal):

Resultado: 1111₂

Convertendo para decimal:
1×2³ + 1×2² + 1×2¹ + 1×2⁰
= 8 + 4 + 2 + 1 = 15

Portanto, 5 × 3 = 15, como esperado.


Importância

Esse método de multiplicação é essencial na construção de circuitos digitais, especialmente na implementação de unidades aritméticas dentro de processadores, que realizam operações de multiplicação de forma lógica.

Representação Numérica em Computadores

Limitações de Representação em Computadores

Ao contrário da representação de números no papel, que pode usar tantos dígitos quantos forem necessários (limitada por recursos como papel e paciência), um computador digital possui um espaço finito para guardar informações. Toda informação é, em última instância, representada por um número, geralmente em formato binário, devido à facilidade de realizar cálculos na base 2.

Em um computador, os números são processados por grupos de algarismos binários de uma só vez, e não bit por bit. A unidade natural de processamento de um sistema digital é chamada de palavra de dado, que é uma sequência de bits com tamanho fixo, processada em conjunto. O tamanho dessa palavra pode variar entre sistemas (por exemplo, processadores de 32 ou 64 bits). O bit mais à esquerda é o Most Significant Bit (MSB), e o bit mais à direita é o Least Significant Bit (LSB).

A capacidade de representação é determinada pela base e pelo número de dígitos ou bits. Em uma base β com n casas (dígitos), existem βⁿ possibilidades de valores. Na base 2, com n bits, temos 2ⁿ possibilidades.


Inteiros Sem Sinal

Para números inteiros sem sinal em palavras binárias com w bits, os valores que podem ser representados variam de 0 até 2w − 1. Por exemplo, com 3 bits, podemos representar números de 0 (000₂) até 7 (111₂). O próximo número na sequência, que não caberia em w bits, seria 2w (representado como 100…000₂ com w+1 bits).


Números Negativos

Para representar números negativos, é necessário reservar espaço na palavra binária para informações sobre o sinal, além dos próprios algarismos do número. Existem várias abordagens para isso:

Representação Sinal-Magnitude:

  • Esta representação utiliza um bit específico para indicar o sinal do número.
    • Sinal +: o bit de sinal é 0.
      • 0110₂ = 6₁₀
    • Sinal −: o bit de sinal é 1.
      • 1110₂ = -6₁₀
  • O restante dos bits representa a magnitude (valor absoluto) do número.

Vantagens: É simples de entender e de implementar.

Desvantagens: Apresenta duas representações para o zero (+0 e −0). Isso complica a aritmética, pois o sinal precisa ser tratado separadamente durante as operações de soma e subtração. Com w bits, o menor número representável é −(2w-1-1) e o maior é 2w-1-1

Representação em Complemento de 1:

  • A conversão para esta representação ocorre apenas para números negativos.
  • Para converter, basta inverter os níveis lógicos (bits) do número (0s viram 1s e 1s viram 0s).
    • 0111₂ = 7₁₀
    • 1000₂ = -7₁₀
  • O bit mais significativo (MSB) ainda indica o sinal: 0 se positivo e 1 se negativo.

Vantagens: A conversão é simples, e as operações de soma e subtração são realizadas da mesma forma que para números sem sinal.

Desvantagens: Assim como no sinal-magnitude, possui duas representações para o zero (+0 e −0).

  • A subtração A − B pode ser realizada como A + (−B), onde −B é o complemento de 1 de B, com a adição de 1 ao final (chamado de end-around carry).

 Representação em Complemento de 2:

  • Esta representação é amplamente utilizada em computadores.
  • O Complemento de 2 de um número binário é obtido calculando-se o Complemento de 1 e, em seguida, adicionando 1 unidade ao resultado.

Vantagens: Possui apenas uma representação para o zero, o que simplifica a lógica de hardware. Além disso, permite representar um número negativo a mais em comparação com as outras representações. As operações de soma e subtração são simples e unificadas, feitas da mesma forma que para números sem sinal.

Desvantagens: Pode não ser tão intuitivo para humanos, e as comparações diretas de valores (como determinar qual número é maior) podem ser menos evidentes em relação à representação em módulo e sinal.

  • Com w bits, o intervalo não é simétrico.
    O menor número representável é −2(w−1), e o maior é 2^(w−1) − 1.
    • Ou seja, com 4 bits podemos representar de -8 até +7.
  • A operação A − B é realizada como A + (complemento de 2 de B), isto é:
    • A − B = A + (¬B + 1), desprezando o carry-out final.

Extensão de Bits

Quando se precisa representar um número em uma palavra de comprimento maior que o comprimento original, por exemplo, um número inicialmente representado em 4 bits extendido para 8 bits, o processo de extensão de bits depende conforme a representação utilizada:

 

Inteiros Sem Sinal: A extensão é feita simplesmente adicionando-se zeros à esquerda do número original para preencher os bits adicionais.

Sinal-Magnitude: A extensão mantém o bit de sinal original e preenche os bits intermediários com zeros, preservando a magnitude do número.

Complemento de 2: A extensão é feita copiando-se o bit mais significativo (o bit de sinal) para todas as novas posições à esquerda. Isso garante que o valor numérico (positivo ou negativo) seja preservado corretamente na nova representação.


Overflow / Underflow

Um erro de overflow (para números muito grandes) ou underflow (para números muito pequenos) ocorre toda vez que uma operação aritmética (como a soma) resulta em um número que precisa de mais bits do que os disponíveis na representação que está sendo utilizada.

Detecção de Overflow/Underflow:

Esses erros só ocorrem ao somar dois números que possuem o mesmo sinal (ambos positivos ou ambos negativos).

Em soma binária com números em complemento de dois, o overflow pode ser detectado de duas formas:

  • Comparando os bits de sinal:
    Se os dois operandos têm o mesmo bit de sinal, mas o resultado tem bit de sinal diferente, ocorreu overflow.
  • Comparando os dois últimos carry-outs (da penúltima e da última posição):
    Se esses dois carry-outs são diferentes, ocorreu overflow.
    • Esse é o método mais usado em circuitos, pois é fácil de implementar com portas XOR.
  • Um exemplo de overflow em complemento de dois com 3 bits é somar +1 (001₂) a +3 (011₂): o resultado esperado é +4, mas com 3 bits, 011 + 001 resulta em 100₂, que em complemento de 2 representa −4, indicando um overflow.
  • A conversão de um inteiro sem sinal para um inteiro com sinal também pode causar overflow se o bit mais significativo do número sem sinal estiver sendo usado e não houver um bit livre para o sinal.
    • 1000₂ = 8₁₀
      Complemento de 2: 1000₂

Álgebra Booleana, Tabelas Verdade e Propriedades Algébricas

Este tópico é fundamental para a compreensão do funcionamento interno dos computadores e circuitos digitais, pois a Álgebra Booleana é a base matemática por trás das operações lógicas realizadas com os valores binários e com ela que construimos nossos circuitos.


Introdução à Álgebra Booleana

  • Propósito e Contexto:
    A Álgebra Booleana é um ramo da matemática voltado para a lógica binária, onde os valores possíveis são apenas dois: verdadeiro (1) e falso (0). Ela serve como base para a construção de circuitos digitais e para a representação de decisões lógicas em computadores. Seu nome é uma homenagem ao matemático George Boole, que desenvolveu esse sistema lógico no século XIX.
  • Relevância em Circuitos Digitais:
    A Álgebra Booleana permite descrever e projetar o funcionamento de portas lógicas — blocos fundamentais dos circuitos digitais. Portas como AND, OR e NOT operam sobre os valores binários, manipulando sinais de entrada para produzir saídas coerentes com regras lógicas. Combinando essas portas, é possível construir dispositivos complexos, como somadores, registradores, memórias e até processadores completos.

Conceitos Fundamentais e Operadores Booleanos

  • Valores Lógicos:
    • Verdadeiro (True), geralmente representado por 1.
    • Falso (False), geralmente representado por 0.
  • Operadores Lógicos Fundamentais: São utilizadas algumas portas lógicas para facilitar as operações visando torná-las mais alto nível, mais pra frente você vai aprender que todas podem ser feitas com NAND.
    Os principais são:
    • AND (E Lógico): Retorna 1 apenas se ambas as entradas forem 1.
      Possíveis sinais: . | e | and |
    • OR (OU Lógico): Retorna 1 se pelo menos uma das entradas for 1.
      Possíveis sinais: + | ou | or | v
    • NOT (NÃO Lógico/Inversor): Inverte o valor da entrada (0 → 1, 1 → 0).
      Possíveis sinais: | ¬ | ~ | not |
    • XOR (OU Exclusivo): Retorna 1 se apenas uma das entradas for 1.
      Possíveis sinais: | xor | ^ (em alguns contextos)
    • Outros Operadores: Cada operador acima (exceto o NOT) possui sua inversão, que funciona da mesma que um NOT após a porta. Elas são: NAND (↑), NOR (↓), XNOR (≡).
      Ex: NAND é igual a AND → NOT
      (A ↑ B) = ¬(A ∧ B)

Tabelas Verdade

As tabelas verdade são uma ferramenta essencial na hora de criar circuitos digitais, principalmente mais simples. Ela lista todas as combinações possíveis de entradas e a respectiva saída para cada, assim, sendo possível criar uma expressão booleana para um circuito.

Estrutura: Uma tabela verdade irá conter 2n linhas, sendo n o número de entradas do circuito. Ela deve conter todas as entradas possíveis para o circuito.

Exemplos:

Tabela verdade AND  (1 quando A e B são 1)

A B Saída
0 0 0
0 1 0
1 0 0
1 1 1

Tabela verdade OR (1 quando A ou B são 1)

A B Saída
0 0 0
0 1 1
1 0 1
1 1 1

Tabela verdade NOT (inverte a entrada)

A Saída
0 1
1 0

Propriedades Algébricas da Álgebra Booleana

Importância:
Permitem simplificar expressões lógicas, otimizando designs de circuitos (menos portas, menor consumo energético).

Lista de Propriedades

  • Comutativa:
    A + B = B + A
    A * B = B * A
  • Associativa:
    A + (B + C) = (A + B) + C
    A * (B * C) = (A * B) * C
  • Distributiva:
    A * (B + C) = (A * B) + (A * C)
    A + (B * C) = (A + B) * (A + C)
  • Identidade:
    A + 0 = A
    A * 1 = A
  • Complemento:
    A + A′ = 1
    A * A′ = 0
  • Leis de De Morgan:
    (A + B)’ = A’ * B’
    (A * B)’ = A’ + B’
  • Idempotência:
    A + A = A
    A * A = A
  • Absorção:
    A + (A * B) = A
    A * (A + B) = A


Exemplos de Expressões Booleanas e Simplificação

Construção de Expressões

Expressões booleanas combinam variáveis lógicas e operadores (AND, OR, NOT, etc.) para representar o comportamento de circuitos digitais.

Exemplo 1:
F(A, B, C) = (A AND B) OR (NOT C)
Essa função retorna 1 se A e B forem verdadeiros, ou se C for falso.

Exemplo 2:
F(A, B, C) = (A AND NOT B) OR (B AND C)
Aqui, a saída será 1 se A for 1 e B for 0, ou se B e C forem ambos 1.

Essas expressões representam comportamentos comuns em circuitos, como decisões condicionais, comparações ou ativação de componentes com base em múltiplas entradas.


Objetivos da Simplificação

Simplificar expressões booleanas visa:

  • Reduzir o número de portas lógicas necessárias no circuito.
  • Diminuir o tempo de processamento (menos níveis de lógica).
  • Economizar energia e espaço físico nos chips e placas.
  • Facilitar a análise e manutenção do circuito.

Métodos de Simplificação

1. Uso de Propriedades Algébricas

Exemplo 1:
Expressão original:
F = A·B + A·B’

Aplicando a propriedade de absorção:
F = A

Exemplo 2:

Expressão original:
F = (A⋅B⋅C)+(A′⋅B)+(A⋅B⋅C′)+(A⋅B⋅D)+(A⋅B⋅D′)

Passo Expressão Propriedade Utilizada
0 (A⋅B⋅C)+(A′⋅B)+(A⋅B⋅C′)+(A⋅B⋅D)+(A⋅B⋅D′) Comutativa
1 (A⋅B⋅C)+(A⋅B⋅C′)+(A′⋅B)+(A⋅B⋅D)+(A⋅B⋅D′) Distributiva
2 (A⋅B)⋅(C+C′)+(A′⋅B)+(A⋅B)⋅(D+D′) Complemento
3 (A⋅B)⋅1+(A′⋅B)+(A⋅B)⋅1 Identidade
4 A⋅B+A′⋅B+A⋅B Idempotência
5 A⋅B+A′⋅B Distributiva
6 B⋅(A+A′) Complemento
7 B⋅1 Identidade
8 B  

2. Mapas de Karnaugh

Mapas de Karnaugh organizam todas as possíveis entradas de uma função booleana em uma tabela visual. Agrupando os 1s adjacentes, é possível encontrar formas mais simples da função. É muito útil para quando se tem a tabela verdade do circuito e quer simplificar a expressão.
Geralmente são utilizados para circuitos com até 4 entradas, após isso ele começa a ficar mais complexo e menos intuitivo de ser utilizado.

Exemplo:

A B C D SAÍDA
0 0 0 0 1
0 0 0 1 0
0 0 1 0 0
0 0 1 1 1
0 1 0 0 1
0 1 0 1 0
0 1 1 0 1
0 1 1 1 0
1 0 0 0 1
1 0 0 1 0
1 0 1 0 0
1 0 1 1 0
1 1 0 0 1
1 1 0 1 1
1 1 1 0 0
1 1 1 1 1


Para montar o Mapa de Karnaugh, as colunas e linhas adjacentes a um espaço devem respeitar a regra de negar apenas uma das variáveis em relação à do lado.

  CD CD̅ C̅D̅ C̅D
AB 1   1 1
AB̅     1  
A̅B̅ 1   1  
A̅B   1 1  

Inclusive, pode-se notar nos exemplos abaixo que quando os 1s estão distribuídos de forma análoga a um tabuleiro de xadrez, pode-se uní-los formando um XOR ou XNOR.

Mapas com diferentes quantidades de variáveis:

2 Variáveis

  B
A 1  
  1

A̅ ⊕ B

3 Variáveis

  C
AB 1  
AB̅ 1 1
A̅B̅ 1  
A̅B 1  

C v AB̅

4 Variáveis

  CD CD̅ C̅D̅ C̅D
AB 1   1  
AB̅   1   1
A̅B̅ 1   1  
A̅B   1   1

(A ⊕ B ⊕ C ⊕ D)

5 Variáveis

Para 5 variáveis deve-se montar 2 mapas de 4 variáveis. Um mapa será para quando a quinta variável estiver ligada e o outro para quando ela estiver negada.


S = CD̅E̅ + A̅B̅D̅ + ADE + A̅BD

  CD CD̅ C̅D̅ C̅D
AB 1     1
AB̅ 1     1
A̅B̅   1 1  
A̅B 1     1

E

  CD CD̅ C̅D̅ C̅D
AB   1    
AB̅   1    
A̅B̅   1 1  
A̅B 1 1   1

¬E

A partir de 6 variáveis, o Mapa de Karnaugh não é viável de se utilizar, sendo recomendado usar as propriedades algébricas para simplificar uma expressão.

Desafios utilizando portas lógicas

Montando Circuitos a partir de Expressões

Montar um circuito lógico após obter a expressão já simplificada é um passo fundamental no projeto de sistemas digitais. A ideia é transformar a expressão algébrica booleana em sua representação física, utilizando portas lógicas. Esse processo segue uma ordem natural de construção, que facilita tanto o entendimento quanto a implementação.

  1. Identificação dos Operadores:
    Verifique quais operadores estão presentes na expressão (NOT, AND, OR, XOR, etc.).
  2. Definição da Ordem de Implementação:
    Assim como em expressões matemáticas convencionais, os operadores possuem uma ordem de precedência:
    • NOT → mais forte, aplicado primeiro.
    • AND → aplicado depois do NOT.
    • OR → aplicado por último.
    • Operadores como XOR, NAND, NOR, XNOR podem ser tratados conforme a equivalência em AND/OR/NOT, pois são variações das portas básicas acima.
      Então um NAND, por exemplo, é tratado como (A·B)
    • Além disso, é possível utilizar parênteses, colchetes e até mesmo chaves para organizar melhor as expressões lógicas. Esses símbolos ajudam a definir a ordem das operações de forma clara, evitando ambiguidades e facilitando tanto a leitura quanto a implementação do circuito.
  3. Exemplo de precedência:
    • Expressão: A̅⋅B+C
    • Ordem: primeiro inverte A → depois faz AND com B → por último soma com C.
  4. Construção do Circuito:
    • Comece pelas entradas (variáveis).
    • Aplique os inversores (NOT) quando necessário.
    • Conecte portas AND para multiplicações.
    • Finalize com portas OR para somas.
  5. Verificação:
    Após o desenho, é sempre importante conferir a tabela verdade da expressão original e do circuito, garantindo que ambos representem a mesma função.

 Exemplos:

Montando o circuito:
A̅ ⋅ B + C

Montando o circuito:
(A + B) ⋅ C̅ ⋅ D

Montando o circuito: ¬(A + B) + C ⋅ (D ⊕ E)

Blocos Combinacionais

Somadores e Subtratores Binários

Este tópico aborda os blocos fundamentais para a realização de operações aritméticas em circuitos digitais: os somadores e subtratores. Esses blocos são construídos a partir de portas lógicas, aplicando os princípios da Álgebra Booleana para manipular valores binários (0 e 1).


Half-Adder (Meio-Somador)

O Half-Adder (HA) é o bloco combinacional mais básico para a operação de soma. Ele é projetado para somar dois algarismos binários (bits) de entrada.

  • Entradas: A e B
  • Saídas:
    • Soma (S): resultado da adição dos dois bits
    • Vai-um (Carry-Out): bit de “vai um” gerado, caso a soma exceda a capacidade de um único bit

Tabela Verdade do Half-Adder:

A B S (Soma) C_out (Vai-um)
0 0 0 0
0 1 1 0
1 0 1 0
1 1 0 1

Implementação com Portas Lógicas:

  • Soma (S): Nota-se que a saída da Soma é 1 quando APENAS uma das entradas são 1, então essa pode ser feita com uma Porta XOR → S = A ⊕ B
  • Vai-um (C_out): Apenas quando A e B são 1, Porta AND → C_out = A ∧ B

Full-Adder (Somador Completo)

Para somar números binários com mais de um bit, é necessário considerar o “vai-um” (carry-in) da posição anterior. Para isso, usamos o Full-Adder (FA).

  • Entradas: A, B, e Carry-In (C_in)
  • Saídas:
    • Soma (S)
    • Vai-um (Carry-Out)

Tabela Verdade do Full-Adder:

A B C_in S (Soma) C_out (vai-um)
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

Observação:

Múltiplos Full-Adders são conectados em cascata para somar números com vários bits. Essa arquitetura é chamada de ripple-carry adder.

Somador de 4 bits

Subtrator Binário com Complemento de 2

Como vimos antes, geralmente para implementar subtrações é utilizado o complemento de 2 do subtraendo. Assim, quando queremos criar um subtrator usando portas lógicas, podemos simplesmente inverter a entrada “B” do Full-Adder adicionando uma porta NOT na entrada, e adicionando a constante 1 ao Carry In inicial do primeiro somador.

Subtrator 1 bit feito a partir de um Full-Adder
Subtrator 4 bits

Outros Blocos Combinacionais

Os blocos combinacionais são fundamentais na construção de circuitos digitais mais complexos. Além dos somadores e subtratores, há diversos outros componentes que desempenham funções lógicas e aritméticas importantes em sistemas computacionais. A seguir, apresentamos uma introdução aos principais blocos combinacionais utilizados em circuitos digitais.


Decodificadores

Decodificadores são circuitos que transformam um código binário de entrada em uma única saída ativa entre várias disponíveis. Eles são utilizados para ativar seletivamente uma linha entre muitas, a partir de uma combinação binária de controle. Por exemplo, um decodificador 2→4 possui 2 entradas e 4 saídas, ativando apenas uma saída por vez. São amplamente usados em seleção de memória, controle de periféricos e implementação de instruções em processadores.

Tabela Verdade Decodificador 2 bits de seleção:

Decodificador 2 entradas e 4 saídas
E1 E0 S3 S2 S1 S0
0 0 0 0 0 1
0 1 0 0 1 0
1 0 0 1 0 0
1 1 1 0 0 0

Decodificadores também podem ser criados para propósitos individuais, como por exemplo, decodificar a entrada de 4 bits binários para as saídas serem os LEDs de um display de 7 segmentos representando o respectivo número em hexadecimal, ou seja, ele pode ser construído de diferentes maneiras dependendo do contexto de utilização.

Exemplo: Sistema de Controle de Luzes de Uma Sala

Imagine uma sala com 4 interruptores diferentes que controlam 2 luzes de teto de forma combinada para criar cenários de iluminação.

  • Entradas (interruptores):
    • I0, I1, I2, I3 → cada interruptor representa um cenário de iluminação
  • Saídas (luzes):
    • L1, L0 → combinam para mostrar qual luz está acesa

Regras de funcionamento:

  • Cada interruptor aciona uma combinação específica de luzes:
Interruptor Luz L1 Luz L2
I0 0 0
I1 0 1
I2 1 0
I3 1 1

Tabela Verdade

I0 I1 I2 I3 L1 L0
1 0 0 0 0 0
0 1 0 0 0 1
0 0 1 0 1 0
0 0 0 1 1 1

L1 = I2 v I3  

L0 = I1 v I3


Codificadores

Codificadores realizam a operação inversa dos decodificadores: eles recebem como entrada uma entre várias linhas ativas (normalmente apenas uma é ativa por vez) e geram uma saída binária correspondente à linha ativa. Por exemplo, um codificador 4:2 recebe 4 sinais de entrada e gera um código binário de 2 bits que representa qual das 4 entradas está ativada.

Codificadores são úteis em sistemas que precisam reduzir a quantidade de linhas de sinal, como teclados, sensores e circuitos de prioridade. Uma variação importante é o codificador de prioridade, que lida com múltiplas entradas ativas, priorizando uma delas conforme um critério definido.

Exemplo de Tabela Verdade Codificador 4 bits de entrada:

E3 E2 E1 E0 S1 S0
0 0 0 1 0 0
0 0 1 0 0 1
0 1 0 0 1 0
1 0 0 0 1 1
Codificador 4 entradas 2 saídas

Exemplo de utilização de um Codificador

Imagine um sistema de controle de pistas em um aeroporto. Há diferentes tipos de aeronaves solicitando uso da pista, cada uma com uma prioridade distinta:

  • P3: Avião com emergência (maior prioridade)
  • P2: Avião internacional
  • P1: Avião nacional
  • P0: Avião de carga (menor prioridade)

Para simplificar o controle, utiliza-se um codificador de prioridade 4:2. Ele recebe até quatro sinais de entrada e gera um código binário de apenas 2 bits que identifica qual tipo de voo tem prioridade no momento.

Se apenas uma entrada estiver ativa, a saída binária corresponde diretamente àquela entrada. Se várias entradas estiverem ativas simultaneamente, o codificador escolhe a de maior prioridade (Emergência > Internacional > Nacional > Carga).

P3 Emergência P2 Internacional P1 Nacional P0 Carga C1 C0 Significado
0 0 0 0 0 0 Nenhum pedido
0 0 0 1 0 0 Avião carga
0 0 1 0 0 1 Avião nacional
0 0 1 1 0 1 Avião nacional
0 1 0 0 1 0 Avião internacional
0 1 0 1 1 0 Avião internacional
0 1 1 0 1 0 Avião internacional
0 1 1 1 1 0 Avião internacional
1 0 0 0 1 1 Avião emergência
1 0 0 1 1 1 Avião emergência
1 0 1 0 1 1 Avião emergência 
1 0 1 1 1 1 Avião emergência
1 1 0 0 1 1 Avião emergência 
1 1 0 1 1 1 Avião emergência
1 1 1 0 1 1 Avião emergência
1 1 1 1 1 1 Avião emergência

Esse codificador reduz a quantidade de variáveis necessárias para o controle, tornando o sistema mais simples e eficiente. Em vez de analisar diretamente todas as combinações possíveis (16 para 4 entradas), o sistema trabalha com apenas 2 bits de informação, facilitando o projeto e a implementação do circuito de controle da pista.


Você verá mais para frente que em projetos de máquinas de estados, codificadores podem ser úteis para simplificar a lógica de controle, especialmente quando há várias entradas que podem estar ativas simultaneamente. Por exemplo, imagine um sistema de 4 estados, com 4 entradas que geram 16 combinações possíveis de ativação (2⁴ = 16). Se cada uma dessas combinações fosse tratada individualmente, a tabela verdade e o circuito resultante seriam complexos e grandes.

Ao utilizar um codificador 4:2, é possível transformar essas 4 entradas em um código binário de apenas 2 bits. Com isso, você reduz a quantidade de variáveis necessárias para representar as entradas e simplifica a lógica que define os estados da máquina. Em vez de tratar diretamente todas as combinações das 4 entradas, o sistema passa a trabalhar com um valor codificado, facilitando o projeto e a implementação da máquina de estados.

Essa técnica é especialmente útil quando as entradas representam eventos ou condições distintas, e você deseja associar a cada uma delas um estado específico ou uma transição em seu circuito.


Multiplexadores (MUX)

Multiplexadores são circuitos que selecionam uma entre várias entradas de dados e a encaminham para uma única saída, com base em sinais de controle (seleção). Eles funcionam como “chaves digitais” que escolhem qual informação será transmitida. Um MUX 4:1, por exemplo, possui 4 entradas de dados, 2 entradas de seleção e uma única saída. 

O número de entradas de dados (Ed) depende da quantidade de entradas de seleção (Es), sendo
Ed = 2Es. O Mux passará para a saída apenas a entrada correspondente à entrada de controle selecionada.

Mux 1 bit
Mux 4 bits

São muito utilizados para economizar conexões e na implementação de lógica condicional, por exemplo, um multiplexador 4:1 pode ser usado em um sistema de áudio com quatro fontes diferentes (como rádio, Bluetooth, USB e auxiliar). Com dois bits de seleção, o MUX escolhe qual fonte será enviada para os alto-falantes. Isso permite trocar entre as fontes de forma prática usando apenas uma lógica de controle simples.

Funcionamento do Mux

Sel S
0 A
1 B

Poderíamos montar uma tabela verdade de 8 linhas para cada caso envolvendo A, B e Sel. Mas podemos simplificar apenas para que quando Sel = 0, S = A e quando Sel = 1, S = B.


Shifters (Deslocadores)

Shifters são circuitos combinacionais responsáveis por deslocar os bits de um número binário para a esquerda ou para a direita. Esse deslocamento pode ocorrer de duas formas principais:

  • Deslocamento lógico: completa os espaços vazios com zeros.
  • Deslocamento aritmético: ao deslocar para a direita, mantém o bit de sinal (mais significativo), preservando o valor de números negativos em representação de complemento de dois.

Esses circuitos são bastante utilizados em:

  • Multiplicações ou divisões rápidas por potências de dois
  • Protocolos de comunicação, onde ajustes finos de bits são necessários
  • Operações com registradores, como rotação de dados

Um exemplo simples ajuda a entender:
Considere os seguintes nibbles (4 bits):

  • 0001 = 1
  • 0010 = 2
  • 0100 = 4
  • 1000 = 8

Observe que esses valores representam o mesmo padrão sendo deslocado à esquerda a cada passo. Cada deslocamento para a esquerda multiplica o valor por 2.
Da mesma forma, ao deslocar para a direita, o valor é dividido por 2, ignorando casas decimais.

Shifter 4 bits.
B seleciona de quantas “casas” será o deslocamento.

Shifters normalmente são construídos a partir de multiplexadores em paralelo, que possuem a função de deslocar o bit uma casa para a direita ou esquerda. 


Comparadores

Comparadores binários são circuitos que analisam dois números e determinam se são iguais ou qual deles é maior ou menor.

Comparadores simples verificam a igualdade bit a bit, enquanto comparadores mais sofisticados conseguem indicar se um valor é “maior que”, “menor que” ou “igual a” outro. Eles são amplamente utilizados em unidades de controle, decisões condicionais e na seleção de caminhos em arquiteturas digitais.

Verificação de igualdade

A verificação pode ser feita bit a bit com portas XOR. Se todos os bits comparados forem iguais, cada XOR será 0, então os números são iguais. Para isso, todas as saídas das portas XOR podem ser unidas por uma porta OR: se a saída final for 0, os números são iguais; se for 1, existe pelo menos um bit diferente.

Verificação de maior ou menor

Para saber qual número é maior, pode-se realizar a operação de subtração entre eles e, ao final, verificar o sinal do resultado:

  • Resultado positivo: o minuendo é maior que o subtraendo
  • Resultado negativo: o minuendo é menor que o subtraendo

É importante verificar também se os números são iguais antes de analisar apenas o sinal da subtração, para evitar uma interpretação incorreta (um falso “maior que”).

Circuitos Sequenciais (Latches e Flip-Flops)

Ao contrário dos circuitos combinacionais, que produzem saídas apenas a partir das entradas atuais, os circuitos sequenciais também levam em conta o histórico do sistema.
Isso é possível porque eles possuem elementos de memória capazes de armazenar informações temporárias — mesmo que seja apenas 1 bit.
Graças a isso, circuitos sequenciais são a base de registradores, contadores, máquinas de estados e de praticamente qualquer sistema digital com comportamento dinâmico.


Latches

Conceito

Um latch é um circuito eletrônico que armazena um único bit de informação. Sua saída depende tanto das entradas atuais quanto do estado anterior.

Eles são chamados de “sensíveis ao nível” quando possuem uma entrada de controle (Enable): o estado pode mudar enquanto o sinal Enable está ativo.

Contudo, nem todo latch tem Enable. O latch SR básico, por exemplo, não possui entrada de controle: ele muda de estado imediatamente quando S ou R mudam (circuito assíncrono).

Tipos de Latch

Latch SR (Set-Reset)

  • Entradas: S (setar 1), R (resetar 0).
  • Saídas: Q e .
  • Funcionamento:
    • S=1, R=0 → saída vai para 1 (Set)
    • S=0, R=1 → saída vai para 0 (Reset)
    • S=0, R=0 → mantém o estado anterior
    • S=1, R=1 → condição inválida

Latch D (Data)

  • Tem apenas uma entrada de dados (D) e um controle Enable.
  • Enquanto Enable=1, a saída Q segue D.
  • Quando Enable=0, o valor anterior é mantido, ou seja, a saída “trava”.

Pode-se notar que o latch é sensível ao nível do sinal de controle (Enable). Enquanto o Enable está ativo, a saída segue imediatamente a entrada. Se as entradas oscilarem ou tiverem ruídos durante esse período, o latch pode registrar valores errados ou instáveis (“transparência do latch”). Isso é especialmente crítico em circuitos síncronos, onde diferentes sinais mudam em momentos próximos, podendo gerar condições de corrida e resultados imprevisíveis.

Condição de corrida: quando as entradas (como S e R num latch SR) se alternam rapidamente para níveis altos simultaneamente, forçando o circuito a um estado de oscilação contínua devido aos atrasos de propagação das portas lógicas.


Flip-Flops

Conceito

Visando corrigir o problema que os latches apresentam, isto é, a possibilidade de capturar valores instáveis enquanto o sinal de controle está ativo, os flip-flops foram desenvolvidos.

Eles são semelhantes aos latches, mas diferem no modo de operação: em vez de serem sensíveis ao nível do sinal de controle, os flip-flops só atualizam sua saída no instante da borda do clock (subida ou descida).

Dessa forma, o intervalo em que o flip-flop pode alterar a saída é muito pequeno, ou seja, sua saída ficará estável durante o funcionamento do circuito.

Clock: Um clock é um sinal digital que oscila entre 0 e 1 de forma periódica. Ele serve para sincronizar circuitos digitais, indicando exatamente quando componentes como flip-flops ou registradores devem atualizar suas saídas. Cada borda do clock (subida ou descida) dispara a mudança de estado, garantindo que todas as partes do sistema funcionem de forma coordenada e previsível.

Tipos de Flip-Flops

Flip-Flop SR

É a versão controlada por clock do latch SR. Ele recebe as entradas S (Set) e R (Reset) e atualiza a saída apenas na borda do clock. Assim como o latch SR, ainda apresenta a condição inválida quando S=1 e R=1.

Entradas e saídas:

  • S=1 e R=0 → Q=1 (Set: força a saída Q a 1)
  • S=0 e R=1 → Q=0 (Reset: força a saída Q a 0)
  • S=0 e R=0 → mantém Q (estado anterior)
  • S=1 e R=1 → estado inválido (contradição, não permitido)

Flip-Flop D

É o tipo mais usado em registradores. Possui uma única entrada D e, na borda do clock, o valor presente em D é transferido para a saída Q. Fora do instante do clock, a saída permanece estável.

Entradas e saídas:

  • D=0 → Q=0 (na borda do clock, a saída recebe o valor de D)
  • D=1 → Q=1 (na borda do clock, a saída recebe o valor de D)
  • Q mantém seu valor fora do pulso de clock

Flip-Flop JK

Evolução do SR, elimina a condição inválida. Possui duas entradas: J e K (Jump and Kill) e uma condição de toggle.

Entradas e saídas:

  • J=1 e K=0 → Q=1 (Set)
  • J=0 e K=1 → Q=0 (Reset)
  • J=0 e K=0 → mantém Q (estado anterior)
  • J=1 e K=1 → Q inverte → Q = Q (toggle, útil em contadores e divisores de frequência)

Aplicações e Construções Maiores

Registradores: juntando vários flip-flops em paralelo, é possível armazenar vários bits simultaneamente. Construindo uma estrutura modular.

Contadores: flip-flops JK podem ser conectados em cascata para contar pulsos.

Contador 4 bits utilizando flip-flops. Abaixo temos o funcionamento dele.

Máquinas de estados: armazenam o estado atual e, junto à lógica combinacional, determinam o próximo estado.

Registrador 4 bits utilizando flip-flops.