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 Görev
Aşağıdaki modülün vektör bildirimlerine ihtiyacı var.
Yapılacaklar:
- 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 ayarlaBit 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;
endmoduleBu 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
4Operatörler Bölüm 1
Aritmetik OperatörlerModül OperatörüKarşılaştırma OperatörleriÖzet - Basit MatematikBitsel Operatörler7Atama ve Kapılar
Sürekli AtamaOperatörlerle AtamaYerleşik Kapı PrimitifleriAND OR NOT KapılarıXOR XNOR KapılarıÖzet - Mantık Kapısı Devresi10Karar Yapıları
If İfadesiIf - ElseÖzet - Basit KarşılaştırıcıCase İfadesiCasex ve CasezÖzet - ALU Tasarımı5Operatörler Bölüm 2
Mantıksal Operatörlerİndirgeme OperatörleriKaydırma OperatörleriBirleştirme OperatörüKoşullu OperatörÖzet - Operatör Meydan Okuması11Döngüler
For DöngüsüWhile DöngüsüRepeat DöngüsüSonsuz DöngüDevre Dışı Bırakma İfadesiÖzet - Döngü Kalıpları3Sayı Sistemleri
İkilik GösterimBoyutlandırılmış SayılarBoyutlandırılmamış SayılarNegatif SayılarÖzel Değerler X ve ZÖzet - Sayı Formatları6Modüller
Modül YapısıGiriş ve Çıkış PortlarıInout PortlarıModül Örneklendirmeİsme Göre Port EşlemeSıraya Göre Port EşlemeÖzet - Bir Modül Oluşturun9Prosedürel Bloklar
Always BloğuInitial BloğuDuyarlılık ListesiEngelleyici AtamaEngelleyici Olmayan AtamaÖzet - Always vs Initial15Trafik Işığı Kontrolcüsü
Durumları TanımlamaDurum Makinesi Mantığı