Integrierte Gatter-Primitive
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 39 von 90.
Verilog verfügt über integrierte gate-Primitives, mit denen Sie Logikschaltungen mithilfe tatsächlicher Gate-Symbole beschreiben können. Dies wird als strukturelle Modellierung (structural modeling) bezeichnet — Sie bauen Schaltungen auf, indem Sie Gates verbinden, genau wie beim Zeichnen eines Schaltplans.
Gate-Primitives sind vordefinierte Schlüsselwörter, die grundlegende Logikgatter modellieren. Anstatt einen Ausdruck wie assign out = a & b zu schreiben, instanziieren Sie ein Gate:
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 der output
- Die folgenden Argumente sind inputs (1 oder mehr, abhängig vom gate)
Verfügbare Gate Primitives
| Gate-Typ | Schlüsselwort | Anzahl der Inputs |
|---|---|---|
| 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 Gate Primitives funktionieren
Wenn Sie and(out, a, b) schreiben, erstellt Verilog ein AND-Gate, das out kontinuierlich mit dem Ergebnis von a & b ansteuert. Wann immer sich a oder b ändert, wird out sofort aktualisiert — genau wie ein echtes Gate.
Gate Primitives vs Continuous Assignment
Beide Methoden erzeugen dieselbe Hardware:
// Gatter-Primitive
and(out, a, b);
// Kontinuierliche Zuweisung (gleiches Ergebnis)
assign out = a & b;Gate primitives sind nützlich, wenn Sie eine Schaltung als eine Sammlung von gates (structural Stil) beschreiben möchten. Continuous assignment ist besser für den behavioral Stil (Ausdrücke).
Aufgabe
Was zu tun ist:
- Fügen Sie das `correct` `gate` `primitive` hinzu, damit diese Schaltung funktioniert. Das `module` `should` das AND der `inputs`
aundbausgeben. Der `output`-Port ist bereitscgenannt.
Probier es selbst
module gate_challenge (
input a,
input b,
output c
);
// TODO: Füge das korrekte Gate-Primitive hinzu
// Die Ausgabe c sollte a AND 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