Menu
Coddy logo textTech

Zahlen ohne Größenangabe

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

Ein unsized Number (Zahl ohne Größenangabe) ist eine Zahl, die geschrieben wird, ohne anzugeben, wie viele Bits sie hat. Wenn Sie eine Zahl ohne Größen-Präfix schreiben, geht Verilog standardmäßig von 32 bits aus.

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

Zahlen ohne Größenangabe (Unsized numbers) verwenden nur das Format und den Wert: [format][value]

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

Der Apostroph ' ist zwischen dem Format und dem Wert weiterhin erforderlich, aber es steht keine Bitanzahl davor.

  • 'b1010 — 32-Bit-Binärzahl 1010
  • 'd255 — 32-Bit-Dezimalzahl 255
  • 'hFF — 32-Bit-Hexadezimalzahl FF
  • 'b1 — 32-Bit-Binärzahl 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
Bit width32 bits (Standard)Explicit (wie angegeben)
ApostrophErforderlich mit FormatErforderlich
Wann zu verwendenEinfacher Testbench-CodeHardware-Zuweisungen

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 werden beibehalten (0000), was möglicherweise nicht das ist, was Sie erwarten.

Wann nicht-dimensionierte Zahlen verwendet werden sollten

Nicht-dimensionierte Zahlen sind praktisch für:

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

Für tatsächliche Hardware-Zuweisungen verwenden Sie sized Zahlen, um explicit zu sein und Warnungen zu vermeiden.

challenge icon

Aufgabe

In dem folgenden Code sind einige Zahlen ohne Größenangabe (unsized). Ändern Sie diese in Zahlen mit Größenangabe (8 bits), um Warnungen zu vermeiden.

Was zu tun ist:

  1. Ändern Sie a in eine 8-bit binary Zahl für 1010
  2. Ändern Sie b in eine 8-bit decimal Zahl für 255
  3. Ändern Sie c in eine 8-bit hex Zahl 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;     // Ändere zu sized (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