Menu
Coddy logo textTech

Vektörler

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

Bir vector, çok bitli bir wire veya reg'dir. Tek bir bit yerine, vector'ler data basları (buses) ile çalışmanıza olanak tanır. Birlikte gruplanmış bit'lerden oluşan bir koleksiyondur.

Not: Bir vector ayrı bir veri tipi değildir. Sadece wire veya reg veri tiplerinin çok bitli bir versiyonudur.

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

Bir vector bildirmek için, MSB en önemli bit (most significant bit) ve LSB en önemsiz bit (least significant bit) olmak üzere [MSB:LSB] sözdizimini kullanırsınız.

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

Bitlere Erişme

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ğerleri (0 veya 1) kullanırsınız.

Bunun nedeni, bir bit konumunun (bir adres gibi) doğal olarak ondalık bir sayı şeklinde ifade edilen bir konum olması, bu bit içinde saklanan değerin ise yalnızca 0 veya 1 olabilmesidir — binary bir seçim.

Örneğin, data[0] "sıfır numaralı bit" anlamına gelir ve = 1 "onu yüksek seviyeye ayarla" demektir. 75 gibi bir ondalık değeri tek bir bite atamak 75'i saklamaz — Verilog sessizce yalnızca en düşük bitini tutar — bu nedenle her zaman açıkça 0 veya 1 yazın.

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;      // Set bits 3,2,1 to 101 (binary remains)

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ı, MSB solda olacak şekilde [MSB:LSB] formatını kullanır.

Değer Atama

reg [3:0] a;

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

Vector Slices

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;     // Assign a slice 
challenge icon

Görev

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

Ne yapılmalı: 

  1. Her bir input ve output ifadesini 8-bitlik vector'ler olarak değiştirin.

Kendin dene

module vector_example(
  input a,          // 8-bit vektöre [7:0] değiştir
  input b,          // 8-bit vektöre [7:0] değiştir
  output c          // 8-bit vektöre [7:0] değiştir
);
  
  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