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

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

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

challenge icon

التحدي

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

في هذا المشروع، ستصمم وحدة تحكم في الإشارات الضوئية لتقاطع بسيط. تحتوي الإشارة الضوئية على ثلاثة مخرجات:

الإشارةOutputالمعنى
Redred = 1توقف
Yellowyellow = 1احذر
Greengreen = 1انطلق

تتغير الإشارات بهذا الترتيب:

Green → Yellow → Red → Green → …

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

Stateالمدةالحالة التالية
Green30 ثانيةYellow
Yellow10 ثوانٍRed
Red40 ثانيةGreen

في هذا الدرس، ستحدد الحالات لوحدة التحكم في الإشارات الضوئية.

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

Stateالإشارةالكود
Greenالإشارة الخضراء تعمل2'b00
Yellowالإشارة الصفراء تعمل2'b01
Redالإشارة الحمراء تعمل2'b10

أكمل الـ module بإضافة الأجزاء الناقصة.

الخطوات المطلوبة:

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

  1. Declare register بعرض 2-bit باسم state
  2. Declare register بعرض 6-bit باسم counter (للتوقيت الذي يصل إلى 40 ثانية)
  3. أضف assignments المخرجات:
    • عندما تكون state هي 0: green = 1، yellow = 0، red = 0
    • عندما تكون state هي 1: green = 0، yellow = 1، red = 0
    • عندما تكون state هي 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

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