Sürekli Atama
Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 37 / 90.
Donanımda bağlantı, bir devredeki iki noktayı birbirine bağlayan fiziksel bir teldir. Tel yerine yerleştirildiğinde bağlantı kalıcıdır ve her zaman etkindir. Uçlardan biri değişirse diğer uç da hemen değişir.
Verilog'da bu davranışı modellemek için bir yola ihtiyacımız var. Bir değeri bir kabloya aktarmak ve onu sonsuza kadar bağlı tutmak istiyoruz. Bunu yapma sürecine sürekli atama denir.
Sürekli atama, bir tel ile ifade arasında kalıcı bir bağlantı oluşturmak için assign anahtar sözcüğünü kullanır. Tel, tıpkı fiziksel bir tel gibi ifadenin değerini sürekli olarak alır.
Bunu, bir değeri bir kez yazmaktan ziyade bir kabloyu lehimlemek gibi düşü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'ye eşittir. a veya b değiştiğinde out hemen değişir.
Nasıl Çalışır
Bir değeri depolayan reg'in aksine, sürekli atama içeren bir wire sürekli olarak güncellenir:
module continuous_demo;
reg a, b;
wire c;
assign c = a & b; // c her zaman a AND 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.
Birden Fazla Atama
Bir modülde 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 şu amaçlarla kullanılır:
- Basit kombinasyonel mantık (AND, OR, XOR)
- Kabloları birbirine bağlama
- Üç durumlu arabellekler oluşturma
- Kombinasyonel ifadelerden çıkışları sürme
Görev
Yapılacaklar:
z'yix AND y'ye eşit yapan eksik sürekli atamayı ekleyin.
Kendin dene
module continuous_challenge (
input x,
input y,
output z
);
// TODO: z'yi x AND y'ye eşit yapan eksik continuous assignment'ı ekle
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