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 einzigen Variable 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 (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 Klammern [ ] ist die array size, 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 sehr nützlich in testbenches zum Speichern von test data.

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 Vector

 VectorArray
Was es istMulti-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 Einzelwert mit mehreren bits.
Ein array ist mehrere values, each mit seinen eigenen bits.

Wichtige Hinweise

  • arrays sind in vielen Tools nicht synthetisierbar, wenn sie mit großen Größen verwendet werden
  • arrays werden hauptsächlich in testbenches verwendet
  • Verwenden Sie für Hardware-memory spezielle Speicherprimitiven
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 einem Testbench speichert)
    2. Jedes Element sollte 8 Bits 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, 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