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 ışığı kontrolcüsü, belirli zaman aralıklarıyla farklı ışık durumları (Kırmızı, Sarı, Yeşil) arasında döngü yapan sonlu bir 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 ışığı kontrolcüsü inşa edeceksiniz. Trafik ışığının üç çıkışı vardır:

İşıkOutputAnlamı
Kırmızıred = 1Dur
Sarıyellow = 1Dikkat
Yeşilgreen = 1Geç

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

Green → Yellow → Red → Green → …

Zamanlama Sırası

stateSüreSonraki Durum
green30 saniyeyellow
yellow10 saniyered
red40 saniyegreen

Bu derste, trafik ışığı kontrolcüsü için durumları tanımlayacaksınız.

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

stateİşıkKod
greenYeşil ışık AÇIK2'b00
yellowSarı ışık AÇIK2'b01
redKırmızı ışık AÇIK2'b10

Eksik bölümleri ekleyerek module yapısını 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 (Declare)
  2. 40 saniyeye kadar zamanlama için counter adında 6 bitlik bir register tanımlayın (Declare)
  3. Çıkış atamalarını (assignments) ekleyin:
    • state 0 olduğunda: green = 1, yellow = 0, red = 0
    • state 1 olduğunda: green = 0, yellow = 1, red = 0
    • state 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
);
  // TODO: Görev 1 - Durum register'ını tanımla (2 bit)
  
  // TODO: Görev 2 - Sayıcı register'ını tanımla (6 bit)
  

  // TODO: Görev 3 - case (state) kullanarak çıkış atamaları
  // 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