Menu
Coddy logo textTech

Gecikmeler Nedir

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

Verilog'da gecikmeler, bir ifadenin ne zaman yürütüleceğini veya bir sinyalin ne zaman değişeceğini kontrol eder. Gerçek donanımın zamanlama davranışını modellemek için kullanılırlar.

Gecikmeler Neden Gereklidir

Gerçek donanımda sinyallerin kablolar ve kapılardan geçerek ilerlemesi zaman alır. Gecikmeler, bu zamanlama davranışını simüle etmenizi sağlar.

  • Simülasyonda, gecikmeler olmadan her şey 0. zamanda gerçekleşir
  • Gecikmeler, olayları zamana yaymanızı sağlar
  • Saatler ve durum makineleri gibi zamanlamaya duyarlı tasarımları test etmeye yardımcı olurlar

Gecikme Türleri

Gecikme TürüAmaç
Kapı GecikmeleriMantık kapılarındaki gecikme
Atama GecikmeleriDeğerler atanırken oluşan gecikme
Timescale YönergesiSimülasyon için zaman birimlerini ayarlar

Temel Sözdizimi

Bir gecikme, ardından bir sayı gelen # ile yazılır:

#10 clk = ~clk;   // 10 zaman birimi bekle, sonra saati tersine çevir
#5 a = b;         // 5 zaman birimi bekle, sonra a = b ata

# işaretinden sonraki sayı, beklenecek zaman birimlerinin sayısıdır.

Basit Örnek

initial begin
  a = 0;
  #10 a = 1;   // 10 zaman biriminden sonra, a 1 olur
  #5 a = 0;    // Başka 5 zaman biriminden sonra, a 0 olur
end

Zamanlama:

  • Zaman 0: a = 0
  • Zaman 10: a = 1
  • Zaman 15: a = 0

Always Bloklarında Gecikmeler

always #5 clk = ~clk;   // Saati her 5 zaman biriminde tersine çevir

Bu, sürekli bir saat sinyali oluşturur (clk'in önce bir initial bloğunda 0 olarak başlatıldığı varsayılır. Aksi takdirde ~x, x olarak kalır).

Önemli Kurallar

KuralAçıklama
# sembolüBir gecikmeyi belirtir
# işaretinden sonraki sayıKaç zaman birimi bekleneceğini belirtir
Gecikmeler birikimlidir#10 ardından #20 toplam 30 bekler
Sentezlenebilir değildirGecikmeler yalnızca simülasyon içindir
challenge icon

Görev

Yapılacaklar:

Bu kodun iletileri 0, 10, 25 ve 40 zamanlarında yazdırmasını sağlamak için eksik gecikmeleri ekleyin.

Kendin dene

module delay_challenge;
  
  initial begin
    $display("Time %0t: Start", $time);
    // TODO: 10 zamanına ulaşmak için gecikme ekle
    $display("Time %0t: After first delay", $time);
    // TODO: 25 zamanına ulaşmak için gecikme ekle
    $display("Time %0t: After second delay", $time);
    // TODO: 40 zamanına ulaşmak için gecikme ekle
    $display("Time %0t: End", $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.

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi