Menu
Coddy logo textTech

Zustände definieren

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

challenge icon

Aufgabe

Ein traffic light controller ist eine endliche Zustandsmaschine (Finite State Machine), die mit bestimmten Zeitintervallen durch verschiedene Lichtzustände (Rot, Gelb, Grün) wechselt. Eine finite state machine (FSM) ist eine Schaltung, die sich in einem von einer begrenzten Anzahl von Zuständen befinden kann. Sie wechselt basierend auf Eingaben oder Timing von einem Zustand in einen anderen.

In diesem Projekt bauen Sie eine Ampelsteuerung für eine einfache Kreuzung. Die Ampel hat drei Ausgänge:

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

Die Lichter wechseln in dieser Reihenfolge:

Green → Yellow → Red → Green → …

Zeitablauf

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

In dieser Lektion definieren Sie die Zustände für die Ampelsteuerung.

Eine Ampel hat drei mögliche Zustände:

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

Vervollständigen Sie das module, indem Sie die fehlenden Teile hinzufügen.

Was zu tun ist:

Definieren Sie die Zustandskodierung: 0=Grün, 1=Gelb, 2=Rot

  1. Declare ein 2-Bit-register namens state
  2. Declare ein 6-Bit-register namens counter (für Zeiten bis zu 40 Sekunden)
  3. Fügen Sie Output-assignments hinzu:
    • Wenn state 0 ist: green = 1, yellow = 0, red = 0
    • Wenn state 1 ist: green = 0, yellow = 1, red = 0
    • Wenn state 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 - Ausgabezuweisungen mit 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