Menu
Coddy logo textTech

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
endgenerate

Il 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.

challenge icon

Sfida

Medio

Usa 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;
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