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

تحديد الحالات

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

challenge icon

التحدي

يُعد جهاز التحكم في إشارة المرور بمثابة آلة حالة محدودة (finite state machine) تنتقل عبر حالات إضاءة مختلفة (أحمر، أصفر، أخضر) بفواصل زمنية محددة. آلة الحالة المحدودة (FSM) هي دائرة يمكن أن تكون في واحدة من عدد محدود من الحالات. وتتغير من حالة إلى أخرى بناءً على المدخلات أو التوقيت.

في هذا المشروع، ستقوم ببناء جهاز تحكم في إشارة مرور لتقاطع بسيط. تحتوي إشارة المرور على ثلاثة مخرجات:

الضوءالمخرجالمعنى
الأحمرred = 1توقف
الأصفرyellow = 1انتبه
الأخضرgreen = 1انطلق

تنتقل الأضواء بهذا الترتيب:

Green → Yellow → Red → Green → …

تسلسل التوقيت

الحالةالمدةالحالة التالية
الأخضر30 ثانيةالأصفر
الأصفر10 ثوانٍالأحمر
الأحمر40 ثانيةالأخضر

في هذا الدرس، ستقوم بتحديد الحالات لجهاز التحكم في إشارة المرور.

تحتوي إشارة المرور على ثلاث حالات ممكنة:

الحالةالضوءالكود
الأخضرالضوء الأخضر يعمل (ON)2'b00
الأصفرالضوء الأصفر يعمل (ON)2'b01
الأحمرالضوء الأحمر يعمل (ON)2'b10

أكمل الوحدة (module) بإضافة الأجزاء الناقصة.

ما يجب القيام به:

تحديد ترميز الحالة: 0=Green، 1=Yellow، 2=Red

  1. قم بالإعلان عن سجل (register) بحجم 2 بت يسمى state
  2. قم بالإعلان عن سجل (register) بحجم 6 بت يسمى counter (للتوقيت حتى 40 ثانية)
  3. أضف تعيينات المخرجات:
    • عندما تكون الحالة 0: green = 1، yellow = 0، red = 0
    • عندما تكون الحالة 1: green = 0، yellow = 1، red = 0
    • عندما تكون الحالة 2: green = 0، yellow = 0، red = 1

جرّب بنفسك

module traffic_light (
  input clk,
  input reset,
  output reg red,
  output reg yellow,
  output reg green
);
  // TODO: المهمة 1 - التصريح عن سجل الحالة (2 بت)
  
  // TODO: المهمة 2 - التصريح عن سجل العداد (6 بتات)
  

  // TODO: المهمة 3 - تعيينات المخرجات باستخدام case (state)
  // الحالة 0: green=1, yellow=0, red=0
  // الحالة 1: green=0, yellow=1, red=0
  // الحالة 2: green=0, yellow=0, red=1

endmodule

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