Engelleyici Atama
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 49 / 90.
Verilog iki tür yordamsal atamaya sahiptir: blocking (=) ve non-blocking (<=). Bu derste, blocking assignment konusuna odaklanacağız.
Blocking assignment, = operatörünü uses. Mevcut assignment tamamlanana kadar bir sonraki ifadenin çalıştırılmasını engellediği için buna "blocking" denir. Kod step step, sırayla çalışır.
Sözdizimi:
variable = expression;Blocking assignment Ne Zaman Kullanılır
Blocking assignment (=), çıkışların girişler değiştiğinde anında değiştiği, clock ve bellek bulunmayan devreler olan kombinasyonel mantık için kullanılır.
Kombinasyonal mantık örnekleri:
- AND / OR / XOR kapıları
- Toplayıcılar ve çıkarıcılar
- Multiplekserler
- Dekoderler
Verilog örneği:
always @(*) begin
sum = a + b; // Bloklayan atama
carry = a & b; // Bloklayan atama
endAlways Bloklarında Blocking (Kombinezonal Mantık)
always @(*) begin
temp = a & b; // Adım 1
out = temp | c; // Adım 2 (temp'i adım 1'den kullanır)
endSıralama önemlidir. Kombinasyonel mantık için bu durum uygundur.
Blocking vs Non-Blocking
Blocking (=) | Non-blocking (<=) | |
|---|---|---|
| Execution | Birbiri ardına | Hepsi birden |
| Next line waits? | Evet | Hayır |
| Uses | Kombinezonsal mantık | Arışıl mantık (flip-flop'lar) |
Önemli: Flip-Flop'lar için Blocking Kullanmayın
Görev
Geçici bir değişken kullanarak x ve y değerlerini değiştirmek için eksik blocking assignment'ları (engelleyen atamaları) ekleyin.
Ne yapılmalı:
xdeğerinitempdeğişkenine atayın (x'i temp içine kaydedin)ydeğerinixdeğişkenine atayın (y'yi x içine taşıyın)tempdeğeriniydeğişkenine atayın (kaydedilen x'i y içine taşıyın)
Kendin dene
module swap;
reg x, y;
reg temp;
initial begin
x = 1;
y = 0;
$display("Before swap: x=%d, y=%d", x, y);
// TODO: Adım 1 - x'i temp'e ata
// TODO: Adım 2 - y'yi x'e ata
// TODO: Adım 3 - temp'i y'ye ata
$display("After swap: x=%d, y=%d", x, y);
$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ı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ığı