Rückblick – ALU-Entwurf
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 57 von 90.
Aufgabe
Eine ALU (Arithmetisch-logische Einheit) ist eine digitale Schaltung, die zwei Eingaben entgegennimmt, eine Operation darauf ausführt und eine Ausgabe erzeugt. Sie führt arithmetische und logische Operationen mit zwei Eingaben auf Grundlage eines Auswahlsignals aus. Das Signal select wählt eine auszuführende Operation aus.
So funktioniert sie
| select | Operation | Ausgabe |
|---|---|---|
2'b00 | Addition | a + b |
2'b01 | Subtraktion | a - b |
2'b10 | Bitweises AND | a & b |
2'b11 | Bitweises OR | a | b |
Erstelle eine einfache ALU mit einer case-Anweisung.
Aufgabe:
- Erstelle ein Modul namens
alu - Füge Eingaben hinzu:
a(4-Bit),b(4-Bit),select(2-Bit) - Füge die Ausgabe hinzu:
result(4-Bit, Typ reg) - Füge einen
always @(*)-Block hinzu - Füge darin eine
case (select)-Anweisung hinzu - Füge vier Fälle für
2'b00,2'b01,2'b10,2'b11hinzu - Füge einen
default-Fall hinzu, derresult = 0setzt - Schließe mit
endcaseundendmoduleab
Probier es selbst
// TODO: Erstelle module alu
// TODO: Füge inputs (a, b, select) hinzu
// TODO: Füge output (result) hinzu
// TODO: Füge always @(*) block hinzu
// TODO: Füge case (select) hinzu
// TODO: Füge case 2'b00: result = a + b; hinzu
// TODO: Füge case 2'b01: result = a - b; hinzu
// TODO: Füge case 2'b10: result = a & b; hinzu
// TODO: Füge case 2'b11: result = a | b; hinzu
// TODO: Füge default: result = 0; hinzu
// TODO: Füge endcase hinzu
// TODO: Füge endmodule hinzuAlle 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