Integrierte Gatter-Grundelemente
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 39 von 90.
Verilog verfügt über integrierte Gatterprimitive, mit denen du Logikschaltungen mithilfe tatsächlicher Gattersymbole beschreiben kannst. Dies wird als strukturelle Modellierung bezeichnet. Du baust Schaltungen auf, indem du Gatter verbindest, genau wie beim Zeichnen eines Schaltplans.
Gatterprimitive sind vordefinierte Schlüsselwörter, die grundlegende Logikgatter modellieren. Anstatt einen Ausdruck wie assign out = a & b zu schreiben, instanziierst du 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 Gatter)
Verfügbare Gatter-Grundelemente
| Gattertyp | 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-Grundelemente funktionieren
Wenn du and(out, a, b) schreibst, erstellt Verilog ein UND-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.
Gatterprimitive vs. kontinuierliche Zuweisung
Beide Methoden erzeugen dieselbe Hardware:
// Gatter-Primitive
and(out, a, b);
// Kontinuierliche Zuweisung (gleiches Ergebnis)
assign out = a & b;Gatterprimitive sind nützlich, wenn du eine Schaltung als Sammlung von Gattern (struktureller Stil) beschreiben möchtest. Eine kontinuierliche Zuweisung eignet sich besser für den verhaltensorientierten Stil (Ausdrücke).
Aufgabe
Was zu tun ist:
- Füge das richtige Gatterelement hinzu, damit diese Schaltung funktioniert. Das Modul sollte das AND der Eingänge
aundbausgeben. Der Ausgangsport 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 Designs4Operatoren Teil 1
Arithmetische OperatorenModulo-OperatorVergleichsoperatorenWiederholung – einfache MathematikBitweise Operatoren7Zuweisungen und Gatter
Kontinuierliche ZuweisungZuweisung mit OperatorenIntegrierte Gatter-GrundelementeUND-, ODER- und NICHT-GatterXOR- und XNOR-GatterRückblick – Logikgatter-Schaltung10Entscheidungsfindung
If-AnweisungIf – ElseRückblick – Einfacher KomparatorCase-AnweisungCasex und CasezRückblick – ALU-Entwurf13Zeitsteuerung und Verzögerungen
Was sind Verzögerungen?GatterverzögerungenZuweisungsverzögerungenTimescale-DirektiveTakterzeugungZusammenfassung – Zeitsteuerung2Datentypen
Wire-TypReg-TypInteger und RealVektorenArraysParameterZusammenfassung – Signale deklarieren5Operatoren Teil 2
Logische OperatorenReduktionsoperatorenSchiebeoperatorenVerkettungsoperatorBedingter OperatorRückblick – Operatoren-Herausforderung11Schleifen
For-SchleifeWhile-SchleifeWiederholungsschleifeEndlosschleifeAnweisung deaktivierenRückblick – Schleifenmuster3Zahlensystem
Binäre DarstellungZahlen mit fester BreiteZahlen ohne feste BreiteNegative ZahlenSpezialwerte X und ZZusammenfassung – Zahlenformate6Module
ModulstrukturInput- und Output-PortsInout-PortsModulinstanziierungPortzuordnung nach NamenPortzuordnung nach ReihenfolgeRückblick – Ein Modul erstellenÜbe selbstständig: Online-Verilog-Compiler