Port Input dan Output
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 31 dari 90.
Port input dan output adalah koneksi yang memungkinkan sebuah module berkomunikasi dengan dunia luar. Port seperti pin pada chip. Port merupakan antarmuka antara sebuah module dan bagian desain lainnya.
Setiap module memiliki:
- Port input: sinyal yang masuk ke dalam module
- Port output: sinyal yang keluar dari module
Port Input
Port input menerima data dari luar. Nilainya tidak dapat diubah di dalam module, hanya dibaca.
input clk; // input satu bit
input [7:0] data; // Vektor input 8 bit
input a, b; // Beberapa input dalam satu barisAturan untuk input:
- Tidak dapat diberi nilai di dalam module
- Tidak dapat dideklarasikan sebagai
reg - Selalu
wire(secara default)
Port Output
Port output mengirim data ke luar. Port ini dapat dikendalikan oleh blok assign atau always.
output out; // output satu bit
output [3:0] result; // output 4 bit
output reg busy; // output bisa berupa reg
output wire ready; // output bisa berupa wireAturan untuk output:
- Bisa berupa
wire(denganassign) ataureg(denganalways) - Harus dikendalikan oleh sesuatu di dalam module
Sintaks Deklarasi Port
Sintaks deklarasi port adalah cara khusus untuk menulis port input dan output dalam module. Sintaks ini memberi tahu Verilog tiga hal tentang setiap port:
- Arah: apakah ini input, output, atau inout?
- Ukuran: berapa bit lebarnya?
- Nama: apa namanya?
module example (
input [7:0] data_in, // Vektor input
input clk, // Input tunggal
input enable, // Input tunggal
output reg [7:0] out, // Output reg
output busy // Output wire
);Mengapa Arah Port Penting
Arah memberi tahu Verilog:
- Sinyal mana yang dapat dibaca modul (input)
- Sinyal mana yang dapat ditulis oleh modul (output)
- Jenis koneksi yang diizinkan
Menggunakan arah yang salah menyebabkan error kompilasi.
Contoh Kode
module port_demo (
input [3:0] a, // Hanya bisa dibaca
input [3:0] b, // Hanya bisa dibaca
output reg [3:0] sum, // Bisa ditulis (reg)
output [3:0] diff // Bisa ditulis (wire)
);
always @(*) begin
sum = a + b; // Menulis ke output reg
end
assign diff = a - b; // Menulis ke output wire
endmoduleTantangan
Lengkapi Deklarasi Port
Yang harus dilakukan:
- Tambahkan input 8-bit bernama
data_in - Tambahkan input satu bit bernama
clk - Tambahkan output 4-bit bernama
result(gunakan reg: akan diberi nilai di dalam blok always) - Tambahkan output satu bit bernama
valid(gunakan wire: akan diberi nilai dengan assign)
Coba sendiri
module port_challenge (
// Tugas 1: Tambahkan input 8-bit bernama data_in
// Tugas 2: Tambahkan input 1-bit bernama clk
// Tugas 3: Tambahkan output 4-bit bernama result (gunakan reg)
// Tugas 4: Tambahkan output 1-bit bernama valid (gunakan wire)
);
reg [3:0] counter;
always @(posedge clk) begin
counter <= counter + 1;
result <= counter;
end
assign valid = (counter > 8);
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