(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.
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).