Menu
Coddy logo textTech

Defining The States

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

challenge icon

Görev

Bir traffic light controller, belirli zaman aralıklarıyla farklı ışık state'leri (Kırmızı, Sarı, Yeşil) arasında geçiş yapan bir sonlu durum makinesidir. Sonlu durum makinesi (FSM), sınırlı sayıda state'ten birinde bulunabilen bir devredir. Girişlere veya zamanlamaya bağlı olarak bir state'ten diğerine geçer.

Bu projede basit bir kavşak için bir traffic light controller oluşturacaksınız. Traffic light'ı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ü yapar:

Green → Yellow → Red → Green → …

Zamanlama Sırası

StateSüreSonraki State
Green30 saniyeYellow
Yellow10 saniyeRed
Red40 saniyeGreen

Bu derste traffic light controller için state'leri tanımlayacaksınız.

Bir traffic light'ın üç olası state'i vardır:

StateIşıkKod
GreenYeşil ışık AÇIK2'b00
YellowSarı ışık AÇIK2'b01
RedKırmızı ışık AÇIK2'b10

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

Yapılacaklar:

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

  1. state adlı 2 bitlik bir register Declare edin
  2. 40 saniyeye kadar zamanlama için counter adlı 6 bitlik bir register Declare edin
  3. Çıkış atamalarını, içinde case (state) bulunan bir kombinasyonel always bloğunun, always @(*) begin ... end, içine ekleyin. red, yellow ve green, output reg olarak Declare edilir ve bir reg yalnızca böyle bir blok içinde atanabilir. @(*), bloğun okuduğu herhangi bir şey değiştiğinde bloğun yeniden çalışacağı anlamına gelir; burada bu şey state'tir:
    • 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 - Sayaç 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

Kendi başına pratik yap: Online Verilog derleyicisi