29 / 63 · Concetto
Numero di stati, larghezza del contatore e codici inutilizzati
Ricavare la larghezza dal campo di conteggio e definire il recupero degli stati invalidi.
Le lezioni sono gratuite. Iscriviti per salvare i progressi.
Anche un contatore è una macchina a stati
Un contatore ciclico da 0 a 9 richiede dieci stati e almeno bit. Un registroRegistro Memorizza uno stato di più bit. I registri sincroni del corso acquisiscono gli ingressi specificati al fronte di clock. Approfondisci a quattro bit offre però 16 configurazioni: la larghezza corretta non realizza da sola il modulo 10.
M è il numero di stati, non il massimo. Contare da 0 a M−1 differisce da 0 a M. Se si supporta M=1, imponete almeno un bit e mantenete sempre 0.
Quattro bit offrono 16 codici, ma il modulo 10 usa solo dieci stati normali. Alla scelta della larghezza vanno aggiunti confronto e politica di recupero.
- 10 stati: count regolare: da 0 a 9
- Memoria a 4 bit: 16 codici, da 10 a 15 inutilizzati
- Stato successivo: 0 se en=1 e count≥9
Anche gli stati fuori campo fanno parte del progetto
Se per qualche motivo il contatore modulo 10 a quattro bit diventa 12, cosa accade dopo? Si possono dimostrare condizioni di inizializzazione e resetReset Controllo che riporta allo stato iniziale specificato. Occorre definirne sincronicità e priorità rispetto agli altri controlli. Approfondisci che lo escludano, oppure prevedere il ritorno a 0 da valori almeno 9. Il recupero non garantisce tolleranza a qualsiasi guasto hardware.
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
endL'esempio recupera anche i valori 10–15 al fronte con en=1. Con enable=0 mantiene anche quelli; se serve recupero immediato bisogna cambiare la priorità delle condizioni.
Larghezza e funzione si verificano separatamente
Dieci bit bastano per 0–999, ma l'incremento libero arriva a 1023. Servono confronto e selezione per tornare a 0 al massimo specificato. Nei contatori d'indirizzo, iterazioni e lunghezza dei pacchetti questa differenza produce direttamente accessi o lunghezze errati.
Prova tu
Qual è la larghezza minima di un contatore 0–99, quanti codici restano inutilizzati e cosa cambia usando solo +1?
Leggi la spiegazione
Cento stati richiedono sette bit; restano codici. Il semplice incremento supera 99 e arriva a 127: realizza modulo 128, non modulo 100.