Sürekli Atama
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 37 / 90.
Donanımda, bir bağlantı, bir devredeki iki noktayı birbirine bağlayan fiziksel bir teldir. Tel yerleştirildikten sonra, bağlantı kalıcıdır ve her zaman aktiftir. Bir uç değişirse, diğer uç anında değişir.
Verilog'da, bu davranışı modellemek için bir yönteme ihtiyacımız var. Bir wire üzerine bir değer aktarmak ve onu sonsuza kadar bağlı tutmak istiyoruz. Bunu yapma işlemine continuous assignment denir.
Sürekli atama, bir tel (wire) ile bir ifade (expression) arasında kalıcı bir bağlantı oluşturmak için assign anahtar kelimesini kullanır. Tel, tıpkı fiziksel bir tel gibi, ifadenin değerini sürekli olarak alır.
Bunu, bir değeri bir kez yazmak yerine bir kabloyu lehimlemek gibi düşünün.
Sözdizimi
assign wire_name = expression;| Bölüm | Anlam |
|---|---|
assign | Sürekli atamayı başlatan anahtar kelime |
wire_name | Sürülen kablo (reg olamaz) |
expression | Kabloyu süren değer |
Basit Örnek
wire out;
assign out = a & b;Bu şu anlama gelir: out her zaman a AND b ifadesine eşittir. a veya b ne zaman değişirse, out anında değişir.
Nasıl Çalışır
Bir değer saklayan reg yapısının aksine, sürekli atama (continuous assignment) kullanılan bir wire sürekli olarak güncellenir:
module continuous_demo;
reg a, b;
wire c;
assign c = a & b; // c her zaman a VE b'yi takip eder
initial begin
a = 0; b = 0;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0
a = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0 (1&0=0)
b = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=1 (1&1=1)
$finish;
end
endmoduleÇıktı:
a=0, b=0, c=0
a=1, b=0, c=0
a=1, b=1, c=1a veya b her değiştiğinde, c otomatik olarak güncellenir.
Çoklu Atamalar
Bir modül içinde birden fazla sürekli atama yapabilirsiniz:
module multiple_assign (
input a, b, c,
output x, y
);
assign x = a & b;
assign y = x | c; // y, x'e bağlıdır
endmoduleTüm atamalar paralel olarak, sürekli çalışır.
Yaygın Kullanımlar
Sürekli atamalar (continuous assignments) şunlar için kullanılır:
- Basit kombinasyonel mantık (AND, OR, XOR)
- Kabloları (wires) birbirine bağlama
- Üç durumlu (tri-state) tamponlar oluşturma
- Kombinasyonel ifadelerden çıktıları sürme
Görev
Yapılması gerekenler:
z'yix AND y'ye eşit yapan eksik sürekli atamayı (continuous assignment) ekleyin.
Kopya kağıdı
Sürekli atama, assign anahtar kelimesini kullanarak bir tel (wire) ile bir ifade arasında kalıcı bir bağlantı oluşturur:
assign wire_name = expression;Tel, ifadenin değerini sürekli olarak yansıtır — girişler her değiştiğinde, çıkış anında güncellenir:
wire out;
assign out = a & b; // out her zaman a VE b'ye eşittirBirden fazla atama paralel olarak çalışır:
assign x = a & b;
assign y = x | c; // y, x'e bağlıdır, tümü sürekli güncellenirTemel kurallar: assign tarafından yalnızca wire (reg değil) sürülebilir.
Kendin dene
module continuous_challenge (
input x,
input y,
output z
);
// YAPILACAK: z'yi x VE y'ye eşit yapan eksik sürekli atamayı ekleyin
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ığı