Priorità di Reset e Enable
Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 16 di 38.
Un blocco sincrono al clock può mantenere un registro omettendo un’assegnazione sui fronti disabilitati. Questa memorizzazione intenzionale è diversa da un latch combinatorio accidentale. Scrivi una priorità esplicita tra reset, caricamento e abilitazione. Qui i reset sono sincroni: hanno effetto solo sul fronte di salita del clock.
Estratto pertinente; le dichiarazioni e i collegamenti circostanti sono forniti nella sfida.
always @(posedge clk) begin
if(rst) q <= 0;
else if(en) q <= data;
endIl reset ha la precedenza quando entrambi i controlli sono attivi, mentre sui fronti disabilitati senza reset q mantiene il proprio valore.
Usa un'unica catena di priorità sincronizzata con il clock e definisci con precisione il comportamento di reset, caricamento, abilitazione e mantenimento.
Sfida
MedioImplementa un registro q a 8 bit con reset sincrono attivo alto rst e abilitazione en. Sul fronte di salita, il reset ha la precedenza e azzera q; altrimenti, i fronti abilitati caricano a, mentre quelli disabilitati mantengono q. 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 dopo.
Completa design.v e mantieni invariati i nomi del modulo e le porte. Il testbench.v bloccato fornisce le variazioni degli ingressi e stampa gli output dopo che si sono stabilizzati. Sceglie uno scenario usando un argomento del simulatore come +CASE=1; non è necessario alcuno standard input. Non aggiungere stampe, ritardi o terminazione della simulazione al design. L'output previsto è una riga di valori decimali per ogni osservazione, separati da uno spazio e terminata da un carattere di nuova riga.
Provalo tu
module dut (input clk, input rst, input en, input [7:0] a, output reg [7: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