Pemetaan Port Berdasarkan Urutan
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 35 dari 90.
Di pelajaran sebelumnya, kamu mempelajari pemetaan port berdasarkan nama, dengan memberi label secara eksplisit pada setiap koneksi menggunakan .port(signal). Sekarang kita akan membahas metode alternatif: pemetaan port berdasarkan urutan.
Ini menghubungkan sinyal ke port module berdasarkan urutan kemunculannya dalam definisi module. Kamu cukup mencantumkan sinyal dalam tanda kurung, lalu Verilog mencocokkannya satu per satu.
Sintaks:
module_name instance_name (signal1, signal2, signal3);Sinyal pertama terhubung ke port pertama, sinyal kedua ke port kedua, dan seterusnya.
Contoh
Definisi module:
module or_gate (
input in1, // Port pertama
input in2, // Port kedua
output result // Port ketiga
);
assign result = in1 | in2;
endmoduleInstansiasi dengan pemetaan port berdasarkan urutan:
or_gate or1 (input_a, input_b, output_y);Ini menghubungkan:
- Sinyal pertama
input_a→ port pertamain1 - Sinyal kedua
input_b→ port keduain2 - Sinyal ketiga
output_y→ port ketigaresult
Urutan Itu Penting
Dalam pemetaan port berdasarkan urutan, urutannya sangat penting:
// Urutan yang benar
or_gate or1 (input_a, input_b, output_y);
// Urutan salah, sinyal terhubung ke port yang salah!
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);Jika kamu keliru mengurutkannya, koneksi akan tersambung ke port yang salah. Ini bisa sulit di-debug karena sekilas kodenya tampak benar.
Pemetaan Port Berdasarkan Nama vs Berdasarkan Urutan
| Fitur | Berdasarkan Nama | Berdasarkan Urutan |
|---|---|---|
| Sintaks | .port(signal) | signal1, signal2 |
| Urutan berpengaruh? | Tidak | Ya |
| Mudah dipahami sendiri? | Ya | Tidak |
| Risiko kesalahan | Rendah | Tinggi |
| Direkomendasikan untuk | Sebagian besar desain | Hanya kasus sederhana |
Kapan Menggunakan Pemetaan Port Berdasarkan Urutan
Pemetaan port berdasarkan urutan dapat diterima ketika:
- Module hanya memiliki sedikit port (2-3)
- Urutan port sudah jelas dan kemungkinan besar tidak akan berubah
- Kamu sedang menulis testbench singkat
Untuk sebagian besar desain, pemetaan port berdasarkan nama lebih disarankan karena lebih jelas dan mengurangi risiko kesalahan.
Tantangan
Selesaikan instansiasi dengan mencantumkan sinyal dalam urutan yang benar menggunakan pemetaan port berdasarkan urutan.
Yang harus dilakukan:
Port module (dalam urutan ini):
input en(enable)input [7:0] d(input data)output [7:0] q(output data)
Sinyal yang harus dihubungkan:
enable_signal→ hubungkan keendata_input→ hubungkan keddata_output→ hubungkan keq
Coba sendiri
module register (
input en,
input [7:0] d,
output [7:0] q
);
assign q = en ? d : q;
endmodule
module top (
input enable_signal,
input [7:0] data_input,
output [7:0] data_output
);
// TODO: Buat instansiasi register bernama reg1 menggunakan pemetaan ORDER
// Urutkan sinyal dengan benar: enable_signal, data_input, data_output
// 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