توليد الساعة
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 71 من 90.
ساعة النظام (clock) هي إشارة تتنقل باستمرار بين 0 و 1 في فترات زمنية منتظمة. تعتبر الساعات أساسية للطقس المنطقي التتابعي (sequential logic) مثل الـ flip-flops والعدادات (counters).
لماذا تقوم بتوليد Clock
في منصات الاختبار (testbenches)، تحتاج إلى clock لاختبار الدوائر التتابعيات (sequential circuits). يقوم الـ clock بتوجيه سلوك القلابات (flip-flops)، المسجلات (registers)، وآلات الحالة (state machines).
طرق توليد Clock
| الطريقة | الوصف |
|---|---|
always مع تأخير # | الطريقة الأكثر شيوعًا |
حلقة forever | طريقة بديلة |
حلقة repeat | لعدد محدد من الـ cycles |
الطريقة 1: كتلة `always` `block` مع تأخير
reg clk;
initial begin
clk = 0;
end
always #5 clk = ~clk;clk = 0في الوقت 0- كل 5 ووحدات زمنية، يتغير
clk(يتأرجح)
- Period = 10 time units
- التردد = 1/10 = 0.1 لكل time unit
الطريقة 2: الحلقة Forever Loop
reg clk;
initial begin
clk = 0;
forever begin
#5 clk = ~clk;
end
endنفس نتيجة طريقة always.
الطريقة 3: repeat لـ cycles محدودة
reg clk;
initial begin
clk = 0;
repeat (10) begin
#5 clk = ~clk;
end
endينشئ بالضبط 10 clock edges (5 cycles كاملة)، ثم يتوقف.
التحدي
قم بإضافة الكود المفقود لتوليد clk يتغير (toggle) كل 4 units من الـ time (الـ Period = 8 units من الـ time).
ما يجب القيام به:
- قم بتهيئة
clkإلى 0 عند الـtime0 باستخدامinitialblock - استخدم
alwaysblockمع تأخير لعملtoggleلـclkevery4unitsمن الـtime
جرّب بنفسك
module clock_challenge;
reg clk;
// TODO: الخطوة 1 - أضف كتلة initial لتعيين clk = 0
// TODO: الخطوة 2 - أضف كتلة always لتبديل clk كل 4 وحدات زمنية
initial begin
$monitor("Time %0t: clk = %b", $time, clk);
#20;
$display("Clock generated for 20 time units");
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية13التوقيت والتأخيرات
ما هي التأخيراتتأخيرات البواباتتأخيرات التعيينتوجيه Timescaleتوليد الساعةمراجعة - التحكم في التوقيت5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة