Atama Gecikmeleri
Coddy'nin Verilog Journey'sinin Temeller 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 almıştık. Şimdi ise bir atama ifadesinin parçası olarak bir prosedürel bloğun (initial veya always gibi) içinde gerçekleşen gecikmeler olan atama gecikmelerini ele alıyoruz.
Bir atama gecikmesi (assignment delay) belirtilen bir süre boyunca bekler, ardından atamayı gerçekleştirir. Gecikme, # simgesinden sonra ve atamadan önce yerleştirilir.
Sözdizimi:
variable = #delay expression;Genel bir delay #10 a = b; (delay sonrasında assign) aksine, bir assignment delay a = #10 b; o andaki b değerini alır, 10 time units waits, ardından bunu a'ya assigns eder.
Assignment Delay vs General Delay
| General Delay | Assignment Delay | |
|---|---|---|
| Syntax | #10 a = b; | a = #10 b; |
| When is value read? | At time of assignment (after delay) | Immediately (before delay) |
| What value is assigned? | Value of b at that moment | Value of b at time 0 (or read time) |
| When is value assigned? | After delay | After delay |
Ö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
endHer ikisi de burada aynı result sonucunu verir. Fark, delay during boyunca b changes olduğunda ortaya çıkar.
Key Difference Example
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'i 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 anında:
a1,b = 1değerini okur - 5 anında:
bdeğeri0olarak değişir (a1hala beklerken) - 10 anında:
a1değişkenine0değil,1(0 anında okunan değer) atanır
Ayrı bir bloktaki genel #10 a2 = b; gecikmesi ile b, 10 anında okunurdu (0 değeri).
Önemli Kurallar
| Kural | Açıklama |
|---|---|
= işareti # işaretinden önce gelir | a #10 = b; değil a = #10 b; |
| Değer hemen okunur | Sağ taraf anında değerlendirilir |
| Atama gecikmeden sonra gerçekleşir | Sol taraf değeri daha sonra alır |
| Yalnızca prosedürel bloklar içindir | initial veya always içinde kullanılır |
Görev
Ne yapılmalı:
Eksik assignment delay değerini ekleyin; böylece a, 15 time birimi after b değerini gets etsin, ancak b değerini hemen reads yapsın.
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.
Temeller bölümündeki tüm dersler
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı13Zamanlama ve Gecikmeler
Gecikmeler NedirKapı GecikmeleriAtama GecikmeleriTimescale DirektifiClock ÜretimiÖzet - Zamanlama Kontrolü5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı