Menu
Coddy logo textTech

Timescale Direktifi

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

timescale yönergesi, simülasyon için zaman birimini ve zaman hassasiyetini belirler. Simülatöre #10 gibi gecikme değerlerini nasıl yorumlayacağını söyler.

Önceki derslerde, "10"un ne anlama geldiğini belirtmeden #10 gibi gecikmeler kullandık. Bu 10 nanosaniye mi? 10 pikosaniye mi? timescale direktifi 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 backtick `, 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 yuvarlanır

Yaygın Zaman Ölçeği Değerleri

Zaman BirimiHassasiyetKullanım Durumu
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 (genellikle 1ns) kabul eder. Bunu her zaman belirtmek en iyisidir.

Önemli Kurallar

KuralAçıklama
Modüllerin dışında olmalıdırHerhangi bir modül tanımından önce yerleştirilir
Ters tırnak (backtick) sembolü`timescale değil 'timescale 
Zaman birimi ≥ zaman hassasiyeti1ns / 1ps uygundur, 1ps / 1ns değildir
Dosyadaki tüm gecikmeleri etkilerGenel gecikmeler, kapı gecikmeleri, atama gecikmeleri
challenge icon

Görev

Yapılacaklar:

Gecikmelerin 10ns, 20ns ve 30ns'yi temsil etmesini sağlamak için eksik olan timescale yönergesini ekleyin.

Kopya kağıdı

`timescale direktifi, simülasyon için zaman birimini ve zaman hassasiyetini ayarlar. Herhangi bir modül tanımından önce yerleştirilmelidir.

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

initial begin
  #10 a = 1;   // Waits 10 nanoseconds
end
  • time_unit — gecikmeler için temel birim (örneğin, #10 = 10ns)
  • time_precision — simülasyonun ne kadar hassas yuvarlama yapacağı (zaman birimine eşit veya ondan küçük olmalıdır)
Zaman Ölçeği (Timescale)Kullanım Durumu
1ns / 1nsBasit simülasyonlar
1ns / 1psDaha hassas
1ps / 1psYüksek hızlı tasarımlar
1us / 1nsYavaş simülasyonlar

Kendin dene

// YAPILACAK: Zaman ölçeği yönergesi 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