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'b1010atau8'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 terbawahGabungkan dengan konstanta:
data = {4'b1010, 4'b0000}; // 8'b10100000Gabungkan lebih dari dua:
full = {a, b, c, d}; // All widths add upReplikasi
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
endmoduleoutput:
{upper, lower} = 10101100
{3{4'b1010}} = 101010101010Catatan 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
Tantangan
Tulis ekspresi penggabungan yang benar untuk setiap tugas.
Yang harus dilakukan:
- Gabungkan
adanbmenjadi hasil 8-bit, lalu simpan dicombine1 - Gabungkan
c,d, danemenjadi hasil 12-bit, lalu simpan dicombine2 - Gabungkan
fdan dua salinangmenjadi hasil 12-bit, lalu simpan dicombine3
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
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