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 GanzzahlenDie 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: 255Arrays 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 dezimalArray vs Vector
| Vector | Array | |
|---|---|---|
| Was es ist | Multi-bit wire oder reg | Sammlung mehrerer Werte |
| Syntax | [MSB:LSB] | [size] |
| Beispiel | reg [7:0] data; | reg [7:0] mem [0:255]; |
| Zugriff | data[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
arrayssind in vielen Tools nicht synthetisierbar, wenn sie mit großen Größen verwendet werdenarrayswerden hauptsächlich intestbenchesverwendet- Verwenden Sie für Hardware-
memoryspezielle Speicherprimitiven
Aufgabe
Vervollständige den folgenden Code, um ein Array zu erstellen, das 4 Testwerte speichert.
Was zu tun ist:
- Deklariere ein Array namens
test_data- Verwende den Datentyp
reg(weil er Werte in einem Testbench speichert) - Jedes Element sollte 8 Bits breit sein (
[7:0]) - Das Array sollte 4 Elemente haben (
[0:3])
- Verwende den Datentyp
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
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareAbstraktionsebenen im DesignDein erstes ModulKommentare4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – Einfache MathematikBitweise Operatoren7Zuweisung und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-PrimitiveAND OR NOT GatterXOR XNOR GatterZusammenfassung - Logikgatterschaltung10Entscheidungsfindung
If-AnweisungIf - ElseWiederholung - Einfacher KomparatorCase-AnweisungCasex und CasezWiederholung - ALU-Design5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenShift-OperatorenVerkettungsoperatorBedingter OperatorZusammenfassung – Operator-Challenge11Schleifen
For-SchleifeWhile-SchleifeRepeat-SchleifeEndlosschleifeDisable-AnweisungRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit GrößenangabeZahlen ohne GrößenangabeNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturEingangs- und Ausgangs-PortsInout-PortsModul-InstanziierungPort-Mapping nach NamePort-Mapping nach ReihenfolgeZusammenfassung – Ein Modul erstellen