Module Instantiation
Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası. Ders 33 / 90.
Module örnekleme, bir module içindeki başka bir module'ün bir kopyasını oluşturma işlemidir. Daha küçük bileşenleri birbirine bağlayarak daha büyük tasarımlar oluşturmanızı sağlar.
Bir modül tanımladıktan sonra, onu başka bir modülün içinde kullanabilirsiniz. Buna örnekleme 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 plan kullanmak gibi düşünebilirsiniz.
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
1. Adım: 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 örneğini oluşturun
module top (
input x,
input y,
output z
);
and_gate gate1 (x, y, z);
endmoduleBu kodda olanlar şunlardır:
and_gate: kullanmak istediğimiz modülün adı (bir yerde mevcut olmalıdır)gate1: bu belirli örneğe verdiğimiz benzersiz 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 signal x, ilk port a'ya bağlanır. İkinci signal y, ikinci port b'ye bağlanır. Üçüncü signal z, üçüncü port c'ye bağlanır.
Modüle sinyaller iletmelisin. Parantezler boş bırakılamaz. Sinyal sayısı port sayısıyla eşleşmelidir.
Birden Çok Örnek
Aynı module'ün birden çok 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 kendine ait bir adı (gate1, gate2) ve kendine ait bağlantıları vardır. Bağımsız olarak çalışırlar.
Instantiierung sırasında ne olur
- Bir donanım kopyası oluşturulur
- Her örneklemin kendine ait signal kümesi vardır
- Örneklemler paralel olarak (eşzamanlı) çalışır
- Aktardığınız sinyaller, örneklerin tasarımınızın geri kalanına nasıl bağlanacağını belirler
Instantiation Kuralları
| Kural | Neden |
|---|---|
| instance_name benzersiz olmalıdır | Kopyaları birbirinden ayırmak için |
| module_name mevcut olmalıdır | Başka bir yerde tanımlanmış olmalıdır |
| connections sayısı port sayısıyla eşleşmelidir | Aksi takdirde Verilog neyin nereye bağlandığını bilemez |
| connections sırası port sırasıyla eşleşmelidir | İlk signal ilk port'a bağlanır, vb. |
Görev
or_gate modülünü örneklendirerek kodu tamamla.
Yapılacaklar:
or1örnek adıylaor_gatemodülünü örneklendir- Sinyalleri doğru sırayla geçir:
input_a,input_b,output_y
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 örnekle
// Sinyalleri sırayla geçir: input_a, input_b, output_y
// .port(signal) sözdizimini kullanma
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
4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicKendi başına pratik yap: Online Verilog derleyicisi