Generate condizionale
Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 14 di 38.
Un generate-if seleziona una struttura hardware utilizzando un parameter costante. Per una determinata istanza viene elaborato un solo ramo. Un if procedurale o un’espressione condizionale con un segnale seleziona il comportamento in fase di esecuzione; non sostituisce la configurazione generate.
Estratto pertinente; le dichiarazioni e i collegamenti circostanti sono forniti nella sfida.
generate
if(INVERT) begin: inverted
assign y = ~a;
end else begin: direct
assign y = a;
end
endgenerateIl parameter sceglie quale driver viene costruito per questa istanza.
Usa generate-if per la configurazione costante e la selezione RTL ordinaria per i controlli in fase di esecuzione.
Sfida
MedioUsa generate condizionale: con MODE=0, a passa invariato; con MODE=1, tutti gli otto bit di a vengono invertiti. L’ingresso b non viene usato. MODE può essere 0 o 1. Il testbench istanzia entrambe le configurazioni e stampa prima y0 e poi y1.
Completa design.v e conserva i nomi dei moduli e le porte. Il testbench.v bloccato fornisce le variazioni degli ingressi e stampa le uscite dopo che si sono stabilizzate. Sceglie uno scenario usando un argomento del simulatore come +CASE=1; non è necessario alcun input standard. Non aggiungere stampe, ritardi o istruzioni di terminazione della simulazione al design. L’output previsto consiste in una riga di valori decimali per ogni osservazione, separati da uno spazio e terminata da un carattere di nuova riga.
Provalo tu
module dut #(parameter MODE=0) (input [7:0] a,b, output [7:0] y);
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