Penugasan Blocking
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 49 dari 90.
Verilog memiliki dua jenis penugasan prosedural: blocking (=) dan non-blocking (<=). Dalam pelajaran ini, kita berfokus pada penugasan blocking.
Assignment blocking menggunakan operator =. Disebut "blocking" karena menghalangi eksekusi pernyataan berikutnya hingga assignment saat ini selesai. Kode berjalan langkah demi langkah, sesuai urutan.
Sintaks:
variable = expression;Kapan Menggunakan Assignment Blocking
Assignment blocking (=) digunakan untuk logika kombinasional: sirkuit yang output-nya langsung berubah saat input berubah, tanpa clock dan tanpa memori.
Contoh logika kombinasi:
- Gerbang AND / OR / XOR
- Penjumlah dan pengurang
- Multiplekser
- Dekoder
Contoh Verilog:
always @(*) begin
sum = a + b; // Penugasan blocking
carry = a & b; // Penugasan blocking
endBlocking dalam Blok always (Logika Kombinasional)
always @(*) begin
temp = a & b; // Langkah 1
out = temp | c; // Langkah 2 (menggunakan temp dari langkah 1)
endUrutannya penting. Ini tidak masalah untuk logika kombinasional.
Blocking vs Non-blocking
Blocking (=) | Non-blocking (<=) | |
|---|---|---|
| Eksekusi | Satu demi satu | Semuanya sekaligus |
| Baris berikutnya menunggu? | Ya | Tidak |
| Penggunaan | Logika kombinatorial | Logika sekuensial (flip-flop) |
Penting: Jangan Gunakan Blocking untuk Flip-Flop
Tantangan
Tambahkan assignment blocking yang hilang untuk menukar nilai x dan y menggunakan variabel sementara.
Yang harus dilakukan:
- Tetapkan nilai
xketemp(simpan x di temp) - Tetapkan nilai
ykex(pindahkan y ke x) - Tetapkan nilai
tempkey(pindahkan x yang tersimpan ke y)
Coba sendiri
module swap;
reg x, y;
reg temp;
initial begin
x = 1;
y = 0;
$display("Before swap: x=%d, y=%d", x, y);
// TODO: Langkah 1: Tetapkan nilai x ke temp
// TODO: Langkah 2: Tetapkan nilai y ke x
// TODO: Langkah 3: Tetapkan nilai temp ke y
$display("After swap: x=%d, y=%d", x, y);
$finish;
end
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