Menu
CoddyTech

Arrays

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

Ein Array ermöglicht es dir, mehrere Werte in einer Variablen zu speichern. Auf jedes Element im Array kannst du über seinen Index zugreifen.

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

Arrays deklarieren

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

reg [7:0] memory [0:255];   // 256 Byte Speicher (jeweils 8 Bit)
reg data [0:7];              // 8 Ein-Bit-Register
wire [3:0] bus [0:3];       // 4 Busse mit jeweils 4 Bit Breite
integer counters [0:9];      // 10 Ganzzahlen

Die Zahl in eckigen Klammern [ ] ist die Arraygröße, nicht die Bitbreite.

Auf Array-Elemente zugreifen

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 mit 8-Bit-Werten
matrix[0][0] = 255;            // 8'hFF = 255 dezimal
matrix[2][1] = 85;             // 8'h55 = 85 dezimal

Vektor vs. Array

 VektorArray
Was es istMehrbitige 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

  • Ein reg-Array ist synthetisierbar: Synthesewerkzeuge erstellen Speicher wie RAMs und Registerdateien aus Arrays wie reg [7:0] mem [0:255];
  • Arrays werden auch in Testbenches verwendet, um Testdaten zu speichern
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 soll 4 Elemente haben, die jeweils 8 Bit breit sind
  // 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