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.
Sfida
MedioCodifica 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;
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 segnoEsercitati da solo: Compilatore Verilog online