Menu
CoddyTech

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);
BagianMakna
module_nameNama module yang akan dibuat instance-nya
instance_nameNama unik untuk salinan ini
connectionsSinyal yang terhubung ke port module

Contoh Sederhana

Langkah 1: Definisikan module

module and_gate (
  input a,
  input b,
  output c
);
  assign c = a & b;
endmodule

Langkah 2: Buat instance-nya di module lain

module top (
  input x,
  input y,
  output z
);
  and_gate gate1 (x, y, z);
endmodule

Berikut 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);
endmodule

Setiap 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

AturanAlasan
Nama instance harus unikUntuk membedakan salinan
Nama module harus adaHarus didefinisikan di tempat lain
Jumlah koneksi harus sama dengan jumlah portJika tidak, Verilog tidak tahu apa yang terhubung ke mana
Urutan koneksi harus sesuai dengan urutan portSinyal pertama terhubung ke port pertama, dan seterusnya
challenge icon

Tantangan

Lengkapi kode dengan membuat instance modul or_gate.

Yang harus dilakukan:

  1. Buat instance or_gate dengan nama instance or1
  2. 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)
  

endmodule
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online