حلقة 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 Loop
| For Loop | While Loop | |
|---|---|---|
| العدّاد | مضمّن | تديره بنفسك |
| متى تُستخدم | عدد معروف من التكرارات | متى ستتوقف الحلقة غير معروف |
| بناء الجملة | for (i=0; i<5; i=i+1) | while (i < 5) |
حلقة While loop في بيئات الاختبار
تكون حلقات 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);قواعد مهمة
| القاعدة | الشرح |
|---|---|
| يجب أن يصبح الشرط false | وإلا فستحدث حلقة loop لا نهائية |
| حدّث متغير loop من الداخل | وإلا فلن تنتهي loop أبدًا |
يجب أن يكون متغير loop من النوع integer أو reg | لا يمكن أن يكون wire |
استخدم begin/end للعبارات المتعددة | مطلوب لأكثر من سطر واحد |
التحدي
ما يجب فعله:
Add حلقة 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 عبر الإنترنت