جملة If - Else
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 53 من 90.
تسمح لك جملة if-else بالاختيار بين إجراءين مختلفين بناءً على شرط معين. إذا كان الشرط صحيحاً، يتم تنفيذ كتلة برمجية واحدة. أما إذا كان خاطئاً، فسيتم تنفيذ الكتلة الأخرى.
تمنح جملة if-else الكود الخاص بك نقطة اتخاذ قرار: قم بتنفيذ إجراء معين إذا كان الشرط صحيحاً (true)، وقم بتنفيذ إجراء آخر إذا كان الشرط خاطئاً (false).
الصيغة:
if (condition) begin
// يتم التنفيذ عندما يكون الشرط صحيحاً (1)
end else begin
// يتم التنفيذ عندما يكون الشرط خاطئاً (0)
endمثال بسيط
if (reset) begin
count = 0;
end else begin
count = count + 1;
end- إذا كان
resetهو 1 ←countيصبح 0 - إذا كان
resetهو 0 ←countيزداد بمقدار 1
جمل متعددة
استخدم begin و end عندما يكون لديك أكثر من جملة واحدة:
if (enable) begin
out = data_in;
valid = 1;
end else begin
out = 0;
valid = 0;
endIf-Else مع شروط متعددة
يمكنك ربط جمل if-else ببعضها البعض:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a و b متساويان
endقواعد هامة
| القاعدة | الشرح |
|---|---|
else اختياري | يمكنك استخدام if بدون else |
else تتبع أقرب if | كن حذراً عند التداخل |
استخدم begin/end لعدة جمل برمجية | مطلوب لأكثر من سطر واحد |
التحدي
ماذا تفعل:
- أضف جملة
if-elseالمفقودة لجعل هذا يعمل. - عندما يكون
enableهو 1، يجب أن يساويoutالقيمةa & b. - عندما يكون
enableهو 0، يجب أن يساويoutالقيمةa | b.
ورقة مرجعية
تنفذ جملة if-else واحدة من كتلتين بناءً على شرط معين:
if (condition) begin
// يتم التنفيذ عندما يكون الشرط صحيحاً (1)
end else begin
// يتم التنفيذ عندما يكون الشرط خاطئاً (0)
endقم بربط شروط متعددة باستخدام else if:
if (a > b) begin
max = a;
end else if (b > a) begin
max = b;
end else begin
max = a; // a و b متساويان
endelseاختيارية- استخدم
begin/endعندما توجد جمل برمجية متعددة داخل الكتلة - تتبع
elseدائماً أقربifلها
جرّب بنفسك
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// مهام: أضف جملة if-else
// إذا كان enable يساوي 1: out = a & b
// خلاف ذلك: out = a | b
$display("out = %d (should be 0 because 1&0=0)", out);
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة