Modulstruktur
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 30 von 90.
Ein Modul ist der grundlegende Baustein in Verilog. Jedes Design besteht aus Modulen, die miteinander verbunden werden, um größere Systeme zu bilden.
Ein Modul ist eine Hardwarekomponente mit:
- Einem Namen
- Eingängen (eingehende Signale)
- Ausgängen (ausgehende Signale)
- Interner Logik (was das Modul tut)
Stell dir ein Modul als Chip mit Pins und einer internen Schaltung vor.
Grundlegende Modulstruktur
Jedes Modul folgt dieser Struktur:
module module_name (
input signals,
output signals
);
// Interne Deklarationen (wires, regs usw.)
// Logik (assign-Anweisungen, always-Blöcke usw.)
endmoduleBestandteile eines Moduls
| Bestandteil | Zweck |
|---|---|
module-Schlüsselwort | Beginnt die Moduldefinition |
module_name | Name des Moduls |
( ) | Liste der Eingangs- und Ausgangsanschlüsse |
input / output | Legt die Richtung der Anschlüsse fest |
| Modulkörper | Interne Logik und Verbindungen |
endmodule | Beendet die Moduldefinition |
Einfaches Modulbeispiel
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmoduleDieses Modul:
- Heißt
and_gate - Hat zwei Eingänge (
a,b) - Hat einen Ausgang (
c) - Enthält eine
assign-Anweisung, die die Logik definiert
Regeln für die Modulstruktur
- Ein Modul pro Datei ist gängige Praxis
- Der Modulname sollte seine Funktion beschreiben
- Ports werden nach dem Namen in Klammern aufgeführt
- Eingänge sind immer
input(können nicht innerhalb geschrieben werden) - Ausgänge sind
output(könnenregoderwiresein) endmodulemuss das Modul schließen
Aufgabe
Fülle die fehlenden Teile aus, um dieses Modul zu vervollständigen.
Was zu tun ist:
- Füge den Modulnamen
my_andhinzu - Füge einen
inputfürxhinzu - Füge einen
inputfüryhinzu - Füge einen
outputfürzhinzu - Füge die interne Logik mit
assignhinzu
Probier es selbst
module ______ ( // Modulnamen hinzufügen
input x, // Eingang hinzufügen
input y, // Eingang hinzufügen
output z // Ausgang hinzufügen
);
// Hier eine assign-Anweisung hinzufügen (z = x & y)
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