Altifigence Academy

30 / 63 · Conceito

Próximo estado do contador e prioridade do reset

Integre incremento, manutenção, reset e retorno modular em uma especificação e calcule cada borda.

Defina primeiro a função de próximo estado

Um contador livre de NN bits com reset síncrono e enable obedece a:

Ck+1={0rk=1(Ck+1) mod 2Nrk=0, ek=1Ckrk=0, ek=0C_{k+1}=\begin{cases} 0&r_k=1\\ (C_k+1)\bmod2^N&r_k=0,\ e_k=1\\ C_k&r_k=0,\ e_k=0 \end{cases}

ResetReset Controle que retorna o estado a um valor inicial especificado. É preciso definir se é síncrono ou assíncrono e sua prioridade em relação a outros controles. tem prioridade máxima; enable=0 mantém. Na visualização abaixo, você pode alterar enable para comparar o incremento e a manutenção do estado.

No controle, comece com q=11 e selecione reset=1: apenas o próximo estado passa para 00. Pressione o próximo clock para observar quando o armazenamento muda. Desative reset e percorra 00→01→10→11→00. Com enable=0, confira que as bordas avançam, mas q permanece.

Compare diretamente o estado antes e depois da borda de subida

O reset síncrono tem prioridade sobre enable. Com enable=0, o valor armazenado é mantido. q=11; q_next = (q + 1) mod 4

Prepare uma previsão por borda

Para dois bits, estado inicial 3, reset=1 na primeira borda e depois 0, os estados posteriores são 0,1,2,3,0. Ativar reset entre bordas não leva imediatamente a 0 um registradorRegistrador Circuito que armazena vários bits de estado. Os registradores síncronos deste curso capturam a entrada especificada na borda de clock. Saiba mais com reset síncrono; a atualização depende da borda de subidaBorda de subida Instante em que o clock passa de 0 para 1. É diferente do nível alto, que abrange todo o intervalo com CLK=1. Saiba mais.

Bordareset antesC anteriorC atualizado
1130
2001
3012
4023
5030

Cada coluna da onda registra uma borda. Entradas são anteriores e o estado «depois» é posterior à atualização. O alinhamento mostra a ordem das amostras, não atraso físico de propagaçãoAtraso de propagação Tempo entre uma mudança de entrada e a estabilização da saída no valor correto. Equivalência lógica e comportamento temporal são propriedades distintas. Saiba mais. Partindo de 3, o primeiro reset vence o incremento; a última borda retorna de 3 para 0.

Reset e retorno modular de um contador de dois bits
Ver os dados da forma de onda
Dados da forma de onda: cada caractere é um intervalo; um ponto mantém o estado anterior; p representa um ciclo de clock.
SinalForma de ondaValores do barramento
borda23452E0 → E1 → E2 → E3 → E4
reset10...
count antes2345211 → 00 → 01 → 10 → 11
count depois2345200 → 01 → 10 → 11 → 00

Não misture significados de reset

Um if(rst) dentro de always_ff @(posedge clk) é síncrono. Acrescentar uma borda de reset à lista de eventos o torna assíncrono e muda a função. Sua desativação tem requisitos como recovery/removal; não o mude apenas porque chega antes a 0.

Um contador que produz pulsos periódicos também deve especificar quando os ativa: enquanto o estado é máximo ou durante o ciclo após o retorno a 0. Mudam tanto a equação de saída quanto sua observação.

Experimente

Um contador de três bits está em 7. Na primeira borda rst=0, en=0; na próxima rst=0, en=1. Quais estados resultam?

Ler a explicação

Primeiro mantém 7; depois retorna a 0 pelo limite de três bits. Para manter 8, seria necessária maior largura ou uma política explícita de saturação ou erro.

Sua escolha vale neste navegador. Altere-a a qualquer momento no rodapé.