Menu
CoddyTech

Diziler

Coddy'nin Verilog Journey'sinin Temel Bilgiler bölümünün bir parçası. Ders 10 / 90.

Dizi, birden fazla değeri tek bir değişkende saklamanı sağlar. Dizideki her öğeye indeksiyle erişilebilir.

Not: Dizi ayrı bir veri türü değildir. wire, reg, integer veya real türlerinden oluşan bir koleksiyondur.

Dizileri Tanımlama

Söz dizimi: <data_type> <name> [<size>];

reg [7:0] memory [0:255];   // 256 bayt bellek (her biri 8 bit)
reg data [0:7];              // 8 adet tek bitlik yazmaç
wire [3:0] bus [0:3];       // Her biri 4 bit genişliğinde 4 veri yolu
integer counters [0:9];      // 10 tam sayı

Köşeli parantez içindeki sayı [ ], bit genişliği değil, dizi boyutudur.

Dizi Elemanlarına Erişme

reg [7:0] memory [0:3];
memory[0] = 165;        // Ondalık 165
memory[1] = 90;         // Ondalık 90
memory[2] = memory[0] + memory[1];
$display("%d", memory[2]);  // Yazdırır: 255

Diziler, test verilerini depolamak için test düzeneklerinde çok kullanışlıdır.

Çok Boyutlu Diziler

Birden fazla boyuta sahip diziler oluşturabilirsiniz:

reg [7:0] matrix [0:3][0:3];   // 8 bitlik değerlerden oluşan 4x4 dizi
matrix[0][0] = 255;            // 8'hFF = ondalık 255
matrix[2][1] = 85;             // 8'h55 = ondalık 85

Dizi ve Vektör Karşılaştırması

 VektörDizi
TanımıÇok bitli wire veya regBirden çok değerden oluşan koleksiyon
Sözdizimi[MSB:LSB][size]
Örnekreg [7:0] data;reg [7:0] mem [0:255];
Erişimdata[3] (3. bit)mem[3] (3. öğe)

Bir vektör, birden çok bite sahip tek bir değerdir.
Bir dizi, her biri kendi bitlerine sahip birden çok değerdir.

Önemli Notlar

  • Bir reg dizisi sentezlenebilir: sentez araçları, reg [7:0] mem [0:255]; gibi dizilerden RAM'ler ve yazmaç dosyaları gibi bellekler oluşturur.
  • Diziler, test verilerini depolamak için test düzeneklerinde de kullanılır.
challenge icon

Görev

4 test değeri saklayan bir dizi oluşturmak için aşağıdaki kodu tamamla.

Yapman gerekenler: 

  1. test_data adlı bir dizi tanımla
    1. reg veri türünü kullan (çünkü bir testbench'te değerleri saklar)
    2. Her eleman 8 bit genişliğinde olmalı ([7:0])
    3. Dizide 4 eleman olmalı ([0:3])

Kendin dene

module arrays;
  
  // test_data adlı bir dizi tanımlayın
  // Her biri 8 bit genişliğinde 4 elemanı olmalı
  // reg veri türünü kullanın (çünkü bir testbench içinde değerleri saklar)

  
  integer i;
  
  initial begin
    test_data[0] = 170;   
    test_data[1] = 240;    
    test_data[2] = 204;    
    test_data[3] = 15;   
    
    for (i = 0; i < 4; i = i + 1) begin
      $display("test_data[%0d] = %b", i, test_data[i]);
    end
    $finish;
  end
  
endmodule
quiz iconKendini test et

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

Temel Bilgiler bölümündeki tüm dersler

Kendi başına pratik yap: Online Verilog derleyicisi