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ı Gecikmeleri | Mantık kapılarındaki gecikme |
| Atama Gecikmeleri | Değerler atanırken oluşan gecikme |
| Timescale Yönergesi | Simü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
endZamanlama:
- 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 çevirBu, 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
| Kural | Açı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ğildir | Gecikmeler yalnızca simülasyon içindir |
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
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
4Operatörler Bölüm 1
Aritmetik OperatörlerMod Alma OperatörüKarşılaştırma OperatörleriTekrar - Basit MatematikBit Düzeyi Operatörleri7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND, OR ve NOT KapılarıXOR ve XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Verme
If İfadesiIf - ElseTekrar - Basit KarşılaştırıcıCase İfadesiCasex ve CasezTekrar - ALU Tasarımı13Zamanlama ve Gecikmeler
Gecikmeler NedirKapı GecikmeleriAtama GecikmeleriTimescale YönergesiSaat ÜretimiTekrar - Zamanlama Denetimi2Veri Türleri
Wire TürüReg TürüTamsayı ve GerçelVektörlerDizilerParametrelerÖzet - Sinyalleri Tanımlama5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörTekrar - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüTekrar DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiTekrar - Döngü Kalıpları3Sayı Sistemi
İkili GösterimBoyutlu SayılarBoyutsuz SayılarNegatif SayılarÖzel X ve Z DeğerleriTekrar - Sayı Biçimleri6Modüller
Modül YapısıGiriş ve Çıkış PortlarıÇift Yönlü PortlarModül ÖrneklendirmeAda Göre Port EşlemeSıraya Göre Port EşlemeTekrar - Bir Modül Oluşturma9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiBloklayıcı AtamaBloklamayan AtamaTekrar - Always ve Initial Karşılaştırması15Trafik Işığı Denetleyicisi
Durumları TanımlamaDurum Makinesi MantığıKendi başına pratik yap: Online Verilog derleyicisi