Vektor
Termasuk bagian Dasar-Dasar dalam perjalanan Verilog di Coddy. Pelajaran 9 dari 90.
Vektor adalah wire atau reg multi-bit. Alih-alih satu bit, vektor memungkinkanmu bekerja dengan bus data. Vektor merupakan kumpulan bit yang dikelompokkan bersama.
Catatan: Vector bukan tipe data yang terpisah. Vector hanyalah versi multi-bit dari wire atau reg.
wire single; // Bit tunggal
wire [7:0] bus; // Vektor 8 bit (dari bit 7 hingga 0)Untuk mendeklarasikan vector, gunakan sintaks [MSB:LSB], dengan MSB sebagai bit paling signifikan dan LSB sebagai bit paling tidak signifikan.
wire [3:0] a; // vektor wire 4-bit
reg [7:0] data; // vektor reg 8-bit
wire [15:0] addr; // vektor wire 16-bitMengakses Bit
Saat kamu mengakses bit atau potongan individual dari sebuah vektor, kamu menggunakan angka desimal untuk posisi bit (indeks) dan nilai biner (0 atau 1) untuk penetapan.
Ini karena posisi bit adalah lokasi (seperti alamat), yang secara alami dinyatakan sebagai angka desimal, sedangkan nilai yang disimpan dalam bit tersebut hanya bisa berupa 0 atau 1: pilihan biner.
Sebagai contoh, data[0] berarti "bit nomor nol", dan = 1 berarti "atur ke tingkat tinggi." Menetapkan angka desimal seperti 75 ke satu bit tidak akan menyimpan 75. Verilog diam-diam hanya menyimpan bit terendahnya, jadi selalu tulis 0 atau 1 secara eksplisit.
reg [7:0] data;
data = 170;
data[0] = 1; // Atur LSB menjadi 1
data[7] = 0; // Atur MSB menjadi 0
data[3:1] = 3'b101; // Set bits 3,2,1 to 101 (binary remains)Urutan Bit
Urutan bit itu penting:
wire [3:0] a; // a[3] adalah MSB, a[0] adalah LSB
wire [0:3] b; // b[0] adalah MSB, b[3] adalah LSB (kurang umum)Sebagian besar desainer menggunakan format [MSB:LSB] dengan MSB di sebelah kiri.
Menetapkan Nilai
reg [3:0] a;
a = 10;
a = 5;
a = 3; Irisan Vektor
Kamu dapat mengakses rentang bit:
reg [15:0] word;
word[15:8] = 255; // Isi byte atas dengan nilai (8'hFF = 255)
word[7:0] = 0; // Isi byte bawah dengan nilai (8'h00 = 0)
word[3:1] = 3'b101; // Assign a slice Tantangan
Module di bawah ini memerlukan deklarasi vektor.
Yang perlu dilakukan:
- Ubah setiap input dan output menjadi vektor 8-bit.
Coba sendiri
module vector_example(
input a, // Ubah menjadi vektor 8-bit [7:0]
input b, // Ubah menjadi vektor 8-bit [7:0]
output c // Ubah menjadi vektor 8-bit [7:0]
);
assign c = a & b;
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