Menu
Coddy logo textTech

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.

challenge icon

Sfida

Medio

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