Menu
Coddy logo textTech

Arrays

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

Mit einem Array kannst du mehrere Werte in einer Variablen speichern. Auf jedes Element im Array kann über seinen Index zugegriffen werden.

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

Arrays deklarieren

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

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

Die Zahl in den eckigen 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

Du kannst 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
Was es istMehrbit-Leitung 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 besteht aus mehreren Werten, von denen jeder seine eigenen Bits hat.

Wichtige Hinweise

  • Arrays sind bei Verwendung großer Größen in vielen Tools nicht synthetisierbar
  • Arrays werden hauptsächlich in Testbenches verwendet
  • Für Hardwarespeicher solltest du spezielle Speicherprimitive verwenden
challenge icon

Aufgabe

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

Was zu tun ist: 

  1. Deklariere ein Array namens test_data
    1. Verwende den Datentyp reg (weil 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])

Probier es selbst

module arrays;
  
  // Deklariere ein Array namens test_data
  // Es sollte 4 Elemente haben, jedes 8 Bit breit
  // Verwende den Datentyp reg (weil 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

Übe selbstständig: Online-Verilog-Compiler