Pular para o conteúdo principal

Aula 3 — Flip-flops

Apresentação

Tudo o que construímos até aqui — portas lógicas, codificadores, decodificadores, somadores — tem uma propriedade em comum: a saída depende apenas das entradas do momento. Desligue e religue o circuito com as mesmas entradas e você obtém exatamente a mesma saída. São os circuitos combinacionais.

Só que um computador precisa lembrar. Precisa guardar o resultado de uma soma até que ele seja usado, precisa saber qual instrução executar em seguida, precisa manter um valor estável enquanto outra parte do circuito o lê. Nenhuma combinação de portas lógicas sem realimentação faz isso.

Esta aula apresenta o dispositivo que resolve o problema: o flip-flop, uma célula capaz de armazenar um bit e mantê-lo indefinidamente. Vamos construí-lo do zero, a partir de duas portas lógicas realimentadas, e chegar às quatro variantes que aparecem no restante da disciplina — RS, JK, T e D.

Por que estudar isso em Organização de Computadores

Porque o flip-flop é a unidade elementar de toda memória interna da máquina. Um registrador de 8 bits é um conjunto de oito flip-flops D compartilhando a mesma linha de clock. Uma célula de RAM estática é um laço de realimentação como o que veremos na Seção 2. O contador de programa é um registrador com um circuito de incremento. Os flags da ULA — zero, negativo, transporte, estouro — são flip-flops individuais.

Quando estudarmos o subsistema de memória e o caminho de dados da CPU, esses blocos vão aparecer prontos, como caixas com entrada, saída e clock. Esta aula é a única em que abrimos a caixa.

Objetivos

Ao final desta aula você deve ser capaz de:

  • Distinguir circuito combinacional de circuito sequencial pela estrutura (grafo acíclico × grafo com ciclo) e pelo comportamento (com e sem estado).
  • Prever o efeito de fechar um laço de realimentação em função do número de inversões, distinguindo o caso que oscila do caso que armazena.
  • Enumerar as consequências da realimentação — coluna de estado anterior na tabela, distinção entre configurações estáveis e instáveis, e risco de corrida — e justificar o sincronismo por clock como resposta a elas.
  • Analisar o laço RS básico caso a caso e explicar por que a combinação S = R = 1 não é permitida.
  • Justificar a introdução da entrada de clock e descrever o que ela controla.
  • Explicar a estrutura mestre-escravo do flip-flop JK e por que ela elimina a indeterminação do RS.
  • Aplicar as tabelas-verdade dos flip-flops RS, JK, T e D para prever a saída futura (Qf) a partir da saída anterior (Qa).
  • Prever o comportamento de um JK com as entradas assíncronas Preset e Clear, inclusive quando elas conflitam com o clock.
  • Montar e simular os circuitos estudados no Logisim-Evolution, observando o comportamento em função do tempo.

1. De combinacional a sequencial

1.1 O que é um circuito combinacional

Nos circuitos que estudamos até agora — portas, codificadores, decodificadores, somadores, o somador-subtrator — vale uma regra sem exceções: a saída é uma função booleana das entradas atuais.

Três consequências decorrem dessa definição, e vale enunciá-las porque é exatamente cada uma delas que o circuito sequencial vai quebrar:

  1. A tabela-verdade descreve o circuito por completo. Com n entradas, as 2ⁿ linhas esgotam todo o comportamento possível. Não há nada a acrescentar.
  2. O tempo não aparece. Trocar as entradas de 01 para 10 dá o mesmo resultado que trocá-las de 11 para 10. O caminho percorrido é irrelevante; só o ponto de chegada importa.
  3. O circuito não tem passado. Desligue-o, religue-o com as mesmas entradas e a saída é a mesma. Ele não pode "saber" o que aconteceu antes, porque não existe onde essa informação ficaria guardada.

O grafo de um circuito combinacional é acíclico: o sinal entra à esquerda, atravessa camadas de portas e sai à direita, sem nunca voltar. Essa é a definição estrutural — e ela é equivalente às três propriedades acima.

1.2 Por que isso não basta

Uma porta lógica se comporta como uma campainha: enquanto o dedo está no botão, o som existe; ao soltar, o som acaba. O que precisamos, para construir um computador, é de um interruptor de luz: um toque acende, e a lâmpada continua acesa depois que a mão sai.

O problema aparece na primeira tarefa realmente útil que se tenta fazer. Some 3 + 5 + 2 usando um somador combinacional: ele calcula 3 + 5 = 8 instantaneamente, mas, no momento em que você apresenta o 2 nas entradas, o 8 já não existe em lugar nenhum. Não há onde guardar o resultado parcial.

O mesmo vale para todo o resto da máquina:

  • Qual instrução executar agora? Exige lembrar qual foi a anterior.
  • O resultado deu zero? Exige guardar essa informação até que o desvio condicional a consulte.
  • Manter um valor estável enquanto outro bloco o lê exige, literalmente, memória.

Nenhuma dessas coisas é possível em um grafo acíclico. Precisamos fechar um ciclo.

1.3 A ideia da realimentação — e suas duas consequências

Realimentar é ligar a saída de um circuito de volta à sua própria entrada. A pergunta é: o que acontece quando fazemos isso?

