Menu
Coddy logo textTech
flag Ar iconالعربيةdown icon

توجيه Timescale

جزء من قسم الأساسيات في رحلة Verilog على Coddy — الدرس 70 من 90.

يحدد التوجيه timescale وحدة الزمن و دقة الزمن للمحاكاة. وهو يخبر المحاكي بكيفية تفسير قيم التأخير مثل #10.

في الدروس السابقة، استخدمنا تأخيرات مثل #10 دون تحديد ما تعنيه القيمة "10". هل هي 10 نانو ثانية؟ أم 10 بيكو ثانية؟ توجيه timescale يجيب على هذا السؤال.

الصيغة:

`timescale time_unit / time_precision
الجزءالمعنىمثال
time_unitالوحدة الأساسية للتأخيرات1ns
time_precisionمدى دقة المحاكاة المطلوبة1ps

علامة الاقتباس المائلة ` قبل timescale تعني أنها توجيه للمترجم (compiler directive).

مثال

`timescale 1ns / 1ps
  • time_unit = 1ns#10 تعني 10 نانو ثانية
  • time_precision = 1ps ← المحاكاة تقرب إلى أقرب بيكو ثانية

قيم النطاق الزمني الشائعة

وحدة الزمنالدقةحالة الاستخدام
1ns / 1nsنانو ثانيةمحاكاة بسيطة
1ns / 1psبيكو ثانيةأكثر دقة
1ps / 1psبيكو ثانيةتصاميم عالية السرعة
1us / 1nsميكرو ثانيةمحاكاة بطيئة

كيف يؤثر ذلك على التأخيرات

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // ينتظر 10 نانو ثانية
end

بدون timescale، تفترض بعض المحاكيات قيمة افتراضية (غالباً 1ns). من الأفضل تحديدها دائماً.

قواعد هامة

القاعدةالشرح
يجب أن تكون خارج الوحدات (modules)توضع قبل أي تعريف للوحدة (module definition)
رمز الفاصلة العليا المائلة (Backtick)`timescale وليس 'timescale 
وحدة الزمن ≥ دقة الزمن1ns / 1ps مقبولة، بينما 1ps / 1ns ليست كذلك
تؤثر على جميع التأخيرات في الملفالتأخيرات العامة، تأخيرات البوابات (gate delays)، وتأخيرات التعيين (assignment delays)
challenge icon

التحدي

ماذا تفعل:

أضف توجيه timescale المفقود لجعل التأخيرات تمثل 10ns و 20ns و 30ns.

ورقة مرجعية

تحدد التوجيه `timescale وحدة الزمن و دقة الزمن للمحاكاة. يجب وضعه قبل أي تعريف للوحدة (module).

`timescale time_unit / time_precision
`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // ينتظر 10 نانو ثانية
end
  • time_unit — الوحدة الأساسية للتأخيرات (على سبيل المثال، #10 = 10ns)
  • time_precision — مدى دقة تقريب المحاكاة (يجب أن تكون ≤ وحدة الزمن)
مقياس الزمن (Timescale)حالة الاستخدام
1ns / 1nsمحاكاة بسيطة
1ns / 1psأكثر دقة
1ps / 1psتصميمات عالية السرعة
1us / 1nsمحاكاة بطيئة

جرّب بنفسك

// TODO: (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
quiz iconاختبر نفسك

يتضمن هذا الدرس اختبارًا قصيرًا. ابدأ الدرس للإجابة عليه وتتبّع تقدمك.

جميع دروس الأساسيات