Menu
CoddyTech

Operator Penggabungan

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

Operator konkatenasi { } menggabungkan beberapa sinyal, konstanta, atau ekspresi menjadi satu vektor yang lebih besar. Operator ini digunakan saat kamu perlu menggabungkan bit untuk membentuk nilai yang lebih lebar.

Nilai Apa yang Bisa Digabungkan

Kamu bisa menggabungkan:

  • Wire dan reg: sinyal apa pun
  • Konstanta: angka seperti 4'b1010 atau 8'hFF
  • Ekspresi: hasil operasi seperti a + b
  • Pengulangan: mengulang nilai beberapa kali

Semua nilai yang digabungkan harus memiliki lebar tetap yang diketahui.

Sintaks dasar:  {value1, value2, value3, ...} Lebar hasil adalah jumlah semua lebar masing-masing.

Contoh

Gabungkan dua nilai 4-bit menjadi 8 bit:

reg [3:0] high, low;
reg [7:0] word;

word = {high, low};     // high menjadi 4 bit teratas, low menjadi 4 bit terbawah

Gabungkan dengan konstanta:

data = {4'b1010, 4'b0000};   // 8'b10100000

Gabungkan lebih dari dua:

full = {a, b, c, d};   // All widths add up

Replikasi

Kamu dapat mengulang nilai beberapa kali menggunakan {n{value}}:

repeated = {4{4'b1010}};   // 16'b1010101010101010 (repeat 4 times)

Ini berguna untuk ekstensi tanda:

signed_8bit = {{4{sign_bit}}, value_4bit};

Contoh Kode

module concatenation_demo;
  reg [3:0] upper, lower;
  reg [7:0] combined;
  reg [11:0] repeated;
  
  initial begin
    upper = 4'b1010;
    lower = 4'b1100;
    
    combined = {upper, lower};        // 10101100
    repeated = {3{4'b1010}};          // 101010101010
    
    $display("{upper, lower} = %b", combined);
    $display("{3{4'b1010}} = %b", repeated);
    $finish;
  end
endmodule

output:

{upper, lower} = 10101100
{3{4'b1010}} = 101010101010

Catatan Penting

  • Urutan penting: {a, b} berbeda dari {b, a}
  • Semua bagian harus memiliki lebar tetap (tidak boleh ada angka tanpa ukuran)
  • Penggabungan dapat digunakan di sisi kiri maupun kanan penugasan
challenge icon

Tantangan

Tulis ekspresi penggabungan yang benar untuk setiap tugas.

Yang harus dilakukan:

  1. Gabungkan a dan b menjadi hasil 8-bit, lalu simpan di combine1
  2. Gabungkan c, d, dan e menjadi hasil 12-bit, lalu simpan di combine2
  3. Gabungkan f dan dua salinan g menjadi hasil 12-bit, lalu simpan di combine3

Coba sendiri

module concatenation_challenge;
  reg [3:0] a, b;
  reg [3:0] c, d, e;
  reg [3:0] f, g;
  reg [7:0] combine1;
  reg [11:0] combine2, combine3;
  
  initial begin
    a = 4'b1010;
    b = 4'b0101;
    c = 4'b1111;
    d = 4'b0000;
    e = 4'b1100;
    f = 4'b1001;
    g = 4'b0110;
    
    combine1 = ______;   // Combine a and b into an 8-bit result 
    combine2 = ______;   // Combine c, d, and e into a 12-bit result 
    combine3 = ______;   // Combine f and two copies of g into a 12-bit result 
    
    $display("{a, b} = %b", combine1);
    $display("{c, d, e} = %b", combine2);
    $display("{f, g, g} = %b", combine3);
    $finish;
  end
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