Menu
Coddy logo textTech

Vektörler

Coddy'nin Verilog Journey'sinin Temeller bölümünün bir parçası — ders 9 / 90.

Bir vektör, çok bitli bir wire veya reg'dir. Tek bir bit yerine, vektörler veri yolları (bus) ile çalışmanıza olanak tanır. Birlikte gruplandırılmış bitlerin bir koleksiyonudur.

Not: Bir vektör ayrı bir veri tipi değildir. Sadece wire veya reg'in çok bitli bir versiyonudur.

wire single;        // Tek bit
wire [7:0] bus;     // 8-bitlik vektör (7'den 0'a kadar olan bitler)

Bir vektör bildirmek için, MSB'nin en anlamlı bit ve LSB'nin en az anlamlı bit olduğu [MSB:LSB] sözdizimini kullanırsınız.

wire [3:0] a;       // 4-bitlik wire vektörü
reg [7:0] data;     // 8-bitlik reg vektörü
wire [15:0] addr;   // 16-bitlik wire vektörü

Bitlere Erişim

Bir vektörün münferit bitlerine veya dilimlerine eriştiğinizde, bit konumları (indeksler) için ondalık sayılar ve atamalar için ikili değerler (0 veya 1) kullanırsınız.

Bunun nedeni, bir bit konumunun (bir adres gibi) doğal olarak ondalık bir sayı olarak ifade edilen bir konum olması, o bitte saklanan değerin ise sadece 0 veya 1 —yani ikili bir seçim— olabilmesidir.

Örneğin, data[0] "sıfır numaralı bit" anlamına gelir ve = 1 "onu yüksek (high) yap" anlamına gelir. Tek bir bite 75 gibi ondalık bir sayı atayamazsınız çünkü bir bitin 0 veya 1 dışındaki değerler için yeri yoktur.

reg [7:0] data;

data = 170;  
data[0] = 1;             // LSB'yi 1 yap
data[7] = 0;             // MSB'yi 0 yap
data[3:1] = 3'b101;      // 3, 2, 1 bitlerini 101 yap (ikili sistem kalır)

Bit Sırası

Bitlerin sırası önemlidir:

wire [3:0] a;     // a[3] MSB'dir, a[0] LSB'dir
wire [0:3] b;     // b[0] MSB'dir, b[3] LSB'dir (daha az yaygın)

Çoğu tasarımcı, solda MSB olacak şekilde [MSB:LSB] formatını kullanır.

Değer Atama

reg [3:0] a;

a = 10;       
a = 5;         
a = 3;        

Vektör Dilimleri

Belirli bir bit aralığına erişebilirsiniz:

reg [15:0] word;

word[15:8] = 255;        // Üst baytı ata (8'hFF = 255)
word[7:0]  = 0;          // Alt baytı ata (8'h00 = 0)
word[3:1]  = 3'b101;     // Bir dilim ata 
challenge icon

Görev

Aşağıdaki modülün vektör bildirimlerine ihtiyacı var. 

Yapılacaklar: 

  1. Her bir girişi ve çıkışı 8 bitlik vektörler olacak şekilde değiştirin.

Kopya kağıdı

Bir vektör, [MSB:LSB] sözdizimi kullanılarak bildirilen çok bitli bir wire veya reg'dir:

wire [7:0] bus;     // 8 bitlik wire vektörü
reg [15:0] addr;    // 16 bitlik reg vektörü

Münferit bitlere ve dilimlere erişim:

reg [7:0] data;

data[0] = 1;          // LSB'yi 1 yap
data[7] = 0;          // MSB'yi 0 yap
data[3:1] = 3'b101;   // İkili (binary) kullanarak 3,2,1 bitlerini ayarla

Bit sırası: [MSB:LSB] standart kuraldır (örneğin, [7:0], bit 7'nin MSB, bit 0'ın LSB olduğu anlamına gelir).

Kendin dene

module vector_example(
  input a,          // 8-bit vektör [7:0] olarak değiştirin
  input b,          // 8-bit vektör [7:0] olarak değiştirin
  output c          // 8-bit vektör [7:0] olarak değiştirin
);
  
  assign c = a & b;
  
endmodule
quiz iconKendini test et

Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.

Temeller bölümündeki tüm dersler