Menu
Coddy logo textTech

State Machine Logic

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 state geçiş mantığını ekleyeceksin. state machine, bir state'ten bir sonrakine ne zaman geçileceğini belirler.

state machine mantığı, trafik ışığının state'leri ne zaman ve nasıl değiştireceğini kontrol eder.

state Sırası

Green → Yellow → Red → Green → …

Görevin, state machine mantığını module'e eklemektir.

Yapılacaklar:

  1. Bir always @(posedge clk or posedge reset) bloğu Add et
  2. reset durumunda state'i Red (2) olarak ayarla
  3. next 1 olduğunda bir sonraki state'e geç:
    • state Green (0) ise: Yellow olarak change et
    • state Yellow (1) ise: Red olarak change et
    • state Red (2) ise: Green olarak change et

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

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

Kendi başına pratik yap: Online Verilog derleyicisi