Menu
Coddy logo textTech

Timescale Directive

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 70 / 90.

timescale yönergesi, benzetim için time unit ve time precision değerlerini ayarlar. Simülatöre #10 gibi gecikme değerlerini nasıl yorumlayacağını bildirir.

Önceki derslerde, “10”un ne anlama geldiğini belirtmeden #10 gibi gecikmeler kullandık. Bu 10 nanoseconds mı? 10 pikosaniye mi? timescale directive bu soruyu yanıtlar.

Sözdizimi:

`timescale time_unit / time_precision
BölümAnlamıÖrnek
time_unitGecikmeler için temel birim1ns
time_precisionSimülasyonun ne kadar hassas olması gerektiği1ps

timescale öncesindeki ters tırnak `, bunun bir derleyici yönergesi olduğu anlamına gelir.

Örnek

`timescale 1ns / 1ps
  • time_unit = 1ns#10 10 nanosaniye anlamına gelir
  • time_precision = 1ps → Simülasyon en yakın pikosaniyeye yuvarlar

Yaygın Timescale Değerleri

Zaman BirimiHassasiyetKullanım Alanı
1ns / 1nsNanosaniyeBasit simülasyonlar
1ns / 1psPikosaniyeDaha hassas
1ps / 1psPikosaniyeYüksek hızlı tasarımlar
1us / 1nsMikrosaniyeYavaş simülasyonlar

Gecikmeleri Nasıl Etkiler?

`timescale 1ns / 1ps

initial begin
  #10 a = 1;   // 10 nanosaniye bekler
end

timescale olmadan bazı simülatörler varsayılan bir değer (çoğunlukla 1ns) varsayar. Bunu her zaman belirtmek en iyisidir.

Önemli Kurallar

KuralAçıklama
Modüllerin dışında olmalıHerhangi bir module tanımından önce yerleştirilir
Ters tırnak sembolü`timescale, 'timescale değil 
Time unit ≥ time precision1ns / 1ps uygundur, 1ps / 1ns uygun değildir
Dosyadaki tüm gecikmeleri etkilerGenel gecikmeler, kapı gecikmeleri, atama gecikmeleri
challenge icon

Görev

Yapılacaklar:

Gecikmelerin 10ns, 20ns ve 30ns değerlerini temsil etmesi için eksik timescale yönergesini ekle.

Kendin dene

// TODO: timescale direktifi ekle (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 iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi