Menu
Coddy logo textTech

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.

challenge icon

Sfida

Medio

Realizza 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;
endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Progettazione e verifica RTL

Esercitati da solo: Compilatore Verilog online