Zustandsautomaten-Logik
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 80 von 90.
Aufgabe
In dieser Lektion wirst du die Zustandsübergangslogik zum Ampel-Controller hinzufügen. Die State Machine bestimmt, wann von einem Zustand in den nächsten gewechselt wird.
Die Logik der State Machine steuert, wann und wie die Ampel die Zustände wechselt.
Zustandsfolge
Green → Yellow → Red → Green → …
Deine Aufgabe ist es, die Logik der State Machine zum Modul hinzuzufügen.
Was zu tun ist:
- Füge einen
always @(posedge clk or posedge reset)Block hinzu - Setze bei einem Reset
stateauf Red (2) - Wenn
next1 ist, wechsle in den nächsten Zustand:- Wenn der Zustand Green (0) ist: wechsle zu Yellow
- Wenn der Zustand Yellow (1) ist: wechsle zu Red
- Wenn der Zustand Red (2) ist: wechsle zu Green
Probier es selbst
module traffic_light (
input clk,
input reset,
input next, // Auslöser zum Zustandswechsel
output reg red,
output reg yellow,
output reg green
);
reg [1:0] state;
// Zuweisung der Ausgänge
always @(*) begin
case (state)
0: begin green = 1; yellow = 0; red = 0; end
1: begin green = 0; yellow = 1; red = 0; end
2: begin green = 0; yellow = 0; red = 1; end
default: begin green = 0; yellow = 0; red = 1; end
endcase
end
// TODO: Logik der Zustandsmaschine hinzufügen (ohne Timing)
// always @(posedge clk or posedge reset) begin
// if (reset) begin
// state <= 2;
// end else if (next) begin
// case (state)
// 0: state <= 1;
// 1: state <= 2;
// 2: state <= 0;
// endcase
// end
// end
endmoduleAlle 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 erstellen9Prozedurale Blöcke
Always-BlockInitial-BlockSensitivitätslisteBlockierende ZuweisungNicht-blockierende ZuweisungZusammenfassung – Always vs. Initial15Ampelsteuerung
Zustände definierenZustandsautomaten-Logik