Vektoren
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 9 von 90.
Ein Vektor ist ein mehrbitiges wire oder reg. Anstatt eines einzelnen Bits ermöglichen Vektoren die Arbeit mit Datenbussen. Es handelt sich um eine Sammlung von Bits, die gruppiert sind.
Hinweis: Ein Vektor ist kein separater Datentyp. Es ist lediglich eine Multi-Bit-Version von wire oder reg.
wire single; // Einzelnes Bit
wire [7:0] bus; // 8-Bit-Vektor (Bits 7 bis 0)Um einen Vektor zu deklarieren, verwenden Sie die Syntax [MSB:LSB], wobei MSB das höchstwertige Bit (most significant bit) und LSB das niederwertigste Bit (least significant bit) ist.
wire [3:0] a; // 4-Bit Wire-Vektor
reg [7:0] data; // 8-Bit Reg-Vektor
wire [15:0] addr; // 16-Bit Wire-VektorZugriff auf Bits
Wenn Sie auf einzelne Bits oder Slices eines Vektors zugreifen, verwenden Sie Dezimalzahlen für die Bitpositionen (Indizes) und Binärwerte (0 oder 1) für die Zuweisungen.
Dies liegt daran, dass eine Bitposition ein Ort (wie eine Adresse) ist, der natürlicherweise als Dezimalzahl ausgedrückt wird, während der in diesem Bit gespeicherte Wert nur 0 oder 1 sein kann – eine binäre Entscheidung.
Zum Beispiel bedeutet data[0] „Bit Nummer Null“ und = 1 bedeutet „setze es auf High“. Sie können einem einzelnen Bit keine Dezimalzahl wie 75 zuweisen, da ein Bit keinen Platz für andere Werte als 0 oder 1 hat.
reg [7:0] data;
data = 170;
data[0] = 1; // LSB auf 1 setzen
data[7] = 0; // MSB auf 0 setzen
data[3:1] = 3'b101; // Bits 3,2,1 auf 101 setzen (Binärwert bleibt)Bit-Reihenfolge
Die Reihenfolge der Bits ist wichtig:
wire [3:0] a; // a[3] ist MSB, a[0] ist LSB
wire [0:3] b; // b[0] ist MSB, b[3] ist LSB (weniger gebräuchlich)Die meisten Designer verwenden das [MSB:LSB]-Format mit dem MSB auf der linken Seite.
Werte zuweisen
reg [3:0] a;
a = 10;
a = 5;
a = 3; Vektor-Slices
Sie können auf einen Bereich von Bits zugreifen:
reg [15:0] word;
word[15:8] = 255; // Zuweisung des oberen Bytes (8'hFF = 255)
word[7:0] = 0; // Zuweisung des unteren Bytes (8'h00 = 0)
word[3:1] = 3'b101; // Zuweisung eines Slices Aufgabe
Das untenstehende Modul benötigt Vektordeklarationen.
Was zu tun ist:
- Ändern Sie jeden input und output in 8-Bit-Vektoren.
Spickzettel
Ein Vektor ist ein mehrbitiges wire oder reg, das mit der Syntax [MSB:LSB] deklariert wird:
wire [7:0] bus; // 8-Bit-Wire-Vektor
reg [15:0] addr; // 16-Bit-Reg-VektorZugriff auf einzelne Bits und Slices:
reg [7:0] data;
data[0] = 1; // LSB auf 1 setzen
data[7] = 0; // MSB auf 0 setzen
data[3:1] = 3'b101; // Bits 3,2,1 mit Binärwert setzenBit-Reihenfolge: [MSB:LSB] ist die Standardkonvention (z. B. bedeutet [7:0], dass Bit 7 das MSB und Bit 0 das LSB ist).
Probier es selbst
module vector_example(
input a, // Zu 8-Bit-Vektor [7:0] ändern
input b, // Zu 8-Bit-Vektor [7:0] ändern
output c // Zu 8-Bit-Vektor [7:0] ändern
);
assign c = a & b;
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