Bilangan Berukuran
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 14 dari 90.
Ada cara untuk mendeklarasikan angka dengan ukuran tertentu di Verilog. Angka ini disebut angka berukuran tertentu. Cara ini berguna karena mencegah kebingungan tentang jumlah bit pada angka dan memastikan perangkat kerasmu berperilaku sesuai harapan.
Angka berukuran mengikuti format ini: [bits]'[format][value]
bits: jumlah bit (misalnya,8)': tanda apostrof yang memisahkan ukuran dari format (wajib)
format: basis bilangan:buntuk biner,duntuk desimal,huntuk heksadesimal, atauountuk oktalvalue: bilangan sebenarnya (misalnya,1010)
Contohnya:
4'b1010: 4 bit, biner 1010 (desimal 10)8'd255: 8 bit, desimal 255 (biner 11111111)16'hFF: 16 bit, heksadesimal FF (biner 0000000011111111)3'b1: 3 bit, biner 001 (bit di sebelah kiri diisi dengan nol)
Contoh kode:
reg [7:0] data;
data = 8'b10101010; // 8 bits, binary 10101010
data = 8'd170; // 8 bit, desimal 170
data = 8'hAA; // 8 bits, hex AAKetiga contoh menetapkan nilai yang sama ke data.
Mengapa Ukuran Penting
Tanpa ukuran:
reg [7:0] data;
data = 1; // Apa artinya ini? 1 bit? 8 bit?Verilog menganggap angka kecil memiliki ukuran 32 bit secara default, yang dapat menyebabkan masalah.
Dengan ukuran:
reg [7:0] data;
data = 8'b00000001; // Clear: 8-bit value 1Padding Nol
Saat kamu menetapkan nilai yang lebih kecil ke vektor yang lebih besar, Verilog mengisi bit di sebelah kiri dengan nol:
reg [7:0] data;
data = 4'b1010; // Becomes 8'b00001010Tantangan
Lengkapi kode dengan menuliskan angka berukuran tepat.
Yang harus dilakukan:
- Atur
ake angka biner 8-bit untuk desimal 170 (biner 10101010) - Atur
bke angka biner 4-bit untuk desimal 12 (biner 1100) - Atur
cke angka heksadesimal 16-bit untuk desimal 255 (heksadesimal FF)
Coba sendiri
module sized_challenge;
reg [7:0] a;
reg [3:0] b;
reg [15:0] c;
initial begin
a = ______; // biner 8 bit untuk 170 (10101010)
b = ______; // biner 4 bit untuk 12 (1100)
c = ______; // heksadesimal 16 bit untuk 255 (FF)
$display("a = %b", a);
$display("b = %b", b);
$display("c = %h", 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