(0.5) É possível construir um contador assíncrono com a sequência 0-1-3-0? Justifique sua resposta.

Passo 1

O que o enunciado pede: responder se é possível construir um contador assíncrono cuja sequência de contagem seja 0 \to 1 \to 3 \to 0 e justificar a resposta.
Informações relevantes dadas (e que eu deduzi do enunciado):
  • Os números estão em decimal, mas como é um contador binário óbvio que precisamos representá-los em bits. Vou usar 2 bits porque os máximos envolvidos são 0 e 3.
  • As codificações binárias são:
    \;0 \equiv 00,\; 1 \equiv 01,\; 3 \equiv 11.
  • O contador deve ser assíncrono (ripple): normalmente o bit menos significativo (LSB) recebe o clock externo e cada bit mais significativo é acionado pelo Q do bit imediatamente menos significativo.
  • A justificativa deve mostrar como realizar (ou por que não é possível) a sequência 00 \to 01 \to 11 \to 00.

Passo 2

Breve aula sobre o que usamos (flip‑flops T e clear assíncrono)
  • Flip‑flop T: se T=1, a cada borda de clock o estado sai de Q para \overline{Q} (ele “toggleia”); se T=0, Q não muda. Em prática de contador, colocamos T=1 para que o flip‑flop mude a cada pulso de clock (ou a cada pulso recebido no seu clock).
  • Clear (reset) assíncrono: é uma entrada que força Q=0 imediatamente, independente do clock. Muitas vezes é ativa‑baixa, denotada por \overline{CLR}: se \overline{CLR}=0 o FF vai a Q=0.
  • Em um contador assíncrono típico de 2 bits com dois FF T (chame-os de FF0 para LSB e FF1 para MSB): FF0 tem clock externo, FF1 tem clock ligado ao Q (ou \overline{Q}) de FF0 — é o “ripple”.

Passo 3

Tabela de estados desejada e a função de detecção
  • Estados (em binário de 2 bits):
    \;00 \to 01 \to 11 \to 00.
  • Queremos que, ao atingir 11, o contador vá imediatamente para 00. Isso sugere usar o reset assíncrono quando Q_1=1 e Q_0=1.
  • A condição lógica que detecta 11 é \;Q_1 \cdot Q_0.
  • Se o reset assíncrono for ativo‑baixo, a entrada \overline{CLR} deve ficar em nível baixo quando Q_1\cdot Q_0 = 1. Uma forma prática é usar uma porta NAND:
    \;\overline{CLR} = \overline{Q_1 \cdot Q_0}.
    Assim, quando Q_1=Q_0=1 temos \overline{CLR}=0 e ambos os FF são zerados.

Passo 4

Projeto do circuito (descrição passo a passo)
  • Use dois flip‑flops T (FF0 = LSB, FF1 = MSB) com T_0 = T_1 = 1 (sempre em modo toggle).
  • Conexões de clock (modo ripple): relógio externo vai para o clock de FF0; o clock de FF1 é conectado ao Q (ou à borda apropriada) de FF0 — assim FF1 “rippleia” quando FF0 muda.
  • Detecção de 11: faça uma porta NAND cujas entradas são Q_1 e Q_0 e cuja saída alimenta as entradas de clear assíncrono (ativa‑baixa) dos dois flip‑flops:
    \;\overline{CLR} = \overline{Q_1 Q_0}.
  • Com isso, sempre que a contagem alcançar 11, a NAND produz 0 e os dois FF são imediatamente colocados em 00.

Passo 5

Como a sequência acontece passo a passo (com o circuito acima)
  • Começando em 00: no próximo pulso do clock, FF0 toggleia para 1 → estado 01.
  • No pulso seguinte, FF0 toggleia novamente; por efeito ripple, a transição de FF0 provoca a possibilidade de FF1 togglear. Dependendo do instante, a combinação passa por 11 — no momento em que Q_1=1 e Q_0=1 a NAND detecta e coloca \overline{CLR}=0, forçando ambos os FFs para 00 assíncronamente.
  • Resultado observado na saída: 00 \to 01 \to 11 \xrightarrow{\text{clear assíncrono}} 00,í que é exatamente a sequência desejada 0\to1\to3\to0.

Passo 6

Observações práticas e cuidado com atrasos (por que ainda é válido)
  • Sim, a solução funciona e é exatamente o mesmo princípio utilizado em divisores/mod‑N assíncronos (por exemplo contadores década que detectam um estado terminal e fazem clear assíncrono).
  • Atenção: como o reset é assíncrono e a detecção passa pelo caminho das saídas, há considerações de temporização (propagações e possíveis pulsos muito curtos). Na prática, deve‑se garantir que a lógica de detecção e os tempos de propagação estejam corretos para evitar resets espúrios. Em aplicações críticas preferem projeto síncrono, mas isto não impede a implementação assíncrona pedida.
  • Em resumo: não existe impedimento lógico para obter essa sequência com um contador assíncrono de 2 bits usando reset assíncrono na condição Q_1=Q_0=1.

Passo 7

Resumo didático (por que a ideia é simples de lembrar na prova)
  • Pense: queremos pular o estado 10. Basta detectar o estado que queremos que seja seguido de zero ( 11) e forçar clear assíncrono para 00. Dois FF T com T=1 + detecção Q_1\cdot Q_0 + clear assíncrono = contador assíncrono com sequência 00\to01\to11\to00.

Resposta

Sim. Por exemplo, use dois flip‑flops T com T_0=T_1=1 em configuração ripple e conecte uma porta NAND de Q_1 e Q_0 à entrada de clear assíncrono (ativa‑baixa) de ambos, ou seja \overline{CLR}=\overline{Q_1Q_0}; assim a contagem será 00\to01\to11\to00 (isto é, 0\to1\to3\to0).

Exercícios relacionados