A resposta é mais interessante do que parece, e depende de quantas inversões existem no laço. A Figura 1 mostra os dois casos possíveis; vale a pena experimentá-los no simulador antes de seguir, com os arquivos das Atividades 1 e 2.

Dois circuitos lado a lado. Em (a), um único inversor com a saída ligada de volta à própria entrada por um fio âmbar que contorna o desenho por cima; abaixo, a equação Q igual a Q barrado. Em (b), dois inversores em série com a saída do segundo realimentando a entrada do primeiro pelo mesmo tipo de contorno; abaixo, a equação Q igual ao complemento do complemento de Q, igual a Q
Número ímpar de inversões no laço: o circuito oscila. Número par: ele guarda um bit.

(a) Um inversor realimentado — o laço se contradiz. Fechando o laço, obtemos a equação Q = Q, que não tem solução lógica: se Q for 0, a saída do inversor é 1, o que força Q a 1; se Q for 1, a saída é 0, o que força Q a 0. Nenhum valor se sustenta.

Na prática, o circuito não trava nem explode: ele oscila, trocando de valor a cada atraso de propagação da porta. Essa é a base do oscilador em anel, usado para gerar sinais de relógio e para medir a velocidade de um processo de fabricação — mas é inútil como memória. O Logisim, ao detectar essa situação, interrompe a simulação e acusa oscilação.

(b) Dois inversores realimentados — o laço se sustenta. Agora a equação do laço é Q = Q = Q, que é verdadeira tanto para Q = 0 quanto para Q = 1. As duas configurações são estados estáveis: uma vez em um deles, o circuito permanece indefinidamente, porque cada porta confirma o valor da outra.

Isso é memória. É a célula biestável — e é, essencialmente, o núcleo de toda RAM estática. Falta apenas uma coisa: não há como escolher em qual dos dois estados o circuito vai ficar. Ligada a alimentação, ele cai em um deles por acaso, e ali fica. Um circuito que guarda um bit que ninguém pode escrever não serve para nada.

A saída para o impasse. Trocar os dois inversores por duas portas de duas entradas — NAND ou NOR — preserva o comportamento biestável (cada porta continua invertendo o sinal que recebe da outra) e, de quebra, deixa uma entrada livre em cada porta. Essas entradas livres são o comando: por elas se escreve o bit. É exatamente o circuito da Seção 2, e é o flip-flop RS.

O padrão que se repete

Guarde a sequência, porque ela reaparece na disciplina inteira: um caminho de realimentação cria estado; o número de inversões nesse caminho decide se o resultado é oscilação ou memória; entradas adicionais nas portas do laço tornam esse estado controlável.

1.4 O que a realimentação custa

Ganhar memória não sai de graça. Fechar o ciclo muda a natureza do circuito de três maneiras, e cada uma delas gera um problema que o restante desta aula vai resolver:

O que mudaConsequência prática
A saída passa a depender também de si mesmaA tabela-verdade ganha uma coluna: já não basta listar as entradas, é preciso listar também o estado anterior (Qa). Com n entradas, são 2ⁿ⁺¹ linhas.
Passam a existir configurações que não se sustentamA análise deixa de ser puramente algébrica. Cada linha precisa ser classificada como estável ou instável, e uma linha instável evolui sozinha até parar em outra.
O resultado pode depender da ordem e da velocidadeSe duas entradas mudam "ao mesmo tempo", o estado final pode depender de qual porta comutar primeiro — algo que varia com temperatura e fabricação. É a condição de corrida (race condition), e é a raiz do caso proibido da Seção 2.3.

A engenharia digital lida com esses três problemas com uma única decisão de projeto: sincronizar tudo por um sinal de clock. Em vez de deixar o circuito reagir a qualquer mudança a qualquer instante, concentra-se toda a mudança de estado em um momento definido, comum a todas as células. É o que veremos na Seção 3, e é por isso que praticamente todo circuito digital moderno é síncrono.

1.5 O quadro geral

Dois diagramas de bloco lado a lado. À esquerda, um bloco rotulado Circuito combinacional com uma seta de entradas à esquerda e uma seta de saídas à direita. À direita, um bloco rotulado Circuito sequencial com as mesmas setas, mais uma seta de clock vindo de cima e uma linha âmbar que sai da saída, contorna o bloco por baixo e retorna à entrada, rotulada realimentação (estado)
A realimentação é a única diferença estrutural — e é ela que cria a noção de estado.

A Figura 2 resume o contraste. Repare que o bloco sequencial tem duas adições em relação ao combinacional: o caminho de realimentação, que cria o estado, e a entrada de clock, que decide quando esse estado pode mudar. A primeira é o que torna a memória possível; a segunda é o que a torna utilizável.

CombinacionalSequencial
Saída depende deentradas atuaisentradas atuais e estado anterior
Estruturagrafo acíclicotem ao menos um ciclo
Descrição completatabela-verdadetabela de transição de estados
Precisa de clocknãoem geral sim (os síncronos)
Exemplossomador, decodificador, multiplexadorflip-flop, registrador, contador, memória
Notação usada nesta aula

Seguindo o livro-texto, escrevemos Qa para o estado da saída antes da aplicação das entradas (estado anterior) e Qf para o estado que a saída assume depois (estado futuro). A saída complementar é sempre indicada por Q.

Na literatura em inglês, os mesmos valores aparecem como Q(t) e Q(t+1), ou Q e Q⁺.

1.6 Os dois estados

Um flip-flop tem duas saídas, Q e Q, e — em operação normal — elas são sempre complementares. Só existem, portanto, dois estados possíveis:

  • Q = 0 e Q = 1
  • Q = 1 e Q = 0

Um flip-flop armazena, assim, exatamente um bit. Todo o resto — registradores, memórias, contadores — é replicação e interligação dessa célula.


2. Flip-flop RS básico

Retomando o ponto em que a Seção 1.3 parou: o anel de dois inversores guarda um bit mas não permite escrevê-lo. Substituindo os inversores por portas de duas entradas, cada porta continua invertendo o sinal que recebe da outra — a biestabilidade se mantém — e sobra uma entrada livre em cada uma. São essas duas entradas livres que dão o comando.

Existem duas realizações usuais desse mesmo circuito. Começamos pela do livro-texto, com NAND, e vemos a versão com NOR na Seção 2.4.

2.1 O laço com portas NAND

A construção usa duas portas NAND realimentadas, precedidas de inversores nas entradas. A saída de cada porta alimenta uma entrada da outra: é o laço de realimentação que sustenta o estado; os inversores servem apenas para que S e R fiquem ativas em nível 1.

Esquema com duas portas NAND, uma acima da outra. As entradas S e R passam cada uma por um inversor antes de chegar à entrada externa da NAND correspondente. A saída da NAND de cima é Q e a de baixo é Q barrado. Duas linhas âmbar cruzam o vão central: a saída Q vai à entrada interna da NAND de baixo e a saída Q barrado vai à entrada interna da NAND de cima
Cada porta enxerga a saída da outra: é isso que faz o circuito se lembrar do que produziu.

O nome das entradas vem da função de cada uma:

  • S (Set), quando acionada em nível 1, leva a saída para 1 — estabelece o bit.
  • R (Reset), quando acionada em nível 1, leva a saída para 0 — zera o flip-flop.

2.2 Análise caso a caso

Como a saída futura depende também da saída anterior, a tabela-verdade precisa de três colunas de entrada: S, R e Qa. São oito casos.

SRQaQfQfComportamento
00001estado estável — mantém
00110estado estável — mantém
01001fixa Qf em 0
01101fixa Qf em 0
10010fixa Qf em 1
10110fixa Qf em 1
11011não permitido
11111não permitido

Eliminando a redundância, chega-se à tabela que se usa na prática:

SRQf
00Qa (mantém)
010
101
11não permitido

2.3 Por que S = R = 1 é proibido

O motivo é direto: com as duas entradas ativas, o circuito é forçado a colocar o mesmo valor nas duas saídas — Q = Q. Isso contradiz a própria definição do dispositivo, cujas saídas devem ser complementares.

Pior do que isso é o que acontece depois. Ao retirar simultaneamente as duas entradas (voltando a S = R = 0), as duas portas disputam a estabilização, e o estado final depende de qual delas comutar primeiro — ou seja, de diferenças de fabricação e de temperatura. O resultado é imprevisível, e é por isso que a combinação não é apenas "estranha": ela é inutilizável em projeto.

Atenção ao valor da saída no caso proibido

No laço com NAND (Figura 3), as duas entradas ativas forçam Q = Q = 1. No laço com NOR da próxima seção, forçam Q = Q = 0. O valor difere; o que não difere é a conclusão: a combinação não é permitida em nenhuma das duas construções.

2.4 A construção com portas NOR

O mesmo flip-flop pode ser montado com duas portas NOR, e nesse caso os inversores de entrada são dispensáveis. Repare que os papéis se invertem em relação à posição no desenho: a entrada da porta de cima é o Reset, e a da porta de baixo é o Set.

Esquema com duas portas NOR, uma acima da outra. A entrada R chega diretamente à entrada externa da NOR de cima, cuja saída é Q; a entrada S chega à NOR de baixo, cuja saída é Q barrado. Duas linhas âmbar cruzam o vão central levando cada saída à entrada interna da porta oposta
Mesma função da Figura 3 com duas portas a menos — e com o caso proibido levando ambas as saídas a 0.

O raciocínio de análise é sempre o mesmo, e vale a pena internalizá-lo: um nível 1 em uma entrada de porta NOR força a saída daquela porta a 0, independentemente da outra entrada. A partir daí, o valor 0 propaga-se pelo elo de realimentação e determina a outra saída.


3. Flip-flop RS com entrada de clock

O RS básico muda de estado no instante exato em que as entradas mudam. Em um sistema com milhares de células, isso é ingovernável: cada uma comutaria em um momento diferente, e o circuito nunca teria um estado consistente.

A solução é condicionar a atuação das entradas a um sinal de comando. Basta substituir os inversores por portas NAND e injetar o clock na segunda entrada de cada uma.

À esquerda, o circuito: duas portas NAND de entrada recebem, cada uma, um dos sinais S ou R e o sinal de clock, e suas saídas alimentam um laço cruzado de duas outras NAND que produz Q e Q barrado. À direita, o bloco representativo: um retângulo com as entradas S, CK e R à esquerda e as saídas Q e Q barrado à direita, com um triângulo marcando a entrada de clock
Com o clock em 0 o laço fica isolado das entradas; o estado só pode mudar com o clock em 1.

