Menu
Coddy logo textTech

Encoder di priorità

Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 2 di 38.

Un encoder associa un bit di richiesta a un indice. Più richieste attive richiedono una regola di priorità esplicita. Una catena if/else-if assegna la priorità ai rami precedenti; un segnale valid separato distingue l’assenza di richieste dall’indice zero.

Estratto pertinente; le dichiarazioni e i collegamenti circostanti sono forniti nella sfida.

if (req[3]) code = 3;
else if (req[2]) code = 2;
else if (req[1]) code = 1;
else code = 0;

Vince il primo ramo vero, dando priorità al bit di richiesta più alto.

Indica l’ordine di priorità e definisci esplicitamente l’output in assenza di richieste.

challenge icon

Sfida

Medio

Codifica il bit più alto asserito di req a 4 bit in code. Imposta valid se esiste una qualsiasi richiesta; quando req è zero, code e valid sono zero. Colonne di output: code, valid. Tutti i valori di stimolo sono valori binari noti.

Completa design.v e conserva i nomi dei moduli e le porte. Il testbench.v bloccato fornisce modifiche agli 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 terminata da un carattere di nuova riga.

Provalo tu

module dut (input [3:0] req, output reg [1:0] code, output reg valid);
    // Sostituisci questo segnaposto con il tuo progetto.
    initial code = 0;
    initial valid = 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