Menu
Coddy logo textTech

Durum Makinesi Mantığı

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

challenge icon

Görev

Bu derste, trafik ışığı denetleyicisine durum geçiş mantığını (state transition logic) ekleyeceksiniz. Durum makinesi bir durumdan diğerine ne zaman geçileceğini belirler.

Durum makinesi mantığı, trafik ışığının durumunun ne zaman ve nasıl değişeceğini denetler.

Durum Dizilimi

Yeşil → Sarı → Kırmızı → Yeşil → …

Göreviniz, modüle durum makinesi mantığını eklemektir.

Yapılacaklar:

  1. Bir always @(posedge clk or posedge reset) bloğu ekleyin
  2. Sıfırlamada (reset), state değerini Kırmızı (2) olarak ayarlayın
  3. next değeri 1 olduğunda bir sonraki duruma geçin:
    • Eğer state Yeşil (0) ise: Sarı olarak değiştirin
    • Eğer state Sarı (1) ise: Kırmızı olarak değiştirin
    • Eğer state Kırmızı (2) ise: Yeşil olarak değiştirin

Kendin dene

module traffic_light (
  input clk,
  input reset,
  input next,           // Durumu değiştirmek için tetikleyici
  output reg red,
  output reg yellow,
  output reg green
);

  reg [1:0] state;

  // Çıktı atamaları
  always @(*) begin
    case (state)
      0: begin green = 1; yellow = 0; red = 0; end
      1: begin green = 0; yellow = 1; red = 0; end
      2: begin green = 0; yellow = 0; red = 1; end
      default: begin green = 0; yellow = 0; red = 1; end
    endcase
  end

  // TODO: Durum makinesi mantığını ekle (zamanlama olmadan)
  // always @(posedge clk or posedge reset) begin
  //   if (reset) begin
  //     state <= 2;
  //   end else if (next) begin
  //     case (state)
  //       0: state <= 1;
  //       1: state <= 2;
  //       2: state <= 0;
  //     endcase
  //   end
  // end

endmodule

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