O comportamento resume-se a duas situações:

CKComportamento
0as saídas das portas de entrada são sempre 1: o estado fica travado
1o circuito funciona como um RS básico

No bloco representativo (parte b da Figura 5), o triângulo na entrada de clock é a notação padrão para "entrada dinâmica", isto é, controlada pelo clock. Ela reaparece em todos os blocos daqui em diante.

Ainda não resolvemos o problema principal

A entrada de clock dá controle sobre quando a mudança acontece, mas não elimina a combinação proibida: com CK = 1 e S = R = 1, a indeterminação continua exatamente onde estava. Quem resolve isso é o flip-flop da próxima seção.


4. Flip-flop JK mestre-escravo

4.1 A ideia

O flip-flop JK mestre-escravo (JK master-slave) faz duas coisas ao mesmo tempo:

  1. Realimenta as saídas para as entradas. A entrada J só tem efeito quando Q = 1 (isto é, quando Q = 0), e a entrada K só tem efeito quando Q = 1. Em termos do RS interno: S = J·Q e R = K·Q. Como Q e Q nunca valem 1 ao mesmo tempo, S e R nunca chegam a 1 simultaneamente — a combinação proibida deixa de ser alcançável.
  2. Encadeia duas células RS com clocks complementares. A primeira, o mestre, lê as entradas; a segunda, o escravo, entrega o resultado à saída. Como uma trabalha com CK e a outra com CK, elas nunca estão abertas ao mesmo tempo.

A Figura 6 mostra as duas ideias em um único diagrama.

Diagrama de blocos: as entradas J e K passam por duas portas AND cujas saídas, rotuladas S igual a J vezes Q barrado e R igual a K vezes Q, alimentam um bloco Mestre (célula RS). As saídas Q1 e Q1 barrado do mestre alimentam um bloco Escravo (célula RS), que produz Q e Q barrado. O clock entra direto no mestre e, através de um inversor, no escravo. Duas linhas âmbar levam Q e Q barrado de volta às portas AND de entrada
As duas invenções do JK: a realimentação, que elimina o caso proibido, e o par mestre-escravo, que separa a leitura da entrada da atualização da saída.

4.2 Como o par mestre-escravo se comporta no tempo

  • Enquanto o clock está em 1, o mestre acompanha J e K, mas o escravo está bloqueado — a saída não se move.
  • Na descida do clock (transição de 1 para 0), o mestre trava o valor que capturou e o escravo, agora liberado, copia esse valor para a saída.
  • Enquanto o clock permanece em 0, J e K podem variar à vontade: as saídas internas do mestre estão fixas e a saída não muda.

O efeito líquido é que a saída muda uma única vez por pulso, na descida do clock. Diz-se que o circuito é sensível à descida.

4.3 A tabela-verdade do JK

JKQfComportamento
00Qamantém o estado
010zera (reset)
101estabelece (set)
11Qainverte o estado

As três primeiras linhas reproduzem o RS. A quarta é a novidade: no lugar da combinação proibida, o JK oferece uma operação útil — a inversão do estado. É ela que torna o JK a célula básica dos contadores.

4.4 Sensibilidade à borda

Colocando um inversor na entrada de clock, obtém-se um circuito que atua na subida em vez da descida. A distinção aparece no símbolo, como mostra a Figura 7:

Dois blocos de flip-flop JK lado a lado. Ambos têm as entradas J e K à esquerda, as saídas Q e Q barrado à direita e um triângulo na entrada de clock. O bloco (a), sensível à descida, tem um pequeno círculo entre o fio de CK e o triângulo; o bloco (b), sensível à subida, não tem o círculo
O círculo na entrada de clock é o que distingue os dois: com ele, a borda ativa é a de descida.

O cronograma da Figura 8 mostra o efeito na prática. Repare que J e K mudam várias vezes ao longo do tempo, mas Q só se move nas linhas tracejadas — as descidas do clock.

Cronograma com quatro formas de onda empilhadas: CK, J, K e Q, em função do tempo. Linhas verticais tracejadas em âmbar marcam as cinco descidas do clock. Sob cada uma há a anotação do par JK naquele instante e o efeito sobre Q: JK igual a 10 leva Q a 1, JK igual a 01 leva Q a 0, JK igual a 11 inverte duas vezes e JK igual a 00 mantém
A saída ignora tudo o que acontece entre as bordas: é o que torna o circuito sincronizável.
Aprofundamento — mestre-escravo e flip-flops modernos

A estrutura mestre-escravo tem uma limitação conhecida como ones catching: se um pulso curto aparecer em J enquanto o clock está em 1, o mestre o captura e o repassa na descida, mesmo que J já tenha voltado a 0. O circuito é sensível ao nível do clock durante a janela em que está alto, não apenas à borda.

Por isso, os circuitos integrados modernos usam flip-flops disparados por borda (edge-triggered), tipicamente do tipo D, em que a captura ocorre em uma janela muito estreita em torno da transição. O modelo mestre-escravo continua sendo o melhor caminho didático — ele torna visível a separação entre "ler a entrada" e "atualizar a saída" —, mas não é o que está dentro de um registrador atual.


