Built In Gate Primitives
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 39 von 90.
Verilog verfügt über integrierte gate primitives, mit denen du Logikschaltungen mithilfe tatsächlicher gate-Symbole beschreiben kannst. Dies wird als structural-Modellierung bezeichnet. Du erstellst Schaltungen, indem du gates verbindest, genau wie beim Zeichnen eines Schaltplans.
Gate primitive sind vordefinierte Schlüsselwörter, die grundlegende Logik-gates modellieren. Anstatt einen Ausdruck wie assign out = a & b zu schreiben, instanziierst du 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-Primitiven
| 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 |
So funktionieren Gate-Primitiven
Wenn du and(out, a, b) schreibst, erstellt Verilog ein AND-Gatter, das out kontinuierlich mit dem Ergebnis von a & b treibt. Wann immer sich a oder b ändert, wird out sofort aktualisiert, genau wie bei einem echten Gatter.
Gate-Primitives vs. kontinuierliche Zuweisung
Beide Methoden erzeugen dieselbe Hardware:
// Gatter-Primitive
and(out, a, b);
// Kontinuierliche Zuweisung (gleiches Ergebnis)
assign out = a & b;Gate primitive sind nützlich, wenn du eine Schaltung als eine Sammlung von gates (structural style) beschreiben möchtest. Continuous assignment eignet sich besser für behavioral style (Ausdrücke).
Aufgabe
Was zu tun ist:
- Füge das richtige Gate-Primitive hinzu, damit diese Schaltung funktioniert. Das module sollte das AND der inputs
aundbausgeben. Der output-Port heißt bereitsc.
Probier es selbst
module gate_challenge (
input a,
input b,
output c
);
// TODO: Füge das korrekte Gate-Primitiv 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. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicÜbe selbstständig: Online-Verilog-Compiler