Overflow e saturazione
Fa parte della sezione Progettazione e verifica RTL del percorso Verilog di Coddy. Lezione 9 di 38.
L’overflow con segno significa che il risultato matematico non può essere rappresentato nella larghezza signed scelta. È diverso dal riporto senza segno. Nell’addizione signed, gli operandi con lo stesso segno causano overflow quando il segno del risultato cambia. La saturazione limita il risultato a un estremo rappresentabile invece di farlo ripartire da capo.
Estratto pertinente; le dichiarazioni e i collegamenti circostanti sono forniti nella sfida.
assign overflow = (a[7] == b[7]) && (sum[7] != a[7]);Gli input con segni diversi non possono causare overflow nell’addizione signed; gli input con segni uguali richiedono un controllo del segno del risultato.
Verifica l'overflow con segno indipendentemente dal riporto; amplia prima di implementare la saturazione.
Sfida
MedioSomma a e b con segno su 8 bit. Restituisci il risultato con segno y troncato e overflow=1 solo quando la somma matematica esatta è al di fuori dell’intervallo da -128 a 127. Colonne di output: y, overflow. 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 variazioni degli ingressi e stampa le uscite dopo che si sono stabilizzate. Sceglie uno scenario usando un argomento del simulatore come +CASE=1; non è necessario alcun input standard. Non aggiungere stampe, ritardi o terminazione della simulazione al design. L’output previsto è una riga di valori decimali per ogni osservazione, separati da uno spazio e terminati da una nuova riga.
Provalo tu
module dut (input signed [7:0] a, input signed [7:0] b, output signed [7:0] y, output overflow);
// Sostituisci questo segnaposto con il tuo progetto.
assign y = 0;
assign overflow = 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