5. Entradas assíncronas: Preset e Clear

Além das entradas de dados, o JK dispõe de duas entradas que agem diretamente sobre o laço, sem passar pelo clock:

  • Preset (PR) — força a saída para Q = 1.
  • Clear (CLR), também chamada de Reset — força a saída para Q = 0.

Nos circuitos integrados usuais, ambas são ativas em nível 0, o que se indica pelo círculo no símbolo (Figura 9) e pela barra sobre o nome.

Bloco de flip-flop JK com as entradas J e K à esquerda, a entrada de clock com triângulo e círculo, as saídas Q e Q barrado à direita, a entrada PR no topo e a entrada CLR na base, ambas com um pequeno círculo indicando atividade em nível zero. Ao lado, as anotações PR barrado igual a zero implica Q igual a 1 e CLR barrado igual a zero implica Q igual a zero
As duas entradas assíncronas passam por cima do clock e das entradas J e K.
CLRPRQf
00não permitido
010
101
11funcionamento normal (comandado por J, K e clock)

Note que a linha proibida reaparece aqui, e pelo mesmo motivo de sempre: pedir simultaneamente Q = 0 e Q = 1 é pedir o impossível.

Assíncrono quer dizer assíncrono

Este é o ponto que mais gera erro em prova: PR e CLR não esperam o clock. Se CLR estiver em 0, a saída vai a 0 e permanece lá, não importa o que J, K e o clock estejam fazendo. Ao resolver exercícios, verifique primeiro as entradas assíncronas; só se as duas estiverem em 1 é que se olha para a borda do clock.


6. Flip-flop T

O flip-flop T é obtido a partir de um JK mestre-escravo com as entradas J e K curto-circuitadas — ligadas uma à outra. Se J vale 1, K também vale 1; se J vale 0, K também vale 0. Restam, portanto, apenas duas das quatro linhas da tabela do JK.

À esquerda, um bloco JK com Preset e Clear em que as entradas J e K estão ligadas entre si por um fio vertical e recebem o mesmo sinal, chamado T. À direita, após um símbolo de implicação, o bloco equivalente com uma única entrada rotulada T, além da entrada de clock e das saídas Q e Q barrado
Amarrar J a K reduz o JK a duas operações: manter e inverter.
TQf
0Qa (mantém)
1Qa (inverte)

A sigla vem de Toggle, comutar. Como com T = 1 a saída se inverte a cada descida de clock, um flip-flop T sozinho já é um divisor de frequência por 2 — e é por isso que ele é a célula principal dos contadores assíncronos.

O T não existe como componente

O flip-flop T não é encontrado na série de circuitos integrados comerciais. Na prática ele é montado a partir de um JK mestre-escravo com a ligação mostrada na Figura 10.


7. Flip-flop D

O flip-flop D é obtido a partir de um JK mestre-escravo com a entrada K invertida em relação a J: como mostra a Figura 11, um inversor entre as duas garante que K = J. Desaparecem os casos J = K = 0 e J = K = 1, e restam apenas as duas linhas que gravam um valor.

À esquerda, um bloco JK com Preset e Clear em que o sinal D entra diretamente em J e, por meio de um inversor, na entrada K. À direita, após um símbolo de implicação, o bloco equivalente com uma única entrada rotulada D, além da entrada de clock e das saídas Q e Q barrado
Com K sempre complementar a J, o flip-flop deixa de escolher e passa a simplesmente copiar.
DQf
00
11

A sigla vem de Data, dado. O comportamento é o mais simples de todos — a saída assume o valor presente na entrada D no instante da borda ativa —, e é justamente essa simplicidade que o torna o flip-flop mais usado na prática: é a célula dos registradores de deslocamento, dos registradores de uso geral da CPU e das memórias construídas com portas lógicas.


8. Quadro comparativo

TipoEntradas de dadosEquação característicaCaso a evitarOnde é usado
RSS, RQf = S + R·QaS = R = 1célula elementar; base dos demais
JKJ, KQf = J·Qa + K·Qacontadores síncronos
TTQf = T ⊕ Qacontadores assíncronos, divisores de frequência
DDQf = Dregistradores, memórias

A equação característica exprime a saída futura como função booleana das entradas e da saída anterior. Vale conferir cada uma contra a tabela correspondente — por exemplo, no JK com J = K = 1: Qf = 1·Qa + 0·Qa = Qa, que é a inversão prevista.

9. Para onde isso vai

Os quatro dispositivos desta aula não são alternativas concorrentes: são especializações sucessivas do mesmo laço de realimentação, cada uma trocando generalidade por segurança de uso.

  • O RS mostra o princípio, mas tem um caso inutilizável.
  • O JK elimina esse caso e transforma-o em uma operação útil.
  • O T e o D restringem o JK a um subconjunto seguro, cada um otimizado para um papel: contar e armazenar.

Na unidade de subsistema de memória, o flip-flop D reaparece agrupado em registradores e como célula de RAM estática. Na unidade de CPU, ele é o que sustenta o contador de programa, o registrador de instrução e os flags. Guarde a distinção entre entradas síncronas e assíncronas: ela volta na forma dos sinais de reset do processador.


Exercícios (checkpoints)

Verificação rápida

