تحديد الحالات
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 79 من 90.
التحدي
وحدة التحكم في الإشارات الضوئية (traffic light controller) هي آلة حالات محدودة (finite state machine) تنتقل بين حالات الإضاءة المختلفة (الأحمر، الأصفر، الأخضر) وفق فترات زمنية محددة. آلة الحالات المحدودة (FSM) هي دائرة يمكن أن تكون في حالة واحدة من بين عدد محدود من الحالات (states). وتتغير من حالة إلى أخرى بناءً على المدخلات أو التوقيت الزمني.
في هذا المشروع، ستصمم وحدة تحكم في الإشارات الضوئية لتقاطع بسيط. تحتوي الإشارة الضوئية على ثلاثة مخرجات:
| الإشارة | Output | المعنى |
|---|---|---|
| Red | red = 1 | توقف |
| Yellow | yellow = 1 | احذر |
| Green | green = 1 | انطلق |
تتغير الإشارات بهذا الترتيب:
Green → Yellow → Red → Green → …
تسلسل التوقيت
State | المدة | الحالة التالية |
|---|---|---|
| Green | 30 ثانية | Yellow |
| Yellow | 10 ثوانٍ | Red |
| Red | 40 ثانية | Green |
في هذا الدرس، ستحدد الحالات لوحدة التحكم في الإشارات الضوئية.
تحتوي الإشارة الضوئية على ثلاث حالات ممكنة:
State | الإشارة | الكود |
|---|---|---|
| Green | الإشارة الخضراء تعمل | 2'b00 |
| Yellow | الإشارة الصفراء تعمل | 2'b01 |
| Red | الإشارة الحمراء تعمل | 2'b10 |
أكمل الـ module بإضافة الأجزاء الناقصة.
الخطوات المطلوبة:
حدد ترميز الحالات: 0=Green، 1=Yellow، 2=Red
Declareregisterبعرض 2-bit باسمstateDeclareregisterبعرض 6-bit باسمcounter(للتوقيت الذي يصل إلى 40 ثانية)- أضف
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جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة التحسسالإسناد الحاجبالإسناد غير الحاجبمراجعة - Always مقابل Initial15متحكم إشارة المرور
تحديد الحالاتمنطق آلة الحالة