توقيت الانتقالات
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 81 من 90.
التحدي
في هذا الدرس، ستضيف منطق العداد (counter logic) الذي يتحكم في المدة التي يظل فيها كل ضوء مضاءً. يقوم العداد بالعد التنازلي من قيمة محددة مسبقاً إلى الصفر، ثم يقوم بتشغيل تغيير الحالة التالي.
متطلبات التوقيت
| الحالة | المدة | قيمة العداد |
|---|---|---|
| Green | 30 ثانية | 30 |
| Yellow | 10 ثوانٍ | 10 |
| Red | 40 ثانية | 40 |
كيف يعمل العداد
- عندما تبدأ حالة ما، يتم تحميل العداد بقيمة المدة
- في كل نبضة ساعة (clock tick)، ينقص العداد بمقدار 1
- عندما يصل العداد إلى 0، يحين وقت التغيير إلى الحالة التالية
مهمتك هي إضافة منطق العداد المفقود إلى آلة الحالة (state machine).
ما يجب القيام به:
- أضف تصريح
reg [5:0] counter - عند إعادة الضبط (reset)، اضبط
counterعلى 0 - عندما يكون
counter == 0:- قم بتحميل مدة الحالة التالية في العداد
- انتقل إلى الحالة التالية
- خلاف ذلك، قم بإنقاص العداد بمقدار 1 في كل نبضة ساعة
جرّب بنفسك
module traffic_light (
input clk,
input reset,
output reg red,
output reg yellow,
output reg green
);
reg [1:0] state;
// TODO: قم بالتصريح عن سجل العداد (6 بت)
// تعيينات المخرجات
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
// آلة الحالة مع التوقيت
always @(posedge clk or posedge reset) begin
if (reset) begin
state <= 2; // البدء عند اللون الأحمر
// TODO: اضبط العداد على 0
end else begin
if (counter == 0) begin
case (state)
0: begin
state <= 1;
// TODO: قم بتحميل العداد للون الأصفر (10 ثوانٍ)
end
1: begin
state <= 2;
// TODO: قم بتحميل العداد للون الأحمر (40 ثانية)
end
2: begin
state <= 0;
// TODO: قم بتحميل العداد للون الأخضر (30 ثانية)
end
endcase
end else begin
// TODO: قم بإنقاص العداد بمقدار 1
end
end
end
endmoduleجميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة التحسسالإسناد الحاجبالإسناد غير الحاجبمراجعة - Always مقابل Initial15متحكم إشارة المرور
تحديد الحالاتمنطق آلة الحالة