Wiederholung - ALU-Design
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 57 von 90.
Aufgabe
Eine ALU (Arithmetic Logic Unit) ist eine digitale Schaltung, die zwei Eingänge entgegennimmt, eine Operation an ihnen durchführt und einen Ausgang erzeugt. Sie führt arithmetische und logische Operationen auf zwei Eingängen basierend auf einem Auswahlsignal aus. Das select-Signal wählt eine auszuführende Operation aus.
Wie es funktioniert
| select | Operation | Ausgang |
|---|---|---|
2'b00 | Addition | a + b |
2'b01 | Subtraktion | a - b |
2'b10 | Bitweises UND | a & b |
2'b11 | Bitweises ODER | a | b |
Erstellen Sie eine einfache ALU mit einer case-Anweisung.
Was zu tun ist:
- Erstellen Sie ein Modul namens
alu - Fügen Sie Eingänge hinzu:
a(4-Bit),b(4-Bit),select(2-Bit) - Fügen Sie einen Ausgang hinzu:
result(4-Bit, Typ reg) - Fügen Sie einen
always @(*)-Block hinzu - Fügen Sie darin eine
case (select)-Anweisung hinzu - Fügen Sie vier Fälle für
2'b00,2'b01,2'b10,2'b11hinzu - Fügen Sie einen
default-Fall hinzu, umresult = 0zu setzen - Schließen Sie mit
endcaseundendmoduleab
Probier es selbst
// TODO: Erstelle Modul alu
// TODO: Eingänge hinzufügen (a, b, select)
// TODO: Ausgang hinzufügen (result)
// TODO: always @(*)-Block hinzufügen
// TODO: case (select) hinzufügen
// TODO: case 2'b00: result = a + b; hinzufügen
// TODO: case 2'b01: result = a - b; hinzufügen
// TODO: case 2'b10: result = a & b; hinzufügen
// TODO: case 2'b11: result = a | b; hinzufügen
// TODO: default: result = 0; hinzufügen
// TODO: endcase hinzufügen
// TODO: endmodule hinzufügenAlle 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