Menu
Coddy logo textTech

Durum Makinesi Mantığı

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

challenge icon

Görev

Bu derste, trafik ışığı denetleyicisine durum geçişi mantığını ekleyeceksin. Durum makinesi, bir durumdan bir sonraki duruma ne zaman geçileceğini belirler.

Durum makinesi mantığı, trafik ışığının durumlarını ne zaman ve nasıl değiştireceğini kontrol eder.

Durum Sırası

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

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

Bu adımda yeni bir giriş sinyali olan next, her değişikliği tetikler; zamanlama sayacı bir sonraki adımda eklenecek. Önceki adımda yazdığın her şeyi (state yazmacını, kullanılmayan counter bildirimini ve çıktı always @(*) bloğunu) koru.

Yapılacaklar:

  1. Modül başlığına, reset'ten sonra next adlı 1 bitlik bir giriş portu ekle: input next,. Testbench, bir sonraki durumu istemek için bu porta darbe uygular
  2. Bir always @(posedge clk or posedge reset) bloğu ekle
  3. Reset durumunda state değerini Kırmızı'ya (2) ayarla
  4. next 1 olduğunda bir sonraki duruma geç:
    • Durum Yeşil (0) ise Sarı'ya değiştir
    • Durum Sarı (1) ise Kırmızı'ya değiştir
    • Durum Kırmızı (2) ise Yeşil'e değiştir

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;

  // Çıkış 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

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi