تحديد الحالات
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 79 من 90.
التحدي
يُعد جهاز التحكم في إشارة المرور بمثابة آلة حالة محدودة (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
- قم بالإعلان عن سجل (register) بحجم 2 بت يسمى
state - قم بالإعلان عن سجل (register) بحجم 6 بت يسمى
counter(للتوقيت حتى 40 ثانية) - أضف تعيينات المخرجات:
- عندما تكون الحالة 0:
green = 1،yellow = 0،red = 0 - عندما تكون الحالة 1:
green = 0،yellow = 1،red = 0 - عندما تكون الحالة 2:
green = 0،yellow = 0،red = 1
- عندما تكون الحالة 0:
جرّب بنفسك
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متحكم إشارة المرور
تحديد الحالاتمنطق آلة الحالة