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.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
Defina primeiro a função de próximo estado
Um contador livre de bits com reset síncrono e enable obedece a:
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.
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.
| Borda | reset antes | C anterior | C atualizado |
|---|---|---|---|
| 1 | 1 | 3 | 0 |
| 2 | 0 | 0 | 1 |
| 3 | 0 | 1 | 2 |
| 4 | 0 | 2 | 3 |
| 5 | 0 | 3 | 0 |
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.
Ver os dados da forma de onda
| Sinal | Forma de onda | Valores do barramento |
|---|---|---|
| borda | 23452 | E0 → E1 → E2 → E3 → E4 |
| reset | 10... | |
| count antes | 23452 | 11 → 00 → 01 → 10 → 11 |
| count depois | 23452 | 00 → 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.