Instansiasi Modul
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 33 dari 90.
Instansiasi module adalah proses membuat salinan module di dalam module lain. Inilah cara kamu membangun desain yang lebih besar dengan menghubungkan komponen yang lebih kecil.
Setelah mendefinisikan sebuah module, kamu dapat menggunakannya di dalam module lain. Ini disebut instansiasi. Setiap instansiasi membuat instance terpisah dari module tersebut. Anggap saja seperti menggunakan cetak biru untuk membuat beberapa salinan komponen yang sama.
Sintaks Dasar
module_name instance_name (connections);| Bagian | Makna |
|---|---|
module_name | Nama module yang akan dibuat instance-nya |
instance_name | Nama unik untuk salinan ini |
connections | Sinyal yang terhubung ke port module |
Contoh Sederhana
Langkah 1: Definisikan module
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmoduleLangkah 2: Buat instance-nya di module lain
module top (
input x,
input y,
output z
);
and_gate gate1 (x, y, z);
endmoduleBerikut yang terjadi dalam kode ini:
and_gate: nama module yang ingin kita gunakan (harus ada di suatu tempat)gate1: nama unik yang kita berikan untuk instance khusus ini(x, y, z): sinyal yang kita hubungkan ke port module (dalam urutan yang sama seperti kemunculannya pada definisi module)
Sinyal pertama x terhubung ke port pertama a. Sinyal kedua y terhubung ke port kedua b. Sinyal ketiga z terhubung ke port ketiga c.
Kamu harus meneruskan sinyal ke module. Tanda kurung tidak boleh kosong. Jumlah sinyal harus sama dengan jumlah port.
Beberapa Instance
Kamu bisa membuat beberapa salinan dari modul yang sama:
module top;
wire out1, out2;
wire sig1, sig2, sig3, sig4;
and_gate gate1 (sig1, sig2, out1);
and_gate gate2 (sig3, sig4, out2);
endmoduleSetiap instance memiliki namanya sendiri (gate1, gate2) dan koneksinya sendiri. Keduanya bekerja secara independen.
Yang Terjadi Selama Instansiasi
- Sebuah salinan perangkat keras dibuat
- Setiap instance memiliki kumpulan sinyalnya sendiri
- Instance berjalan secara paralel (secara bersamaan)
- Sinyal yang kamu teruskan menentukan bagaimana instance terhubung dengan bagian lain dari desainmu
Aturan untuk Instansiasi
| Aturan | Alasan |
|---|---|
| Nama instance harus unik | Untuk membedakan salinan |
| Nama module harus ada | Harus didefinisikan di tempat lain |
| Jumlah koneksi harus sama dengan jumlah port | Jika tidak, Verilog tidak tahu apa yang terhubung ke mana |
| Urutan koneksi harus sesuai dengan urutan port | Sinyal pertama terhubung ke port pertama, dan seterusnya |
Tantangan
Lengkapi kode dengan membuat instance modul or_gate.
Yang harus dilakukan:
- Buat instance
or_gatedengan nama instanceor1 - Masukkan sinyal dalam urutan yang benar:
input_a,input_b,output_y
Coba sendiri
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: Buat instans or_gate dengan nama or1
// Masukkan sinyal sesuai urutan: input_a, input_b, output_y
// Jangan gunakan sintaks .port(signal)
endmodulePelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.
Semua pelajaran di Dasar-Dasar
1Pengantar
Apa Itu VerilogPerangkat Keras vs Perangkat LunakModul PertamamuKomentarTingkat Abstraksi Desain4Operator Bagian 1
Operator AritmetikaOperator ModuloOperator PerbandinganUlasan, Matematika SederhanaOperator Bitwise7Penugasan dan Gerbang
Penugasan KontinuPenugasan dengan OperatorPrimitif Gerbang BawaanGerbang AND, OR, NOTGerbang XOR, XNORUlasan: Rangkaian Gerbang Logika10Pengambilan Keputusan
Pernyataan IfIf - ElseRangkuman: Komparator SederhanaPernyataan CaseCasex dan CasezRangkuman: Desain ALU5Operator Bagian 2
Operator LogikaOperator ReduksiOperator GeserOperator PenggabunganOperator KondisionalRangkuman, Tantangan Operator3Sistem Bilangan
Representasi BinerBilangan BerukuranBilangan Tanpa UkuranBilangan NegatifNilai Khusus X dan ZRingkasan: Format Bilangan6Modul
Struktur ModulPort Input dan OutputPort InoutInstansiasi ModulPemetaan Port Berdasarkan NamaPemetaan Port Berdasarkan UrutanRangkuman: Bangun Modul9Blok Prosedural
Blok alwaysBlok initialDaftar SensitivitasPenugasan BlockingPenugasan Non-BlockingRangkuman: always vs initial15Pengendali Lampu Lalu Lintas
Menentukan StatusLogika Mesin StatusLatihan sendiri: Compiler Verilog online