Menu
CoddyTech

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-bit

Mengakses 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 
challenge icon

Tantangan

Module di bawah ini memerlukan deklarasi vektor. 

Yang perlu dilakukan: 

  1. 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;
  
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