Cicli generate
Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 13 di 38.
Un ciclo generate-for crea hardware ripetuto durante l’elaborazione. Il suo indice genvar non è un registro che cambia in fase di esecuzione. I blocchi generate con nome forniscono nomi gerarchici prevedibili per le istanze o le assegnazioni create. I limiti del ciclo devono essere costanti in fase di elaborazione.
Estratto pertinente; le dichiarazioni e le connessioni circostanti sono fornite nella sfida.
genvar i;
generate
for(i=0;i<WIDTH;i=i+1) begin: bitcell
assign y[i] = a[i] ^ b[i];
end
endgenerateOgni iterazione elabora un'operazione distinta a livello di bit anziché consumare un ciclo di clock.
Usa genvar con limiti costanti per descrivere una struttura ripetuta durante l’elaborazione.
Sfida
MedioUsa un ciclo generate-for con nome e genvar i per istanziare un’assegnazione continua per ogni bit, producendo y[i] = a[i] XOR b[i]. WIDTH è positivo. Il testbench bloccato istanzia i valori WIDTH 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 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. 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