Quiz10 questões

1. O que distingue um circuito sequencial de um circuito combinacional?

  • a)O circuito sequencial usa mais portas lógicas
  • b)O circuito sequencial tem realimentação, e por isso a saída depende também dos estados anteriores
  • c)O circuito combinacional não pode ter mais de uma saída
  • d)O circuito sequencial só funciona com portas NAND e NOR
  • e)O circuito combinacional não pode ser simulado no Logisim

2. Fechando um laço de realimentação com um número ÍMPAR de inversões (por exemplo, um único inversor com a saída ligada à entrada), o que acontece?

  • a)O circuito armazena um bit, como um flip-flop
  • b)O circuito oscila: nenhum valor se sustenta, e a saída troca a cada atraso de propagação
  • c)A saída fica permanentemente em 1
  • d)A saída fica permanentemente em 0
  • e)O circuito se comporta como um circuito combinacional comum

3. Um anel de dois inversores é biestável e guarda um bit. Por que, ainda assim, ele não serve como célula de memória utilizável?

  • a)Porque consome energia demais
  • b)Porque o bit armazenado se perde depois de alguns milissegundos
  • c)Porque não há nenhuma entrada por onde escrever: o estado inicial é definido por acaso e não pode ser alterado
  • d)Porque as duas saídas não são complementares
  • e)Porque ele precisa de um sinal de clock para funcionar

4. Em um flip-flop RS básico construído com portas NOR, o que acontece quando S = R = 1?

  • a)O flip-flop mantém o estado anterior
  • b)O flip-flop inverte o estado anterior
  • c)As duas saídas vão a 0, violando a complementaridade entre Q e Q
  • d)As duas saídas vão a 1, violando a complementaridade entre Q e Q
  • e)O circuito oscila indefinidamente enquanto as entradas estiverem em 1

5. Qual é a função da entrada de clock em um flip-flop RS com clock?

  • a)Definir o valor que será armazenado na saída
  • b)Controlar quando as entradas S e R podem atuar sobre o laço
  • c)Eliminar a combinação proibida S = R = 1
  • d)Inverter a saída a cada pulso
  • e)Zerar o flip-flop no início da operação

6. Por que a combinação J = K = 1 é permitida no flip-flop JK, enquanto S = R = 1 não é no RS?

  • a)Porque o JK tem mais portas lógicas e suporta correntes maiores
  • b)Porque no JK a saída é realimentada às entradas, de modo que S = J·Q e R = K·Q nunca valem 1 ao mesmo tempo
  • c)Porque o JK ignora a entrada K quando J está em 1
  • d)Porque o clock do JK é mais lento
  • e)Porque o JK só aceita uma entrada ativa por vez, por construção elétrica

7. Um JK mestre-escravo sensível à descida está com CK = 1, J = 1, K = 0 e Qa = 0. Qual é o valor de Q neste instante?

  • a)Q = 1, porque J = 1 estabelece a saída imediatamente
  • b)Q = 0, porque o escravo só copia o valor do mestre na descida do clock
  • c)Q é indeterminado enquanto o clock estiver em 1
  • d)Q = 1 apenas se o Preset também estiver ativo
  • e)Q oscila entre 0 e 1 enquanto o clock estiver em 1

8. Um flip-flop JK está com CLR = 0, PR = 1, J = 1, K = 1 e recebe uma descida de clock. Qual é o valor de Qf?

  • a)Qf = Qa, porque J = K = 1 inverte o estado
  • b)Qf = 0, porque a entrada Clear é assíncrona e prevalece sobre o clock
  • c)Qf = 1, porque o Preset está em 1
  • d)A situação não é permitida
  • e)Qf mantém o valor anterior, porque as entradas assíncronas bloqueiam o clock

9. Por que o flip-flop T é usado como célula de contadores assíncronos?

  • a)Porque ele armazena dois bits em vez de um
  • b)Porque com T = 1 ele inverte a saída a cada borda ativa, funcionando como divisor de frequência por 2
  • c)Porque ele é o único que possui entradas Preset e Clear
  • d)Porque ele não precisa de sinal de clock
  • e)Porque ele é o mais rápido dos quatro tipos

10. Qual característica torna o flip-flop D a escolha natural para registradores?

  • a)Ele mantém o valor anterior quando D = 0
  • b)Ele inverte o valor armazenado a cada pulso, permitindo contar
  • c)A saída assume, na borda ativa, exatamente o valor presente na entrada D
  • d)Ele dispensa a entrada de clock
  • e)Ele possui duas entradas de dados independentes

Questões dissertativas

Q1

Explique, com suas palavras, por que um circuito construído apenas com portas lógicas sem realimentação não consegue armazenar informação.

Q2Difícil

No flip-flop RS básico, a combinação S = R = 1 é descrita como 'não permitida' e não apenas como 'inútil'. Justifique a diferença, explicando o que acontece quando as duas entradas voltam a 0 simultaneamente.

Q3

Descreva o que acontece dentro de um flip-flop JK mestre-escravo durante um ciclo completo de clock (subida, nível alto, descida, nível baixo), indicando em qual momento a saída Q pode mudar.

Q4

Explique por que o flip-flop T não é fabricado como circuito integrado próprio e como ele é obtido na prática. Em seguida, explique por que ele funciona como divisor de frequência por 2.

