Menu
Coddy logo textTech

Numeri con dimensione specificata

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

Esiste un modo per dichiarare un numero con una dimensione specifica in Verilog. Si chiama numero con dimensione specificata. È utile perché evita confusione sul numero di bit del numero e garantisce che l’hardware si comporti esattamente come previsto.

Un numero con dimensione specificata segue questo formato: [bits]'[format][value]

  • <strong>bits</strong>: il numero di bit (per esempio, 8)
  • <strong>'</strong>: un apostrofo che separa la dimensione dal formato (obbligatorio)
  • <strong>format</strong>: la base del numero: b per il binario, d per il decimale, h per l'esadecimale oppure o per l'ottale
  • <strong>value</strong>: il numero effettivo (per esempio, 1010)

Per esempio:

  • 4'b1010: 4 bit, binario 1010 (decimale 10)
  • 8'd255: 8 bit, decimale 255 (binario 11111111)
  • 16'hFF: 16 bit, esadecimale FF (binario 0000000011111111)
  • 3'b1: 3 bit, binario 001 (i bit a sinistra sono riempiti con zeri)

Esempio di codice:

reg [7:0] data;

data = 8'b10101010;   // 8 bits, binary 10101010
data = 8'd170;        // 8 bit, decimale 170
data = 8'hAA;         // 8 bits, hex AA

Tutti e tre gli esempi assegnano lo stesso valore a data.

Perché la dimensione è importante

Senza dimensione:

reg [7:0] data;
data = 1;        // Che cosa significa? 1 bit? 8 bit?

Verilog presume che i numeri piccoli siano di 32 bit per impostazione predefinita, il che può causare problemi.

Con dimensione:

reg [7:0] data;
data = 8'b00000001;   // Clear: 8-bit value 1

Riempimento con zeri

Quando assegni un valore più piccolo a un vettore più grande, Verilog riempie i bit a sinistra con degli zeri:

reg [7:0] data;
data = 4'b1010;    // Becomes 8'b00001010
challenge icon

Sfida

Completa il codice scrivendo i numeri della dimensione corretta.

Cosa fare:

  1. Imposta a su un numero binario a 8 bit corrispondente al decimale 170 (binario 10101010)
  2. Imposta b su un numero binario a 4 bit corrispondente al decimale 12 (binario 1100)
  3. Imposta c su un numero esadecimale a 16 bit corrispondente al decimale 255 (esadecimale FF)

Provalo tu

module sized_challenge;
  reg [7:0] a;
  reg [3:0] b;
  reg [15:0] c;
  
  initial begin
    a = ______;   // binario de 8 bits para 170 (10101010)
    b = ______;   // binario de 4 bits para 12 (1100)
    c = ______;   // hexadecimal de 16 bits para 255 (FF)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %h", 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