Bilangan Tanpa Ukuran
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 15 dari 90.
Angka tanpa ukuran adalah angka yang ditulis tanpa menentukan jumlah bitnya. Saat kamu menulis angka tanpa awalan ukuran, Verilog menganggap ukurannya 32 bit secara default.
a = 'b1010; // Unsized: Verilog treats this as 32 bits
a = 32'b1010; // Sama seperti di atas, tetapi dinyatakan secara eksplisitBilangan tanpa ukuran hanya menggunakan format dan nilai: [format][value]
format: basis bilangan:buntuk biner,duntuk desimal,huntuk heksadesimal, atauountuk oktalvalue: bilangan sebenarnya (misalnya,1010)
Apostrof ' tetap diperlukan di antara format dan nilai, tetapi tidak ada jumlah bit sebelum apostrof.
'b1010: bilangan biner 1010 berukuran 32 bit'd255: bilangan desimal 255 berukuran 32 bit'hFF: bilangan heksadesimal FF berukuran 32 bit'b1: bilangan biner 1 berukuran 32 bit (dengan 31 nol di depan)
Contoh kode:
reg [7:0] data;
initial begin
data = 1010; // Tanpa ukuran: nilai 32-bit (dapat memicu peringatan)
data = 'd255; // Unsized: 32-bit decimal 255
data = 'hFF; // Tanpa ukuran: heksadesimal 32-bit FF
endTanpa Ukuran vs Berukuran
| Tanpa ukuran | Berukuran | |
|---|---|---|
| Contoh | 1010 atau 'd255 | 8'b1010 atau 8'd255 |
| Lebar bit | 32 bit (default) | Eksplisit (sesuai yang ditentukan) |
| Apostrof | Wajib dengan format | Wajib |
| Kapan digunakan | Kode testbench sederhana | Penetapan hardware |
Potensi Masalah
Angka tanpa ukuran dapat menyebabkan perilaku yang tidak terduga saat ditetapkan ke register yang lebih kecil:
reg [3:0] small;
small = 'b1111; // 32-bit value, but fits in 4 bits (fine)
small = 'b10000; // Nilai 32-bit, tetapi terlalu besar! (peringatan)Contoh kedua menetapkan nilai 32-bit 10000 ke register 4-bit. Hanya 4 bit terbawah yang dipertahankan (0000), hasilnya mungkin tidak sesuai dengan yang kamu harapkan.
Kapan Menggunakan Bilangan Tanpa Ukuran
Bilangan tanpa ukuran praktis digunakan untuk:
- Bilangan sederhana dalam testbench
- Penghitung perulangan
- Pernyataan
$display
Untuk penugasan perangkat keras yang sebenarnya, gunakan angka dengan ukuran yang ditentukan agar jelas dan hindari peringatan.
Tantangan
Pada kode di bawah ini, beberapa angka tidak memiliki ukuran. Ubah menjadi angka berukuran 8 bit untuk menghindari peringatan.
Yang harus dilakukan:
- Ubah
amenjadi angka biner 8 bit untuk 1010 - Ubah
bmenjadi angka desimal 8 bit untuk 255 - Ubah
cmenjadi angka heksadesimal 8 bit untuk FF
Coba sendiri
module unsized_challenge;
reg [7:0] a, b, c;
initial begin
a = 'b1010; // Change to sized (8-bit binary)
b = 'd255; // Ubah menjadi format dengan ukuran tertentu (desimal 8-bit)
c = 'hFF; // Change to sized (8-bit hex)
$display("a = %b", a);
$display("b = %b", b);
$display("c = %b", c);
$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
Periksa konversi: Konverter Basis Bilangan