A tabela a seguir descreve oito situações aplicadas a um flip-flop JK mestre-escravo sensível à descida, com Preset e Clear ativos em nível 0. Copie-a e complete a coluna Qf antes de revelar o gabarito da Questão 5.

#ClockJKPRCLRQaQf
11 → 000111
21 → 001111
3111101
4010010
51 → 010110
61 → 001111
70 → 101101
80 → 111011
Q5

Determine o valor de Qf em cada linha da tabela acima, justificando as três primeiras.

Q6

Mostre que a equação característica do flip-flop JK, Qf = J·Qa + K·Qa, reproduz as quatro linhas da tabela-verdade do dispositivo.

Q7Difícil

Um colega afirma que, para zerar todos os registradores de uma máquina no momento em que ela é ligada, basta colocar 0 nas entradas D de todos os flip-flops. Avalie a afirmação e proponha a solução correta.

Atividades práticas no Logisim-Evolution

Ambiente sugerido: Logisim-Evolution, o fork mantido do Logisim clássico. Os arquivos desta aula declaram as bibliotecas na ordem do Logisim-Evolution e não abrem no Logisim 2.7.1 original.

Baixar o Logisim-Evolution

Versão de referência: 4.1.0 (fevereiro de 2026).

Como instalarArquivo
Multiplataforma — arquivo único, exige Java 21 ou superior já instaladologisim-evolution-4.1.0-all.jar (51 MB)
Windows — instalador, já traz o Java embutido.msi amd64 · .msi aarch64
macOS — instalador, já traz o Java embutido.dmg Apple Silicon · .dmg Intel
Linux — pacote da distribuição.deb amd64 · .rpm x86_64

O .jar roda com duplo clique ou por java -jar logisim-evolution-4.1.0-all.jar. Se java -version não responder no seu terminal, instale antes uma distribuição do OpenJDK 21 — ou prefira o instalador do seu sistema, que já vem com o Java embutido e dispensa essa etapa.

Versões mais novas ficam na página de versões do projeto; o código-fonte e o manual, no repositório oficial.

Os quatro primeiros circuitos estão prontos; os três últimos você monta, a partir de componentes que já vêm na ferramenta. Cada atividade termina em algo que você deve conseguir observar na tela — se não observar, o roteiro diz o que verificar.

Arquivos de apoio

ArquivoAtividadeO que contém
01-realimentacao-oscilador.circ1Um inversor com a saída ligada à própria entrada
02-realimentacao-biestavel.circ2Dois inversores em anel
03-latch-rs-nor.circ3 e 4Laço RS com duas portas NOR, entradas S e R, saídas Q e nQ
04-latch-rs-com-clock.circ5RS com duas NAND de entrada comandadas por um componente Clock

Nos arquivos, a saída complementar aparece como nQ: o Logisim aceita apenas letras, dígitos e sublinhado nos rótulos, então não há como escrever Q.

Três teclas que resolvem quase tudo

Ctrl+K liga e desliga os ticks do relógio; Ctrl+T avança um tick (é o modo mais útil para estudar borda de clock, porque você vê cada transição separadamente); a ferramenta dedo (a primeira da barra) é a que muda o valor de um pino de entrada — com a seta você move componentes, não os aciona.

Atividade 1 — Realimentação com uma inversão

Abra 01-realimentacao-oscilador.circ. O circuito é apenas um inversor com a saída ligada de volta à entrada.

  1. Observe o fio de realimentação e escreva, antes de simular, qual valor você espera em Q.
  2. Ligue a simulação.

O que observar: o Logisim não consegue estabilizar o circuito e interrompe a simulação acusando oscilação. É a tradução, no simulador, da equação Q = Q não ter solução. Reabra o arquivo para limpar o estado de erro.

Se nada acontecer: confirme que a simulação está habilitada em Simular → Simulação habilitada.

Atividade 2 — Realimentação com duas inversões

Abra 02-realimentacao-biestavel.circ, com dois inversores em anel.

  1. Ligue a simulação e anote o valor de Q.
  2. Feche e reabra o arquivo algumas vezes, anotando Q a cada vez.

O que observar: agora não há oscilação — o circuito estabiliza. Este é o comportamento biestável da Seção 1.3: o laço se sustenta em 0 ou em 1, e você não tem nenhum meio de escolher qual. É exatamente essa falta de controle que as portas de duas entradas do flip-flop RS resolvem.

Atividade 3 — O laço RS com portas NOR

Abra 03-latch-rs-nor.circ. Compare o desenho com a Figura 4 antes de simular: são o mesmo circuito.

  1. Com a ferramenta dedo, aplique S = 1, R = 0 e observe Q e nQ. Volte S a 0.
  2. Aplique S = 0, R = 1, observe, e volte R a 0.
  3. Deixe as duas entradas em 0 e observe.
  4. Repita algumas vezes, alternando a ordem, e preencha mentalmente a tabela resumida da Seção 2.2.

O que observar: com 00 a saída permanece no valor deixado pela combinação anterior. É o armazenamento acontecendo diante dos seus olhos — e é a diferença que a Seção 1.1 anunciou: o circuito passou a ter passado.

