Modül Örneklendirme
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 33 / 90.
Modül örnekleme, bir modülün başka bir modül içinde bir kopyasını oluşturma sürecidir. Daha küçük bileşenleri birbirine bağlayarak daha büyük tasarımları bu şekilde inşa edersiniz.
Bir modül tanımladıktan sonra, onu başka bir modülün içinde kullanabilirsiniz. Buna örnekleme (instantiation) denir. Her örnekleme, o modülün ayrı bir örneğini oluşturur. Bunu, aynı bileşenin birden fazla kopyasını oluşturmak için bir taslak kullanmak gibi düşünün.
Temel Sözdizimi
module_name instance_name (connections);| Bölüm | Anlamı |
|---|---|
module_name | Örneklenecek modülün adı |
instance_name | Bu kopya için benzersiz ad |
connections | Modülün portlarına bağlanan sinyaller |
Basit Örnek
Adım 1: Bir modül tanımlayın
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmoduleAdım 2: Başka bir modülde örneklendirin
module top (
input x,
input y,
output z
);
and_gate gate1 (x, y, z);
endmoduleBu kodda şunlar gerçekleşir:
and_gate— kullanmak istediğimiz modülün adı (bir yerde mevcut olmalıdır)gate1— bu belirli örneğe verdiğimiz benzersiz bir ad(x, y, z)— modülün portlarına bağladığımız sinyaller (modül tanımında göründükleri sırayla)
İlk sinyal x, ilk port a'ya bağlanır. İkinci sinyal y, ikinci port b'ye bağlanır. Üçüncü sinyal z, üçüncü port c'ye bağlanır.
Modüle sinyaller iletmelisiniz. Parantezler boş olamaz. Sinyal sayısı, port sayısı ile eşleşmelidir.
Birden Fazla Örnek
Aynı modülün birden fazla kopyasını oluşturabilirsiniz:
module top;
wire out1, out2;
wire sig1, sig2, sig3, sig4;
and_gate gate1 (sig1, sig2, out1);
and_gate gate2 (sig3, sig4, out2);
endmoduleHer örneğin kendi adı (gate1, gate2) ve kendi bağlantıları vardır. Bağımsız olarak çalışırlar.
Örnekleme (Instantiation) Sırasında Neler Olur?
- Donanımın bir kopyası oluşturulur
- Her örneğin kendi sinyal kümesi vardır
- Örnekler paralel olarak (eşzamanlı) çalışır
- Geçirdiğiniz sinyaller, örneklerin tasarımınızın geri kalanına nasıl bağlanacağını belirler
Örnekleme Kuralları
| Kural | Neden |
|---|---|
| Örnek adı benzersiz olmalıdır | Kopyalar arasında ayrım yapmak için |
| Modül adı mevcut olmalıdır | Başka bir yerde tanımlanmış olmalıdır |
| Bağlantı sayısı port sayısı ile eşleşmelidir | Aksi takdirde Verilog neyin nereye bağlandığını bilemez |
| Bağlantı sırası port sırası ile eşleşmelidir | İlk sinyal ilk porta bağlanır, vb. |
Görev
or_gate modülünü örnekleyerek kodu tamamlayın.
Yapılacaklar:
or_gatemodülünüor1örnek adıyla örnekleyin- Sinyalleri doğru sırayla geçirin:
input_a,input_b,output_y
Kopya kağıdı
Modül örneklendirme (instantiation), bir modülün kopyasını başka bir modülün içinde oluşturur:
module_name instance_name (connections);Örnek:
module and_gate (input a, input b, output c);
assign c = a & b;
endmodule
module top (input x, input y, output z);
and_gate gate1 (x, y, z); // x→a, y→b, z→c
endmoduleKurallar:
- Örnek adı (instance name) benzersiz olmalıdır
- Bağlantı sayısı, port sayısı ile eşleşmelidir
- Bağlantı sırası, port tanımlama sırası ile eşleşmelidir
- Birden fazla örnek, her biri kendi sinyallerine sahip olacak şekilde paralel olarak çalışır
Kendin dene
module or_gate (
input in1,
input in2,
output result
);
assign result = in1 | in2;
endmodule
module top (
input input_a,
input input_b,
output output_y
);
// TODO: or_gate'i or1 adıyla örneklendirin
// Sinyalleri şu sırayla geçirin: input_a, input_b, output_y
// .port(signal) sözdizimini kullanmayın
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ığı