Parametri sicuri rispetto alla larghezza
Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 12 di 38.
I fondamenti hanno introdotto larghezze configurabili. L’RTL riutilizzabile deve gestire anche la larghezza legale minima, dimensionare deliberatamente le espressioni intermedie ed evitare posizioni di bit codificate direttamente. La replicazione {WIDTH{1'b1}} crea una maschera della larghezza corrispondente. I parametri sono costanti di elaborazione, non controlli in fase di esecuzione.
Estratto pertinente; le dichiarazioni e i collegamenti circostanti sono forniti nella sfida.
wire [WIDTH:0] sum;
assign sum = {1'b0,a} + {1'b0,b};
assign y = sum[WIDTH] ? {WIDTH{1'b1}} : sum[WIDTH-1:0];Sia la posizione del riporto sia il valore di saturazione si adattano alla larghezza configurata.
Verifica la larghezza minima consentita e ricava dai parametri ogni sezione e costante dipendente dalla larghezza.
Sfida
MedioRealizza un incrementatore di WIDTH bit che restituisca i WIDTH bit meno significativi di a+1. L’ingresso b non viene utilizzato. Lo stesso modulo deve funzionare sia con WIDTH=1 sia con larghezze maggiori. WIDTH è positivo. Il testbench bloccato istanzia valori di WIDTH pari a 1, 4 e 8, usando i bit meno significativi di a e b per le istanze più strette. Le colonne di output sono y1, y4 e y8 in formato decimale.
Completa design.v e mantieni invariati i nomi dei moduli e le porte. Il testbench.v bloccato fornisce variazioni degli ingressi e stampa le uscite dopo che si sono stabilizzate. Sceglie uno scenario usando un argomento del simulatore come +CASE=1; non è richiesto alcun input standard. Non aggiungere stampe, ritardi o terminazioni della simulazione al design. L’output previsto è una riga di valori decimali per ogni osservazione, separati da uno spazio e terminati da un carattere di nuova riga.
Provalo tu
module dut #(parameter WIDTH=4) (input [WIDTH-1:0] a,b, output [WIDTH-1:0] y);
// Implementa il circuito parametrizzato.
assign y = 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 richieste2Larghezze e aritmetica con segno
Preservare i bit di riportoConfronti con segnoShift aritmetici a destraOverflow e saturazioneRiepilogo - Differenza con segno3RTL riutilizzabile
Funzioni combinatorieParametri sicuri rispetto alla larghezzaCicli generateGenerate condizionaleRiepilogo - Maschera di bit riutilizzabileEsercitati da solo: Compilatore Verilog online