Atama Gecikmeleri
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 69 / 90.
Önceki derslerde genel gecikmeleri (#10 a = b;) ve kapı gecikmelerini (and #5 (out, a, b);) ele aldık. Şimdi, bir atama ifadesinin parçası olarak prosedürel bir blokta (örneğin initial veya always) içeride gerçekleşen gecikmeler olan atama gecikmelerini ele alıyoruz.
Bir atama gecikmesi, belirlenen bir süre bekler ve ardından atamayı gerçekleştirir. Gecikme, # sembolünün ardına ve atamanın önüne yerleştirilir.
Sözdizimi:
variable = #delay expression;Genel bir gecikmenin (#10 a = b; geciktirip ardından atama yapar) aksine, atama gecikmesi a = #10 b;, o anda b'nin değerini alır, 10 zaman birimi bekler ve ardından bu değeri a'ya atar.
Atama Gecikmesi ve Genel Gecikme Karşılaştırması
| Genel Gecikme | Atama Gecikmesi | |
|---|---|---|
| Sözdizimi | #10 a = b; | a = #10 b; |
| Değer ne zaman okunur? | Atama sırasında (gecikmeden sonra) | Hemen (gecikmeden önce) |
| Hangi değer atanır? | O andaki b değeri | 0 anındaki (veya okuma anındaki) b değeri |
| Değer ne zaman atanır? | Gecikmeden sonra | Gecikmeden sonra |
Örnek: Fark
initial begin
b = 1;
#5 b = 0;
// Genel gecikme
#10 a1 = b; // 10 bekler, sonra b'yi okur (b=0) → a1=0
// Atama gecikmesi
a2 = #10 b; // b'yi şimdi okur (b=0), 10 bekler, sonra atar → a2=0
endBurada ikisi de aynı sonucu verir. Fark, gecikme sırasında b değiştiğinde ortaya çıkar.
Temel Fark Örneği
To show b changing during the delay, we need two separate initial blocks that run in parallel:
initial begin
b = 1;
a1 = #10 b; // Zaman 0'da b=1 okur, zaman 10'da a1=1 atar
end
initial begin
#5 b = 0; // Zaman 5'te b'yi 0 yapar (gecikme sırasında)
end- 0. zamanda:
a1,b = 1değerini okur - 5. zamanda:
b,0olarak değişir (a1hâlâ beklerken) - 10. zamanda:
a1'e0değil, 0. zamanda okunan değer olan1atanır
Ayrı bir blokta genel bir gecikme olan #10 a2 = b; kullanıldığında, b 10. zamanda okunur (değeri 0).
Önemli Kurallar
| Kural | Açıklama |
|---|---|
=, # işaretinden önce gelir | a = #10 b;, a #10 = b; değil |
| Değer hemen okunur | Sağ taraf hemen değerlendirilir |
| Atama gecikmeden sonra gerçekleşir | Sol taraf değeri daha sonra alır |
| Yalnızca prosedürel bloklar için | initial veya always içinde kullanılır |
Görev
Yapılacaklar:
Eksik atama gecikmesini ekleyerek a değerini 15 zaman birimi sonra b'nin değerini alacak, ancak b'yi hemen okuyacak şekilde düzenleyin.
Kendin dene
module assignment_challenge;
reg a, b;
// Gecikme sırasında b'yi değiştirmek için ayrı blok
initial begin
b = 1;
// TODO: Atama gecikmesi ekle
// a, 15 zaman birimi sonra b'yi almalı
// b'yi şimdi oku, gecikmeden sonra ata
end
initial begin
#5 b = 0; // Gecikme sırasında b'yi değiştirir
#20 $display("Time %0t: a = %b", $time, a);
$finish;
end
endmoduleBu 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