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. Dengan cara ini, kamu dapat membangun desain yang lebih besar dengan menghubungkan komponen-komponen 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 instansinya
instance_nameNama unik untuk salinan ini
connectionsSinyal yang terhubung ke port module

Contoh Sederhana

Langkah 1: Definisikan modul

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

Langkah 2: Buat instansinya di modul 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 (dengan urutan yang sama seperti kemunculannya dalam 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.

Berikan satu sinyal untuk setiap port. Verilog juga menerima jumlah sinyal yang lebih sedikit, bahkan tanda kurung kosong, tetapi setiap port yang tidak diberi sinyal akan dibiarkan tidak terhubung dan tidak tersambung ke apa pun dalam desainmu. Memberikan lebih banyak sinyal daripada jumlah port yang dimiliki modul adalah error.

Beberapa Instans

Kamu dapat 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 mandiri.

Yang Terjadi Saat Instansiasi

  • Dibuat salinan perangkat keras
  • Setiap instans memiliki kumpulan sinyalnya sendiri
  • Instans berjalan secara paralel (secara bersamaan)
  • Sinyal yang kamu teruskan menentukan bagaimana instance terhubung ke bagian lain dari rancanganmu

Aturan untuk Instansiasi

AturanAlasan
Nama instans harus unikAgar salinan dapat dibedakan
Nama module harus adaHarus didefinisikan di tempat lain
Hubungkan satu sinyal ke setiap portPort tanpa sinyal akan dibiarkan tidak terhubung, dan jumlah sinyal yang melebihi jumlah port akan menimbulkan error
Urutan koneksi harus sesuai dengan urutan portSinyal pertama terhubung ke port pertama, dan seterusnya.
challenge icon

Tantangan

Lengkapi kode dengan membuat instans modul or_gate.

Yang harus dilakukan:

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