Menu
Coddy logo textTech

Tablice

Część sekcji Podstawy ścieżki Verilog w Coddy. Lekcja 10 z 90.

Tablica pozwala przechowywać wiele wartości w jednej zmiennej. Do każdego elementu tablicy można uzyskać dostęp za pomocą jego indeksu.

Uwaga: Tablica nie jest osobnym typem danych. Jest kolekcją typów wire, reg, integer lub real.

Deklarowanie tablic

Składnia: <data_type> <name> [<size>];

reg [7:0] memory [0:255];   // 256 bajtów pamięci (każdy po 8 bitów)
reg data [0:7];              // 8 rejestrów jednobitowych
wire [3:0] bus [0:3];       // 4 magistrale, każda o szerokości 4 bitów
integer counters [0:9];      // 10 liczb całkowitych

Liczba w nawiasach kwadratowych [ ] oznacza rozmiar tablicy, a nie szerokość w bitach.

Dostęp do elementów tablicy

reg [7:0] memory [0:3];
memory[0] = 165;        // Dziesiętnie 165
memory[1] = 90;         // Dziesiętnie 90
memory[2] = memory[0] + memory[1];
$display("%d", memory[2]);  // Wyświetla: 255

Tablice są bardzo przydatne w testbenchach do przechowywania danych testowych.

Tablice wielowymiarowe

Możesz tworzyć tablice o wielu wymiarach:

reg [7:0] matrix [0:3][0:3];   // Tablica 4x4 wartości 8-bitowych
matrix[0][0] = 255;            // 8'hFF = 255 w systemie dziesiętnym
matrix[2][1] = 85;             // 8'h55 = 85 w systemie dziesiętnym

Tablica wektorowa a tablica

 WektorTablica
Co to jestWielobitowy przewód lub rejestrZbiór wielu wartości
Składnia[MSB:LSB][size]
Przykładreg [7:0] data;reg [7:0] mem [0:255];
Dostępdata[3] (bit 3)mem[3] (element 3)

Wektor to jedna wartość z wieloma bitami.
Tablica to wiele wartości, z których każda ma własne bity.

Ważne uwagi

  • Tablice w wielu narzędziach nie mogą być syntezowane, gdy są używane z dużymi rozmiarami
  • Tablice są używane głównie w stanowiskach testowych
  • W przypadku pamięci sprzętowej używaj specjalnych prymitywów pamięci
challenge icon

Wyzwanie

Uzupełnij poniższy kod, aby utworzyć tablicę przechowującą 4 wartości testowe.

Co należy zrobić: 

  1. Zadeklaruj tablicę o nazwie test_data
    1. Użyj typu danych reg (ponieważ przechowuje wartości w testbench)
    2. Każdy element powinien mieć szerokość 8 bitów ([7:0])
    3. Tablica powinna mieć 4 elementy ([0:3])

Spróbuj swoich sił

module arrays;
  
  // Zadeklaruj tablicę o nazwie test_data
  // Powinna mieć 4 elementy, każdy o szerokości 8 bitów
  // Użyj typu danych reg (ponieważ przechowuje wartości w środowisku testowym)

  
  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 iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy

Poćwicz samodzielnie: Kompilator Verilog online