Menu
Coddy logo textTech

Arrays

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

Ein Array ermöglicht es Ihnen, mehrere Werte in einer Variablen zu speichern. Auf jedes Element im Array kann über seinen Index zugegriffen werden.

Hinweis: Ein Array ist kein separater Datentyp. Es ist eine Sammlung von wire-, reg-, integer- oder real-Typen.

Arrays deklarieren

Syntax: <data_type> <name> [<size>];

reg [7:0] memory [0:255];   // 256 Bytes Speicher (jeweils 8 Bit)
reg data [0:7];              // 8 Ein-Bit-Register
wire [3:0] bus [0:3];       // 4 Busse, jeweils 4 Bit breit
integer counters [0:9];      // 10 Integer

Die Zahl in Klammern [ ] ist die Array-Größe, nicht die Bitbreite.

Zugriff auf Array-Elemente

reg [7:0] memory [0:3];

memory[0] = 165;        // Dezimal 165
memory[1] = 90;         // Dezimal 90
memory[2] = memory[0] + memory[1];

$display("%d", memory[2]);  // Gibt aus: 255

Arrays sind in Testbenches sehr nützlich, um Testdaten zu speichern.

Mehrdimensionale Arrays

Sie können Arrays mit mehreren Dimensionen erstellen:

reg [7:0] matrix [0:3][0:3];   // 4x4-Array von 8-Bit-Werten

matrix[0][0] = 255;            // 8'hFF = 255 dezimal
matrix[2][1] = 85;             // 8'h55 = 85 dezimal

Array vs. Vektor

 VektorArray
BeschreibungMulti-Bit-Wire oder -RegSammlung mehrerer Werte
Syntax[MSB:LSB][size]
Beispielreg [7:0] data;reg [7:0] mem [0:255];
Zugriffdata[3] (Bit 3)mem[3] (Element 3)

Ein Vektor ist ein Wert mit mehreren Bits.
Ein Array ist mehrere Werte, jeder mit seinen eigenen Bits.

Wichtige Hinweise

  • Arrays sind in vielen Tools nicht synthetisierbar, wenn sie mit großen Größen verwendet werden
  • Arrays werden meistens in Testbenches verwendet
  • Verwenden Sie für Hardware-Speicher spezielle Speicher-Primitive
challenge icon

Aufgabe

Vervollständigen Sie den folgenden Code, um ein Array zu erstellen, das 4 Testwerte speichert.

Was zu tun ist: 

  1. Deklarieren Sie ein Array namens test_data
    1. Verwenden Sie den Datentyp reg (da er Werte in einer Testbench speichert)
    2. Jedes Element sollte 8 Bit breit sein ([7:0])
    3. Das Array sollte 4 Elemente haben ([0:3])

Spickzettel

Arrays speichern mehrere Werte in einer einzigen Variablen, auf die über einen Index zugegriffen wird. Ein Array ist eine Sammlung von wire, reg, integer oder real Typen.

Deklarationssyntax: <data_type> <name> [<size>];

reg [7:0] memory [0:255];  // 256 Elemente, jedes 8 Bit breit
wire [3:0] bus [0:3];      // 4 Elemente, jedes 4 Bit breit
integer counters [0:9];    // 10 Integer

Zugriff auf Elemente:

memory[0] = 165;
memory[2] = memory[0] + memory[1];
$display("%d", memory[2]);

Mehrdimensionale Arrays:

reg [7:0] matrix [0:3][0:3];  // 4x4 Array aus 8-Bit-Werten
matrix[0][0] = 255;

Array vs. Vektor:

  • Vektor — ein Wert mit mehreren Bits: reg [7:0] data;data[3] greift auf Bit 3 zu
  • Array — mehrere Werte, jeder mit seinen eigenen Bits: reg [7:0] mem [0:255];mem[3] greift auf Element 3 zu

Arrays werden hauptsächlich in Testbenches verwendet; für Hardware-Speicher sollten spezielle Speicher-Primitive verwendet werden.

Probier es selbst

module arrays;
  
  // Deklariere ein Array namens test_data
  // Es sollte 4 Elemente haben, jedes 8 Bit breit
  // Verwende den Datentyp reg (da er Werte in einer testbench speichert)

  
  integer i;
  
  initial begin
    test_data[0] = 170;   
    test_data[1] = 240;    
    test_data[2] = 204;    
    test_data[3] = 15;   
    
    for (i = 0; i < 4; i = i + 1) begin
      $display("test_data[%0d] = %b", i, test_data[i]);
    end
    $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