Altifigence Academy

2 / 24 · Concetto

Larghezze, estensione del segno e overflow

Usa esempi numerici per distinguere interpretazione, estensione e riduzione della larghezza.

Separa una configurazione di bit dal suo significato

La configurazione a otto bit 1111_1101 rappresenta 253 senza segno oppure -3 con segno in complemento a due. I bit memorizzati sono identici, ma confronti ed estensioni differiscono. Un valore con segno a otto bit va da -128 a 127; un valore senza segno va da 0 a 255. La larghezza determina il numero di configurazioni rappresentabili, mentre la presenza del segno ne determina l'interpretazione numerica.

Estendi con zeri 253 senza segno quando lo porti a sedici bit. Estendi il segno di -3 ripetendo il suo bit più significativo originale, ottenendo 1111_1111_1111_1101. L'estensione con zeri trasformerebbe -3 in 253. In SystemVerilog, stabilisci esplicitamente tipi e larghezze degli operandi prima di calcolare; non presumere che una concatenazione o una selezione parziale conservi l'interpretazione con segno desiderata.

SystemVerilog
logic [7:0] ua, ub;
logic [8:0] usum;
logic signed [7:0] sa, sb;
logic signed [8:0] sax, sbx, ssum;
assign usum = {1'b0, ua} + {1'b0, ub};
assign sax = {sa[7], sa};
assign sbx = {sb[7], sb};
assign ssum = sax + sbx;

Qui entrambi gli ingressi diventano a nove bit prima dell'addizione. 255+1 senza segno dà 256, poi zero negli otto bit meno significativi. Anche 127+1 con segno dà matematicamente 128, ma la riduzione a otto bit con segno produce -128. Il riporto segnala un limite senza segno; l'overflow con segno segnala un limite con segno. La somma di operandi dello stesso segno con un risultato di segno diverso indica un overflow con segno. La somma di -1 e 1 può produrre un riporto senza overflow con segno.

Pianifica anche le larghezze intermedie. Il massimo prodotto senza segno a otto bit è 65025 e richiede sedici bit. Quattro valori senza segno a otto bit possono sommare fino a 1020, richiedendo dieci bit. Troncare ogni somma parziale a otto bit perde informazioni che un registro finale più largo non può recuperare.

OperazioneRisultato estesoInterpretazione ridotta
255+1 senza segno2560 con riporto
127+1 con segno128-128 con overflow
-3+2 con segno-1-1 senza overflow

Usa gli avvisi WIDTH di Verilator per esaminare variazioni di dimensione involontarie. Le verifiche Node di questo corso eseguono modelli numerici, non questi frammenti HDL. Prova zero, valori estremi e segni misti prima di considerare i tipici esempi positivi una prova di correttezza.

Prova tu

Trova il risultato dell'estensione del segno di -3 e 2 da otto a nove bit e della loro somma. Trova anche la larghezza minima per la somma esatta di quattro valori senza segno pari a 255.

Leggi la spiegazione

Gli operandi a nove bit sono 111111101 e 000000010. La loro somma è 111111111, cioè -1. Quattro valori di 255 sommano a 1020; nove bit senza segno arrivano a 511, quindi occorrono dieci bit.

La scelta vale per questo browser. Puoi modificarla in qualsiasi momento dal piè di pagina.