Convalida one-hot
Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 3 di 38.
I dati one-hot hanno esattamente un bit attivo. Un decodificatore genera dati di questo tipo, mentre la convalida controlla i dati in ingresso prima di usarli. Per i valori binari noti, un valore diverso da zero è one-hot quando bits & (bits - 1) è zero. Questa sezione non usa questa scorciatoia per classificare X o Z.
Estratto pertinente; le dichiarazioni e i collegamenti circostanti sono forniti nella sfida.
assign one_hot = (bits != 0) && ((bits & (bits - 1)) == 0);Il controllo che il valore sia diverso da zero esclude lo stato inattivo; il trucco dei bit rifiuta più bit impostati.
Distingui tra zero, esattamente un bit impostato e più bit impostati durante la convalida delle richieste.
Sfida
MedioPer bit di ingresso noti a 4 bit, imposta valid solo quando esattamente un bit è alto. Usa il controllo di valore non nullo insieme a bits & (bits - 1). Colonne di output: 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 le 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 a capo.
Provalo tu
module dut (input [3:0] bits, output valid);
// Sostituisci questo segnaposto con il tuo progetto.
assign 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