Menu
Coddy logo textTech

Arrays

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

Ein array ermöglicht es dir, mehrere values in einer Variable zu speichern. Auf jedes element im array kann über seinen Index zugegriffen werden.

Hinweis: Ein array ist kein eigener data type. 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 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 bit-Breite.

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 zum Speichern von Test data.

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-wire oder regSammlung mehrerer values
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 values, each mit seinen eigenen bits.

Wichtige Hinweise

  • Arrays sind bei Verwendung großer Größen in vielen Tools nicht synthetisierbar
  • Arrays werden hauptsächlich in testbenches verwendet
  • Verwende für Hardware-memory spezielle memory-Primitiven
challenge icon

Aufgabe

Vervollständige den folgenden Code, um ein array zu erstellen, das 4 Testwerte stores.

Was zu tun ist: 

  1. Declare ein array namens test_data
    1. Verwende den Datentyp reg (because er values in einem testbench stores)
    2. Jedes element sollte 8 bits wide sein ([7:0])
    3. Das array sollte 4 elements haben ([0:3])

Probier es selbst

module arrays;
  
  // Deklariere ein Array namens test_data
  // Es sollte 4 Elemente haben, jeweils 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