Menu
Coddy logo textTech

Zustandsautomaten-Logik

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy — Lektion 80 von 90.

challenge icon

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:

  1. Füge einen always @(posedge clk or posedge reset) Block hinzu
  2. Setze bei einem Reset state auf Red (2)
  3. Wenn next 1 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

endmodule

Alle Lektionen in Grundlagen