حلقة لا نهائية
جزء من قسم الأساسيات في رحلة Verilog على Coddy. الدرس 61 من 90.
تكرر حلقة forever كتلة من التعليمات البرمجية باستمرار، forever. ولا تتوقف من تلقاء نفسها.
تنفّذ حلقة forever بشكل متكرر دون نهاية. وهي مفيدة لإنشاء نبضات الساعة والإشارات المستمرة الأخرى في بيئات الاختبار.
البنية النحوية:
forever begin
// كود يتكرر إلى الأبد
endمثال بسيط
forever begin
$display("This prints forever");
endسيطبع هذا بلا نهاية ويتسبب في تعطل محاكاتك. أضف دائمًا تأخيرًا أو شرطًا لإيقاف التشغيل.
توليد ساعة (استخدام شائع)
الاستخدام الأكثر شيوعًا لـ forever هو توليد ساعة:
initial begin
clk = 0;
forever begin
#5 clk = ~clk; // تبديل كل 5 وحدات زمنية
end
endينشئ هذا ساعة تعمل طوال فترة المحاكاة.
حلقة forever مع disable
يمكنك إيقاف حلقة forever باستخدام تعليمة disable:
initial begin : clock_gen // الاسم مضاف هنا
clk = 0;
forever begin
#5 clk = ~clk;
end
endinitial begin
#100;
disable clock_gen; // الآن هذا يعمل
endforever مقابل الحلقات الأخرى
| الحلقة | هل تتوقف؟ | متى تُستخدم |
|---|---|---|
for | نعم (بعد عدد ثابت من التكرارات) | عدد معروف من التكرارات |
while | نعم (عندما يصبح الشرط خاطئًا) | شرط توقف غير معروف |
repeat | نعم (بعد عدد ثابت من التكرارات) | عدد معروف من التكرارات |
forever | لا (أبدًا) | إشارات مستمرة (الساعة) |
قواعد مهمة
| القاعدة | الشرح |
|---|---|
| يجب أن يتضمن تأخيرًا | #10 أو @(posedge clk) |
| من دون تأخير، تتوقف المحاكاة | حلقة لا نهائية من دون تقدم زمني |
استخدمه مع disable للإيقاف | وإلا فلن تنتهي المحاكاة |
| يُفضّل استخدامه في بيئات الاختبار | غير قابل للتوليف |
التحدي
ما يجب فعله:
Add حلقة forever من نوع loop المفقودة لإنشاء ساعة تبدّل حالتها every 10 time units.
جرّب بنفسك
module forever_challenge;
reg clk;
initial begin
clk = 0;
// TODO: أضف حلقة forever لتبديل clk كل 10 وحدات زمنية
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4العوامل الجزء 1
العوامل الحسابيةعامل باقي القسمةعوامل المقارنةمراجعة - الرياضيات البسيطةالعوامل على مستوى البتات7التعيين والبوابات
التعيين المستمرالتعيين باستخدام العواملالعناصر الأساسية المدمجة للبواباتبوابات AND وOR وNOTبوابات XOR وXNORمراجعة - دائرة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الربطالمعامل الشرطيمراجعة - تحدي المعاملات11الحلقات التكرارية
حلقة Forحلقة Whileحلقة التكرارحلقة لا نهائيةتعليمة التعطيلمراجعة - أنماط الحلقات التكرارية3نظام الأعداد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ الإدخال والإخراج ثنائية الاتجاهإنشاء مثيل للوحدةربط المنافذ حسب الاسمربط المنافذ حسب الترتيبمراجعة - بناء وحدة9الكتل الإجرائية
كتلة Alwaysكتلة Initialقائمة الحساسيةإسناد حاجزإسناد غير حاجزمراجعة - Always مقابل Initial15متحكّم إشارات المرور
تعريف الحالاتمنطق آلة الحالاتتدرّب بنفسك: مترجم Verilog عبر الإنترنت