Menu
Coddy logo textTech

Zahlen mit Größenangabe

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

Es gibt in Verilog eine Möglichkeit, eine Zahl mit einer bestimmten Größe zu deklarieren. Dies wird als sized number bezeichnet. Es ist nützlich, da es Verwirrung darüber vermeidet, wie viele Bits Ihre Zahl hat, und sicherstellt, dass sich Ihre Hardware genau wie erwartet verhält.

Eine größengebundene Zahl folgt diesem Format: [bits]'[format][value]

  • <strong>bits</strong> — die Anzahl der Bits (zum Beispiel 8)
  • <strong>'</strong> — ein Apostroph, das die Größe vom Format trennt (erforderlich)
  • <strong>format</strong> — die Basis der Zahl: b für binär, d für dezimal, h für hexadezimal oder o für oktal
  • <strong>value</strong> — die eigentliche Zahl (zum Beispiel 1010)

Zum Beispiel:

  • 4'b1010 — 4 Bits, binär 1010 (dezimal 10)
  • 8'd255 — 8 Bits, dezimal 255 (binär 11111111)
  • 16'hFF — 16 Bits, hex FF (binär 0000000011111111)
  • 3'b1 — 3 Bits, binär 001 (die linken Bits werden mit Nullen aufgefüllt)

Codebeispiel:

reg [7:0] data;

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

Alle drei Beispiele weisen data denselben Wert zu.

Warum die Größe wichtig ist

Ohne Größenangabe:

reg [7:0] data;
data = 1;        // Was bedeutet das? 1 Bit? 8 Bits?

Verilog nimmt standardmäßig an, dass kleine Zahlen 32 Bits lang sind, was zu Problemen führen kann.

Mit Größe:

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

Zero Padding

Wenn Sie einen kleineren Wert einem größeren Vektor zuweisen, füllt Verilog die linken Bits mit Nullen auf:

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

Aufgabe

Vervollständige den Code, indem du die korrekten Zahlen mit Größenangabe schreibst.

Was zu tun ist:

  1. Setze a auf eine 8-Bit-Binärzahl für dezimal 170 (binär 10101010)
  2. Setze b auf eine 4-Bit-Binärzahl für dezimal 12 (binär 1100)
  3. Setze c auf eine 16-Bit-Hexadezimalzahl für dezimal 255 (hex FF)

Probier es selbst

module sized_challenge;
  reg [7:0] a;
  reg [3:0] b;
  reg [15:0] c;
  
  initial begin
    a = ______;   // 8-Bit-Binär für 170 (10101010)
    b = ______;   // 4-Bit-Binär für 12 (1100)
    c = ______;   // 16-Bit-Hex für 255 (FF)
    
    $display("a = %b", a);
    $display("b = %b", b);
    $display("c = %h", 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