29 / 63 · Conceito
Quantidade de estados, largura do contador e códigos não usados
Calcule bits de armazenamento a partir do intervalo e defina a recuperação de estados inválidos.
As aulas podem ser lidas gratuitamente. Inscreva-se para salvar o progresso.
Contar também é uma máquina de estados
Um contador 0–9 precisa de dez estados e pelo menos bits. 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 de quatro bits tem 16 padrões: escolher a largura correta não completa a função módulo 10.
M é a quantidade de estados, não o máximo. Contar de 0 a M−1 difere de contar até M. Se admitir M=1 como parâmetro, use pelo menos um bit e mantenha sempre 0.
Dos 16 códigos de quatro bits, módulo 10 usa dez como estados normais. Depois da largura, projete a comparação e a recuperação.
- Dez estados: count normal vai de 0 a 9
- Armazenamento de quatro bits: 16 códigos; 10–15 ficam livres
- Próximo estado: Se en=1 e count≥9, passe para 0
Estados fora do intervalo também são especificados
O que deve ocorrer se o contador módulo 10 chegar a 12? Demonstre as condições de inicialização e 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. Saiba mais que permitem pressupor que isso não ocorre, ou estabeleça recuperação para 0 a partir de 9 ou mais. Recuperação não significa tolerância a toda falha física.
always_ff @(posedge clk) begin
if (rst) count <= 4'd0;
else if (en) begin
if (count >= 4'd9) count <= 4'd0;
else count <= count + 4'd1;
end
endO exemplo também recupera 10–15, mas somente numa borda com en=1. Com enable=0, mantém até mesmo o valor inválido; recuperação imediata exigiria mudar a prioridade.
Revisar largura e revisar função são tarefas diferentes
Dez bits bastam para 0–999, mas um incremento livre chega a 1023. São necessárias comparação e seleção para voltar a 0 a partir do máximo especificado. Em contadores de endereços, iterações ou tamanhos de pacote, essa confusão causa acessos ou comprimentos incorretos.
Experimente
Calcule a largura mínima e os códigos não usados de um contador que repete 0–99. O que muda se apenas somar 1 com essa largura?
Ler a explicação
Há 100 estados: são necessários sete bits e restam códigos não usados. Incrementar sem outra lógica não volta a 0 em 99, mas chega a 127: resulta módulo 128, não módulo 100.