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 werden Sie die Zustandsübergangslogik zum Ampel-Controller hinzufügen. Die Zustandsmaschine bestimmt, wann von einem Zustand in den nächsten gewechselt wird.

Die Logik der Zustandsmaschine steuert, wann und wie die Ampel ihre Zustände ändert.

Zustandsreihenfolge

Grün → Gelb → Rot → Grün → …

Ihre Aufgabe ist es, die Zustandsmaschinen-Logik zum Modul hinzuzufügen.

Was zu tun ist:

  1. Fügen Sie einen always @(posedge clk or posedge reset)-Block hinzu
  2. Setzen Sie bei einem Reset den state auf Red (2)
  3. Wenn next gleich 1 ist, wechseln Sie in den nächsten Zustand:
    • Wenn state Green (0) ist: wechseln Sie zu Yellow
    • Wenn state Yellow (1) ist: wechseln Sie zu Red
    • Wenn state Red (2) ist: wechseln Sie 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;

  // Ausgabezuweisungen
  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: Zustandsmaschinenlogik 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