Menu
Coddy logo textTech

Unsized Numbers

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 15 von 90.

Eine Unsized number ist eine Zahl, die geschrieben wird, ohne anzugeben, wie viele bits sie hat. Wenn du eine Zahl ohne Größenpräfix schreibst, nimmt Verilog standardmäßig an, dass sie 32 bits umfasst.

a = 'b1010;        // Unsized: Verilog treats this as 32 bits
a = 32'b1010;    // Dasselbe wie oben, aber explizit

Unsized-Zahlen verwenden nur das Format und den Wert: [format][value]

  • <strong>format</strong>: die Basis der Zahl: b für binary, d für decimal, h für hexadezimal oder o für oktal
  • <strong>value</strong>: die eigentliche Zahl (zum Beispiel 1010)

Das Apostroph ' wird weiterhin zwischen Format und Wert benötigt, aber davor steht keine Bitanzahl.

  • 'b1010: 32-bit binary 1010
  • 'd255: 32-bit decimal 255
  • 'hFF: 32-bit hex FF
  • 'b1: 32-bit binary 1 (mit 31 führenden Nullen)

Code-Beispiel:

reg [7:0] data;

initial begin
  data = 1010;      // Unsized: 32-Bit-Wert (kann Warnung verursachen)
  data = 'd255;     // Unsized: 32-bit decimal 255
  data = 'hFF;      // Unsized: 32-Bit-Hex FF
end

Unsized vs Sized

 UnsizedSized
Beispiel1010 oder 'd2558'b1010 oder 8'd255
Bitbreite32 bits (Standard)Explizit (wie angegeben)
ApostrophBei Verwendung eines Formats erforderlichErforderlich
Wann verwendenEinfacher Testbench-CodeHardwarezuweisungen

Mögliches Problem

Unsized-Zahlen können unerwartetes Verhalten verursachen, wenn sie kleineren Registern zugewiesen werden:

reg [3:0] small;
small = 'b1111;      // 32-bit value, but fits in 4 bits (fine)
small = 'b10000;     // 32-Bit-Wert, aber zu groß! (Warnung)

Das zweite Beispiel weist einem 4-Bit-Register einen 32-Bit-Wert 10000 zu. Nur die unteren 4 Bits bleiben erhalten (0000), was möglicherweise nicht deinen Erwartungen entspricht.

Wann Unsized-Zahlen verwendet werden

Unsized-Zahlen sind praktisch für:

  • Einfache Zahlen in Testbenches
  • Schleifenzähler
  • $display-Anweisungen

Für tatsächliche Hardwarezuweisungen verwende Zahlen mit Größenangabe, um eindeutig zu sein und Warnungen zu vermeiden.

challenge icon

Aufgabe

Im folgenden Code sind einige Zahlen ohne Größenangabe. Ändere sie in Zahlen mit Größenangabe (8 Bit), um Warnungen zu vermeiden.

Was zu tun ist:

  1. Ändere a in eine 8-Bit-Binärzahl für 1010
  2. Ändere b in eine 8-Bit-Dezimalzahl für 255
  3. Ändere c in eine 8-Bit-Hexadezimalzahl für FF

Probier es selbst

module unsized_challenge;
  reg [7:0] a, b, c;
  
  initial begin
    a = 'b1010;      // Change to sized (8-bit binary)
    b = 'd255;     // Zu sized ändern (8-Bit dezimal)
    c = 'hFF;      // Change to sized (8-bit hex)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %b", c);
    $finish;
  end
endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: Online-Verilog-Compiler