Menu
CoddyTech

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)
  
endmodule

Beberapa 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;
challenge icon

Tantangan

Tambahkan pernyataan assign yang hilang berdasarkan tugas.

Yang harus dilakukan:

  1. Buat and_result bernilai sama dengan input_a AND input_b (bitwise)
  2. Buat or_result bernilai sama dengan input_a OR input_b (bitwise)
  3. Buat xor_result bernilai sama dengan input_a XOR input_b (bitwise)
  4. Buat not_result bernilai sama dengan NOT 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

endmodule
quiz iconUji dirimu

Pelajaran ini berisi kuis singkat. Mulai pelajarannya untuk menjawab kuis dan melacak progresmu.

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online