Se as saídas não mudarem: verifique se você está usando a ferramenta dedo e não a seta.

Atividade 4 — O caso proibido, na prática

No mesmo arquivo da atividade anterior:

  1. Aplique S = R = 1 e observe as duas saídas ao mesmo tempo.
  2. Volte as duas a 0. Repita o procedimento cinco ou seis vezes, anotando o valor final de Q em cada tentativa.

O que observar: com as duas entradas ativas, Q = nQ = 0 — as saídas deixam de ser complementares, e o dispositivo já não representa um bit. Na saída da condição, o simulador precisa arbitrar qual porta vence; em silício, quem arbitra é a diferença de atraso de propagação entre as duas portas, que varia com fabricação e temperatura.

Ponto de reflexão: o Logisim é determinístico e tende a dar sempre o mesmo resultado. Isso é uma limitação do simulador, não uma propriedade do circuito: um modelo com atrasos realistas mostraria resultados diferentes a cada execução. É por isso que a combinação é proibida por regra de projeto, e não apenas desaconselhada.

Atividade 5 — A entrada de clock

Abra 04-latch-rs-com-clock.circ. Duas portas NAND de entrada combinam S e R com o clock antes de chegarem ao laço.

  1. Desligue os ticks automáticos (Ctrl+K, se estiverem ligados) e deixe o clock em 0 — clique nele com a ferramenta dedo até que fique em nível baixo.
  2. Com o clock em 0, varie S e R à vontade. Observe as saídas.
  3. Coloque o clock em 1 e repita as mesmas variações.

O que observar: com o clock em 0, nenhuma mudança em S ou R afeta a saída: o estado fica travado. Com o clock em 1, o circuito volta a se comportar como o RS da Atividade 3, caso proibido incluído. O clock controla quando, não o quê.

Atividade 6 — O flip-flop JK e a borda de clock

Esta você monta. Em um arquivo novo:

  1. Arraste um J-K Flip-Flop da biblioteca Memory e um Clock da biblioteca Wiring.
  2. Ligue o Clock à entrada de clock do flip-flop e ligue J e K a pinos de entrada; ligue Q a um pino de saída.
  3. Use Ctrl+T para avançar um tick de cada vez, testando as quatro combinações de J e K.

O que observar: a saída muda uma vez por pulso, na borda ativa — não no instante em que você altera J ou K. Com J = K = 1, ela inverte a cada pulso, que é a linha do JK que o RS não tinha.

Atividade 7 — Divisor de frequência e contador

Continuando o arquivo da Atividade 6:

  1. Fixe J = K = 1 (o equivalente a T = 1) usando dois componentes Constant em 1.
  2. Acrescente um segundo flip-flop e use a saída Q do primeiro como clock do segundo.
  3. Ligue os ticks automáticos (Ctrl+K) e observe as duas saídas.

O que observar: Q do primeiro tem metade da frequência do clock, e Q do segundo, um quarto. Lendo as duas saídas em paralelo, com o segundo como bit mais significativo, você tem um contador de 0 a 3 — um contador assíncrono de 2 bits, construído sem nenhuma lógica adicional.

Atividade 8 — As entradas assíncronas

Ainda no mesmo arquivo:

  1. Ligue as entradas de preset e clear do primeiro flip-flop a pinos de entrada.
  2. Com os ticks rodando e J = K = 1 (saída invertendo a cada pulso), acione o clear.

O que observar: a saída vai a 0 imediatamente, sem esperar a próxima borda, e fica travada em 0 enquanto o sinal estiver ativo — mesmo com o clock rodando e J = K = 1. É a demonstração literal do que "assíncrono" significa.

Se o comportamento não bater com o esperado

Confira a polaridade das entradas assíncronas do componente que você está usando: nos circuitos integrados reais elas são ativas em 0, e nem toda biblioteca de simulador segue essa convenção. Verificar isso antes de concluir que o circuito está errado economiza bastante tempo.


Referências

Principais (essenciais)

  • CAPUANO, Francisco Gabriel. Sistemas digitais: circuitos combinacionais e sequenciais. São Paulo: Érica, 2014. (Série Eixos). Número de chamada: Ac.5012157

    • Capítulo 4 — Circuitos Sequenciais, seções 4.1 e 4.2 (texto de referência desta aula)
  • SILVA, Gabriel Pereira da. Arquitetura e organização de computadores: uma introdução. Rio de Janeiro: LTC, 2024. Recurso online — Acervo Virtual. Número de chamada: Ac.5063593

    • Elementos de armazenamento e o subsistema de memória

Aprofundamento (opcionais)

  • TOCCI, Ronald J.; WIDMER, Neal S.; MOSS, Gregory L. Sistemas digitais: princípios e aplicações. São Paulo: Pearson. Número de chamada: Ac.131146

    • Tratamento detalhado de latches, flip-flops disparados por borda e parâmetros de temporização (setup e hold)
  • DELGADO, José. Arquitetura de computadores. Rio de Janeiro: LTC, 2017. Recurso online — Acervo Virtual. Número de chamada: Ac.5013563

  • WEBER, Raul Fernando. Fundamentos de arquitetura de computadores. Porto Alegre: Bookman, 2012. Número de chamada: 004.2 W375fuf 4.ed.-2012 Ac.113940

Pré-requisito