Menu
Coddy logo textTech

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 di 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]

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

L'apostrofo ' è ancora necessario tra il formato e il valore, ma prima non viene indicato il numero 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: FF esadecimale a 32 bit
end

Senza dimensione vs con dimensione

 Senza dimensioneCon dimensione
Esempio1010 o 'd2558'b1010 o 8'd255
Larghezza in bit32 bit (predefinita)Esplicita (come specificato)
ApostrofoRichiesto con il formatoRichiesto
Quando usarlaCodice di testbench sempliceAssegnazioni hardware

Problema potenziale

I numeri senza dimensione possono causare comportamenti imprevisti quando vengono assegnati a registri più piccoli:

reg [3:0] small;
small = 'b1111;      // 32-bit value, but fits in 4 bits (fine)
small = '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), il che potrebbe non essere ciò che ti aspetti.

Quando usare numeri senza dimensione

I numeri senza dimensione sono utili per:

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

Per le assegnazioni hardware effettive, usa numeri con dimensione specificata per essere esplicito ed evitare avvisi.

challenge icon

Sfida

Nel codice qui sotto, alcuni numeri non hanno una dimensione specificata. Modificali in numeri di 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 un valore con dimensione specificata (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