حلقة While
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 59 من 90.
تكرّر حلقة while كتلةً من التعليمات البرمجية ما دام الشرط صحيحًا. وعلى خلاف حلقة for، ليس لها عدّاد مدمج. يجب عليك تحديث متغير الحلقة بنفسك.
تتحقق حلقة while من شرط قبل كل تكرار. إذا كان الشرط صحيحًا، تُنفَّذ الحلقة. وإذا كان خاطئًا، تتوقف الحلقة.
الصياغة:
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 | |
|---|---|---|
| العداد | مدمج | أنت تديره |
| متى تُستخدم | عدد معروف من التكرارات | غير معروف متى ستتوقف الحلقة |
| الصياغة | for (i=0; i<5; i=i+1) | while (i < 5) |
حلقة while في منصات الاختبار
تكون حلقات while مفيدة عندما لا تعرف بالضبط عدد التكرارات التي تحتاج إليها:
integer i = 0;
while (i < 16) begin
$display("Testing value %d", i);
i = i + 1;
endالعثور على قيمة محددة
integer i = 0;
reg [7:0] data;
while (data[i] != 1) begin
i = i + 1;
end
$display("First 1 found at position %d", i);قواعد مهمة
| القاعدة | التوضيح |
|---|---|
| يجب أن يصبح الشرط خاطئًا | وإلا فستكون هناك حلقة لا نهائية |
| حدّث متغير الحلقة من الداخل | وإلا فلن تنتهي الحلقة أبدًا |
يجب أن يكون متغير الحلقة 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العوامل الجزء 1
العوامل الحسابيةعامل باقي القسمةعوامل المقارنةمراجعة - الرياضيات البسيطةالعوامل على مستوى البتات7التعيين والبوابات
التعيين المستمرالتعيين باستخدام العواملالعناصر الأساسية المدمجة للبواباتبوابات AND وOR وNOTبوابات XOR وXNORمراجعة - دائرة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الربطالمعامل الشرطيمراجعة - تحدي المعاملات11الحلقات التكرارية
حلقة Forحلقة Whileحلقة التكرارحلقة لا نهائيةتعليمة التعطيلمراجعة - أنماط الحلقات التكرارية3نظام الأعداد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ الإدخال والإخراج ثنائية الاتجاهإنشاء مثيل للوحدةربط المنافذ حسب الاسمربط المنافذ حسب الترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة الحساسيةإسناد حاجزإسناد غير حاجزمراجعة - Always مقابل Initial15متحكّم إشارات المرور
تعريف الحالاتمنطق آلة الحالاتتدرّب بنفسك: مترجم Verilog عبر الإنترنت