حلقة While
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 59 من 90.
تكرر الحلقة while كتلة من البرمجة طالما أن الـ condition تكون صحيحة (true). وبخلاف الحلقة for، فإنها لا تحتوي على عداد مدمج — يجب عليك تحديث متغير الحلقة بنفسك.
تتحقق حلقة while من الـ condition قبل كل تكرار. إذا كانت الـ condition صحيحة (true)، يتم تنفيذ الـ loop. وإذا كانت خاطئة (false)، تتوقف الـ loop.
الصياغة (Syntax):
while (condition) begin
// كود للتكرار
endمثال بسيط
integer i = 0;
while (i < 5) begin
$display("i = %d", i);
i = i + 1;
endالمخرجات:
i = 0
i = 1
i = 2
i = 3
i = 4تستمر الحلقة في العمل طالما أن i < 5.
حلقة While مقابل حلقة For
| حلقة For | حلقة While | |
|---|---|---|
| العداد (Counter) | مدمج | أنت تقوم بإدارته |
| متى تُستخدم | عدد التكرارات معروف | غير معروف متى ستتوقف الحلقة |
| الصياغة (Syntax) | for (i=0; i<5; i=i+1) | while (i < 5) |
حلقة While في Testbenches
تُعد حلقات While مفيدة عندما لا تعرف بالضبط عدد التكرارات التي تحتاج إليها:
integer i = 0;
while (i < 16) begin
$display("Testing value %d", i);
i = i + 1;
endFinding a Specific Value
integer i = 0;
reg [7:0] data;
while (data[i] != 1) begin
i = i + 1;
end
$display("First 1 found at position %d", i);قواعد مهمة
| القاعدة | الشرح |
|---|---|
يجب أن يصبح الـ condition خاسئاً (false) | وإلا ستحدث حلقة تكرار لا نهائية |
قم بتحديث متغير الـ loop من الـ Inside | وإلا لن تنتهي الـ loop أبداً |
يجب أن يكون متغير الـ Loop من نوع integer أو reg | لا يمكن أن يكون wire |
استخدم begin/end للعبارات المتعددة | مطلوب لأكثر من سطر واحد |
التحدي
ما يجب فعله:
أضف حلقة while المفقودة لطباعة الأرقام من 0 إلى 2.
جرّب بنفسك
module while_challenge;
integer i;
initial begin
i = 0;
$display("Printing 0 to 2:");
// TODO: أضف حلقة while
// كرر طالما i < 3
// بالداخل، اطبع i
// زد i بمقدار 1
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة