If - Else
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 53 من 90.
تتيح لك عبارة if-else الاختيار بين إجراءين مختلفين استنادًا إلى شرط. إذا كان الشرط صحيحًا، تُنفَّذ كتلة واحدة. وإذا كان خاطئًا، تُنفَّذ الكتلة الأخرى.
تمنح عبارة if-else في شفرتك نقطة لاتخاذ القرار: نفّذ شيئًا واحدًا إذا كان الشرط صحيحًا، ونفّذ شيئًا آخر إذا كان الشرط خاطئًا.
الصياغة:
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;
endإذا-وإلا مع شروط متعددة
يمكنك تسلسل عبارات 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.
جرّب بنفسك
module ifelse_challenge;
reg a, b, enable;
reg out;
initial begin
a = 1;
b = 0;
enable = 1;
// TODO: أضف عبارة 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العوامل الجزء 1
العوامل الحسابيةعامل باقي القسمةعوامل المقارنةمراجعة - الرياضيات البسيطةالعوامل على مستوى البتات7التعيين والبوابات
التعيين المستمرالتعيين باستخدام العواملالعناصر الأساسية المدمجة للبواباتبوابات AND وOR وNOTبوابات XOR وXNORمراجعة - دائرة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الربطالمعامل الشرطيمراجعة - تحدي المعاملات11الحلقات التكرارية
حلقة Forحلقة Whileحلقة التكرارحلقة لا نهائيةتعليمة التعطيلمراجعة - أنماط الحلقات التكرارية3نظام الأعداد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ الإدخال والإخراج ثنائية الاتجاهإنشاء مثيل للوحدةربط المنافذ حسب الاسمربط المنافذ حسب الترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة الحساسيةإسناد حاجزإسناد غير حاجزمراجعة - Always مقابل Initial15متحكّم إشارات المرور
تعريف الحالاتمنطق آلة الحالاتتدرّب بنفسك: مترجم Verilog عبر الإنترنت