Bloklamayan Atama
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 50 / 90.
Önceki derste, adım adım yürütülen bloklayan atama (=) konusunu ele aldık. Şimdi ise tüm atamaları aynı anda, paralel olarak yürüten bloklamayan atama (<=) konusunu ele alacağız.
Engellemeyen atama, <= operatörünü kullanır. Bir sonraki ifadenin yürütülmesini engellemediği için "engellemeyen" olarak adlandırılır. Bir bloktaki tüm engellemeyen atamalar aynı anda yürütülür.
Sözdizimi:
variable <= expression;Bloklamayan Atama Ne Zaman Kullanılır
Bloklamayan atama (<=), saat kullanan ve belleğe sahip devreler olan sıralı mantık için kullanılır. Çıkışlar yalnızca bir saat kenarında (genellikle yükselen kenarda) değişir.
Sıralı mantık örnekleri:
- Flip-flop'lar
- Yazmaçlar
- Sayaçlar
- Durum makineleri
- Kaydırma yazmaçları
Verilog örneği:
initial begin
a <= 5; // Zamanlandı, ancak henüz yürütülmedi
b <= a + 2; // Zamanlandı, a'nın ESKİ değerini kullanır
c <= b * 3; // Zamanlandı, b'nin ESKİ değerini kullanır
endHer üç atama da eski değerler kullanılarak aynı anda gerçekleşir. Zaman adımının sonunda tüm güncellemeler birlikte gerçekleşir.
Always Bloklarında Bloklamayan Atamalar (Sıralı Mantık)
Bloklamayan atamalar, sıralı mantık için kullanılır: saat sinyali kullanan ve belleğe sahip devreler (flip-flop'lar, yazmaçlar, sayaçlar).
always @(posedge clk) begin
q <= d; // q, saat kenarında d'yi alır
count <= count + 1; // count, saat kenarında artar
endHer iki atama da saat kenarından önceki değerler kullanılarak aynı anda gerçekleşir.
Özet
| Kural | Açıklama |
|---|---|
Sıralı mantık için <= kullanın | always @(posedge clk) |
Kombinasyonel mantık için = kullanın | always @(*) |
| Bloklamayan atamalar paralel olarak yürütülür | Tüm atamalar aynı anda gerçekleşir |
| Değerler zaman adımının sonunda güncellenir | Hemen değil |
Görev
Engellemesiz Atamayı Tamamlayın
Bu 2 bitlik kaydırma yazmacının çalışmasını sağlamak için eksik engellemesiz atamaları ekleyin.
Nasıl çalışır:
- Her saat kenarında
q1,ddeğerini alır q2,q1'in eski değerini alır
Yapılacaklar:
ddeğeriniq1'e atayın (engellemesiz)q1değeriniq2'ye atayın (engellemesiz)
Kendin dene
module shift_register (
input clk,
input reset,
input d,
output reg q1,
output reg q2
);
always @(posedge clk or posedge reset) begin
if (reset) begin
q1 <= 0;
q2 <= 0;
end else begin
// TODO: Kaydırma mantığını ekle
// Adım 1: d'yi q1'e ata (non-blocking)
// Adım 2: q1'i q2'ye ata (non-blocking)
end
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ı2Veri 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