توجيه Timescale
جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 70 من 90.
تحدد التوجيهية timescale وحدة الوقت (time unit) ودقة الوقت (time precision) للمحاكاة. وهي تخبر المحاكي بكيفية تفسير قيم التأخير مثل #10.
في الدروس السابقة، استخدمنا التأخيرات مثل #10 دون تحديد ما يعنيه "10". هل هي 10 نانو ثانية؟ أم 10 بيكو ثانية؟ التوجيه timescale يجيب على هذا السؤال.
الصياغة (Syntax):
`timescale time_unit / time_precision| الجزء | المعنى | مثال |
|---|---|---|
time_unit | الوحدة الأساسية للتأخيرات | 1ns |
time_precision | مدى دقة المحاكاة المطلوبة | 1ps |
علامة ` القبلية قبل timescale تعني أنها موجّه للمترجم (compiler directive).
مثال
`timescale 1ns / 1pstime_unit = 1ns← تعني#1010 nanosecondstime_precision = 1ps← يقوم المحاكاة بالتقريب لأقرب بيكوثانية
قيم timescale الشائعة
| وحدة الوقت | الدقة | حالة الاستخدام |
|---|---|---|
1ns / 1ns | نانوثانية | محاكاة بسيطة |
1ns / 1ps | بيكوثانية | أكثر دقة |
1ps / 1ps | بيكوثانية | تصاميم عالية السرعة |
1us / 1ns | ميكروثانية | محاكاة بطيئة |
كيف تؤثر على التأخيرات (Delays)
`timescale 1ns / 1ps
initial begin
#10 a = 1; // ينتظر 10 نانوثانية
endبدون timescale، تفترض بعض أجهزة المحاكاة قيمة افتراضية (غالباً 1ns). من الأفضل دائماً تحديدها.
قواعد مهمة
| القاعدة | الشرح |
|---|---|
| يجب أن تكون خارج الموديولات | توضع قبل أي تعريف للموديول |
| رمز Backtick | `timescale وليس 'timescale |
| وحدة الوقت (Time unit) ≥ دقة الوقت (time precision) | 1ns / 1ps مقبول، بينما 1ps / 1ns غير مقبول |
| تؤثر على جميع التأخيرات في الملف | التأخيرات العامة، تأخيرات البوابات، وتأخيرات الإسناد |
التحدي
ما يجب فعله:
أضف توجيه timescale المفقود لتمثيل التأخيرات بـ 10ns و 20ns و 30ns.
جرّب بنفسك
// TODO: أضف توجيه timescale (1ns / 1ps)
module timescale_challenge;
initial begin
$display("Time %0t", $time);
#10 $display("Time %0t (10ns = 10000ps)", $time);
#10 $display("Time %0t (20ns = 20000ps)", $time);
#10 $display("Time %0t (30ns = 30000ps)", $time);
$finish;
end
endmoduleيتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.
جميع دروس الأساسيات
4المعاملات - الجزء الأول
المعاملات الحسابيةمعامل باقي القسمة (Modulo)معاملات المقارنةملخص - رياضيات بسيطةمعاملات Bitwise7التعيين والبوابات المنطقية
التعيين المستمرالتعيين باستخدام العملياتالبوابات الأساسية المدمجةبوابات AND و OR و NOTبوابات XOR و XNORمراجعة - دارة البوابات المنطقية13التوقيت والتأخيرات
ما هي التأخيراتتأخيرات البواباتتأخيرات التعيينتوجيه Timescaleتوليد الساعةمراجعة - التحكم في التوقيت5المعاملات - الجزء الثاني
المعاملات المنطقيةمعاملات الاختزالمعاملات الإزاحةمعامل الدمجالمعامل الشرطيمراجعة - تحدي المعاملات3أنظمة العد
التمثيل الثنائيالأعداد محددة الحجمالأعداد غير محددة الحجمالأعداد السالبةالقيم الخاصة X و Zمراجعة - تنسيقات الأعداد6الوحدات
هيكل الوحدةمنافذ الإدخال والإخراجمنافذ Inoutاستدعاء الوحداتربط المنافذ بالاسمربط المنافذ بالترتيبمراجعة - بناء وحدة