Contatori Saturanti
Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 17 di 38.
I fondamenti usavano un contatore con riavvolgimento. Un contatore saturante invece si arresta a un limite, il che è utile per i conteggi limitati. Aggiungi una condizione esplicita all’aggiornamento aritmetico e mantieni il comportamento di abilitazione e ripristino indipendente dal limite.
Estratto pertinente; le dichiarazioni e i collegamenti circostanti sono forniti nella sfida.
always @(posedge clk) begin
if(rst) count <= 0;
else if(en && count != 15) count <= count + 1;
endIl valore massimo viene mantenuto anziché tornare a zero.
Gestisci esplicitamente gli aggiornamenti dei limiti quando un contatore deve raggiungere un valore massimo anziché ripartire da zero.
Sfida
MedioCrea un contatore saturante a 4 bit q. Il rst sincrono lo azzera. I fronti abilitati lo incrementano fino a 15, quindi rimane a 15; anche i fronti disabilitati mantengono il valore. Il reset ha la priorità. Colonne di output: q. Tutti i segnali di controllo e i dati sono stabili prima di ogni fronte di salita del clock; i risultati vengono osservati successivamente.
Completa design.v e conserva i nomi e le porte del modulo. Il testbench.v bloccato fornisce le variazioni degli ingressi e stampa le uscite dopo che si sono stabilizzate. Sceglie uno scenario usando un argomento del simulatore, ad esempio +CASE=1; non è richiesto alcun input standard. Non aggiungere stampe, ritardi o terminazioni della simulazione al design. L'output atteso è una riga di valori decimali per ogni osservazione, separati da uno spazio e terminati da un carattere di nuova riga.
Provalo tu
module dut (input clk, input rst, input en, output reg [3:0] q);
// Sostituisci questo segnaposto con il tuo progetto.
initial q = 0;
endmoduleQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Progettazione e verifica RTL
1RTL combinatorio affidabile
I valori predefiniti evitano i latchEncoder di prioritàConvalida one-hotDecodifica sicura dei caseRiepilogo - Router delle richieste4RTL Sequenziale con Controllo
Priorità di Reset e EnableContatori SaturantiPipelining di Dati e ValidRilevamento dei Fronti CampionatiRiepilogo - Contatore di Eventi2Larghezze e aritmetica con segno
Preservare i bit di riportoConfronti con segnoShift aritmetici a destraOverflow e saturazioneRiepilogo - Differenza con segnoEsercitati da solo: Compilatore Verilog online