Menu
Coddy logo textTech

Durumları Tanımlama

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 79 / 90.

challenge icon

Görev

Bir trafik ışığı kontrolörü, belirli zaman aralıklarıyla farklı ışık durumları (Kırmızı, Sarı, Yeşil) arasında geçiş yapan bir sonlu durum makinesidir. Bir sonlu durum makinesi (FSM), sınırlı sayıda durumdan birinde bulunabilen bir devredir. Girişlere veya zamanlamaya bağlı olarak bir durumdan diğerine geçer.

Bu projede, basit bir kavşak için bir trafik ışığı kontrolörü oluşturacaksınız. Trafik ışığının üç çıkışı vardır:

IşıkÇıkışAnlamı
Kırmızıred = 1Dur
Sarıyellow = 1Dikkat
Yeşilgreen = 1Geç

Işıklar şu sırayla döngüye girer:

Green → Yellow → Red → Green → …

Zamanlama Dizisi

DurumSüreSonraki Durum
Yeşil30 saniyeSarı
Sarı10 saniyeKırmızı
Kırmızı40 saniyeYeşil

Bu derste, trafik ışığı kontrolörü için durumları tanımlayacaksınız.

Bir trafik ışığının üç olası durumu vardır:

DurumIşıkKod
YeşilYeşil ışık AÇIK2'b00
SarıSarı ışık AÇIK2'b01
KırmızıKırmızı ışık AÇIK2'b10

Eksik kısımları ekleyerek modülü tamamlayın.

Yapılacaklar:

Durum kodlamasını tanımlayın: 0=Green, 1=Yellow, 2=Red

  1. state adında 2 bitlik bir register tanımlayın
  2. counter adında 6 bitlik bir register tanımlayın (40 saniyeye kadar zamanlama için)
  3. Çıkış atamalarını ekleyin:
    • Durum 0 olduğunda: green = 1, yellow = 0, red = 0
    • Durum 1 olduğunda: green = 0, yellow = 1, red = 0
    • Durum 2 olduğunda: green = 0, yellow = 0, red = 1

Kendin dene

module traffic_light (
  input clk,
  input reset,
  output reg red,
  output reg yellow,
  output reg green
);
  // YAPILACAK: Görev 1 - Durum kaydını tanımlayın (2 bit)
  
  // YAPILACAK: Görev 2 - Sayaç kaydını tanımlayın (6 bit)
  

  // YAPILACAK: Görev 3 - Case (durum) kullanarak çıkış atamalarını yapın
  // durum 0: green=1, yellow=0, red=0
  // durum 1: green=0, yellow=1, red=0
  // durum 2: green=0, yellow=0, red=1

endmodule

Temeller bölümündeki tüm dersler