Attiva un allarme al superamento della soglia
Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 35 di 38.
Sfida
DifficileCostruisci un unico Sample Monitor in cinque passaggi. Porta l’allarme combinatorio a livello alto ogni volta che il totale è almeno pari al limite senza segno, inclusa l’uguaglianza. L’allarme riflette il totale aggiornato dopo ogni fronte e segue le variazioni del limite. limit=0 porta l’allarme a livello alto anche quando total=0. Mantieni tutti i comportamenti di accumulo, abilitazione, azzeramento e conteggio. Conserva tutto ciò che proviene dai passaggi precedenti, inclusi il relativo testbench e il comportamento di output precedente. Tutti i valori di input sono noti. Gli scenari contengono al massimo 40 fronti, quindi il totale rientra in 16 bit. Il testbench fisso stampa total per gli scenari 1-9, total e count per gli scenari 10-12 e total, count e alarm per gli scenari 13-15. Vengono valutati solo gli scenari abilitati per questo passaggio.
Completa design.v e conserva i nomi dei moduli e le porte. Il testbench.v bloccato fornisce le variazioni degli input e stampa gli output dopo che si sono stabilizzati. Seleziona uno scenario usando un argomento del simulatore come +CASE=1; non è richiesto 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 una nuova riga.
Provalo tu
module dut(input clk,rst,en,clear, input [7:0] data, input [15:0] limit, output reg [15:0] total, output reg [3:0] count, output alarm);
always @(posedge clk)begin
if(rst || clear)begin total<=0;count<=0;end
else if(en)begin
total<=total+data;
if(count!=15)count<=count+4'd1;
end
end
assign alarm=0;
endmoduleTutte 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 Eventi7Progetto - Monitor di campioni
Accumula campioniAccetta i campioni abilitati2Larghezze e aritmetica con segno
Preservare i bit di riportoConfronti con segnoShift aritmetici a destraOverflow e saturazioneRiepilogo - Differenza con segnoEsercitati da solo: Compilatore Verilog online