Menu
Coddy logo textTech

Zustände definieren

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

challenge icon

Aufgabe

Ein Ampel-Controller ist eine Zustandsmaschine (Finite State Machine), die verschiedene Lichtzustände (Rot, Gelb, Grün) mit spezifischen Zeitintervallen durchläuft. Eine Zustandsmaschine (FSM) ist eine Schaltung, die sich in einer begrenzten Anzahl von Zuständen befinden kann. Sie wechselt basierend auf Eingaben oder Zeitvorgaben von einem Zustand in einen anderen.

In diesem Projekt wirst du einen Ampel-Controller für eine einfache Kreuzung bauen. Die Ampel hat drei Ausgänge:

LichtAusgangBedeutung
Rotred = 1Stopp
Gelbyellow = 1Achtung
Grüngreen = 1Fahren

Die Lichter wechseln in dieser Reihenfolge:

Green → Yellow → Red → Green → …

Zeitliche Abfolge

ZustandDauerNächster Zustand
Grün30 SekundenGelb
Gelb10 SekundenRot
Rot40 SekundenGrün

In dieser Lektion wirst du die Zustände für den Ampel-Controller definieren.

Eine Ampel hat drei mögliche Zustände:

ZustandLichtCode
GrünGrünes Licht AN2'b00
GelbGelbes Licht AN2'b01
RotRotes Licht AN2'b10

Vervollständige das Modul, indem du die fehlenden Teile hinzufügst.

Was zu tun ist:

Definiere die Zustandskodierung: 0=Green, 1=Yellow, 2=Red

  1. Deklariere ein 2-Bit-Register namens state
  2. Deklariere ein 6-Bit-Register namens counter (für Zeitmessungen bis zu 40 Sekunden)
  3. Füge Ausgangszuweisungen hinzu:
    • Wenn der Zustand 0 ist: green = 1, yellow = 0, red = 0
    • Wenn der Zustand 1 ist: green = 0, yellow = 1, red = 0
    • Wenn der Zustand 2 ist: green = 0, yellow = 0, red = 1

Probier es selbst

module traffic_light (
  input clk,
  input reset,
  output reg red,
  output reg yellow,
  output reg green
);
  // TODO: Aufgabe 1 - Zustandsregister deklarieren (2 Bits)
  
  // TODO: Aufgabe 2 - Zählerregister deklarieren (6 Bits)
  

  // TODO: Aufgabe 3 - Ausgangszuweisungen mittels case (state)
  // Zustand 0: green=1, yellow=0, red=0
  // Zustand 1: green=0, yellow=1, red=0
  // Zustand 2: green=0, yellow=0, red=1

endmodule

Alle Lektionen in Grundlagen