Decodifica sicura dei case
Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 4 di 38.
Usa un'istruzione case ordinaria per i codici di controllo esatti. Fornisci un comportamento default per i codici non supportati e usa assign per tutti gli output. La decodifica con caratteri jolly tramite casex può nascondere i bit di controllo sconosciuti nella simulazione, quindi non è adatta quando vuoi che gli stati sconosciuti restino visibili durante il debug.
Estratto pertinente; le dichiarazioni e i collegamenti circostanti sono forniti nella sfida.
always @* begin
y = 0;
invalid = 0;
case (op)
0: y = a & b;
1: y = a | b;
default: invalid = 1;
endcase
endI codici non supportati producono uno stato esplicito anziché mantenere un output precedente.
Definisci esplicitamente i codici di controllo non supportati ed evita di mascherare i controlli sconosciuti con casex.
Sfida
MedioImplementa un’unità logica a 8 bit: op 0 calcola a AND b, op 1 calcola a OR b, op 2 calcola a XOR b e op 3 restituisce zero con invalid impostato a uno. invalid è zero per le operazioni supportate. Colonne di output: y, invalid. Tutti i valori di stimolo sono valori binari noti.
Completa design.v e conserva i nomi e le porte del modulo. Il testbench.v bloccato fornisce le variazioni degli input e stampa gli output dopo che si sono stabilizzati. Sceglie uno scenario usando un argomento del simulatore come +CASE=1; non è necessario 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 terminati da un carattere di nuova riga.
Provalo tu
module dut (input [1:0] op, input [7:0] a, input [7:0] b, output reg [7:0] y, output reg invalid);
// Sostituisci questo segnaposto con il tuo progetto.
initial y = 0;
initial invalid = 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