حلقة Repeat
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 60 من 90.
تقوم حلقة repeat بتنفيذ كتلة من الكود لعدد محدد من المرات. وعلى عكس حلقة for، فهي لا تستخدم متغيراً لعدّاد الحلقة.
تعمل حلقة repeat لعدد محدد من المرات. حيث تقوم بتزويدها بثابت أو تعبير يحدد عدد التكرارات التي سيتم تنفيذها.
الصيغة:
repeat (number) begin
// الكود المراد تكراره
endمثال بسيط
repeat (5) begin
$display("Hello");
endالمخرجات:
Hello
Hello
Hello
Hello
Helloتُطبع الرسالة 5 مرات بالضبط.
التكرار باستخدام تعبير
integer count = 3;
repeat (count) begin
$display("Looping");
endالمخرجات:
Looping
Looping
LoopingRepeat مقابل For Loop
| حلقة For | حلقة Repeat | |
|---|---|---|
| متغير العداد | نعم (صريح) | لا |
| متى يُستخدم | الحاجة إلى قيمة الفهرس (index) | الحاجة فقط للتكرار |
| مثال | for (i=0; i<5; i=i+1) | repeat (5) |
توليد دورات ساعة متعددة
initial begin
clk = 0;
repeat (20) begin
#5 clk = ~clk;
end
endيولد هذا 20 حافة ساعة (10 دورات كاملة).
قواعد هامة
| القاعدة | الشرح |
|---|---|
| يجب أن يكون الرقم غير سالب | لا يمكن التكرار لعدد مرات سالب |
| يمكن استخدام ثابت أو تعبير | repeat (10) أو repeat (count) |
| لا يتوفر متغير حلقة | لا يمكن تتبع رقم التكرار |
استخدم begin/end للجمل المتعددة | مطلوب لأكثر من سطر واحد |
التحدي
ماذا تفعل:
أضف حلقة repeat المفقودة لطباعة "Verilog" 4 مرات.
ورقة مرجعية
تقوم حلقة repeat بتنفيذ كتلة من الكود لعدد محدد من المرات دون الحاجة لمتغير عداد للحلقة.
repeat (number) begin
// كود للتكرار
endيمكن استخدام تعبير ثابت أو متغير:
integer count = 3;
repeat (count) begin
$display("Looping");
endحالة استخدام شائعة — توليد دورات الساعة (clock cycles):
repeat (20) begin
#5 clk = ~clk;
endمقارنة بين Repeat و For Loop: استخدم repeat عندما تحتاج فقط إلى التكرار (لا حاجة لفهرس)؛ واستخدم for عندما تحتاج إلى قيمة عداد التكرار.
جرّب بنفسك
module repeat_challenge;
initial begin
$display("Printing 4 times:");
// مهمة: أضف حلقة تكرار (repeat loop)
// كرر 4 مرات
// في الداخل، اطبع "Verilog"
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة