Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

منطق آلة الحالة

جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 80 من 90.

challenge icon

التحدي

في هذا الدرس، ستضيف منطق الانتقال بين الحالات (state transition logic) إلى وحدة التحكم في إشارة المرور. تحدد آلة الحالات (state machine) متى تنتقل من حالة إلى أخرى.

يتتحكم منطق آلة الحالات في متى وكيف تتغير حالات إشارة المرور.

تسلسل الحالات

Green → Yellow → Red → Green → …

مهمتك هي إضافة منطق آلة الحالات إلى الـ module.

ما يجب عليك فعله:

  1. أضف كتلة always @(posedge clk or posedge reset)
  2. عند إعادة الضبط (reset)، اضبط state على Red (2)
  3. عندما يكون next بقيمة 1، انتقل إلى الحالة التالية:
    • إذا كانت الحالة Green (0): قم بالتغيير إلى Yellow
    • إذا كانت الحالة Yellow (1): قم بالتغيير إلى Red
    • إذا كانت الحالة Red (2): قم بالتغيير إلى Green

جرّب بنفسك

module traffic_light (
  input clk,
  input reset,
  input next,           // محفز لتغيير الحالة
  output reg red,
  output reg yellow,
  output reg green
);

  reg [1:0] state;

  // تعيينات المخرجات
  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: أضف منطق آلة الحالة (بدون توقيت)
  // 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

جميع دروس الأساسيات