Menu
CoddyTech

Numeri senza dimensione specificata

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 15 di 90.

Un numero senza dimensione è un numero scritto senza specificare quanti bit contiene. Quando scrivi un numero senza un prefisso che ne indica la dimensione, Verilog presume che sia di 32 bit per impostazione predefinita.

a = 'b1010;        // Unsized: Verilog treats this as 32 bits
a = 32'b1010;    // Come sopra, ma esplicito

I numeri senza dimensione usano solo il formato e il valore: [format][value]

  • format: la base del numero: b per il binario, d per il decimale, h per l'esadecimale oppure o per l'ottale
  • value: il numero effettivo (per esempio, 1010)

L'apostrofo ' è ancora necessario prima della lettera di formato, ma prima di esso non c'è alcun conteggio di bit.

  • 'b1010: 1010 binario a 32 bit
  • 'd255: 255 decimale a 32 bit
  • 'hFF: FF esadecimale a 32 bit
  • 'b1: 1 binario a 32 bit (con 31 zeri iniziali)

Esempio di codice:

reg [7:0] data;

initial begin
  data = 1010;      // Senza dimensione specificata: valore a 32 bit (può generare un avviso)
  data = 'd255;     // Unsized: 32-bit decimal 255
  data = 'hFF;      // Senza dimensione specificata: valore esadecimale FF a 32 bit
end

Senza dimensione vs con dimensione

 Senza dimensioneCon dimensione
Esempio1010 o 'd2558'b1010 o 8'd255
Larghezza in bit32 bit (predefinito)Esplicita (come specificato)
ApostrofoRichiesto con il formatoRichiesto
Quando usareCodice semplice per un banco di provaAssegnazioni hardware

Problema potenziale

I numeri senza dimensione possono causare un comportamento imprevisto quando vengono assegnati a registri più piccoli:

reg [3:0] small_reg;
small_reg = 'b1111;   // 32-bit value, but fits in 4 bits (fine)
small_reg = 'b10000;  // Valore a 32 bit, ma troppo grande! (avviso)

Il secondo esempio assegna un valore a 32 bit 10000 a un registro a 4 bit. Vengono mantenuti solo i 4 bit meno significativi (0000), cosa che potrebbe non essere ciò che ti aspetti.

Quando usare i numeri senza dimensione

I numeri senza dimensione sono comodi per:

  • Numeri semplici nei banchi di prova
  • Contatori dei cicli
  • istruzioni $display

Per le assegnazioni all’hardware reale, usa numeri con dimensioni specificate per essere esplicito ed evitare avvisi.

challenge icon

Sfida

Nel codice qui sotto, alcuni numeri non hanno una dimensione specificata. Modificali in numeri con dimensione specificata (8 bit) per evitare avvisi.

Cosa fare:

  1. Modifica a in un numero binario a 8 bit per 1010
  2. Modifica b in un numero decimale a 8 bit per 255
  3. Modifica c in un numero esadecimale a 8 bit per FF

Provalo tu

module unsized_challenge;
  reg [7:0] a, b, c;
  
  initial begin
    a = 'b1010;      // Change to sized (8-bit binary)
    b = 'd255;     // Converti in una costante con dimensione esplicita (decimale a 8 bit)
    c = 'hFF;      // Change to sized (8-bit hex)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %b", c);
    $finish;
  end
endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online

Verifica una conversione: Convertitore di basi numeriche