2 / 24 · Concetto
Larghezze, estensione del segno e overflow
Usa esempi numerici per distinguere interpretazione, estensione e riduzione della larghezza.
Le lezioni sono gratuite. Iscriviti per salvare i progressi.
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.
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.
| Operazione | Risultato esteso | Interpretazione ridotta |
|---|---|---|
| 255+1 senza segno | 256 | 0 con riporto |
| 127+1 con segno | 128 | -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.