Penugasan Kontinu
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 37 dari 90.
Dalam perangkat keras, sambungan adalah kabel fisik yang menghubungkan dua titik dalam sirkuit. Setelah kabel terpasang, sambungan itu bersifat permanen dan selalu aktif. Jika salah satu ujung berubah, ujung lainnya langsung berubah.
Dalam Verilog, kita memerlukan cara untuk memodelkan perilaku ini. Kita ingin mengirimkan nilai ke sebuah wire dan membuatnya tetap terhubung selamanya. Proses ini disebut continuous assignment.
Assignment kontinu menggunakan kata kunci assign untuk membuat koneksi permanen antara wire dan ekspresi. Wire terus-menerus mengambil nilai ekspresi, seperti wire fisik.
Anggaplah ini seperti menyolder kabel, bukan menuliskan nilai sekali saja.
Sintaks
assign wire_name = expression;| Bagian | Makna |
|---|---|
assign | Kata kunci yang memulai assignment kontinu |
wire_name | Wire yang digerakkan (tidak boleh berupa reg) |
expression | Nilai yang menggerakkan wire |
Contoh Sederhana
wire out;
assign out = a & b;Artinya: out selalu sama dengan a AND b. Setiap kali a atau b berubah, out langsung berubah.
Cara Kerjanya
Tidak seperti reg yang menyimpan nilai, wire dengan penugasan kontinu terus diperbarui:
module continuous_demo;
reg a, b;
wire c;
assign c = a & b; // c selalu mengikuti hasil a AND b
initial begin
a = 0; b = 0;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0
a = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=0 (1&0=0)
b = 1;
#10 $display("a=%d, b=%d, c=%d", a, b, c); // c=1 (1&1=1)
$finish;
end
endmoduleOutput:
a=0, b=0, c=0
a=1, b=0, c=0
a=1, b=1, c=1Setiap kali a atau b berubah, c diperbarui secara otomatis.
Beberapa Penugasan
Kamu dapat memiliki beberapa penugasan berurutan dalam sebuah module:
module multiple_assign (
input a, b, c,
output x, y
);
assign x = a & b;
assign y = x | c; // y bergantung pada x
endmoduleSemua assignment berjalan secara paralel dan terus-menerus.
Penggunaan Umum
Penugasan kontinu digunakan untuk:
- Logika kombinatorial sederhana (AND, OR, XOR)
- Menghubungkan kabel satu sama lain
- Membuat buffer tri-state
- Menggerakkan output dari ekspresi kombinatorial
Tantangan
Yang harus dilakukan:
- Tambahkan penugasan kontinu yang belum ada agar
zsama denganx AND y.
Coba sendiri
module continuous_challenge (
input x,
input y,
output z
);
// TODO: Tambahkan pernyataan penugasan kontinu yang belum ada agar z sama dengan x AND y
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