Integrierte Gatter-Primitive
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 39 von 90.
Verilog verfügt über integrierte Gatter-Primitive, mit denen Sie Logikschaltungen unter Verwendung tatsächlicher Gattersymbole beschreiben können. Dies wird als strukturelle Modellierung bezeichnet – Sie bauen Schaltungen auf, indem Sie Gatter miteinander verbinden, genau wie beim Zeichnen eines Schaltplans.
Gatter-Primitive sind vordefinierte Schlüsselwörter, die grundlegende Logikgatter modellieren. Anstatt einen Ausdruck wie assign out = a & b zu schreiben, instanziieren Sie ein Gatter:
and(out, a, b); // AND-Gatter mit Ausgang out, Eingängen a und bAllgemeine Syntax
gate_type (output, input1, input2, ...);- Das erste Argument ist immer die Ausgabe
- Die folgenden Argumente sind Eingaben (1 oder mehr, abhängig vom Gate)
Verfügbare Gate-Primitive
| Gate-Typ | Schlüsselwort | Anzahl der Eingänge |
|---|---|---|
| AND | and | 2 oder mehr |
| OR | or | 2 oder mehr |
| NOT | not | 1 |
| NAND | nand | 2 oder mehr |
| NOR | nor | 2 oder mehr |
| XOR | xor | 2 oder mehr |
| XNOR | xnor | 2 oder mehr |
Wie Gatter-Primitive funktionieren
Wenn Sie and(out, a, b) schreiben, erstellt Verilog ein AND-Gatter, das kontinuierlich out mit dem Ergebnis von a & b ansteuert. Wann immer sich a oder b ändert, wird out sofort aktualisiert – genau wie ein echtes Gatter.
Gatter-Primitive vs. kontinuierliche Zuweisung
Beide Methoden erzeugen dieselbe Hardware:
// Gatter-Primitiv
and(out, a, b);
// Kontinuierliche Zuweisung (gleiches Ergebnis)
assign out = a & b;Gate-Primitive sind nützlich, wenn Sie eine Schaltung als eine Sammlung von Gattern (struktureller Stil) beschreiben möchten. Kontinuierliche Zuweisung ist besser für den Verhaltensstil (Ausdrücke) geeignet.
Aufgabe
Was zu tun ist:
- Füge das richtige Gate-Primitiv hinzu, damit diese Schaltung funktioniert. Das Modul soll das UND der Eingänge
aundbausgeben. Der Ausgangsport ist bereits mitcbenannt.
Spickzettel
Gatter-Primitive in Verilog ermöglichen die strukturelle Modellierung durch die direkte Instanziierung von Logikgattern.
Syntax: Das erste Argument ist immer der Ausgang, gefolgt von den Eingängen:
gate_type(output, input1, input2, ...);Verfügbare Primitive:
| Gatter | Schlüsselwort | Eingänge |
|---|---|---|
| AND | and | 2+ |
| OR | or | 2+ |
| NOT | not | 1 |
| NAND | nand | 2+ |
| NOR | nor | 2+ |
| XOR | xor | 2+ |
| XNOR | xnor | 2+ |
Gatter-Primitive und assign erzeugen gleichwertige Hardware:
and(out, a, b); // structural (gate primitive)
assign out = a & b; // behavioral (continuous assignment)Probier es selbst
module gate_challenge (
input a,
input b,
output c
);
// TODO: Füge das korrekte Gate-Primitiv hinzu
// Der Ausgang c sollte a UND b sein
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