Penugasan dengan Operator
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 38 dari 90.
Setelah memahami penugasan kontinu, kamu bisa menggabungkannya dengan operator untuk membuat logika yang berguna. Pernyataan assign bisa menggunakan operator apa pun untuk menggerakkan wire.
Sintaks Dasar
assign wire_name = expression;Ekspresi dapat mencakup:
- Operator aritmetika (
+,-,*,/) - Operator bitwise (
&,|,^,~) - Operator logika (
&&,||,!)
- Operator perbandingan (
>,<,==,!=) - Operator pergeseran (
<<,>>) - Operator percabangan (
? :)
Contoh dengan Operator Berbeda
AND bitwise:
assign out = a & b;Penjumlahan:
assign sum = a + b;Perbandingan:
assign is_greater = (a > b);Percabangan (multiplexer):
assign out = sel ? a : b;Pergeseran:
assign shifted = data << 2;Penggabungan:
assign bus = {high_byte, low_byte};Contoh Kode
module assign_operators (
input [3:0] a, b,
input sel,
output [3:0] and_out,
output [4:0] sum_out,
output is_equal,
output mux_out
);
assign and_out = a & b; // AND per bit
assign sum_out = a + b; // Penjumlahan
assign is_equal = (a == b); // Perbandingan
assign mux_out = sel ? a : b; // Percabangan (multiplekser)
endmoduleBeberapa Operator dalam Satu Penugasan
Kamu bisa menggabungkan operator dalam satu ekspresi:
assign result = (a & b) | (c ^ d);
assign final = (a + b) > (c - d);
assign parity = ^data; // Reduksi XOR (jumlah 1 ganjil)Prioritas Operator
Verilog mengikuti prioritas operator standar. Gunakan tanda kurung ( ) agar maksudmu jelas:
// Kurang jelas
assign out = a & b | c;
// Jelas
assign out = (a & b) | c;Tantangan
Tambahkan pernyataan assign yang hilang berdasarkan tugas.
Yang harus dilakukan:
- Buat
and_resultbernilai sama denganinput_a AND input_b(bitwise) - Buat
or_resultbernilai sama denganinput_a OR input_b(bitwise) - Buat
xor_resultbernilai sama denganinput_a XOR input_b(bitwise) - Buat
not_resultbernilai sama denganNOT input_a(bitwise)
Coba sendiri
module assign_challenge (
input input_a,
input input_b,
output and_result,
output or_result,
output xor_result,
output not_result
);
// TODO: Tambahkan pernyataan assign untuk:
// and_result = input_a & input_b
// or_result = input_a | input_b
// xor_result = input_a ^ input_b
// not_result = ~input_a
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