Menu
CoddyTech

Rangkuman, Tantangan Operator

Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 29 dari 90.

challenge icon

Tantangan

Lengkapi kode dengan menuliskan ekspresi yang benar untuk setiap tugas. Tantangan ini mencakup semua operator dari bab ini.

Yang harus dilakukan:

  1. Logika: Periksa apakah value1 dan value2 keduanya bukan nol, lalu simpan hasilnya di logic_out
  2. Reduksi: Periksa apakah semua bit dalam vector bernilai 1, lalu simpan hasilnya di reduction_out
  3. Pergeseran: Geser data ke kiri sebanyak 2 bit, lalu simpan hasilnya di shift_out
  4. Penggabungan: Gabungkan high dan low menjadi nilai 8-bit, lalu simpan hasilnya di concat_out
  5. Percabangan: Simpan nilai yang lebih besar antara `a` dan `b` di cond_out

Coba sendiri

module operator_challenge;
  reg [3:0] value1, value2;
  reg logic_out;
  
  reg [3:0] vector;
  reg reduction_out;
  
  reg [7:0] data;
  reg [7:0] shift_out;
  
  reg [3:0] high, low;
  reg [7:0] concat_out;
  
  reg [3:0] a, b;
  reg [3:0] cond_out;
  
  initial begin
    // Logika
    value1 = 4'd6;
    value2 = 4'd0;
    logic_out = ______;   // Periksa apakah value1 dan value2 keduanya tidak bernilai nol
    
    // Reduksi
    vector = 4'b1111;
    reduction_out = ______;   // Check if all bits of vector are 1
    
    // Shift
    data = 8'b00001111;
    shift_out = ______;   // Geser data ke kiri sebanyak 2 bit
    
    // Penggabungan
    high = 4'b1010;
    low = 4'b1100;
    concat_out = ______;   // Gabungkan high dan low menjadi nilai 8-bit
    
    // Percabangan
    a = 4'd7;
    b = 4'd12;
    cond_out = ______;   // Simpan nilai yang lebih besar dari `a` dan `b`
    
    $display("6 && 0 = %d", logic_out);
    $display("&4'b1111 = %d", reduction_out);
    $display("00001111 << 2 = %b", shift_out);
    $display("{1010, 1100} = %b", concat_out);
    $display("max(7, 12) = %d", cond_out);
    $finish;
  end
endmodule

Semua pelajaran di Dasar-Dasar

Latihan sendiri: Compiler Verilog online