Altifigence Academy

7 / 37 · Concetto

Larghezze di slice, concatenazione e ripetizione

Costruire datapath calcolando larghezza complessiva e conservazione del valore.

Concatenare non significa sommare

{a,b} accoda i bit di b a quelli di a. Con larghezze M e N, il risultato ha M+N bit. Per sequenze unsignedUnsigned Interpretazione dei bit come intero non negativo. Il campo a n bit è 0–2^n−1 e può differire dalla lettura signed degli stessi bit. Approfondisci, numericamente:

{a,b}=a⋅2N+b\{a,b\}=a\cdot2^N+b

a=2'b10, b=3'b101 danno 5'b10101, cioè 21, non la somma aritmetica 7.

I bit di a salgono di tante posizioni quant'è larga b. La concatenazioneConcatenazione Accoda sequenze di bit. La larghezza risultante è la somma delle larghezze, non un’addizione numerica. qui significa a×2³+b, non a+b.

Concatenare bit e sommare numeri
  1. a = 10: Larghezza 2 bit, intero 2
  2. b = 101: Larghezza 3 bit, intero 5
  3. {a,b} = 10101: Larghezza 5 bit, 2×8+5=21

Annotare la larghezza accanto alla formula

SystemVerilog
logic [7:0] word;
logic [3:0] upper, lower;
logic [7:0] swapped;
assign upper = word[7:4];
assign lower = word[3:0];
assign swapped = {lower, upper};

Con 8'hA3, swapped vale 8'h3A. Un intervallo di sliceSlice Selezione di un intervallo contiguo del vettore, che determina larghezza e ordine del risultato. sbagliato cambia larghezza o valore. Un sottoinsieme può essere trattato come unsigned indipendente anche se il vettore originale è signed: ricontrollatene il significato prima dell'aritmetica signed.

Estensione del segno e ripetizione

SystemVerilog
logic signed [3:0] small;
logic signed [7:0] extended;
assign extended = {{4{small[3]}}, small};

Quattro copie del bit di segno e i quattro bit originali formano otto bit. L'estensione del segno non somma 1 quando il MSBMSB Bit di peso maggiore. L’indice dipende dalla direzione dichiarata: non è necessariamente il numero più alto. Approfondisci è acceso: amplia la disposizione conservando il valore interpretato.

Un circuito generico con q[N-2:0] ha un intervallo non valido per N=1. Limitate la larghezza minima o gestite N=1 con un ramo generate. Parametrizzare non significa soltanto sostituire numeri con variabili.

Prova tu

a ha tre bit 101, b due bit 11. Quali larghezza e valore ha {a, b}, e cosa resta in quattro bit?

Leggi la spiegazione

Cinque bit 10111, valore 5⋅4+3=235\cdot4+3=23. In quattro bit si scarta il superiore: restano 0111, cioè 7.

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