Menu
Coddy logo textTech

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 b

Allgemeine 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-TypSchlüsselwortAnzahl der Eingänge
ANDand2 oder mehr
ORor2 oder mehr
NOTnot1
NANDnand2 oder mehr
NORnor2 oder mehr
XORxor2 oder mehr
XNORxnor2 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.

challenge icon

Aufgabe

Was zu tun ist:

  1. Füge das richtige Gate-Primitiv hinzu, damit diese Schaltung funktioniert. Das Modul soll das UND der Eingänge a und b ausgeben. Der Ausgangsport ist bereits mit c benannt.

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:

GatterSchlüsselwortEingänge
ANDand2+
ORor2+
NOTnot1
NANDnand2+
NORnor2+
XORxor2+
XNORxnor2+

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

endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen